entropia-template-ui 0.2.2 → 0.2.4

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 (89) hide show
  1. package/dist/assets/index-BkpZ6AP9.css +1 -0
  2. package/dist/assets/index-CPQMMXDH.js +70 -0
  3. package/dist/brand/apple-touch-icon.png +0 -0
  4. package/dist/brand/favicon.png +0 -0
  5. package/dist/brand/hero.jpg +0 -0
  6. package/dist/brand/logo.ico +0 -0
  7. package/dist/brand/logo.png +0 -0
  8. package/dist/index.html +16 -0
  9. package/package.json +1 -1
  10. package/dist/App.d.ts +0 -2
  11. package/dist/App.d.ts.map +0 -1
  12. package/dist/areas.d.ts +0 -55
  13. package/dist/areas.d.ts.map +0 -1
  14. package/dist/components/AboutPanel.d.ts +0 -4
  15. package/dist/components/AboutPanel.d.ts.map +0 -1
  16. package/dist/components/BrandLogo.d.ts +0 -6
  17. package/dist/components/BrandLogo.d.ts.map +0 -1
  18. package/dist/components/CodeEditor.d.ts +0 -2
  19. package/dist/components/CodeEditor.d.ts.map +0 -1
  20. package/dist/components/CodePreview.d.ts +0 -6
  21. package/dist/components/CodePreview.d.ts.map +0 -1
  22. package/dist/components/ContextMenu.d.ts +0 -10
  23. package/dist/components/ContextMenu.d.ts.map +0 -1
  24. package/dist/components/DocsPanel.d.ts +0 -2
  25. package/dist/components/DocsPanel.d.ts.map +0 -1
  26. package/dist/components/FileExplorer.d.ts +0 -4
  27. package/dist/components/FileExplorer.d.ts.map +0 -1
  28. package/dist/components/FileManager.d.ts +0 -2
  29. package/dist/components/FileManager.d.ts.map +0 -1
  30. package/dist/components/FilePicker.d.ts +0 -5
  31. package/dist/components/FilePicker.d.ts.map +0 -1
  32. package/dist/components/FloatingWindow.d.ts +0 -10
  33. package/dist/components/FloatingWindow.d.ts.map +0 -1
  34. package/dist/components/GraphCanvas.d.ts +0 -2
  35. package/dist/components/GraphCanvas.d.ts.map +0 -1
  36. package/dist/components/HandwritingPad.d.ts +0 -2
  37. package/dist/components/HandwritingPad.d.ts.map +0 -1
  38. package/dist/components/ImportFolderPanel.d.ts +0 -4
  39. package/dist/components/ImportFolderPanel.d.ts.map +0 -1
  40. package/dist/components/LossPanel.d.ts +0 -2
  41. package/dist/components/LossPanel.d.ts.map +0 -1
  42. package/dist/components/MenuBar.d.ts +0 -12
  43. package/dist/components/MenuBar.d.ts.map +0 -1
  44. package/dist/components/NodeCard.d.ts +0 -4
  45. package/dist/components/NodeCard.d.ts.map +0 -1
  46. package/dist/components/NodeLibrary.d.ts +0 -2
  47. package/dist/components/NodeLibrary.d.ts.map +0 -1
  48. package/dist/components/Panel.d.ts +0 -38
  49. package/dist/components/Panel.d.ts.map +0 -1
  50. package/dist/components/PluginPanel.d.ts +0 -2
  51. package/dist/components/PluginPanel.d.ts.map +0 -1
  52. package/dist/components/PopupMenu.d.ts +0 -19
  53. package/dist/components/PopupMenu.d.ts.map +0 -1
  54. package/dist/components/PreferencesPanel.d.ts +0 -4
  55. package/dist/components/PreferencesPanel.d.ts.map +0 -1
  56. package/dist/components/ProjectPanel.d.ts +0 -2
  57. package/dist/components/ProjectPanel.d.ts.map +0 -1
  58. package/dist/components/SideInspector.d.ts +0 -7
  59. package/dist/components/SideInspector.d.ts.map +0 -1
  60. package/dist/components/Splitter.d.ts +0 -7
  61. package/dist/components/Splitter.d.ts.map +0 -1
  62. package/dist/components/StatusPanel.d.ts +0 -6
  63. package/dist/components/StatusPanel.d.ts.map +0 -1
  64. package/dist/components/Titlebar.d.ts +0 -2
  65. package/dist/components/Titlebar.d.ts.map +0 -1
  66. package/dist/components/ToastStack.d.ts +0 -2
  67. package/dist/components/ToastStack.d.ts.map +0 -1
  68. package/dist/components/Toolbar.d.ts +0 -2
  69. package/dist/components/Toolbar.d.ts.map +0 -1
  70. package/dist/components/WelcomePanel.d.ts +0 -4
  71. package/dist/components/WelcomePanel.d.ts.map +0 -1
  72. package/dist/components/WorkspaceTabs.d.ts +0 -12
  73. package/dist/components/WorkspaceTabs.d.ts.map +0 -1
  74. package/dist/docs/Markdown.d.ts +0 -2
  75. package/dist/docs/Markdown.d.ts.map +0 -1
  76. package/dist/index.d.ts +0 -51
  77. package/dist/index.d.ts.map +0 -1
  78. package/dist/index.js +0 -3718
  79. package/dist/nodes/nodeDefinitions.d.ts +0 -30
  80. package/dist/nodes/nodeDefinitions.d.ts.map +0 -1
  81. package/dist/store/graphStore.d.ts +0 -167
  82. package/dist/store/graphStore.d.ts.map +0 -1
  83. package/dist/style.css +0 -1
  84. package/dist/subgraphActions.d.ts +0 -4
  85. package/dist/subgraphActions.d.ts.map +0 -1
  86. package/dist/theme.d.ts +0 -11
  87. package/dist/theme.d.ts.map +0 -1
  88. package/dist/version.d.ts +0 -2
  89. package/dist/version.d.ts.map +0 -1
@@ -0,0 +1,70 @@
1
+ (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const s of o)if(s.type==="childList")for(const i of s.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const s={};return o.integrity&&(s.integrity=o.integrity),o.referrerPolicy&&(s.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?s.credentials="include":o.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(o){if(o.ep)return;o.ep=!0;const s=n(o);fetch(o.href,s)}})();function ip(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var lp={exports:{}},Mi={},ap={exports:{}},se={};/**
2
+ * @license React
3
+ * react.production.min.js
4
+ *
5
+ * Copyright (c) Facebook, Inc. and its affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */var Bo=Symbol.for("react.element"),M0=Symbol.for("react.portal"),I0=Symbol.for("react.fragment"),$0=Symbol.for("react.strict_mode"),L0=Symbol.for("react.profiler"),R0=Symbol.for("react.provider"),A0=Symbol.for("react.context"),D0=Symbol.for("react.forward_ref"),z0=Symbol.for("react.suspense"),F0=Symbol.for("react.memo"),O0=Symbol.for("react.lazy"),Lu=Symbol.iterator;function H0(e){return e===null||typeof e!="object"?null:(e=Lu&&e[Lu]||e["@@iterator"],typeof e=="function"?e:null)}var cp={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},up=Object.assign,dp={};function Ar(e,t,n){this.props=e,this.context=t,this.refs=dp,this.updater=n||cp}Ar.prototype.isReactComponent={};Ar.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};Ar.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function fp(){}fp.prototype=Ar.prototype;function pc(e,t,n){this.props=e,this.context=t,this.refs=dp,this.updater=n||cp}var hc=pc.prototype=new fp;hc.constructor=pc;up(hc,Ar.prototype);hc.isPureReactComponent=!0;var Ru=Array.isArray,pp=Object.prototype.hasOwnProperty,mc={current:null},hp={key:!0,ref:!0,__self:!0,__source:!0};function mp(e,t,n){var r,o={},s=null,i=null;if(t!=null)for(r in t.ref!==void 0&&(i=t.ref),t.key!==void 0&&(s=""+t.key),t)pp.call(t,r)&&!hp.hasOwnProperty(r)&&(o[r]=t[r]);var l=arguments.length-2;if(l===1)o.children=n;else if(1<l){for(var a=Array(l),c=0;c<l;c++)a[c]=arguments[c+2];o.children=a}if(e&&e.defaultProps)for(r in l=e.defaultProps,l)o[r]===void 0&&(o[r]=l[r]);return{$$typeof:Bo,type:e,key:s,ref:i,props:o,_owner:mc.current}}function B0(e,t){return{$$typeof:Bo,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}function gc(e){return typeof e=="object"&&e!==null&&e.$$typeof===Bo}function V0(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(n){return t[n]})}var Au=/\/+/g;function pl(e,t){return typeof e=="object"&&e!==null&&e.key!=null?V0(""+e.key):t.toString(36)}function bs(e,t,n,r,o){var s=typeof e;(s==="undefined"||s==="boolean")&&(e=null);var i=!1;if(e===null)i=!0;else switch(s){case"string":case"number":i=!0;break;case"object":switch(e.$$typeof){case Bo:case M0:i=!0}}if(i)return i=e,o=o(i),e=r===""?"."+pl(i,0):r,Ru(o)?(n="",e!=null&&(n=e.replace(Au,"$&/")+"/"),bs(o,t,n,"",function(c){return c})):o!=null&&(gc(o)&&(o=B0(o,n+(!o.key||i&&i.key===o.key?"":(""+o.key).replace(Au,"$&/")+"/")+e)),t.push(o)),1;if(i=0,r=r===""?".":r+":",Ru(e))for(var l=0;l<e.length;l++){s=e[l];var a=r+pl(s,l);i+=bs(s,t,n,a,o)}else if(a=H0(e),typeof a=="function")for(e=a.call(e),l=0;!(s=e.next()).done;)s=s.value,a=r+pl(s,l++),i+=bs(s,t,n,a,o);else if(s==="object")throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return i}function ts(e,t,n){if(e==null)return e;var r=[],o=0;return bs(e,r,"","",function(s){return t.call(n,s,o++)}),r}function W0(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(n){(e._status===0||e._status===-1)&&(e._status=1,e._result=n)},function(n){(e._status===0||e._status===-1)&&(e._status=2,e._result=n)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var ze={current:null},Ps={transition:null},U0={ReactCurrentDispatcher:ze,ReactCurrentBatchConfig:Ps,ReactCurrentOwner:mc};function gp(){throw Error("act(...) is not supported in production builds of React.")}se.Children={map:ts,forEach:function(e,t,n){ts(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return ts(e,function(){t++}),t},toArray:function(e){return ts(e,function(t){return t})||[]},only:function(e){if(!gc(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};se.Component=Ar;se.Fragment=I0;se.Profiler=L0;se.PureComponent=pc;se.StrictMode=$0;se.Suspense=z0;se.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=U0;se.act=gp;se.cloneElement=function(e,t,n){if(e==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var r=up({},e.props),o=e.key,s=e.ref,i=e._owner;if(t!=null){if(t.ref!==void 0&&(s=t.ref,i=mc.current),t.key!==void 0&&(o=""+t.key),e.type&&e.type.defaultProps)var l=e.type.defaultProps;for(a in t)pp.call(t,a)&&!hp.hasOwnProperty(a)&&(r[a]=t[a]===void 0&&l!==void 0?l[a]:t[a])}var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){l=Array(a);for(var c=0;c<a;c++)l[c]=arguments[c+2];r.children=l}return{$$typeof:Bo,type:e.type,key:o,ref:s,props:r,_owner:i}};se.createContext=function(e){return e={$$typeof:A0,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},e.Provider={$$typeof:R0,_context:e},e.Consumer=e};se.createElement=mp;se.createFactory=function(e){var t=mp.bind(null,e);return t.type=e,t};se.createRef=function(){return{current:null}};se.forwardRef=function(e){return{$$typeof:D0,render:e}};se.isValidElement=gc;se.lazy=function(e){return{$$typeof:O0,_payload:{_status:-1,_result:e},_init:W0}};se.memo=function(e,t){return{$$typeof:F0,type:e,compare:t===void 0?null:t}};se.startTransition=function(e){var t=Ps.transition;Ps.transition={};try{e()}finally{Ps.transition=t}};se.unstable_act=gp;se.useCallback=function(e,t){return ze.current.useCallback(e,t)};se.useContext=function(e){return ze.current.useContext(e)};se.useDebugValue=function(){};se.useDeferredValue=function(e){return ze.current.useDeferredValue(e)};se.useEffect=function(e,t){return ze.current.useEffect(e,t)};se.useId=function(){return ze.current.useId()};se.useImperativeHandle=function(e,t,n){return ze.current.useImperativeHandle(e,t,n)};se.useInsertionEffect=function(e,t){return ze.current.useInsertionEffect(e,t)};se.useLayoutEffect=function(e,t){return ze.current.useLayoutEffect(e,t)};se.useMemo=function(e,t){return ze.current.useMemo(e,t)};se.useReducer=function(e,t,n){return ze.current.useReducer(e,t,n)};se.useRef=function(e){return ze.current.useRef(e)};se.useState=function(e){return ze.current.useState(e)};se.useSyncExternalStore=function(e,t,n){return ze.current.useSyncExternalStore(e,t,n)};se.useTransition=function(){return ze.current.useTransition()};se.version="18.3.1";ap.exports=se;var M=ap.exports;const yc=ip(M);/**
10
+ * @license React
11
+ * react-jsx-runtime.production.min.js
12
+ *
13
+ * Copyright (c) Facebook, Inc. and its affiliates.
14
+ *
15
+ * This source code is licensed under the MIT license found in the
16
+ * LICENSE file in the root directory of this source tree.
17
+ */var Y0=M,X0=Symbol.for("react.element"),G0=Symbol.for("react.fragment"),K0=Object.prototype.hasOwnProperty,Q0=Y0.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,q0={key:!0,ref:!0,__self:!0,__source:!0};function yp(e,t,n){var r,o={},s=null,i=null;n!==void 0&&(s=""+n),t.key!==void 0&&(s=""+t.key),t.ref!==void 0&&(i=t.ref);for(r in t)K0.call(t,r)&&!q0.hasOwnProperty(r)&&(o[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps,t)o[r]===void 0&&(o[r]=t[r]);return{$$typeof:X0,type:e,key:s,ref:i,props:o,_owner:Q0.current}}Mi.Fragment=G0;Mi.jsx=yp;Mi.jsxs=yp;lp.exports=Mi;var d=lp.exports,Jl={},vp={exports:{}},Je={},xp={exports:{}},wp={};/**
18
+ * @license React
19
+ * scheduler.production.min.js
20
+ *
21
+ * Copyright (c) Facebook, Inc. and its affiliates.
22
+ *
23
+ * This source code is licensed under the MIT license found in the
24
+ * LICENSE file in the root directory of this source tree.
25
+ */(function(e){function t(b,I){var R=b.length;b.push(I);e:for(;0<R;){var z=R-1>>>1,D=b[z];if(0<o(D,I))b[z]=I,b[R]=D,R=z;else break e}}function n(b){return b.length===0?null:b[0]}function r(b){if(b.length===0)return null;var I=b[0],R=b.pop();if(R!==I){b[0]=R;e:for(var z=0,D=b.length,Y=D>>>1;z<Y;){var W=2*(z+1)-1,J=b[W],Z=W+1,Q=b[Z];if(0>o(J,R))Z<D&&0>o(Q,J)?(b[z]=Q,b[Z]=R,z=Z):(b[z]=J,b[W]=R,z=W);else if(Z<D&&0>o(Q,R))b[z]=Q,b[Z]=R,z=Z;else break e}}return I}function o(b,I){var R=b.sortIndex-I.sortIndex;return R!==0?R:b.id-I.id}if(typeof performance=="object"&&typeof performance.now=="function"){var s=performance;e.unstable_now=function(){return s.now()}}else{var i=Date,l=i.now();e.unstable_now=function(){return i.now()-l}}var a=[],c=[],u=1,f=null,p=3,h=!1,y=!1,x=!1,k=typeof setTimeout=="function"?setTimeout:null,m=typeof clearTimeout=="function"?clearTimeout:null,v=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function g(b){for(var I=n(c);I!==null;){if(I.callback===null)r(c);else if(I.startTime<=b)r(c),I.sortIndex=I.expirationTime,t(a,I);else break;I=n(c)}}function w(b){if(x=!1,g(b),!y)if(n(a)!==null)y=!0,T(j);else{var I=n(c);I!==null&&P(w,I.startTime-b)}}function j(b,I){y=!1,x&&(x=!1,m(N),N=-1),h=!0;var R=p;try{for(g(I),f=n(a);f!==null&&(!(f.expirationTime>I)||b&&!L());){var z=f.callback;if(typeof z=="function"){f.callback=null,p=f.priorityLevel;var D=z(f.expirationTime<=I);I=e.unstable_now(),typeof D=="function"?f.callback=D:f===n(a)&&r(a),g(I)}else r(a);f=n(a)}if(f!==null)var Y=!0;else{var W=n(c);W!==null&&P(w,W.startTime-I),Y=!1}return Y}finally{f=null,p=R,h=!1}}var _=!1,E=null,N=-1,$=5,A=-1;function L(){return!(e.unstable_now()-A<$)}function O(){if(E!==null){var b=e.unstable_now();A=b;var I=!0;try{I=E(!0,b)}finally{I?F():(_=!1,E=null)}}else _=!1}var F;if(typeof v=="function")F=function(){v(O)};else if(typeof MessageChannel<"u"){var S=new MessageChannel,C=S.port2;S.port1.onmessage=O,F=function(){C.postMessage(null)}}else F=function(){k(O,0)};function T(b){E=b,_||(_=!0,F())}function P(b,I){N=k(function(){b(e.unstable_now())},I)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(b){b.callback=null},e.unstable_continueExecution=function(){y||h||(y=!0,T(j))},e.unstable_forceFrameRate=function(b){0>b||125<b?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):$=0<b?Math.floor(1e3/b):5},e.unstable_getCurrentPriorityLevel=function(){return p},e.unstable_getFirstCallbackNode=function(){return n(a)},e.unstable_next=function(b){switch(p){case 1:case 2:case 3:var I=3;break;default:I=p}var R=p;p=I;try{return b()}finally{p=R}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=function(){},e.unstable_runWithPriority=function(b,I){switch(b){case 1:case 2:case 3:case 4:case 5:break;default:b=3}var R=p;p=b;try{return I()}finally{p=R}},e.unstable_scheduleCallback=function(b,I,R){var z=e.unstable_now();switch(typeof R=="object"&&R!==null?(R=R.delay,R=typeof R=="number"&&0<R?z+R:z):R=z,b){case 1:var D=-1;break;case 2:D=250;break;case 5:D=1073741823;break;case 4:D=1e4;break;default:D=5e3}return D=R+D,b={id:u++,callback:I,priorityLevel:b,startTime:R,expirationTime:D,sortIndex:-1},R>z?(b.sortIndex=R,t(c,b),n(a)===null&&b===n(c)&&(x?(m(N),N=-1):x=!0,P(w,R-z))):(b.sortIndex=D,t(a,b),y||h||(y=!0,T(j))),b},e.unstable_shouldYield=L,e.unstable_wrapCallback=function(b){var I=p;return function(){var R=p;p=I;try{return b.apply(this,arguments)}finally{p=R}}}})(wp);xp.exports=wp;var J0=xp.exports;/**
26
+ * @license React
27
+ * react-dom.production.min.js
28
+ *
29
+ * Copyright (c) Facebook, Inc. and its affiliates.
30
+ *
31
+ * This source code is licensed under the MIT license found in the
32
+ * LICENSE file in the root directory of this source tree.
33
+ */var Z0=M,Qe=J0;function V(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var Sp=new Set,go={};function Kn(e,t){Sr(e,t),Sr(e+"Capture",t)}function Sr(e,t){for(go[e]=t,e=0;e<t.length;e++)Sp.add(t[e])}var Ut=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Zl=Object.prototype.hasOwnProperty,ev=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Du={},zu={};function tv(e){return Zl.call(zu,e)?!0:Zl.call(Du,e)?!1:ev.test(e)?zu[e]=!0:(Du[e]=!0,!1)}function nv(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function rv(e,t,n,r){if(t===null||typeof t>"u"||nv(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Fe(e,t,n,r,o,s,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=s,this.removeEmptyString=i}var Me={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Me[e]=new Fe(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Me[t]=new Fe(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Me[e]=new Fe(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Me[e]=new Fe(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Me[e]=new Fe(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Me[e]=new Fe(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Me[e]=new Fe(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Me[e]=new Fe(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Me[e]=new Fe(e,5,!1,e.toLowerCase(),null,!1,!1)});var vc=/[\-:]([a-z])/g;function xc(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(vc,xc);Me[t]=new Fe(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(vc,xc);Me[t]=new Fe(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(vc,xc);Me[t]=new Fe(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Me[e]=new Fe(e,1,!1,e.toLowerCase(),null,!1,!1)});Me.xlinkHref=new Fe("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Me[e]=new Fe(e,1,!1,e.toLowerCase(),null,!0,!0)});function wc(e,t,n,r){var o=Me.hasOwnProperty(t)?Me[t]:null;(o!==null?o.type!==0:r||!(2<t.length)||t[0]!=="o"&&t[0]!=="O"||t[1]!=="n"&&t[1]!=="N")&&(rv(t,n,o,r)&&(n=null),r||o===null?tv(t)&&(n===null?e.removeAttribute(t):e.setAttribute(t,""+n)):o.mustUseProperty?e[o.propertyName]=n===null?o.type===3?!1:"":n:(t=o.attributeName,r=o.attributeNamespace,n===null?e.removeAttribute(t):(o=o.type,n=o===3||o===4&&n===!0?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}var Qt=Z0.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,ns=Symbol.for("react.element"),er=Symbol.for("react.portal"),tr=Symbol.for("react.fragment"),Sc=Symbol.for("react.strict_mode"),ea=Symbol.for("react.profiler"),kp=Symbol.for("react.provider"),_p=Symbol.for("react.context"),kc=Symbol.for("react.forward_ref"),ta=Symbol.for("react.suspense"),na=Symbol.for("react.suspense_list"),_c=Symbol.for("react.memo"),en=Symbol.for("react.lazy"),Np=Symbol.for("react.offscreen"),Fu=Symbol.iterator;function Or(e){return e===null||typeof e!="object"?null:(e=Fu&&e[Fu]||e["@@iterator"],typeof e=="function"?e:null)}var xe=Object.assign,hl;function qr(e){if(hl===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);hl=t&&t[1]||""}return`
34
+ `+hl+e}var ml=!1;function gl(e,t){if(!e||ml)return"";ml=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(t,[])}catch(c){var r=c}Reflect.construct(e,[],t)}else{try{t.call()}catch(c){r=c}e.call(t.prototype)}else{try{throw Error()}catch(c){r=c}e()}}catch(c){if(c&&r&&typeof c.stack=="string"){for(var o=c.stack.split(`
35
+ `),s=r.stack.split(`
36
+ `),i=o.length-1,l=s.length-1;1<=i&&0<=l&&o[i]!==s[l];)l--;for(;1<=i&&0<=l;i--,l--)if(o[i]!==s[l]){if(i!==1||l!==1)do if(i--,l--,0>l||o[i]!==s[l]){var a=`
37
+ `+o[i].replace(" at new "," at ");return e.displayName&&a.includes("<anonymous>")&&(a=a.replace("<anonymous>",e.displayName)),a}while(1<=i&&0<=l);break}}}finally{ml=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?qr(e):""}function ov(e){switch(e.tag){case 5:return qr(e.type);case 16:return qr("Lazy");case 13:return qr("Suspense");case 19:return qr("SuspenseList");case 0:case 2:case 15:return e=gl(e.type,!1),e;case 11:return e=gl(e.type.render,!1),e;case 1:return e=gl(e.type,!0),e;default:return""}}function ra(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case tr:return"Fragment";case er:return"Portal";case ea:return"Profiler";case Sc:return"StrictMode";case ta:return"Suspense";case na:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case _p:return(e.displayName||"Context")+".Consumer";case kp:return(e._context.displayName||"Context")+".Provider";case kc:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case _c:return t=e.displayName||null,t!==null?t:ra(e.type)||"Memo";case en:t=e._payload,e=e._init;try{return ra(e(t))}catch{}}return null}function sv(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ra(t);case 8:return t===Sc?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function xn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Ep(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function iv(e){var t=Ep(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var o=n.get,s=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(i){r=""+i,s.call(this,i)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(i){r=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function rs(e){e._valueTracker||(e._valueTracker=iv(e))}function Cp(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Ep(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Ys(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function oa(e,t){var n=t.checked;return xe({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Ou(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=xn(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function jp(e,t){t=t.checked,t!=null&&wc(e,"checked",t,!1)}function sa(e,t){jp(e,t);var n=xn(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?ia(e,t.type,n):t.hasOwnProperty("defaultValue")&&ia(e,t.type,xn(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Hu(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function ia(e,t,n){(t!=="number"||Ys(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Jr=Array.isArray;function pr(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o<n.length;o++)t["$"+n[o]]=!0;for(n=0;n<e.length;n++)o=t.hasOwnProperty("$"+e[n].value),e[n].selected!==o&&(e[n].selected=o),o&&r&&(e[n].defaultSelected=!0)}else{for(n=""+xn(n),t=null,o=0;o<e.length;o++){if(e[o].value===n){e[o].selected=!0,r&&(e[o].defaultSelected=!0);return}t!==null||e[o].disabled||(t=e[o])}t!==null&&(t.selected=!0)}}function la(e,t){if(t.dangerouslySetInnerHTML!=null)throw Error(V(91));return xe({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function Bu(e,t){var n=t.value;if(n==null){if(n=t.children,t=t.defaultValue,n!=null){if(t!=null)throw Error(V(92));if(Jr(n)){if(1<n.length)throw Error(V(93));n=n[0]}t=n}t==null&&(t=""),n=t}e._wrapperState={initialValue:xn(n)}}function bp(e,t){var n=xn(t.value),r=xn(t.defaultValue);n!=null&&(n=""+n,n!==e.value&&(e.value=n),t.defaultValue==null&&e.defaultValue!==n&&(e.defaultValue=n)),r!=null&&(e.defaultValue=""+r)}function Vu(e){var t=e.textContent;t===e._wrapperState.initialValue&&t!==""&&t!==null&&(e.value=t)}function Pp(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function aa(e,t){return e==null||e==="http://www.w3.org/1999/xhtml"?Pp(t):e==="http://www.w3.org/2000/svg"&&t==="foreignObject"?"http://www.w3.org/1999/xhtml":e}var os,Tp=function(e){return typeof MSApp<"u"&&MSApp.execUnsafeLocalFunction?function(t,n,r,o){MSApp.execUnsafeLocalFunction(function(){return e(t,n,r,o)})}:e}(function(e,t){if(e.namespaceURI!=="http://www.w3.org/2000/svg"||"innerHTML"in e)e.innerHTML=t;else{for(os=os||document.createElement("div"),os.innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=os.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function yo(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var oo={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},lv=["Webkit","ms","Moz","O"];Object.keys(oo).forEach(function(e){lv.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),oo[t]=oo[e]})});function Mp(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||oo.hasOwnProperty(e)&&oo[e]?(""+t).trim():t+"px"}function Ip(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,o=Mp(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}var av=xe({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ca(e,t){if(t){if(av[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(V(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(V(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(V(61))}if(t.style!=null&&typeof t.style!="object")throw Error(V(62))}}function ua(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var da=null;function Nc(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var fa=null,hr=null,mr=null;function Wu(e){if(e=Uo(e)){if(typeof fa!="function")throw Error(V(280));var t=e.stateNode;t&&(t=Ai(t),fa(e.stateNode,e.type,t))}}function $p(e){hr?mr?mr.push(e):mr=[e]:hr=e}function Lp(){if(hr){var e=hr,t=mr;if(mr=hr=null,Wu(e),t)for(e=0;e<t.length;e++)Wu(t[e])}}function Rp(e,t){return e(t)}function Ap(){}var yl=!1;function Dp(e,t,n){if(yl)return e(t,n);yl=!0;try{return Rp(e,t,n)}finally{yl=!1,(hr!==null||mr!==null)&&(Ap(),Lp())}}function vo(e,t){var n=e.stateNode;if(n===null)return null;var r=Ai(n);if(r===null)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(e=e.type,r=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!r;break e;default:e=!1}if(e)return null;if(n&&typeof n!="function")throw Error(V(231,t,typeof n));return n}var pa=!1;if(Ut)try{var Hr={};Object.defineProperty(Hr,"passive",{get:function(){pa=!0}}),window.addEventListener("test",Hr,Hr),window.removeEventListener("test",Hr,Hr)}catch{pa=!1}function cv(e,t,n,r,o,s,i,l,a){var c=Array.prototype.slice.call(arguments,3);try{t.apply(n,c)}catch(u){this.onError(u)}}var so=!1,Xs=null,Gs=!1,ha=null,uv={onError:function(e){so=!0,Xs=e}};function dv(e,t,n,r,o,s,i,l,a){so=!1,Xs=null,cv.apply(uv,arguments)}function fv(e,t,n,r,o,s,i,l,a){if(dv.apply(this,arguments),so){if(so){var c=Xs;so=!1,Xs=null}else throw Error(V(198));Gs||(Gs=!0,ha=c)}}function Qn(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,t.flags&4098&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function zp(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function Uu(e){if(Qn(e)!==e)throw Error(V(188))}function pv(e){var t=e.alternate;if(!t){if(t=Qn(e),t===null)throw Error(V(188));return t!==e?null:e}for(var n=e,r=t;;){var o=n.return;if(o===null)break;var s=o.alternate;if(s===null){if(r=o.return,r!==null){n=r;continue}break}if(o.child===s.child){for(s=o.child;s;){if(s===n)return Uu(o),e;if(s===r)return Uu(o),t;s=s.sibling}throw Error(V(188))}if(n.return!==r.return)n=o,r=s;else{for(var i=!1,l=o.child;l;){if(l===n){i=!0,n=o,r=s;break}if(l===r){i=!0,r=o,n=s;break}l=l.sibling}if(!i){for(l=s.child;l;){if(l===n){i=!0,n=s,r=o;break}if(l===r){i=!0,r=s,n=o;break}l=l.sibling}if(!i)throw Error(V(189))}}if(n.alternate!==r)throw Error(V(190))}if(n.tag!==3)throw Error(V(188));return n.stateNode.current===n?e:t}function Fp(e){return e=pv(e),e!==null?Op(e):null}function Op(e){if(e.tag===5||e.tag===6)return e;for(e=e.child;e!==null;){var t=Op(e);if(t!==null)return t;e=e.sibling}return null}var Hp=Qe.unstable_scheduleCallback,Yu=Qe.unstable_cancelCallback,hv=Qe.unstable_shouldYield,mv=Qe.unstable_requestPaint,ke=Qe.unstable_now,gv=Qe.unstable_getCurrentPriorityLevel,Ec=Qe.unstable_ImmediatePriority,Bp=Qe.unstable_UserBlockingPriority,Ks=Qe.unstable_NormalPriority,yv=Qe.unstable_LowPriority,Vp=Qe.unstable_IdlePriority,Ii=null,Tt=null;function vv(e){if(Tt&&typeof Tt.onCommitFiberRoot=="function")try{Tt.onCommitFiberRoot(Ii,e,void 0,(e.current.flags&128)===128)}catch{}}var yt=Math.clz32?Math.clz32:Sv,xv=Math.log,wv=Math.LN2;function Sv(e){return e>>>=0,e===0?32:31-(xv(e)/wv|0)|0}var ss=64,is=4194304;function Zr(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Qs(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,o=e.suspendedLanes,s=e.pingedLanes,i=n&268435455;if(i!==0){var l=i&~o;l!==0?r=Zr(l):(s&=i,s!==0&&(r=Zr(s)))}else i=n&~o,i!==0?r=Zr(i):s!==0&&(r=Zr(s));if(r===0)return 0;if(t!==0&&t!==r&&!(t&o)&&(o=r&-r,s=t&-t,o>=s||o===16&&(s&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0<t;)n=31-yt(t),o=1<<n,r|=e[n],t&=~o;return r}function kv(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function _v(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,o=e.expirationTimes,s=e.pendingLanes;0<s;){var i=31-yt(s),l=1<<i,a=o[i];a===-1?(!(l&n)||l&r)&&(o[i]=kv(l,t)):a<=t&&(e.expiredLanes|=l),s&=~l}}function ma(e){return e=e.pendingLanes&-1073741825,e!==0?e:e&1073741824?1073741824:0}function Wp(){var e=ss;return ss<<=1,!(ss&4194240)&&(ss=64),e}function vl(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Vo(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-yt(t),e[t]=n}function Nv(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<n;){var o=31-yt(n),s=1<<o;t[o]=0,r[o]=-1,e[o]=-1,n&=~s}}function Cc(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-yt(n),o=1<<r;o&t|e[r]&t&&(e[r]|=t),n&=~o}}var ue=0;function Up(e){return e&=-e,1<e?4<e?e&268435455?16:536870912:4:1}var Yp,jc,Xp,Gp,Kp,ga=!1,ls=[],un=null,dn=null,fn=null,xo=new Map,wo=new Map,rn=[],Ev="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function Xu(e,t){switch(e){case"focusin":case"focusout":un=null;break;case"dragenter":case"dragleave":dn=null;break;case"mouseover":case"mouseout":fn=null;break;case"pointerover":case"pointerout":xo.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":wo.delete(t.pointerId)}}function Br(e,t,n,r,o,s){return e===null||e.nativeEvent!==s?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:s,targetContainers:[o]},t!==null&&(t=Uo(t),t!==null&&jc(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,o!==null&&t.indexOf(o)===-1&&t.push(o),e)}function Cv(e,t,n,r,o){switch(t){case"focusin":return un=Br(un,e,t,n,r,o),!0;case"dragenter":return dn=Br(dn,e,t,n,r,o),!0;case"mouseover":return fn=Br(fn,e,t,n,r,o),!0;case"pointerover":var s=o.pointerId;return xo.set(s,Br(xo.get(s)||null,e,t,n,r,o)),!0;case"gotpointercapture":return s=o.pointerId,wo.set(s,Br(wo.get(s)||null,e,t,n,r,o)),!0}return!1}function Qp(e){var t=Mn(e.target);if(t!==null){var n=Qn(t);if(n!==null){if(t=n.tag,t===13){if(t=zp(n),t!==null){e.blockedOn=t,Kp(e.priority,function(){Xp(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Ts(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=ya(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(n===null){n=e.nativeEvent;var r=new n.constructor(n.type,n);da=r,n.target.dispatchEvent(r),da=null}else return t=Uo(n),t!==null&&jc(t),e.blockedOn=n,!1;t.shift()}return!0}function Gu(e,t,n){Ts(e)&&n.delete(t)}function jv(){ga=!1,un!==null&&Ts(un)&&(un=null),dn!==null&&Ts(dn)&&(dn=null),fn!==null&&Ts(fn)&&(fn=null),xo.forEach(Gu),wo.forEach(Gu)}function Vr(e,t){e.blockedOn===t&&(e.blockedOn=null,ga||(ga=!0,Qe.unstable_scheduleCallback(Qe.unstable_NormalPriority,jv)))}function So(e){function t(o){return Vr(o,e)}if(0<ls.length){Vr(ls[0],e);for(var n=1;n<ls.length;n++){var r=ls[n];r.blockedOn===e&&(r.blockedOn=null)}}for(un!==null&&Vr(un,e),dn!==null&&Vr(dn,e),fn!==null&&Vr(fn,e),xo.forEach(t),wo.forEach(t),n=0;n<rn.length;n++)r=rn[n],r.blockedOn===e&&(r.blockedOn=null);for(;0<rn.length&&(n=rn[0],n.blockedOn===null);)Qp(n),n.blockedOn===null&&rn.shift()}var gr=Qt.ReactCurrentBatchConfig,qs=!0;function bv(e,t,n,r){var o=ue,s=gr.transition;gr.transition=null;try{ue=1,bc(e,t,n,r)}finally{ue=o,gr.transition=s}}function Pv(e,t,n,r){var o=ue,s=gr.transition;gr.transition=null;try{ue=4,bc(e,t,n,r)}finally{ue=o,gr.transition=s}}function bc(e,t,n,r){if(qs){var o=ya(e,t,n,r);if(o===null)bl(e,t,r,Js,n),Xu(e,r);else if(Cv(o,e,t,n,r))r.stopPropagation();else if(Xu(e,r),t&4&&-1<Ev.indexOf(e)){for(;o!==null;){var s=Uo(o);if(s!==null&&Yp(s),s=ya(e,t,n,r),s===null&&bl(e,t,r,Js,n),s===o)break;o=s}o!==null&&r.stopPropagation()}else bl(e,t,r,null,n)}}var Js=null;function ya(e,t,n,r){if(Js=null,e=Nc(r),e=Mn(e),e!==null)if(t=Qn(e),t===null)e=null;else if(n=t.tag,n===13){if(e=zp(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return Js=e,null}function qp(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(gv()){case Ec:return 1;case Bp:return 4;case Ks:case yv:return 16;case Vp:return 536870912;default:return 16}default:return 16}}var ln=null,Pc=null,Ms=null;function Jp(){if(Ms)return Ms;var e,t=Pc,n=t.length,r,o="value"in ln?ln.value:ln.textContent,s=o.length;for(e=0;e<n&&t[e]===o[e];e++);var i=n-e;for(r=1;r<=i&&t[n-r]===o[s-r];r++);return Ms=o.slice(e,1<r?1-r:void 0)}function Is(e){var t=e.keyCode;return"charCode"in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function as(){return!0}function Ku(){return!1}function Ze(e){function t(n,r,o,s,i){this._reactName=n,this._targetInst=o,this.type=r,this.nativeEvent=s,this.target=i,this.currentTarget=null;for(var l in e)e.hasOwnProperty(l)&&(n=e[l],this[l]=n?n(s):s[l]);return this.isDefaultPrevented=(s.defaultPrevented!=null?s.defaultPrevented:s.returnValue===!1)?as:Ku,this.isPropagationStopped=Ku,this}return xe(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var n=this.nativeEvent;n&&(n.preventDefault?n.preventDefault():typeof n.returnValue!="unknown"&&(n.returnValue=!1),this.isDefaultPrevented=as)},stopPropagation:function(){var n=this.nativeEvent;n&&(n.stopPropagation?n.stopPropagation():typeof n.cancelBubble!="unknown"&&(n.cancelBubble=!0),this.isPropagationStopped=as)},persist:function(){},isPersistent:as}),t}var Dr={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Tc=Ze(Dr),Wo=xe({},Dr,{view:0,detail:0}),Tv=Ze(Wo),xl,wl,Wr,$i=xe({},Wo,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Mc,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==Wr&&(Wr&&e.type==="mousemove"?(xl=e.screenX-Wr.screenX,wl=e.screenY-Wr.screenY):wl=xl=0,Wr=e),xl)},movementY:function(e){return"movementY"in e?e.movementY:wl}}),Qu=Ze($i),Mv=xe({},$i,{dataTransfer:0}),Iv=Ze(Mv),$v=xe({},Wo,{relatedTarget:0}),Sl=Ze($v),Lv=xe({},Dr,{animationName:0,elapsedTime:0,pseudoElement:0}),Rv=Ze(Lv),Av=xe({},Dr,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),Dv=Ze(Av),zv=xe({},Dr,{data:0}),qu=Ze(zv),Fv={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Ov={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Hv={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Bv(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=Hv[e])?!!t[e]:!1}function Mc(){return Bv}var Vv=xe({},Wo,{key:function(e){if(e.key){var t=Fv[e.key]||e.key;if(t!=="Unidentified")return t}return e.type==="keypress"?(e=Is(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?Ov[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Mc,charCode:function(e){return e.type==="keypress"?Is(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?Is(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),Wv=Ze(Vv),Uv=xe({},$i,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Ju=Ze(Uv),Yv=xe({},Wo,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Mc}),Xv=Ze(Yv),Gv=xe({},Dr,{propertyName:0,elapsedTime:0,pseudoElement:0}),Kv=Ze(Gv),Qv=xe({},$i,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),qv=Ze(Qv),Jv=[9,13,27,32],Ic=Ut&&"CompositionEvent"in window,io=null;Ut&&"documentMode"in document&&(io=document.documentMode);var Zv=Ut&&"TextEvent"in window&&!io,Zp=Ut&&(!Ic||io&&8<io&&11>=io),Zu=" ",ed=!1;function eh(e,t){switch(e){case"keyup":return Jv.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function th(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var nr=!1;function ex(e,t){switch(e){case"compositionend":return th(t);case"keypress":return t.which!==32?null:(ed=!0,Zu);case"textInput":return e=t.data,e===Zu&&ed?null:e;default:return null}}function tx(e,t){if(nr)return e==="compositionend"||!Ic&&eh(e,t)?(e=Jp(),Ms=Pc=ln=null,nr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Zp&&t.locale!=="ko"?null:t.data;default:return null}}var nx={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function td(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t==="input"?!!nx[e.type]:t==="textarea"}function nh(e,t,n,r){$p(r),t=Zs(t,"onChange"),0<t.length&&(n=new Tc("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var lo=null,ko=null;function rx(e){ph(e,0)}function Li(e){var t=sr(e);if(Cp(t))return e}function ox(e,t){if(e==="change")return t}var rh=!1;if(Ut){var kl;if(Ut){var _l="oninput"in document;if(!_l){var nd=document.createElement("div");nd.setAttribute("oninput","return;"),_l=typeof nd.oninput=="function"}kl=_l}else kl=!1;rh=kl&&(!document.documentMode||9<document.documentMode)}function rd(){lo&&(lo.detachEvent("onpropertychange",oh),ko=lo=null)}function oh(e){if(e.propertyName==="value"&&Li(ko)){var t=[];nh(t,ko,e,Nc(e)),Dp(rx,t)}}function sx(e,t,n){e==="focusin"?(rd(),lo=t,ko=n,lo.attachEvent("onpropertychange",oh)):e==="focusout"&&rd()}function ix(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return Li(ko)}function lx(e,t){if(e==="click")return Li(t)}function ax(e,t){if(e==="input"||e==="change")return Li(t)}function cx(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var xt=typeof Object.is=="function"?Object.is:cx;function _o(e,t){if(xt(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var o=n[r];if(!Zl.call(t,o)||!xt(e[o],t[o]))return!1}return!0}function od(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function sd(e,t){var n=od(e);e=0;for(var r;n;){if(n.nodeType===3){if(r=e+n.textContent.length,e<=t&&r>=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=od(n)}}function sh(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?sh(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function ih(){for(var e=window,t=Ys();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Ys(e.document)}return t}function $c(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function ux(e){var t=ih(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&sh(n.ownerDocument.documentElement,n)){if(r!==null&&$c(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var o=n.textContent.length,s=Math.min(r.start,o);r=r.end===void 0?s:Math.min(r.end,o),!e.extend&&s>r&&(o=r,r=s,s=o),o=sd(n,s);var i=sd(n,r);o&&i&&(e.rangeCount!==1||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(o.node,o.offset),e.removeAllRanges(),s>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n<t.length;n++)e=t[n],e.element.scrollLeft=e.left,e.element.scrollTop=e.top}}var dx=Ut&&"documentMode"in document&&11>=document.documentMode,rr=null,va=null,ao=null,xa=!1;function id(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;xa||rr==null||rr!==Ys(r)||(r=rr,"selectionStart"in r&&$c(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),ao&&_o(ao,r)||(ao=r,r=Zs(va,"onSelect"),0<r.length&&(t=new Tc("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=rr)))}function cs(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var or={animationend:cs("Animation","AnimationEnd"),animationiteration:cs("Animation","AnimationIteration"),animationstart:cs("Animation","AnimationStart"),transitionend:cs("Transition","TransitionEnd")},Nl={},lh={};Ut&&(lh=document.createElement("div").style,"AnimationEvent"in window||(delete or.animationend.animation,delete or.animationiteration.animation,delete or.animationstart.animation),"TransitionEvent"in window||delete or.transitionend.transition);function Ri(e){if(Nl[e])return Nl[e];if(!or[e])return e;var t=or[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in lh)return Nl[e]=t[n];return e}var ah=Ri("animationend"),ch=Ri("animationiteration"),uh=Ri("animationstart"),dh=Ri("transitionend"),fh=new Map,ld="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function Sn(e,t){fh.set(e,t),Kn(t,[e])}for(var El=0;El<ld.length;El++){var Cl=ld[El],fx=Cl.toLowerCase(),px=Cl[0].toUpperCase()+Cl.slice(1);Sn(fx,"on"+px)}Sn(ah,"onAnimationEnd");Sn(ch,"onAnimationIteration");Sn(uh,"onAnimationStart");Sn("dblclick","onDoubleClick");Sn("focusin","onFocus");Sn("focusout","onBlur");Sn(dh,"onTransitionEnd");Sr("onMouseEnter",["mouseout","mouseover"]);Sr("onMouseLeave",["mouseout","mouseover"]);Sr("onPointerEnter",["pointerout","pointerover"]);Sr("onPointerLeave",["pointerout","pointerover"]);Kn("onChange","change click focusin focusout input keydown keyup selectionchange".split(" "));Kn("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));Kn("onBeforeInput",["compositionend","keypress","textInput","paste"]);Kn("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" "));Kn("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" "));Kn("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var eo="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),hx=new Set("cancel close invalid load scroll toggle".split(" ").concat(eo));function ad(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,fv(r,t,void 0,e),e.currentTarget=null}function ph(e,t){t=(t&4)!==0;for(var n=0;n<e.length;n++){var r=e[n],o=r.event;r=r.listeners;e:{var s=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],a=l.instance,c=l.currentTarget;if(l=l.listener,a!==s&&o.isPropagationStopped())break e;ad(o,l,c),s=a}else for(i=0;i<r.length;i++){if(l=r[i],a=l.instance,c=l.currentTarget,l=l.listener,a!==s&&o.isPropagationStopped())break e;ad(o,l,c),s=a}}}if(Gs)throw e=ha,Gs=!1,ha=null,e}function fe(e,t){var n=t[Na];n===void 0&&(n=t[Na]=new Set);var r=e+"__bubble";n.has(r)||(hh(t,e,2,!1),n.add(r))}function jl(e,t,n){var r=0;t&&(r|=4),hh(n,e,r,t)}var us="_reactListening"+Math.random().toString(36).slice(2);function No(e){if(!e[us]){e[us]=!0,Sp.forEach(function(n){n!=="selectionchange"&&(hx.has(n)||jl(n,!1,e),jl(n,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[us]||(t[us]=!0,jl("selectionchange",!1,t))}}function hh(e,t,n,r){switch(qp(t)){case 1:var o=bv;break;case 4:o=Pv;break;default:o=bc}n=o.bind(null,t,n,e),o=void 0,!pa||t!=="touchstart"&&t!=="touchmove"&&t!=="wheel"||(o=!0),r?o!==void 0?e.addEventListener(t,n,{capture:!0,passive:o}):e.addEventListener(t,n,!0):o!==void 0?e.addEventListener(t,n,{passive:o}):e.addEventListener(t,n,!1)}function bl(e,t,n,r,o){var s=r;if(!(t&1)&&!(t&2)&&r!==null)e:for(;;){if(r===null)return;var i=r.tag;if(i===3||i===4){var l=r.stateNode.containerInfo;if(l===o||l.nodeType===8&&l.parentNode===o)break;if(i===4)for(i=r.return;i!==null;){var a=i.tag;if((a===3||a===4)&&(a=i.stateNode.containerInfo,a===o||a.nodeType===8&&a.parentNode===o))return;i=i.return}for(;l!==null;){if(i=Mn(l),i===null)return;if(a=i.tag,a===5||a===6){r=s=i;continue e}l=l.parentNode}}r=r.return}Dp(function(){var c=s,u=Nc(n),f=[];e:{var p=fh.get(e);if(p!==void 0){var h=Tc,y=e;switch(e){case"keypress":if(Is(n)===0)break e;case"keydown":case"keyup":h=Wv;break;case"focusin":y="focus",h=Sl;break;case"focusout":y="blur",h=Sl;break;case"beforeblur":case"afterblur":h=Sl;break;case"click":if(n.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":h=Qu;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":h=Iv;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":h=Xv;break;case ah:case ch:case uh:h=Rv;break;case dh:h=Kv;break;case"scroll":h=Tv;break;case"wheel":h=qv;break;case"copy":case"cut":case"paste":h=Dv;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":h=Ju}var x=(t&4)!==0,k=!x&&e==="scroll",m=x?p!==null?p+"Capture":null:p;x=[];for(var v=c,g;v!==null;){g=v;var w=g.stateNode;if(g.tag===5&&w!==null&&(g=w,m!==null&&(w=vo(v,m),w!=null&&x.push(Eo(v,w,g)))),k)break;v=v.return}0<x.length&&(p=new h(p,y,null,n,u),f.push({event:p,listeners:x}))}}if(!(t&7)){e:{if(p=e==="mouseover"||e==="pointerover",h=e==="mouseout"||e==="pointerout",p&&n!==da&&(y=n.relatedTarget||n.fromElement)&&(Mn(y)||y[Yt]))break e;if((h||p)&&(p=u.window===u?u:(p=u.ownerDocument)?p.defaultView||p.parentWindow:window,h?(y=n.relatedTarget||n.toElement,h=c,y=y?Mn(y):null,y!==null&&(k=Qn(y),y!==k||y.tag!==5&&y.tag!==6)&&(y=null)):(h=null,y=c),h!==y)){if(x=Qu,w="onMouseLeave",m="onMouseEnter",v="mouse",(e==="pointerout"||e==="pointerover")&&(x=Ju,w="onPointerLeave",m="onPointerEnter",v="pointer"),k=h==null?p:sr(h),g=y==null?p:sr(y),p=new x(w,v+"leave",h,n,u),p.target=k,p.relatedTarget=g,w=null,Mn(u)===c&&(x=new x(m,v+"enter",y,n,u),x.target=g,x.relatedTarget=k,w=x),k=w,h&&y)t:{for(x=h,m=y,v=0,g=x;g;g=qn(g))v++;for(g=0,w=m;w;w=qn(w))g++;for(;0<v-g;)x=qn(x),v--;for(;0<g-v;)m=qn(m),g--;for(;v--;){if(x===m||m!==null&&x===m.alternate)break t;x=qn(x),m=qn(m)}x=null}else x=null;h!==null&&cd(f,p,h,x,!1),y!==null&&k!==null&&cd(f,k,y,x,!0)}}e:{if(p=c?sr(c):window,h=p.nodeName&&p.nodeName.toLowerCase(),h==="select"||h==="input"&&p.type==="file")var j=ox;else if(td(p))if(rh)j=ax;else{j=ix;var _=sx}else(h=p.nodeName)&&h.toLowerCase()==="input"&&(p.type==="checkbox"||p.type==="radio")&&(j=lx);if(j&&(j=j(e,c))){nh(f,j,n,u);break e}_&&_(e,p,c),e==="focusout"&&(_=p._wrapperState)&&_.controlled&&p.type==="number"&&ia(p,"number",p.value)}switch(_=c?sr(c):window,e){case"focusin":(td(_)||_.contentEditable==="true")&&(rr=_,va=c,ao=null);break;case"focusout":ao=va=rr=null;break;case"mousedown":xa=!0;break;case"contextmenu":case"mouseup":case"dragend":xa=!1,id(f,n,u);break;case"selectionchange":if(dx)break;case"keydown":case"keyup":id(f,n,u)}var E;if(Ic)e:{switch(e){case"compositionstart":var N="onCompositionStart";break e;case"compositionend":N="onCompositionEnd";break e;case"compositionupdate":N="onCompositionUpdate";break e}N=void 0}else nr?eh(e,n)&&(N="onCompositionEnd"):e==="keydown"&&n.keyCode===229&&(N="onCompositionStart");N&&(Zp&&n.locale!=="ko"&&(nr||N!=="onCompositionStart"?N==="onCompositionEnd"&&nr&&(E=Jp()):(ln=u,Pc="value"in ln?ln.value:ln.textContent,nr=!0)),_=Zs(c,N),0<_.length&&(N=new qu(N,e,null,n,u),f.push({event:N,listeners:_}),E?N.data=E:(E=th(n),E!==null&&(N.data=E)))),(E=Zv?ex(e,n):tx(e,n))&&(c=Zs(c,"onBeforeInput"),0<c.length&&(u=new qu("onBeforeInput","beforeinput",null,n,u),f.push({event:u,listeners:c}),u.data=E))}ph(f,t)})}function Eo(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Zs(e,t){for(var n=t+"Capture",r=[];e!==null;){var o=e,s=o.stateNode;o.tag===5&&s!==null&&(o=s,s=vo(e,n),s!=null&&r.unshift(Eo(e,s,o)),s=vo(e,t),s!=null&&r.push(Eo(e,s,o))),e=e.return}return r}function qn(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5);return e||null}function cd(e,t,n,r,o){for(var s=t._reactName,i=[];n!==null&&n!==r;){var l=n,a=l.alternate,c=l.stateNode;if(a!==null&&a===r)break;l.tag===5&&c!==null&&(l=c,o?(a=vo(n,s),a!=null&&i.unshift(Eo(n,a,l))):o||(a=vo(n,s),a!=null&&i.push(Eo(n,a,l)))),n=n.return}i.length!==0&&e.push({event:t,listeners:i})}var mx=/\r\n?/g,gx=/\u0000|\uFFFD/g;function ud(e){return(typeof e=="string"?e:""+e).replace(mx,`
38
+ `).replace(gx,"")}function ds(e,t,n){if(t=ud(t),ud(e)!==t&&n)throw Error(V(425))}function ei(){}var wa=null,Sa=null;function ka(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var _a=typeof setTimeout=="function"?setTimeout:void 0,yx=typeof clearTimeout=="function"?clearTimeout:void 0,dd=typeof Promise=="function"?Promise:void 0,vx=typeof queueMicrotask=="function"?queueMicrotask:typeof dd<"u"?function(e){return dd.resolve(null).then(e).catch(xx)}:_a;function xx(e){setTimeout(function(){throw e})}function Pl(e,t){var n=t,r=0;do{var o=n.nextSibling;if(e.removeChild(n),o&&o.nodeType===8)if(n=o.data,n==="/$"){if(r===0){e.removeChild(o),So(t);return}r--}else n!=="$"&&n!=="$?"&&n!=="$!"||r++;n=o}while(n);So(t)}function pn(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t==="$"||t==="$!"||t==="$?")break;if(t==="/$")return null}}return e}function fd(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="$"||n==="$!"||n==="$?"){if(t===0)return e;t--}else n==="/$"&&t++}e=e.previousSibling}return null}var zr=Math.random().toString(36).slice(2),Pt="__reactFiber$"+zr,Co="__reactProps$"+zr,Yt="__reactContainer$"+zr,Na="__reactEvents$"+zr,wx="__reactListeners$"+zr,Sx="__reactHandles$"+zr;function Mn(e){var t=e[Pt];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Yt]||n[Pt]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=fd(e);e!==null;){if(n=e[Pt])return n;e=fd(e)}return t}e=n,n=e.parentNode}return null}function Uo(e){return e=e[Pt]||e[Yt],!e||e.tag!==5&&e.tag!==6&&e.tag!==13&&e.tag!==3?null:e}function sr(e){if(e.tag===5||e.tag===6)return e.stateNode;throw Error(V(33))}function Ai(e){return e[Co]||null}var Ea=[],ir=-1;function kn(e){return{current:e}}function pe(e){0>ir||(e.current=Ea[ir],Ea[ir]=null,ir--)}function de(e,t){ir++,Ea[ir]=e.current,e.current=t}var wn={},Re=kn(wn),Ve=kn(!1),Fn=wn;function kr(e,t){var n=e.type.contextTypes;if(!n)return wn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o={},s;for(s in n)o[s]=t[s];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function We(e){return e=e.childContextTypes,e!=null}function ti(){pe(Ve),pe(Re)}function pd(e,t,n){if(Re.current!==wn)throw Error(V(168));de(Re,t),de(Ve,n)}function mh(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var o in r)if(!(o in t))throw Error(V(108,sv(e)||"Unknown",o));return xe({},n,r)}function ni(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||wn,Fn=Re.current,de(Re,e),de(Ve,Ve.current),!0}function hd(e,t,n){var r=e.stateNode;if(!r)throw Error(V(169));n?(e=mh(e,t,Fn),r.__reactInternalMemoizedMergedChildContext=e,pe(Ve),pe(Re),de(Re,e)):pe(Ve),de(Ve,n)}var Ot=null,Di=!1,Tl=!1;function gh(e){Ot===null?Ot=[e]:Ot.push(e)}function kx(e){Di=!0,gh(e)}function _n(){if(!Tl&&Ot!==null){Tl=!0;var e=0,t=ue;try{var n=Ot;for(ue=1;e<n.length;e++){var r=n[e];do r=r(!0);while(r!==null)}Ot=null,Di=!1}catch(o){throw Ot!==null&&(Ot=Ot.slice(e+1)),Hp(Ec,_n),o}finally{ue=t,Tl=!1}}return null}var lr=[],ar=0,ri=null,oi=0,tt=[],nt=0,On=null,Ht=1,Bt="";function bn(e,t){lr[ar++]=oi,lr[ar++]=ri,ri=e,oi=t}function yh(e,t,n){tt[nt++]=Ht,tt[nt++]=Bt,tt[nt++]=On,On=e;var r=Ht;e=Bt;var o=32-yt(r)-1;r&=~(1<<o),n+=1;var s=32-yt(t)+o;if(30<s){var i=o-o%5;s=(r&(1<<i)-1).toString(32),r>>=i,o-=i,Ht=1<<32-yt(t)+o|n<<o|r,Bt=s+e}else Ht=1<<s|n<<o|r,Bt=e}function Lc(e){e.return!==null&&(bn(e,1),yh(e,1,0))}function Rc(e){for(;e===ri;)ri=lr[--ar],lr[ar]=null,oi=lr[--ar],lr[ar]=null;for(;e===On;)On=tt[--nt],tt[nt]=null,Bt=tt[--nt],tt[nt]=null,Ht=tt[--nt],tt[nt]=null}var Ke=null,Ge=null,ge=!1,pt=null;function vh(e,t){var n=rt(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,t=e.deletions,t===null?(e.deletions=[n],e.flags|=16):t.push(n)}function md(e,t){switch(e.tag){case 5:var n=e.type;return t=t.nodeType!==1||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t,t!==null?(e.stateNode=t,Ke=e,Ge=pn(t.firstChild),!0):!1;case 6:return t=e.pendingProps===""||t.nodeType!==3?null:t,t!==null?(e.stateNode=t,Ke=e,Ge=null,!0):!1;case 13:return t=t.nodeType!==8?null:t,t!==null?(n=On!==null?{id:Ht,overflow:Bt}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},n=rt(18,null,null,0),n.stateNode=t,n.return=e,e.child=n,Ke=e,Ge=null,!0):!1;default:return!1}}function Ca(e){return(e.mode&1)!==0&&(e.flags&128)===0}function ja(e){if(ge){var t=Ge;if(t){var n=t;if(!md(e,t)){if(Ca(e))throw Error(V(418));t=pn(n.nextSibling);var r=Ke;t&&md(e,t)?vh(r,n):(e.flags=e.flags&-4097|2,ge=!1,Ke=e)}}else{if(Ca(e))throw Error(V(418));e.flags=e.flags&-4097|2,ge=!1,Ke=e}}}function gd(e){for(e=e.return;e!==null&&e.tag!==5&&e.tag!==3&&e.tag!==13;)e=e.return;Ke=e}function fs(e){if(e!==Ke)return!1;if(!ge)return gd(e),ge=!0,!1;var t;if((t=e.tag!==3)&&!(t=e.tag!==5)&&(t=e.type,t=t!=="head"&&t!=="body"&&!ka(e.type,e.memoizedProps)),t&&(t=Ge)){if(Ca(e))throw xh(),Error(V(418));for(;t;)vh(e,t),t=pn(t.nextSibling)}if(gd(e),e.tag===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(V(317));e:{for(e=e.nextSibling,t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="/$"){if(t===0){Ge=pn(e.nextSibling);break e}t--}else n!=="$"&&n!=="$!"&&n!=="$?"||t++}e=e.nextSibling}Ge=null}}else Ge=Ke?pn(e.stateNode.nextSibling):null;return!0}function xh(){for(var e=Ge;e;)e=pn(e.nextSibling)}function _r(){Ge=Ke=null,ge=!1}function Ac(e){pt===null?pt=[e]:pt.push(e)}var _x=Qt.ReactCurrentBatchConfig;function Ur(e,t,n){if(e=n.ref,e!==null&&typeof e!="function"&&typeof e!="object"){if(n._owner){if(n=n._owner,n){if(n.tag!==1)throw Error(V(309));var r=n.stateNode}if(!r)throw Error(V(147,e));var o=r,s=""+e;return t!==null&&t.ref!==null&&typeof t.ref=="function"&&t.ref._stringRef===s?t.ref:(t=function(i){var l=o.refs;i===null?delete l[s]:l[s]=i},t._stringRef=s,t)}if(typeof e!="string")throw Error(V(284));if(!n._owner)throw Error(V(290,e))}return e}function ps(e,t){throw e=Object.prototype.toString.call(t),Error(V(31,e==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function yd(e){var t=e._init;return t(e._payload)}function wh(e){function t(m,v){if(e){var g=m.deletions;g===null?(m.deletions=[v],m.flags|=16):g.push(v)}}function n(m,v){if(!e)return null;for(;v!==null;)t(m,v),v=v.sibling;return null}function r(m,v){for(m=new Map;v!==null;)v.key!==null?m.set(v.key,v):m.set(v.index,v),v=v.sibling;return m}function o(m,v){return m=yn(m,v),m.index=0,m.sibling=null,m}function s(m,v,g){return m.index=g,e?(g=m.alternate,g!==null?(g=g.index,g<v?(m.flags|=2,v):g):(m.flags|=2,v)):(m.flags|=1048576,v)}function i(m){return e&&m.alternate===null&&(m.flags|=2),m}function l(m,v,g,w){return v===null||v.tag!==6?(v=Dl(g,m.mode,w),v.return=m,v):(v=o(v,g),v.return=m,v)}function a(m,v,g,w){var j=g.type;return j===tr?u(m,v,g.props.children,w,g.key):v!==null&&(v.elementType===j||typeof j=="object"&&j!==null&&j.$$typeof===en&&yd(j)===v.type)?(w=o(v,g.props),w.ref=Ur(m,v,g),w.return=m,w):(w=Fs(g.type,g.key,g.props,null,m.mode,w),w.ref=Ur(m,v,g),w.return=m,w)}function c(m,v,g,w){return v===null||v.tag!==4||v.stateNode.containerInfo!==g.containerInfo||v.stateNode.implementation!==g.implementation?(v=zl(g,m.mode,w),v.return=m,v):(v=o(v,g.children||[]),v.return=m,v)}function u(m,v,g,w,j){return v===null||v.tag!==7?(v=An(g,m.mode,w,j),v.return=m,v):(v=o(v,g),v.return=m,v)}function f(m,v,g){if(typeof v=="string"&&v!==""||typeof v=="number")return v=Dl(""+v,m.mode,g),v.return=m,v;if(typeof v=="object"&&v!==null){switch(v.$$typeof){case ns:return g=Fs(v.type,v.key,v.props,null,m.mode,g),g.ref=Ur(m,null,v),g.return=m,g;case er:return v=zl(v,m.mode,g),v.return=m,v;case en:var w=v._init;return f(m,w(v._payload),g)}if(Jr(v)||Or(v))return v=An(v,m.mode,g,null),v.return=m,v;ps(m,v)}return null}function p(m,v,g,w){var j=v!==null?v.key:null;if(typeof g=="string"&&g!==""||typeof g=="number")return j!==null?null:l(m,v,""+g,w);if(typeof g=="object"&&g!==null){switch(g.$$typeof){case ns:return g.key===j?a(m,v,g,w):null;case er:return g.key===j?c(m,v,g,w):null;case en:return j=g._init,p(m,v,j(g._payload),w)}if(Jr(g)||Or(g))return j!==null?null:u(m,v,g,w,null);ps(m,g)}return null}function h(m,v,g,w,j){if(typeof w=="string"&&w!==""||typeof w=="number")return m=m.get(g)||null,l(v,m,""+w,j);if(typeof w=="object"&&w!==null){switch(w.$$typeof){case ns:return m=m.get(w.key===null?g:w.key)||null,a(v,m,w,j);case er:return m=m.get(w.key===null?g:w.key)||null,c(v,m,w,j);case en:var _=w._init;return h(m,v,g,_(w._payload),j)}if(Jr(w)||Or(w))return m=m.get(g)||null,u(v,m,w,j,null);ps(v,w)}return null}function y(m,v,g,w){for(var j=null,_=null,E=v,N=v=0,$=null;E!==null&&N<g.length;N++){E.index>N?($=E,E=null):$=E.sibling;var A=p(m,E,g[N],w);if(A===null){E===null&&(E=$);break}e&&E&&A.alternate===null&&t(m,E),v=s(A,v,N),_===null?j=A:_.sibling=A,_=A,E=$}if(N===g.length)return n(m,E),ge&&bn(m,N),j;if(E===null){for(;N<g.length;N++)E=f(m,g[N],w),E!==null&&(v=s(E,v,N),_===null?j=E:_.sibling=E,_=E);return ge&&bn(m,N),j}for(E=r(m,E);N<g.length;N++)$=h(E,m,N,g[N],w),$!==null&&(e&&$.alternate!==null&&E.delete($.key===null?N:$.key),v=s($,v,N),_===null?j=$:_.sibling=$,_=$);return e&&E.forEach(function(L){return t(m,L)}),ge&&bn(m,N),j}function x(m,v,g,w){var j=Or(g);if(typeof j!="function")throw Error(V(150));if(g=j.call(g),g==null)throw Error(V(151));for(var _=j=null,E=v,N=v=0,$=null,A=g.next();E!==null&&!A.done;N++,A=g.next()){E.index>N?($=E,E=null):$=E.sibling;var L=p(m,E,A.value,w);if(L===null){E===null&&(E=$);break}e&&E&&L.alternate===null&&t(m,E),v=s(L,v,N),_===null?j=L:_.sibling=L,_=L,E=$}if(A.done)return n(m,E),ge&&bn(m,N),j;if(E===null){for(;!A.done;N++,A=g.next())A=f(m,A.value,w),A!==null&&(v=s(A,v,N),_===null?j=A:_.sibling=A,_=A);return ge&&bn(m,N),j}for(E=r(m,E);!A.done;N++,A=g.next())A=h(E,m,N,A.value,w),A!==null&&(e&&A.alternate!==null&&E.delete(A.key===null?N:A.key),v=s(A,v,N),_===null?j=A:_.sibling=A,_=A);return e&&E.forEach(function(O){return t(m,O)}),ge&&bn(m,N),j}function k(m,v,g,w){if(typeof g=="object"&&g!==null&&g.type===tr&&g.key===null&&(g=g.props.children),typeof g=="object"&&g!==null){switch(g.$$typeof){case ns:e:{for(var j=g.key,_=v;_!==null;){if(_.key===j){if(j=g.type,j===tr){if(_.tag===7){n(m,_.sibling),v=o(_,g.props.children),v.return=m,m=v;break e}}else if(_.elementType===j||typeof j=="object"&&j!==null&&j.$$typeof===en&&yd(j)===_.type){n(m,_.sibling),v=o(_,g.props),v.ref=Ur(m,_,g),v.return=m,m=v;break e}n(m,_);break}else t(m,_);_=_.sibling}g.type===tr?(v=An(g.props.children,m.mode,w,g.key),v.return=m,m=v):(w=Fs(g.type,g.key,g.props,null,m.mode,w),w.ref=Ur(m,v,g),w.return=m,m=w)}return i(m);case er:e:{for(_=g.key;v!==null;){if(v.key===_)if(v.tag===4&&v.stateNode.containerInfo===g.containerInfo&&v.stateNode.implementation===g.implementation){n(m,v.sibling),v=o(v,g.children||[]),v.return=m,m=v;break e}else{n(m,v);break}else t(m,v);v=v.sibling}v=zl(g,m.mode,w),v.return=m,m=v}return i(m);case en:return _=g._init,k(m,v,_(g._payload),w)}if(Jr(g))return y(m,v,g,w);if(Or(g))return x(m,v,g,w);ps(m,g)}return typeof g=="string"&&g!==""||typeof g=="number"?(g=""+g,v!==null&&v.tag===6?(n(m,v.sibling),v=o(v,g),v.return=m,m=v):(n(m,v),v=Dl(g,m.mode,w),v.return=m,m=v),i(m)):n(m,v)}return k}var Nr=wh(!0),Sh=wh(!1),si=kn(null),ii=null,cr=null,Dc=null;function zc(){Dc=cr=ii=null}function Fc(e){var t=si.current;pe(si),e._currentValue=t}function ba(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function yr(e,t){ii=e,Dc=cr=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(He=!0),e.firstContext=null)}function st(e){var t=e._currentValue;if(Dc!==e)if(e={context:e,memoizedValue:t,next:null},cr===null){if(ii===null)throw Error(V(308));cr=e,ii.dependencies={lanes:0,firstContext:e}}else cr=cr.next=e;return t}var In=null;function Oc(e){In===null?In=[e]:In.push(e)}function kh(e,t,n,r){var o=t.interleaved;return o===null?(n.next=n,Oc(t)):(n.next=o.next,o.next=n),t.interleaved=n,Xt(e,r)}function Xt(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var tn=!1;function Hc(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function _h(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Wt(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function hn(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,le&2){var o=r.pending;return o===null?t.next=t:(t.next=o.next,o.next=t),r.pending=t,Xt(e,n)}return o=r.interleaved,o===null?(t.next=t,Oc(r)):(t.next=o.next,o.next=t),r.interleaved=t,Xt(e,n)}function $s(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Cc(e,n)}}function vd(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var o=null,s=null;if(n=n.firstBaseUpdate,n!==null){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};s===null?o=s=i:s=s.next=i,n=n.next}while(n!==null);s===null?o=s=t:s=s.next=t}else o=s=t;n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:s,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function li(e,t,n,r){var o=e.updateQueue;tn=!1;var s=o.firstBaseUpdate,i=o.lastBaseUpdate,l=o.shared.pending;if(l!==null){o.shared.pending=null;var a=l,c=a.next;a.next=null,i===null?s=c:i.next=c,i=a;var u=e.alternate;u!==null&&(u=u.updateQueue,l=u.lastBaseUpdate,l!==i&&(l===null?u.firstBaseUpdate=c:l.next=c,u.lastBaseUpdate=a))}if(s!==null){var f=o.baseState;i=0,u=c=a=null,l=s;do{var p=l.lane,h=l.eventTime;if((r&p)===p){u!==null&&(u=u.next={eventTime:h,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var y=e,x=l;switch(p=t,h=n,x.tag){case 1:if(y=x.payload,typeof y=="function"){f=y.call(h,f,p);break e}f=y;break e;case 3:y.flags=y.flags&-65537|128;case 0:if(y=x.payload,p=typeof y=="function"?y.call(h,f,p):y,p==null)break e;f=xe({},f,p);break e;case 2:tn=!0}}l.callback!==null&&l.lane!==0&&(e.flags|=64,p=o.effects,p===null?o.effects=[l]:p.push(l))}else h={eventTime:h,lane:p,tag:l.tag,payload:l.payload,callback:l.callback,next:null},u===null?(c=u=h,a=f):u=u.next=h,i|=p;if(l=l.next,l===null){if(l=o.shared.pending,l===null)break;p=l,l=p.next,p.next=null,o.lastBaseUpdate=p,o.shared.pending=null}}while(!0);if(u===null&&(a=f),o.baseState=a,o.firstBaseUpdate=c,o.lastBaseUpdate=u,t=o.shared.interleaved,t!==null){o=t;do i|=o.lane,o=o.next;while(o!==t)}else s===null&&(o.shared.lanes=0);Bn|=i,e.lanes=i,e.memoizedState=f}}function xd(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;t<e.length;t++){var r=e[t],o=r.callback;if(o!==null){if(r.callback=null,r=n,typeof o!="function")throw Error(V(191,o));o.call(r)}}}var Yo={},Mt=kn(Yo),jo=kn(Yo),bo=kn(Yo);function $n(e){if(e===Yo)throw Error(V(174));return e}function Bc(e,t){switch(de(bo,t),de(jo,e),de(Mt,Yo),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:aa(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=aa(t,e)}pe(Mt),de(Mt,t)}function Er(){pe(Mt),pe(jo),pe(bo)}function Nh(e){$n(bo.current);var t=$n(Mt.current),n=aa(t,e.type);t!==n&&(de(jo,e),de(Mt,n))}function Vc(e){jo.current===e&&(pe(Mt),pe(jo))}var ye=kn(0);function ai(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Ml=[];function Wc(){for(var e=0;e<Ml.length;e++)Ml[e]._workInProgressVersionPrimary=null;Ml.length=0}var Ls=Qt.ReactCurrentDispatcher,Il=Qt.ReactCurrentBatchConfig,Hn=0,ve=null,Ee=null,je=null,ci=!1,co=!1,Po=0,Nx=0;function Ie(){throw Error(V(321))}function Uc(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!xt(e[n],t[n]))return!1;return!0}function Yc(e,t,n,r,o,s){if(Hn=s,ve=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Ls.current=e===null||e.memoizedState===null?bx:Px,e=n(r,o),co){s=0;do{if(co=!1,Po=0,25<=s)throw Error(V(301));s+=1,je=Ee=null,t.updateQueue=null,Ls.current=Tx,e=n(r,o)}while(co)}if(Ls.current=ui,t=Ee!==null&&Ee.next!==null,Hn=0,je=Ee=ve=null,ci=!1,t)throw Error(V(300));return e}function Xc(){var e=Po!==0;return Po=0,e}function jt(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return je===null?ve.memoizedState=je=e:je=je.next=e,je}function it(){if(Ee===null){var e=ve.alternate;e=e!==null?e.memoizedState:null}else e=Ee.next;var t=je===null?ve.memoizedState:je.next;if(t!==null)je=t,Ee=e;else{if(e===null)throw Error(V(310));Ee=e,e={memoizedState:Ee.memoizedState,baseState:Ee.baseState,baseQueue:Ee.baseQueue,queue:Ee.queue,next:null},je===null?ve.memoizedState=je=e:je=je.next=e}return je}function To(e,t){return typeof t=="function"?t(e):t}function $l(e){var t=it(),n=t.queue;if(n===null)throw Error(V(311));n.lastRenderedReducer=e;var r=Ee,o=r.baseQueue,s=n.pending;if(s!==null){if(o!==null){var i=o.next;o.next=s.next,s.next=i}r.baseQueue=o=s,n.pending=null}if(o!==null){s=o.next,r=r.baseState;var l=i=null,a=null,c=s;do{var u=c.lane;if((Hn&u)===u)a!==null&&(a=a.next={lane:0,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),r=c.hasEagerState?c.eagerState:e(r,c.action);else{var f={lane:u,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null};a===null?(l=a=f,i=r):a=a.next=f,ve.lanes|=u,Bn|=u}c=c.next}while(c!==null&&c!==s);a===null?i=r:a.next=l,xt(r,t.memoizedState)||(He=!0),t.memoizedState=r,t.baseState=i,t.baseQueue=a,n.lastRenderedState=r}if(e=n.interleaved,e!==null){o=e;do s=o.lane,ve.lanes|=s,Bn|=s,o=o.next;while(o!==e)}else o===null&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function Ll(e){var t=it(),n=t.queue;if(n===null)throw Error(V(311));n.lastRenderedReducer=e;var r=n.dispatch,o=n.pending,s=t.memoizedState;if(o!==null){n.pending=null;var i=o=o.next;do s=e(s,i.action),i=i.next;while(i!==o);xt(s,t.memoizedState)||(He=!0),t.memoizedState=s,t.baseQueue===null&&(t.baseState=s),n.lastRenderedState=s}return[s,r]}function Eh(){}function Ch(e,t){var n=ve,r=it(),o=t(),s=!xt(r.memoizedState,o);if(s&&(r.memoizedState=o,He=!0),r=r.queue,Gc(Ph.bind(null,n,r,e),[e]),r.getSnapshot!==t||s||je!==null&&je.memoizedState.tag&1){if(n.flags|=2048,Mo(9,bh.bind(null,n,r,o,t),void 0,null),be===null)throw Error(V(349));Hn&30||jh(n,t,o)}return o}function jh(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=ve.updateQueue,t===null?(t={lastEffect:null,stores:null},ve.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function bh(e,t,n,r){t.value=n,t.getSnapshot=r,Th(t)&&Mh(e)}function Ph(e,t,n){return n(function(){Th(t)&&Mh(e)})}function Th(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!xt(e,n)}catch{return!0}}function Mh(e){var t=Xt(e,1);t!==null&&vt(t,e,1,-1)}function wd(e){var t=jt();return typeof e=="function"&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:To,lastRenderedState:e},t.queue=e,e=e.dispatch=jx.bind(null,ve,e),[t.memoizedState,e]}function Mo(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},t=ve.updateQueue,t===null?(t={lastEffect:null,stores:null},ve.updateQueue=t,t.lastEffect=e.next=e):(n=t.lastEffect,n===null?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e)),e}function Ih(){return it().memoizedState}function Rs(e,t,n,r){var o=jt();ve.flags|=e,o.memoizedState=Mo(1|t,n,void 0,r===void 0?null:r)}function zi(e,t,n,r){var o=it();r=r===void 0?null:r;var s=void 0;if(Ee!==null){var i=Ee.memoizedState;if(s=i.destroy,r!==null&&Uc(r,i.deps)){o.memoizedState=Mo(t,n,s,r);return}}ve.flags|=e,o.memoizedState=Mo(1|t,n,s,r)}function Sd(e,t){return Rs(8390656,8,e,t)}function Gc(e,t){return zi(2048,8,e,t)}function $h(e,t){return zi(4,2,e,t)}function Lh(e,t){return zi(4,4,e,t)}function Rh(e,t){if(typeof t=="function")return e=e(),t(e),function(){t(null)};if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function Ah(e,t,n){return n=n!=null?n.concat([e]):null,zi(4,4,Rh.bind(null,t,e),n)}function Kc(){}function Dh(e,t){var n=it();t=t===void 0?null:t;var r=n.memoizedState;return r!==null&&t!==null&&Uc(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function zh(e,t){var n=it();t=t===void 0?null:t;var r=n.memoizedState;return r!==null&&t!==null&&Uc(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Fh(e,t,n){return Hn&21?(xt(n,t)||(n=Wp(),ve.lanes|=n,Bn|=n,e.baseState=!0),t):(e.baseState&&(e.baseState=!1,He=!0),e.memoizedState=n)}function Ex(e,t){var n=ue;ue=n!==0&&4>n?n:4,e(!0);var r=Il.transition;Il.transition={};try{e(!1),t()}finally{ue=n,Il.transition=r}}function Oh(){return it().memoizedState}function Cx(e,t,n){var r=gn(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Hh(e))Bh(t,n);else if(n=kh(e,t,n,r),n!==null){var o=De();vt(n,e,r,o),Vh(n,t,r)}}function jx(e,t,n){var r=gn(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Hh(e))Bh(t,o);else{var s=e.alternate;if(e.lanes===0&&(s===null||s.lanes===0)&&(s=t.lastRenderedReducer,s!==null))try{var i=t.lastRenderedState,l=s(i,n);if(o.hasEagerState=!0,o.eagerState=l,xt(l,i)){var a=t.interleaved;a===null?(o.next=o,Oc(t)):(o.next=a.next,a.next=o),t.interleaved=o;return}}catch{}finally{}n=kh(e,t,o,r),n!==null&&(o=De(),vt(n,e,r,o),Vh(n,t,r))}}function Hh(e){var t=e.alternate;return e===ve||t!==null&&t===ve}function Bh(e,t){co=ci=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Vh(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Cc(e,n)}}var ui={readContext:st,useCallback:Ie,useContext:Ie,useEffect:Ie,useImperativeHandle:Ie,useInsertionEffect:Ie,useLayoutEffect:Ie,useMemo:Ie,useReducer:Ie,useRef:Ie,useState:Ie,useDebugValue:Ie,useDeferredValue:Ie,useTransition:Ie,useMutableSource:Ie,useSyncExternalStore:Ie,useId:Ie,unstable_isNewReconciler:!1},bx={readContext:st,useCallback:function(e,t){return jt().memoizedState=[e,t===void 0?null:t],e},useContext:st,useEffect:Sd,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Rs(4194308,4,Rh.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Rs(4194308,4,e,t)},useInsertionEffect:function(e,t){return Rs(4,2,e,t)},useMemo:function(e,t){var n=jt();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=jt();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Cx.bind(null,ve,e),[r.memoizedState,e]},useRef:function(e){var t=jt();return e={current:e},t.memoizedState=e},useState:wd,useDebugValue:Kc,useDeferredValue:function(e){return jt().memoizedState=e},useTransition:function(){var e=wd(!1),t=e[0];return e=Ex.bind(null,e[1]),jt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=ve,o=jt();if(ge){if(n===void 0)throw Error(V(407));n=n()}else{if(n=t(),be===null)throw Error(V(349));Hn&30||jh(r,t,n)}o.memoizedState=n;var s={value:n,getSnapshot:t};return o.queue=s,Sd(Ph.bind(null,r,s,e),[e]),r.flags|=2048,Mo(9,bh.bind(null,r,s,n,t),void 0,null),n},useId:function(){var e=jt(),t=be.identifierPrefix;if(ge){var n=Bt,r=Ht;n=(r&~(1<<32-yt(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Po++,0<n&&(t+="H"+n.toString(32)),t+=":"}else n=Nx++,t=":"+t+"r"+n.toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},Px={readContext:st,useCallback:Dh,useContext:st,useEffect:Gc,useImperativeHandle:Ah,useInsertionEffect:$h,useLayoutEffect:Lh,useMemo:zh,useReducer:$l,useRef:Ih,useState:function(){return $l(To)},useDebugValue:Kc,useDeferredValue:function(e){var t=it();return Fh(t,Ee.memoizedState,e)},useTransition:function(){var e=$l(To)[0],t=it().memoizedState;return[e,t]},useMutableSource:Eh,useSyncExternalStore:Ch,useId:Oh,unstable_isNewReconciler:!1},Tx={readContext:st,useCallback:Dh,useContext:st,useEffect:Gc,useImperativeHandle:Ah,useInsertionEffect:$h,useLayoutEffect:Lh,useMemo:zh,useReducer:Ll,useRef:Ih,useState:function(){return Ll(To)},useDebugValue:Kc,useDeferredValue:function(e){var t=it();return Ee===null?t.memoizedState=e:Fh(t,Ee.memoizedState,e)},useTransition:function(){var e=Ll(To)[0],t=it().memoizedState;return[e,t]},useMutableSource:Eh,useSyncExternalStore:Ch,useId:Oh,unstable_isNewReconciler:!1};function ut(e,t){if(e&&e.defaultProps){t=xe({},t),e=e.defaultProps;for(var n in e)t[n]===void 0&&(t[n]=e[n]);return t}return t}function Pa(e,t,n,r){t=e.memoizedState,n=n(r,t),n=n==null?t:xe({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var Fi={isMounted:function(e){return(e=e._reactInternals)?Qn(e)===e:!1},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=De(),o=gn(e),s=Wt(r,o);s.payload=t,n!=null&&(s.callback=n),t=hn(e,s,o),t!==null&&(vt(t,e,o,r),$s(t,e,o))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=De(),o=gn(e),s=Wt(r,o);s.tag=1,s.payload=t,n!=null&&(s.callback=n),t=hn(e,s,o),t!==null&&(vt(t,e,o,r),$s(t,e,o))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=De(),r=gn(e),o=Wt(n,r);o.tag=2,t!=null&&(o.callback=t),t=hn(e,o,r),t!==null&&(vt(t,e,r,n),$s(t,e,r))}};function kd(e,t,n,r,o,s,i){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(r,s,i):t.prototype&&t.prototype.isPureReactComponent?!_o(n,r)||!_o(o,s):!0}function Wh(e,t,n){var r=!1,o=wn,s=t.contextType;return typeof s=="object"&&s!==null?s=st(s):(o=We(t)?Fn:Re.current,r=t.contextTypes,s=(r=r!=null)?kr(e,o):wn),t=new t(n,s),e.memoizedState=t.state!==null&&t.state!==void 0?t.state:null,t.updater=Fi,e.stateNode=t,t._reactInternals=e,r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=o,e.__reactInternalMemoizedMaskedChildContext=s),t}function _d(e,t,n,r){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(n,r),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&Fi.enqueueReplaceState(t,t.state,null)}function Ta(e,t,n,r){var o=e.stateNode;o.props=n,o.state=e.memoizedState,o.refs={},Hc(e);var s=t.contextType;typeof s=="object"&&s!==null?o.context=st(s):(s=We(t)?Fn:Re.current,o.context=kr(e,s)),o.state=e.memoizedState,s=t.getDerivedStateFromProps,typeof s=="function"&&(Pa(e,t,s,n),o.state=e.memoizedState),typeof t.getDerivedStateFromProps=="function"||typeof o.getSnapshotBeforeUpdate=="function"||typeof o.UNSAFE_componentWillMount!="function"&&typeof o.componentWillMount!="function"||(t=o.state,typeof o.componentWillMount=="function"&&o.componentWillMount(),typeof o.UNSAFE_componentWillMount=="function"&&o.UNSAFE_componentWillMount(),t!==o.state&&Fi.enqueueReplaceState(o,o.state,null),li(e,n,o,r),o.state=e.memoizedState),typeof o.componentDidMount=="function"&&(e.flags|=4194308)}function Cr(e,t){try{var n="",r=t;do n+=ov(r),r=r.return;while(r);var o=n}catch(s){o=`
39
+ Error generating stack: `+s.message+`
40
+ `+s.stack}return{value:e,source:t,stack:o,digest:null}}function Rl(e,t,n){return{value:e,source:null,stack:n??null,digest:t??null}}function Ma(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}var Mx=typeof WeakMap=="function"?WeakMap:Map;function Uh(e,t,n){n=Wt(-1,n),n.tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){fi||(fi=!0,Ha=r),Ma(e,t)},n}function Yh(e,t,n){n=Wt(-1,n),n.tag=3;var r=e.type.getDerivedStateFromError;if(typeof r=="function"){var o=t.value;n.payload=function(){return r(o)},n.callback=function(){Ma(e,t)}}var s=e.stateNode;return s!==null&&typeof s.componentDidCatch=="function"&&(n.callback=function(){Ma(e,t),typeof r!="function"&&(mn===null?mn=new Set([this]):mn.add(this));var i=t.stack;this.componentDidCatch(t.value,{componentStack:i!==null?i:""})}),n}function Nd(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Mx;var o=new Set;r.set(t,o)}else o=r.get(t),o===void 0&&(o=new Set,r.set(t,o));o.has(n)||(o.add(n),e=Ux.bind(null,e,t,n),t.then(e,e))}function Ed(e){do{var t;if((t=e.tag===13)&&(t=e.memoizedState,t=t!==null?t.dehydrated!==null:!0),t)return e;e=e.return}while(e!==null);return null}function Cd(e,t,n,r,o){return e.mode&1?(e.flags|=65536,e.lanes=o,e):(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,n.tag===1&&(n.alternate===null?n.tag=17:(t=Wt(-1,1),t.tag=2,hn(n,t,1))),n.lanes|=1),e)}var Ix=Qt.ReactCurrentOwner,He=!1;function Ae(e,t,n,r){t.child=e===null?Sh(t,null,n,r):Nr(t,e.child,n,r)}function jd(e,t,n,r,o){n=n.render;var s=t.ref;return yr(t,o),r=Yc(e,t,n,r,s,o),n=Xc(),e!==null&&!He?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Gt(e,t,o)):(ge&&n&&Lc(t),t.flags|=1,Ae(e,t,r,o),t.child)}function bd(e,t,n,r,o){if(e===null){var s=n.type;return typeof s=="function"&&!ru(s)&&s.defaultProps===void 0&&n.compare===null&&n.defaultProps===void 0?(t.tag=15,t.type=s,Xh(e,t,s,r,o)):(e=Fs(n.type,null,r,t,t.mode,o),e.ref=t.ref,e.return=t,t.child=e)}if(s=e.child,!(e.lanes&o)){var i=s.memoizedProps;if(n=n.compare,n=n!==null?n:_o,n(i,r)&&e.ref===t.ref)return Gt(e,t,o)}return t.flags|=1,e=yn(s,r),e.ref=t.ref,e.return=t,t.child=e}function Xh(e,t,n,r,o){if(e!==null){var s=e.memoizedProps;if(_o(s,r)&&e.ref===t.ref)if(He=!1,t.pendingProps=r=s,(e.lanes&o)!==0)e.flags&131072&&(He=!0);else return t.lanes=e.lanes,Gt(e,t,o)}return Ia(e,t,n,r,o)}function Gh(e,t,n){var r=t.pendingProps,o=r.children,s=e!==null?e.memoizedState:null;if(r.mode==="hidden")if(!(t.mode&1))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},de(dr,Ye),Ye|=n;else{if(!(n&1073741824))return e=s!==null?s.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,de(dr,Ye),Ye|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=s!==null?s.baseLanes:n,de(dr,Ye),Ye|=r}else s!==null?(r=s.baseLanes|n,t.memoizedState=null):r=n,de(dr,Ye),Ye|=r;return Ae(e,t,o,n),t.child}function Kh(e,t){var n=t.ref;(e===null&&n!==null||e!==null&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Ia(e,t,n,r,o){var s=We(n)?Fn:Re.current;return s=kr(t,s),yr(t,o),n=Yc(e,t,n,r,s,o),r=Xc(),e!==null&&!He?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Gt(e,t,o)):(ge&&r&&Lc(t),t.flags|=1,Ae(e,t,n,o),t.child)}function Pd(e,t,n,r,o){if(We(n)){var s=!0;ni(t)}else s=!1;if(yr(t,o),t.stateNode===null)As(e,t),Wh(t,n,r),Ta(t,n,r,o),r=!0;else if(e===null){var i=t.stateNode,l=t.memoizedProps;i.props=l;var a=i.context,c=n.contextType;typeof c=="object"&&c!==null?c=st(c):(c=We(n)?Fn:Re.current,c=kr(t,c));var u=n.getDerivedStateFromProps,f=typeof u=="function"||typeof i.getSnapshotBeforeUpdate=="function";f||typeof i.UNSAFE_componentWillReceiveProps!="function"&&typeof i.componentWillReceiveProps!="function"||(l!==r||a!==c)&&_d(t,i,r,c),tn=!1;var p=t.memoizedState;i.state=p,li(t,r,i,o),a=t.memoizedState,l!==r||p!==a||Ve.current||tn?(typeof u=="function"&&(Pa(t,n,u,r),a=t.memoizedState),(l=tn||kd(t,n,l,r,p,a,c))?(f||typeof i.UNSAFE_componentWillMount!="function"&&typeof i.componentWillMount!="function"||(typeof i.componentWillMount=="function"&&i.componentWillMount(),typeof i.UNSAFE_componentWillMount=="function"&&i.UNSAFE_componentWillMount()),typeof i.componentDidMount=="function"&&(t.flags|=4194308)):(typeof i.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=a),i.props=r,i.state=a,i.context=c,r=l):(typeof i.componentDidMount=="function"&&(t.flags|=4194308),r=!1)}else{i=t.stateNode,_h(e,t),l=t.memoizedProps,c=t.type===t.elementType?l:ut(t.type,l),i.props=c,f=t.pendingProps,p=i.context,a=n.contextType,typeof a=="object"&&a!==null?a=st(a):(a=We(n)?Fn:Re.current,a=kr(t,a));var h=n.getDerivedStateFromProps;(u=typeof h=="function"||typeof i.getSnapshotBeforeUpdate=="function")||typeof i.UNSAFE_componentWillReceiveProps!="function"&&typeof i.componentWillReceiveProps!="function"||(l!==f||p!==a)&&_d(t,i,r,a),tn=!1,p=t.memoizedState,i.state=p,li(t,r,i,o);var y=t.memoizedState;l!==f||p!==y||Ve.current||tn?(typeof h=="function"&&(Pa(t,n,h,r),y=t.memoizedState),(c=tn||kd(t,n,c,r,p,y,a)||!1)?(u||typeof i.UNSAFE_componentWillUpdate!="function"&&typeof i.componentWillUpdate!="function"||(typeof i.componentWillUpdate=="function"&&i.componentWillUpdate(r,y,a),typeof i.UNSAFE_componentWillUpdate=="function"&&i.UNSAFE_componentWillUpdate(r,y,a)),typeof i.componentDidUpdate=="function"&&(t.flags|=4),typeof i.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof i.componentDidUpdate!="function"||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),typeof i.getSnapshotBeforeUpdate!="function"||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=y),i.props=r,i.state=y,i.context=a,r=c):(typeof i.componentDidUpdate!="function"||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),typeof i.getSnapshotBeforeUpdate!="function"||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),r=!1)}return $a(e,t,n,r,s,o)}function $a(e,t,n,r,o,s){Kh(e,t);var i=(t.flags&128)!==0;if(!r&&!i)return o&&hd(t,n,!1),Gt(e,t,s);r=t.stateNode,Ix.current=t;var l=i&&typeof n.getDerivedStateFromError!="function"?null:r.render();return t.flags|=1,e!==null&&i?(t.child=Nr(t,e.child,null,s),t.child=Nr(t,null,l,s)):Ae(e,t,l,s),t.memoizedState=r.state,o&&hd(t,n,!0),t.child}function Qh(e){var t=e.stateNode;t.pendingContext?pd(e,t.pendingContext,t.pendingContext!==t.context):t.context&&pd(e,t.context,!1),Bc(e,t.containerInfo)}function Td(e,t,n,r,o){return _r(),Ac(o),t.flags|=256,Ae(e,t,n,r),t.child}var La={dehydrated:null,treeContext:null,retryLane:0};function Ra(e){return{baseLanes:e,cachePool:null,transitions:null}}function qh(e,t,n){var r=t.pendingProps,o=ye.current,s=!1,i=(t.flags&128)!==0,l;if((l=i)||(l=e!==null&&e.memoizedState===null?!1:(o&2)!==0),l?(s=!0,t.flags&=-129):(e===null||e.memoizedState!==null)&&(o|=1),de(ye,o&1),e===null)return ja(t),e=t.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?(t.mode&1?e.data==="$!"?t.lanes=8:t.lanes=1073741824:t.lanes=1,null):(i=r.children,e=r.fallback,s?(r=t.mode,s=t.child,i={mode:"hidden",children:i},!(r&1)&&s!==null?(s.childLanes=0,s.pendingProps=i):s=Bi(i,r,0,null),e=An(e,r,n,null),s.return=t,e.return=t,s.sibling=e,t.child=s,t.child.memoizedState=Ra(n),t.memoizedState=La,e):Qc(t,i));if(o=e.memoizedState,o!==null&&(l=o.dehydrated,l!==null))return $x(e,t,i,r,l,o,n);if(s){s=r.fallback,i=t.mode,o=e.child,l=o.sibling;var a={mode:"hidden",children:r.children};return!(i&1)&&t.child!==o?(r=t.child,r.childLanes=0,r.pendingProps=a,t.deletions=null):(r=yn(o,a),r.subtreeFlags=o.subtreeFlags&14680064),l!==null?s=yn(l,s):(s=An(s,i,n,null),s.flags|=2),s.return=t,r.return=t,r.sibling=s,t.child=r,r=s,s=t.child,i=e.child.memoizedState,i=i===null?Ra(n):{baseLanes:i.baseLanes|n,cachePool:null,transitions:i.transitions},s.memoizedState=i,s.childLanes=e.childLanes&~n,t.memoizedState=La,r}return s=e.child,e=s.sibling,r=yn(s,{mode:"visible",children:r.children}),!(t.mode&1)&&(r.lanes=n),r.return=t,r.sibling=null,e!==null&&(n=t.deletions,n===null?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=r,t.memoizedState=null,r}function Qc(e,t){return t=Bi({mode:"visible",children:t},e.mode,0,null),t.return=e,e.child=t}function hs(e,t,n,r){return r!==null&&Ac(r),Nr(t,e.child,null,n),e=Qc(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function $x(e,t,n,r,o,s,i){if(n)return t.flags&256?(t.flags&=-257,r=Rl(Error(V(422))),hs(e,t,i,r)):t.memoizedState!==null?(t.child=e.child,t.flags|=128,null):(s=r.fallback,o=t.mode,r=Bi({mode:"visible",children:r.children},o,0,null),s=An(s,o,i,null),s.flags|=2,r.return=t,s.return=t,r.sibling=s,t.child=r,t.mode&1&&Nr(t,e.child,null,i),t.child.memoizedState=Ra(i),t.memoizedState=La,s);if(!(t.mode&1))return hs(e,t,i,null);if(o.data==="$!"){if(r=o.nextSibling&&o.nextSibling.dataset,r)var l=r.dgst;return r=l,s=Error(V(419)),r=Rl(s,r,void 0),hs(e,t,i,r)}if(l=(i&e.childLanes)!==0,He||l){if(r=be,r!==null){switch(i&-i){case 4:o=2;break;case 16:o=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:o=32;break;case 536870912:o=268435456;break;default:o=0}o=o&(r.suspendedLanes|i)?0:o,o!==0&&o!==s.retryLane&&(s.retryLane=o,Xt(e,o),vt(r,e,o,-1))}return nu(),r=Rl(Error(V(421))),hs(e,t,i,r)}return o.data==="$?"?(t.flags|=128,t.child=e.child,t=Yx.bind(null,e),o._reactRetry=t,null):(e=s.treeContext,Ge=pn(o.nextSibling),Ke=t,ge=!0,pt=null,e!==null&&(tt[nt++]=Ht,tt[nt++]=Bt,tt[nt++]=On,Ht=e.id,Bt=e.overflow,On=t),t=Qc(t,r.children),t.flags|=4096,t)}function Md(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),ba(e.return,t,n)}function Al(e,t,n,r,o){var s=e.memoizedState;s===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:o}:(s.isBackwards=t,s.rendering=null,s.renderingStartTime=0,s.last=r,s.tail=n,s.tailMode=o)}function Jh(e,t,n){var r=t.pendingProps,o=r.revealOrder,s=r.tail;if(Ae(e,t,r.children,n),r=ye.current,r&2)r=r&1|2,t.flags|=128;else{if(e!==null&&e.flags&128)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Md(e,n,t);else if(e.tag===19)Md(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(de(ye,r),!(t.mode&1))t.memoizedState=null;else switch(o){case"forwards":for(n=t.child,o=null;n!==null;)e=n.alternate,e!==null&&ai(e)===null&&(o=n),n=n.sibling;n=o,n===null?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),Al(t,!1,o,n,s);break;case"backwards":for(n=null,o=t.child,t.child=null;o!==null;){if(e=o.alternate,e!==null&&ai(e)===null){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}Al(t,!0,n,null,s);break;case"together":Al(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function As(e,t){!(t.mode&1)&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Gt(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),Bn|=t.lanes,!(n&t.childLanes))return null;if(e!==null&&t.child!==e.child)throw Error(V(153));if(t.child!==null){for(e=t.child,n=yn(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=yn(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function Lx(e,t,n){switch(t.tag){case 3:Qh(t),_r();break;case 5:Nh(t);break;case 1:We(t.type)&&ni(t);break;case 4:Bc(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,o=t.memoizedProps.value;de(si,r._currentValue),r._currentValue=o;break;case 13:if(r=t.memoizedState,r!==null)return r.dehydrated!==null?(de(ye,ye.current&1),t.flags|=128,null):n&t.child.childLanes?qh(e,t,n):(de(ye,ye.current&1),e=Gt(e,t,n),e!==null?e.sibling:null);de(ye,ye.current&1);break;case 19:if(r=(n&t.childLanes)!==0,e.flags&128){if(r)return Jh(e,t,n);t.flags|=128}if(o=t.memoizedState,o!==null&&(o.rendering=null,o.tail=null,o.lastEffect=null),de(ye,ye.current),r)break;return null;case 22:case 23:return t.lanes=0,Gh(e,t,n)}return Gt(e,t,n)}var Zh,Aa,em,tm;Zh=function(e,t){for(var n=t.child;n!==null;){if(n.tag===5||n.tag===6)e.appendChild(n.stateNode);else if(n.tag!==4&&n.child!==null){n.child.return=n,n=n.child;continue}if(n===t)break;for(;n.sibling===null;){if(n.return===null||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}};Aa=function(){};em=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,$n(Mt.current);var s=null;switch(n){case"input":o=oa(e,o),r=oa(e,r),s=[];break;case"select":o=xe({},o,{value:void 0}),r=xe({},r,{value:void 0}),s=[];break;case"textarea":o=la(e,o),r=la(e,r),s=[];break;default:typeof o.onClick!="function"&&typeof r.onClick=="function"&&(e.onclick=ei)}ca(n,r);var i;n=null;for(c in o)if(!r.hasOwnProperty(c)&&o.hasOwnProperty(c)&&o[c]!=null)if(c==="style"){var l=o[c];for(i in l)l.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else c!=="dangerouslySetInnerHTML"&&c!=="children"&&c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&c!=="autoFocus"&&(go.hasOwnProperty(c)?s||(s=[]):(s=s||[]).push(c,null));for(c in r){var a=r[c];if(l=o!=null?o[c]:void 0,r.hasOwnProperty(c)&&a!==l&&(a!=null||l!=null))if(c==="style")if(l){for(i in l)!l.hasOwnProperty(i)||a&&a.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in a)a.hasOwnProperty(i)&&l[i]!==a[i]&&(n||(n={}),n[i]=a[i])}else n||(s||(s=[]),s.push(c,n)),n=a;else c==="dangerouslySetInnerHTML"?(a=a?a.__html:void 0,l=l?l.__html:void 0,a!=null&&l!==a&&(s=s||[]).push(c,a)):c==="children"?typeof a!="string"&&typeof a!="number"||(s=s||[]).push(c,""+a):c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&(go.hasOwnProperty(c)?(a!=null&&c==="onScroll"&&fe("scroll",e),s||l===a||(s=[])):(s=s||[]).push(c,a))}n&&(s=s||[]).push("style",n);var c=s;(t.updateQueue=c)&&(t.flags|=4)}};tm=function(e,t,n,r){n!==r&&(t.flags|=4)};function Yr(e,t){if(!ge)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;n!==null;)n.alternate!==null&&(r=n),n=n.sibling;r===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null}}function $e(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,r=0;if(t)for(var o=e.child;o!==null;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags&14680064,r|=o.flags&14680064,o.return=e,o=o.sibling;else for(o=e.child;o!==null;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags,r|=o.flags,o.return=e,o=o.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Rx(e,t,n){var r=t.pendingProps;switch(Rc(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return $e(t),null;case 1:return We(t.type)&&ti(),$e(t),null;case 3:return r=t.stateNode,Er(),pe(Ve),pe(Re),Wc(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),(e===null||e.child===null)&&(fs(t)?t.flags|=4:e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,pt!==null&&(Wa(pt),pt=null))),Aa(e,t),$e(t),null;case 5:Vc(t);var o=$n(bo.current);if(n=t.type,e!==null&&t.stateNode!=null)em(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(t.stateNode===null)throw Error(V(166));return $e(t),null}if(e=$n(Mt.current),fs(t)){r=t.stateNode,n=t.type;var s=t.memoizedProps;switch(r[Pt]=t,r[Co]=s,e=(t.mode&1)!==0,n){case"dialog":fe("cancel",r),fe("close",r);break;case"iframe":case"object":case"embed":fe("load",r);break;case"video":case"audio":for(o=0;o<eo.length;o++)fe(eo[o],r);break;case"source":fe("error",r);break;case"img":case"image":case"link":fe("error",r),fe("load",r);break;case"details":fe("toggle",r);break;case"input":Ou(r,s),fe("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!s.multiple},fe("invalid",r);break;case"textarea":Bu(r,s),fe("invalid",r)}ca(n,s),o=null;for(var i in s)if(s.hasOwnProperty(i)){var l=s[i];i==="children"?typeof l=="string"?r.textContent!==l&&(s.suppressHydrationWarning!==!0&&ds(r.textContent,l,e),o=["children",l]):typeof l=="number"&&r.textContent!==""+l&&(s.suppressHydrationWarning!==!0&&ds(r.textContent,l,e),o=["children",""+l]):go.hasOwnProperty(i)&&l!=null&&i==="onScroll"&&fe("scroll",r)}switch(n){case"input":rs(r),Hu(r,s,!0);break;case"textarea":rs(r),Vu(r);break;case"select":case"option":break;default:typeof s.onClick=="function"&&(r.onclick=ei)}r=o,t.updateQueue=r,r!==null&&(t.flags|=4)}else{i=o.nodeType===9?o:o.ownerDocument,e==="http://www.w3.org/1999/xhtml"&&(e=Pp(n)),e==="http://www.w3.org/1999/xhtml"?n==="script"?(e=i.createElement("div"),e.innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=i.createElement(n,{is:r.is}):(e=i.createElement(n),n==="select"&&(i=e,r.multiple?i.multiple=!0:r.size&&(i.size=r.size))):e=i.createElementNS(e,n),e[Pt]=t,e[Co]=r,Zh(e,t,!1,!1),t.stateNode=e;e:{switch(i=ua(n,r),n){case"dialog":fe("cancel",e),fe("close",e),o=r;break;case"iframe":case"object":case"embed":fe("load",e),o=r;break;case"video":case"audio":for(o=0;o<eo.length;o++)fe(eo[o],e);o=r;break;case"source":fe("error",e),o=r;break;case"img":case"image":case"link":fe("error",e),fe("load",e),o=r;break;case"details":fe("toggle",e),o=r;break;case"input":Ou(e,r),o=oa(e,r),fe("invalid",e);break;case"option":o=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=xe({},r,{value:void 0}),fe("invalid",e);break;case"textarea":Bu(e,r),o=la(e,r),fe("invalid",e);break;default:o=r}ca(n,o),l=o;for(s in l)if(l.hasOwnProperty(s)){var a=l[s];s==="style"?Ip(e,a):s==="dangerouslySetInnerHTML"?(a=a?a.__html:void 0,a!=null&&Tp(e,a)):s==="children"?typeof a=="string"?(n!=="textarea"||a!=="")&&yo(e,a):typeof a=="number"&&yo(e,""+a):s!=="suppressContentEditableWarning"&&s!=="suppressHydrationWarning"&&s!=="autoFocus"&&(go.hasOwnProperty(s)?a!=null&&s==="onScroll"&&fe("scroll",e):a!=null&&wc(e,s,a,i))}switch(n){case"input":rs(e),Hu(e,r,!1);break;case"textarea":rs(e),Vu(e);break;case"option":r.value!=null&&e.setAttribute("value",""+xn(r.value));break;case"select":e.multiple=!!r.multiple,s=r.value,s!=null?pr(e,!!r.multiple,s,!1):r.defaultValue!=null&&pr(e,!!r.multiple,r.defaultValue,!0);break;default:typeof o.onClick=="function"&&(e.onclick=ei)}switch(n){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(t.flags|=4)}t.ref!==null&&(t.flags|=512,t.flags|=2097152)}return $e(t),null;case 6:if(e&&t.stateNode!=null)tm(e,t,e.memoizedProps,r);else{if(typeof r!="string"&&t.stateNode===null)throw Error(V(166));if(n=$n(bo.current),$n(Mt.current),fs(t)){if(r=t.stateNode,n=t.memoizedProps,r[Pt]=t,(s=r.nodeValue!==n)&&(e=Ke,e!==null))switch(e.tag){case 3:ds(r.nodeValue,n,(e.mode&1)!==0);break;case 5:e.memoizedProps.suppressHydrationWarning!==!0&&ds(r.nodeValue,n,(e.mode&1)!==0)}s&&(t.flags|=4)}else r=(n.nodeType===9?n:n.ownerDocument).createTextNode(r),r[Pt]=t,t.stateNode=r}return $e(t),null;case 13:if(pe(ye),r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(ge&&Ge!==null&&t.mode&1&&!(t.flags&128))xh(),_r(),t.flags|=98560,s=!1;else if(s=fs(t),r!==null&&r.dehydrated!==null){if(e===null){if(!s)throw Error(V(318));if(s=t.memoizedState,s=s!==null?s.dehydrated:null,!s)throw Error(V(317));s[Pt]=t}else _r(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;$e(t),s=!1}else pt!==null&&(Wa(pt),pt=null),s=!0;if(!s)return t.flags&65536?t:null}return t.flags&128?(t.lanes=n,t):(r=r!==null,r!==(e!==null&&e.memoizedState!==null)&&r&&(t.child.flags|=8192,t.mode&1&&(e===null||ye.current&1?Ce===0&&(Ce=3):nu())),t.updateQueue!==null&&(t.flags|=4),$e(t),null);case 4:return Er(),Aa(e,t),e===null&&No(t.stateNode.containerInfo),$e(t),null;case 10:return Fc(t.type._context),$e(t),null;case 17:return We(t.type)&&ti(),$e(t),null;case 19:if(pe(ye),s=t.memoizedState,s===null)return $e(t),null;if(r=(t.flags&128)!==0,i=s.rendering,i===null)if(r)Yr(s,!1);else{if(Ce!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(i=ai(e),i!==null){for(t.flags|=128,Yr(s,!1),r=i.updateQueue,r!==null&&(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;n!==null;)s=n,e=r,s.flags&=14680066,i=s.alternate,i===null?(s.childLanes=0,s.lanes=e,s.child=null,s.subtreeFlags=0,s.memoizedProps=null,s.memoizedState=null,s.updateQueue=null,s.dependencies=null,s.stateNode=null):(s.childLanes=i.childLanes,s.lanes=i.lanes,s.child=i.child,s.subtreeFlags=0,s.deletions=null,s.memoizedProps=i.memoizedProps,s.memoizedState=i.memoizedState,s.updateQueue=i.updateQueue,s.type=i.type,e=i.dependencies,s.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return de(ye,ye.current&1|2),t.child}e=e.sibling}s.tail!==null&&ke()>jr&&(t.flags|=128,r=!0,Yr(s,!1),t.lanes=4194304)}else{if(!r)if(e=ai(i),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Yr(s,!0),s.tail===null&&s.tailMode==="hidden"&&!i.alternate&&!ge)return $e(t),null}else 2*ke()-s.renderingStartTime>jr&&n!==1073741824&&(t.flags|=128,r=!0,Yr(s,!1),t.lanes=4194304);s.isBackwards?(i.sibling=t.child,t.child=i):(n=s.last,n!==null?n.sibling=i:t.child=i,s.last=i)}return s.tail!==null?(t=s.tail,s.rendering=t,s.tail=t.sibling,s.renderingStartTime=ke(),t.sibling=null,n=ye.current,de(ye,r?n&1|2:n&1),t):($e(t),null);case 22:case 23:return tu(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?Ye&1073741824&&($e(t),t.subtreeFlags&6&&(t.flags|=8192)):$e(t),null;case 24:return null;case 25:return null}throw Error(V(156,t.tag))}function Ax(e,t){switch(Rc(t),t.tag){case 1:return We(t.type)&&ti(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Er(),pe(Ve),pe(Re),Wc(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Vc(t),null;case 13:if(pe(ye),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(V(340));_r()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return pe(ye),null;case 4:return Er(),null;case 10:return Fc(t.type._context),null;case 22:case 23:return tu(),null;case 24:return null;default:return null}}var ms=!1,Le=!1,Dx=typeof WeakSet=="function"?WeakSet:Set,X=null;function ur(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Se(e,t,r)}else n.current=null}function Da(e,t,n){try{n()}catch(r){Se(e,t,r)}}var Id=!1;function zx(e,t){if(wa=qs,e=ih(),$c(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var o=r.anchorOffset,s=r.focusNode;r=r.focusOffset;try{n.nodeType,s.nodeType}catch{n=null;break e}var i=0,l=-1,a=-1,c=0,u=0,f=e,p=null;t:for(;;){for(var h;f!==n||o!==0&&f.nodeType!==3||(l=i+o),f!==s||r!==0&&f.nodeType!==3||(a=i+r),f.nodeType===3&&(i+=f.nodeValue.length),(h=f.firstChild)!==null;)p=f,f=h;for(;;){if(f===e)break t;if(p===n&&++c===o&&(l=i),p===s&&++u===r&&(a=i),(h=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=h}n=l===-1||a===-1?null:{start:l,end:a}}else n=null}n=n||{start:0,end:0}}else n=null;for(Sa={focusedElem:e,selectionRange:n},qs=!1,X=t;X!==null;)if(t=X,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,X=e;else for(;X!==null;){t=X;try{var y=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(y!==null){var x=y.memoizedProps,k=y.memoizedState,m=t.stateNode,v=m.getSnapshotBeforeUpdate(t.elementType===t.type?x:ut(t.type,x),k);m.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var g=t.stateNode.containerInfo;g.nodeType===1?g.textContent="":g.nodeType===9&&g.documentElement&&g.removeChild(g.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(V(163))}}catch(w){Se(t,t.return,w)}if(e=t.sibling,e!==null){e.return=t.return,X=e;break}X=t.return}return y=Id,Id=!1,y}function uo(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var o=r=r.next;do{if((o.tag&e)===e){var s=o.destroy;o.destroy=void 0,s!==void 0&&Da(t,n,s)}o=o.next}while(o!==r)}}function Oi(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function za(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function nm(e){var t=e.alternate;t!==null&&(e.alternate=null,nm(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Pt],delete t[Co],delete t[Na],delete t[wx],delete t[Sx])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function rm(e){return e.tag===5||e.tag===3||e.tag===4}function $d(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||rm(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Fa(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=ei));else if(r!==4&&(e=e.child,e!==null))for(Fa(e,t,n),e=e.sibling;e!==null;)Fa(e,t,n),e=e.sibling}function Oa(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Oa(e,t,n),e=e.sibling;e!==null;)Oa(e,t,n),e=e.sibling}var Pe=null,dt=!1;function qt(e,t,n){for(n=n.child;n!==null;)om(e,t,n),n=n.sibling}function om(e,t,n){if(Tt&&typeof Tt.onCommitFiberUnmount=="function")try{Tt.onCommitFiberUnmount(Ii,n)}catch{}switch(n.tag){case 5:Le||ur(n,t);case 6:var r=Pe,o=dt;Pe=null,qt(e,t,n),Pe=r,dt=o,Pe!==null&&(dt?(e=Pe,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Pe.removeChild(n.stateNode));break;case 18:Pe!==null&&(dt?(e=Pe,n=n.stateNode,e.nodeType===8?Pl(e.parentNode,n):e.nodeType===1&&Pl(e,n),So(e)):Pl(Pe,n.stateNode));break;case 4:r=Pe,o=dt,Pe=n.stateNode.containerInfo,dt=!0,qt(e,t,n),Pe=r,dt=o;break;case 0:case 11:case 14:case 15:if(!Le&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){o=r=r.next;do{var s=o,i=s.destroy;s=s.tag,i!==void 0&&(s&2||s&4)&&Da(n,t,i),o=o.next}while(o!==r)}qt(e,t,n);break;case 1:if(!Le&&(ur(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(l){Se(n,t,l)}qt(e,t,n);break;case 21:qt(e,t,n);break;case 22:n.mode&1?(Le=(r=Le)||n.memoizedState!==null,qt(e,t,n),Le=r):qt(e,t,n);break;default:qt(e,t,n)}}function Ld(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Dx),t.forEach(function(r){var o=Xx.bind(null,e,r);n.has(r)||(n.add(r),r.then(o,o))})}}function at(e,t){var n=t.deletions;if(n!==null)for(var r=0;r<n.length;r++){var o=n[r];try{var s=e,i=t,l=i;e:for(;l!==null;){switch(l.tag){case 5:Pe=l.stateNode,dt=!1;break e;case 3:Pe=l.stateNode.containerInfo,dt=!0;break e;case 4:Pe=l.stateNode.containerInfo,dt=!0;break e}l=l.return}if(Pe===null)throw Error(V(160));om(s,i,o),Pe=null,dt=!1;var a=o.alternate;a!==null&&(a.return=null),o.return=null}catch(c){Se(o,t,c)}}if(t.subtreeFlags&12854)for(t=t.child;t!==null;)sm(t,e),t=t.sibling}function sm(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(at(t,e),Et(e),r&4){try{uo(3,e,e.return),Oi(3,e)}catch(x){Se(e,e.return,x)}try{uo(5,e,e.return)}catch(x){Se(e,e.return,x)}}break;case 1:at(t,e),Et(e),r&512&&n!==null&&ur(n,n.return);break;case 5:if(at(t,e),Et(e),r&512&&n!==null&&ur(n,n.return),e.flags&32){var o=e.stateNode;try{yo(o,"")}catch(x){Se(e,e.return,x)}}if(r&4&&(o=e.stateNode,o!=null)){var s=e.memoizedProps,i=n!==null?n.memoizedProps:s,l=e.type,a=e.updateQueue;if(e.updateQueue=null,a!==null)try{l==="input"&&s.type==="radio"&&s.name!=null&&jp(o,s),ua(l,i);var c=ua(l,s);for(i=0;i<a.length;i+=2){var u=a[i],f=a[i+1];u==="style"?Ip(o,f):u==="dangerouslySetInnerHTML"?Tp(o,f):u==="children"?yo(o,f):wc(o,u,f,c)}switch(l){case"input":sa(o,s);break;case"textarea":bp(o,s);break;case"select":var p=o._wrapperState.wasMultiple;o._wrapperState.wasMultiple=!!s.multiple;var h=s.value;h!=null?pr(o,!!s.multiple,h,!1):p!==!!s.multiple&&(s.defaultValue!=null?pr(o,!!s.multiple,s.defaultValue,!0):pr(o,!!s.multiple,s.multiple?[]:"",!1))}o[Co]=s}catch(x){Se(e,e.return,x)}}break;case 6:if(at(t,e),Et(e),r&4){if(e.stateNode===null)throw Error(V(162));o=e.stateNode,s=e.memoizedProps;try{o.nodeValue=s}catch(x){Se(e,e.return,x)}}break;case 3:if(at(t,e),Et(e),r&4&&n!==null&&n.memoizedState.isDehydrated)try{So(t.containerInfo)}catch(x){Se(e,e.return,x)}break;case 4:at(t,e),Et(e);break;case 13:at(t,e),Et(e),o=e.child,o.flags&8192&&(s=o.memoizedState!==null,o.stateNode.isHidden=s,!s||o.alternate!==null&&o.alternate.memoizedState!==null||(Zc=ke())),r&4&&Ld(e);break;case 22:if(u=n!==null&&n.memoizedState!==null,e.mode&1?(Le=(c=Le)||u,at(t,e),Le=c):at(t,e),Et(e),r&8192){if(c=e.memoizedState!==null,(e.stateNode.isHidden=c)&&!u&&e.mode&1)for(X=e,u=e.child;u!==null;){for(f=X=u;X!==null;){switch(p=X,h=p.child,p.tag){case 0:case 11:case 14:case 15:uo(4,p,p.return);break;case 1:ur(p,p.return);var y=p.stateNode;if(typeof y.componentWillUnmount=="function"){r=p,n=p.return;try{t=r,y.props=t.memoizedProps,y.state=t.memoizedState,y.componentWillUnmount()}catch(x){Se(r,n,x)}}break;case 5:ur(p,p.return);break;case 22:if(p.memoizedState!==null){Ad(f);continue}}h!==null?(h.return=p,X=h):Ad(f)}u=u.sibling}e:for(u=null,f=e;;){if(f.tag===5){if(u===null){u=f;try{o=f.stateNode,c?(s=o.style,typeof s.setProperty=="function"?s.setProperty("display","none","important"):s.display="none"):(l=f.stateNode,a=f.memoizedProps.style,i=a!=null&&a.hasOwnProperty("display")?a.display:null,l.style.display=Mp("display",i))}catch(x){Se(e,e.return,x)}}}else if(f.tag===6){if(u===null)try{f.stateNode.nodeValue=c?"":f.memoizedProps}catch(x){Se(e,e.return,x)}}else if((f.tag!==22&&f.tag!==23||f.memoizedState===null||f===e)&&f.child!==null){f.child.return=f,f=f.child;continue}if(f===e)break e;for(;f.sibling===null;){if(f.return===null||f.return===e)break e;u===f&&(u=null),f=f.return}u===f&&(u=null),f.sibling.return=f.return,f=f.sibling}}break;case 19:at(t,e),Et(e),r&4&&Ld(e);break;case 21:break;default:at(t,e),Et(e)}}function Et(e){var t=e.flags;if(t&2){try{e:{for(var n=e.return;n!==null;){if(rm(n)){var r=n;break e}n=n.return}throw Error(V(160))}switch(r.tag){case 5:var o=r.stateNode;r.flags&32&&(yo(o,""),r.flags&=-33);var s=$d(e);Oa(e,s,o);break;case 3:case 4:var i=r.stateNode.containerInfo,l=$d(e);Fa(e,l,i);break;default:throw Error(V(161))}}catch(a){Se(e,e.return,a)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function Fx(e,t,n){X=e,im(e)}function im(e,t,n){for(var r=(e.mode&1)!==0;X!==null;){var o=X,s=o.child;if(o.tag===22&&r){var i=o.memoizedState!==null||ms;if(!i){var l=o.alternate,a=l!==null&&l.memoizedState!==null||Le;l=ms;var c=Le;if(ms=i,(Le=a)&&!c)for(X=o;X!==null;)i=X,a=i.child,i.tag===22&&i.memoizedState!==null?Dd(o):a!==null?(a.return=i,X=a):Dd(o);for(;s!==null;)X=s,im(s),s=s.sibling;X=o,ms=l,Le=c}Rd(e)}else o.subtreeFlags&8772&&s!==null?(s.return=o,X=s):Rd(e)}}function Rd(e){for(;X!==null;){var t=X;if(t.flags&8772){var n=t.alternate;try{if(t.flags&8772)switch(t.tag){case 0:case 11:case 15:Le||Oi(5,t);break;case 1:var r=t.stateNode;if(t.flags&4&&!Le)if(n===null)r.componentDidMount();else{var o=t.elementType===t.type?n.memoizedProps:ut(t.type,n.memoizedProps);r.componentDidUpdate(o,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var s=t.updateQueue;s!==null&&xd(t,s,r);break;case 3:var i=t.updateQueue;if(i!==null){if(n=null,t.child!==null)switch(t.child.tag){case 5:n=t.child.stateNode;break;case 1:n=t.child.stateNode}xd(t,i,n)}break;case 5:var l=t.stateNode;if(n===null&&t.flags&4){n=l;var a=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":a.autoFocus&&n.focus();break;case"img":a.src&&(n.src=a.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(t.memoizedState===null){var c=t.alternate;if(c!==null){var u=c.memoizedState;if(u!==null){var f=u.dehydrated;f!==null&&So(f)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(V(163))}Le||t.flags&512&&za(t)}catch(p){Se(t,t.return,p)}}if(t===e){X=null;break}if(n=t.sibling,n!==null){n.return=t.return,X=n;break}X=t.return}}function Ad(e){for(;X!==null;){var t=X;if(t===e){X=null;break}var n=t.sibling;if(n!==null){n.return=t.return,X=n;break}X=t.return}}function Dd(e){for(;X!==null;){var t=X;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{Oi(4,t)}catch(a){Se(t,n,a)}break;case 1:var r=t.stateNode;if(typeof r.componentDidMount=="function"){var o=t.return;try{r.componentDidMount()}catch(a){Se(t,o,a)}}var s=t.return;try{za(t)}catch(a){Se(t,s,a)}break;case 5:var i=t.return;try{za(t)}catch(a){Se(t,i,a)}}}catch(a){Se(t,t.return,a)}if(t===e){X=null;break}var l=t.sibling;if(l!==null){l.return=t.return,X=l;break}X=t.return}}var Ox=Math.ceil,di=Qt.ReactCurrentDispatcher,qc=Qt.ReactCurrentOwner,ot=Qt.ReactCurrentBatchConfig,le=0,be=null,_e=null,Te=0,Ye=0,dr=kn(0),Ce=0,Io=null,Bn=0,Hi=0,Jc=0,fo=null,Oe=null,Zc=0,jr=1/0,Ft=null,fi=!1,Ha=null,mn=null,gs=!1,an=null,pi=0,po=0,Ba=null,Ds=-1,zs=0;function De(){return le&6?ke():Ds!==-1?Ds:Ds=ke()}function gn(e){return e.mode&1?le&2&&Te!==0?Te&-Te:_x.transition!==null?(zs===0&&(zs=Wp()),zs):(e=ue,e!==0||(e=window.event,e=e===void 0?16:qp(e.type)),e):1}function vt(e,t,n,r){if(50<po)throw po=0,Ba=null,Error(V(185));Vo(e,n,r),(!(le&2)||e!==be)&&(e===be&&(!(le&2)&&(Hi|=n),Ce===4&&on(e,Te)),Ue(e,r),n===1&&le===0&&!(t.mode&1)&&(jr=ke()+500,Di&&_n()))}function Ue(e,t){var n=e.callbackNode;_v(e,t);var r=Qs(e,e===be?Te:0);if(r===0)n!==null&&Yu(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(n!=null&&Yu(n),t===1)e.tag===0?kx(zd.bind(null,e)):gh(zd.bind(null,e)),vx(function(){!(le&6)&&_n()}),n=null;else{switch(Up(r)){case 1:n=Ec;break;case 4:n=Bp;break;case 16:n=Ks;break;case 536870912:n=Vp;break;default:n=Ks}n=hm(n,lm.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function lm(e,t){if(Ds=-1,zs=0,le&6)throw Error(V(327));var n=e.callbackNode;if(vr()&&e.callbackNode!==n)return null;var r=Qs(e,e===be?Te:0);if(r===0)return null;if(r&30||r&e.expiredLanes||t)t=hi(e,r);else{t=r;var o=le;le|=2;var s=cm();(be!==e||Te!==t)&&(Ft=null,jr=ke()+500,Rn(e,t));do try{Vx();break}catch(l){am(e,l)}while(!0);zc(),di.current=s,le=o,_e!==null?t=0:(be=null,Te=0,t=Ce)}if(t!==0){if(t===2&&(o=ma(e),o!==0&&(r=o,t=Va(e,o))),t===1)throw n=Io,Rn(e,0),on(e,r),Ue(e,ke()),n;if(t===6)on(e,r);else{if(o=e.current.alternate,!(r&30)&&!Hx(o)&&(t=hi(e,r),t===2&&(s=ma(e),s!==0&&(r=s,t=Va(e,s))),t===1))throw n=Io,Rn(e,0),on(e,r),Ue(e,ke()),n;switch(e.finishedWork=o,e.finishedLanes=r,t){case 0:case 1:throw Error(V(345));case 2:Pn(e,Oe,Ft);break;case 3:if(on(e,r),(r&130023424)===r&&(t=Zc+500-ke(),10<t)){if(Qs(e,0)!==0)break;if(o=e.suspendedLanes,(o&r)!==r){De(),e.pingedLanes|=e.suspendedLanes&o;break}e.timeoutHandle=_a(Pn.bind(null,e,Oe,Ft),t);break}Pn(e,Oe,Ft);break;case 4:if(on(e,r),(r&4194240)===r)break;for(t=e.eventTimes,o=-1;0<r;){var i=31-yt(r);s=1<<i,i=t[i],i>o&&(o=i),r&=~s}if(r=o,r=ke()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Ox(r/1960))-r,10<r){e.timeoutHandle=_a(Pn.bind(null,e,Oe,Ft),r);break}Pn(e,Oe,Ft);break;case 5:Pn(e,Oe,Ft);break;default:throw Error(V(329))}}}return Ue(e,ke()),e.callbackNode===n?lm.bind(null,e):null}function Va(e,t){var n=fo;return e.current.memoizedState.isDehydrated&&(Rn(e,t).flags|=256),e=hi(e,t),e!==2&&(t=Oe,Oe=n,t!==null&&Wa(t)),e}function Wa(e){Oe===null?Oe=e:Oe.push.apply(Oe,e)}function Hx(e){for(var t=e;;){if(t.flags&16384){var n=t.updateQueue;if(n!==null&&(n=n.stores,n!==null))for(var r=0;r<n.length;r++){var o=n[r],s=o.getSnapshot;o=o.value;try{if(!xt(s(),o))return!1}catch{return!1}}}if(n=t.child,t.subtreeFlags&16384&&n!==null)n.return=t,t=n;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function on(e,t){for(t&=~Jc,t&=~Hi,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-yt(t),r=1<<n;e[n]=-1,t&=~r}}function zd(e){if(le&6)throw Error(V(327));vr();var t=Qs(e,0);if(!(t&1))return Ue(e,ke()),null;var n=hi(e,t);if(e.tag!==0&&n===2){var r=ma(e);r!==0&&(t=r,n=Va(e,r))}if(n===1)throw n=Io,Rn(e,0),on(e,t),Ue(e,ke()),n;if(n===6)throw Error(V(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,Pn(e,Oe,Ft),Ue(e,ke()),null}function eu(e,t){var n=le;le|=1;try{return e(t)}finally{le=n,le===0&&(jr=ke()+500,Di&&_n())}}function Vn(e){an!==null&&an.tag===0&&!(le&6)&&vr();var t=le;le|=1;var n=ot.transition,r=ue;try{if(ot.transition=null,ue=1,e)return e()}finally{ue=r,ot.transition=n,le=t,!(le&6)&&_n()}}function tu(){Ye=dr.current,pe(dr)}function Rn(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(n!==-1&&(e.timeoutHandle=-1,yx(n)),_e!==null)for(n=_e.return;n!==null;){var r=n;switch(Rc(r),r.tag){case 1:r=r.type.childContextTypes,r!=null&&ti();break;case 3:Er(),pe(Ve),pe(Re),Wc();break;case 5:Vc(r);break;case 4:Er();break;case 13:pe(ye);break;case 19:pe(ye);break;case 10:Fc(r.type._context);break;case 22:case 23:tu()}n=n.return}if(be=e,_e=e=yn(e.current,null),Te=Ye=t,Ce=0,Io=null,Jc=Hi=Bn=0,Oe=fo=null,In!==null){for(t=0;t<In.length;t++)if(n=In[t],r=n.interleaved,r!==null){n.interleaved=null;var o=r.next,s=n.pending;if(s!==null){var i=s.next;s.next=o,r.next=i}n.pending=r}In=null}return e}function am(e,t){do{var n=_e;try{if(zc(),Ls.current=ui,ci){for(var r=ve.memoizedState;r!==null;){var o=r.queue;o!==null&&(o.pending=null),r=r.next}ci=!1}if(Hn=0,je=Ee=ve=null,co=!1,Po=0,qc.current=null,n===null||n.return===null){Ce=1,Io=t,_e=null;break}e:{var s=e,i=n.return,l=n,a=t;if(t=Te,l.flags|=32768,a!==null&&typeof a=="object"&&typeof a.then=="function"){var c=a,u=l,f=u.tag;if(!(u.mode&1)&&(f===0||f===11||f===15)){var p=u.alternate;p?(u.updateQueue=p.updateQueue,u.memoizedState=p.memoizedState,u.lanes=p.lanes):(u.updateQueue=null,u.memoizedState=null)}var h=Ed(i);if(h!==null){h.flags&=-257,Cd(h,i,l,s,t),h.mode&1&&Nd(s,c,t),t=h,a=c;var y=t.updateQueue;if(y===null){var x=new Set;x.add(a),t.updateQueue=x}else y.add(a);break e}else{if(!(t&1)){Nd(s,c,t),nu();break e}a=Error(V(426))}}else if(ge&&l.mode&1){var k=Ed(i);if(k!==null){!(k.flags&65536)&&(k.flags|=256),Cd(k,i,l,s,t),Ac(Cr(a,l));break e}}s=a=Cr(a,l),Ce!==4&&(Ce=2),fo===null?fo=[s]:fo.push(s),s=i;do{switch(s.tag){case 3:s.flags|=65536,t&=-t,s.lanes|=t;var m=Uh(s,a,t);vd(s,m);break e;case 1:l=a;var v=s.type,g=s.stateNode;if(!(s.flags&128)&&(typeof v.getDerivedStateFromError=="function"||g!==null&&typeof g.componentDidCatch=="function"&&(mn===null||!mn.has(g)))){s.flags|=65536,t&=-t,s.lanes|=t;var w=Yh(s,l,t);vd(s,w);break e}}s=s.return}while(s!==null)}dm(n)}catch(j){t=j,_e===n&&n!==null&&(_e=n=n.return);continue}break}while(!0)}function cm(){var e=di.current;return di.current=ui,e===null?ui:e}function nu(){(Ce===0||Ce===3||Ce===2)&&(Ce=4),be===null||!(Bn&268435455)&&!(Hi&268435455)||on(be,Te)}function hi(e,t){var n=le;le|=2;var r=cm();(be!==e||Te!==t)&&(Ft=null,Rn(e,t));do try{Bx();break}catch(o){am(e,o)}while(!0);if(zc(),le=n,di.current=r,_e!==null)throw Error(V(261));return be=null,Te=0,Ce}function Bx(){for(;_e!==null;)um(_e)}function Vx(){for(;_e!==null&&!hv();)um(_e)}function um(e){var t=pm(e.alternate,e,Ye);e.memoizedProps=e.pendingProps,t===null?dm(e):_e=t,qc.current=null}function dm(e){var t=e;do{var n=t.alternate;if(e=t.return,t.flags&32768){if(n=Ax(n,t),n!==null){n.flags&=32767,_e=n;return}if(e!==null)e.flags|=32768,e.subtreeFlags=0,e.deletions=null;else{Ce=6,_e=null;return}}else if(n=Rx(n,t,Ye),n!==null){_e=n;return}if(t=t.sibling,t!==null){_e=t;return}_e=t=e}while(t!==null);Ce===0&&(Ce=5)}function Pn(e,t,n){var r=ue,o=ot.transition;try{ot.transition=null,ue=1,Wx(e,t,n,r)}finally{ot.transition=o,ue=r}return null}function Wx(e,t,n,r){do vr();while(an!==null);if(le&6)throw Error(V(327));n=e.finishedWork;var o=e.finishedLanes;if(n===null)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(V(177));e.callbackNode=null,e.callbackPriority=0;var s=n.lanes|n.childLanes;if(Nv(e,s),e===be&&(_e=be=null,Te=0),!(n.subtreeFlags&2064)&&!(n.flags&2064)||gs||(gs=!0,hm(Ks,function(){return vr(),null})),s=(n.flags&15990)!==0,n.subtreeFlags&15990||s){s=ot.transition,ot.transition=null;var i=ue;ue=1;var l=le;le|=4,qc.current=null,zx(e,n),sm(n,e),ux(Sa),qs=!!wa,Sa=wa=null,e.current=n,Fx(n),mv(),le=l,ue=i,ot.transition=s}else e.current=n;if(gs&&(gs=!1,an=e,pi=o),s=e.pendingLanes,s===0&&(mn=null),vv(n.stateNode),Ue(e,ke()),t!==null)for(r=e.onRecoverableError,n=0;n<t.length;n++)o=t[n],r(o.value,{componentStack:o.stack,digest:o.digest});if(fi)throw fi=!1,e=Ha,Ha=null,e;return pi&1&&e.tag!==0&&vr(),s=e.pendingLanes,s&1?e===Ba?po++:(po=0,Ba=e):po=0,_n(),null}function vr(){if(an!==null){var e=Up(pi),t=ot.transition,n=ue;try{if(ot.transition=null,ue=16>e?16:e,an===null)var r=!1;else{if(e=an,an=null,pi=0,le&6)throw Error(V(331));var o=le;for(le|=4,X=e.current;X!==null;){var s=X,i=s.child;if(X.flags&16){var l=s.deletions;if(l!==null){for(var a=0;a<l.length;a++){var c=l[a];for(X=c;X!==null;){var u=X;switch(u.tag){case 0:case 11:case 15:uo(8,u,s)}var f=u.child;if(f!==null)f.return=u,X=f;else for(;X!==null;){u=X;var p=u.sibling,h=u.return;if(nm(u),u===c){X=null;break}if(p!==null){p.return=h,X=p;break}X=h}}}var y=s.alternate;if(y!==null){var x=y.child;if(x!==null){y.child=null;do{var k=x.sibling;x.sibling=null,x=k}while(x!==null)}}X=s}}if(s.subtreeFlags&2064&&i!==null)i.return=s,X=i;else e:for(;X!==null;){if(s=X,s.flags&2048)switch(s.tag){case 0:case 11:case 15:uo(9,s,s.return)}var m=s.sibling;if(m!==null){m.return=s.return,X=m;break e}X=s.return}}var v=e.current;for(X=v;X!==null;){i=X;var g=i.child;if(i.subtreeFlags&2064&&g!==null)g.return=i,X=g;else e:for(i=v;X!==null;){if(l=X,l.flags&2048)try{switch(l.tag){case 0:case 11:case 15:Oi(9,l)}}catch(j){Se(l,l.return,j)}if(l===i){X=null;break e}var w=l.sibling;if(w!==null){w.return=l.return,X=w;break e}X=l.return}}if(le=o,_n(),Tt&&typeof Tt.onPostCommitFiberRoot=="function")try{Tt.onPostCommitFiberRoot(Ii,e)}catch{}r=!0}return r}finally{ue=n,ot.transition=t}}return!1}function Fd(e,t,n){t=Cr(n,t),t=Uh(e,t,1),e=hn(e,t,1),t=De(),e!==null&&(Vo(e,1,t),Ue(e,t))}function Se(e,t,n){if(e.tag===3)Fd(e,e,n);else for(;t!==null;){if(t.tag===3){Fd(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof r.componentDidCatch=="function"&&(mn===null||!mn.has(r))){e=Cr(n,e),e=Yh(t,e,1),t=hn(t,e,1),e=De(),t!==null&&(Vo(t,1,e),Ue(t,e));break}}t=t.return}}function Ux(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),t=De(),e.pingedLanes|=e.suspendedLanes&n,be===e&&(Te&n)===n&&(Ce===4||Ce===3&&(Te&130023424)===Te&&500>ke()-Zc?Rn(e,0):Jc|=n),Ue(e,t)}function fm(e,t){t===0&&(e.mode&1?(t=is,is<<=1,!(is&130023424)&&(is=4194304)):t=1);var n=De();e=Xt(e,t),e!==null&&(Vo(e,t,n),Ue(e,n))}function Yx(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),fm(e,n)}function Xx(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;o!==null&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(V(314))}r!==null&&r.delete(t),fm(e,n)}var pm;pm=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||Ve.current)He=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return He=!1,Lx(e,t,n);He=!!(e.flags&131072)}else He=!1,ge&&t.flags&1048576&&yh(t,oi,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;As(e,t),e=t.pendingProps;var o=kr(t,Re.current);yr(t,n),o=Yc(null,t,r,e,o,n);var s=Xc();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,We(r)?(s=!0,ni(t)):s=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,Hc(t),o.updater=Fi,t.stateNode=o,o._reactInternals=t,Ta(t,r,e,n),t=$a(null,t,r,!0,s,n)):(t.tag=0,ge&&s&&Lc(t),Ae(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(As(e,t),e=t.pendingProps,o=r._init,r=o(r._payload),t.type=r,o=t.tag=Kx(r),e=ut(r,e),o){case 0:t=Ia(null,t,r,e,n);break e;case 1:t=Pd(null,t,r,e,n);break e;case 11:t=jd(null,t,r,e,n);break e;case 14:t=bd(null,t,r,ut(r.type,e),n);break e}throw Error(V(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:ut(r,o),Ia(e,t,r,o,n);case 1:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:ut(r,o),Pd(e,t,r,o,n);case 3:e:{if(Qh(t),e===null)throw Error(V(387));r=t.pendingProps,s=t.memoizedState,o=s.element,_h(e,t),li(t,r,null,n);var i=t.memoizedState;if(r=i.element,s.isDehydrated)if(s={element:r,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=s,t.memoizedState=s,t.flags&256){o=Cr(Error(V(423)),t),t=Td(e,t,r,n,o);break e}else if(r!==o){o=Cr(Error(V(424)),t),t=Td(e,t,r,n,o);break e}else for(Ge=pn(t.stateNode.containerInfo.firstChild),Ke=t,ge=!0,pt=null,n=Sh(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(_r(),r===o){t=Gt(e,t,n);break e}Ae(e,t,r,n)}t=t.child}return t;case 5:return Nh(t),e===null&&ja(t),r=t.type,o=t.pendingProps,s=e!==null?e.memoizedProps:null,i=o.children,ka(r,o)?i=null:s!==null&&ka(r,s)&&(t.flags|=32),Kh(e,t),Ae(e,t,i,n),t.child;case 6:return e===null&&ja(t),null;case 13:return qh(e,t,n);case 4:return Bc(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Nr(t,null,r,n):Ae(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:ut(r,o),jd(e,t,r,o,n);case 7:return Ae(e,t,t.pendingProps,n),t.child;case 8:return Ae(e,t,t.pendingProps.children,n),t.child;case 12:return Ae(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,s=t.memoizedProps,i=o.value,de(si,r._currentValue),r._currentValue=i,s!==null)if(xt(s.value,i)){if(s.children===o.children&&!Ve.current){t=Gt(e,t,n);break e}}else for(s=t.child,s!==null&&(s.return=t);s!==null;){var l=s.dependencies;if(l!==null){i=s.child;for(var a=l.firstContext;a!==null;){if(a.context===r){if(s.tag===1){a=Wt(-1,n&-n),a.tag=2;var c=s.updateQueue;if(c!==null){c=c.shared;var u=c.pending;u===null?a.next=a:(a.next=u.next,u.next=a),c.pending=a}}s.lanes|=n,a=s.alternate,a!==null&&(a.lanes|=n),ba(s.return,n,t),l.lanes|=n;break}a=a.next}}else if(s.tag===10)i=s.type===t.type?null:s.child;else if(s.tag===18){if(i=s.return,i===null)throw Error(V(341));i.lanes|=n,l=i.alternate,l!==null&&(l.lanes|=n),ba(i,n,t),i=s.sibling}else i=s.child;if(i!==null)i.return=s;else for(i=s;i!==null;){if(i===t){i=null;break}if(s=i.sibling,s!==null){s.return=i.return,i=s;break}i=i.return}s=i}Ae(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,yr(t,n),o=st(o),r=r(o),t.flags|=1,Ae(e,t,r,n),t.child;case 14:return r=t.type,o=ut(r,t.pendingProps),o=ut(r.type,o),bd(e,t,r,o,n);case 15:return Xh(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:ut(r,o),As(e,t),t.tag=1,We(r)?(e=!0,ni(t)):e=!1,yr(t,n),Wh(t,r,o),Ta(t,r,o,n),$a(null,t,r,!0,e,n);case 19:return Jh(e,t,n);case 22:return Gh(e,t,n)}throw Error(V(156,t.tag))};function hm(e,t){return Hp(e,t)}function Gx(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function rt(e,t,n,r){return new Gx(e,t,n,r)}function ru(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Kx(e){if(typeof e=="function")return ru(e)?1:0;if(e!=null){if(e=e.$$typeof,e===kc)return 11;if(e===_c)return 14}return 2}function yn(e,t){var n=e.alternate;return n===null?(n=rt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Fs(e,t,n,r,o,s){var i=2;if(r=e,typeof e=="function")ru(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case tr:return An(n.children,o,s,t);case Sc:i=8,o|=8;break;case ea:return e=rt(12,n,t,o|2),e.elementType=ea,e.lanes=s,e;case ta:return e=rt(13,n,t,o),e.elementType=ta,e.lanes=s,e;case na:return e=rt(19,n,t,o),e.elementType=na,e.lanes=s,e;case Np:return Bi(n,o,s,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case kp:i=10;break e;case _p:i=9;break e;case kc:i=11;break e;case _c:i=14;break e;case en:i=16,r=null;break e}throw Error(V(130,e==null?e:typeof e,""))}return t=rt(i,n,t,o),t.elementType=e,t.type=r,t.lanes=s,t}function An(e,t,n,r){return e=rt(7,e,r,t),e.lanes=n,e}function Bi(e,t,n,r){return e=rt(22,e,r,t),e.elementType=Np,e.lanes=n,e.stateNode={isHidden:!1},e}function Dl(e,t,n){return e=rt(6,e,null,t),e.lanes=n,e}function zl(e,t,n){return t=rt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Qx(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=vl(0),this.expirationTimes=vl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=vl(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function ou(e,t,n,r,o,s,i,l,a){return e=new Qx(e,t,n,l,a),t===1?(t=1,s===!0&&(t|=8)):t=0,s=rt(3,null,null,t),e.current=s,s.stateNode=e,s.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Hc(s),e}function qx(e,t,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:er,key:r==null?null:""+r,children:e,containerInfo:t,implementation:n}}function mm(e){if(!e)return wn;e=e._reactInternals;e:{if(Qn(e)!==e||e.tag!==1)throw Error(V(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(We(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(t!==null);throw Error(V(171))}if(e.tag===1){var n=e.type;if(We(n))return mh(e,n,t)}return t}function gm(e,t,n,r,o,s,i,l,a){return e=ou(n,r,!0,e,o,s,i,l,a),e.context=mm(null),n=e.current,r=De(),o=gn(n),s=Wt(r,o),s.callback=t??null,hn(n,s,o),e.current.lanes=o,Vo(e,o,r),Ue(e,r),e}function Vi(e,t,n,r){var o=t.current,s=De(),i=gn(o);return n=mm(n),t.context===null?t.context=n:t.pendingContext=n,t=Wt(s,i),t.payload={element:e},r=r===void 0?null:r,r!==null&&(t.callback=r),e=hn(o,t,i),e!==null&&(vt(e,o,i,s),$s(e,o,i)),i}function mi(e){if(e=e.current,!e.child)return null;switch(e.child.tag){case 5:return e.child.stateNode;default:return e.child.stateNode}}function Od(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function su(e,t){Od(e,t),(e=e.alternate)&&Od(e,t)}function Jx(){return null}var ym=typeof reportError=="function"?reportError:function(e){console.error(e)};function iu(e){this._internalRoot=e}Wi.prototype.render=iu.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(V(409));Vi(e,t,null,null)};Wi.prototype.unmount=iu.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;Vn(function(){Vi(null,e,null,null)}),t[Yt]=null}};function Wi(e){this._internalRoot=e}Wi.prototype.unstable_scheduleHydration=function(e){if(e){var t=Gp();e={blockedOn:null,target:e,priority:t};for(var n=0;n<rn.length&&t!==0&&t<rn[n].priority;n++);rn.splice(n,0,e),n===0&&Qp(e)}};function lu(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function Ui(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11&&(e.nodeType!==8||e.nodeValue!==" react-mount-point-unstable "))}function Hd(){}function Zx(e,t,n,r,o){if(o){if(typeof r=="function"){var s=r;r=function(){var c=mi(i);s.call(c)}}var i=gm(t,r,e,0,null,!1,!1,"",Hd);return e._reactRootContainer=i,e[Yt]=i.current,No(e.nodeType===8?e.parentNode:e),Vn(),i}for(;o=e.lastChild;)e.removeChild(o);if(typeof r=="function"){var l=r;r=function(){var c=mi(a);l.call(c)}}var a=ou(e,0,!1,null,null,!1,!1,"",Hd);return e._reactRootContainer=a,e[Yt]=a.current,No(e.nodeType===8?e.parentNode:e),Vn(function(){Vi(t,a,n,r)}),a}function Yi(e,t,n,r,o){var s=n._reactRootContainer;if(s){var i=s;if(typeof o=="function"){var l=o;o=function(){var a=mi(i);l.call(a)}}Vi(t,i,e,o)}else i=Zx(n,t,e,o,r);return mi(i)}Yp=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=Zr(t.pendingLanes);n!==0&&(Cc(t,n|1),Ue(t,ke()),!(le&6)&&(jr=ke()+500,_n()))}break;case 13:Vn(function(){var r=Xt(e,1);if(r!==null){var o=De();vt(r,e,1,o)}}),su(e,1)}};jc=function(e){if(e.tag===13){var t=Xt(e,134217728);if(t!==null){var n=De();vt(t,e,134217728,n)}su(e,134217728)}};Xp=function(e){if(e.tag===13){var t=gn(e),n=Xt(e,t);if(n!==null){var r=De();vt(n,e,t,r)}su(e,t)}};Gp=function(){return ue};Kp=function(e,t){var n=ue;try{return ue=e,t()}finally{ue=n}};fa=function(e,t,n){switch(t){case"input":if(sa(e,n),t=n.name,n.type==="radio"&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var o=Ai(r);if(!o)throw Error(V(90));Cp(r),sa(r,o)}}}break;case"textarea":bp(e,n);break;case"select":t=n.value,t!=null&&pr(e,!!n.multiple,t,!1)}};Rp=eu;Ap=Vn;var ew={usingClientEntryPoint:!1,Events:[Uo,sr,Ai,$p,Lp,eu]},Xr={findFiberByHostInstance:Mn,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},tw={bundleType:Xr.bundleType,version:Xr.version,rendererPackageName:Xr.rendererPackageName,rendererConfig:Xr.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:Qt.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return e=Fp(e),e===null?null:e.stateNode},findFiberByHostInstance:Xr.findFiberByHostInstance||Jx,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var ys=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!ys.isDisabled&&ys.supportsFiber)try{Ii=ys.inject(tw),Tt=ys}catch{}}Je.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ew;Je.createPortal=function(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!lu(t))throw Error(V(200));return qx(e,t,null,n)};Je.createRoot=function(e,t){if(!lu(e))throw Error(V(299));var n=!1,r="",o=ym;return t!=null&&(t.unstable_strictMode===!0&&(n=!0),t.identifierPrefix!==void 0&&(r=t.identifierPrefix),t.onRecoverableError!==void 0&&(o=t.onRecoverableError)),t=ou(e,1,!1,null,null,n,!1,r,o),e[Yt]=t.current,No(e.nodeType===8?e.parentNode:e),new iu(t)};Je.findDOMNode=function(e){if(e==null)return null;if(e.nodeType===1)return e;var t=e._reactInternals;if(t===void 0)throw typeof e.render=="function"?Error(V(188)):(e=Object.keys(e).join(","),Error(V(268,e)));return e=Fp(t),e=e===null?null:e.stateNode,e};Je.flushSync=function(e){return Vn(e)};Je.hydrate=function(e,t,n){if(!Ui(t))throw Error(V(200));return Yi(null,e,t,!0,n)};Je.hydrateRoot=function(e,t,n){if(!lu(e))throw Error(V(405));var r=n!=null&&n.hydratedSources||null,o=!1,s="",i=ym;if(n!=null&&(n.unstable_strictMode===!0&&(o=!0),n.identifierPrefix!==void 0&&(s=n.identifierPrefix),n.onRecoverableError!==void 0&&(i=n.onRecoverableError)),t=gm(t,null,e,1,n??null,o,!1,s,i),e[Yt]=t.current,No(e),r)for(e=0;e<r.length;e++)n=r[e],o=n._getVersion,o=o(n._source),t.mutableSourceEagerHydrationData==null?t.mutableSourceEagerHydrationData=[n,o]:t.mutableSourceEagerHydrationData.push(n,o);return new Wi(t)};Je.render=function(e,t,n){if(!Ui(t))throw Error(V(200));return Yi(null,e,t,!1,n)};Je.unmountComponentAtNode=function(e){if(!Ui(e))throw Error(V(40));return e._reactRootContainer?(Vn(function(){Yi(null,null,e,!1,function(){e._reactRootContainer=null,e[Yt]=null})}),!0):!1};Je.unstable_batchedUpdates=eu;Je.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Ui(n))throw Error(V(200));if(e==null||e._reactInternals===void 0)throw Error(V(38));return Yi(e,t,n,!1,r)};Je.version="18.3.1-next-f1338f8080-20240426";function vm(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(vm)}catch(e){console.error(e)}}vm(),vp.exports=Je;var Xi=vp.exports,Bd=Xi;Jl.createRoot=Bd.createRoot,Jl.hydrateRoot=Bd.hydrateRoot;const nw={},Vd=e=>{let t;const n=new Set,r=(u,f)=>{const p=typeof u=="function"?u(t):u;if(!Object.is(p,t)){const h=t;t=f??(typeof p!="object"||p===null)?p:Object.assign({},t,p),n.forEach(y=>y(t,h))}},o=()=>t,a={setState:r,getState:o,getInitialState:()=>c,subscribe:u=>(n.add(u),()=>n.delete(u)),destroy:()=>{(nw?"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()}},c=t=e(r,o,a);return a},xm=e=>e?Vd(e):Vd;var wm={exports:{}},Sm={},km={exports:{}},_m={};/**
41
+ * @license React
42
+ * use-sync-external-store-shim.production.js
43
+ *
44
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
45
+ *
46
+ * This source code is licensed under the MIT license found in the
47
+ * LICENSE file in the root directory of this source tree.
48
+ */var br=M;function rw(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var ow=typeof Object.is=="function"?Object.is:rw,sw=br.useState,iw=br.useEffect,lw=br.useLayoutEffect,aw=br.useDebugValue;function cw(e,t){var n=t(),r=sw({inst:{value:n,getSnapshot:t}}),o=r[0].inst,s=r[1];return lw(function(){o.value=n,o.getSnapshot=t,Fl(o)&&s({inst:o})},[e,n,t]),iw(function(){return Fl(o)&&s({inst:o}),e(function(){Fl(o)&&s({inst:o})})},[e]),aw(n),n}function Fl(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!ow(e,n)}catch{return!0}}function uw(e,t){return t()}var dw=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?uw:cw;_m.useSyncExternalStore=br.useSyncExternalStore!==void 0?br.useSyncExternalStore:dw;km.exports=_m;var fw=km.exports;/**
49
+ * @license React
50
+ * use-sync-external-store-shim/with-selector.production.js
51
+ *
52
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
53
+ *
54
+ * This source code is licensed under the MIT license found in the
55
+ * LICENSE file in the root directory of this source tree.
56
+ */var Gi=M,pw=fw;function hw(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var mw=typeof Object.is=="function"?Object.is:hw,gw=pw.useSyncExternalStore,yw=Gi.useRef,vw=Gi.useEffect,xw=Gi.useMemo,ww=Gi.useDebugValue;Sm.useSyncExternalStoreWithSelector=function(e,t,n,r,o){var s=yw(null);if(s.current===null){var i={hasValue:!1,value:null};s.current=i}else i=s.current;s=xw(function(){function a(h){if(!c){if(c=!0,u=h,h=r(h),o!==void 0&&i.hasValue){var y=i.value;if(o(y,h))return f=y}return f=h}if(y=f,mw(u,h))return y;var x=r(h);return o!==void 0&&o(y,x)?(u=h,y):(u=h,f=x)}var c=!1,u,f,p=n===void 0?null:n;return[function(){return a(t())},p===null?void 0:function(){return a(p())}]},[t,n,r,o]);var l=gw(e,s[0],s[1]);return vw(function(){i.hasValue=!0,i.value=l},[l]),ww(l),l};wm.exports=Sm;var Sw=wm.exports;const Nm=ip(Sw),Em={},{useDebugValue:kw}=yc,{useSyncExternalStoreWithSelector:_w}=Nm;let Wd=!1;const Nw=e=>e;function Ew(e,t=Nw,n){(Em?"production":void 0)!=="production"&&n&&!Wd&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),Wd=!0);const r=_w(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return kw(r),r}const Ud=e=>{(Em?"production":void 0)!=="production"&&typeof e!="function"&&console.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");const t=typeof e=="function"?xm(e):e,n=(r,o)=>Ew(t,r,o);return Object.assign(n,t),n},Cm=e=>e?Ud(e):Ud;function Ne(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=Ne(e[n]))!==""&&(t+=(t&&" ")+r);else for(let n in e)e[n]&&(t+=(t&&" ")+n);return t}var Cw={value:()=>{}};function Ki(){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 Os(n)}function Os(e){this._=e}function jw(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}})}Os.prototype=Ki.prototype={constructor:Os,on:function(e,t){var n=this._,r=jw(e+"",n),o,s=-1,i=r.length;if(arguments.length<2){for(;++s<i;)if((o=(e=r[s]).type)&&(o=bw(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]=Yd(n[o],e.name,t);else if(t==null)for(o in n)n[o]=Yd(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 Os(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 bw(e,t){for(var n=0,r=e.length,o;n<r;++n)if((o=e[n]).name===t)return o.value}function Yd(e,t,n){for(var r=0,o=e.length;r<o;++r)if(e[r].name===t){e[r]=Cw,e=e.slice(0,r).concat(e.slice(r+1));break}return n!=null&&e.push({name:t,value:n}),e}var Ua="http://www.w3.org/1999/xhtml";const Xd={svg:"http://www.w3.org/2000/svg",xhtml:Ua,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Qi(e){var t=e+="",n=t.indexOf(":");return n>=0&&(t=e.slice(0,n))!=="xmlns"&&(e=e.slice(n+1)),Xd.hasOwnProperty(t)?{space:Xd[t],local:e}:e}function Pw(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===Ua&&t.documentElement.namespaceURI===Ua?t.createElement(e):t.createElementNS(n,e)}}function Tw(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function jm(e){var t=Qi(e);return(t.local?Tw:Pw)(t)}function Mw(){}function au(e){return e==null?Mw:function(){return this.querySelector(e)}}function Iw(e){typeof e!="function"&&(e=au(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,l=r[o]=new Array(i),a,c,u=0;u<i;++u)(a=s[u])&&(c=e.call(a,a.__data__,u,s))&&("__data__"in a&&(c.__data__=a.__data__),l[u]=c);return new qe(r,this._parents)}function $w(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function Lw(){return[]}function bm(e){return e==null?Lw:function(){return this.querySelectorAll(e)}}function Rw(e){return function(){return $w(e.apply(this,arguments))}}function Aw(e){typeof e=="function"?e=Rw(e):e=bm(e);for(var t=this._groups,n=t.length,r=[],o=[],s=0;s<n;++s)for(var i=t[s],l=i.length,a,c=0;c<l;++c)(a=i[c])&&(r.push(e.call(a,a.__data__,c,i)),o.push(a));return new qe(r,o)}function Pm(e){return function(){return this.matches(e)}}function Tm(e){return function(t){return t.matches(e)}}var Dw=Array.prototype.find;function zw(e){return function(){return Dw.call(this.children,e)}}function Fw(){return this.firstElementChild}function Ow(e){return this.select(e==null?Fw:zw(typeof e=="function"?e:Tm(e)))}var Hw=Array.prototype.filter;function Bw(){return Array.from(this.children)}function Vw(e){return function(){return Hw.call(this.children,e)}}function Ww(e){return this.selectAll(e==null?Bw:Vw(typeof e=="function"?e:Tm(e)))}function Uw(e){typeof e!="function"&&(e=Pm(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,l=r[o]=[],a,c=0;c<i;++c)(a=s[c])&&e.call(a,a.__data__,c,s)&&l.push(a);return new qe(r,this._parents)}function Mm(e){return new Array(e.length)}function Yw(){return new qe(this._enter||this._groups.map(Mm),this._parents)}function gi(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}gi.prototype={constructor:gi,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 Xw(e){return function(){return e}}function Gw(e,t,n,r,o,s){for(var i=0,l,a=t.length,c=s.length;i<c;++i)(l=t[i])?(l.__data__=s[i],r[i]=l):n[i]=new gi(e,s[i]);for(;i<a;++i)(l=t[i])&&(o[i]=l)}function Kw(e,t,n,r,o,s,i){var l,a,c=new Map,u=t.length,f=s.length,p=new Array(u),h;for(l=0;l<u;++l)(a=t[l])&&(p[l]=h=i.call(a,a.__data__,l,t)+"",c.has(h)?o[l]=a:c.set(h,a));for(l=0;l<f;++l)h=i.call(e,s[l],l,s)+"",(a=c.get(h))?(r[l]=a,a.__data__=s[l],c.delete(h)):n[l]=new gi(e,s[l]);for(l=0;l<u;++l)(a=t[l])&&c.get(p[l])===a&&(o[l]=a)}function Qw(e){return e.__data__}function qw(e,t){if(!arguments.length)return Array.from(this,Qw);var n=t?Kw:Gw,r=this._parents,o=this._groups;typeof e!="function"&&(e=Xw(e));for(var s=o.length,i=new Array(s),l=new Array(s),a=new Array(s),c=0;c<s;++c){var u=r[c],f=o[c],p=f.length,h=Jw(e.call(u,u&&u.__data__,c,r)),y=h.length,x=l[c]=new Array(y),k=i[c]=new Array(y),m=a[c]=new Array(p);n(u,f,x,k,m,h,t);for(var v=0,g=0,w,j;v<y;++v)if(w=x[v]){for(v>=g&&(g=v+1);!(j=k[g])&&++g<y;);w._next=j||null}}return i=new qe(i,r),i._enter=l,i._exit=a,i}function Jw(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function Zw(){return new qe(this._exit||this._groups.map(Mm),this._parents)}function e1(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 t1(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),l=new Array(o),a=0;a<i;++a)for(var c=n[a],u=r[a],f=c.length,p=l[a]=new Array(f),h,y=0;y<f;++y)(h=c[y]||u[y])&&(p[y]=h);for(;a<o;++a)l[a]=n[a];return new qe(l,this._parents)}function n1(){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 r1(e){e||(e=o1);function t(f,p){return f&&p?e(f.__data__,p.__data__):!f-!p}for(var n=this._groups,r=n.length,o=new Array(r),s=0;s<r;++s){for(var i=n[s],l=i.length,a=o[s]=new Array(l),c,u=0;u<l;++u)(c=i[u])&&(a[u]=c);a.sort(t)}return new qe(o,this._parents).order()}function o1(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function s1(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function i1(){return Array.from(this)}function l1(){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 a1(){let e=0;for(const t of this)++e;return e}function c1(){return!this.node()}function u1(e){for(var t=this._groups,n=0,r=t.length;n<r;++n)for(var o=t[n],s=0,i=o.length,l;s<i;++s)(l=o[s])&&e.call(l,l.__data__,s,o);return this}function d1(e){return function(){this.removeAttribute(e)}}function f1(e){return function(){this.removeAttributeNS(e.space,e.local)}}function p1(e,t){return function(){this.setAttribute(e,t)}}function h1(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function m1(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function g1(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 y1(e,t){var n=Qi(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?f1:d1:typeof t=="function"?n.local?g1:m1:n.local?h1:p1)(n,t))}function Im(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function v1(e){return function(){this.style.removeProperty(e)}}function x1(e,t,n){return function(){this.style.setProperty(e,t,n)}}function w1(e,t,n){return function(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function S1(e,t,n){return arguments.length>1?this.each((t==null?v1:typeof t=="function"?w1:x1)(e,t,n??"")):Pr(this.node(),e)}function Pr(e,t){return e.style.getPropertyValue(t)||Im(e).getComputedStyle(e,null).getPropertyValue(t)}function k1(e){return function(){delete this[e]}}function _1(e,t){return function(){this[e]=t}}function N1(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function E1(e,t){return arguments.length>1?this.each((t==null?k1:typeof t=="function"?N1:_1)(e,t)):this.node()[e]}function $m(e){return e.trim().split(/^|\s+/)}function cu(e){return e.classList||new Lm(e)}function Lm(e){this._node=e,this._names=$m(e.getAttribute("class")||"")}Lm.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 Rm(e,t){for(var n=cu(e),r=-1,o=t.length;++r<o;)n.add(t[r])}function Am(e,t){for(var n=cu(e),r=-1,o=t.length;++r<o;)n.remove(t[r])}function C1(e){return function(){Rm(this,e)}}function j1(e){return function(){Am(this,e)}}function b1(e,t){return function(){(t.apply(this,arguments)?Rm:Am)(this,e)}}function P1(e,t){var n=$m(e+"");if(arguments.length<2){for(var r=cu(this.node()),o=-1,s=n.length;++o<s;)if(!r.contains(n[o]))return!1;return!0}return this.each((typeof t=="function"?b1:t?C1:j1)(n,t))}function T1(){this.textContent=""}function M1(e){return function(){this.textContent=e}}function I1(e){return function(){var t=e.apply(this,arguments);this.textContent=t??""}}function $1(e){return arguments.length?this.each(e==null?T1:(typeof e=="function"?I1:M1)(e)):this.node().textContent}function L1(){this.innerHTML=""}function R1(e){return function(){this.innerHTML=e}}function A1(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??""}}function D1(e){return arguments.length?this.each(e==null?L1:(typeof e=="function"?A1:R1)(e)):this.node().innerHTML}function z1(){this.nextSibling&&this.parentNode.appendChild(this)}function F1(){return this.each(z1)}function O1(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function H1(){return this.each(O1)}function B1(e){var t=typeof e=="function"?e:jm(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function V1(){return null}function W1(e,t){var n=typeof e=="function"?e:jm(e),r=t==null?V1:typeof t=="function"?t:au(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function U1(){var e=this.parentNode;e&&e.removeChild(this)}function Y1(){return this.each(U1)}function X1(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function G1(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function K1(e){return this.select(e?G1:X1)}function Q1(e){return arguments.length?this.property("__data__",e):this.node().__data__}function q1(e){return function(t){e.call(this,t,this.__data__)}}function J1(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 Z1(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 eS(e,t,n){return function(){var r=this.__on,o,s=q1(t);if(r){for(var i=0,l=r.length;i<l;++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 tS(e,t,n){var r=J1(e+""),o,s=r.length,i;if(arguments.length<2){var l=this.node().__on;if(l){for(var a=0,c=l.length,u;a<c;++a)for(o=0,u=l[a];o<s;++o)if((i=r[o]).type===u.type&&i.name===u.name)return u.value}return}for(l=t?eS:Z1,o=0;o<s;++o)this.each(l(r[o],t,n));return this}function Dm(e,t,n){var r=Im(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 nS(e,t){return function(){return Dm(this,e,t)}}function rS(e,t){return function(){return Dm(this,e,t.apply(this,arguments))}}function oS(e,t){return this.each((typeof t=="function"?rS:nS)(e,t))}function*sS(){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 zm=[null];function qe(e,t){this._groups=e,this._parents=t}function Xo(){return new qe([[document.documentElement]],zm)}function iS(){return this}qe.prototype=Xo.prototype={constructor:qe,select:Iw,selectAll:Aw,selectChild:Ow,selectChildren:Ww,filter:Uw,data:qw,enter:Yw,exit:Zw,join:e1,merge:t1,selection:iS,order:n1,sort:r1,call:s1,nodes:i1,node:l1,size:a1,empty:c1,each:u1,attr:y1,style:S1,property:E1,classed:P1,text:$1,html:D1,raise:F1,lower:H1,append:B1,insert:W1,remove:Y1,clone:K1,datum:Q1,on:tS,dispatch:oS,[Symbol.iterator]:sS};function Xe(e){return typeof e=="string"?new qe([[document.querySelector(e)]],[document.documentElement]):new qe([[e]],zm)}function lS(e){let t;for(;t=e.sourceEvent;)e=t;return e}function ft(e,t){if(e=lS(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 aS={passive:!1},$o={capture:!0,passive:!1};function Ol(e){e.stopImmediatePropagation()}function xr(e){e.preventDefault(),e.stopImmediatePropagation()}function Fm(e){var t=e.document.documentElement,n=Xe(e).on("dragstart.drag",xr,$o);"onselectstart"in t?n.on("selectstart.drag",xr,$o):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect="none")}function Om(e,t){var n=e.document.documentElement,r=Xe(e).on("dragstart.drag",null);t&&(r.on("click.drag",xr,$o),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 vs=e=>()=>e;function Ya(e,{sourceEvent:t,subject:n,target:r,identifier:o,active:s,x:i,y:l,dx:a,dy:c,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:l,enumerable:!0,configurable:!0},dx:{value:a,enumerable:!0,configurable:!0},dy:{value:c,enumerable:!0,configurable:!0},_:{value:u}})}Ya.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function cS(e){return!e.ctrlKey&&!e.button}function uS(){return this.parentNode}function dS(e,t){return t??{x:e.x,y:e.y}}function fS(){return navigator.maxTouchPoints||"ontouchstart"in this}function Hm(){var e=cS,t=uS,n=dS,r=fS,o={},s=Ki("start","drag","end"),i=0,l,a,c,u,f=0;function p(w){w.on("mousedown.drag",h).filter(r).on("touchstart.drag",k).on("touchmove.drag",m,aS).on("touchend.drag touchcancel.drag",v).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function h(w,j){if(!(u||!e.call(this,w,j))){var _=g(this,t.call(this,w,j),w,j,"mouse");_&&(Xe(w.view).on("mousemove.drag",y,$o).on("mouseup.drag",x,$o),Fm(w.view),Ol(w),c=!1,l=w.clientX,a=w.clientY,_("start",w))}}function y(w){if(xr(w),!c){var j=w.clientX-l,_=w.clientY-a;c=j*j+_*_>f}o.mouse("drag",w)}function x(w){Xe(w.view).on("mousemove.drag mouseup.drag",null),Om(w.view,c),xr(w),o.mouse("end",w)}function k(w,j){if(e.call(this,w,j)){var _=w.changedTouches,E=t.call(this,w,j),N=_.length,$,A;for($=0;$<N;++$)(A=g(this,E,w,j,_[$].identifier,_[$]))&&(Ol(w),A("start",w,_[$]))}}function m(w){var j=w.changedTouches,_=j.length,E,N;for(E=0;E<_;++E)(N=o[j[E].identifier])&&(xr(w),N("drag",w,j[E]))}function v(w){var j=w.changedTouches,_=j.length,E,N;for(u&&clearTimeout(u),u=setTimeout(function(){u=null},500),E=0;E<_;++E)(N=o[j[E].identifier])&&(Ol(w),N("end",w,j[E]))}function g(w,j,_,E,N,$){var A=s.copy(),L=ft($||_,j),O,F,S;if((S=n.call(w,new Ya("beforestart",{sourceEvent:_,target:p,identifier:N,active:i,x:L[0],y:L[1],dx:0,dy:0,dispatch:A}),E))!=null)return O=S.x-L[0]||0,F=S.y-L[1]||0,function C(T,P,b){var I=L,R;switch(T){case"start":o[N]=C,R=i++;break;case"end":delete o[N],--i;case"drag":L=ft(b||P,j),R=i;break}A.call(T,w,new Ya(T,{sourceEvent:P,subject:S,target:p,identifier:N,active:R,x:L[0]+O,y:L[1]+F,dx:L[0]-I[0],dy:L[1]-I[1],dispatch:A}),E)}}return p.filter=function(w){return arguments.length?(e=typeof w=="function"?w:vs(!!w),p):e},p.container=function(w){return arguments.length?(t=typeof w=="function"?w:vs(w),p):t},p.subject=function(w){return arguments.length?(n=typeof w=="function"?w:vs(w),p):n},p.touchable=function(w){return arguments.length?(r=typeof w=="function"?w:vs(!!w),p):r},p.on=function(){var w=s.on.apply(s,arguments);return w===s?p:w},p.clickDistance=function(w){return arguments.length?(f=(w=+w)*w,p):Math.sqrt(f)},p}function uu(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function Bm(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function Go(){}var Lo=.7,yi=1/Lo,wr="\\s*([+-]?\\d+)\\s*",Ro="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",It="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",pS=/^#([0-9a-f]{3,8})$/,hS=new RegExp(`^rgb\\(${wr},${wr},${wr}\\)$`),mS=new RegExp(`^rgb\\(${It},${It},${It}\\)$`),gS=new RegExp(`^rgba\\(${wr},${wr},${wr},${Ro}\\)$`),yS=new RegExp(`^rgba\\(${It},${It},${It},${Ro}\\)$`),vS=new RegExp(`^hsl\\(${Ro},${It},${It}\\)$`),xS=new RegExp(`^hsla\\(${Ro},${It},${It},${Ro}\\)$`),Gd={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};uu(Go,Wn,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Kd,formatHex:Kd,formatHex8:wS,formatHsl:SS,formatRgb:Qd,toString:Qd});function Kd(){return this.rgb().formatHex()}function wS(){return this.rgb().formatHex8()}function SS(){return Vm(this).formatHsl()}function Qd(){return this.rgb().formatRgb()}function Wn(e){var t,n;return e=(e+"").trim().toLowerCase(),(t=pS.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?qd(t):n===3?new Be(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?xs(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?xs(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=hS.exec(e))?new Be(t[1],t[2],t[3],1):(t=mS.exec(e))?new Be(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=gS.exec(e))?xs(t[1],t[2],t[3],t[4]):(t=yS.exec(e))?xs(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=vS.exec(e))?ef(t[1],t[2]/100,t[3]/100,1):(t=xS.exec(e))?ef(t[1],t[2]/100,t[3]/100,t[4]):Gd.hasOwnProperty(e)?qd(Gd[e]):e==="transparent"?new Be(NaN,NaN,NaN,0):null}function qd(e){return new Be(e>>16&255,e>>8&255,e&255,1)}function xs(e,t,n,r){return r<=0&&(e=t=n=NaN),new Be(e,t,n,r)}function kS(e){return e instanceof Go||(e=Wn(e)),e?(e=e.rgb(),new Be(e.r,e.g,e.b,e.opacity)):new Be}function Xa(e,t,n,r){return arguments.length===1?kS(e):new Be(e,t,n,r??1)}function Be(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}uu(Be,Xa,Bm(Go,{brighter(e){return e=e==null?yi:Math.pow(yi,e),new Be(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Lo:Math.pow(Lo,e),new Be(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Be(Dn(this.r),Dn(this.g),Dn(this.b),vi(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:Jd,formatHex:Jd,formatHex8:_S,formatRgb:Zd,toString:Zd}));function Jd(){return`#${Ln(this.r)}${Ln(this.g)}${Ln(this.b)}`}function _S(){return`#${Ln(this.r)}${Ln(this.g)}${Ln(this.b)}${Ln((isNaN(this.opacity)?1:this.opacity)*255)}`}function Zd(){const e=vi(this.opacity);return`${e===1?"rgb(":"rgba("}${Dn(this.r)}, ${Dn(this.g)}, ${Dn(this.b)}${e===1?")":`, ${e})`}`}function vi(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Dn(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Ln(e){return e=Dn(e),(e<16?"0":"")+e.toString(16)}function ef(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new ht(e,t,n,r)}function Vm(e){if(e instanceof ht)return new ht(e.h,e.s,e.l,e.opacity);if(e instanceof Go||(e=Wn(e)),!e)return new ht;if(e instanceof ht)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,l=s-o,a=(s+o)/2;return l?(t===s?i=(n-r)/l+(n<r)*6:n===s?i=(r-t)/l+2:i=(t-n)/l+4,l/=a<.5?s+o:2-s-o,i*=60):l=a>0&&a<1?0:i,new ht(i,l,a,e.opacity)}function NS(e,t,n,r){return arguments.length===1?Vm(e):new ht(e,t,n,r??1)}function ht(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}uu(ht,NS,Bm(Go,{brighter(e){return e=e==null?yi:Math.pow(yi,e),new ht(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Lo:Math.pow(Lo,e),new ht(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 Be(Hl(e>=240?e-240:e+120,o,r),Hl(e,o,r),Hl(e<120?e+240:e-120,o,r),this.opacity)},clamp(){return new ht(tf(this.h),ws(this.s),ws(this.l),vi(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=vi(this.opacity);return`${e===1?"hsl(":"hsla("}${tf(this.h)}, ${ws(this.s)*100}%, ${ws(this.l)*100}%${e===1?")":`, ${e})`}`}}));function tf(e){return e=(e||0)%360,e<0?e+360:e}function ws(e){return Math.max(0,Math.min(1,e||0))}function Hl(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 du=e=>()=>e;function ES(e,t){return function(n){return e+n*t}}function CS(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 jS(e){return(e=+e)==1?Wm:function(t,n){return n-t?CS(t,n,e):du(isNaN(t)?n:t)}}function Wm(e,t){var n=t-e;return n?ES(e,n):du(isNaN(e)?t:e)}const xi=function e(t){var n=jS(t);function r(o,s){var i=n((o=Xa(o)).r,(s=Xa(s)).r),l=n(o.g,s.g),a=n(o.b,s.b),c=Wm(o.opacity,s.opacity);return function(u){return o.r=i(u),o.g=l(u),o.b=a(u),o.opacity=c(u),o+""}}return r.gamma=e,r}(1);function bS(e,t){t||(t=[]);var n=e?Math.min(t.length,e.length):0,r=t.slice(),o;return function(s){for(o=0;o<n;++o)r[o]=e[o]*(1-s)+t[o]*s;return r}}function PS(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function TS(e,t){var n=t?t.length:0,r=e?Math.min(n,e.length):0,o=new Array(r),s=new Array(n),i;for(i=0;i<r;++i)o[i]=ho(e[i],t[i]);for(;i<n;++i)s[i]=t[i];return function(l){for(i=0;i<r;++i)s[i]=o[i](l);return s}}function MS(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function bt(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function IS(e,t){var n={},r={},o;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(o in t)o in e?n[o]=ho(e[o],t[o]):r[o]=t[o];return function(s){for(o in n)r[o]=n[o](s);return r}}var Ga=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Bl=new RegExp(Ga.source,"g");function $S(e){return function(){return e}}function LS(e){return function(t){return e(t)+""}}function Um(e,t){var n=Ga.lastIndex=Bl.lastIndex=0,r,o,s,i=-1,l=[],a=[];for(e=e+"",t=t+"";(r=Ga.exec(e))&&(o=Bl.exec(t));)(s=o.index)>n&&(s=t.slice(n,s),l[i]?l[i]+=s:l[++i]=s),(r=r[0])===(o=o[0])?l[i]?l[i]+=o:l[++i]=o:(l[++i]=null,a.push({i,x:bt(r,o)})),n=Bl.lastIndex;return n<t.length&&(s=t.slice(n),l[i]?l[i]+=s:l[++i]=s),l.length<2?a[0]?LS(a[0].x):$S(t):(t=a.length,function(c){for(var u=0,f;u<t;++u)l[(f=a[u]).i]=f.x(c);return l.join("")})}function ho(e,t){var n=typeof t,r;return t==null||n==="boolean"?du(t):(n==="number"?bt:n==="string"?(r=Wn(t))?(t=r,xi):Um:t instanceof Wn?xi:t instanceof Date?MS:PS(t)?bS:Array.isArray(t)?TS:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?IS:bt)(e,t)}var nf=180/Math.PI,Ka={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Ym(e,t,n,r,o,s){var i,l,a;return(i=Math.sqrt(e*e+t*t))&&(e/=i,t/=i),(a=e*n+t*r)&&(n-=e*a,r-=t*a),(l=Math.sqrt(n*n+r*r))&&(n/=l,r/=l,a/=l),e*r<t*n&&(e=-e,t=-t,a=-a,i=-i),{translateX:o,translateY:s,rotate:Math.atan2(t,e)*nf,skewX:Math.atan(a)*nf,scaleX:i,scaleY:l}}var Ss;function RS(e){const t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?Ka:Ym(t.a,t.b,t.c,t.d,t.e,t.f)}function AS(e){return e==null||(Ss||(Ss=document.createElementNS("http://www.w3.org/2000/svg","g")),Ss.setAttribute("transform",e),!(e=Ss.transform.baseVal.consolidate()))?Ka:(e=e.matrix,Ym(e.a,e.b,e.c,e.d,e.e,e.f))}function Xm(e,t,n,r){function o(c){return c.length?c.pop()+" ":""}function s(c,u,f,p,h,y){if(c!==f||u!==p){var x=h.push("translate(",null,t,null,n);y.push({i:x-4,x:bt(c,f)},{i:x-2,x:bt(u,p)})}else(f||p)&&h.push("translate("+f+t+p+n)}function i(c,u,f,p){c!==u?(c-u>180?u+=360:u-c>180&&(c+=360),p.push({i:f.push(o(f)+"rotate(",null,r)-2,x:bt(c,u)})):u&&f.push(o(f)+"rotate("+u+r)}function l(c,u,f,p){c!==u?p.push({i:f.push(o(f)+"skewX(",null,r)-2,x:bt(c,u)}):u&&f.push(o(f)+"skewX("+u+r)}function a(c,u,f,p,h,y){if(c!==f||u!==p){var x=h.push(o(h)+"scale(",null,",",null,")");y.push({i:x-4,x:bt(c,f)},{i:x-2,x:bt(u,p)})}else(f!==1||p!==1)&&h.push(o(h)+"scale("+f+","+p+")")}return function(c,u){var f=[],p=[];return c=e(c),u=e(u),s(c.translateX,c.translateY,u.translateX,u.translateY,f,p),i(c.rotate,u.rotate,f,p),l(c.skewX,u.skewX,f,p),a(c.scaleX,c.scaleY,u.scaleX,u.scaleY,f,p),c=u=null,function(h){for(var y=-1,x=p.length,k;++y<x;)f[(k=p[y]).i]=k.x(h);return f.join("")}}}var DS=Xm(RS,"px, ","px)","deg)"),zS=Xm(AS,", ",")",")"),FS=1e-12;function rf(e){return((e=Math.exp(e))+1/e)/2}function OS(e){return((e=Math.exp(e))-1/e)/2}function HS(e){return((e=Math.exp(2*e))-1)/(e+1)}const Hs=function e(t,n,r){function o(s,i){var l=s[0],a=s[1],c=s[2],u=i[0],f=i[1],p=i[2],h=u-l,y=f-a,x=h*h+y*y,k,m;if(x<FS)m=Math.log(p/c)/t,k=function(E){return[l+E*h,a+E*y,c*Math.exp(t*E*m)]};else{var v=Math.sqrt(x),g=(p*p-c*c+r*x)/(2*c*n*v),w=(p*p-c*c-r*x)/(2*p*n*v),j=Math.log(Math.sqrt(g*g+1)-g),_=Math.log(Math.sqrt(w*w+1)-w);m=(_-j)/t,k=function(E){var N=E*m,$=rf(j),A=c/(n*v)*($*HS(t*N+j)-OS(j));return[l+A*h,a+A*y,c*$/rf(t*N+j)]}}return k.duration=m*1e3*t/Math.SQRT2,k}return o.rho=function(s){var i=Math.max(.001,+s),l=i*i,a=l*l;return e(i,l,a)},o}(Math.SQRT2,2,4);var Tr=0,to=0,Gr=0,Gm=1e3,wi,no,Si=0,Un=0,qi=0,Ao=typeof performance=="object"&&performance.now?performance:Date,Km=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function fu(){return Un||(Km(BS),Un=Ao.now()+qi)}function BS(){Un=0}function ki(){this._call=this._time=this._next=null}ki.prototype=Qm.prototype={constructor:ki,restart:function(e,t,n){if(typeof e!="function")throw new TypeError("callback is not a function");n=(n==null?fu():+n)+(t==null?0:+t),!this._next&&no!==this&&(no?no._next=this:wi=this,no=this),this._call=e,this._time=n,Qa()},stop:function(){this._call&&(this._call=null,this._time=1/0,Qa())}};function Qm(e,t,n){var r=new ki;return r.restart(e,t,n),r}function VS(){fu(),++Tr;for(var e=wi,t;e;)(t=Un-e._time)>=0&&e._call.call(void 0,t),e=e._next;--Tr}function of(){Un=(Si=Ao.now())+qi,Tr=to=0;try{VS()}finally{Tr=0,US(),Un=0}}function WS(){var e=Ao.now(),t=e-Si;t>Gm&&(qi-=t,Si=e)}function US(){for(var e,t=wi,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:wi=n);no=e,Qa(r)}function Qa(e){if(!Tr){to&&(to=clearTimeout(to));var t=e-Un;t>24?(e<1/0&&(to=setTimeout(of,e-Ao.now()-qi)),Gr&&(Gr=clearInterval(Gr))):(Gr||(Si=Ao.now(),Gr=setInterval(WS,Gm)),Tr=1,Km(of))}}function sf(e,t,n){var r=new ki;return t=t==null?0:+t,r.restart(o=>{r.stop(),e(o+t)},t,n),r}var YS=Ki("start","end","cancel","interrupt"),XS=[],qm=0,lf=1,qa=2,Bs=3,af=4,Ja=5,Vs=6;function Ji(e,t,n,r,o,s){var i=e.__transition;if(!i)e.__transition={};else if(n in i)return;GS(e,n,{name:t,index:r,group:o,on:YS,tween:XS,time:s.time,delay:s.delay,duration:s.duration,ease:s.ease,timer:null,state:qm})}function pu(e,t){var n=St(e,t);if(n.state>qm)throw new Error("too late; already scheduled");return n}function $t(e,t){var n=St(e,t);if(n.state>Bs)throw new Error("too late; already running");return n}function St(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function GS(e,t,n){var r=e.__transition,o;r[t]=n,n.timer=Qm(s,0,n.time);function s(c){n.state=lf,n.timer.restart(i,n.delay,n.time),n.delay<=c&&i(c-n.delay)}function i(c){var u,f,p,h;if(n.state!==lf)return a();for(u in r)if(h=r[u],h.name===n.name){if(h.state===Bs)return sf(i);h.state===af?(h.state=Vs,h.timer.stop(),h.on.call("interrupt",e,e.__data__,h.index,h.group),delete r[u]):+u<t&&(h.state=Vs,h.timer.stop(),h.on.call("cancel",e,e.__data__,h.index,h.group),delete r[u])}if(sf(function(){n.state===Bs&&(n.state=af,n.timer.restart(l,n.delay,n.time),l(c))}),n.state=qa,n.on.call("start",e,e.__data__,n.index,n.group),n.state===qa){for(n.state=Bs,o=new Array(p=n.tween.length),u=0,f=-1;u<p;++u)(h=n.tween[u].value.call(e,e.__data__,n.index,n.group))&&(o[++f]=h);o.length=f+1}}function l(c){for(var u=c<n.duration?n.ease.call(null,c/n.duration):(n.timer.restart(a),n.state=Ja,1),f=-1,p=o.length;++f<p;)o[f].call(e,u);n.state===Ja&&(n.on.call("end",e,e.__data__,n.index,n.group),a())}function a(){n.state=Vs,n.timer.stop(),delete r[t];for(var c in r)return;delete e.__transition}}function Ws(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>qa&&r.state<Ja,r.state=Vs,r.timer.stop(),r.on.call(o?"interrupt":"cancel",e,e.__data__,r.index,r.group),delete n[i]}s&&delete e.__transition}}function KS(e){return this.each(function(){Ws(this,e)})}function QS(e,t){var n,r;return function(){var o=$t(this,e),s=o.tween;if(s!==n){r=n=s;for(var i=0,l=r.length;i<l;++i)if(r[i].name===t){r=r.slice(),r.splice(i,1);break}}o.tween=r}}function qS(e,t,n){var r,o;if(typeof n!="function")throw new Error;return function(){var s=$t(this,e),i=s.tween;if(i!==r){o=(r=i).slice();for(var l={name:t,value:n},a=0,c=o.length;a<c;++a)if(o[a].name===t){o[a]=l;break}a===c&&o.push(l)}s.tween=o}}function JS(e,t){var n=this._id;if(e+="",arguments.length<2){for(var r=St(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?QS:qS)(n,e,t))}function hu(e,t,n){var r=e._id;return e.each(function(){var o=$t(this,r);(o.value||(o.value={}))[t]=n.apply(this,arguments)}),function(o){return St(o,r).value[t]}}function Jm(e,t){var n;return(typeof t=="number"?bt:t instanceof Wn?xi:(n=Wn(t))?(t=n,xi):Um)(e,t)}function ZS(e){return function(){this.removeAttribute(e)}}function ek(e){return function(){this.removeAttributeNS(e.space,e.local)}}function tk(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 nk(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 rk(e,t,n){var r,o,s;return function(){var i,l=n(this),a;return l==null?void this.removeAttribute(e):(i=this.getAttribute(e),a=l+"",i===a?null:i===r&&a===o?s:(o=a,s=t(r=i,l)))}}function ok(e,t,n){var r,o,s;return function(){var i,l=n(this),a;return l==null?void this.removeAttributeNS(e.space,e.local):(i=this.getAttributeNS(e.space,e.local),a=l+"",i===a?null:i===r&&a===o?s:(o=a,s=t(r=i,l)))}}function sk(e,t){var n=Qi(e),r=n==="transform"?zS:Jm;return this.attrTween(e,typeof t=="function"?(n.local?ok:rk)(n,r,hu(this,"attr."+e,t)):t==null?(n.local?ek:ZS)(n):(n.local?nk:tk)(n,r,t))}function ik(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function lk(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function ak(e,t){var n,r;function o(){var s=t.apply(this,arguments);return s!==r&&(n=(r=s)&&lk(e,s)),n}return o._value=t,o}function ck(e,t){var n,r;function o(){var s=t.apply(this,arguments);return s!==r&&(n=(r=s)&&ik(e,s)),n}return o._value=t,o}function uk(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=Qi(e);return this.tween(n,(r.local?ak:ck)(r,t))}function dk(e,t){return function(){pu(this,e).delay=+t.apply(this,arguments)}}function fk(e,t){return t=+t,function(){pu(this,e).delay=t}}function pk(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?dk:fk)(t,e)):St(this.node(),t).delay}function hk(e,t){return function(){$t(this,e).duration=+t.apply(this,arguments)}}function mk(e,t){return t=+t,function(){$t(this,e).duration=t}}function gk(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?hk:mk)(t,e)):St(this.node(),t).duration}function yk(e,t){if(typeof t!="function")throw new Error;return function(){$t(this,e).ease=t}}function vk(e){var t=this._id;return arguments.length?this.each(yk(t,e)):St(this.node(),t).ease}function xk(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!="function")throw new Error;$t(this,e).ease=n}}function wk(e){if(typeof e!="function")throw new Error;return this.each(xk(this._id,e))}function Sk(e){typeof e!="function"&&(e=Pm(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,l=r[o]=[],a,c=0;c<i;++c)(a=s[c])&&e.call(a,a.__data__,c,s)&&l.push(a);return new Kt(r,this._parents,this._name,this._id)}function kk(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),l=0;l<s;++l)for(var a=t[l],c=n[l],u=a.length,f=i[l]=new Array(u),p,h=0;h<u;++h)(p=a[h]||c[h])&&(f[h]=p);for(;l<r;++l)i[l]=t[l];return new Kt(i,this._parents,this._name,this._id)}function _k(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 Nk(e,t,n){var r,o,s=_k(t)?pu:$t;return function(){var i=s(this,e),l=i.on;l!==r&&(o=(r=l).copy()).on(t,n),i.on=o}}function Ek(e,t){var n=this._id;return arguments.length<2?St(this.node(),n).on.on(e):this.each(Nk(n,e,t))}function Ck(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function jk(){return this.on("end.remove",Ck(this._id))}function bk(e){var t=this._name,n=this._id;typeof e!="function"&&(e=au(e));for(var r=this._groups,o=r.length,s=new Array(o),i=0;i<o;++i)for(var l=r[i],a=l.length,c=s[i]=new Array(a),u,f,p=0;p<a;++p)(u=l[p])&&(f=e.call(u,u.__data__,p,l))&&("__data__"in u&&(f.__data__=u.__data__),c[p]=f,Ji(c[p],t,n,p,c,St(u,n)));return new Kt(s,this._parents,t,n)}function Pk(e){var t=this._name,n=this._id;typeof e!="function"&&(e=bm(e));for(var r=this._groups,o=r.length,s=[],i=[],l=0;l<o;++l)for(var a=r[l],c=a.length,u,f=0;f<c;++f)if(u=a[f]){for(var p=e.call(u,u.__data__,f,a),h,y=St(u,n),x=0,k=p.length;x<k;++x)(h=p[x])&&Ji(h,t,n,x,p,y);s.push(p),i.push(u)}return new Kt(s,i,t,n)}var Tk=Xo.prototype.constructor;function Mk(){return new Tk(this._groups,this._parents)}function Ik(e,t){var n,r,o;return function(){var s=Pr(this,e),i=(this.style.removeProperty(e),Pr(this,e));return s===i?null:s===n&&i===r?o:o=t(n=s,r=i)}}function Zm(e){return function(){this.style.removeProperty(e)}}function $k(e,t,n){var r,o=n+"",s;return function(){var i=Pr(this,e);return i===o?null:i===r?s:s=t(r=i,n)}}function Lk(e,t,n){var r,o,s;return function(){var i=Pr(this,e),l=n(this),a=l+"";return l==null&&(a=l=(this.style.removeProperty(e),Pr(this,e))),i===a?null:i===r&&a===o?s:(o=a,s=t(r=i,l))}}function Rk(e,t){var n,r,o,s="style."+t,i="end."+s,l;return function(){var a=$t(this,e),c=a.on,u=a.value[s]==null?l||(l=Zm(t)):void 0;(c!==n||o!==u)&&(r=(n=c).copy()).on(i,o=u),a.on=r}}function Ak(e,t,n){var r=(e+="")=="transform"?DS:Jm;return t==null?this.styleTween(e,Ik(e,r)).on("end.style."+e,Zm(e)):typeof t=="function"?this.styleTween(e,Lk(e,r,hu(this,"style."+e,t))).each(Rk(this._id,e)):this.styleTween(e,$k(e,r,t),n).on("end.style."+e,null)}function Dk(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function zk(e,t,n){var r,o;function s(){var i=t.apply(this,arguments);return i!==o&&(r=(o=i)&&Dk(e,i,n)),r}return s._value=t,s}function Fk(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,zk(e,t,n??""))}function Ok(e){return function(){this.textContent=e}}function Hk(e){return function(){var t=e(this);this.textContent=t??""}}function Bk(e){return this.tween("text",typeof e=="function"?Hk(hu(this,"text",e)):Ok(e==null?"":e+""))}function Vk(e){return function(t){this.textContent=e.call(this,t)}}function Wk(e){var t,n;function r(){var o=e.apply(this,arguments);return o!==n&&(t=(n=o)&&Vk(o)),t}return r._value=e,r}function Uk(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,Wk(e))}function Yk(){for(var e=this._name,t=this._id,n=eg(),r=this._groups,o=r.length,s=0;s<o;++s)for(var i=r[s],l=i.length,a,c=0;c<l;++c)if(a=i[c]){var u=St(a,t);Ji(a,e,n,c,i,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new Kt(r,this._parents,e,n)}function Xk(){var e,t,n=this,r=n._id,o=n.size();return new Promise(function(s,i){var l={value:i},a={value:function(){--o===0&&s()}};n.each(function(){var c=$t(this,r),u=c.on;u!==e&&(t=(e=u).copy(),t._.cancel.push(l),t._.interrupt.push(l),t._.end.push(a)),c.on=t}),o===0&&s()})}var Gk=0;function Kt(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function eg(){return++Gk}var Dt=Xo.prototype;Kt.prototype={constructor:Kt,select:bk,selectAll:Pk,selectChild:Dt.selectChild,selectChildren:Dt.selectChildren,filter:Sk,merge:kk,selection:Mk,transition:Yk,call:Dt.call,nodes:Dt.nodes,node:Dt.node,size:Dt.size,empty:Dt.empty,each:Dt.each,on:Ek,attr:sk,attrTween:uk,style:Ak,styleTween:Fk,text:Bk,textTween:Uk,remove:jk,tween:JS,delay:pk,duration:gk,ease:vk,easeVarying:wk,end:Xk,[Symbol.iterator]:Dt[Symbol.iterator]};function Kk(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var Qk={time:null,delay:0,duration:250,ease:Kk};function qk(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 Jk(e){var t,n;e instanceof Kt?(t=e._id,e=e._name):(t=eg(),(n=Qk).time=fu(),e=e==null?null:e+"");for(var r=this._groups,o=r.length,s=0;s<o;++s)for(var i=r[s],l=i.length,a,c=0;c<l;++c)(a=i[c])&&Ji(a,e,t,c,i,n||qk(a,t));return new Kt(r,this._parents,e,t)}Xo.prototype.interrupt=KS;Xo.prototype.transition=Jk;const ks=e=>()=>e;function Zk(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 Vt(e,t,n){this.k=e,this.x=t,this.y=n}Vt.prototype={constructor:Vt,scale:function(e){return e===1?this:new Vt(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new Vt(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 Zi=new Vt(1,0,0);tg.prototype=Vt.prototype;function tg(e){for(;!e.__zoom;)if(!(e=e.parentNode))return Zi;return e.__zoom}function Vl(e){e.stopImmediatePropagation()}function Kr(e){e.preventDefault(),e.stopImmediatePropagation()}function e_(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function t_(){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 cf(){return this.__zoom||Zi}function n_(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function r_(){return navigator.maxTouchPoints||"ontouchstart"in this}function o_(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 ng(){var e=e_,t=t_,n=o_,r=n_,o=r_,s=[0,1/0],i=[[-1/0,-1/0],[1/0,1/0]],l=250,a=Hs,c=Ki("start","zoom","end"),u,f,p,h=500,y=150,x=0,k=10;function m(S){S.property("__zoom",cf).on("wheel.zoom",N,{passive:!1}).on("mousedown.zoom",$).on("dblclick.zoom",A).filter(o).on("touchstart.zoom",L).on("touchmove.zoom",O).on("touchend.zoom touchcancel.zoom",F).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}m.transform=function(S,C,T,P){var b=S.selection?S.selection():S;b.property("__zoom",cf),S!==b?j(S,C,T,P):b.interrupt().each(function(){_(this,arguments).event(P).start().zoom(null,typeof C=="function"?C.apply(this,arguments):C).end()})},m.scaleBy=function(S,C,T,P){m.scaleTo(S,function(){var b=this.__zoom.k,I=typeof C=="function"?C.apply(this,arguments):C;return b*I},T,P)},m.scaleTo=function(S,C,T,P){m.transform(S,function(){var b=t.apply(this,arguments),I=this.__zoom,R=T==null?w(b):typeof T=="function"?T.apply(this,arguments):T,z=I.invert(R),D=typeof C=="function"?C.apply(this,arguments):C;return n(g(v(I,D),R,z),b,i)},T,P)},m.translateBy=function(S,C,T,P){m.transform(S,function(){return n(this.__zoom.translate(typeof C=="function"?C.apply(this,arguments):C,typeof T=="function"?T.apply(this,arguments):T),t.apply(this,arguments),i)},null,P)},m.translateTo=function(S,C,T,P,b){m.transform(S,function(){var I=t.apply(this,arguments),R=this.__zoom,z=P==null?w(I):typeof P=="function"?P.apply(this,arguments):P;return n(Zi.translate(z[0],z[1]).scale(R.k).translate(typeof C=="function"?-C.apply(this,arguments):-C,typeof T=="function"?-T.apply(this,arguments):-T),I,i)},P,b)};function v(S,C){return C=Math.max(s[0],Math.min(s[1],C)),C===S.k?S:new Vt(C,S.x,S.y)}function g(S,C,T){var P=C[0]-T[0]*S.k,b=C[1]-T[1]*S.k;return P===S.x&&b===S.y?S:new Vt(S.k,P,b)}function w(S){return[(+S[0][0]+ +S[1][0])/2,(+S[0][1]+ +S[1][1])/2]}function j(S,C,T,P){S.on("start.zoom",function(){_(this,arguments).event(P).start()}).on("interrupt.zoom end.zoom",function(){_(this,arguments).event(P).end()}).tween("zoom",function(){var b=this,I=arguments,R=_(b,I).event(P),z=t.apply(b,I),D=T==null?w(z):typeof T=="function"?T.apply(b,I):T,Y=Math.max(z[1][0]-z[0][0],z[1][1]-z[0][1]),W=b.__zoom,J=typeof C=="function"?C.apply(b,I):C,Z=a(W.invert(D).concat(Y/W.k),J.invert(D).concat(Y/J.k));return function(Q){if(Q===1)Q=J;else{var H=Z(Q),U=Y/H[2];Q=new Vt(U,D[0]-H[0]*U,D[1]-H[1]*U)}R.zoom(null,Q)}})}function _(S,C,T){return!T&&S.__zooming||new E(S,C)}function E(S,C){this.that=S,this.args=C,this.active=0,this.sourceEvent=null,this.extent=t.apply(S,C),this.taps=0}E.prototype={event:function(S){return S&&(this.sourceEvent=S),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(S,C){return this.mouse&&S!=="mouse"&&(this.mouse[1]=C.invert(this.mouse[0])),this.touch0&&S!=="touch"&&(this.touch0[1]=C.invert(this.touch0[0])),this.touch1&&S!=="touch"&&(this.touch1[1]=C.invert(this.touch1[0])),this.that.__zoom=C,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(S){var C=Xe(this.that).datum();c.call(S,this.that,new Zk(S,{sourceEvent:this.sourceEvent,target:m,transform:this.that.__zoom,dispatch:c}),C)}};function N(S,...C){if(!e.apply(this,arguments))return;var T=_(this,C).event(S),P=this.__zoom,b=Math.max(s[0],Math.min(s[1],P.k*Math.pow(2,r.apply(this,arguments)))),I=ft(S);if(T.wheel)(T.mouse[0][0]!==I[0]||T.mouse[0][1]!==I[1])&&(T.mouse[1]=P.invert(T.mouse[0]=I)),clearTimeout(T.wheel);else{if(P.k===b)return;T.mouse=[I,P.invert(I)],Ws(this),T.start()}Kr(S),T.wheel=setTimeout(R,y),T.zoom("mouse",n(g(v(P,b),T.mouse[0],T.mouse[1]),T.extent,i));function R(){T.wheel=null,T.end()}}function $(S,...C){if(p||!e.apply(this,arguments))return;var T=S.currentTarget,P=_(this,C,!0).event(S),b=Xe(S.view).on("mousemove.zoom",D,!0).on("mouseup.zoom",Y,!0),I=ft(S,T),R=S.clientX,z=S.clientY;Fm(S.view),Vl(S),P.mouse=[I,this.__zoom.invert(I)],Ws(this),P.start();function D(W){if(Kr(W),!P.moved){var J=W.clientX-R,Z=W.clientY-z;P.moved=J*J+Z*Z>x}P.event(W).zoom("mouse",n(g(P.that.__zoom,P.mouse[0]=ft(W,T),P.mouse[1]),P.extent,i))}function Y(W){b.on("mousemove.zoom mouseup.zoom",null),Om(W.view,P.moved),Kr(W),P.event(W).end()}}function A(S,...C){if(e.apply(this,arguments)){var T=this.__zoom,P=ft(S.changedTouches?S.changedTouches[0]:S,this),b=T.invert(P),I=T.k*(S.shiftKey?.5:2),R=n(g(v(T,I),P,b),t.apply(this,C),i);Kr(S),l>0?Xe(this).transition().duration(l).call(j,R,P,S):Xe(this).call(m.transform,R,P,S)}}function L(S,...C){if(e.apply(this,arguments)){var T=S.touches,P=T.length,b=_(this,C,S.changedTouches.length===P).event(S),I,R,z,D;for(Vl(S),R=0;R<P;++R)z=T[R],D=ft(z,this),D=[D,this.__zoom.invert(D),z.identifier],b.touch0?!b.touch1&&b.touch0[2]!==D[2]&&(b.touch1=D,b.taps=0):(b.touch0=D,I=!0,b.taps=1+!!u);u&&(u=clearTimeout(u)),I&&(b.taps<2&&(f=D[0],u=setTimeout(function(){u=null},h)),Ws(this),b.start())}}function O(S,...C){if(this.__zooming){var T=_(this,C).event(S),P=S.changedTouches,b=P.length,I,R,z,D;for(Kr(S),I=0;I<b;++I)R=P[I],z=ft(R,this),T.touch0&&T.touch0[2]===R.identifier?T.touch0[0]=z:T.touch1&&T.touch1[2]===R.identifier&&(T.touch1[0]=z);if(R=T.that.__zoom,T.touch1){var Y=T.touch0[0],W=T.touch0[1],J=T.touch1[0],Z=T.touch1[1],Q=(Q=J[0]-Y[0])*Q+(Q=J[1]-Y[1])*Q,H=(H=Z[0]-W[0])*H+(H=Z[1]-W[1])*H;R=v(R,Math.sqrt(Q/H)),z=[(Y[0]+J[0])/2,(Y[1]+J[1])/2],D=[(W[0]+Z[0])/2,(W[1]+Z[1])/2]}else if(T.touch0)z=T.touch0[0],D=T.touch0[1];else return;T.zoom("touch",n(g(R,z,D),T.extent,i))}}function F(S,...C){if(this.__zooming){var T=_(this,C).event(S),P=S.changedTouches,b=P.length,I,R;for(Vl(S),p&&clearTimeout(p),p=setTimeout(function(){p=null},h),I=0;I<b;++I)R=P[I],T.touch0&&T.touch0[2]===R.identifier?delete T.touch0:T.touch1&&T.touch1[2]===R.identifier&&delete T.touch1;if(T.touch1&&!T.touch0&&(T.touch0=T.touch1,delete T.touch1),T.touch0)T.touch0[1]=this.__zoom.invert(T.touch0[0]);else if(T.end(),T.taps===2&&(R=ft(R,this),Math.hypot(f[0]-R[0],f[1]-R[1])<k)){var z=Xe(this).on("dblclick.zoom");z&&z.apply(this,arguments)}}}return m.wheelDelta=function(S){return arguments.length?(r=typeof S=="function"?S:ks(+S),m):r},m.filter=function(S){return arguments.length?(e=typeof S=="function"?S:ks(!!S),m):e},m.touchable=function(S){return arguments.length?(o=typeof S=="function"?S:ks(!!S),m):o},m.extent=function(S){return arguments.length?(t=typeof S=="function"?S:ks([[+S[0][0],+S[0][1]],[+S[1][0],+S[1][1]]]),m):t},m.scaleExtent=function(S){return arguments.length?(s[0]=+S[0],s[1]=+S[1],m):[s[0],s[1]]},m.translateExtent=function(S){return arguments.length?(i[0][0]=+S[0][0],i[1][0]=+S[1][0],i[0][1]=+S[0][1],i[1][1]=+S[1][1],m):[[i[0][0],i[0][1]],[i[1][0],i[1][1]]]},m.constrain=function(S){return arguments.length?(n=S,m):n},m.duration=function(S){return arguments.length?(l=+S,m):l},m.interpolate=function(S){return arguments.length?(a=S,m):a},m.on=function(){var S=c.on.apply(c,arguments);return S===c?m:S},m.clickDistance=function(S){return arguments.length?(x=(S=+S)*S,m):Math.sqrt(x)},m.tapDistance=function(S){return arguments.length?(k=+S,m):k},m}const wt={error001:(e="react")=>`Seems like you have not used ${e==="svelte"?"SvelteFlowProvider":"ReactFlowProvider"} as an ancestor. Help: https://${e}flow.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 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,{id:t,sourceHandle:n,targetHandle:r})=>`Couldn't create edge for ${e} handle id: "${e==="source"?n:r}", edge id: ${t}.`,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.`,error013:(e="react")=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`,error014:()=>"useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.",error015:()=>"It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs.",error016:e=>`Edge with id "${e}" does not exist, it may have been removed. This can happen when an edge is deleted before the "onEdgeClick" handler is called.`},Do=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],rg=["Enter"," ","Escape"],og={"node.a11yDescription.default":"Press enter or space to select a node. Press delete to remove it and escape to cancel.","node.a11yDescription.keyboardDisabled":"Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.","node.a11yDescription.ariaLiveMessage":({direction:e,x:t,y:n})=>`Moved selected node ${e}. New position, x: ${t}, y: ${n}`,"edge.a11yDescription.default":"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.","controls.ariaLabel":"Control Panel","controls.zoomIn.ariaLabel":"Zoom In","controls.zoomOut.ariaLabel":"Zoom Out","controls.fitView.ariaLabel":"Fit View","controls.interactive.ariaLabel":"Toggle Interactivity","minimap.ariaLabel":"Mini Map","handle.ariaLabel":"Handle"};var Mr;(function(e){e.Strict="strict",e.Loose="loose"})(Mr||(Mr={}));var zn;(function(e){e.Free="free",e.Vertical="vertical",e.Horizontal="horizontal"})(zn||(zn={}));var zo;(function(e){e.Partial="partial",e.Full="full"})(zo||(zo={}));const sg={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null};var sn;(function(e){e.Bezier="default",e.Straight="straight",e.Step="step",e.SmoothStep="smoothstep",e.SimpleBezier="simplebezier"})(sn||(sn={}));var _i;(function(e){e.Arrow="arrow",e.ArrowClosed="arrowclosed"})(_i||(_i={}));var K;(function(e){e.Left="left",e.Top="top",e.Right="right",e.Bottom="bottom"})(K||(K={}));const uf={[K.Left]:K.Right,[K.Right]:K.Left,[K.Top]:K.Bottom,[K.Bottom]:K.Top};function ig(e){return e===null?null:e?"valid":"invalid"}const lg=e=>!!e&&typeof e=="object"&&"id"in e&&"source"in e&&"target"in e,s_=e=>!!e&&typeof e=="object"&&"id"in e&&"position"in e&&!("source"in e)&&!("target"in e),mu=e=>!!e&&typeof e=="object"&&"id"in e&&"internals"in e&&!("source"in e)&&!("target"in e),Ko=(e,t=[0,0])=>{const{width:n,height:r}=kt(e),o=e.origin??t,s=n*o[0],i=r*o[1];return{x:e.position.x-s,y:e.position.y-i}},i_=(e,t={nodeOrigin:[0,0]})=>{if(e.length===0)return{x:0,y:0,width:0,height:0};let n=!1;const r=e.reduce((o,s)=>{const i=typeof s=="string";let l=!t.nodeLookup&&!i?s:void 0;return t.nodeLookup&&(l=i?t.nodeLookup.get(s):mu(s)?s:t.nodeLookup.get(s.id)),l?(n=!0,el(o,Ni(l,t.nodeOrigin))):o},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return n?tl(r):{x:0,y:0,width:0,height:0}},Qo=(e,t={})=>{let n={x:1/0,y:1/0,x2:-1/0,y2:-1/0},r=!1;return e.forEach(o=>{(t.filter===void 0||t.filter(o))&&(n=el(n,Ni(o)),r=!0)}),r?tl(n):{x:0,y:0,width:0,height:0}},gu=(e,t,[n,r,o]=[0,0,1],s=!1,i=!1)=>{const l=(t.x-n)/o,a=(t.y-r)/o,c=t.width/o,u=t.height/o,f=[];for(const p of e.values()){const{measured:h,selectable:y=!0,hidden:x=!1}=p;if(i&&!y||x)continue;const k=h.width??p.width??p.initialWidth??0,m=h.height??p.height??p.initialHeight??0,{x:v,y:g}=p.internals.positionAbsolute,w=dg(l,a,c,u,v,g,k,m),j=k*m,_=s&&w>0;(!p.internals.handleBounds||_||w>=j||p.dragging)&&f.push(p)}return f},l_=(e,t)=>{const n=new Set;return e.forEach(r=>{n.add(r.id)}),t.filter(r=>n.has(r.source)||n.has(r.target))};function a_(e,t){const n=new Map,r=t!=null&&t.nodes?new Set(t.nodes.map(o=>o.id)):null;return e.forEach(o=>{let s;if(t!=null&&t.includeHiddenNodes){const{width:i,height:l}=kt(o);s=i>0&&l>0}else s=!!(o.measured.width&&o.measured.height&&!o.hidden);s&&(!r||r.has(o.id))&&n.set(o.id,o)}),n}async function c_({nodes:e,width:t,height:n,panZoom:r,minZoom:o,maxZoom:s},i){if(e.size===0)return!0;const l=a_(e,i),a=Qo(l),c=vu(a,t,n,(i==null?void 0:i.minZoom)??o,(i==null?void 0:i.maxZoom)??s,(i==null?void 0:i.padding)??.1);return await r.setViewport(c,{duration:i==null?void 0:i.duration,ease:i==null?void 0:i.ease,interpolate:i==null?void 0:i.interpolate}),!0}function ag({nodeId:e,nextPosition:t,nodeLookup:n,nodeOrigin:r=[0,0],nodeExtent:o,onError:s}){const i=n.get(e),l=i.parentId?n.get(i.parentId):void 0,{x:a,y:c}=l?l.internals.positionAbsolute:{x:0,y:0},u=i.origin??r;let f=i.extent||o;if(i.extent==="parent"&&!i.expandParent)if(!l)s==null||s("005",wt.error005());else{const{width:h,height:y}=kt(l);h&&y&&(f=[[a,c],[a+h,c+y]])}else l&&Xn(i.extent)&&(f=[[i.extent[0][0]+a,i.extent[0][1]+c],[i.extent[1][0]+a,i.extent[1][1]+c]]);const p=Xn(f)?Yn(t,f,i.measured):t;return(i.measured.width===void 0||i.measured.height===void 0)&&(s==null||s("015",wt.error015())),{position:{x:p.x-a+(i.measured.width??0)*u[0],y:p.y-c+(i.measured.height??0)*u[1]},positionAbsolute:p}}async function u_({nodesToRemove:e=[],edgesToRemove:t=[],nodes:n,edges:r,onBeforeDelete:o}){const s=new Set(e.map(p=>p.id)),i=[];for(const p of n){if(p.deletable===!1)continue;const h=s.has(p.id),y=!h&&p.parentId&&i.find(x=>x.id===p.parentId);(h||y)&&i.push(p)}const l=new Set(t.map(p=>p.id)),a=r.filter(p=>p.deletable!==!1),u=l_(i,a);for(const p of a)l.has(p.id)&&!u.find(y=>y.id===p.id)&&u.push(p);if(!o)return{edges:u,nodes:i};const f=await o({nodes:i,edges:u});return typeof f=="boolean"?f?{edges:u,nodes:i}:{edges:[],nodes:[]}:f}const Ir=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),Yn=(e={x:0,y:0},t,n)=>({x:Ir(e.x,t[0][0],t[1][0]-((n==null?void 0:n.width)??0)),y:Ir(e.y,t[0][1],t[1][1]-((n==null?void 0:n.height)??0))});function cg(e,t,n){const{width:r,height:o}=kt(n),{x:s,y:i}=n.internals.positionAbsolute;return Yn(e,[[s,i],[s+r,i+o]],t)}const df=(e,t,n)=>e<t?Ir(Math.abs(e-t),1,t)/t:e>n?-Ir(Math.abs(e-n),1,t)/t:0,yu=(e,t,n=15,r=40)=>{const o=df(e.x,r,t.width-r)*n,s=df(e.y,r,t.height-r)*n;return[o,s]},el=(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)}),Za=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),tl=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),Fo=(e,t=[0,0])=>{var o,s;const{x:n,y:r}=mu(e)?e.internals.positionAbsolute:Ko(e,t);return{x:n,y:r,width:((o=e.measured)==null?void 0:o.width)??e.width??e.initialWidth??0,height:((s=e.measured)==null?void 0:s.height)??e.height??e.initialHeight??0}},Ni=(e,t=[0,0])=>{var o,s;const{x:n,y:r}=mu(e)?e.internals.positionAbsolute:Ko(e,t);return{x:n,y:r,x2:n+(((o=e.measured)==null?void 0:o.width)??e.width??e.initialWidth??0),y2:r+(((s=e.measured)==null?void 0:s.height)??e.height??e.initialHeight??0)}},ug=(e,t)=>tl(el(Za(e),Za(t))),dg=(e,t,n,r,o,s,i,l)=>{const a=Math.max(0,Math.min(e+n,o+i)-Math.max(e,o)),c=Math.max(0,Math.min(t+r,s+l)-Math.max(t,s));return Math.ceil(a*c)},Ei=(e,t)=>dg(e.x,e.y,e.width,e.height,t.x,t.y,t.width,t.height),ff=e=>mt(e.width)&&mt(e.height)&&mt(e.x)&&mt(e.y),mt=e=>!isNaN(e)&&isFinite(e),fg=(e,t)=>(n,r)=>{},qo=(e,t=[1,1])=>({x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}),Jo=({x:e,y:t},[n,r,o],s=!1,i=[1,1])=>{const l={x:(e-n)/o,y:(t-r)/o};return s?qo(l,i):l},$r=({x:e,y:t},[n,r,o])=>({x:e*o+n,y:t*o+r});function Jn(e,t){if(typeof e=="number")return Math.floor((t-t/(1+e))*.5);if(typeof e=="string"&&e.endsWith("px")){const n=parseFloat(e);if(!Number.isNaN(n))return Math.floor(n)}if(typeof e=="string"&&e.endsWith("%")){const n=parseFloat(e);if(!Number.isNaN(n))return Math.floor(t*n*.01)}return console.error(`The padding value "${e}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function d_(e,t,n){if(typeof e=="string"||typeof e=="number"){const r=Jn(e,n),o=Jn(e,t);return{top:r,right:o,bottom:r,left:o,x:o*2,y:r*2}}if(typeof e=="object"){const r=Jn(e.top??e.y??0,n),o=Jn(e.bottom??e.y??0,n),s=Jn(e.left??e.x??0,t),i=Jn(e.right??e.x??0,t);return{top:r,right:i,bottom:o,left:s,x:s+i,y:r+o}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function f_(e,t,n,r,o,s){const{x:i,y:l}=$r(e,[t,n,r]),{x:a,y:c}=$r({x:e.x+e.width,y:e.y+e.height},[t,n,r]),u=o-a,f=s-c;return{left:Math.floor(i),top:Math.floor(l),right:Math.floor(u),bottom:Math.floor(f)}}const vu=(e,t,n,r,o,s)=>{const i=d_(s,t,n),l=(t-i.x)/e.width,a=(n-i.y)/e.height,c=Math.min(l,a),u=Ir(c,r,o),f=e.x+e.width/2,p=e.y+e.height/2,h=t/2-f*u,y=n/2-p*u,x=f_(e,h,y,u,t,n),k={left:Math.min(x.left-i.left,0),top:Math.min(x.top-i.top,0),right:Math.min(x.right-i.right,0),bottom:Math.min(x.bottom-i.bottom,0)};return{x:h-k.left+k.right,y:y-k.top+k.bottom,zoom:u}},Oo=()=>{var e;return typeof navigator<"u"&&((e=navigator==null?void 0:navigator.userAgent)==null?void 0:e.indexOf("Mac"))>=0};function Xn(e){return e!=null&&e!=="parent"}function kt(e){var t,n;return{width:((t=e.measured)==null?void 0:t.width)??e.width??e.initialWidth??0,height:((n=e.measured)==null?void 0:n.height)??e.height??e.initialHeight??0}}function pg(e){var t,n;return(((t=e.measured)==null?void 0:t.width)??e.width??e.initialWidth)!==void 0&&(((n=e.measured)==null?void 0:n.height)??e.height??e.initialHeight)!==void 0}function hg(e,t={width:0,height:0},n,r,o){const s={...e},i=r.get(n);if(i){const l=i.origin||o;s.x+=i.internals.positionAbsolute.x-(t.width??0)*l[0],s.y+=i.internals.positionAbsolute.y-(t.height??0)*l[1]}return s}function pf(e,t){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}function p_(){let e,t;return{promise:new Promise((r,o)=>{e=r,t=o}),resolve:e,reject:t}}function h_(e){return{...og,...e||{}}}function mo(e,{snapGrid:t=[0,0],snapToGrid:n=!1,transform:r,containerBounds:o}){const{x:s,y:i}=gt(e),l=Jo({x:s-((o==null?void 0:o.left)??0),y:i-((o==null?void 0:o.top)??0)},r),{x:a,y:c}=n?qo(l,t):l;return{xSnapped:a,ySnapped:c,...l}}const xu=e=>({width:e.offsetWidth,height:e.offsetHeight}),mg=e=>{var t;return((t=e==null?void 0:e.getRootNode)==null?void 0:t.call(e))||(window==null?void 0:window.document)},m_=["INPUT","SELECT","TEXTAREA"];function gg(e){var r,o;const t=((o=(r=e.composedPath)==null?void 0:r.call(e))==null?void 0:o[0])||e.target;return(t==null?void 0:t.nodeType)!==1?!1:m_.includes(t.nodeName)||t.hasAttribute("contenteditable")||!!t.closest(".nokey")}const yg=e=>"clientX"in e,gt=(e,t)=>{var s,i;const n=yg(e),r=n?e.clientX:(s=e.touches)==null?void 0:s[0].clientX,o=n?e.clientY:(i=e.touches)==null?void 0:i[0].clientY;return{x:r-((t==null?void 0:t.left)??0),y:o-((t==null?void 0:t.top)??0)}},hf=(e,t,n,r,o)=>{const s=t.querySelectorAll(`.${e}`);return!s||!s.length?null:Array.from(s).map(i=>{const l=i.getBoundingClientRect();return{id:i.getAttribute("data-handleid"),type:e,nodeId:o,position:i.getAttribute("data-handlepos"),x:(l.left-n.left)/r,y:(l.top-n.top)/r,...xu(i)}})};function vg({sourceX:e,sourceY:t,targetX:n,targetY:r,sourceControlX:o,sourceControlY:s,targetControlX:i,targetControlY:l}){const a=e*.125+o*.375+i*.375+n*.125,c=t*.125+s*.375+l*.375+r*.125,u=Math.abs(a-e),f=Math.abs(c-t);return[a,c,u,f]}function _s(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function mf({pos:e,x1:t,y1:n,x2:r,y2:o,c:s}){switch(e){case K.Left:return[t-_s(t-r,s),n];case K.Right:return[t+_s(r-t,s),n];case K.Top:return[t,n-_s(n-o,s)];case K.Bottom:return[t,n+_s(o-n,s)]}}function xg({sourceX:e,sourceY:t,sourcePosition:n=K.Bottom,targetX:r,targetY:o,targetPosition:s=K.Top,curvature:i=.25}){const[l,a]=mf({pos:n,x1:e,y1:t,x2:r,y2:o,c:i}),[c,u]=mf({pos:s,x1:r,y1:o,x2:e,y2:t,c:i}),[f,p,h,y]=vg({sourceX:e,sourceY:t,targetX:r,targetY:o,sourceControlX:l,sourceControlY:a,targetControlX:c,targetControlY:u});return[`M${e},${t} C${l},${a} ${c},${u} ${r},${o}`,f,p,h,y]}function wg({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,l=r<t?r+i:r-i;return[s,l,o,i]}function g_({sourceNode:e,targetNode:t,selected:n=!1,zIndex:r=0,elevateOnSelect:o=!1,zIndexMode:s="basic"}){if(s==="manual")return r;const i=o&&n?r+1e3:r,l=Math.max(e.parentId||o&&e.selected?e.internals.z:0,t.parentId||o&&t.selected?t.internals.z:0);return i+l}function y_({sourceNode:e,targetNode:t,width:n,height:r,transform:o}){const s=el(Ni(e),Ni(t));s.x===s.x2&&(s.x2+=1),s.y===s.y2&&(s.y2+=1);const i={x:-o[0]/o[2],y:-o[1]/o[2],width:n/o[2],height:r/o[2]};return Ei(i,tl(s))>0}const v_=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`xy-edge__${e}${t||""}-${n}${r||""}`,x_=(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)),w_=(e,t,n={})=>{var s;if(!e.source||!e.target)return(s=n.onError)==null||s.call(n,"006",wt.error006()),t;const r=n.getEdgeId||v_;let o;return lg(e)?o={...e}:o={...e,id:r(e)},x_(o,t)?t:(o.sourceHandle===null&&delete o.sourceHandle,o.targetHandle===null&&delete o.targetHandle,t.concat(o))};function Sg({sourceX:e,sourceY:t,targetX:n,targetY:r}){const[o,s,i,l]=wg({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,o,s,i,l]}const gf={[K.Left]:{x:-1,y:0},[K.Right]:{x:1,y:0},[K.Top]:{x:0,y:-1},[K.Bottom]:{x:0,y:1}},S_=({source:e,sourcePosition:t=K.Bottom,target:n})=>t===K.Left||t===K.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},yf=(e,t)=>Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2));function k_({source:e,sourcePosition:t=K.Bottom,target:n,targetPosition:r=K.Top,center:o,offset:s,stepPosition:i}){const l=gf[t],a=gf[r],c={x:e.x+l.x*s,y:e.y+l.y*s},u={x:n.x+a.x*s,y:n.y+a.y*s},f=S_({source:c,sourcePosition:t,target:u}),p=f.x!==0?"x":"y",h=f[p];let y=[],x,k;const m={x:0,y:0},v={x:0,y:0},[,,g,w]=wg({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(l[p]*a[p]===-1){p==="x"?(x=o.x??c.x+(u.x-c.x)*i,k=o.y??(c.y+u.y)/2):(x=o.x??(c.x+u.x)/2,k=o.y??c.y+(u.y-c.y)*i);const N=[{x,y:c.y},{x,y:u.y}],$=[{x:c.x,y:k},{x:u.x,y:k}];l[p]===h?y=p==="x"?N:$:y=p==="x"?$:N}else{const N=[{x:c.x,y:u.y}],$=[{x:u.x,y:c.y}];if(p==="x"?y=l.x===h?$:N:y=l.y===h?N:$,t===r){const S=Math.abs(e[p]-n[p]);if(S<=s){const C=Math.min(s-1,s-S);l[p]===h?m[p]=(c[p]>e[p]?-1:1)*C:v[p]=(u[p]>n[p]?-1:1)*C}}if(t!==r){const S=p==="x"?"y":"x",C=l[p]===a[S],T=c[S]>u[S],P=c[S]<u[S];(l[p]===1&&(!C&&T||C&&P)||l[p]!==1&&(!C&&P||C&&T))&&(y=p==="x"?N:$)}const A={x:c.x+m.x,y:c.y+m.y},L={x:u.x+v.x,y:u.y+v.y},O=Math.max(Math.abs(A.x-y[0].x),Math.abs(L.x-y[0].x)),F=Math.max(Math.abs(A.y-y[0].y),Math.abs(L.y-y[0].y));O>=F?(x=(A.x+L.x)/2,k=y[0].y):(x=y[0].x,k=(A.y+L.y)/2)}const j={x:c.x+m.x,y:c.y+m.y},_={x:u.x+v.x,y:u.y+v.y};return[[e,...j.x!==y[0].x||j.y!==y[0].y?[j]:[],...y,..._.x!==y[y.length-1].x||_.y!==y[y.length-1].y?[_]:[],n],x,k,g,w]}function __(e,t,n,r){const o=Math.min(yf(e,t)/2,yf(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 c=e.x<n.x?-1:1,u=e.y<n.y?1:-1;return`L ${s+o*c},${i}Q ${s},${i} ${s},${i+o*u}`}const l=e.x<n.x?1:-1,a=e.y<n.y?-1:1;return`L ${s},${i+o*a}Q ${s},${i} ${s+o*l},${i}`}function ec({sourceX:e,sourceY:t,sourcePosition:n=K.Bottom,targetX:r,targetY:o,targetPosition:s=K.Top,borderRadius:i=5,centerX:l,centerY:a,offset:c=20,stepPosition:u=.5}){const[f,p,h,y,x]=k_({source:{x:e,y:t},sourcePosition:n,target:{x:r,y:o},targetPosition:s,center:{x:l,y:a},offset:c,stepPosition:u});let k=`M${f[0].x} ${f[0].y}`;for(let m=1;m<f.length-1;m++)k+=__(f[m-1],f[m],f[m+1],i);return k+=`L${f[f.length-1].x} ${f[f.length-1].y}`,[k,p,h,y,x]}function vf(e){var t;return e&&!!(e.internals.handleBounds||(t=e.handles)!=null&&t.length)&&!!(e.measured.width||e.width||e.initialWidth)}function N_(e){var f;const{sourceNode:t,targetNode:n}=e;if(!vf(t)||!vf(n))return null;const r=t.internals.handleBounds||xf(t.handles),o=n.internals.handleBounds||xf(n.handles),s=wf((r==null?void 0:r.source)??[],e.sourceHandle),i=wf(e.connectionMode===Mr.Strict?(o==null?void 0:o.target)??[]:((o==null?void 0:o.target)??[]).concat((o==null?void 0:o.source)??[]),e.targetHandle);if(!s||!i)return(f=e.onError)==null||f.call(e,"008",wt.error008(s?"target":"source",{id:e.id,sourceHandle:e.sourceHandle,targetHandle:e.targetHandle})),null;const l=(s==null?void 0:s.position)||K.Bottom,a=(i==null?void 0:i.position)||K.Top,c=Gn(t,s,l),u=Gn(n,i,a);return{sourceX:c.x,sourceY:c.y,targetX:u.x,targetY:u.y,sourcePosition:l,targetPosition:a}}function xf(e){if(!e)return null;const t=[],n=[];for(const r of e)r.width=r.width??1,r.height=r.height??1,r.type==="source"?t.push(r):r.type==="target"&&n.push(r);return{source:t,target:n}}function Gn(e,t,n=K.Left,r=!1){const o=((t==null?void 0:t.x)??0)+e.internals.positionAbsolute.x,s=((t==null?void 0:t.y)??0)+e.internals.positionAbsolute.y,{width:i,height:l}=t??kt(e);if(r)return{x:o+i/2,y:s+l/2};switch((t==null?void 0:t.position)??n){case K.Top:return{x:o+i/2,y:s};case K.Right:return{x:o+i,y:s+l/2};case K.Bottom:return{x:o+i/2,y:s+l};case K.Left:return{x:o,y:s+l/2}}}function wf(e,t){return e&&(t?e.find(n=>n.id===t):e[0])||null}function tc(e,t){return e?typeof e=="string"?e:`${t?`${t}__`:""}${Object.keys(e).sort().map(r=>`${r}=${e[r]}`).join("&")}`:""}function E_(e,{id:t,defaultColor:n,defaultMarkerStart:r,defaultMarkerEnd:o}){const s=new Set;return e.reduce((i,l)=>([l.markerStart||r,l.markerEnd||o].forEach(a=>{if(a&&typeof a=="object"){const c=tc(a,t);s.has(c)||(i.push({id:c,color:a.color||n,...a}),s.add(c))}}),i),[]).sort((i,l)=>i.id.localeCompare(l.id))}const kg=1e3,C_=10,wu={nodeOrigin:[0,0],nodeExtent:Do,elevateNodesOnSelect:!0,zIndexMode:"basic",defaults:{}},j_={...wu,checkEquality:!0};function Su(e,t){const n={...e};for(const r in t)t[r]!==void 0&&(n[r]=t[r]);return n}function b_(e,t,n){const r=Su(wu,n);for(const o of e.values())if(o.parentId)_u(o,e,t,r);else{const s=Ko(o,r.nodeOrigin),i=Xn(o.extent)?o.extent:r.nodeExtent,l=Yn(s,i,kt(o));o.internals.positionAbsolute=l}}function P_(e,t){if(!e.handles)return e.measured?t==null?void 0:t.internals.handleBounds:void 0;const n=[],r=[];for(const o of e.handles){const s={id:o.id,width:o.width??1,height:o.height??1,nodeId:e.id,x:o.x,y:o.y,position:o.position,type:o.type};o.type==="source"?n.push(s):o.type==="target"&&r.push(s)}return{source:n,target:r}}function ku(e){return e==="manual"}function nc(e,t,n,r={}){var u,f;const o=Su(j_,r),s={i:0},i=new Map(t),l=o!=null&&o.elevateNodesOnSelect&&!ku(o.zIndexMode)?kg:0;let a=e.length>0,c=!1;t.clear(),n.clear();for(const p of e){let h=i.get(p.id);if(o.checkEquality&&p===(h==null?void 0:h.internals.userNode))t.set(p.id,h);else{const y=Ko(p,o.nodeOrigin),x=Xn(p.extent)?p.extent:o.nodeExtent,k=Yn(y,x,kt(p));h={...o.defaults,...p,measured:{width:(u=p.measured)==null?void 0:u.width,height:(f=p.measured)==null?void 0:f.height},internals:{positionAbsolute:k,handleBounds:P_(p,h),z:_g(p,l,o.zIndexMode),userNode:p}},t.set(p.id,h)}(h.measured===void 0||h.measured.width===void 0||h.measured.height===void 0)&&!h.hidden&&(a=!1),p.parentId&&_u(h,t,n,r,s),c||(c=p.selected??!1)}return{nodesInitialized:a,hasSelectedNodes:c}}function T_(e,t){if(!e.parentId)return;const n=t.get(e.parentId);n?n.set(e.id,e):t.set(e.parentId,new Map([[e.id,e]]))}function _u(e,t,n,r,o){const{elevateNodesOnSelect:s,nodeOrigin:i,nodeExtent:l,zIndexMode:a}=Su(wu,r),c=e.parentId,u=t.get(c);if(!u){console.warn(`Parent node ${c} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}T_(e,n),o&&!u.parentId&&u.internals.rootParentIndex===void 0&&a==="auto"&&(u.internals.rootParentIndex=++o.i,u.internals.z=u.internals.z+o.i*C_),o&&u.internals.rootParentIndex!==void 0&&(o.i=u.internals.rootParentIndex);const f=s&&!ku(a)?kg:0,{x:p,y:h,z:y}=M_(e,u,i,l,f,a),{positionAbsolute:x}=e.internals,k=p!==x.x||h!==x.y;(k||y!==e.internals.z)&&t.set(e.id,{...e,internals:{...e.internals,positionAbsolute:k?{x:p,y:h}:x,z:y}})}function _g(e,t,n){const r=mt(e.zIndex)?e.zIndex:0;return ku(n)?r:r+(e.selected?t:0)}function M_(e,t,n,r,o,s){const{x:i,y:l}=t.internals.positionAbsolute,a=kt(e),c=Ko(e,n),u=Xn(e.extent)?Yn(c,e.extent,a):c;let f=Yn({x:i+u.x,y:l+u.y},r,a);e.extent==="parent"&&(f=cg(f,a,t));const p=_g(e,o,s),h=t.internals.z??0;return{x:f.x,y:f.y,z:h>=p?h+1:p}}function Nu(e,t,n,r=[0,0]){var i;const o=[],s=new Map;for(const l of e){const a=t.get(l.parentId);if(!a)continue;const c=((i=s.get(l.parentId))==null?void 0:i.expandedRect)??Fo(a),u=ug(c,l.rect);s.set(l.parentId,{expandedRect:u,parent:a})}return s.size>0&&s.forEach(({expandedRect:l,parent:a},c)=>{var g;const u=a.internals.positionAbsolute,f=kt(a),p=a.origin??r,h=l.x<u.x?Math.round(Math.abs(u.x-l.x)):0,y=l.y<u.y?Math.round(Math.abs(u.y-l.y)):0,x=Math.max(f.width,Math.round(l.width)),k=Math.max(f.height,Math.round(l.height)),m=(x-f.width)*p[0],v=(k-f.height)*p[1];(h>0||y>0||m||v)&&(o.push({id:c,type:"position",position:{x:a.position.x-h+m,y:a.position.y-y+v}}),(g=n.get(c))==null||g.forEach(w=>{e.some(j=>j.id===w.id)||o.push({id:w.id,type:"position",position:{x:w.position.x+h,y:w.position.y+y}})})),(f.width<l.width||f.height<l.height||h||y)&&o.push({id:c,type:"dimensions",setAttributes:!0,dimensions:{width:x+(h?p[0]*h-m:0),height:k+(y?p[1]*y-v:0)}})}),o}function I_(e,t,n,r,o,s,i){const l=r==null?void 0:r.querySelector(".xyflow__viewport");let a=!1;if(!l)return{changes:[],updatedInternals:a};const c=[],u=window.getComputedStyle(l),{m22:f}=new window.DOMMatrixReadOnly(u.transform),p=[];for(const h of e.values()){const y=t.get(h.id);if(!y)continue;if(y.hidden){t.set(y.id,{...y,internals:{...y.internals,handleBounds:void 0}}),a=!0;continue}const x=xu(h.nodeElement),k=y.measured.width!==x.width||y.measured.height!==x.height;if(!!(x.width&&x.height&&(k||!y.internals.handleBounds||h.force))){const v=h.nodeElement.getBoundingClientRect(),g=Xn(y.extent)?y.extent:s;let{positionAbsolute:w}=y.internals;if(y.parentId&&y.extent==="parent"){const _=t.get(y.parentId);_&&(w=cg(w,x,_))}else g&&(w=Yn(w,g,x));const j={...y,measured:x,internals:{...y.internals,positionAbsolute:w,handleBounds:{source:hf("source",h.nodeElement,v,f,y.id),target:hf("target",h.nodeElement,v,f,y.id)}}};t.set(y.id,j),y.parentId&&_u(j,t,n,{nodeOrigin:o,zIndexMode:i}),a=!0,k&&(c.push({id:y.id,type:"dimensions",dimensions:x}),y.expandParent&&y.parentId&&p.push({id:y.id,parentId:y.parentId,rect:Fo(j,o)}))}}if(p.length>0){const h=Nu(p,t,n,o);c.push(...h)}return{changes:c,updatedInternals:a}}async function $_({delta:e,panZoom:t,transform:n,translateExtent:r,width:o,height:s}){if(!t||!e.x&&!e.y)return!1;const i=await t.setViewportConstrained({x:n[0]+e.x,y:n[1]+e.y,zoom:n[2]},[[0,0],[o,s]],r);return!!i&&(i.x!==n[0]||i.y!==n[1]||i.k!==n[2])}function Sf(e,t,n,r,o,s){let i=o;const l=r.get(i)||new Map;r.set(i,l.set(n,t)),i=`${o}-${e}`;const a=r.get(i)||new Map;if(r.set(i,a.set(n,t)),s){i=`${o}-${e}-${s}`;const c=r.get(i)||new Map;r.set(i,c.set(n,t))}}function Ng(e,t,n){e.clear(),t.clear();for(const r of n){const{source:o,target:s,sourceHandle:i=null,targetHandle:l=null}=r,a={edgeId:r.id,source:o,target:s,sourceHandle:i,targetHandle:l},c=`${o}-${i}--${s}-${l}`,u=`${s}-${l}--${o}-${i}`;Sf("source",a,u,e,o,i),Sf("target",a,c,e,s,l),t.set(r.id,r)}}function Eg(e,t){if(!e.parentId)return!1;const n=t.get(e.parentId);return n?n.selected?!0:Eg(n,t):!1}function kf(e,t,n){var o;let r=e;do{if((o=r==null?void 0:r.matches)!=null&&o.call(r,t))return!0;if(r===n)return!1;r=r==null?void 0:r.parentElement}while(r);return!1}function L_(e,t,n,r){const o=new Map;for(const[s,i]of e)if((i.selected||i.id===r)&&(!i.parentId||!Eg(i,e))&&(i.draggable||t&&typeof i.draggable>"u")){const l=e.get(s);l&&o.set(s,{id:s,position:l.position||{x:0,y:0},distance:{x:n.x-l.internals.positionAbsolute.x,y:n.y-l.internals.positionAbsolute.y},extent:l.extent,parentId:l.parentId,origin:l.origin,expandParent:l.expandParent,internals:{positionAbsolute:l.internals.positionAbsolute||{x:0,y:0}},measured:{width:l.measured.width??0,height:l.measured.height??0}})}return o}function Wl({nodeId:e,dragItems:t,nodeLookup:n,dragging:r=!0}){var i,l,a;const o=[];for(const[c,u]of t){const f=(i=n.get(c))==null?void 0:i.internals.userNode;f&&o.push({...f,position:u.position,dragging:r})}if(!e)return[o[0],o];const s=(l=n.get(e))==null?void 0:l.internals.userNode;return[s?{...s,position:((a=t.get(e))==null?void 0:a.position)||s.position,dragging:r}:o[0],o]}function R_({dragItems:e,snapGrid:t,x:n,y:r}){const o=e.values().next().value;if(!o)return null;const s={x:n-o.distance.x,y:r-o.distance.y},i=qo(s,t);return{x:i.x-s.x,y:i.y-s.y}}function A_({onNodeMouseDown:e,getStoreItems:t,onDragStart:n,onDrag:r,onDragStop:o}){let s={x:null,y:null},i=0,l=new Map,a=!1,c={x:0,y:0},u=null,f=!1,p=null,h=!1,y=!1,x=null;function k({noDragClassName:v,handleSelector:g,domNode:w,isSelectable:j,nodeId:_,nodeClickDistance:E=0}){p=Xe(w);function N({x:O,y:F}){const{nodeLookup:S,nodeExtent:C,snapGrid:T,snapToGrid:P,nodeOrigin:b,onNodeDrag:I,onSelectionDrag:R,onError:z,updateNodePositions:D}=t();s={x:O,y:F};let Y=!1;const W=l.size>1,J=W&&C?Za(Qo(l)):null,Z=W&&P?R_({dragItems:l,snapGrid:T,x:O,y:F}):null;for(const[Q,H]of l){if(!S.has(Q))continue;let U={x:O-H.distance.x,y:F-H.distance.y};P&&(U=Z?{x:Math.round(U.x+Z.x),y:Math.round(U.y+Z.y)}:qo(U,T));let ee=null;if(W&&C&&!H.extent&&J){const{positionAbsolute:G}=H.internals,oe=G.x-J.x+C[0][0],ae=G.x+H.measured.width-J.x2+C[1][0],ce=G.y-J.y+C[0][1],me=G.y+H.measured.height-J.y2+C[1][1];ee=[[oe,ce],[ae,me]]}const{position:ne,positionAbsolute:q}=ag({nodeId:Q,nextPosition:U,nodeLookup:S,nodeExtent:ee||C,nodeOrigin:b,onError:z});Y=Y||H.position.x!==ne.x||H.position.y!==ne.y,H.position=ne,H.internals.positionAbsolute=q}if(y=y||Y,!!Y&&(D(l,!0),x&&(r||I||!_&&R))){const[Q,H]=Wl({nodeId:_,dragItems:l,nodeLookup:S});r==null||r(x,l,Q,H),I==null||I(x,Q,H),_||R==null||R(x,H)}}async function $(){if(!u)return;const{transform:O,panBy:F,autoPanSpeed:S,autoPanOnNodeDrag:C}=t();if(!C){a=!1,cancelAnimationFrame(i);return}const[T,P]=yu(c,u,S);(T!==0||P!==0)&&(s.x=(s.x??0)-T/O[2],s.y=(s.y??0)-P/O[2],await F({x:T,y:P})&&N(s)),i=requestAnimationFrame($)}function A(O){var W;const{nodeLookup:F,multiSelectionActive:S,nodesDraggable:C,transform:T,snapGrid:P,snapToGrid:b,selectNodesOnDrag:I,onNodeDragStart:R,onSelectionDragStart:z,unselectNodesAndEdges:D}=t();f=!0,(!I||!j)&&!S&&_&&((W=F.get(_))!=null&&W.selected||D()),j&&I&&_&&(e==null||e(_));const Y=mo(O.sourceEvent,{transform:T,snapGrid:P,snapToGrid:b,containerBounds:u});if(s=Y,l=L_(F,C,Y,_),l.size>0&&(n||R||!_&&z)){const[J,Z]=Wl({nodeId:_,dragItems:l,nodeLookup:F});n==null||n(O.sourceEvent,l,J,Z),R==null||R(O.sourceEvent,J,Z),_||z==null||z(O.sourceEvent,Z)}}const L=Hm().clickDistance(E).on("start",O=>{const{domNode:F,nodeDragThreshold:S,transform:C,snapGrid:T,snapToGrid:P}=t();u=(F==null?void 0:F.getBoundingClientRect())||null,h=!1,y=!1,x=O.sourceEvent,S===0&&A(O),s=mo(O.sourceEvent,{transform:C,snapGrid:T,snapToGrid:P,containerBounds:u}),c=gt(O.sourceEvent,u)}).on("drag",O=>{const{autoPanOnNodeDrag:F,transform:S,snapGrid:C,snapToGrid:T,nodeDragThreshold:P,nodeLookup:b}=t(),I=mo(O.sourceEvent,{transform:S,snapGrid:C,snapToGrid:T,containerBounds:u});if(x=O.sourceEvent,(O.sourceEvent.type==="touchmove"&&O.sourceEvent.touches.length>1||_&&!b.has(_))&&(h=!0),!h){if(!a&&F&&f&&(a=!0,$()),!f){const R=gt(O.sourceEvent,u),z=R.x-c.x,D=R.y-c.y;Math.sqrt(z*z+D*D)>P&&A(O)}(s.x!==I.xSnapped||s.y!==I.ySnapped)&&l&&f&&(c=gt(O.sourceEvent,u),N(I))}}).on("end",O=>{if(!f||h){h&&l.size>0&&t().updateNodePositions(l,!1);return}if(a=!1,f=!1,cancelAnimationFrame(i),l.size>0){const{nodeLookup:F,updateNodePositions:S,onNodeDragStop:C,onSelectionDragStop:T}=t();if(y&&(S(l,!1),y=!1),o||C||!_&&T){const[P,b]=Wl({nodeId:_,dragItems:l,nodeLookup:F,dragging:!1});o==null||o(O.sourceEvent,l,P,b),C==null||C(O.sourceEvent,P,b),_||T==null||T(O.sourceEvent,b)}}}).filter(O=>{const F=O.target;return!O.button&&(!v||!kf(F,`.${v}`,w))&&(!g||kf(F,g,w))});p.call(L)}function m(){p==null||p.on(".drag",null)}return{update:k,destroy:m}}function D_(e,t,n){const r=[],o={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(const s of t.values())Ei(o,Fo(s))>0&&r.push(s);return r}const z_=250;function F_(e,t,n,r){var l,a;let o=[],s=1/0;const i=D_(e,n,t+z_);for(const c of i){const u=[...((l=c.internals.handleBounds)==null?void 0:l.source)??[],...((a=c.internals.handleBounds)==null?void 0:a.target)??[]];for(const f of u){if(r.nodeId===f.nodeId&&r.type===f.type&&r.id===f.id)continue;const{x:p,y:h}=Gn(c,f,f.position,!0),y=Math.sqrt(Math.pow(p-e.x,2)+Math.pow(h-e.y,2));y>t||(y<s?(o=[{...f,x:p,y:h}],s=y):y===s&&o.push({...f,x:p,y:h}))}}if(!o.length)return null;if(o.length>1){const c=r.type==="source"?"target":"source";return o.find(u=>u.type===c)??o[0]}return o[0]}function Cg(e,t,n,r,o,s=!1){var c,u,f;const i=r.get(e);if(!i)return null;const l=o==="strict"?(c=i.internals.handleBounds)==null?void 0:c[t]:[...((u=i.internals.handleBounds)==null?void 0:u.source)??[],...((f=i.internals.handleBounds)==null?void 0:f.target)??[]],a=(n?l==null?void 0:l.find(p=>p.id===n):l==null?void 0:l[0])??null;return a&&s?{...a,...Gn(i,a,a.position,!0)}:a}function jg(e,t){return e||(t!=null&&t.classList.contains("target")?"target":t!=null&&t.classList.contains("source")?"source":null)}function O_(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}const bg=()=>!0;function H_(e,{connectionMode:t,connectionRadius:n,handleId:r,nodeId:o,edgeUpdaterType:s,isTarget:i,domNode:l,nodeLookup:a,lib:c,autoPanOnConnect:u,flowId:f,panBy:p,cancelConnection:h,onConnectStart:y,onConnect:x,onConnectEnd:k,isValidConnection:m=bg,onReconnectEnd:v,updateConnection:g,getTransform:w,getFromHandle:j,autoPanSpeed:_,dragThreshold:E=1,handleDomNode:N}){const $=mg(e.target);let A=0,L;const{x:O,y:F}=gt(e),S=jg(s,N),C=l==null?void 0:l.getBoundingClientRect();let T=!1;if(!C||!S)return;const P=Cg(o,S,r,a,t);if(!P)return;let b=gt(e,C),I=!1,R=null,z=!1,D=null;function Y(){if(!u||!C)return;const[ne,q]=yu(b,C,_);p({x:ne,y:q}),A=requestAnimationFrame(Y)}const W={...P,nodeId:o,type:S,position:P.position},J=a.get(o);let Q={inProgress:!0,isValid:null,from:Gn(J,W,K.Left,!0),fromHandle:W,fromPosition:W.position,fromNode:J,to:b,toHandle:null,toPosition:uf[W.position],toNode:null,pointer:b};function H(){T=!0,g(Q),y==null||y(e,{nodeId:o,handleId:r,handleType:S})}E===0&&H();function U(ne){if(!T){const{x:me,y:et}=gt(ne),_t=me-O,Nt=et-F;if(!(_t*_t+Nt*Nt>E*E))return;H()}if(!j()||!W){ee(ne);return}const q=w();b=gt(ne,C),L=F_(Jo(b,q,!1,[1,1]),n,a,W),I||(Y(),I=!0);const G=Pg(ne,{handle:L,connectionMode:t,fromNodeId:o,fromHandleId:r,fromType:i?"target":"source",isValidConnection:m,doc:$,lib:c,flowId:f,nodeLookup:a});D=G.handleDomNode,R=G.connection,z=O_(!!L,G.isValid);const oe=a.get(o),ae=oe?Gn(oe,W,K.Left,!0):Q.from,ce={...Q,from:ae,isValid:z,to:G.toHandle&&z?$r({x:G.toHandle.x,y:G.toHandle.y},q):b,toHandle:G.toHandle,toPosition:z&&G.toHandle?G.toHandle.position:uf[W.position],toNode:G.toHandle?a.get(G.toHandle.nodeId):null,pointer:b};g(ce),Q=ce}function ee(ne){if(!("touches"in ne&&ne.touches.length>0)){if(T){(L||D)&&R&&z&&(x==null||x(R));const{inProgress:q,...G}=Q,oe={...G,toPosition:Q.toHandle?Q.toPosition:null};k==null||k(ne,oe),s&&(v==null||v(ne,oe))}h(),cancelAnimationFrame(A),I=!1,z=!1,R=null,D=null,$.removeEventListener("mousemove",U),$.removeEventListener("mouseup",ee),$.removeEventListener("touchmove",U),$.removeEventListener("touchend",ee)}}$.addEventListener("mousemove",U),$.addEventListener("mouseup",ee),$.addEventListener("touchmove",U),$.addEventListener("touchend",ee)}function Pg(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:o,fromType:s,doc:i,lib:l,flowId:a,isValidConnection:c=bg,nodeLookup:u}){const f=s==="target",p=t?i.querySelector(`.${l}-flow__handle[data-id="${a}-${t==null?void 0:t.nodeId}-${t==null?void 0:t.id}-${t==null?void 0:t.type}"]`):null,{x:h,y}=gt(e),x=i.elementFromPoint(h,y),k=x!=null&&x.classList.contains(`${l}-flow__handle`)?x:p,m={handleDomNode:k,isValid:!1,connection:null,toHandle:null};if(k){const v=jg(void 0,k),g=k.getAttribute("data-nodeid"),w=k.getAttribute("data-handleid"),j=k.classList.contains("connectable"),_=k.classList.contains("connectableend");if(!g||!v)return m;const E={source:f?g:r,sourceHandle:f?w:o,target:f?r:g,targetHandle:f?o:w};m.connection=E;const $=j&&_&&(n===Mr.Strict?f&&v==="source"||!f&&v==="target":g!==r||w!==o);m.isValid=$&&c(E),m.toHandle=Cg(g,v,w,u,n,!0)}return m}const rc={onPointerDown:H_,isValid:Pg};function B_({domNode:e,panZoom:t,getTransform:n,getViewScale:r}){const o=Xe(e);function s({translateExtent:l,width:a,height:c,zoomStep:u=1,pannable:f=!0,zoomable:p=!0,inversePan:h=!1}){const y=g=>{if(g.sourceEvent.type!=="wheel"||!t)return;const w=n(),j=g.sourceEvent.ctrlKey&&Oo()?10:1,_=-g.sourceEvent.deltaY*(g.sourceEvent.deltaMode===1?.05:g.sourceEvent.deltaMode?1:.002)*u,E=w[2]*Math.pow(2,_*j);t.scaleTo(E)};let x=[0,0];const k=g=>{(g.sourceEvent.type==="mousedown"||g.sourceEvent.type==="touchstart")&&(x=[g.sourceEvent.clientX??g.sourceEvent.touches[0].clientX,g.sourceEvent.clientY??g.sourceEvent.touches[0].clientY])},m=g=>{const w=n();if(g.sourceEvent.type!=="mousemove"&&g.sourceEvent.type!=="touchmove"||!t)return;const j=[g.sourceEvent.clientX??g.sourceEvent.touches[0].clientX,g.sourceEvent.clientY??g.sourceEvent.touches[0].clientY],_=[j[0]-x[0],j[1]-x[1]];x=j;const E=r()*Math.max(w[2],Math.log(w[2]))*(h?-1:1),N={x:w[0]-_[0]*E,y:w[1]-_[1]*E},$=[[0,0],[a,c]];t.setViewportConstrained({x:N.x,y:N.y,zoom:w[2]},$,l)},v=ng().on("start",k).on("zoom",f?m:null).on("zoom.wheel",p?y:null);o.call(v,{})}function i(){o.on("zoom",null)}return{update:s,destroy:i,pointer:ft}}const nl=e=>({x:e.x,y:e.y,zoom:e.k}),Ul=({x:e,y:t,zoom:n})=>Zi.translate(e,t).scale(n),nn=(e,t)=>e.target.closest(`.${t}`),Tg=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),V_=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,Yl=(e,t=0,n=V_,r=()=>{})=>{const o=typeof t=="number"&&t>0;return o||r(),o?e.transition().duration(t).ease(n).on("end",r):e},Mg=e=>{const t=e.ctrlKey&&Oo()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t};function W_({zoomPanValues:e,noWheelClassName:t,d3Selection:n,d3Zoom:r,panOnScrollMode:o,panOnScrollSpeed:s,zoomOnPinch:i,onPanZoomStart:l,onPanZoom:a,onPanZoomEnd:c}){return u=>{if(nn(u,t))return u.ctrlKey&&u.preventDefault(),!1;u.preventDefault(),u.stopImmediatePropagation();const f=n.property("__zoom").k||1;if(u.ctrlKey&&i){const k=ft(u),m=Mg(u),v=f*Math.pow(2,m);r.scaleTo(n,v,k,u);return}const p=u.deltaMode===1?20:1;let h=o===zn.Vertical?0:u.deltaX*p,y=o===zn.Horizontal?0:u.deltaY*p;!Oo()&&u.shiftKey&&o!==zn.Vertical&&(h=u.deltaY*p,y=0),r.translateBy(n,-(h/f)*s,-(y/f)*s,{internal:!0});const x=nl(n.property("__zoom"));clearTimeout(e.panScrollTimeout),e.isPanScrolling?a==null||a(u,x):(e.isPanScrolling=!0,l==null||l(u,x)),e.panScrollTimeout=setTimeout(()=>{c==null||c(u,x),e.isPanScrolling=!1},150)}}function U_({noWheelClassName:e,preventScrolling:t,d3ZoomHandler:n}){return function(r,o){const s=r.type==="wheel",i=!t&&s&&!r.ctrlKey,l=nn(r,e);if(r.ctrlKey&&s&&l&&r.preventDefault(),i||l)return null;r.preventDefault(),n.call(this,r,o)}}function Y_({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return r=>{var s,i,l;if((s=r.sourceEvent)!=null&&s.internal)return;const o=nl(r.transform);e.mouseButton=((i=r.sourceEvent)==null?void 0:i.button)||0,e.isZoomingOrPanning=!0,e.prevViewport=o,((l=r.sourceEvent)==null?void 0:l.type)==="mousedown"&&t(!0),n&&(n==null||n(r.sourceEvent,o))}}function X_({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:r,onPanZoom:o}){return s=>{var i,l;e.usedRightMouseButton=!!(n&&Tg(t,e.mouseButton??0)),(i=s.sourceEvent)!=null&&i.sync||r([s.transform.x,s.transform.y,s.transform.k]),o&&!((l=s.sourceEvent)!=null&&l.internal)&&(o==null||o(s.sourceEvent,nl(s.transform)))}}function G_({zoomPanValues:e,panOnDrag:t,panOnScroll:n,onDraggingChange:r,onPanZoomEnd:o,onPaneContextMenu:s}){return i=>{var l;if(!((l=i.sourceEvent)!=null&&l.internal)&&(e.isZoomingOrPanning=!1,s&&Tg(t,e.mouseButton??0)&&!e.usedRightMouseButton&&i.sourceEvent&&s(i.sourceEvent),e.usedRightMouseButton=!1,r(!1),o)){const a=nl(i.transform);e.prevViewport=a,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{o==null||o(i.sourceEvent,a)},n?150:0)}}}function K_({panActivationKeyPressed:e,zoomActivationKeyPressed:t,zoomOnScroll:n,zoomOnPinch:r,panOnDrag:o,panOnScroll:s,zoomOnDoubleClick:i,userSelectionActive:l,noWheelClassName:a,noPanClassName:c,lib:u,connectionInProgress:f}){return p=>{var m;const h=t||n,y=r&&p.ctrlKey,x=p.type==="wheel";if(p.button===1&&p.type==="mousedown"&&(nn(p,`${u}-flow__node`)||nn(p,`${u}-flow__edge`)||nn(p,`${u}-flow__selection`)||nn(p,`${u}-flow__nodesselection`)))return!0;if(!o&&!h&&!s&&!i&&!r||l||f&&!x||nn(p,a)&&x||nn(p,c)&&(!x||s&&x&&!t)||!r&&p.ctrlKey&&x)return!1;if(!r&&p.type==="touchstart"&&((m=p.touches)==null?void 0:m.length)>1)return p.preventDefault(),!1;if(!h&&!s&&!y&&x||!o&&(p.type==="mousedown"||p.type==="touchstart")||Array.isArray(o)&&!o.includes(p.button)&&p.type==="mousedown")return!1;const k=Array.isArray(o)&&o.includes(p.button)||!p.button||p.button<=1;return(!p.ctrlKey||x||e)&&k}}function Q_({domNode:e,minZoom:t,maxZoom:n,translateExtent:r,viewport:o,onPanZoom:s,onPanZoomStart:i,onPanZoomEnd:l,onDraggingChange:a}){const c={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},u=e.getBoundingClientRect();let f=[[0,0],[u.width,u.height]];const p=typeof ResizeObserver<"u"?new ResizeObserver(F=>{const S=F[0];S&&(f=[[0,0],[S.contentRect.width,S.contentRect.height]])}):null;p==null||p.observe(e);const h=ng().extent(()=>f).scaleExtent([t,n]).translateExtent(r),y=Xe(e).call(h);w({x:o.x,y:o.y,zoom:Ir(o.zoom,t,n)},[[0,0],[u.width,u.height]],r);const x=y.on("wheel.zoom"),k=y.on("dblclick.zoom");h.wheelDelta(Mg);async function m(F,S){return y?new Promise(C=>{h==null||h.interpolate((S==null?void 0:S.interpolate)==="linear"?ho:Hs).transform(Yl(y,S==null?void 0:S.duration,S==null?void 0:S.ease,()=>C(!0)),F)}):!1}function v({noWheelClassName:F,noPanClassName:S,onPaneContextMenu:C,userSelectionActive:T,panOnScroll:P,panOnDrag:b,panOnScrollMode:I,panOnScrollSpeed:R,preventScrolling:z,zoomOnPinch:D,zoomOnScroll:Y,zoomOnDoubleClick:W,panActivationKeyPressed:J=!1,zoomActivationKeyPressed:Z,lib:Q,onTransformChange:H,connectionInProgress:U,paneClickDistance:ee,selectionOnDrag:ne}){T&&!c.isZoomingOrPanning&&g();const q=P&&!Z&&!T;h.clickDistance(ne?1/0:!mt(ee)||ee<0?0:ee);const G=q?W_({zoomPanValues:c,noWheelClassName:F,d3Selection:y,d3Zoom:h,panOnScrollMode:I,panOnScrollSpeed:R,zoomOnPinch:D,onPanZoomStart:i,onPanZoom:s,onPanZoomEnd:l}):U_({noWheelClassName:F,preventScrolling:z,d3ZoomHandler:x});y.on("wheel.zoom",G,{passive:!1});const oe=Y_({zoomPanValues:c,onDraggingChange:a,onPanZoomStart:i});h.on("start",oe);const ae=X_({zoomPanValues:c,panOnDrag:b,onPaneContextMenu:!!C,onPanZoom:s,onTransformChange:H});h.on("zoom",ae);const ce=G_({zoomPanValues:c,panOnDrag:b,panOnScroll:P,onPaneContextMenu:C,onPanZoomEnd:l,onDraggingChange:a});h.on("end",ce);const me=K_({panActivationKeyPressed:J,zoomActivationKeyPressed:Z,panOnDrag:b,zoomOnScroll:Y,panOnScroll:P,zoomOnDoubleClick:W,zoomOnPinch:D,userSelectionActive:T,noPanClassName:S,noWheelClassName:F,lib:Q,connectionInProgress:U});h.filter(me),W?y.on("dblclick.zoom",k):y.on("dblclick.zoom",null)}function g(){h.on("zoom",null)}async function w(F,S,C){const T=Ul(F),P=h==null?void 0:h.constrain()(T,S,C);return P&&await m(P),P}async function j(F,S){const C=Ul(F);return await m(C,S),C}function _(F){if(y){const S=Ul(F),C=y.property("__zoom");(C.k!==F.zoom||C.x!==F.x||C.y!==F.y)&&(h==null||h.transform(y,S,null,{sync:!0}))}}function E(){const F=y?tg(y.node()):{x:0,y:0,k:1};return{x:F.x,y:F.y,zoom:F.k}}async function N(F,S){return y?new Promise(C=>{h==null||h.interpolate((S==null?void 0:S.interpolate)==="linear"?ho:Hs).scaleTo(Yl(y,S==null?void 0:S.duration,S==null?void 0:S.ease,()=>C(!0)),F)}):!1}async function $(F,S){return y?new Promise(C=>{h==null||h.interpolate((S==null?void 0:S.interpolate)==="linear"?ho:Hs).scaleBy(Yl(y,S==null?void 0:S.duration,S==null?void 0:S.ease,()=>C(!0)),F)}):!1}function A(F){h==null||h.scaleExtent(F)}function L(F){h==null||h.translateExtent(F)}function O(F){const S=!mt(F)||F<0?0:F;h==null||h.clickDistance(S)}return{update:v,destroy:g,setViewport:j,setViewportConstrained:w,getViewport:E,scaleTo:N,scaleBy:$,setScaleExtent:A,setTranslateExtent:L,syncViewport:_,setClickDistance:O}}var Lr;(function(e){e.Line="line",e.Handle="handle"})(Lr||(Lr={}));function q_({width:e,prevWidth:t,height:n,prevHeight:r,affectsX:o,affectsY:s}){const i=e-t,l=n-r,a=[i>0?1:i<0?-1:0,l>0?1:l<0?-1:0];return i&&o&&(a[0]=a[0]*-1),l&&s&&(a[1]=a[1]*-1),a}function _f(e){const t=e.includes("right")||e.includes("left"),n=e.includes("bottom")||e.includes("top"),r=e.includes("left"),o=e.includes("top");return{isHorizontal:t,isVertical:n,affectsX:r,affectsY:o}}function Jt(e,t){return Math.max(0,t-e)}function Zt(e,t){return Math.max(0,e-t)}function Ns(e,t,n){return Math.max(0,t-e,e-n)}function Nf(e,t){return e?!t:t}function J_(e,t,n,r,o,s,i,l){let{affectsX:a,affectsY:c}=t;const{isHorizontal:u,isVertical:f}=t,p=u&&f,{xSnapped:h,ySnapped:y}=n,{minWidth:x,maxWidth:k,minHeight:m,maxHeight:v}=r,{x:g,y:w,width:j,height:_,aspectRatio:E}=e;let N=Math.floor(u?h-e.pointerX:0),$=Math.floor(f?y-e.pointerY:0);const A=j+(a?-N:N),L=_+(c?-$:$),O=-s[0]*j,F=-s[1]*_;let S=Ns(A,x,k),C=Ns(L,m,v);if(i){let b=0,I=0;a&&N<0?b=Jt(g+N+O,i[0][0]):!a&&N>0&&(b=Zt(g+A+O,i[1][0])),c&&$<0?I=Jt(w+$+F,i[0][1]):!c&&$>0&&(I=Zt(w+L+F,i[1][1])),S=Math.max(S,b),C=Math.max(C,I)}if(l){let b=0,I=0;a&&N>0?b=Zt(g+N,l[0][0]):!a&&N<0&&(b=Jt(g+A,l[1][0])),c&&$>0?I=Zt(w+$,l[0][1]):!c&&$<0&&(I=Jt(w+L,l[1][1])),S=Math.max(S,b),C=Math.max(C,I)}if(o){if(u){const b=Ns(A/E,m,v)*E;if(S=Math.max(S,b),i){let I=0;!a&&!c||a&&!c&&p?I=Zt(w+F+A/E,i[1][1])*E:I=Jt(w+F+(a?N:-N)/E,i[0][1])*E,S=Math.max(S,I)}if(l){let I=0;!a&&!c||a&&!c&&p?I=Jt(w+A/E,l[1][1])*E:I=Zt(w+(a?N:-N)/E,l[0][1])*E,S=Math.max(S,I)}}if(f){const b=Ns(L*E,x,k)/E;if(C=Math.max(C,b),i){let I=0;!a&&!c||c&&!a&&p?I=Zt(g+L*E+O,i[1][0])/E:I=Jt(g+(c?$:-$)*E+O,i[0][0])/E,C=Math.max(C,I)}if(l){let I=0;!a&&!c||c&&!a&&p?I=Jt(g+L*E,l[1][0])/E:I=Zt(g+(c?$:-$)*E,l[0][0])/E,C=Math.max(C,I)}}}$=$+($<0?C:-C),N=N+(N<0?S:-S),o&&(p?A>L*E?$=(Nf(a,c)?-N:N)/E:N=(Nf(a,c)?-$:$)*E:u?($=N/E,c=a):(N=$*E,a=c));const T=a?g+N:g,P=c?w+$:w;return{width:j+(a?-N:N),height:_+(c?-$:$),x:s[0]*N*(a?-1:1)+T,y:s[1]*$*(c?-1:1)+P}}const Ig={width:0,height:0,x:0,y:0},Z_={...Ig,pointerX:0,pointerY:0,aspectRatio:1};function eN(e,t,n){const r=t.position.x+e.position.x,o=t.position.y+e.position.y,s=e.measured.width??0,i=e.measured.height??0,l=n[0]*s,a=n[1]*i;return[[r-l,o-a],[r+s-l,o+i-a]]}function tN({domNode:e,nodeId:t,getStoreItems:n,onChange:r,onEnd:o}){const s=Xe(e);let i={controlDirection:_f("bottom-right"),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};function l({controlPosition:c,boundaries:u,keepAspectRatio:f,resizeDirection:p,onResizeStart:h,onResize:y,onResizeEnd:x,shouldResize:k}){let m={...Ig},v={...Z_};i={boundaries:u,resizeDirection:p,keepAspectRatio:f,controlDirection:_f(c)};let g,w=null,j=[],_,E,N,$=!1;const A=Hm().on("start",L=>{const{nodeLookup:O,transform:F,snapGrid:S,snapToGrid:C,nodeOrigin:T,paneDomNode:P}=n();if(g=O.get(t),!g)return;w=(P==null?void 0:P.getBoundingClientRect())??null;const{xSnapped:b,ySnapped:I}=mo(L.sourceEvent,{transform:F,snapGrid:S,snapToGrid:C,containerBounds:w});m={width:g.measured.width??0,height:g.measured.height??0,x:g.position.x??0,y:g.position.y??0},v={...m,pointerX:b,pointerY:I,aspectRatio:m.width/m.height},_=void 0,E=Xn(g.extent)?g.extent:void 0,g.parentId&&(g.extent==="parent"||g.expandParent)&&(_=O.get(g.parentId)),_&&g.extent==="parent"&&(E=[[0,0],[_.measured.width,_.measured.height]]),j=[],N=void 0;for(const[R,z]of O)if(z.parentId===t&&(j.push({id:R,position:{...z.position},extent:z.extent}),z.extent==="parent"||z.expandParent)){const D=eN(z,g,z.origin??T);N?N=[[Math.min(D[0][0],N[0][0]),Math.min(D[0][1],N[0][1])],[Math.max(D[1][0],N[1][0]),Math.max(D[1][1],N[1][1])]]:N=D}h==null||h(L,{...m})}).on("drag",L=>{const{transform:O,snapGrid:F,snapToGrid:S,nodeOrigin:C}=n(),T=mo(L.sourceEvent,{transform:O,snapGrid:F,snapToGrid:S,containerBounds:w}),P=[];if(!g)return;const{x:b,y:I,width:R,height:z}=m,D={},Y=g.origin??C,{width:W,height:J,x:Z,y:Q}=J_(v,i.controlDirection,T,i.boundaries,i.keepAspectRatio,Y,E,N),H=W!==R,U=J!==z,ee=Z!==b&&H,ne=Q!==I&&U;if(!ee&&!ne&&!H&&!U)return;if((ee||ne||Y[0]===1||Y[1]===1)&&(D.x=ee?Z:m.x,D.y=ne?Q:m.y,m.x=D.x,m.y=D.y,j.length>0)){const ae=Z-b,ce=Q-I;for(const me of j)me.position={x:me.position.x-ae+Y[0]*(W-R),y:me.position.y-ce+Y[1]*(J-z)},P.push(me)}if((H||U)&&(D.width=H&&(!i.resizeDirection||i.resizeDirection==="horizontal")?W:m.width,D.height=U&&(!i.resizeDirection||i.resizeDirection==="vertical")?J:m.height,m.width=D.width,m.height=D.height),_&&g.expandParent){const ae=Y[0]*(D.width??0);D.x&&D.x<ae&&(m.x=ae,v.x=v.x-(D.x-ae));const ce=Y[1]*(D.height??0);D.y&&D.y<ce&&(m.y=ce,v.y=v.y-(D.y-ce))}const q=q_({width:m.width,prevWidth:R,height:m.height,prevHeight:z,affectsX:i.controlDirection.affectsX,affectsY:i.controlDirection.affectsY}),G={...m,direction:q};(k==null?void 0:k(L,G))!==!1&&($=!0,y==null||y(L,G),r(D,P))}).on("end",L=>{$&&(x==null||x(L,{...m}),o==null||o({...m}),$=!1)});s.call(A)}function a(){s.on(".drag",null)}return{update:l,destroy:a}}const{useDebugValue:nN}=yc,{useSyncExternalStoreWithSelector:rN}=Nm,oN=e=>e;function $g(e,t=oN,n){const r=rN(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return nN(r),r}const Ef=(e,t)=>{const n=xm(e),r=(o,s=t)=>$g(n,o,s);return Object.assign(r,n),r},sN=(e,t)=>e?Ef(e,t):Ef;function we(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}const rl=M.createContext(null),iN=rl.Provider,Lg=wt.error001("react");function ie(e,t){const n=M.useContext(rl);if(n===null)throw new Error(Lg);return $g(n,e,t)}function he(){const e=M.useContext(rl);if(e===null)throw new Error(Lg);return M.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}const Cf={display:"none"},lN={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},Rg="react-flow__node-desc",Ag="react-flow__edge-desc",aN="react-flow__aria-live",cN=e=>e.ariaLiveMessage,uN=e=>e.ariaLabelConfig;function dN({rfId:e}){const t=ie(cN);return d.jsx("div",{id:`${aN}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:lN,children:t})}function fN({rfId:e,disableKeyboardA11y:t}){const n=ie(uN);return d.jsxs(d.Fragment,{children:[d.jsx("div",{id:`${Rg}-${e}`,style:Cf,children:t?n["node.a11yDescription.default"]:n["node.a11yDescription.keyboardDisabled"]}),d.jsx("div",{id:`${Ag}-${e}`,style:Cf,children:n["edge.a11yDescription.default"]}),!t&&d.jsx(dN,{rfId:e})]})}const ol=M.forwardRef(({position:e="top-left",children:t,className:n,style:r,...o},s)=>{const i=`${e}`.split("-");return d.jsx("div",{className:Ne(["react-flow__panel",n,...i]),style:r,ref:s,...o,children:t})});ol.displayName="Panel";const jf="https://reactflow.dev?utm_source=attribution";function pN({proOptions:e,position:t="bottom-right"}){return e!=null&&e.hideAttribution?null:d.jsx(ol,{position:t,className:"react-flow__attribution","data-message":`Please only hide this attribution when you are subscribed to React Flow Pro: ${jf}`,children:d.jsx("a",{href:jf,target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}const hN=e=>{const t=[],n=[];for(const[,r]of e.nodeLookup)r.selected&&t.push(r.internals.userNode);for(const[,r]of e.edgeLookup)r.selected&&n.push(r);return{selectedNodes:t,selectedEdges:n}},Es=e=>e.id;function mN(e,t){return we(e.selectedNodes.map(Es),t.selectedNodes.map(Es))&&we(e.selectedEdges.map(Es),t.selectedEdges.map(Es))}function gN({onSelectionChange:e}){const t=he(),{selectedNodes:n,selectedEdges:r}=ie(hN,mN);return M.useEffect(()=>{const o={nodes:n,edges:r};e==null||e(o),t.getState().onSelectionChangeHandlers.forEach(s=>s(o))},[n,r,e]),null}const yN=e=>!!e.onSelectionChangeHandlers;function vN({onSelectionChange:e}){const t=ie(yN);return e||t?d.jsx(gN,{onSelectionChange:e}):null}const Dg=[0,0],xN={x:0,y:0,zoom:1},wN=["nodes","edges","defaultNodes","defaultEdges","onConnect","onConnectStart","onConnectEnd","onClickConnectStart","onClickConnectEnd","nodesDraggable","autoPanOnNodeFocus","nodesConnectable","nodesFocusable","edgesFocusable","edgesReconnectable","elevateNodesOnSelect","elevateEdgesOnSelect","minZoom","maxZoom","nodeExtent","onNodesChange","onEdgesChange","elementsSelectable","connectionMode","snapGrid","snapToGrid","translateExtent","connectOnClick","defaultEdgeOptions","fitView","fitViewOptions","onNodesDelete","onEdgesDelete","onDelete","onNodeDrag","onNodeDragStart","onNodeDragStop","onSelectionDrag","onSelectionDragStart","onSelectionDragStop","onMoveStart","onMove","onMoveEnd","noPanClassName","nodeOrigin","autoPanOnConnect","autoPanOnNodeDrag","onError","connectionRadius","isValidConnection","selectNodesOnDrag","nodeDragThreshold","connectionDragThreshold","onBeforeDelete","debug","autoPanSpeed","ariaLabelConfig","zIndexMode"],bf=[...wN,"rfId"],SN=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges}),Pf={translateExtent:Do,nodeOrigin:Dg,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1"};function kN(e){const{setNodes:t,setEdges:n,setMinZoom:r,setMaxZoom:o,setTranslateExtent:s,setNodeExtent:i,reset:l,setDefaultNodesAndEdges:a}=ie(SN,we),c=he();M.useEffect(()=>(a(e.defaultNodes,e.defaultEdges),()=>{u.current=Pf,l()}),[]);const u=M.useRef(Pf);return M.useEffect(()=>{for(const f of bf){const p=e[f],h=u.current[f];p!==h&&(typeof e[f]>"u"||(f==="nodes"?t(p):f==="edges"?n(p):f==="minZoom"?r(p):f==="maxZoom"?o(p):f==="translateExtent"?s(p):f==="nodeExtent"?i(p):f==="ariaLabelConfig"?c.setState({ariaLabelConfig:h_(p)}):f==="fitView"?c.setState({fitViewQueued:p}):f==="fitViewOptions"?c.setState({fitViewOptions:p}):c.setState({[f]:p})))}u.current=e},bf.map(f=>e[f])),null}function Tf(){return typeof window>"u"||!window.matchMedia?null:window.matchMedia("(prefers-color-scheme: dark)")}function _N(e){var r;const[t,n]=M.useState(e==="system"?null:e);return M.useEffect(()=>{if(e!=="system"){n(e);return}const o=Tf(),s=()=>n(o!=null&&o.matches?"dark":"light");return s(),o==null||o.addEventListener("change",s),()=>{o==null||o.removeEventListener("change",s)}},[e]),t!==null?t:(r=Tf())!=null&&r.matches?"dark":"light"}const Mf=typeof document<"u"?document:null;function Ho(e=null,t={target:Mf,actInsideInputWithModifier:!0}){const[n,r]=M.useState(!1),o=M.useRef(!1),s=M.useRef(new Set([])),[i,l]=M.useMemo(()=>{if(e!==null){const c=(Array.isArray(e)?e:[e]).filter(f=>typeof f=="string").map(f=>f.replace(/\+/g,`
57
+ `).replace(`
58
+
59
+ `,`
60
+ +`).split(`
61
+ `)),u=c.reduce((f,p)=>f.concat(...p),[]);return[c,u]}return[[],[]]},[e]);return M.useEffect(()=>{const a=(t==null?void 0:t.target)??Mf,c=(t==null?void 0:t.actInsideInputWithModifier)??!0;if(e!==null){const u=h=>{var k,m;if(o.current=h.ctrlKey||h.metaKey||h.shiftKey||h.altKey,(!o.current||o.current&&!c)&&gg(h))return!1;const x=$f(h.code,l);if(s.current.add(h[x]),If(i,s.current,!1)){const v=((m=(k=h.composedPath)==null?void 0:k.call(h))==null?void 0:m[0])||h.target,g=(v==null?void 0:v.nodeName)==="BUTTON"||(v==null?void 0:v.nodeName)==="A";t.preventDefault!==!1&&(o.current||!g)&&h.preventDefault(),r(!0)}},f=h=>{const y=$f(h.code,l);If(i,s.current,!0)?(r(!1),s.current.clear()):s.current.delete(h[y]),h.key==="Meta"&&s.current.clear(),o.current=!1},p=()=>{s.current.clear(),r(!1)};return a==null||a.addEventListener("keydown",u),a==null||a.addEventListener("keyup",f),window.addEventListener("blur",p),window.addEventListener("contextmenu",p),()=>{a==null||a.removeEventListener("keydown",u),a==null||a.removeEventListener("keyup",f),window.removeEventListener("blur",p),window.removeEventListener("contextmenu",p)}}},[e,r]),n}function If(e,t,n){return e.filter(r=>n||r.length===t.size).some(r=>r.every(o=>t.has(o)))}function $f(e,t){return t.includes(e)?"code":"key"}const NN=()=>{const e=he();return M.useMemo(()=>({zoomIn:async t=>{const{panZoom:n}=e.getState();return n?n.scaleBy(1.2,t):!1},zoomOut:async t=>{const{panZoom:n}=e.getState();return n?n.scaleBy(1/1.2,t):!1},zoomTo:async(t,n)=>{const{panZoom:r}=e.getState();return r?r.scaleTo(t,n):!1},getZoom:()=>e.getState().transform[2],setViewport:async(t,n)=>{const{transform:[r,o,s],panZoom:i}=e.getState();return i?(await i.setViewport({x:t.x??r,y:t.y??o,zoom:t.zoom??s},n),!0):!1},getViewport:()=>{const[t,n,r]=e.getState().transform;return{x:t,y:n,zoom:r}},setCenter:async(t,n,r)=>e.getState().setCenter(t,n,r),fitBounds:async(t,n)=>{const{width:r,height:o,minZoom:s,maxZoom:i,panZoom:l}=e.getState(),a=vu(t,r,o,s,i,(n==null?void 0:n.padding)??.1);return l?(await l.setViewport(a,{duration:n==null?void 0:n.duration,ease:n==null?void 0:n.ease,interpolate:n==null?void 0:n.interpolate}),!0):!1},screenToFlowPosition:(t,n={})=>{const{transform:r,snapGrid:o,snapToGrid:s,domNode:i}=e.getState();if(!i)return t;const{x:l,y:a}=i.getBoundingClientRect(),c={x:t.x-l,y:t.y-a},u=n.snapGrid??o,f=n.snapToGrid??s;return Jo(c,r,f,u)},flowToScreenPosition:t=>{const{transform:n,domNode:r}=e.getState();if(!r)return t;const{x:o,y:s}=r.getBoundingClientRect(),i=$r(t,n);return{x:i.x+o,y:i.y+s}}}),[])};function zg(e,t){const n=[],r=new Map,o=[];for(const s of e)if(s.type==="add"){o.push(s);continue}else if(s.type==="remove"||s.type==="replace")r.set(s.id,[s]);else{const i=r.get(s.id);i?i.push(s):r.set(s.id,[s])}for(const s of t){const i=r.get(s.id);if(!i){n.push(s);continue}if(i[0].type==="remove")continue;if(i[0].type==="replace"){n.push({...i[0].item});continue}const l={...s};for(const a of i)EN(a,l);n.push(l)}return o.length&&o.forEach(s=>{s.index!==void 0?n.splice(s.index,0,{...s.item}):n.push({...s.item})}),n}function EN(e,t){switch(e.type){case"select":{t.selected=e.selected;break}case"position":{typeof e.position<"u"&&(t.position=e.position),typeof e.dragging<"u"&&(t.dragging=e.dragging);break}case"dimensions":{typeof e.dimensions<"u"&&(t.measured={...e.dimensions},e.setAttributes&&((e.setAttributes===!0||e.setAttributes==="width")&&(t.width=e.dimensions.width),(e.setAttributes===!0||e.setAttributes==="height")&&(t.height=e.dimensions.height))),typeof e.resizing=="boolean"&&(t.resizing=e.resizing);break}}}function Fg(e,t){return zg(e,t)}function Og(e,t){return zg(e,t)}function Tn(e,t){return{id:e,type:"select",selected:t}}function fr(e,t=new Set,n=!1){const r=[];for(const[o,s]of e){const i=t.has(o);!(s.selected===void 0&&!i)&&s.selected!==i&&(n&&(s.selected=i),r.push(Tn(s.id,i)))}return r}function Lf({items:e=[],lookup:t}){var o;const n=[],r=new Map(e.map(s=>[s.id,s]));for(const[s,i]of e.entries()){const l=t.get(i.id),a=((o=l==null?void 0:l.internals)==null?void 0:o.userNode)??l;a!==void 0&&a!==i&&n.push({id:i.id,item:i,type:"replace"}),a===void 0&&n.push({item:i,type:"add",index:s})}for(const[s]of t)r.get(s)===void 0&&n.push({id:s,type:"remove"});return n}function Rf(e){return{id:e.id,type:"remove"}}const CN=fg();function Hg(e,t,n={}){return w_(e,t,{...n,onError:n.onError??CN})}const Af=e=>s_(e),jN=e=>lg(e);function Bg(e){return M.forwardRef(e)}const Vg=typeof window<"u"?M.useLayoutEffect:M.useEffect;function Df(e){const[t,n]=M.useState(BigInt(0)),[r]=M.useState(()=>bN(()=>n(o=>o+BigInt(1))));return Vg(()=>{const o=r.get();o.length&&(e(o),r.reset())},[t]),r}function bN(e){let t=[];return{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}}const Wg=M.createContext(null);function PN({children:e}){const t=he(),n=M.useCallback(l=>{const{nodes:a=[],setNodes:c,hasDefaultNodes:u,onNodesChange:f,nodeLookup:p,fitViewQueued:h,onNodesChangeMiddlewareMap:y}=t.getState();let x=a;for(const m of l)x=typeof m=="function"?m(x):m;let k=Lf({items:x,lookup:p});for(const m of y.values())k=m(k);u&&c(x),k.length>0?f==null||f(k):h&&window.requestAnimationFrame(()=>{const{fitViewQueued:m,nodes:v,setNodes:g}=t.getState();m&&g(v)})},[]),r=Df(n),o=M.useCallback(l=>{const{edges:a=[],setEdges:c,hasDefaultEdges:u,onEdgesChange:f,edgeLookup:p}=t.getState();let h=a;for(const y of l)h=typeof y=="function"?y(h):y;u?c(h):f&&f(Lf({items:h,lookup:p}))},[]),s=Df(o),i=M.useMemo(()=>({nodeQueue:r,edgeQueue:s}),[]);return d.jsx(Wg.Provider,{value:i,children:e})}function TN(){const e=M.useContext(Wg);if(!e)throw new Error("useBatchContext must be used within a BatchProvider");return e}const MN=e=>!!e.panZoom;function sl(){const e=NN(),t=he(),n=TN(),r=ie(MN),o=M.useMemo(()=>{const s=f=>t.getState().nodeLookup.get(f),i=f=>{n.nodeQueue.push(f)},l=f=>{n.edgeQueue.push(f)},a=f=>{var m,v;const{nodeLookup:p,nodeOrigin:h}=t.getState(),y=Af(f)?f:p.get(f.id),x=y.parentId?hg(y.position,y.measured,y.parentId,p,h):y.position,k={...y,position:x,width:((m=y.measured)==null?void 0:m.width)??y.width,height:((v=y.measured)==null?void 0:v.height)??y.height};return Fo(k)},c=(f,p,h={replace:!1})=>{i(y=>y.map(x=>{if(x.id===f){const k=typeof p=="function"?p(x):p;return h.replace&&Af(k)?k:{...x,...k}}return x}))},u=(f,p,h={replace:!1})=>{l(y=>y.map(x=>{if(x.id===f){const k=typeof p=="function"?p(x):p;return h.replace&&jN(k)?k:{...x,...k}}return x}))};return{getNodes:()=>t.getState().nodes.map(f=>({...f})),getNode:f=>{var p;return(p=s(f))==null?void 0:p.internals.userNode},getInternalNode:s,getEdges:()=>{const{edges:f=[]}=t.getState();return f.map(p=>({...p}))},getEdge:f=>t.getState().edgeLookup.get(f),setNodes:i,setEdges:l,addNodes:f=>{const p=Array.isArray(f)?f:[f];n.nodeQueue.push(h=>[...h,...p])},addEdges:f=>{const p=Array.isArray(f)?f:[f];n.edgeQueue.push(h=>[...h,...p])},toObject:()=>{const{nodes:f=[],edges:p=[],transform:h}=t.getState(),[y,x,k]=h;return{nodes:f.map(m=>({...m})),edges:p.map(m=>({...m})),viewport:{x:y,y:x,zoom:k}}},deleteElements:async({nodes:f=[],edges:p=[]})=>{const{nodes:h,edges:y,onNodesDelete:x,onEdgesDelete:k,triggerNodeChanges:m,triggerEdgeChanges:v,onDelete:g,onBeforeDelete:w}=t.getState(),{nodes:j,edges:_}=await u_({nodesToRemove:f,edgesToRemove:p,nodes:h,edges:y,onBeforeDelete:w}),E=_.length>0,N=j.length>0;if(E){const $=_.map(Rf);k==null||k(_),v($)}if(N){const $=j.map(Rf);x==null||x(j),m($)}return(N||E)&&(g==null||g({nodes:j,edges:_})),{deletedNodes:j,deletedEdges:_}},getIntersectingNodes:(f,p=!0,h)=>{const y=ff(f),x=y?f:a(f),k=h!==void 0;return x?(h||t.getState().nodes).filter(m=>{const v=t.getState().nodeLookup.get(m.id);if(v&&!y&&(m.id===f.id||!v.internals.positionAbsolute))return!1;const g=Fo(k?m:v),w=Ei(g,x);return p&&w>0||w>=g.width*g.height||w>=x.width*x.height}):[]},isNodeIntersecting:(f,p,h=!0)=>{const x=ff(f)?f:a(f);if(!x)return!1;const k=Ei(x,p);return h&&k>0||k>=p.width*p.height||k>=x.width*x.height},updateNode:c,updateNodeData:(f,p,h={replace:!1})=>{c(f,y=>{const x=typeof p=="function"?p(y):p;return h.replace?{...y,data:x}:{...y,data:{...y.data,...x}}},h)},updateEdge:u,updateEdgeData:(f,p,h={replace:!1})=>{u(f,y=>{const x=typeof p=="function"?p(y):p;return h.replace?{...y,data:x}:{...y,data:{...y.data,...x}}},h)},getNodesBounds:f=>{const{nodeLookup:p,nodeOrigin:h}=t.getState();return i_(f,{nodeLookup:p,nodeOrigin:h})},getHandleConnections:({type:f,id:p,nodeId:h})=>{var y;return Array.from(((y=t.getState().connectionLookup.get(`${h}-${f}${p?`-${p}`:""}`))==null?void 0:y.values())??[])},getNodeConnections:({type:f,handleId:p,nodeId:h})=>{var y;return Array.from(((y=t.getState().connectionLookup.get(`${h}${f?p?`-${f}-${p}`:`-${f}`:""}`))==null?void 0:y.values())??[])},fitView:async f=>{const p=t.getState().fitViewResolver??p_();return t.setState({fitViewQueued:!0,fitViewOptions:f,fitViewResolver:p}),n.nodeQueue.push(h=>[...h]),p.promise}}},[]);return M.useMemo(()=>({...o,...e,viewportInitialized:r}),[r])}const zf=e=>e.selected,IN=typeof window<"u"?window:void 0;function $N({deleteKeyCode:e,multiSelectionKeyCode:t}){const n=he(),{deleteElements:r}=sl(),o=Ho(e,{actInsideInputWithModifier:!1}),s=Ho(t,{target:IN});M.useEffect(()=>{if(o){const{edges:i,nodes:l}=n.getState();r({nodes:l.filter(zf),edges:i.filter(zf)}),n.setState({nodesSelectionActive:!1})}},[o]),M.useEffect(()=>{n.setState({multiSelectionActive:s})},[s])}function LN(e){const t=he();M.useEffect(()=>{const n=()=>{var o,s,i,l;if(!e.current||!(((s=(o=e.current).checkVisibility)==null?void 0:s.call(o))??!0))return!1;const r=xu(e.current);(r.height===0||r.width===0)&&((l=(i=t.getState()).onError)==null||l.call(i,"004",wt.error004())),t.setState({width:r.width||500,height:r.height||500})};if(e.current){n(),window.addEventListener("resize",n);const r=new ResizeObserver(()=>n());return r.observe(e.current),()=>{window.removeEventListener("resize",n),r&&e.current&&r.unobserve(e.current)}}},[])}const il={position:"absolute",width:"100%",height:"100%",top:0,left:0},RN=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function AN({onPaneContextMenu:e,zoomOnScroll:t=!0,zoomOnPinch:n=!0,panOnScroll:r=!1,panActivationKeyPressed:o,panOnScrollSpeed:s=.5,panOnScrollMode:i=zn.Free,zoomOnDoubleClick:l=!0,panOnDrag:a=!0,defaultViewport:c,translateExtent:u,minZoom:f,maxZoom:p,zoomActivationKeyCode:h,preventScrolling:y=!0,children:x,noWheelClassName:k,noPanClassName:m,onViewportChange:v,isControlledViewport:g,paneClickDistance:w,selectionOnDrag:j}){const _=he(),E=M.useRef(null),{userSelectionActive:N,lib:$,connectionInProgress:A}=ie(RN,we),L=Ho(h),O=M.useRef();LN(E);const F=M.useCallback(S=>{v==null||v({x:S[0],y:S[1],zoom:S[2]}),g||_.setState({transform:S})},[v,g]);return M.useEffect(()=>{if(E.current){O.current=Q_({domNode:E.current,minZoom:f,maxZoom:p,translateExtent:u,viewport:c,onDraggingChange:P=>_.setState(b=>b.paneDragging===P?b:{paneDragging:P}),onPanZoomStart:(P,b)=>{const{onViewportChangeStart:I,onMoveStart:R}=_.getState();R==null||R(P,b),I==null||I(b)},onPanZoom:(P,b)=>{const{onViewportChange:I,onMove:R}=_.getState();R==null||R(P,b),I==null||I(b)},onPanZoomEnd:(P,b)=>{const{onViewportChangeEnd:I,onMoveEnd:R}=_.getState();R==null||R(P,b),I==null||I(b)}});const{x:S,y:C,zoom:T}=O.current.getViewport();return _.setState({panZoom:O.current,transform:[S,C,T],domNode:E.current.closest(".react-flow")}),()=>{var P;(P=O.current)==null||P.destroy()}}},[]),M.useEffect(()=>{var S;(S=O.current)==null||S.update({onPaneContextMenu:e,zoomOnScroll:t,zoomOnPinch:n,panOnScroll:r,panActivationKeyPressed:o,panOnScrollSpeed:s,panOnScrollMode:i,zoomOnDoubleClick:l,panOnDrag:a,zoomActivationKeyPressed:L,preventScrolling:y,noPanClassName:m,userSelectionActive:N,noWheelClassName:k,lib:$,onTransformChange:F,connectionInProgress:A,selectionOnDrag:j,paneClickDistance:w})},[e,t,n,r,o,s,i,l,a,L,y,m,N,k,$,F,A,j,w]),d.jsx("div",{className:"react-flow__renderer",ref:E,style:il,children:x})}const DN=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function zN(){const{userSelectionActive:e,userSelectionRect:t}=ie(DN,we);return e&&t?d.jsx("div",{className:"react-flow__selection react-flow__container",style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}const Xl=(e,t)=>n=>{n.target===t.current&&(e==null||e(n))},FN=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging,panBy:e.panBy,autoPanSpeed:e.autoPanSpeed});function ON({isSelecting:e,selectionKeyPressed:t,selectionMode:n=zo.Full,panOnDrag:r,autoPanOnSelection:o,paneClickDistance:s,selectionOnDrag:i,onSelectionStart:l,onSelectionEnd:a,onPaneClick:c,onPaneContextMenu:u,onPaneScroll:f,onPaneMouseEnter:p,onPaneMouseMove:h,onPaneMouseLeave:y,children:x}){const k=M.useRef(0),m=he(),{userSelectionActive:v,elementsSelectable:g,dragging:w,panBy:j,autoPanSpeed:_}=ie(FN,we),E=g&&(e||v),N=M.useRef(null),$=M.useRef(),A=M.useRef(new Set),L=M.useRef(new Set),O=M.useRef(!1),F=M.useRef(!1),S=M.useRef({x:0,y:0}),C=M.useRef(!1),T=H=>{if(F.current||O.current||m.getState().connection.inProgress){F.current=!1,O.current=!1;return}c==null||c(H),m.getState().resetSelectedElements(),m.setState({nodesSelectionActive:!1})},P=H=>{if(Array.isArray(r)&&(r!=null&&r.includes(2))){H.preventDefault();return}u==null||u(H)},b=f?H=>f(H):void 0,I=H=>{F.current&&(H.stopPropagation(),F.current=!1)},R=H=>{var me,et;if(H.pointerType==="touch"&&r!==!1&&!t)return;const{domNode:U,transform:ee}=m.getState();if($.current=U==null?void 0:U.getBoundingClientRect(),!$.current)return;const ne=H.target===N.current;if(!ne&&!!H.target.closest(".nokey")||!e||!(i&&ne||t)||H.button!==0||!H.isPrimary)return;(et=(me=H.target)==null?void 0:me.setPointerCapture)==null||et.call(me,H.pointerId),F.current=!1;const{x:oe,y:ae}=gt(H.nativeEvent,$.current),ce=Jo({x:oe,y:ae},ee);m.setState({userSelectionRect:{width:0,height:0,startX:ce.x,startY:ce.y,x:oe,y:ae}}),ne||(H.stopPropagation(),H.preventDefault())};function z(H,U){const{userSelectionRect:ee}=m.getState();if(!ee)return;const{transform:ne,nodeLookup:q,edgeLookup:G,connectionLookup:oe,triggerNodeChanges:ae,triggerEdgeChanges:ce,defaultEdgeOptions:me}=m.getState(),et={x:ee.startX,y:ee.startY},{x:_t,y:Nt}=$r(et,ne),Lt={startX:et.x,startY:et.y,x:H<_t?H:_t,y:U<Nt?U:Nt,width:Math.abs(H-_t),height:Math.abs(U-Nt)},Fr=A.current,Nn=L.current;A.current=new Set(gu(q,Lt,ne,n===zo.Partial,!0).map(lt=>lt.id)),L.current=new Set;const En=(me==null?void 0:me.selectable)??!0;for(const lt of A.current){const Rt=oe.get(lt);if(Rt)for(const{edgeId:At}of Rt.values()){const Cn=G.get(At);Cn&&(Cn.selectable??En)&&L.current.add(At)}}if(!pf(Fr,A.current)){const lt=fr(q,A.current,!0);ae(lt)}if(!pf(Nn,L.current)){const lt=fr(G,L.current);ce(lt)}m.setState({userSelectionRect:Lt,userSelectionActive:!0,nodesSelectionActive:!1})}function D(){if(!o||!$.current)return;const[H,U]=yu(S.current,$.current,_);j({x:H,y:U}).then(ee=>{if(!F.current||!ee){k.current=requestAnimationFrame(D);return}const{x:ne,y:q}=S.current;z(ne,q),k.current=requestAnimationFrame(D)})}const Y=()=>{cancelAnimationFrame(k.current),k.current=0,C.current=!1};M.useEffect(()=>()=>Y(),[]);const W=H=>{const{userSelectionRect:U,transform:ee,resetSelectedElements:ne}=m.getState();if(!$.current||!U)return;const{x:q,y:G}=gt(H.nativeEvent,$.current);S.current={x:q,y:G};const oe=$r({x:U.startX,y:U.startY},ee);if(!F.current){const ae=t?0:s;if(Math.hypot(q-oe.x,G-oe.y)<=ae)return;ne(),l==null||l(H)}F.current=!0,C.current||(D(),C.current=!0),z(q,G)},J=H=>{var U,ee;if(!E){H.target===N.current&&m.getState().connection.inProgress&&(O.current=!0);return}H.button===0&&((ee=(U=H.target)==null?void 0:U.releasePointerCapture)==null||ee.call(U,H.pointerId),!v&&H.target===N.current&&m.getState().userSelectionRect&&(T==null||T(H)),m.setState({userSelectionActive:!1,userSelectionRect:null}),F.current&&(a==null||a(H),m.setState({nodesSelectionActive:A.current.size>0})),Y())},Z=H=>{var U,ee;(ee=(U=H.target)==null?void 0:U.releasePointerCapture)==null||ee.call(U,H.pointerId),Y()},Q=r===!0||Array.isArray(r)&&r.includes(0);return d.jsxs("div",{className:Ne(["react-flow__pane",{draggable:Q,dragging:w,selection:e}]),onClick:E?void 0:Xl(T,N),onContextMenu:Xl(P,N),onWheel:Xl(b,N),onPointerEnter:E?void 0:p,onPointerMove:E?W:h,onPointerUp:J,onPointerCancel:E?Z:void 0,onPointerDownCapture:E?R:void 0,onClickCapture:E?I:void 0,onPointerLeave:y,ref:N,style:il,children:[x,d.jsx(zN,{})]})}function oc({id:e,store:t,unselect:n=!1,nodeRef:r}){const{addSelectedNodes:o,unselectNodesAndEdges:s,multiSelectionActive:i,nodeLookup:l,onError:a}=t.getState(),c=l.get(e);if(!c){a==null||a("012",wt.error012(e));return}t.setState({nodesSelectionActive:!1}),c.selected?(n||c.selected&&i)&&(s({nodes:[c],edges:[]}),requestAnimationFrame(()=>{var u;return(u=r==null?void 0:r.current)==null?void 0:u.blur()})):o([e])}function Ug({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,nodeId:o,isSelectable:s,nodeClickDistance:i}){const l=he(),[a,c]=M.useState(!1),u=M.useRef();return M.useEffect(()=>{if(!t)return u.current=A_({getStoreItems:()=>l.getState(),onNodeMouseDown:f=>{oc({id:f,store:l,nodeRef:e})},onDragStart:()=>{c(!0)},onDragStop:()=>{c(!1)}}),()=>{var f;(f=u.current)==null||f.destroy(),u.current=void 0}},[t,l,e]),M.useEffect(()=>{t||!e.current||!u.current||u.current.update({noDragClassName:n,handleSelector:r,domNode:e.current,isSelectable:s,nodeId:o,nodeClickDistance:i})},[n,r,t,s,e,o,i]),a}const HN=e=>t=>t.selected&&(t.draggable||e&&typeof t.draggable>"u");function Yg(){const e=he();return M.useCallback(n=>{const{nodeExtent:r,snapToGrid:o,snapGrid:s,nodesDraggable:i,onError:l,updateNodePositions:a,nodeLookup:c,nodeOrigin:u}=e.getState(),f=new Map,p=HN(i),h=o?s[0]:5,y=o?s[1]:5,x=n.direction.x*h*n.factor,k=n.direction.y*y*n.factor;for(const[,m]of c){if(!p(m))continue;let v={x:m.internals.positionAbsolute.x+x,y:m.internals.positionAbsolute.y+k};o&&(v=qo(v,s));const{position:g,positionAbsolute:w}=ag({nodeId:m.id,nextPosition:v,nodeLookup:c,nodeExtent:r,nodeOrigin:u,onError:l});m.position=g,m.internals.positionAbsolute=w,f.set(m.id,m)}a(f)},[])}const Eu=M.createContext(null),BN=Eu.Provider;Eu.Consumer;const Xg=()=>M.useContext(Eu),VN=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),Gg=M.createContext(null);function WN({children:e}){const t=ie(VN,we);return d.jsx(Gg.Provider,{value:t,children:e})}function UN(){const e=M.useContext(Gg);if(!e)throw new Error("useHandleConfig must be used within a HandleConfigProvider");return e}const YN={connectingFrom:!1,connectingTo:!1,clickConnecting:!1,isPossibleEndHandle:!0,connectionInProcess:!1,clickConnectionInProcess:!1,valid:!1},XN=(e,t,n)=>r=>{const{connectionClickStartHandle:o,connectionMode:s,connection:i}=r,{fromHandle:l,toHandle:a,isValid:c}=i;if(!l&&!o)return YN;const u=(a==null?void 0:a.nodeId)===e&&(a==null?void 0:a.id)===t&&(a==null?void 0:a.type)===n;return{connectingFrom:(l==null?void 0:l.nodeId)===e&&(l==null?void 0:l.id)===t&&(l==null?void 0:l.type)===n,connectingTo:u,clickConnecting:(o==null?void 0:o.nodeId)===e&&(o==null?void 0:o.id)===t&&(o==null?void 0:o.type)===n,isPossibleEndHandle:s===Mr.Strict?(l==null?void 0:l.type)!==n:e!==(l==null?void 0:l.nodeId)||t!==(l==null?void 0:l.id),connectionInProcess:!!l,clickConnectionInProcess:!!o,valid:u&&c}};function GN({type:e="source",position:t=K.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:o=!0,isConnectableEnd:s=!0,id:i,onConnect:l,children:a,className:c,onMouseDown:u,onTouchStart:f,...p},h){var C,T;const y=i||null,x=e==="target",k=he(),m=Xg(),{connectOnClick:v,noPanClassName:g,rfId:w}=UN(),{connectingFrom:j,connectingTo:_,clickConnecting:E,isPossibleEndHandle:N,connectionInProcess:$,clickConnectionInProcess:A,valid:L}=ie(XN(m,y,e),we);m||(T=(C=k.getState()).onError)==null||T.call(C,"010",wt.error010());const O=P=>{const{defaultEdgeOptions:b,onConnect:I,hasDefaultEdges:R}=k.getState(),z={...b,...P};if(R){const{edges:D,setEdges:Y,onError:W}=k.getState();Y(Hg(z,D,{onError:W}))}I==null||I(z),l==null||l(z)},F=P=>{if(!m)return;const b=yg(P.nativeEvent);if(o&&(b&&P.button===0||!b)){const I=k.getState();rc.onPointerDown(P.nativeEvent,{handleDomNode:P.currentTarget,autoPanOnConnect:I.autoPanOnConnect,connectionMode:I.connectionMode,connectionRadius:I.connectionRadius,domNode:I.domNode,nodeLookup:I.nodeLookup,lib:I.lib,isTarget:x,handleId:y,nodeId:m,flowId:I.rfId,panBy:I.panBy,cancelConnection:I.cancelConnection,onConnectStart:I.onConnectStart,onConnectEnd:(...R)=>{var z,D;return(D=(z=k.getState()).onConnectEnd)==null?void 0:D.call(z,...R)},updateConnection:I.updateConnection,onConnect:O,isValidConnection:n||((...R)=>{var z,D;return((D=(z=k.getState()).isValidConnection)==null?void 0:D.call(z,...R))??!0}),getTransform:()=>k.getState().transform,getFromHandle:()=>k.getState().connection.fromHandle,autoPanSpeed:I.autoPanSpeed,dragThreshold:I.connectionDragThreshold})}b?u==null||u(P):f==null||f(P)},S=P=>{const{onClickConnectStart:b,onClickConnectEnd:I,connectionClickStartHandle:R,connectionMode:z,isValidConnection:D,lib:Y,rfId:W,nodeLookup:J,connection:Z}=k.getState();if(!m||!R&&!o)return;if(!R){b==null||b(P.nativeEvent,{nodeId:m,handleId:y,handleType:e}),k.setState({connectionClickStartHandle:{nodeId:m,type:e,id:y}});return}const Q=mg(P.target),H=n||D,{connection:U,isValid:ee}=rc.isValid(P.nativeEvent,{handle:{nodeId:m,id:y,type:e},connectionMode:z,fromNodeId:R.nodeId,fromHandleId:R.id||null,fromType:R.type,isValidConnection:H,flowId:W,doc:Q,lib:Y,nodeLookup:J});ee&&U&&O(U);const ne=structuredClone(Z);delete ne.inProgress,ne.toPosition=ne.toHandle?ne.toHandle.position:null,I==null||I(P,ne),k.setState({connectionClickStartHandle:null})};return d.jsx("div",{"data-handleid":y,"data-nodeid":m,"data-handlepos":t,"data-id":`${w}-${m}-${y}-${e}`,className:Ne(["react-flow__handle",`react-flow__handle-${t}`,"nodrag",g,c,{source:!x,target:x,connectable:r,connectablestart:o,connectableend:s,clickconnecting:E,connectingfrom:j,connectingto:_,valid:L,connectionindicator:r&&(!$||N)&&($||A?s:o)}]),onMouseDown:F,onTouchStart:F,onClick:v?S:void 0,ref:h,...p,children:a})}const Rr=M.memo(Bg(GN));function KN({data:e,isConnectable:t,sourcePosition:n=K.Bottom}){return d.jsxs(d.Fragment,{children:[e==null?void 0:e.label,d.jsx(Rr,{type:"source",position:n,isConnectable:t})]})}function QN({data:e,isConnectable:t,targetPosition:n=K.Top,sourcePosition:r=K.Bottom}){return d.jsxs(d.Fragment,{children:[d.jsx(Rr,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label,d.jsx(Rr,{type:"source",position:r,isConnectable:t})]})}function qN(){return null}function JN({data:e,isConnectable:t,targetPosition:n=K.Top}){return d.jsxs(d.Fragment,{children:[d.jsx(Rr,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label]})}const Ci={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},Ff={input:KN,default:QN,output:JN,group:qN};function ZN(e){var t,n,r,o;return e.internals.handleBounds===void 0?{width:e.width??e.initialWidth??((t=e.style)==null?void 0:t.width),height:e.height??e.initialHeight??((n=e.style)==null?void 0:n.height)}:{width:e.width??((r=e.style)==null?void 0:r.width),height:e.height??((o=e.style)==null?void 0:o.height)}}const eE=e=>{const{width:t,height:n,x:r,y:o}=Qo(e.nodeLookup,{filter:s=>!!s.selected});return{width:mt(t)?t:null,height:mt(n)?n:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${r}px,${o}px)`}};function tE({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){const r=he(),{width:o,height:s,transformString:i,userSelectionActive:l}=ie(eE,we),a=Yg(),c=M.useRef(null);M.useEffect(()=>{var h;n||(h=c.current)==null||h.focus({preventScroll:!0})},[n]);const u=!l&&o!==null&&s!==null;if(Ug({nodeRef:c,disabled:!u}),!u)return null;const f=e?h=>{const y=r.getState().nodes.filter(x=>x.selected);e(h,y)}:void 0,p=h=>{Object.prototype.hasOwnProperty.call(Ci,h.key)&&(h.preventDefault(),a({direction:Ci[h.key],factor:h.shiftKey?4:1}))};return d.jsx("div",{className:Ne(["react-flow__nodesselection","react-flow__container",t]),style:{transform:i},children:d.jsx("div",{ref:c,className:"react-flow__nodesselection-rect",onContextMenu:f,tabIndex:n?void 0:-1,onKeyDown:n?void 0:p,style:{width:o,height:s}})})}const Of=typeof window<"u"?window:void 0,nE=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function Kg({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:o,onPaneContextMenu:s,onPaneScroll:i,paneClickDistance:l,deleteKeyCode:a,selectionKeyCode:c,selectionOnDrag:u,selectionMode:f,onSelectionStart:p,onSelectionEnd:h,multiSelectionKeyCode:y,panActivationKeyCode:x,zoomActivationKeyCode:k,elementsSelectable:m,zoomOnScroll:v,zoomOnPinch:g,panOnScroll:w,panOnScrollSpeed:j,panOnScrollMode:_,zoomOnDoubleClick:E,panOnDrag:N,autoPanOnSelection:$,defaultViewport:A,translateExtent:L,minZoom:O,maxZoom:F,preventScrolling:S,onSelectionContextMenu:C,noWheelClassName:T,noPanClassName:P,disableKeyboardA11y:b,onViewportChange:I,isControlledViewport:R}){const{nodesSelectionActive:z,userSelectionActive:D}=ie(nE,we),Y=Ho(c,{target:Of}),W=Ho(x,{target:Of}),J=W||N,Z=W||w,Q=u&&J!==!0,H=Y||D||Q;return $N({deleteKeyCode:a,multiSelectionKeyCode:y}),d.jsx(AN,{onPaneContextMenu:s,elementsSelectable:m,zoomOnScroll:v,zoomOnPinch:g,panOnScroll:Z,panActivationKeyPressed:W,panOnScrollSpeed:j,panOnScrollMode:_,zoomOnDoubleClick:E,panOnDrag:!Y&&J,defaultViewport:A,translateExtent:L,minZoom:O,maxZoom:F,zoomActivationKeyCode:k,preventScrolling:S,noWheelClassName:T,noPanClassName:P,onViewportChange:I,isControlledViewport:R,paneClickDistance:l,selectionOnDrag:Q,children:d.jsxs(ON,{onSelectionStart:p,onSelectionEnd:h,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:o,onPaneContextMenu:s,onPaneScroll:i,panOnDrag:J,autoPanOnSelection:$,isSelecting:!!H,selectionMode:f,selectionKeyPressed:Y,paneClickDistance:l,selectionOnDrag:Q,children:[e,z&&d.jsx(tE,{onSelectionContextMenu:C,noPanClassName:P,disableKeyboardA11y:b})]})})}Kg.displayName="FlowRenderer";const rE=M.memo(Kg),oE=e=>t=>e?gu(t.nodeLookup,{x:0,y:0,width:t.width,height:t.height},t.transform,!0).map(n=>n.id):Array.from(t.nodeLookup.keys());function sE(e){return ie(M.useCallback(oE(e),[e]),we)}const iE=e=>e.updateNodeInternals;function lE(){const e=ie(iE),[t]=M.useState(()=>typeof ResizeObserver>"u"?null:new ResizeObserver(n=>{const r=new Map;n.forEach(o=>{const s=o.target.getAttribute("data-id");r.set(s,{id:s,nodeElement:o.target,force:!0})}),e(r)}));return M.useEffect(()=>()=>{t==null||t.disconnect()},[t]),t}function aE({node:e,nodeType:t,hasDimensions:n,resizeObserver:r}){const o=he(),s=M.useRef(null),i=M.useRef(null),l=M.useRef(e.sourcePosition),a=M.useRef(e.targetPosition),c=M.useRef(t),u=n&&!!e.internals.handleBounds;return M.useEffect(()=>{s.current&&!e.hidden&&(!u||i.current!==s.current)&&(i.current&&(r==null||r.unobserve(i.current)),r==null||r.observe(s.current),i.current=s.current)},[u,e.hidden]),M.useEffect(()=>()=>{i.current&&(r==null||r.unobserve(i.current),i.current=null)},[]),M.useEffect(()=>{if(s.current){const f=c.current!==t,p=l.current!==e.sourcePosition,h=a.current!==e.targetPosition;(f||p||h)&&(c.current=t,l.current=e.sourcePosition,a.current=e.targetPosition,o.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:s.current,force:!0}]])))}},[e.id,t,e.sourcePosition,e.targetPosition]),s}function cE({id:e,onClick:t,onMouseEnter:n,onMouseMove:r,onMouseLeave:o,onContextMenu:s,onDoubleClick:i,nodesDraggable:l,elementsSelectable:a,nodesConnectable:c,nodesFocusable:u,resizeObserver:f,noDragClassName:p,noPanClassName:h,disableKeyboardA11y:y,rfId:x,nodeTypes:k,nodeClickDistance:m,onError:v}){const{node:g,internals:w,isParent:j}=ie(H=>{const U=H.nodeLookup.get(e),ee=H.parentLookup.has(e);return{node:U,internals:U.internals,isParent:ee}},we);let _=g.type||"default",E=(k==null?void 0:k[_])||Ff[_];E===void 0&&(v==null||v("003",wt.error003(_)),_="default",E=(k==null?void 0:k.default)||Ff.default);const N=!!(g.draggable||l&&typeof g.draggable>"u"),$=!!(g.selectable||a&&typeof g.selectable>"u"),A=!!(g.connectable||c&&typeof g.connectable>"u"),L=!!(g.focusable||u&&typeof g.focusable>"u"),O=he(),F=pg(g),S=aE({node:g,nodeType:_,hasDimensions:F,resizeObserver:f}),C=Ug({nodeRef:S,disabled:g.hidden||!N,noDragClassName:p,handleSelector:g.dragHandle,nodeId:e,isSelectable:$,nodeClickDistance:m}),T=Yg();if(g.hidden)return null;const P=kt(g),b=ZN(g),I=$||N||t||n||r||o,R=n?H=>n(H,{...w.userNode}):void 0,z=r?H=>r(H,{...w.userNode}):void 0,D=o?H=>o(H,{...w.userNode}):void 0,Y=s?H=>s(H,{...w.userNode}):void 0,W=i?H=>i(H,{...w.userNode}):void 0,J=H=>{const{selectNodesOnDrag:U,nodeDragThreshold:ee}=O.getState();$&&(!U||!N||ee>0)&&oc({id:e,store:O,nodeRef:S}),t&&t(H,{...w.userNode})},Z=H=>{if(!(gg(H.nativeEvent)||y)){if(rg.includes(H.key)&&$){const U=H.key==="Escape";oc({id:e,store:O,unselect:U,nodeRef:S})}else if(N&&g.selected&&Object.prototype.hasOwnProperty.call(Ci,H.key)){H.preventDefault();const{ariaLabelConfig:U}=O.getState();O.setState({ariaLiveMessage:U["node.a11yDescription.ariaLiveMessage"]({direction:H.key.replace("Arrow","").toLowerCase(),x:~~w.positionAbsolute.x,y:~~w.positionAbsolute.y})}),T({direction:Ci[H.key],factor:H.shiftKey?4:1})}}},Q=()=>{var oe;if(y||!((oe=S.current)!=null&&oe.matches(":focus-visible")))return;const{transform:H,width:U,height:ee,autoPanOnNodeFocus:ne,setCenter:q}=O.getState();if(!ne)return;gu(new Map([[e,g]]),{x:0,y:0,width:U,height:ee},H,!0).length>0||q(g.position.x+P.width/2,g.position.y+P.height/2,{zoom:H[2]})};return d.jsx("div",{className:Ne(["react-flow__node",`react-flow__node-${_}`,{[h]:N},g.className,{selected:g.selected,selectable:$,parent:j,draggable:N,dragging:C}]),ref:S,style:{zIndex:w.z,transform:`translate(${w.positionAbsolute.x}px,${w.positionAbsolute.y}px)`,pointerEvents:I?"all":"none",visibility:F?"visible":"hidden",...g.style,...b},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:R,onMouseMove:z,onMouseLeave:D,onContextMenu:Y,onClick:J,onDoubleClick:W,onKeyDown:L?Z:void 0,tabIndex:L?0:void 0,onFocus:L?Q:void 0,role:g.ariaRole??(L?"group":void 0),"aria-roledescription":"node","aria-describedby":y?void 0:`${Rg}-${x}`,"aria-label":g.ariaLabel,...g.domAttributes,children:d.jsx(BN,{value:e,children:d.jsx(E,{id:e,data:g.data,type:_,positionAbsoluteX:w.positionAbsolute.x,positionAbsoluteY:w.positionAbsolute.y,selected:g.selected??!1,selectable:$,draggable:N,deletable:g.deletable??!0,isConnectable:A,sourcePosition:g.sourcePosition,targetPosition:g.targetPosition,dragging:C,dragHandle:g.dragHandle,zIndex:w.z,parentId:g.parentId,...P})})})}var uE=M.memo(cE);const dE=e=>({nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function Qg(e){const{nodesConnectable:t,nodesFocusable:n,elementsSelectable:r,onError:o}=ie(dE,we),s=sE(e.onlyRenderVisibleElements),i=lE();return d.jsx("div",{className:"react-flow__nodes",style:il,children:s.map(l=>d.jsx(uE,{id:l,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:i,nodesDraggable:e.nodesDraggable??!0,nodesConnectable:t,nodesFocusable:n,elementsSelectable:r,nodeClickDistance:e.nodeClickDistance,onError:o},l))})}Qg.displayName="NodeRenderer";const fE=M.memo(Qg);function pE(e){return ie(M.useCallback(n=>{if(!e)return n.edges.map(o=>o.id);const r=[];if(n.width&&n.height)for(const o of n.edges){const s=n.nodeLookup.get(o.source),i=n.nodeLookup.get(o.target);s&&i&&y_({sourceNode:s,targetNode:i,width:n.width,height:n.height,transform:n.transform})&&r.push(o.id)}return r},[e]),we)}const hE=({color:e="none",strokeWidth:t=1})=>{const n={strokeWidth:t,...e&&{stroke:e}};return d.jsx("polyline",{className:"arrow",style:n,strokeLinecap:"round",fill:"none",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4"})},mE=({color:e="none",strokeWidth:t=1})=>{const n={strokeWidth:t,...e&&{stroke:e,fill:e}};return d.jsx("polyline",{className:"arrowclosed",style:n,strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})},Hf={[_i.Arrow]:hE,[_i.ArrowClosed]:mE};function gE(e){const t=he();return M.useMemo(()=>{var o,s;return Object.prototype.hasOwnProperty.call(Hf,e)?Hf[e]:((s=(o=t.getState()).onError)==null||s.call(o,"009",wt.error009(e)),null)},[e])}const yE=({id:e,type:t,color:n,width:r=12.5,height:o=12.5,markerUnits:s="strokeWidth",strokeWidth:i,orient:l="auto-start-reverse"})=>{const a=gE(t);return a?d.jsx("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${r}`,markerHeight:`${o}`,viewBox:"-10 -10 20 20",markerUnits:s,orient:l,refX:"0",refY:"0",children:d.jsx(a,{color:n,strokeWidth:i})}):null},qg=({defaultColor:e,rfId:t})=>{const n=ie(s=>s.edges),r=ie(s=>s.defaultEdgeOptions),o=M.useMemo(()=>E_(n,{id:t,defaultColor:e,defaultMarkerStart:r==null?void 0:r.markerStart,defaultMarkerEnd:r==null?void 0:r.markerEnd}),[n,r,t,e]);return o.length?d.jsx("svg",{className:"react-flow__marker","aria-hidden":"true",children:d.jsx("defs",{children:o.map(s=>d.jsx(yE,{id:s.id,type:s.type,color:s.color,width:s.width,height:s.height,markerUnits:s.markerUnits,strokeWidth:s.strokeWidth,orient:s.orient},s.id))})}):null};qg.displayName="MarkerDefinitions";var vE=M.memo(qg);function Jg({x:e,y:t,label:n,labelStyle:r,labelShowBg:o=!0,labelBgStyle:s,labelBgPadding:i=[2,4],labelBgBorderRadius:l=2,children:a,className:c,...u}){const[f,p]=M.useState({x:1,y:0,width:0,height:0}),h=Ne(["react-flow__edge-textwrapper",c]),y=M.useRef(null);return M.useEffect(()=>{if(y.current){const x=y.current.getBBox();p({x:x.x,y:x.y,width:x.width,height:x.height})}},[n]),n?d.jsxs("g",{transform:`translate(${e-f.width/2} ${t-f.height/2})`,className:h,visibility:f.width?"visible":"hidden",...u,children:[o&&d.jsx("rect",{width:f.width+2*i[0],x:-i[0],y:-i[1],height:f.height+2*i[1],className:"react-flow__edge-textbg",style:s,rx:l,ry:l}),d.jsx("text",{className:"react-flow__edge-text",y:f.height/2,dy:"0.3em",ref:y,style:r,children:n}),a]}):null}Jg.displayName="EdgeText";const xE=M.memo(Jg);function ll({path:e,labelX:t,labelY:n,label:r,labelStyle:o,labelShowBg:s,labelBgStyle:i,labelBgPadding:l,labelBgBorderRadius:a,interactionWidth:c=20,...u}){return d.jsxs(d.Fragment,{children:[d.jsx("path",{...u,d:e,fill:"none",className:Ne(["react-flow__edge-path",u.className])}),c?d.jsx("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:c,className:"react-flow__edge-interaction"}):null,r&&mt(t)&&mt(n)?d.jsx(xE,{x:t,y:n,label:r,labelStyle:o,labelShowBg:s,labelBgStyle:i,labelBgPadding:l,labelBgBorderRadius:a}):null]})}function Bf({pos:e,x1:t,y1:n,x2:r,y2:o}){return e===K.Left||e===K.Right?[.5*(t+r),n]:[t,.5*(n+o)]}function Zg({sourceX:e,sourceY:t,sourcePosition:n=K.Bottom,targetX:r,targetY:o,targetPosition:s=K.Top}){const[i,l]=Bf({pos:n,x1:e,y1:t,x2:r,y2:o}),[a,c]=Bf({pos:s,x1:r,y1:o,x2:e,y2:t}),[u,f,p,h]=vg({sourceX:e,sourceY:t,targetX:r,targetY:o,sourceControlX:i,sourceControlY:l,targetControlX:a,targetControlY:c});return[`M${e},${t} C${i},${l} ${a},${c} ${r},${o}`,u,f,p,h]}function ey(e){return M.memo(({id:t,sourceX:n,sourceY:r,targetX:o,targetY:s,sourcePosition:i,targetPosition:l,label:a,labelStyle:c,labelShowBg:u,labelBgStyle:f,labelBgPadding:p,labelBgBorderRadius:h,style:y,markerEnd:x,markerStart:k,interactionWidth:m})=>{const[v,g,w]=Zg({sourceX:n,sourceY:r,sourcePosition:i,targetX:o,targetY:s,targetPosition:l}),j=e.isInternal?void 0:t;return d.jsx(ll,{id:j,path:v,labelX:g,labelY:w,label:a,labelStyle:c,labelShowBg:u,labelBgStyle:f,labelBgPadding:p,labelBgBorderRadius:h,style:y,markerEnd:x,markerStart:k,interactionWidth:m})})}const wE=ey({isInternal:!1}),ty=ey({isInternal:!0});wE.displayName="SimpleBezierEdge";ty.displayName="SimpleBezierEdgeInternal";function ny(e){return M.memo(({id:t,sourceX:n,sourceY:r,targetX:o,targetY:s,label:i,labelStyle:l,labelShowBg:a,labelBgStyle:c,labelBgPadding:u,labelBgBorderRadius:f,style:p,sourcePosition:h=K.Bottom,targetPosition:y=K.Top,markerEnd:x,markerStart:k,pathOptions:m,interactionWidth:v})=>{const[g,w,j]=ec({sourceX:n,sourceY:r,sourcePosition:h,targetX:o,targetY:s,targetPosition:y,borderRadius:m==null?void 0:m.borderRadius,offset:m==null?void 0:m.offset,stepPosition:m==null?void 0:m.stepPosition}),_=e.isInternal?void 0:t;return d.jsx(ll,{id:_,path:g,labelX:w,labelY:j,label:i,labelStyle:l,labelShowBg:a,labelBgStyle:c,labelBgPadding:u,labelBgBorderRadius:f,style:p,markerEnd:x,markerStart:k,interactionWidth:v})})}const ry=ny({isInternal:!1}),oy=ny({isInternal:!0});ry.displayName="SmoothStepEdge";oy.displayName="SmoothStepEdgeInternal";function sy(e){return M.memo(({id:t,...n})=>{var o;const r=e.isInternal?void 0:t;return d.jsx(ry,{...n,id:r,pathOptions:M.useMemo(()=>{var s;return{borderRadius:0,offset:(s=n.pathOptions)==null?void 0:s.offset}},[(o=n.pathOptions)==null?void 0:o.offset])})})}const SE=sy({isInternal:!1}),iy=sy({isInternal:!0});SE.displayName="StepEdge";iy.displayName="StepEdgeInternal";function ly(e){return M.memo(({id:t,sourceX:n,sourceY:r,targetX:o,targetY:s,label:i,labelStyle:l,labelShowBg:a,labelBgStyle:c,labelBgPadding:u,labelBgBorderRadius:f,style:p,markerEnd:h,markerStart:y,interactionWidth:x})=>{const[k,m,v]=Sg({sourceX:n,sourceY:r,targetX:o,targetY:s}),g=e.isInternal?void 0:t;return d.jsx(ll,{id:g,path:k,labelX:m,labelY:v,label:i,labelStyle:l,labelShowBg:a,labelBgStyle:c,labelBgPadding:u,labelBgBorderRadius:f,style:p,markerEnd:h,markerStart:y,interactionWidth:x})})}const kE=ly({isInternal:!1}),ay=ly({isInternal:!0});kE.displayName="StraightEdge";ay.displayName="StraightEdgeInternal";function cy(e){return M.memo(({id:t,sourceX:n,sourceY:r,targetX:o,targetY:s,sourcePosition:i=K.Bottom,targetPosition:l=K.Top,label:a,labelStyle:c,labelShowBg:u,labelBgStyle:f,labelBgPadding:p,labelBgBorderRadius:h,style:y,markerEnd:x,markerStart:k,pathOptions:m,interactionWidth:v})=>{const[g,w,j]=xg({sourceX:n,sourceY:r,sourcePosition:i,targetX:o,targetY:s,targetPosition:l,curvature:m==null?void 0:m.curvature}),_=e.isInternal?void 0:t;return d.jsx(ll,{id:_,path:g,labelX:w,labelY:j,label:a,labelStyle:c,labelShowBg:u,labelBgStyle:f,labelBgPadding:p,labelBgBorderRadius:h,style:y,markerEnd:x,markerStart:k,interactionWidth:v})})}const _E=cy({isInternal:!1}),uy=cy({isInternal:!0});_E.displayName="BezierEdge";uy.displayName="BezierEdgeInternal";const Vf={default:uy,straight:ay,step:iy,smoothstep:oy,simplebezier:ty},Wf={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null,zIndex:void 0},NE=(e,t,n)=>n===K.Left?e-t:n===K.Right?e+t:e,EE=(e,t,n)=>n===K.Top?e-t:n===K.Bottom?e+t:e,Uf="react-flow__edgeupdater";function Yf({position:e,centerX:t,centerY:n,radius:r=10,onMouseDown:o,onMouseEnter:s,onMouseOut:i,type:l}){return d.jsx("circle",{onMouseDown:o,onMouseEnter:s,onMouseOut:i,className:Ne([Uf,`${Uf}-${l}`]),cx:NE(t,r,e),cy:EE(n,r,e),r,stroke:"transparent",fill:"transparent"})}function CE({isReconnectable:e,reconnectRadius:t,edge:n,sourceX:r,sourceY:o,targetX:s,targetY:i,sourcePosition:l,targetPosition:a,onReconnect:c,onReconnectStart:u,onReconnectEnd:f,setReconnecting:p,setUpdateHover:h}){const y=he(),x=(w,j)=>{if(w.button!==0)return;const{autoPanOnConnect:_,domNode:E,connectionMode:N,connectionRadius:$,lib:A,onConnectStart:L,cancelConnection:O,nodeLookup:F,rfId:S,panBy:C,updateConnection:T}=y.getState(),P=j.type==="target",b=(z,D)=>{p(!1),f==null||f(z,n,j.type,D)},I=z=>c==null?void 0:c(n,z),R=(z,D)=>{p(!0),u==null||u(w,n,j.type),L==null||L(z,D)};rc.onPointerDown(w.nativeEvent,{autoPanOnConnect:_,connectionMode:N,connectionRadius:$,domNode:E,handleId:j.id,nodeId:j.nodeId,nodeLookup:F,isTarget:P,edgeUpdaterType:j.type,lib:A,flowId:S,cancelConnection:O,panBy:C,isValidConnection:(...z)=>{var D,Y;return((Y=(D=y.getState()).isValidConnection)==null?void 0:Y.call(D,...z))??!0},onConnect:I,onConnectStart:R,onConnectEnd:(...z)=>{var D,Y;return(Y=(D=y.getState()).onConnectEnd)==null?void 0:Y.call(D,...z)},onReconnectEnd:b,updateConnection:T,getTransform:()=>y.getState().transform,getFromHandle:()=>y.getState().connection.fromHandle,dragThreshold:y.getState().connectionDragThreshold,handleDomNode:w.currentTarget})},k=w=>x(w,{nodeId:n.target,id:n.targetHandle??null,type:"target"}),m=w=>x(w,{nodeId:n.source,id:n.sourceHandle??null,type:"source"}),v=()=>h(!0),g=()=>h(!1);return d.jsxs(d.Fragment,{children:[(e===!0||e==="source")&&d.jsx(Yf,{position:l,centerX:r,centerY:o,radius:t,onMouseDown:k,onMouseEnter:v,onMouseOut:g,type:"source"}),(e===!0||e==="target")&&d.jsx(Yf,{position:a,centerX:s,centerY:i,radius:t,onMouseDown:m,onMouseEnter:v,onMouseOut:g,type:"target"})]})}function jE({id:e,edgesFocusable:t,edgesReconnectable:n,elementsSelectable:r,onClick:o,onDoubleClick:s,onContextMenu:i,onMouseEnter:l,onMouseMove:a,onMouseLeave:c,reconnectRadius:u,onReconnect:f,onReconnectStart:p,onReconnectEnd:h,rfId:y,edgeTypes:x,noPanClassName:k,onError:m,disableKeyboardA11y:v}){let g=ie(q=>q.edgeLookup.get(e));const w=ie(q=>q.defaultEdgeOptions);g=w?{...w,...g}:g;let j=g.type||"default",_=(x==null?void 0:x[j])||Vf[j];_===void 0&&(m==null||m("011",wt.error011(j)),j="default",_=(x==null?void 0:x.default)||Vf.default);const E=!!(g.focusable||t&&typeof g.focusable>"u"),N=typeof f<"u"&&(g.reconnectable||n&&typeof g.reconnectable>"u"),$=!!(g.selectable||r&&typeof g.selectable>"u"),A=M.useRef(null),[L,O]=M.useState(!1),[F,S]=M.useState(!1),C=he(),{zIndex:T=g.zIndex,sourceX:P,sourceY:b,targetX:I,targetY:R,sourcePosition:z,targetPosition:D}=ie(M.useCallback(q=>{const G=q.nodeLookup.get(g.source),oe=q.nodeLookup.get(g.target);if(!G||!oe)return Wf;const ae=N_({id:e,sourceNode:G,targetNode:oe,sourceHandle:g.sourceHandle||null,targetHandle:g.targetHandle||null,connectionMode:q.connectionMode,onError:m}),ce=g_({selected:g.selected,zIndex:g.zIndex,sourceNode:G,targetNode:oe,elevateOnSelect:q.elevateEdgesOnSelect,zIndexMode:q.zIndexMode});return{...ae||Wf,zIndex:ce}},[g.source,g.target,g.sourceHandle,g.targetHandle,g.selected,g.zIndex,m]),we),Y=M.useMemo(()=>g.markerStart?`url('#${tc(g.markerStart,y)}')`:void 0,[g.markerStart,y]),W=M.useMemo(()=>g.markerEnd?`url('#${tc(g.markerEnd,y)}')`:void 0,[g.markerEnd,y]);if(g.hidden||P===null||b===null||I===null||R===null)return null;const J=q=>{var ce;const{addSelectedEdges:G,unselectNodesAndEdges:oe,multiSelectionActive:ae}=C.getState();$&&(C.setState({nodesSelectionActive:!1}),g.selected&&ae?(oe({nodes:[],edges:[g]}),(ce=A.current)==null||ce.blur()):G([e])),o&&o(q,g)},Z=s?q=>{s(q,{...g})}:void 0,Q=i?q=>{i(q,{...g})}:void 0,H=l?q=>{l(q,{...g})}:void 0,U=a?q=>{a(q,{...g})}:void 0,ee=c?q=>{c(q,{...g})}:void 0,ne=q=>{var G;if(!v&&rg.includes(q.key)&&$){const{unselectNodesAndEdges:oe,addSelectedEdges:ae}=C.getState();q.key==="Escape"?((G=A.current)==null||G.blur(),oe({edges:[g]})):ae([e])}};return d.jsx("svg",{style:{zIndex:T},children:d.jsxs("g",{className:Ne(["react-flow__edge",`react-flow__edge-${j}`,g.className,k,{selected:g.selected,animated:g.animated,inactive:!$&&!o,updating:L,selectable:$}]),onClick:J,onDoubleClick:Z,onContextMenu:Q,onMouseEnter:H,onMouseMove:U,onMouseLeave:ee,onKeyDown:E?ne:void 0,tabIndex:E?0:void 0,role:g.ariaRole??(E?"group":"img"),"aria-roledescription":"edge","data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":g.ariaLabel===null?void 0:g.ariaLabel||`Edge from ${g.source} to ${g.target}`,"aria-describedby":E?`${Ag}-${y}`:void 0,ref:A,...g.domAttributes,children:[!F&&d.jsx(_,{id:e,source:g.source,target:g.target,type:g.type,selected:g.selected,animated:g.animated,selectable:$,deletable:g.deletable??!0,label:g.label,labelStyle:g.labelStyle,labelShowBg:g.labelShowBg,labelBgStyle:g.labelBgStyle,labelBgPadding:g.labelBgPadding,labelBgBorderRadius:g.labelBgBorderRadius,sourceX:P,sourceY:b,targetX:I,targetY:R,sourcePosition:z,targetPosition:D,data:g.data,style:g.style,sourceHandleId:g.sourceHandle,targetHandleId:g.targetHandle,markerStart:Y,markerEnd:W,pathOptions:"pathOptions"in g?g.pathOptions:void 0,interactionWidth:g.interactionWidth}),N&&d.jsx(CE,{edge:g,isReconnectable:N,reconnectRadius:u,onReconnect:f,onReconnectStart:p,onReconnectEnd:h,sourceX:P,sourceY:b,targetX:I,targetY:R,sourcePosition:z,targetPosition:D,setUpdateHover:O,setReconnecting:S})]})})}var bE=M.memo(jE);const PE=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function dy({defaultMarkerColor:e,onlyRenderVisibleElements:t,rfId:n,edgeTypes:r,noPanClassName:o,onReconnect:s,onEdgeContextMenu:i,onEdgeMouseEnter:l,onEdgeMouseMove:a,onEdgeMouseLeave:c,onEdgeClick:u,reconnectRadius:f,onEdgeDoubleClick:p,onReconnectStart:h,onReconnectEnd:y,disableKeyboardA11y:x}){const{edgesFocusable:k,edgesReconnectable:m,elementsSelectable:v,onError:g}=ie(PE,we),w=pE(t);return d.jsxs("div",{className:"react-flow__edges",children:[d.jsx(vE,{defaultColor:e,rfId:n}),w.map(j=>d.jsx(bE,{id:j,edgesFocusable:k,edgesReconnectable:m,elementsSelectable:v,noPanClassName:o,onReconnect:s,onContextMenu:i,onMouseEnter:l,onMouseMove:a,onMouseLeave:c,onClick:u,reconnectRadius:f,onDoubleClick:p,onReconnectStart:h,onReconnectEnd:y,rfId:n,onError:g,edgeTypes:r,disableKeyboardA11y:x},j))]})}dy.displayName="EdgeRenderer";const TE=M.memo(dy),Xf=e=>`translate(${e[0]}px,${e[1]}px) scale(${e[2]})`;function ME({children:e}){const t=he(),n=M.useRef(null),[r]=M.useState(()=>t.getState().transform);return Vg(()=>{let o=null;const s=()=>{const i=t.getState().transform;o&&i[0]===o[0]&&i[1]===o[1]&&i[2]===o[2]||(o=i,n.current&&(n.current.style.transform=Xf(i)))};return s(),t.subscribe(s)},[t]),d.jsx("div",{ref:n,className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:Xf(r)},children:e})}function IE(e){const t=sl(),n=M.useRef(!1);M.useEffect(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}const $E=e=>{var t;return(t=e.panZoom)==null?void 0:t.syncViewport};function LE(e){const t=ie($E),n=he();return M.useEffect(()=>{e&&(t==null||t(e),n.setState({transform:[e.x,e.y,e.zoom]}))},[e,t]),null}function RE(e){return e.connection.inProgress?{...e.connection,to:Jo(e.connection.to,e.transform)}:{...e.connection}}function AE(e){return RE}function DE(e){const t=AE();return ie(t,we)}const zE=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function FE({containerStyle:e,style:t,type:n,component:r}){const{nodesConnectable:o,width:s,height:i,isValid:l,inProgress:a}=ie(zE,we);return!(s&&o&&a)?null:d.jsx("svg",{style:e,width:s,height:i,className:"react-flow__connectionline react-flow__container",children:d.jsx("g",{className:Ne(["react-flow__connection",ig(l)]),children:d.jsx(fy,{style:t,type:n,CustomComponent:r,isValid:l})})})}const fy=({style:e,type:t=sn.Bezier,CustomComponent:n,isValid:r})=>{const{inProgress:o,from:s,fromNode:i,fromHandle:l,fromPosition:a,to:c,toNode:u,toHandle:f,toPosition:p,pointer:h}=DE();if(!o)return;if(n)return d.jsx(n,{connectionLineType:t,connectionLineStyle:e,fromNode:i,fromHandle:l,fromX:s.x,fromY:s.y,toX:c.x,toY:c.y,fromPosition:a,toPosition:p,connectionStatus:ig(r),toNode:u,toHandle:f,pointer:h});let y="";const x={sourceX:s.x,sourceY:s.y,sourcePosition:a,targetX:c.x,targetY:c.y,targetPosition:p};switch(t){case sn.Bezier:[y]=xg(x);break;case sn.SimpleBezier:[y]=Zg(x);break;case sn.Step:[y]=ec({...x,borderRadius:0});break;case sn.SmoothStep:[y]=ec(x);break;default:[y]=Sg(x)}return d.jsx("path",{d:y,fill:"none",className:"react-flow__connection-path",style:e})};fy.displayName="ConnectionLine";const OE={};function Gf(e=OE){M.useRef(e),he(),M.useEffect(()=>{},[e])}function HE(){he(),M.useRef(!1),M.useEffect(()=>{},[])}function py({nodeTypes:e,edgeTypes:t,onInit:n,onNodeClick:r,onEdgeClick:o,onNodeDoubleClick:s,onEdgeDoubleClick:i,onNodeMouseEnter:l,onNodeMouseMove:a,onNodeMouseLeave:c,onNodeContextMenu:u,onSelectionContextMenu:f,onSelectionStart:p,onSelectionEnd:h,connectionLineType:y,connectionLineStyle:x,connectionLineComponent:k,connectionLineContainerStyle:m,selectionKeyCode:v,selectionOnDrag:g,selectionMode:w,multiSelectionKeyCode:j,panActivationKeyCode:_,zoomActivationKeyCode:E,deleteKeyCode:N,onlyRenderVisibleElements:$,elementsSelectable:A,defaultViewport:L,translateExtent:O,minZoom:F,maxZoom:S,preventScrolling:C,defaultMarkerColor:T,zoomOnScroll:P,zoomOnPinch:b,panOnScroll:I,panOnScrollSpeed:R,panOnScrollMode:z,zoomOnDoubleClick:D,panOnDrag:Y,autoPanOnSelection:W,onPaneClick:J,onPaneMouseEnter:Z,onPaneMouseMove:Q,onPaneMouseLeave:H,onPaneScroll:U,onPaneContextMenu:ee,paneClickDistance:ne,nodeClickDistance:q,onEdgeContextMenu:G,onEdgeMouseEnter:oe,onEdgeMouseMove:ae,onEdgeMouseLeave:ce,reconnectRadius:me,onReconnect:et,onReconnectStart:_t,onReconnectEnd:Nt,noDragClassName:Lt,noWheelClassName:Fr,noPanClassName:Nn,disableKeyboardA11y:En,nodeExtent:lt,rfId:Rt,viewport:At,onViewportChange:Cn,nodesDraggable:ul}){return Gf(e),Gf(t),HE(),IE(n),LE(At),d.jsx(rE,{onPaneClick:J,onPaneMouseEnter:Z,onPaneMouseMove:Q,onPaneMouseLeave:H,onPaneContextMenu:ee,onPaneScroll:U,paneClickDistance:ne,deleteKeyCode:N,selectionKeyCode:v,selectionOnDrag:g,selectionMode:w,onSelectionStart:p,onSelectionEnd:h,multiSelectionKeyCode:j,panActivationKeyCode:_,zoomActivationKeyCode:E,elementsSelectable:A,zoomOnScroll:P,zoomOnPinch:b,zoomOnDoubleClick:D,panOnScroll:I,panOnScrollSpeed:R,panOnScrollMode:z,panOnDrag:Y,autoPanOnSelection:W,defaultViewport:L,translateExtent:O,minZoom:F,maxZoom:S,onSelectionContextMenu:f,preventScrolling:C,noDragClassName:Lt,noWheelClassName:Fr,noPanClassName:Nn,disableKeyboardA11y:En,onViewportChange:Cn,isControlledViewport:!!At,children:d.jsxs(ME,{children:[d.jsx(TE,{edgeTypes:t,onEdgeClick:o,onEdgeDoubleClick:i,onReconnect:et,onReconnectStart:_t,onReconnectEnd:Nt,onlyRenderVisibleElements:$,onEdgeContextMenu:G,onEdgeMouseEnter:oe,onEdgeMouseMove:ae,onEdgeMouseLeave:ce,reconnectRadius:me,defaultMarkerColor:T,noPanClassName:Nn,disableKeyboardA11y:En,rfId:Rt}),d.jsx(FE,{style:x,type:y,component:k,containerStyle:m}),d.jsx("div",{className:"react-flow__edgelabel-renderer"}),d.jsx(fE,{nodeTypes:e,onNodeClick:r,onNodeDoubleClick:s,onNodeMouseEnter:l,onNodeMouseMove:a,onNodeMouseLeave:c,onNodeContextMenu:u,nodeClickDistance:q,onlyRenderVisibleElements:$,noPanClassName:Nn,noDragClassName:Lt,disableKeyboardA11y:En,nodeExtent:lt,rfId:Rt,nodesDraggable:ul}),d.jsx("div",{className:"react-flow__viewport-portal"})]})})}py.displayName="GraphView";const BE=M.memo(py),VE=fg(),Kf=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:o,height:s,fitView:i,fitViewOptions:l,minZoom:a=.5,maxZoom:c=2,nodeOrigin:u,nodeExtent:f,zIndexMode:p="basic"}={})=>{const h=new Map,y=new Map,x=new Map,k=new Map,m=r??t??[],v=n??e??[],g=u??[0,0],w=f??Do;Ng(x,k,m);const{nodesInitialized:j}=nc(v,h,y,{nodeOrigin:g,nodeExtent:w,zIndexMode:p});let _=[0,0,1];if(i&&o&&s){const E=Qo(h,{filter:L=>!!((L.width||L.initialWidth)&&(L.height||L.initialHeight))}),{x:N,y:$,zoom:A}=vu(E,o,s,a,c,(l==null?void 0:l.padding)??.1);_=[N,$,A]}return{rfId:"1",width:o??0,height:s??0,transform:_,nodes:v,nodesInitialized:j,nodeLookup:h,parentLookup:y,edges:m,edgeLookup:k,connectionLookup:x,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:n!==void 0,hasDefaultEdges:r!==void 0,panZoom:null,minZoom:a,maxZoom:c,translateExtent:Do,nodeExtent:w,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:Mr.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:g,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:i??!1,fitViewOptions:l,fitViewResolver:null,connection:{...sg},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:VE,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:og,zIndexMode:p,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},WE=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:o,height:s,fitView:i,fitViewOptions:l,minZoom:a,maxZoom:c,nodeOrigin:u,nodeExtent:f,zIndexMode:p})=>sN((h,y)=>{async function x(){const{nodeLookup:k,panZoom:m,fitViewOptions:v,fitViewResolver:g,width:w,height:j,minZoom:_,maxZoom:E}=y();m&&(await c_({nodes:k,width:w,height:j,panZoom:m,minZoom:_,maxZoom:E},v),g==null||g.resolve(!0),h({fitViewResolver:null}))}return{...Kf({nodes:e,edges:t,width:o,height:s,fitView:i,fitViewOptions:l,minZoom:a,maxZoom:c,nodeOrigin:u,nodeExtent:f,defaultNodes:n,defaultEdges:r,zIndexMode:p}),setNodes:k=>{const{nodeLookup:m,parentLookup:v,nodeOrigin:g,nodeExtent:w,elevateNodesOnSelect:j,fitViewQueued:_,zIndexMode:E,nodesSelectionActive:N}=y(),{nodesInitialized:$,hasSelectedNodes:A}=nc(k,m,v,{nodeOrigin:g,nodeExtent:w,elevateNodesOnSelect:j,checkEquality:!0,zIndexMode:E}),L=N&&A;_&&$?(x(),h({nodes:k,nodesInitialized:$,fitViewQueued:!1,fitViewOptions:void 0,nodesSelectionActive:L})):h({nodes:k,nodesInitialized:$,nodesSelectionActive:L})},setEdges:k=>{const{connectionLookup:m,edgeLookup:v}=y();Ng(m,v,k),h({edges:k})},setDefaultNodesAndEdges:(k,m)=>{if(k){const{setNodes:v}=y();v(k),h({hasDefaultNodes:!0})}if(m){const{setEdges:v}=y();v(m),h({hasDefaultEdges:!0})}},updateNodeInternals:k=>{const{triggerNodeChanges:m,nodeLookup:v,parentLookup:g,domNode:w,nodeOrigin:j,nodeExtent:_,debug:E,fitViewQueued:N,zIndexMode:$}=y(),{changes:A,updatedInternals:L}=I_(k,v,g,w,j,_,$);L&&(b_(v,g,{nodeOrigin:j,nodeExtent:_,zIndexMode:$}),N?(x(),h({fitViewQueued:!1,fitViewOptions:void 0})):h({}),(A==null?void 0:A.length)>0&&(E&&console.log("React Flow: trigger node changes",A),m==null||m(A)))},updateNodePositions:(k,m=!1)=>{const v=[];let g=[];const{nodeLookup:w,triggerNodeChanges:j,connection:_,updateConnection:E,onNodesChangeMiddlewareMap:N}=y();for(const[$,A]of k){const L=w.get($),O=!!(L!=null&&L.expandParent&&(L!=null&&L.parentId)&&(A!=null&&A.position)),F={id:$,type:"position",position:O?{x:Math.max(0,A.position.x),y:Math.max(0,A.position.y)}:A.position,dragging:m};if(L&&_.inProgress&&_.fromNode.id===L.id){const S=Gn(L,_.fromHandle,K.Left,!0);E({..._,from:S})}O&&L.parentId&&v.push({id:$,parentId:L.parentId,rect:{...A.internals.positionAbsolute,width:A.measured.width??0,height:A.measured.height??0}}),g.push(F)}if(v.length>0){const{parentLookup:$,nodeOrigin:A}=y(),L=Nu(v,w,$,A);g.push(...L)}for(const $ of N.values())g=$(g);j(g)},triggerNodeChanges:k=>{const{onNodesChange:m,setNodes:v,nodes:g,hasDefaultNodes:w,debug:j}=y();if(k!=null&&k.length){if(w){const _=Fg(k,g);v(_)}j&&console.log("React Flow: trigger node changes",k),m==null||m(k)}},triggerEdgeChanges:k=>{const{onEdgesChange:m,setEdges:v,edges:g,hasDefaultEdges:w,debug:j}=y();if(k!=null&&k.length){if(w){const _=Og(k,g);v(_)}j&&console.log("React Flow: trigger edge changes",k),m==null||m(k)}},addSelectedNodes:k=>{const{multiSelectionActive:m,edgeLookup:v,nodeLookup:g,triggerNodeChanges:w,triggerEdgeChanges:j}=y();if(m){const _=k.map(E=>Tn(E,!0));w(_);return}w(fr(g,new Set([...k]),!0)),j(fr(v))},addSelectedEdges:k=>{const{multiSelectionActive:m,edgeLookup:v,nodeLookup:g,triggerNodeChanges:w,triggerEdgeChanges:j}=y();if(m){const _=k.map(E=>Tn(E,!0));j(_);return}j(fr(v,new Set([...k]))),w(fr(g,new Set,!0))},unselectNodesAndEdges:({nodes:k,edges:m}={})=>{const{edges:v,nodes:g,nodeLookup:w,triggerNodeChanges:j,triggerEdgeChanges:_}=y(),E=k||g,N=m||v,$=[];for(const L of E){if(!L.selected)continue;const O=w.get(L.id);O&&(O.selected=!1),$.push(Tn(L.id,!1))}const A=[];for(const L of N)L.selected&&A.push(Tn(L.id,!1));j($),_(A)},setMinZoom:k=>{const{panZoom:m,maxZoom:v}=y();m==null||m.setScaleExtent([k,v]),h({minZoom:k})},setMaxZoom:k=>{const{panZoom:m,minZoom:v}=y();m==null||m.setScaleExtent([v,k]),h({maxZoom:k})},setTranslateExtent:k=>{var m;(m=y().panZoom)==null||m.setTranslateExtent(k),h({translateExtent:k})},resetSelectedElements:()=>{const{edges:k,nodes:m,triggerNodeChanges:v,triggerEdgeChanges:g,elementsSelectable:w}=y();if(!w)return;const j=m.reduce((E,N)=>N.selected?[...E,Tn(N.id,!1)]:E,[]),_=k.reduce((E,N)=>N.selected?[...E,Tn(N.id,!1)]:E,[]);v(j),g(_)},setNodeExtent:k=>{const{nodes:m,nodeLookup:v,parentLookup:g,nodeOrigin:w,elevateNodesOnSelect:j,nodeExtent:_,zIndexMode:E}=y();k[0][0]===_[0][0]&&k[0][1]===_[0][1]&&k[1][0]===_[1][0]&&k[1][1]===_[1][1]||(nc(m,v,g,{nodeOrigin:w,nodeExtent:k,elevateNodesOnSelect:j,checkEquality:!1,zIndexMode:E}),h({nodeExtent:k}))},panBy:k=>{const{transform:m,width:v,height:g,panZoom:w,translateExtent:j}=y();return $_({delta:k,panZoom:w,transform:m,translateExtent:j,width:v,height:g})},setCenter:async(k,m,v)=>{const{width:g,height:w,maxZoom:j,panZoom:_}=y();if(!_)return!1;const E=typeof(v==null?void 0:v.zoom)<"u"?v.zoom:j;return await _.setViewport({x:g/2-k*E,y:w/2-m*E,zoom:E},{duration:v==null?void 0:v.duration,ease:v==null?void 0:v.ease,interpolate:v==null?void 0:v.interpolate}),!0},cancelConnection:()=>{h({connection:{...sg}})},updateConnection:k=>{h({connection:k})},reset:()=>h({...Kf()})}},Object.is);function hy({initialNodes:e,initialEdges:t,defaultNodes:n,defaultEdges:r,initialWidth:o,initialHeight:s,initialMinZoom:i,initialMaxZoom:l,initialFitViewOptions:a,fitView:c,nodeOrigin:u,nodeExtent:f,zIndexMode:p,children:h}){const[y]=M.useState(()=>WE({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:o,height:s,fitView:c,minZoom:i,maxZoom:l,fitViewOptions:a,nodeOrigin:u,nodeExtent:f,zIndexMode:p}));return d.jsx(iN,{value:y,children:d.jsx(PN,{children:d.jsx(WN,{children:h})})})}function UE({children:e,nodes:t,edges:n,defaultNodes:r,defaultEdges:o,width:s,height:i,fitView:l,fitViewOptions:a,minZoom:c,maxZoom:u,nodeOrigin:f,nodeExtent:p,zIndexMode:h}){return M.useContext(rl)?d.jsx(d.Fragment,{children:e}):d.jsx(hy,{initialNodes:t,initialEdges:n,defaultNodes:r,defaultEdges:o,initialWidth:s,initialHeight:i,fitView:l,initialFitViewOptions:a,initialMinZoom:c,initialMaxZoom:u,nodeOrigin:f,nodeExtent:p,zIndexMode:h,children:e})}const YE={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};function XE({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,className:o,nodeTypes:s,edgeTypes:i,onNodeClick:l,onEdgeClick:a,onInit:c,onMove:u,onMoveStart:f,onMoveEnd:p,onConnect:h,onConnectStart:y,onConnectEnd:x,onClickConnectStart:k,onClickConnectEnd:m,onNodeMouseEnter:v,onNodeMouseMove:g,onNodeMouseLeave:w,onNodeContextMenu:j,onNodeDoubleClick:_,onNodeDragStart:E,onNodeDrag:N,onNodeDragStop:$,onNodesDelete:A,onEdgesDelete:L,onDelete:O,onSelectionChange:F,onSelectionDragStart:S,onSelectionDrag:C,onSelectionDragStop:T,onSelectionContextMenu:P,onSelectionStart:b,onSelectionEnd:I,onBeforeDelete:R,connectionMode:z,connectionLineType:D=sn.Bezier,connectionLineStyle:Y,connectionLineComponent:W,connectionLineContainerStyle:J,deleteKeyCode:Z="Backspace",selectionKeyCode:Q="Shift",selectionOnDrag:H=!1,selectionMode:U=zo.Full,panActivationKeyCode:ee="Space",multiSelectionKeyCode:ne=Oo()?"Meta":"Control",zoomActivationKeyCode:q=Oo()?"Meta":"Control",snapToGrid:G,snapGrid:oe,onlyRenderVisibleElements:ae=!1,selectNodesOnDrag:ce,nodesDraggable:me,autoPanOnNodeFocus:et,nodesConnectable:_t,nodesFocusable:Nt,nodeOrigin:Lt=Dg,edgesFocusable:Fr,edgesReconnectable:Nn,elementsSelectable:En=!0,defaultViewport:lt=xN,minZoom:Rt=.5,maxZoom:At=2,translateExtent:Cn=Do,preventScrolling:ul=!0,nodeExtent:dl,defaultMarkerColor:by="#b1b1b7",zoomOnScroll:Py=!0,zoomOnPinch:Ty=!0,panOnScroll:My=!1,panOnScrollSpeed:Iy=.5,panOnScrollMode:$y=zn.Free,zoomOnDoubleClick:Ly=!0,panOnDrag:Ry=!0,onPaneClick:Ay,onPaneMouseEnter:Dy,onPaneMouseMove:zy,onPaneMouseLeave:Fy,onPaneScroll:Oy,onPaneContextMenu:Hy,paneClickDistance:By=1,nodeClickDistance:Vy=0,children:Wy,onReconnect:Uy,onReconnectStart:Yy,onReconnectEnd:Xy,onEdgeContextMenu:Gy,onEdgeDoubleClick:Ky,onEdgeMouseEnter:Qy,onEdgeMouseMove:qy,onEdgeMouseLeave:Jy,reconnectRadius:Zy=10,onNodesChange:e0,onEdgesChange:t0,noDragClassName:n0="nodrag",noWheelClassName:r0="nowheel",noPanClassName:ju="nopan",fitView:bu,fitViewOptions:Pu,connectOnClick:o0,attributionPosition:s0,proOptions:i0,defaultEdgeOptions:l0,elevateNodesOnSelect:a0=!0,elevateEdgesOnSelect:c0=!1,disableKeyboardA11y:Tu=!1,autoPanOnConnect:u0,autoPanOnNodeDrag:d0,autoPanOnSelection:f0=!0,autoPanSpeed:p0,connectionRadius:h0,isValidConnection:m0,onError:g0,style:y0,id:Mu,nodeDragThreshold:v0,connectionDragThreshold:x0,viewport:w0,onViewportChange:S0,width:k0,height:_0,colorMode:N0="light",debug:E0,onScroll:es,ariaLabelConfig:C0,zIndexMode:Iu="basic",...j0},b0){const fl=Mu||"1",P0=_N(N0),T0=M.useCallback($u=>{$u.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),es==null||es($u)},[es]);return d.jsx("div",{"data-testid":"rf__wrapper",...j0,onScroll:T0,style:{...y0,...YE},ref:b0,className:Ne(["react-flow",o,P0]),id:Mu,role:"application",children:d.jsxs(UE,{nodes:e,edges:t,width:k0,height:_0,fitView:bu,fitViewOptions:Pu,minZoom:Rt,maxZoom:At,nodeOrigin:Lt,nodeExtent:dl,zIndexMode:Iu,children:[d.jsx(kN,{nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:h,onConnectStart:y,onConnectEnd:x,onClickConnectStart:k,onClickConnectEnd:m,nodesDraggable:me,autoPanOnNodeFocus:et,nodesConnectable:_t,nodesFocusable:Nt,edgesFocusable:Fr,edgesReconnectable:Nn,elementsSelectable:En,elevateNodesOnSelect:a0,elevateEdgesOnSelect:c0,minZoom:Rt,maxZoom:At,nodeExtent:dl,onNodesChange:e0,onEdgesChange:t0,snapToGrid:G,snapGrid:oe,connectionMode:z,translateExtent:Cn,connectOnClick:o0,defaultEdgeOptions:l0,fitView:bu,fitViewOptions:Pu,onNodesDelete:A,onEdgesDelete:L,onDelete:O,onNodeDragStart:E,onNodeDrag:N,onNodeDragStop:$,onSelectionDrag:C,onSelectionDragStart:S,onSelectionDragStop:T,onMove:u,onMoveStart:f,onMoveEnd:p,noPanClassName:ju,nodeOrigin:Lt,rfId:fl,autoPanOnConnect:u0,autoPanOnNodeDrag:d0,autoPanSpeed:p0,onError:g0,connectionRadius:h0,isValidConnection:m0,selectNodesOnDrag:ce,nodeDragThreshold:v0,connectionDragThreshold:x0,onBeforeDelete:R,debug:E0,ariaLabelConfig:C0,zIndexMode:Iu}),d.jsx(BE,{onInit:c,onNodeClick:l,onEdgeClick:a,onNodeMouseEnter:v,onNodeMouseMove:g,onNodeMouseLeave:w,onNodeContextMenu:j,onNodeDoubleClick:_,nodeTypes:s,edgeTypes:i,connectionLineType:D,connectionLineStyle:Y,connectionLineComponent:W,connectionLineContainerStyle:J,selectionKeyCode:Q,selectionOnDrag:H,selectionMode:U,deleteKeyCode:Z,multiSelectionKeyCode:ne,panActivationKeyCode:ee,zoomActivationKeyCode:q,onlyRenderVisibleElements:ae,defaultViewport:lt,translateExtent:Cn,minZoom:Rt,maxZoom:At,preventScrolling:ul,zoomOnScroll:Py,zoomOnPinch:Ty,zoomOnDoubleClick:Ly,panOnScroll:My,panOnScrollSpeed:Iy,panOnScrollMode:$y,panOnDrag:Ry,autoPanOnSelection:f0,onPaneClick:Ay,onPaneMouseEnter:Dy,onPaneMouseMove:zy,onPaneMouseLeave:Fy,onPaneScroll:Oy,onPaneContextMenu:Hy,paneClickDistance:By,nodeClickDistance:Vy,onSelectionContextMenu:P,onSelectionStart:b,onSelectionEnd:I,onReconnect:Uy,onReconnectStart:Yy,onReconnectEnd:Xy,onEdgeContextMenu:Gy,onEdgeDoubleClick:Ky,onEdgeMouseEnter:Qy,onEdgeMouseMove:qy,onEdgeMouseLeave:Jy,reconnectRadius:Zy,defaultMarkerColor:by,noDragClassName:n0,noWheelClassName:r0,noPanClassName:ju,rfId:fl,disableKeyboardA11y:Tu,nodeExtent:dl,viewport:w0,onViewportChange:S0,nodesDraggable:me}),d.jsx(vN,{onSelectionChange:F}),Wy,d.jsx(pN,{proOptions:i0,position:s0}),d.jsx(fN,{rfId:fl,disableKeyboardA11y:Tu})]})})}var GE=Bg(XE);const KE=e=>{var t;return(t=e.domNode)==null?void 0:t.querySelector(".react-flow__viewport-portal")};function QE({children:e}){const t=ie(KE);return t?Xi.createPortal(e,t):null}function qE({dimensions:e,lineWidth:t,variant:n,className:r}){return d.jsx("path",{strokeWidth:t,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:Ne(["react-flow__background-pattern",n,r])})}function JE({radius:e,className:t}){return d.jsx("circle",{cx:e,cy:e,r:e,className:Ne(["react-flow__background-pattern","dots",t])})}var vn;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(vn||(vn={}));const ZE={[vn.Dots]:1,[vn.Lines]:1,[vn.Cross]:6},eC=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function my({id:e,variant:t=vn.Dots,gap:n=20,size:r,lineWidth:o=1,offset:s=0,color:i,bgColor:l,style:a,className:c,patternClassName:u}){const f=M.useRef(null),{transform:p,patternId:h}=ie(eC,we),y=r||ZE[t],x=t===vn.Dots,k=t===vn.Cross,m=Array.isArray(n)?n:[n,n],v=[m[0]*p[2]||1,m[1]*p[2]||1],g=y*p[2],w=Array.isArray(s)?s:[s,s],j=k?[g,g]:v,_=[w[0]*p[2]+j[0]/2,w[1]*p[2]+j[1]/2],E=`${h}${e||""}`;return d.jsxs("svg",{className:Ne(["react-flow__background",c]),style:{...a,...il,"--xy-background-color-props":l,"--xy-background-pattern-color-props":i},ref:f,"data-testid":"rf__background",children:[d.jsx("pattern",{id:E,x:p[0]%v[0],y:p[1]%v[1],width:v[0],height:v[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${_[0]},-${_[1]})`,children:x?d.jsx(JE,{radius:g/2,className:u}):d.jsx(qE,{dimensions:j,lineWidth:o,variant:t,className:u})}),d.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${E})`})]})}my.displayName="Background";const tC=M.memo(my);function nC(){return d.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:d.jsx("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function rC(){return d.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:d.jsx("path",{d:"M0 0h32v4.2H0z"})})}function oC(){return d.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:d.jsx("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 sC(){return d.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:d.jsx("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 iC(){return d.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:d.jsx("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"})})}function Cs({children:e,className:t,...n}){return d.jsx("button",{type:"button",className:Ne(["react-flow__controls-button",t]),...n,children:e})}const lC=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function gy({style:e,showZoom:t=!0,showFitView:n=!0,showInteractive:r=!0,fitViewOptions:o,onZoomIn:s,onZoomOut:i,onFitView:l,onInteractiveChange:a,className:c,children:u,position:f="bottom-left",orientation:p="vertical","aria-label":h}){const y=he(),{isInteractive:x,minZoomReached:k,maxZoomReached:m,ariaLabelConfig:v}=ie(lC,we),{zoomIn:g,zoomOut:w,fitView:j}=sl(),_=()=>{g(),s==null||s()},E=()=>{w(),i==null||i()},N=()=>{j(o),l==null||l()},$=()=>{y.setState({nodesDraggable:!x,nodesConnectable:!x,elementsSelectable:!x}),a==null||a(!x)},A=p==="horizontal"?"horizontal":"vertical";return d.jsxs(ol,{className:Ne(["react-flow__controls",A,c]),position:f,style:e,"data-testid":"rf__controls","aria-label":h??v["controls.ariaLabel"],children:[t&&d.jsxs(d.Fragment,{children:[d.jsx(Cs,{onClick:_,className:"react-flow__controls-zoomin",title:v["controls.zoomIn.ariaLabel"],"aria-label":v["controls.zoomIn.ariaLabel"],disabled:m,children:d.jsx(nC,{})}),d.jsx(Cs,{onClick:E,className:"react-flow__controls-zoomout",title:v["controls.zoomOut.ariaLabel"],"aria-label":v["controls.zoomOut.ariaLabel"],disabled:k,children:d.jsx(rC,{})})]}),n&&d.jsx(Cs,{className:"react-flow__controls-fitview",onClick:N,title:v["controls.fitView.ariaLabel"],"aria-label":v["controls.fitView.ariaLabel"],children:d.jsx(oC,{})}),r&&d.jsx(Cs,{className:"react-flow__controls-interactive",onClick:$,title:v["controls.interactive.ariaLabel"],"aria-label":v["controls.interactive.ariaLabel"],children:x?d.jsx(iC,{}):d.jsx(sC,{})}),u]})}gy.displayName="Controls";M.memo(gy);function aC({id:e,x:t,y:n,width:r,height:o,style:s,color:i,strokeColor:l,strokeWidth:a,className:c,borderRadius:u,shapeRendering:f,selected:p,onClick:h}){const{background:y,backgroundColor:x}=s||{},k=i||y||x;return d.jsx("rect",{className:Ne(["react-flow__minimap-node",{selected:p},c]),x:t,y:n,rx:u,ry:u,width:r,height:o,style:{fill:k,stroke:l,strokeWidth:a},shapeRendering:f,onClick:h?m=>h(m,e):void 0})}const cC=M.memo(aC),uC=e=>e.nodes.map(t=>t.id),Gl=e=>e instanceof Function?e:()=>e;function dC({nodeStrokeColor:e,nodeColor:t,nodeClassName:n="",nodeBorderRadius:r=5,nodeStrokeWidth:o,nodeComponent:s=cC,onClick:i}){const l=ie(uC,we),a=Gl(t),c=Gl(e),u=Gl(n),f=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return d.jsx(d.Fragment,{children:l.map(p=>d.jsx(pC,{id:p,nodeColorFunc:a,nodeStrokeColorFunc:c,nodeClassNameFunc:u,nodeBorderRadius:r,nodeStrokeWidth:o,NodeComponent:s,onClick:i,shapeRendering:f},p))})}function fC({id:e,nodeColorFunc:t,nodeStrokeColorFunc:n,nodeClassNameFunc:r,nodeBorderRadius:o,nodeStrokeWidth:s,shapeRendering:i,NodeComponent:l,onClick:a}){const{node:c,x:u,y:f,width:p,height:h}=ie(y=>{const x=y.nodeLookup.get(e);if(!x)return{node:void 0,x:0,y:0,width:0,height:0};const k=x.internals.userNode,{x:m,y:v}=x.internals.positionAbsolute,{width:g,height:w}=kt(k);return{node:k,x:m,y:v,width:g,height:w}},we);return!c||c.hidden||!pg(c)?null:d.jsx(l,{x:u,y:f,width:p,height:h,style:c.style,selected:!!c.selected,className:r(c),color:t(c),borderRadius:o,strokeColor:n(c),strokeWidth:s,shapeRendering:i,onClick:a,id:c.id})}const pC=M.memo(fC);var hC=M.memo(dC);const mC=200,gC=150,yC=e=>!e.hidden,vC=e=>{const t={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:t,boundingRect:e.nodeLookup.size>0?ug(Qo(e.nodeLookup,{filter:yC}),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},Qf=(e,t)=>e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height,xC=(e,t)=>Qf(e.viewBB,t.viewBB)&&Qf(e.boundingRect,t.boundingRect)&&e.rfId===t.rfId&&e.panZoom===t.panZoom&&e.translateExtent===t.translateExtent&&e.flowWidth===t.flowWidth&&e.flowHeight===t.flowHeight&&e.ariaLabelConfig===t.ariaLabelConfig,wC="react-flow__minimap-desc";function yy({style:e,className:t,nodeStrokeColor:n,nodeColor:r,nodeClassName:o="",nodeBorderRadius:s=5,nodeStrokeWidth:i,nodeComponent:l,bgColor:a,maskColor:c,maskStrokeColor:u,maskStrokeWidth:f,position:p="bottom-right",onClick:h,onNodeClick:y,pannable:x=!1,zoomable:k=!1,ariaLabel:m,inversePan:v,zoomStep:g=1,offsetScale:w=5}){const j=he(),_=M.useRef(null),{boundingRect:E,viewBB:N,rfId:$,panZoom:A,translateExtent:L,flowWidth:O,flowHeight:F,ariaLabelConfig:S}=ie(vC,xC),C=(e==null?void 0:e.width)??mC,T=(e==null?void 0:e.height)??gC,P=E.width/C,b=E.height/T,I=Math.max(P,b),R=I*C,z=I*T,D=w*I,Y=E.x-(R-E.width)/2-D,W=E.y-(z-E.height)/2-D,J=R+D*2,Z=z+D*2,Q=`${wC}-${$}`,H=M.useRef(0),U=M.useRef();H.current=I,M.useEffect(()=>{if(_.current&&A)return U.current=B_({domNode:_.current,panZoom:A,getTransform:()=>j.getState().transform,getViewScale:()=>H.current}),()=>{var G;(G=U.current)==null||G.destroy()}},[A]),M.useEffect(()=>{var G;(G=U.current)==null||G.update({translateExtent:L,width:O,height:F,inversePan:v,pannable:x,zoomStep:g,zoomable:k})},[x,k,v,g,L,O,F]);const ee=h?G=>{var ce;const[oe,ae]=((ce=U.current)==null?void 0:ce.pointer(G))||[0,0];h(G,{x:oe,y:ae})}:void 0,ne=y?M.useCallback((G,oe)=>{const ae=j.getState().nodeLookup.get(oe).internals.userNode;y(G,ae)},[]):void 0,q=m??S["minimap.ariaLabel"];return d.jsx(ol,{position:p,style:{...e,"--xy-minimap-background-color-props":typeof a=="string"?a:void 0,"--xy-minimap-mask-background-color-props":typeof c=="string"?c:void 0,"--xy-minimap-mask-stroke-color-props":typeof u=="string"?u:void 0,"--xy-minimap-mask-stroke-width-props":typeof f=="number"?f*I:void 0,"--xy-minimap-node-background-color-props":typeof r=="string"?r:void 0,"--xy-minimap-node-stroke-color-props":typeof n=="string"?n:void 0,"--xy-minimap-node-stroke-width-props":typeof i=="number"?i:void 0},className:Ne(["react-flow__minimap",t]),"data-testid":"rf__minimap",children:d.jsxs("svg",{width:C,height:T,viewBox:`${Y} ${W} ${J} ${Z}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":Q,ref:_,onClick:ee,children:[q&&d.jsx("title",{id:Q,children:q}),d.jsx(hC,{onClick:ne,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:s,nodeClassName:o,nodeStrokeWidth:i,nodeComponent:l}),d.jsx("path",{className:"react-flow__minimap-mask",d:`M${Y-D},${W-D}h${J+D*2}v${Z+D*2}h${-J-D*2}z
62
+ M${N.x},${N.y}h${N.width}v${N.height}h${-N.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}yy.displayName="MiniMap";M.memo(yy);const SC=e=>t=>e?`${Math.max(1/t.transform[2],1)}`:void 0,kC={[Lr.Line]:"right",[Lr.Handle]:"bottom-right"};function _C({nodeId:e,position:t,variant:n=Lr.Handle,className:r,style:o=void 0,children:s,color:i,minWidth:l=10,minHeight:a=10,maxWidth:c=Number.MAX_VALUE,maxHeight:u=Number.MAX_VALUE,keepAspectRatio:f=!1,resizeDirection:p,autoScale:h=!0,shouldResize:y,onResizeStart:x,onResize:k,onResizeEnd:m}){const v=Xg(),g=typeof e=="string"?e:v,w=he(),j=M.useRef(null),_=n===Lr.Handle,E=ie(M.useCallback(SC(_&&h),[_,h]),we),N=M.useRef(null),$=t??kC[n];M.useEffect(()=>{if(!(!j.current||!g))return N.current||(N.current=tN({domNode:j.current,nodeId:g,getStoreItems:()=>{const{nodeLookup:L,transform:O,snapGrid:F,snapToGrid:S,nodeOrigin:C,domNode:T}=w.getState();return{nodeLookup:L,transform:O,snapGrid:F,snapToGrid:S,nodeOrigin:C,paneDomNode:T}},onChange:(L,O)=>{const{triggerNodeChanges:F,nodeLookup:S,parentLookup:C,nodeOrigin:T}=w.getState(),P=[],b={x:L.x,y:L.y},I=S.get(g);if(I&&I.expandParent&&I.parentId){const R=I.origin??T,z=L.width??I.measured.width??0,D=L.height??I.measured.height??0,Y={id:I.id,parentId:I.parentId,rect:{width:z,height:D,...hg({x:L.x??I.position.x,y:L.y??I.position.y},{width:z,height:D},I.parentId,S,R)}},W=Nu([Y],S,C,T);P.push(...W),b.x=L.x?Math.max(R[0]*z,L.x):void 0,b.y=L.y?Math.max(R[1]*D,L.y):void 0}if(b.x!==void 0&&b.y!==void 0){const R={id:g,type:"position",position:{...b}};P.push(R)}if(L.width!==void 0&&L.height!==void 0){const z={id:g,type:"dimensions",resizing:!0,setAttributes:p?p==="horizontal"?"width":"height":!0,dimensions:{width:L.width,height:L.height}};P.push(z)}for(const R of O){const z={...R,type:"position"};P.push(z)}F(P)},onEnd:({width:L,height:O})=>{const F={id:g,type:"dimensions",resizing:!1,dimensions:{width:L,height:O}};w.getState().triggerNodeChanges([F])}})),N.current.update({controlPosition:$,boundaries:{minWidth:l,minHeight:a,maxWidth:c,maxHeight:u},keepAspectRatio:f,resizeDirection:p,onResizeStart:x,onResize:k,onResizeEnd:m,shouldResize:y}),()=>{var L;(L=N.current)==null||L.destroy()}},[$,l,a,c,u,f,x,k,m,y]);const A=$.split("-");return d.jsx("div",{className:Ne(["react-flow__resize-control","nodrag",...A,n,r]),ref:j,style:{...o,scale:E,...i&&{[_?"backgroundColor":"borderColor"]:i}},children:s})}M.memo(_C);const NC=[{type:"constant",label:"Constant",category:"Inputs",inputs:[],outputs:[{name:"value",label:"Value",dataKind:"tensor",direction:"out"}],parameters:[{name:"value",label:"Value",kind:"any",default:1,required:!0,dtype:"float"}]},{type:"add",label:"Add",category:"Math",inputs:[{name:"left",label:"Left",dataKind:"tensor",direction:"in"},{name:"right",label:"Right",dataKind:"tensor",direction:"in"}],outputs:[{name:"result",label:"Result",dataKind:"tensor",direction:"out"}],parameters:[]},{type:"multiply",label:"Multiply",category:"Math",inputs:[{name:"left",label:"Left",dataKind:"tensor",direction:"in"},{name:"right",label:"Right",dataKind:"tensor",direction:"in"}],outputs:[{name:"result",label:"Result",dataKind:"tensor",direction:"out"}],parameters:[]}],Zo="0.1.0-15-g4f989cb";let EC=0;function Kl(e){return e.charAt(0).toUpperCase()+e.slice(1)}function CC(e){return{type:e.type,label:e.label,category:e.category,inputs:e.inputs.map(t=>({name:t.name,label:Kl(t.name),dataKind:t.data_kind,direction:"in"})),outputs:e.outputs.map(t=>({name:t.name,label:Kl(t.name),dataKind:t.data_kind,direction:"out"})),parameters:e.parameters.map(t=>({name:t.name,label:Kl(t.name),kind:t.kind,default:t.default,required:t.required,dtype:t.dtype??void 0,browse:t.browse??void 0}))}}let qf=0;function jn(e){return qf+=1,`${e}_${qf}`}function ct(e,t){let n="untitled",r="",o="";try{n=B.getState().activeFileName??"untitled",r=localStorage.getItem("entropia_riko_theme")??"",o=localStorage.getItem("entropia_riko_background")??""}catch{}return{version:"1.0",metadata:{name:n,app:"entropia-riko",appVersion:Zo},nodes:e.map(s=>({id:s.id,type_name:s.data.type,label:s.data.label,category:s.data.category,position:[s.position.x,s.position.y],parameters:s.data.params,inputs:[],outputs:[]})),edges:t.map(s=>({id:s.id,source_node:s.source,source_port:s.sourceHandle,target_node:s.target,target_port:s.targetHandle})),settings:{theme:r,backgroundImage:o}}}function js(e,t){const n=(e.nodes||[]).map(o=>{var i,l;const s=t.find(a=>a.type===o.type_name);return{id:o.id,type:"thnNode",position:{x:((i=o.position)==null?void 0:i[0])??0,y:((l=o.position)==null?void 0:l[1])??0},data:{type:o.type_name,label:o.label||(s==null?void 0:s.label)||o.type_name,category:o.category||(s==null?void 0:s.category)||"",params:o.parameters||{},inputs:(s==null?void 0:s.inputs)||[],outputs:(s==null?void 0:s.outputs)||[],hasError:!1}}}),r=(e.edges||[]).map(o=>({id:o.id,source:o.source_node,target:o.target_node,sourceHandle:o.source_port,targetHandle:o.target_port}));return{nodes:n,edges:r}}async function jC(e){const t=(e||"").trim();if(!t)return null;const n=[];(t.includes("/")||t.endsWith(".riko")||t.endsWith(".ric"))&&n.push(t),n.push(`examples/models/${t}.riko`),n.push(`examples/${t}.riko`),n.push(`workflows/${t}.riko`),n.push(`${t}.riko`);for(const r of n)try{if((await(await fetch(`/api/files/content?path=${encodeURIComponent(r)}`)).json()).status==="success")return r}catch{}return null}const vy="entropia_riko_recent";function bC(){try{const e=localStorage.getItem(vy),t=e?JSON.parse(e):[];return Array.isArray(t)?t.filter(n=>typeof n=="string"):[]}catch{return[]}}function PC(e){try{localStorage.setItem(vy,JSON.stringify(e.slice(0,10)))}catch{}}const B=Cm((e,t)=>({nodeDefs:NC,workflows:[],activeWorkflowId:null,nodes:[],edges:[],frames:[],graphStack:[{name:"root",path:"",nodes:[],edges:[]}],selectedNodeId:null,status:"idle",logs:[],results:{},fileList:[],activeFileName:null,activeFilePath:null,dirty:!1,losses:[],recentFiles:bC(),welcomeOpen:!0,prefsOpen:!1,aboutOpen:!1,importFolderOpen:!1,filePickerOpen:!1,filePickerMode:"import",projectVersion:0,codeBuffer:"",toasts:[],onNodesChange:n=>{const r=Fg(n,t().nodes),o=n.some(s=>s.type!=="select");e(o?{nodes:r,dirty:!0}:{nodes:r})},onEdgesChange:n=>{const r=Og(n,t().edges),o=n.some(s=>s.type!=="select");e(o?{edges:r,dirty:!0}:{edges:r})},onConnect:n=>{if(!n.source||!n.target)return;const r=jn("edge");e({edges:Hg({...n,id:r},t().edges),dirty:!0}),t().log(`连接 ${n.source}.${n.sourceHandle} → ${n.target}.${n.targetHandle}`)},addNode:(n,r)=>{const o=t().nodeDefs.find(a=>a.type===n),s=jn(n),i={};if(o)for(const a of o.parameters)i[a.name]=a.default;const l={id:s,type:"thnNode",position:r,data:{type:n,label:(o==null?void 0:o.label)??n,category:(o==null?void 0:o.category)??"Other",params:i,inputs:(o==null?void 0:o.inputs)??[],outputs:(o==null?void 0:o.outputs)??[{name:"result",label:"Result",dataKind:"tensor",direction:"out"}],hasError:!1}};e({nodes:[...t().nodes,l],selectedNodeId:s,dirty:!0}),t().log(`添加节点 ${(o==null?void 0:o.label)??n} (${s})`)},onSelectNode:n=>e({selectedNodeId:n}),updateParam:(n,r,o)=>e({nodes:t().nodes.map(s=>s.id===n?{...s,data:{...s.data,params:{...s.data.params,[r]:o}}}:s),dirty:!0}),removeNode:n=>e({nodes:t().nodes.filter(r=>r.id!==n),edges:t().edges.filter(r=>r.source!==n&&r.target!==n),selectedNodeId:t().selectedNodeId===n?null:t().selectedNodeId,dirty:!0}),addFrame:(n,r)=>{const o=jn("frame");e({frames:[...t().frames,{id:o,title:n.trim()||"Frame",x:r.x,y:r.y,width:360,height:220}],dirty:!0})},updateFrame:(n,r)=>e({frames:t().frames.map(o=>o.id===n?{...o,...r}:o),dirty:!0}),removeFrame:n=>e({frames:t().frames.filter(r=>r.id!==n),dirty:!0}),enterSubgraph:async n=>{var i;const r=t().nodes.find(l=>l.id===n);if(!r)return;const o=r.data.params.file??r.data.params.module;if(!o){t().pushToast("error","该节点没有 file/module 参数");return}const s=await jC(String(o));if(!s){t().pushToast("error",`找不到子图: ${o}`);return}try{const a=await(await fetch(`/api/files/content?path=${encodeURIComponent(s)}`)).json();if(a.status!=="success"){t().pushToast("error",a.error??"打开子图失败");return}const{nodes:c,edges:u}=js(a.doc,t().nodeDefs),f=[...t().graphStack],p=f[f.length-1];f[f.length-1]={...p,nodes:t().nodes,edges:t().edges};const h=((i=s.split("/").pop())==null?void 0:i.replace(/\.(riko|ric)$/i,""))??s;f.push({name:h,path:s,nodes:c,edges:u}),e({graphStack:f,nodes:c,edges:u,selectedNodeId:null,results:{},status:"idle",dirty:!1}),t().log(`进入子图 ${s}`)}catch(l){t().pushToast("error",l instanceof Error?l.message:String(l))}},exitToLevel:n=>{const r=t().graphStack.slice(0,n+1),o=r[n];o&&(e({graphStack:r,nodes:o.nodes,edges:o.edges,selectedNodeId:null,results:{},status:"idle",dirty:!1}),t().log(`返回层级 ${o.name}`))},run:async()=>{e({status:"running"}),t().log("开始执行图(调用 Python runtime)...");try{const n=ct(t().nodes,t().edges),o=await(await fetch("/api/execute",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})).json();if(o.status==="success"){const s={},i=o.outputs;for(const[l,a]of Object.entries(i)){s[l]={};for(const[c,u]of Object.entries(a))s[l][c]={summary:u.summary,shape:u.shape,dtype:u.dtype,device:u.device,dataPreview:u.data===null||u.data===void 0?"":JSON.stringify(u.data).slice(0,120),dataKind:u.data_kind,image:u.image}}e({results:s,status:"success",nodes:t().nodes.map(l=>({...l,data:{...l.data,hasError:!1,errorMsg:void 0}}))}),t().log("执行成功")}else{e({status:"error"});for(const s of o.errors)t().log(`错误: ${s}`),t().pushToast("error",s)}}catch(n){const r=n instanceof Error?n.message:String(n);e({status:"error"}),t().log(`请求失败: ${r}(请确认 API server 已启动)`),t().pushToast("error",`请求失败: ${r}`)}},loadNodeDefs:async()=>{try{const o=(await(await fetch("/api/nodes")).json()).nodes.map(CC);o.length>0&&(e({nodeDefs:o}),t().log(`从 API 加载 ${o.length} 个节点定义`))}catch(n){t().log(`API 节点加载失败: ${n instanceof Error?n.message:String(n)}。请启动 API server: uvicorn src.server.app:app --port 8000`)}},save:()=>{const n=ct(t().nodes,t().edges),r=new Blob([JSON.stringify(n,null,2)],{type:"application/json"}),o=URL.createObjectURL(r),s=document.createElement("a");s.href=o,s.download="workflow.riko",s.click(),URL.revokeObjectURL(o),e({dirty:!1}),t().log("已保存工作流 (workflow.riko)")},exportRiko:()=>{const n=ct(t().nodes,t().edges),r=(t().activeFileName??"workflow").replace(/\.(riko|ric)$/i,""),o=new Blob([JSON.stringify(n,null,2)],{type:"application/json"}),s=URL.createObjectURL(o),i=document.createElement("a");i.href=s,i.download=`${r}.riko`,i.click(),URL.revokeObjectURL(s),e({dirty:!1}),t().log(`已导出 ${r}.riko`)},exportBinary:async()=>{try{const n=ct(t().nodes,t().edges),o=await(await fetch("/api/export_binary",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})).json();if(o.status!=="success")throw new Error(o.error);const s=(t().activeFileName??"workflow").replace(/\.(riko|ric)$/i,""),i=Uint8Array.from(atob(o.base64),u=>u.charCodeAt(0)),l=new Blob([i],{type:"application/octet-stream"}),a=URL.createObjectURL(l),c=document.createElement("a");c.href=a,c.download=`${s}.ric`,c.click(),URL.revokeObjectURL(a),e({dirty:!1}),t().log(`已导出 ${s}.ric`)}catch(n){t().log(`导出 .ric 失败: ${n instanceof Error?n.message:String(n)}`)}},exportProjectTo:async n=>{const r=ct(t().nodes,t().edges);try{const s=await(await fetch("/api/export_project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({doc:r,dir:n})})).json();s.status==="success"?(t().pushToast("success",`Exported project → ${s.root}`),t().log(`已导出多文件 PyTorch 工程: ${s.files.join(", ")}`)):t().pushToast("error",s.error??"导出工程失败")}catch(o){t().pushToast("error",o instanceof Error?o.message:String(o))}},load:async n=>{try{let r;if(n.name.toLowerCase().endsWith(".ric")){const i=await n.arrayBuffer(),a=await(await fetch("/api/files/decode",{method:"POST",headers:{"Content-Type":"application/octet-stream"},body:i})).json();if(a.status!=="success")throw new Error(a.error);r=a.doc}else{const i=await new Promise((l,a)=>{const c=new FileReader;c.onload=()=>l(String(c.result)),c.onerror=()=>a(c.error),c.readAsText(n)});r=JSON.parse(i)}const{nodes:o,edges:s}=js(r,t().nodeDefs);e({nodes:o,edges:s,frames:[],graphStack:[{name:n.name.replace(/\.(riko|ric)$/i,"")||"workflow",path:n.name,nodes:o,edges:[]}],selectedNodeId:null,results:{},status:"idle",dirty:!1}),t().log(`已加载工作流(${o.length} 节点, ${s.length} 连接)`)}catch(r){t().log(`加载失败: ${r instanceof Error?r.message:String(r)}`)}},exportPython:async()=>{const n=ct(t().nodes,t().edges);try{const o=await(await fetch("/api/export_python",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})).json();if(o.status==="success"){const s=new Blob([o.code],{type:"text/x-python"}),i=URL.createObjectURL(s),l=document.createElement("a");l.href=i,l.download="workflow.py",l.click(),URL.revokeObjectURL(i),t().log("已导出 Python (workflow.py)")}else t().log(`导出失败: ${o.error}`)}catch(r){t().log(`导出失败: ${r instanceof Error?r.message:String(r)}`)}},exportKeras:async()=>{const n=ct(t().nodes,t().edges);try{const o=await(await fetch("/api/export_keras",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})).json();if(o.status==="success"){const s=new Blob([o.code],{type:"text/x-python"}),i=URL.createObjectURL(s),l=document.createElement("a");l.href=i,l.download="workflow_keras.py",l.click(),URL.revokeObjectURL(i),t().log("已导出 Keras (workflow_keras.py)")}else t().log(`导出失败: ${o.error}`)}catch(r){t().log(`导出失败: ${r instanceof Error?r.message:String(r)}`)}},generatePythonCode:async()=>{const n=ct(t().nodes,t().edges);try{const o=await(await fetch("/api/export_python",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})).json();o.status==="success"?(e({codeBuffer:o.code}),t().log("已生成 PyTorch 代码(代码编辑器窗口)")):t().pushToast("error",o.error??"代码生成失败")}catch(r){t().pushToast("error",r instanceof Error?r.message:String(r))}},previewAssetCode:async n=>{try{const o=await(await fetch(`/api/files/content?path=${encodeURIComponent(n)}`)).json();if(o.status!=="success"){t().pushToast("error",o.error??"读取失败");return}const i=await(await fetch("/api/export_python",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o.doc)})).json();i.status==="success"?(e({codeBuffer:i.code}),t().pushToast("success","Code → Code Editor")):t().pushToast("error",i.error??"代码生成失败")}catch(r){t().pushToast("error",r instanceof Error?r.message:String(r))}},newWorkflow:n=>{const r=t().activeWorkflowId,o=r?t().workflows.map(i=>i.id===r?{...i,nodes:t().nodes,edges:t().edges}:i):t().workflows,s=jn("wf");e({workflows:[...o,{id:s,name:n,nodes:[],edges:[]}],activeWorkflowId:s,nodes:[],edges:[],selectedNodeId:null,results:{},status:"idle",dirty:!1}),t().log(`新建工作流: ${n} (${s})`)},switchWorkflow:n=>{const r=t().activeWorkflowId;let o=t().workflows;r&&(o=o.map(i=>i.id===r?{...i,nodes:t().nodes,edges:t().edges}:i));const s=o.find(i=>i.id===n);s&&(e({workflows:o,activeWorkflowId:n,nodes:s.nodes,edges:s.edges,selectedNodeId:null,results:{},status:"idle",dirty:!1}),t().log(`切换到工作流: ${s.name}`))},refreshFiles:async()=>{try{const r=await(await fetch("/api/files")).json();Array.isArray(r.files)?e({fileList:r.files}):t().log("文件列表格式错误")}catch(n){t().log(`文件列表加载失败: ${n instanceof Error?n.message:String(n)}`)}},openFile:async n=>{var r,o,s,i;try{const a=await(await fetch(`/api/files/content?path=${encodeURIComponent(n)}`)).json();if(a.status==="success"){const{nodes:c,edges:u}=js(a.doc,t().nodeDefs);e({nodes:c,edges:u,selectedNodeId:null,results:{},status:"idle",activeFileName:((o=(r=a.doc)==null?void 0:r.metadata)==null?void 0:o.name)??n,activeFilePath:n,graphStack:[{name:((i=(s=a.doc)==null?void 0:s.metadata)==null?void 0:i.name)??n.split("/").pop()??n,path:n,nodes:c,edges:[]}],dirty:!1});const f=[n,...t().recentFiles.filter(p=>p!==n)].slice(0,10);PC(f),e({recentFiles:f}),t().log(`已打开 ${n}`)}else t().log(`打开失败: ${a.error}`)}catch(l){t().log(`打开失败: ${l instanceof Error?l.message:String(l)}`)}},openProjectFile:async n=>{var r;try{const s=await(await fetch(`/api/project/open?path=${encodeURIComponent(n)}`)).json();if(s.status==="success"){const{nodes:i,edges:l}=js(s.doc,t().nodeDefs),a=((r=n.split("/").pop())==null?void 0:r.replace(/\.(riko|ric)$/,""))??n;e({nodes:i,edges:l,selectedNodeId:null,results:{},status:"idle",activeFileName:a,activeFilePath:n,graphStack:[{name:a,path:n,nodes:i,edges:[]}],dirty:!1}),t().log(`已打开 ${n}`)}else t().log(`打开失败: ${s.error}`)}catch(o){t().log(`打开失败: ${o instanceof Error?o.message:String(o)}`)}},importFileInline:async n=>{try{const o=await(await fetch(`/api/files/content?path=${encodeURIComponent(n)}`)).json();if(o.status!=="success"){t().log(`展开失败: ${o.error}`);return}const s=o.doc,i=t().nodes;let l=0;for(const f of i)l=Math.max(l,f.position.y+120);const a={},c=(s.nodes??[]).map(f=>{var y,x;const p=jn("n");a[f.id]=p;const h=t().nodeDefs.find(k=>k.type===f.type_name);return{id:p,type:"thnNode",position:{x:((y=f.position)==null?void 0:y[0])??0,y:(((x=f.position)==null?void 0:x[1])??0)+l},data:{type:f.type_name,label:f.label||(h==null?void 0:h.label)||f.type_name,category:f.category||(h==null?void 0:h.category)||"",params:f.parameters||{},inputs:(h==null?void 0:h.inputs)??[],outputs:(h==null?void 0:h.outputs)??[],hasError:!1}}}),u=(s.edges??[]).map(f=>({id:jn("edge"),source:a[f.source_node],target:a[f.target_node],sourceHandle:f.source_port,targetHandle:f.target_port})).filter(f=>f.source&&f.target);e({nodes:[...i,...c],edges:[...t().edges,...u],dirty:!0}),t().log(`已展开 ${n}(${c.length} 节点, ${u.length} 连接)`)}catch(r){t().log(`展开失败: ${r instanceof Error?r.message:String(r)}`)}},saveFileToDisk:async(n,r="ascii")=>{const s={...ct(t().nodes,t().edges),metadata:{name:n,description:""}};try{const l=await(await fetch("/api/files/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:n,format:r,doc:s})})).json();l.status==="success"?(e({activeFileName:n,dirty:!1}),t().log(`已保存到 ${l.path} (${l.format==="binary"?".ric 二进制":".riko ASCII"})`),t().refreshFiles()):t().log(`保存失败: ${l.error??"未知错误"}`)}catch(i){t().log(`保存失败: ${i instanceof Error?i.message:String(i)}`)}},saveToPath:async(n,r="ascii")=>{var s;const o=ct(t().nodes,t().edges);try{const l=await(await fetch("/api/fs/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:n,format:r,doc:o})})).json();if(l.status==="success"){const a=l.name??((s=n.split("/").pop())==null?void 0:s.replace(/\.(riko|ric)$/i,""))??"workflow";e({activeFileName:a,activeFilePath:n,dirty:!1}),t().log(`已保存到 ${l.path}`),t().pushToast("success",`Saved ${a}`),t().refreshFiles()}else t().pushToast("error",l.error??"保存失败")}catch(i){t().pushToast("error",i instanceof Error?i.message:String(i))}},importModule:(n,r)=>{const o=t().nodeDefs.find(a=>a.type==="import")??t().nodeDefs.find(a=>a.type==="graph_reference");if(!o){t().log("未找到 import / graph_reference 节点定义,请确认 API server 已启动");return}const s=jn(o.type),i={};for(const a of o.parameters)i[a.name]=a.default;i[o.type==="import"?"module":"file"]=n;const l={id:s,type:"thnNode",position:r,data:{type:o.type,label:o.label,category:o.category,params:i,inputs:o.inputs,outputs:o.outputs,hasError:!1}};e({nodes:[...t().nodes,l],selectedNodeId:s,dirty:!0}),t().log(`导入 ${n} (${o.type})`)},train:async(n=20,r=.001)=>{e({status:"running",losses:[]}),t().log(`开始训练 (${n} 步, lr=${r})...`);try{const o=ct(t().nodes,t().edges),s=await fetch("/api/train/stream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({doc:o,steps:n,lr:r})});if(!s.body)throw new Error("响应无流 body");const i=s.body.getReader(),l=new TextDecoder;let a="";for(;;){const{done:u,value:f}=await i.read();if(u)break;a+=l.decode(f,{stream:!0});const p=a.split(`
63
+ `);a=p.pop()??"";for(const h of p){const y=h.trim();if(!y)continue;let x;try{x=JSON.parse(y)}catch{continue}if(x.error){t().log(`训练失败: ${x.error}`),t().pushToast("error",`训练失败: ${x.error}`),e({status:"error"});return}typeof x.loss=="number"&&e({losses:[...t().losses,x.loss]}),x.done&&e({status:"success"})}}const c=t().losses[t().losses.length-1];t().log(`训练完成,最终 loss=${(c==null?void 0:c.toFixed(4))??"n/a"}`),e({status:"success"})}catch(o){e({status:"error"}),t().log(`训练失败: ${o instanceof Error?o.message:String(o)}`),t().pushToast("error",`训练失败: ${o instanceof Error?o.message:String(o)}`)}},newBlank:()=>{e({nodes:[],edges:[],frames:[],graphStack:[{name:"root",path:"",nodes:[],edges:[]}],selectedNodeId:null,results:{},status:"idle",activeFileName:null,activeFilePath:null,dirty:!1}),t().log("新建空白工作流")},setWelcomeOpen:n=>e({welcomeOpen:n}),setPrefsOpen:n=>e({prefsOpen:n}),setAboutOpen:n=>e({aboutOpen:n}),setImportFolderOpen:n=>e({importFolderOpen:n}),setFilePicker:(n,r)=>e({filePickerOpen:n,filePickerMode:r}),bumpProject:()=>e({projectVersion:t().projectVersion+1}),setCodeBuffer:n=>e({codeBuffer:n}),pushToast:(n,r)=>{const o=++EC;e({toasts:[...t().toasts,{id:o,kind:n,message:r}].slice(-6)}),n!=="error"&&setTimeout(()=>t().dismissToast(o),6e3)},dismissToast:n=>e({toasts:t().toasts.filter(r=>r.id!==n)}),log:n=>{const r=new Date().toLocaleTimeString();e({logs:[...t().logs,`[${r}] ${n}`].slice(-80)})}})),xy="entropia_riko_theme",sc="entropia_riko_background";function TC(){try{const e=localStorage.getItem(xy);return e==="light"||e==="dark"||e==="glass"?e:"system"}catch{return"system"}}function wy(e){e==="system"?delete document.documentElement.dataset.theme:document.documentElement.dataset.theme=e}function Sy(e){const t=document.body;e?(t.style.backgroundImage=`url("${e}")`,t.style.backgroundSize="cover",t.style.backgroundPosition="center"):(t.style.backgroundImage="",t.style.backgroundSize="",t.style.backgroundPosition="")}function MC(){try{return localStorage.getItem(sc)??""}catch{return""}}const cn=Cm(e=>({theme:TC(),setTheme:t=>{wy(t);try{localStorage.setItem(xy,t)}catch{}e({theme:t})},backgroundImage:MC(),setBackgroundImage:t=>{Sy(t);try{t?localStorage.setItem(sc,t):localStorage.removeItem(sc)}catch{}e({backgroundImage:t})}}));wy(cn.getState().theme);Sy(cn.getState().backgroundImage);function ji({entries:e,x:t,y:n,onClose:r,searchable:o=!1,maxWidth:s=280}){const[i,l]=M.useState(""),[a,c]=M.useState({}),u=M.useMemo(()=>{const h=i.trim().toLowerCase(),y=h?e.filter(m=>!m.separator&&(m.label.toLowerCase().includes(h)||(m.description??"").toLowerCase().includes(h))):e,x={},k=[];for(const m of y){const v=m.category??"";v in x||(x[v]=[],k.push(v)),x[v].push(m)}return{map:x,order:k}},[e,i]),{map:f,order:p}=u;return Xi.createPortal(d.jsxs(d.Fragment,{children:[d.jsx("div",{className:"popup-overlay",onClick:r,onContextMenu:h=>{h.preventDefault(),r()}}),d.jsxs("div",{className:"popup-menu",style:{left:t,top:n,maxWidth:s},children:[o&&d.jsx("div",{className:"popup-search",children:d.jsx("input",{autoFocus:!0,placeholder:"Search…",value:i,onChange:h=>l(h.target.value)})}),d.jsxs("div",{className:"popup-list",children:[p.map(h=>{const y=!i&&!a[h];return d.jsxs("div",{className:"popup-category",children:[h!==""&&d.jsxs("div",{className:"popup-cat-header",onClick:()=>c(x=>({...x,[h]:!x[h]})),children:[d.jsx("span",{className:"popup-cat-toggle",children:y?"▸":"▾"}),d.jsx("span",{className:"popup-cat-label",children:h}),d.jsx("span",{className:"popup-cat-count",children:f[h].length})]}),!y&&f[h].map(x=>x.separator?d.jsx("div",{className:"popup-sep"},x.id):d.jsxs("div",{className:`popup-item ${x.danger?"danger":""} ${x.disabled?"disabled":""}`,onClick:()=>{var k;x.disabled||((k=x.onSelect)==null||k.call(x),r())},children:[d.jsx("span",{className:"popup-item-label",children:x.label}),x.description&&d.jsx("span",{className:"popup-item-desc",children:x.description})]},x.id))]},h)}),p.length===0&&d.jsx("div",{className:"popup-item disabled",children:"No matches"})]})]})]}),document.body)}let IC=0;const ky=()=>`area_${++IC}`,te=e=>({kind:"leaf",id:ky(),type:e}),re=(e,t,n,r=.5)=>({kind:"split",id:ky(),direction:e,first:t,second:n,ratio:r});function $C(){const e=re("column",te("nodes"),te("files"),.72),t=re("row",te("canvas"),re("column",te("project"),te("inspector"),.3),.68),n=re("row",e,t,.26),r=re("row",te("status"),te("loss"),.55);return re("column",n,r,.82)}function Ct(e){const t=e.leftExtra?re("column",te("nodes"),te(e.leftExtra),.7):te("nodes");let n=te(e.right);e.rightTop&&(n=re("column",te(e.rightTop),n,e.rightTopRatio??.28));const r=re("row",te("canvas"),n,e.canvasRatio??.68),o=re("row",t,r,e.leftRatio??.26),s=e.bottom.length===1?te(e.bottom[0]):re("row",te(e.bottom[0]),te(e.bottom[1]),.55);return re("column",o,s,e.colRatio??.84)}function LC(){const e=re("column",te("nodes"),te("files"),.72),t=re("column",te("loss"),te("inspector"),.42),n=re("row",te("canvas"),t,.68),r=re("row",e,n,.24);return re("column",r,te("status"),.86)}function RC(){const e=re("column",te("nodes"),te("docs"),.65),t=re("column",te("loss"),te("inspector"),.5),n=re("row",te("canvas"),t,.7),r=re("row",e,n,.24);return re("column",r,te("status"),.86)}function AC(){const e=re("column",te("files"),te("project"),.62),t=re("column",te("docs"),te("inspector"),.45),n=re("row",te("code"),t,.7);return re("row",e,n,.26)}function DC(){const e=re("column",te("plugins"),te("docs"),.45),t=re("row",te("code"),te("status"),.78);return re("row",e,t,.28)}function zC(){const e=re("column",te("nodes"),te("files"),.72),t=re("column",te("code"),te("inspector"),.52),n=re("row",te("canvas"),t,.6),r=re("row",e,n,.24);return re("column",r,te("status"),.87)}function FC(){const e=re("column",te("files"),te("project"),.6),t=re("column",te("code"),te("docs"),.55),n=re("row",te("canvas"),t,.64);return re("row",e,n,.3)}const ic=[{id:"layout",label:"Layout",category:"Project",description:"Full IDE: nodes, assets, canvas, inspector, loss.",build:$C},{id:"train",label:"Train",category:"Project",description:"train.py — canvas, live loss curve, inspector.",build:LC},{id:"eval",label:"Eval",category:"Project",description:"eval.py — canvas, loss, docs for metrics.",build:RC},{id:"config",label:"Config",category:"Project",description:"config.py — code editor + file manager + docs.",build:AC},{id:"utils",label:"Utils",category:"Project",description:"utils.py — code editor + plugins.",build:DC},{id:"models",label:"Models",category:"Project",description:"models/ — node library, model code, canvas.",build:zC},{id:"datasets",label:"Datasets",category:"Project",description:"datasets/ — asset library, dataset code, canvas.",build:FC},{id:"code",label:"Code",category:"General",description:"Big code editor + canvas for previewing exported PyTorch.",build:()=>Ct({right:"code",bottom:["status","loss"],leftExtra:"files",canvasRatio:.6})},{id:"inference",label:"Inference",category:"General",description:"Large canvas + inspector, no training.",build:()=>Ct({right:"inspector",bottom:["status","docs"],leftExtra:"files",canvasRatio:.74})},{id:"tuning",label:"Hyperparameter Tuning",category:"Training",description:"Loss + docs; inspector below.",build:()=>Ct({right:"loss",bottom:["inspector","docs"],canvasRatio:.62})},{id:"mnist_studio",label:"MNIST Studio",category:"Vision",description:"Handwriting pad above the inspector — draw a digit and infer.",build:()=>Ct({right:"inspector",rightTop:"pad",bottom:["status","loss"],leftExtra:"files",canvasRatio:.58})},{id:"image_classifier",label:"Image Classifier",category:"Vision",description:"Image previews + loss.",build:()=>Ct({right:"inspector",bottom:["status","loss"],leftExtra:"files",canvasRatio:.68})},{id:"image_gen",label:"Text → Image",category:"Vision",description:"Project explorer above inspector for Diffusers generation.",build:()=>Ct({right:"inspector",rightTop:"project",bottom:["status"],canvasRatio:.62})},{id:"detection",label:"Object Detection",category:"Vision",description:"Canvas + inspector + docs.",build:()=>Ct({right:"inspector",bottom:["status","docs"],leftExtra:"files",canvasRatio:.7})},{id:"text_classifier",label:"Text Classifier",category:"Language",description:"Text previews + docs.",build:()=>Ct({right:"inspector",bottom:["status","docs"],leftExtra:"files",canvasRatio:.7})},{id:"text_gen",label:"Text Gen",category:"Language",description:"Text preview for Transformers.",build:()=>Ct({right:"inspector",bottom:["status"],rightTop:"project",canvasRatio:.68})},{id:"embeddings",label:"Embeddings / JEPA",category:"Language",description:"Pretrained encoder embeddings.",build:()=>Ct({right:"inspector",bottom:["status","docs"],canvasRatio:.72})}],OC=(e,t,n)=>Math.min(n,Math.max(t,e));function bi(e,t,n){return e.kind==="leaf"?e.id===t?re(n,e,te(e.type),.5):e:{...e,first:bi(e.first,t,n),second:bi(e.second,t,n)}}function lc(e,t){return e.kind==="split"?e.first.id===t?e.second:e.second.id===t?e.first:{...e,first:lc(e.first,t),second:lc(e.second,t)}:e}function ac(e,t){return e.kind==="split"?e.first.id===t?e.first:e.second.id===t?e.second:{...e,first:ac(e.first,t),second:ac(e.second,t)}:e}function cc(e,t){if(e.kind==="split"){if(e.first.id===t)return e.second.id;if(e.second.id===t)return e.first.id;const n=cc(e.first,t);return n!==null?n:cc(e.second,t)}return null}function Pi(e,t,n){return e.kind==="split"?e.id===t?{...e,ratio:OC(e.ratio+n,.08,.92)}:{...e,first:Pi(e.first,t,n),second:Pi(e.second,t,n)}:e}function uc(e,t,n){return e.kind==="leaf"?e.id===t?{...e,type:n}:e:{...e,first:uc(e.first,t,n),second:uc(e.second,t,n)}}function dc(e){return e.kind==="leaf"?1:dc(e.first)+dc(e.second)}function HC({workspaces:e,activeId:t,onSwitch:n,onAdd:r,onRemove:o,onRename:s,onDuplicate:i,onMove:l,onReorder:a,presets:c}){const[u,f]=M.useState(!1),[p,h]=M.useState(null),[y,x]=M.useState(null),[k,m]=M.useState(!1),[v,g]=M.useState(null),w=M.useRef(null);M.useEffect(()=>{const A=w.current;if(!A)return;const L=()=>m(A.scrollWidth>A.clientWidth+1);return L(),window.addEventListener("resize",L),()=>window.removeEventListener("resize",L)},[e]);const j=e.length>1,_=M.useMemo(()=>(c??ic).map(A=>({id:A.id,label:A.label,description:A.description,category:A.category,onSelect:()=>r(A.id)})),[r]),E=A=>{const L=A.currentTarget.getBoundingClientRect();h({x:L.left,y:L.bottom+6}),f(!0)},N=A=>{const L=e.find(F=>F.id===A),O=window.prompt("Rename workspace",(L==null?void 0:L.name)??"");O&&O.trim()&&s(A,O.trim())},$=A=>[{id:"rename",label:"Rename",onSelect:()=>N(A)},{id:"duplicate",label:"Duplicate",onSelect:()=>i(A)},{id:"sep1",label:"",separator:!0},{id:"left",label:"← Move Left",onSelect:()=>l(A,-1)},{id:"right",label:"Move Right →",onSelect:()=>l(A,1)},{id:"sep2",label:"",separator:!0},...j?[{id:"close",label:"Close",danger:!0,onSelect:()=>o(A)}]:[]];return d.jsxs("div",{className:"workspace-tabs-wrap",children:[d.jsx("div",{ref:w,className:`workspace-tabs ${k?"overflowing":""}`,children:e.map(A=>d.jsxs("div",{className:`workspace-tab ${A.id===t?"active":""} ${A.id===v?"dragging":""}`,draggable:!0,onDragStart:L=>{g(A.id),L.dataTransfer.effectAllowed="move"},onDragOver:L=>{L.preventDefault(),L.dataTransfer.dropEffect="move"},onDrop:L=>{L.preventDefault(),v&&v!==A.id&&a(v,A.id),g(null)},onDragEnd:()=>g(null),onClick:()=>n(A.id),onContextMenu:L=>{L.preventDefault(),x({id:A.id,x:L.clientX,y:L.clientY})},children:[d.jsx("span",{children:A.name}),j&&d.jsx("span",{className:"workspace-tab-close",title:"Close workspace",onClick:L=>{L.stopPropagation(),o(A.id)},children:"✕"})]},A.id))}),d.jsx("button",{className:"workspace-add",title:"Add workspace",onClick:E,children:"+"}),u&&p&&d.jsx(ji,{entries:_,x:p.x,y:p.y,onClose:()=>f(!1)}),y&&d.jsx(ji,{entries:$(y.id),x:y.x,y:y.y,onClose:()=>x(null)})]})}function al({title:e,onClose:t,x:n=140,y:r=90,width:o=520,zIndex:s=1e3,children:i}){const[l,a]=M.useState({x:n,y:r}),c=M.useRef(null),u=f=>{c.current={dx:f.clientX-l.x,dy:f.clientY-l.y};const p=y=>{c.current&&a({x:y.clientX-c.current.dx,y:y.clientY-c.current.dy})},h=()=>{c.current=null,document.removeEventListener("mousemove",p),document.removeEventListener("mouseup",h)};document.addEventListener("mousemove",p),document.addEventListener("mouseup",h)};return d.jsxs("div",{className:"float-window",style:{left:l.x,top:l.y,width:o,zIndex:s},children:[d.jsxs("div",{className:"float-titlebar",onMouseDown:u,children:[d.jsx("span",{className:"float-title",children:e}),d.jsx("button",{className:"float-close",onClick:t,children:"✕"})]}),d.jsx("div",{className:"float-body",children:i})]})}let ro=null,_y="";function Zn(e,t){return _y=(t==null?void 0:t.defaultName)??"",B.getState().setFilePicker(!0,e),new Promise(n=>{ro=n})}function Qr(e){B.getState().setFilePicker(!1,"import"),ro==null||ro(e),ro=null}const Ny="entropia_riko_recent_folders";function fc(){try{const e=localStorage.getItem(Ny),t=e?JSON.parse(e):[];return Array.isArray(t)?t.filter(n=>typeof n=="string"):[]}catch{return[]}}function BC(e){try{const t=[e,...fc().filter(n=>n!==e)].slice(0,8);localStorage.setItem(Ny,JSON.stringify(t))}catch{}}function VC(){const e=B(N=>N.filePickerOpen),t=B(N=>N.filePickerMode),n=B(N=>N.pushToast),[r,o]=M.useState("~"),[s,i]=M.useState([]),[l,a]=M.useState(null),[c,u]=M.useState("~"),[f,p]=M.useState(fc()),[h,y]=M.useState([]),[x,k]=M.useState([]),[m,v]=M.useState(""),g=async(N,$=!0)=>{const L=await(await fetch(`/api/fs/list?path=${encodeURIComponent(N)}`)).json();L.status==="success"?($&&(y(O=>[...O,r]),k([])),o(L.path),i(L.entries??[]),a(null),BC(L.path),p(fc())):n("error",L.error??"list failed")};if(M.useEffect(()=>{e&&(t==="save"&&v(_y),g("~",!1),fetch("/api/project/tree").then(N=>N.json()).then(N=>{typeof N.root=="string"&&u(N.root)}).catch(()=>{}))},[e]),!e)return null;const w=[{label:"Home",path:"~"},{label:"Desktop",path:"~/Desktop"},{label:"Documents",path:"~/Documents"},{label:"Downloads",path:"~/Downloads"},{label:"Working Folder",path:c}],j=()=>{const N=h[h.length-1];N&&(y(h.slice(0,-1)),k($=>[r,...$]),g(N,!1))},_=()=>{const N=x[0];N&&(k(x.slice(1)),y($=>[...$,r]),g(N,!1))},E=()=>{if(t==="save"){const N=m.trim()||"untitled";return r.endsWith("/")?r+N:r+"/"+N}return t==="export"?l&&l.type==="dir"?l.path:r:l?l.path:r};return d.jsx(al,{title:t==="import"?"Import File / Folder":t==="export"?"Export To Folder":"Save File",onClose:()=>Qr(null),width:780,zIndex:1002,children:d.jsxs("div",{className:"picker-inner",children:[d.jsxs("div",{className:"picker-side",children:[d.jsx("div",{className:"picker-side-title",children:"Quick access"}),w.map(N=>d.jsxs("div",{className:"picker-side-item",onClick:()=>g(N.path),children:[d.jsx("span",{className:"picker-side-icon",children:"▦"}),N.label]},N.label)),d.jsx("div",{className:"picker-side-title",style:{marginTop:12},children:"Recent"}),f.map(N=>d.jsxs("div",{className:"picker-side-item",title:N,onClick:()=>g(N),children:[d.jsx("span",{className:"picker-side-icon",children:"🕘"}),d.jsx("span",{className:"picker-side-name",children:N})]},N))]}),d.jsxs("div",{className:"picker-main",children:[d.jsxs("div",{className:"picker-topbar",children:[d.jsx("button",{className:"panel-btn",onClick:j,title:"Back",children:"←"}),d.jsx("button",{className:"panel-btn",onClick:_,title:"Forward",children:"→"}),d.jsx("button",{className:"panel-btn",onClick:()=>g(r,!1),title:"Refresh",children:"↻"}),d.jsx("input",{className:"prefs-input",value:r,onChange:N=>o(N.target.value),onKeyDown:N=>{N.key==="Enter"&&g(r)}})]}),d.jsxs("div",{className:"picker-list",children:[s.map(N=>d.jsxs("div",{className:`picker-row ${(l==null?void 0:l.path)===N.path?"sel":""}`,onClick:()=>a(N),onDoubleClick:()=>N.type==="dir"&&g(N.path),children:[d.jsx("span",{className:"explorer-icon",children:N.type==="dir"?"▦":"▤"}),d.jsx("span",{className:"explorer-name",children:N.name}),d.jsx("span",{className:"explorer-size",children:N.type==="file"?`${Math.round(N.size/1024)} KB`:""})]},N.path)),s.length===0&&d.jsx("div",{className:"welcome-empty",children:"Empty folder."})]}),d.jsxs("div",{className:"picker-bottombar",children:[d.jsx("span",{className:"picker-filename-label",children:"File name:"}),d.jsx("input",{className:"prefs-input",value:t==="save"?m:(l==null?void 0:l.name)??"",onChange:N=>{t==="save"&&v(N.target.value)},onKeyDown:N=>{N.key==="Enter"&&Qr(E()),N.key==="Escape"&&Qr(null)},readOnly:t!=="save",placeholder:t==="save"?"name.riko / name.ric":"(select a file or folder)"}),d.jsx("button",{className:"btn btn-primary",onClick:()=>Qr(E()),children:"Save"}),d.jsx("button",{className:"btn",onClick:()=>Qr(null),children:"Cancel"})]})]})]})})}const Jf=["/brand/logo.ico","/brand/logo.png","/brand/logo.svg"];function cl({className:e,alt:t="Entropia Riko logo",title:n}){const[r,o]=M.useState(0);return d.jsx("img",{className:e,src:Jf[r],alt:t,title:n,onError:()=>o(s=>Math.min(s+1,Jf.length-1))})}function WC({workspaces:e,activeWorkspaceId:t,onSwitchWorkspace:n,onAddWorkspace:r,onRemoveWorkspace:o,onRenameWorkspace:s,onDuplicateWorkspace:i,onMoveWorkspace:l,onReorderWorkspace:a}){const[c,u]=M.useState(null),f=B(S=>S.status),p=B(S=>S.run),h=B(S=>S.train);B(S=>S.save),B(S=>S.exportRiko),B(S=>S.exportBinary);const y=B(S=>S.load),x=B(S=>S.exportPython),k=B(S=>S.exportKeras),m=B(S=>S.newWorkflow),v=B(S=>S.addNode),g=B(S=>S.pushToast),w=cn(S=>S.theme),j=cn(S=>S.setTheme),_=M.useRef(null),E=f==="running",N=async()=>{const S=await Zn("import");if(!S)return;const T=await(await fetch("/api/fs/import",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({src:S})})).json();T.status==="success"?(g("success",`Imported ${T.path}`),B.getState().bumpProject()):g("error",T.error??"import failed")},$=async()=>{const S=B.getState().activeFilePath;if(!S){g("error","No open file to export");return}const C=await Zn("export");if(!C)return;const P=await(await fetch("/api/fs/export",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({src:S,dest:C})})).json();P.status==="success"?g("success",`Exported to ${P.path}`):g("error",P.error??"export failed")},A=async S=>{const T=(B.getState().activeFileName??"untitled")+(S==="binary"?".ric":".riko"),P=await Zn("save",{defaultName:T});P&&await B.getState().saveToPath(P,S)},F=[{label:"File",items:[{label:"New Workflow",onClick:()=>m("Untitled")},{label:"New Project…",onClick:async()=>{const S=await Zn("save",{defaultName:"my_project"});if(!S)return;const T=await(await fetch("/api/project/new",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({dir:S})})).json();T.status==="success"?(B.getState().bumpProject(),g("success",`Created project ${T.root}`)):g("error",T.error??"new project failed")}},{label:"Save .riko…",onClick:()=>A("ascii"),disabled:E},{label:"Save .ric…",onClick:()=>A("binary"),disabled:E},{label:"Import / Export",submenu:[{label:"Import…",onClick:N},{label:"Export…",onClick:$},{label:"Import Working Folder…",onClick:()=>B.getState().setImportFolderOpen(!0)}]},{label:"Export Code",submenu:[{label:"Export .py (PyTorch)",onClick:x,disabled:E},{label:"Export .py (Keras/TF)",onClick:k,disabled:E},{label:"Export Project… (multi-file)",onClick:async()=>{const S=B.getState().activeFileName??"graph_project",C=await Zn("save",{defaultName:S});C&&await B.getState().exportProjectTo(C)},disabled:E}]},{label:"Preferences…",onClick:()=>B.getState().setPrefsOpen(!0)}]},{label:"Run",items:[{label:"Inference",onClick:p,disabled:E},{label:"Train (20 steps)",onClick:()=>h(20,.001),disabled:E},{label:"Train (100 steps)",onClick:()=>h(100,.001),disabled:E}]},{label:"Data",items:[{label:"MNIST Loader",onClick:()=>v("mnist_loader",{x:200,y:150})},{label:"CIFAR10 Loader",onClick:()=>v("cifar10_loader",{x:200,y:150})},{label:"CSV Loader",onClick:()=>v("csv_loader",{x:200,y:150})},{label:"Image Folder Loader",onClick:()=>v("image_folder_loader",{x:200,y:150})},{label:"Tensor File Loader",onClick:()=>v("tensor_file_loader",{x:200,y:150})},{label:"Generic Data Loader",onClick:()=>v("dataloader",{x:200,y:150})}]},{label:"View",items:[{label:`Theme: Light ${w==="light"?"✓":""}`,onClick:()=>j("light")},{label:`Theme: Dark ${w==="dark"?"✓":""}`,onClick:()=>j("dark")},{label:`Theme: System ${w==="system"?"✓":""}`,onClick:()=>j("system")},{label:`Theme: Liquid Glass ${w==="glass"?"✓":""}`,onClick:()=>j("glass")}]},{label:"Help",items:[{label:"Welcome Screen",onClick:()=>B.getState().setWelcomeOpen(!0)},{label:"About Entropia Riko",onClick:()=>B.getState().setAboutOpen(!0)}]}];return d.jsxs("div",{className:"menubar",onClick:S=>S.stopPropagation(),children:[d.jsxs("div",{className:`menu-item app-logo-item ${c==="__app__"?"active":""}`,onClick:()=>u(c==="__app__"?null:"__app__"),title:"Entropia Riko",children:[d.jsx(cl,{className:"menubar-logo",alt:"Entropia Riko"}),c==="__app__"&&d.jsxs("div",{className:"dropdown app-menu",onClick:S=>S.stopPropagation(),children:[d.jsx("div",{className:"dropdown-item",onClick:()=>{B.getState().setAboutOpen(!0),u(null)},children:"About Entropia Riko"}),d.jsx("div",{className:"dropdown-item",onClick:()=>{B.getState().setWelcomeOpen(!0),u(null)},children:"Welcome Screen"}),d.jsx("div",{className:"dropdown-item",onClick:()=>{B.getState().setPrefsOpen(!0),u(null)},children:"Preferences…"})]})]}),F.map(S=>d.jsxs("div",{className:`menu-item ${c===S.label?"active":""}`,onClick:()=>u(c===S.label?null:S.label),children:[S.label,c===S.label&&d.jsx("div",{className:"dropdown",onClick:C=>C.stopPropagation(),children:S.items.map((C,T)=>C.submenu?d.jsxs("div",{className:"dropdown-item has-submenu",children:[d.jsxs("span",{className:"submenu-label",children:[C.label," ▸"]}),d.jsx("div",{className:"submenu",children:C.submenu.map((P,b)=>d.jsx("div",{className:`dropdown-item ${P.disabled?"disabled":""}`,onClick:()=>{var I;P.disabled||((I=P.onClick)==null||I.call(P),u(null))},children:P.label},b))})]},T):d.jsx("div",{className:`dropdown-item ${C.disabled?"disabled":""}`,onClick:()=>{var P;C.disabled||((P=C.onClick)==null||P.call(C),u(null))},children:C.label},T))})]},S.label)),d.jsx("div",{className:"menubar-sep"}),d.jsx(HC,{workspaces:e,activeId:t,onSwitch:n,onAdd:r,onRemove:o,onRename:s,onDuplicate:i,onMove:l,onReorder:a}),d.jsx("input",{ref:_,type:"file",accept:".riko,.ric,.json,application/json,application/octet-stream",style:{display:"none"},onChange:S=>{var T;const C=(T=S.target.files)==null?void 0:T[0];C&&y(C),S.target.value=""}}),d.jsx("div",{className:"spacer"}),d.jsxs("span",{className:`status-pill ${f}`,children:[f,f!=="idle"&&d.jsx("button",{className:"status-pill-close",title:"Dismiss",onClick:()=>B.setState({status:"idle"}),children:"✕"})]})]})}function UC({title:e,appName:t="Riko",version:n}){const r=B(s=>s.dirty),o=B(s=>s.activeFileName);return d.jsxs("div",{className:"titlebar",children:[d.jsx("span",{className:`titlebar-dirty ${r?"visible":""}`,"aria-hidden":!r,children:"*"}),d.jsx("span",{className:"titlebar-file",children:e??o??"Untitled"}),d.jsxs("span",{className:"titlebar-app",children:[" - ",t]}),d.jsx("span",{className:"spacer"}),d.jsxs("span",{className:"titlebar-version",children:["v",n??Zo]})]})}function Ey(e,t){const n=M.useRef(null);return o=>{o.preventDefault(),n.current={x:o.clientX,y:o.clientY};const s=l=>{n.current&&(e(l.clientX-n.current.x,l.clientY-n.current.y),n.current={x:l.clientX,y:l.clientY})},i=()=>{document.removeEventListener("mousemove",s),document.removeEventListener("mouseup",i),document.body.style.cursor=""};document.body.style.cursor=t,document.addEventListener("mousemove",s),document.addEventListener("mouseup",i)}}function YC({onDrag:e}){const t=M.useRef(null),n=Ey(r=>{var s,i;const o=((i=(s=t.current)==null?void 0:s.parentElement)==null?void 0:i.clientWidth)??1;e(r,o)},"col-resize");return d.jsx("div",{ref:t,className:"splitter-v",onMouseDown:n})}function XC({onDrag:e}){const t=M.useRef(null),n=Ey((r,o)=>{var i,l;const s=((l=(i=t.current)==null?void 0:i.parentElement)==null?void 0:l.clientHeight)??1;e(o,s)},"row-resize");return d.jsx("div",{ref:t,className:"splitter-h",onMouseDown:n})}function GC(){const[e,t]=M.useState(""),n=B(l=>l.nodeDefs),r=B(l=>l.addNode),o=B(l=>l.addFrame),s=M.useMemo(()=>{const l=n.filter(c=>c.label.toLowerCase().includes(e.toLowerCase())||c.type.toLowerCase().includes(e.toLowerCase())),a={};for(const c of l){const u=c.category||"Other";(a[u]??(a[u]=[])).push(c)}return a},[n,e]),i=Object.keys(s).sort();return d.jsxs("div",{className:"node-library",children:[d.jsxs("div",{className:"search",children:[d.jsx("input",{placeholder:"Search nodes…",value:e,onChange:l=>t(l.target.value)}),d.jsx("button",{className:"btn btn-sm",style:{width:"100%",marginTop:4},onClick:()=>o("Frame",{x:200,y:120}),children:"+ Frame"})]}),d.jsxs("div",{className:"node-list",children:[i.map(l=>d.jsx(KC,{category:l,nodes:s[l],onAdd:a=>r(a,{x:200+Math.random()*200,y:120+Math.random()*100})},l)),i.length===0&&d.jsx("div",{className:"category",style:{padding:8},children:"No matching nodes"}),n.length<10&&d.jsxs("div",{style:{padding:"8px",color:"var(--color-error)",fontSize:12,lineHeight:1.5},children:["⚠ 仅 ",n.length," 个节点。请确保 API server 已启动。"]})]})]})}function KC({category:e,nodes:t,onAdd:n}){const[r,o]=M.useState(!0);return d.jsxs("div",{className:"node-category",children:[d.jsxs("div",{className:"category-header",onClick:()=>o(!r),children:[d.jsx("span",{className:"category-toggle",children:r?"▼":"▶"}),d.jsx("span",{className:"category-name",children:e}),d.jsx("span",{className:"category-count",children:t.length})]}),r&&t.map(s=>d.jsx("div",{className:"node-item",onClick:()=>n(s.type),children:d.jsx("div",{className:"name",children:s.label})},s.type))]})}function QC(){const e=B(f=>f.fileList),t=B(f=>f.activeFileName),n=B(f=>f.refreshFiles),r=B(f=>f.openFile),o=B(f=>f.saveFileToDisk),s=B(f=>f.importFileInline),i=B(f=>f.previewAssetCode),[l,a]=M.useState("");M.useEffect(()=>{n()},[n]);const c=M.useMemo(()=>{const f=l.trim().toLowerCase(),p={},h=[];for(const y of e){if(f&&!y.name.toLowerCase().includes(f)&&!y.path.toLowerCase().includes(f))continue;const x=y.path.includes("/")?y.path.slice(0,y.path.indexOf("/")):"(root)";x in p||(p[x]=[],h.push(x)),p[x].push(y)}return h.sort(),{map:p,order:h}},[e,l]),u=()=>{const f=window.prompt("Save current graph as",t??"untitled");f&&f.trim()&&o(f.trim())};return d.jsxs("div",{className:"file-manager",children:[d.jsxs("div",{className:"panel-head",children:[d.jsx("span",{className:"panel-head-title",children:"Asset Library"}),d.jsx("span",{className:"spacer"}),d.jsx("button",{className:"panel-btn",title:"Save current graph",onClick:u,children:"💾"}),d.jsx("button",{className:"panel-btn",title:"Refresh",onClick:n,children:"↻"})]}),d.jsx("div",{className:"asset-search",children:d.jsx("input",{placeholder:"Search assets…",value:l,onChange:f=>a(f.target.value)})}),d.jsxs("div",{className:"fm-tree",children:[c.order.map(f=>d.jsxs("div",{className:"fm-group",children:[d.jsx("div",{className:"fm-group-header",children:f}),c.map[f].map(p=>d.jsxs("div",{className:`fm-file ${t===p.name?"active":""}`,onClick:()=>r(p.path),title:p.path,children:[d.jsx("span",{className:"fm-toggle",children:"▤"}),d.jsx("span",{className:"fm-name",children:p.name}),p.format==="binary"&&d.jsx("span",{className:"fm-format-badge",title:"binary .ric",children:"BIN"}),d.jsx("button",{className:"fm-btn",title:"Preview PyTorch code",onClick:h=>{h.stopPropagation(),i(p.path)},children:"⤡"}),d.jsx("button",{className:"fm-btn",title:"Expand full nodes into canvas",onClick:h=>{h.stopPropagation(),s(p.path)},children:"⤢"})]},p.path))]},f)),e.length===0&&d.jsx("div",{className:"category",style:{padding:8},children:"No .riko files found."}),e.length>0&&c.order.length===0&&d.jsxs("div",{className:"category",style:{padding:8},children:["No matches for “",l,"”."]})]})]})}let Ti=[];function qC(e){Ti=e}function Zf(){return Ti}let ep=0;function tp(e){return ep+=1,`${e}_${Date.now()}_${ep}`}async function JC(){const e=B.getState(),t=Ti.filter(h=>e.nodes.some(y=>y.id===h));if(t.length===0){e.pushToast("error","先框选一些节点再创建子图");return}const n=window.prompt("Subgraph name","subgraph");if(!n||!n.trim())return;const r=new Set(t),o=e.nodes.filter(h=>r.has(h.id)),s=e.edges.filter(h=>r.has(h.source)&&r.has(h.target)),i=e.edges.filter(h=>!r.has(h.source)&&r.has(h.target)),l=e.edges.filter(h=>r.has(h.source)&&!r.has(h.target)),a=[],c=[],u=h=>h===0?"input":`input_${h+1}`,f=h=>h===0?"output":`output_${h+1}`;i.forEach((h,y)=>{const x=u(y),k=`gin_${y}`;a.push({id:k,type_name:"graph_input",label:`Input ${y}`,category:"Subgraph",position:[0,y*90],parameters:{name:x,data_kind:"tensor"},inputs:[],outputs:[]}),c.push({id:`be_in_${y}`,source_node:k,source_port:"value",target_node:h.target,target_port:h.targetHandle})}),l.forEach((h,y)=>{const x=f(y),k=`gout_${y}`;a.push({id:k,type_name:"graph_output",label:`Output ${y}`,category:"Subgraph",position:[1200,y*90],parameters:{name:x,data_kind:"tensor"},inputs:[],outputs:[]}),c.push({id:`be_out_${y}`,source_node:h.source,source_port:h.sourceHandle,target_node:k,target_port:"value"})});const p={version:"1.0",metadata:{name:n.trim(),description:""},nodes:[...o.map(h=>({id:h.id,type_name:h.data.type,label:h.data.label,category:h.data.category,position:[h.position.x,h.position.y],parameters:h.data.params,inputs:[],outputs:[]})),...a],edges:[...s.map(h=>({id:h.id,source_node:h.source,source_port:h.sourceHandle,target_node:h.target,target_port:h.targetHandle})),...c],settings:{}};try{const y=await(await fetch("/api/files/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:n.trim(),format:"ascii",doc:p})})).json();if(y.status!=="success"){e.pushToast("error",y.error??"子图保存失败");return}const x=o.reduce((E,N)=>E+N.position.x,0)/o.length,k=o.reduce((E,N)=>E+N.position.y,0)/o.length,m=e.nodeDefs.find(E=>E.type==="import")??e.nodeDefs.find(E=>E.type==="graph_reference"),v={id:`imp_${Date.now()}`,type:"thnNode",position:{x,y:k},data:{type:(m==null?void 0:m.type)??"import",label:n.trim(),category:"Subgraph",params:(m==null?void 0:m.type)==="import"?{module:n.trim()}:{file:`${n.trim()}.riko`},inputs:(m==null?void 0:m.inputs)??[],outputs:(m==null?void 0:m.outputs)??[],hasError:!1}},g=e.edges.filter(E=>!r.has(E.source)&&!r.has(E.target)),w=3;i.slice(0,w).forEach((E,N)=>{g.push({id:tp("rwin"),source:E.source,target:v.id,sourceHandle:E.sourceHandle,targetHandle:u(N)})}),l.slice(0,w).forEach((E,N)=>{g.push({id:tp("rwout"),source:v.id,target:E.target,sourceHandle:f(N),targetHandle:E.targetHandle})}),B.setState({nodes:[...e.nodes.filter(E=>!r.has(E.id)),v],edges:g,selectedNodeId:null,dirty:!0}),Ti=[];const j=Math.max(0,i.length-w),_=Math.max(0,l.length-w);j||_?e.pushToast("info",`子图已创建,但超过 3 入/3 出的边界连线有 ${j} 入/${_} 出 未保留`):e.pushToast("success",`已创建子图 ${n.trim()}(边界连线已保留)`),e.refreshFiles()}catch(h){e.pushToast("error",h instanceof Error?h.message:String(h))}}function ZC({id:e,data:t,selected:n}){const r=t,o=B(s=>s.results[e]);return d.jsxs("div",{className:`thn-node ${n?"selected":""}`,children:[d.jsx("div",{className:"header",children:r.label}),d.jsxs("div",{className:"ports",children:[r.inputs.map(s=>d.jsxs("div",{className:"port in",children:[d.jsx(Rr,{type:"target",position:K.Left,id:s.name,style:{left:-5}}),d.jsx("span",{className:"label",children:s.label})]},s.name)),r.outputs.map(s=>d.jsxs("div",{className:"port out",children:[d.jsx("span",{className:"label",children:s.label}),d.jsx(Rr,{type:"source",position:K.Right,id:s.name,style:{right:-5}})]},s.name))]}),r.hasError&&d.jsxs("div",{className:"result",style:{color:"var(--color-error)"},children:["⚠ ",r.errorMsg||"error"]}),o&&Object.entries(o).map(([s,i])=>d.jsxs("div",{className:"result",children:[s," = ",i.summary]},s))]})}function e2({state:e,onClose:t}){const n=B(i=>i.nodeDefs),r=B(i=>i.addNode),o=B(i=>i.addFrame),s=M.useMemo(()=>[{id:"create_subgraph",label:`⤵ Create Subgraph (${Zf().length} selected)`,description:"collapse selection into an import node",category:"Subgraph",disabled:Zf().length===0,onSelect:()=>JC()},{id:"add_frame",label:"+ Add Frame",description:"visual grouping box",category:"Frame",onSelect:()=>o("Frame",{x:e.x-200,y:e.y-150})},...n.map(i=>({id:i.type,label:i.label,description:i.type,category:i.category||"Other",onSelect:()=>r(i.type,{x:e.x-200,y:e.y-150})}))],[n,r,o,e.x,e.y]);return e.visible?d.jsx(ji,{entries:s,x:e.x,y:e.y,onClose:t,searchable:!0}):null}const t2={thnNode:ZC};function n2(){const e=B(x=>x.nodes),t=B(x=>x.edges),n=B(x=>x.frames),r=B(x=>x.updateFrame),o=B(x=>x.removeFrame),s=B(x=>x.onNodesChange),i=B(x=>x.onEdgesChange),l=B(x=>x.onConnect),a=B(x=>x.onSelectNode),c=B(x=>x.enterSubgraph),{zoomIn:u,zoomOut:f,fitView:p,getViewport:h}=sl(),y=(x,k)=>{if(x.target.closest("button"))return;x.stopPropagation();const m=x.clientX,v=x.clientY,g=k.x,w=k.y,j=E=>{const N=h().zoom||1;r(k.id,{x:g+(E.clientX-m)/N,y:w+(E.clientY-v)/N})},_=()=>{document.removeEventListener("mousemove",j),document.removeEventListener("mouseup",_)};document.addEventListener("mousemove",j),document.addEventListener("mouseup",_)};return d.jsxs(d.Fragment,{children:[d.jsxs(GE,{nodes:e,edges:t,nodeTypes:t2,onNodesChange:s,onEdgesChange:i,onConnect:l,onNodeClick:(x,k)=>a(k.id),onNodeDoubleClick:(x,k)=>{(k.data.type==="graph_reference"||k.data.type==="import")&&c(k.id)},onPaneClick:()=>a(null),onSelectionChange:({nodes:x})=>qC(x.map(k=>k.id)),selectionOnDrag:!0,panOnDrag:[2],fitView:!0,children:[d.jsx(tC,{}),d.jsx(QE,{children:n.map(x=>d.jsx("div",{className:"graph-frame",style:{left:x.x,top:x.y,width:x.width,height:x.height},onMouseDown:k=>y(k,x),onDoubleClick:()=>{const k=window.prompt("Frame title",x.title);k!==null&&r(x.id,{title:k})},children:d.jsxs("div",{className:"graph-frame-title",children:[x.title,d.jsx("button",{className:"graph-frame-close",onClick:()=>o(x.id),children:"✕"})]})},x.id))})]}),d.jsxs("div",{className:"graph-zoom",children:[d.jsx("button",{onClick:()=>u(),title:"Zoom in",children:"+"}),d.jsx("button",{onClick:()=>p(),title:"Fit view",children:"⤢"}),d.jsx("button",{onClick:()=>f(),title:"Zoom out",children:"−"})]})]})}function r2(){const[e,t]=M.useState({x:0,y:0,visible:!1}),n=B(o=>o.graphStack),r=B(o=>o.exitToLevel);return d.jsxs("div",{className:"graph-canvas",onContextMenu:o=>{o.preventDefault(),t({x:o.clientX,y:o.clientY,visible:!0})},children:[d.jsx(hy,{children:d.jsx(n2,{})}),d.jsx("div",{className:"graph-breadcrumb",children:n.map((o,s)=>d.jsxs("span",{className:"graph-breadcrumb-wrap",children:[s>0&&d.jsx("span",{className:"graph-breadcrumb-sep",children:"/"}),d.jsx("span",{className:`graph-breadcrumb-crumb ${s===n.length-1?"current":""}`,onClick:()=>{s<n.length-1&&r(s)},children:o.name||"root"})]},s))}),d.jsx(e2,{state:e,onClose:()=>t({x:0,y:0,visible:!1})})]})}const o2=[{id:"summary",label:"Summary",icon:"▤"},{id:"params",label:"Params",icon:"⚙"},{id:"inputs",label:"Inputs",icon:"→"},{id:"outputs",label:"Outputs",icon:"←"},{id:"preview",label:"Preview",icon:"◉"}];function s2({style:e}){const t=B(u=>u.selectedNodeId),n=B(u=>u.nodes),r=B(u=>u.results),o=B(u=>u.updateParam),s=B(u=>u.removeNode),i=B(u=>u.nodeDefs),[l,a]=M.useState("summary"),c=n.find(u=>u.id===t);return d.jsxs("div",{className:"side-inspector",style:e,children:[d.jsx("div",{className:"inspector-tags",children:o2.map(u=>d.jsxs("button",{className:`inspector-tag ${l===u.id?"active":""}`,onClick:()=>a(u.id),title:u.label,children:[d.jsx("span",{className:"inspector-tag-icon",children:u.icon}),d.jsx("span",{className:"inspector-tag-label",children:u.label})]},u.id))}),d.jsx("div",{className:"inspector-body",children:c?d.jsxs(d.Fragment,{children:[l==="summary"&&d.jsx(i2,{node:c,onDelete:()=>s(c.id)}),l==="params"&&d.jsx(l2,{node:c,def:i.find(u=>u.type===c.data.type),onParam:(u,f)=>o(c.id,u,f)}),l==="inputs"&&d.jsx(np,{title:"Inputs",ports:c.data.inputs,dir:"in"}),l==="outputs"&&d.jsx(np,{title:"Outputs",ports:c.data.outputs,dir:"out"}),l==="preview"&&d.jsx(a2,{result:r[c.id]})]}):d.jsx("div",{className:"empty",children:"Select a node to edit its parameters"})})]})}function i2({node:e,onDelete:t}){const n=e.data;return d.jsxs("div",{className:"section",children:[d.jsx("h3",{children:"Summary"}),d.jsx("div",{children:n.label}),d.jsxs("div",{className:"port-kind",children:[n.type," · ",n.category]}),d.jsx("button",{className:"btn",style:{marginTop:8,color:"var(--color-error)",borderColor:"var(--color-error)"},onClick:t,children:"Delete"})]})}function l2({node:e,def:t,onParam:n}){return d.jsxs("div",{className:"section",children:[d.jsx("h3",{children:"Parameters"}),t&&t.parameters.length>0?t.parameters.map(r=>d.jsxs("div",{className:"field",children:[d.jsx("label",{children:r.label}),r.kind==="path"?d.jsxs("div",{className:"path-field",style:{display:"flex",gap:6},children:[d.jsx("input",{value:String(e.data.params[r.name]??""),onChange:o=>n(r.name,o.target.value),style:{flex:1}}),d.jsx("button",{className:"btn",onClick:async()=>{const o=r.browse==="save",s=await Zn(o?"save":"import",o?{defaultName:"model.safetensors"}:void 0);s&&n(r.name,s)},children:"Browse"})]}):d.jsx("input",{value:String(e.data.params[r.name]??""),onChange:o=>{const s=r.dtype==="float"||r.dtype==="int"?Number(o.target.value):o.target.value;n(r.name,s)}})]},r.name)):d.jsx("div",{className:"port-kind",children:"No parameters"})]})}function np({title:e,ports:t,dir:n}){return d.jsxs("div",{className:"section",children:[d.jsx("h3",{children:e}),t.length===0?d.jsx("div",{className:"port-kind",children:"None"}):t.map(r=>d.jsxs("div",{className:"port-row",children:[d.jsx("span",{children:r.label}),d.jsxs("span",{className:"port-kind",children:[n," · ",r.dataKind]})]},r.name))]})}function a2({result:e}){return d.jsxs("div",{className:"section",children:[d.jsx("h3",{children:"Preview"}),e?d.jsx("div",{className:"preview",children:Object.entries(e).map(([t,n])=>d.jsxs("div",{style:{marginBottom:6},children:[d.jsxs("div",{children:[d.jsx("strong",{children:t}),":"," ",n.shape.length===0?"scalar":n.shape.join("×")," ",n.dtype," · ",n.device]}),n.image?d.jsx("img",{src:n.image,alt:"preview",style:{maxWidth:"100%",marginTop:4,borderRadius:4,border:"1px solid var(--color-border)"}}):d.jsxs(d.Fragment,{children:[d.jsx("div",{children:n.summary}),n.dataPreview&&d.jsxs("div",{style:{color:"var(--color-text-secondary)",whiteSpace:"pre-wrap"},children:[n.dataPreview,n.dataPreview.length>=120&&"…"]})]})]},t))}):d.jsx("div",{className:"port-kind",children:"Not executed"})]})}function c2({style:e}){const[t,n]=M.useState("logs"),r=B(i=>i.logs),o=B(i=>i.nodes),s=B(i=>i.status);return d.jsxs("div",{className:"status-panel",style:e,children:[d.jsxs("div",{className:"tabs",children:[d.jsx("div",{className:`tab ${t==="logs"?"active":""}`,onClick:()=>n("logs"),children:"Logs"}),d.jsx("div",{className:`tab ${t==="queue"?"active":""}`,onClick:()=>n("queue"),children:"Queue"})]}),d.jsx("div",{className:"content",children:t==="logs"?r.length===0?d.jsx("div",{className:"log-line",children:"No logs yet. Add nodes and click Run."}):r.map((i,l)=>d.jsx("div",{className:"log-line",children:i},l)):o.length===0?d.jsx("div",{className:"log-line",children:"Graph is empty"}):o.map(i=>d.jsxs("div",{className:"queue-item",children:[d.jsx("span",{children:i.data.label}),d.jsx("span",{className:"port-kind",children:s})]},i.id))})]})}function u2(){var f;const e=B(p=>p.losses),t=B(p=>p.train),n=B(p=>p.status),[r,o]=M.useState(20),[s,i]=M.useState(.001),l=300,a=160,c=10,u=(()=>{if(e.length===0)return"";const p=Math.min(...e),y=Math.max(...e)-p||1;return e.map((x,k)=>{const m=c+k/Math.max(e.length-1,1)*(l-c*2),v=c+(1-(x-p)/y)*(a-c*2);return`${m.toFixed(1)},${v.toFixed(1)}`}).join(" ")})();return d.jsxs("div",{className:"loss-panel",children:[d.jsxs("div",{className:"loss-controls",children:[d.jsxs("label",{className:"loss-field",children:["Steps",d.jsx("input",{type:"number",min:1,step:1,value:r,onChange:p=>o(Math.max(1,Math.floor(Number(p.target.value)||1)))})]}),d.jsxs("label",{className:"loss-field",children:["LR",d.jsx("input",{type:"number",min:0,step:"any",value:s,onChange:p=>i(Number(p.target.value)||0)})]}),d.jsx("button",{className:"btn btn-sm",onClick:()=>t(r,s),disabled:n==="running",children:n==="running"?"Training…":`Train ${r} steps`})]}),e.length===0?d.jsx("div",{className:"port-kind",style:{padding:8},children:"No loss history. Add a loss node (e.g. cross_entropy_loss) + a data loader, set steps / LR above, then click Train."}):d.jsxs(d.Fragment,{children:[d.jsx("svg",{viewBox:`0 0 ${l} ${a}`,className:"loss-svg",preserveAspectRatio:"none",children:d.jsx("polyline",{points:u,fill:"none",stroke:"var(--color-primary)",strokeWidth:"2"})}),d.jsxs("div",{className:"loss-meta",children:[d.jsxs("span",{children:["steps: ",e.length]}),d.jsxs("span",{children:["last loss: ",(f=e[e.length-1])==null?void 0:f.toFixed(4)]})]})]})]})}const d2='# Entropia Riko 用户指南\n\n> 版本:v0.1 · 节点数:195+(含插件)· 后端:PyTorch(默认)+ TensorFlow/Keras(可选)\n> 本文档是面向用户的完整使用手册,覆盖界面、节点、构图、训练、导出与开发。\n\n---\n\n## 目录\n\n1. [项目简介](#1-项目简介)\n2. [快速开始](#2-快速开始)\n3. [界面总览](#3-界面总览)\n4. [模块化面板(Blender 风格)](#4-模块化面板blender-风格)\n5. [欢迎窗口](#5-欢迎窗口)\n6. [文件与插件](#6-文件与插件)\n7. [节点系统(191 节点)](#7-节点系统191-节点)\n8. [构图与执行](#8-构图与执行)\n9. [数据输入与预览节点](#9-数据输入与预览节点)\n10. [Wrangle 代码节点](#10-wrangle-代码节点)\n11. [训练与实时 Loss 曲线](#11-训练与实时-loss-曲线)\n12. [导出代码](#12-导出代码)\n13. [.riko 文件格式](#13-tns-文件格式)\n14. [API 端点](#14-api-端点)\n15. [后端架构](#15-后端架构)\n16. [开发与测试](#16-开发与测试)\n17. [已知限制与后续方向](#17-已知限制与后续方向)\n\n---\n\n## 1. 项目简介\n\nEntropia Riko 是一个**独立的节点图编辑器**,用 ComfyUI 风格的画布搭建并运行\nPyTorch(及可选 TensorFlow/Keras)张量工作流。它不是 Houdini 插件。\n\n核心特性:\n\n- **191 个节点**:数学、张量操作、神经网络激活/层、注意力、归一化、归约、形状、\n 创建、损失、数据加载、模型推理、子图引用、Wrangle 代码、预览,以及 TF/Keras。\n- **Blender 风格模块化面板**:拖角分离/合并、任意切换窗口类型、实时缩放。\n- **实时训练 + Loss 曲线**:自包含图(数据加载 + 损失)可直接训练并流式显示损失。\n- **代码导出**:导出干净的 `torch.nn.Module` 或 `tf.keras.Model` 脚本。\n- **子图 import**:一个 `.riko` 图可像 `import xx` 一样引用另一个图。\n- **数据预览**:图片缩略图、文本、JSON 直接在检查器里显示。\n\n---\n\n## 2. 快速开始\n\n### 前置条件\n- Python 3.10+\n- Node.js 18+\n- PyTorch(CPU 版即可;CUDA/MPS 可选)\n\n### 启动(两个终端)\n\n```bash\ncd ~/Documents/torch-node/entropia-riko\n\n# 终端 1:API 服务器(必须先启动)\n.venv/bin/python -m uvicorn src.server.app:app --reload --port 8000\n\n# 终端 2:前端开发服务器\nnpm run dev # → http://localhost:5173\n```\n\n打开 **http://localhost:5173**(务必通过 5173 访问,`/api` 走 Vite 代理)。\n\n> ⚠️ 若看不到 190+ 节点,说明 API 服务器没启动或旧进程仍在(无 `--reload` 的旧进程\n> 不会加载新代码,需杀掉重启)。改代码后浏览器需硬刷新 `Cmd+Shift+R`。\n\n---\n\n## 3. 界面总览\n\n```\n┌ 标题栏(* 未保存 · 文件名 - Riko · 版本号)────────────────────┐\n├ 菜单栏(logo · File / Run / Data / Help,右侧状态徽章)────────┤\n├ 模块化面板区域(Blender 风格区域树)──────────────────────────┤\n│ [节点库] [Asset Library] [New File] [画布] [检查器] │\n│ [状态/日志] [Loss 曲线] │\n└──────────────────────────────────────────────────────────────┘\n```\n\n- **标题栏**:未保存时显示 `*`,随后 `文件名 - Riko`,右侧版本号。\n- **菜单栏**:左上角 **logo**(点开 About / Welcome / Preferences);File(Import/Export\n → 内置 **File Explorer** 导入导出文件/文件夹;Export Code 导出 .py)、Run、Data、\n View(含 **Liquid Glass** 主题)、Help。\n- **节点库**:按分类分组、可折叠、可搜索,点击节点加入画布。\n- **画布**:React Flow 节点图,右键弹搜索式节点菜单。\n- **检查器**:左侧 tag 切换(Summary/Params/Inputs/Outputs/Preview)。\n- **New File**:右上角 mini 文件管理器(右键新建/删除/预览代码/展开节点)。\n- **Asset Library**:`.riko`/`.ric` 资产树(打开 / **展开完整节点** / 保存)。\n- **Code Editor**:代码编辑器窗口(类似记事本,编辑/复制/全选/保存/生成)。\n- **Handwriting Pad**:28×28 手写板,画数字 → 生成 `constant` 节点喂 MNIST。\n- **状态栏**:Logs(日志)与 Queue(节点队列)两个标签。\n- **Loss 曲线**:训练损失的实时 SVG 折线图。\n- **Plugins**:插件管理面板(右上角 `+` 从 `.py` 加载,每个插件带启用/禁用开关)。\n\n---\n\n## 4. 模块化面板(Blender 风格)\n\n每个面板右上角有一个**类型下拉**(切换该窗口显示的内容)和 **✕**(关闭当前面板);\n右下角有一个**角抓手**。\n\n| 操作 | 手势 | 效果 |\n|------|------|------|\n| 切换窗口类型 | 点右上角 `类型 ▾` | Node Library / New File / Asset Library / Graph / Inspector / Status / Loss Curve / Docs / Plugins / Code Editor / Handwriting Pad 十一选一 |\n| 分离(split) | 角抓手**向左/向上拖** | 蓝色预览线跟随鼠标(只在该面板内),松手在 50% 处分出新面板,方向=拖动轴向 |\n| 合并(merge) | 角抓手**向右/向下拖** | 相邻窗口被**蓝色阴影 + 加粗边框**高亮,松手它被并掉、当前面板扩大 |\n| 关闭当前面板 | 点 **✕** | 当前面板被移除,邻居吸收空间 |\n| 缩放 | 拖分隔条 | 所有分隔条可同时独立拖动 |\n\n默认布局:`[节点库/Asset Library 上下] | [画布 | (New File 上 / 检查器)]`,下方\n`[状态 | Loss 曲线]`(New File 只占据最右列、检查器上方,不占用画布区域)。\n\n---\n\n## 5. 欢迎窗口\n\n启动时弹出 Blender 风格欢迎窗口:\n\n- **头图**:上半部为可替换 **JPEG 位图**(`public/brand/hero.jpg`,960×220),右上角显示\n 版本号;左下角为 logo(`public/brand/logo.svg`)。\n- **New File**:`General`(空白图)+ 从 `examples/` 读出的**预制模板**\n (cnn / classifier / mlp / mnist_cnn / transformer / …),点击即载入。\n- **Recent Files**:`localStorage` 记录最近打开过的 `.riko`(去重、最多 10 条)。\n\n点 ✕ 或选择任意项关闭;**Help → Welcome Screen** 或 logo 菜单可随时重新打开。\n\n---\n\n## 6. 文件与插件\n\n**New File**(最右列、检查器上方)是一个 **mini 文件管理器**,映射**工作目录**的\n目录树(可展开/折叠子目录)。**右键**弹出菜单:新建文件/新建文件夹/重命名/删除、\n打开、**预览 PyTorch 代码**(`/api/project/code` 导出 `nn.Module`)、导入为节点。\n**File → Import Working Folder…** 可把工作目录指向任意本地文件夹,并在其中创建\n`.riko` 缓存文件夹存放工具自身状态。\n\n**Asset Library**(原 Files 面板,Blender-outliner 风格资产树)在其基础上增加保存与\nimport 依赖视图,每个文件可展开显示其 `import` 依赖(✓ 已解析 / ✗ 未解析)。\n\n- **打开**:点文件名载入画布。\n- **导入为节点**:点 `⤵` 添加一个引用该文件的 `import` 节点。\n- **保存**:在输入框命名后点 `+ Save .riko`(或 `⇩ .ric`),存到 `workflows/<name>`。\n\n**子图引用**:一个 `.riko` 可被 `graph_reference`(按 `file` 路径)或 `import`\n(按模块名,如 `mlp`,在 `workflows/`、`examples/`、`examples/models/` 中解析)引用。\n被引用图需含 `graph_input(name="input")` 与 `graph_output(name="output")`。\n\n**Plugins 面板**:右上角 `+` 从本地 `.py` 文件加载插件(安装到 `plugins/<name>/`),\n每个插件带启用/禁用开关(禁用即从节点库移除其节点)。内置插件:\n`example_plugin`(`plugin_double`)、`math_extra`(`plugin_square`、`plugin_scale`)、\n`stat_extra`(`plugin_shift_scale`、`plugin_neg`)。\n\n---\n\n## 7. 节点系统(195+ 节点)\n\n### 输入\n`constant`\n\n### 数学(纯 Python)\n`add`, `multiply`\n\n### 数学(torch)\n`torch_add`, `torch_multiply`, `sub`, `div`, `pow`, `matmul`, `mm`, `maximum`,\n`minimum`, `fmod`, `remainder`, `atan2`\n\n### 张量(单目)\n`abs`, `exp`, `log`, `log2`, `log10`, `log1p`, `expm1`, `sqrt`, `erf`, `erfc`,\n`neg`, `sign`, `reciprocal`, `floor`, `ceil`, `round`, `square`, `cos`, `sin`\n\n### 神经网络(激活)\n`relu`, `leaky_relu`, `sigmoid`, `tanh`, `gelu`, `silu`, `selu`, `elu`, `mish`,\n`hardswish`, `hardsigmoid`, `hardtanh`, `softsign`, `tanhshrink`, `softplus`,\n`relu6`, `glu`, `softmax`, `log_softmax`, `log_sigmoid`\n\n### 注意力\n`multihead_attention`, `sdpa`(scaled dot-product attention)\n\n### 神经网络(层)\n`linear`, `conv2d`, `conv1d`, `conv_transpose2d`, `maxpool2d`, `avgpool2d`,\n`embedding`, `dropout`, `batchnorm1d`, `batchnorm2d`, `layernorm`, `groupnorm`,\n`rmsnorm`, `transformer_encoder`\n\n### 归约\n`sum`, `mean`, `amax`, `amin`, `logsumexp`, `median`, `max_reduce`, `min_reduce`,\n`prod`, `std`, `var`, `norm`, `argmax`, `argmin`, `cumsum`, `topk`, `sort`\n\n### 形状\n`reshape`, `view`, `transpose`, `swapaxes`, `movedim`, `permute`, `flatten`,\n`squeeze`, `unsqueeze`, `concat`, `stack`, `flip`, `expand`, `expand_as`,\n`broadcast_to`, `tile`, `repeat`, `repeat_interleave`, `tril`, `triu`,\n`diagonal`, `narrow`, `roll`, `index_select`, `gather`, `interpolate`\n\n### 创建\n`zeros`, `ones`, `rand`, `randn`, `randint`, `randperm`, `empty`, `zeros_like`,\n`ones_like`, `randn_like`, `rand_like`, `eye`, `arange`, `linspace`, `full`,\n`positional_encoding`\n\n### 张量算子\n`bmm`, `dot`, `outer`, `xlogy`, `cross`, `addmm`, `einsum`, `clamp`,\n`contiguous`, `clone`, `detach`, `masked_fill`, `where`\n\n### 损失\n`mse_loss`, `cross_entropy_loss`, `l1_loss`, `smooth_l1_loss`,\n`binary_cross_entropy`, `kl_div`, `nll_loss`, `hinge_embedding_loss`,\n`cosine_embedding_loss`\n\n### 设备\n`to_device`\n\n### 模型\n`model_loader`(加载 .pt)、`inference`(跑 forward)\n\n### 子图\n`graph_input`, `graph_output`, `graph_reference`(按路径), `import`(按模块名)\n\n### 数据(数据集加载)\n`mnist_loader`, `cifar10_loader`, `csv_loader`, `image_folder_loader`,\n`tensor_file_loader`, `dataloader`, `text_loader`, `json_loader`, `image_loader`\n\n### Wrangle 与预览\n`wrangle`(内联 Python 代码), `text_preview`, `json_preview`, `image_preview`\n\n### TensorFlow / Keras(可选后端)\n`keras_dense`, `keras_conv2d`, `keras_flatten`, `keras_embedding`,\n`keras_layernorm`, `keras_dropout`, `keras_relu`, `keras_sigmoid`, `keras_tanh`,\n`keras_gelu`, `keras_softmax`, `keras_maxpool2d`, `keras_avgpool2d`, `tf_add`,\n`tf_multiply`, `tf_matmul`, `tf_concat`, `tf_reshape`, `tf_transpose`, `tf_reduce`\n\n> Keras 卷积用 channels-last `(B,H,W,C)`,与 torch 的 channels-first 不同。\n\n---\n\n## 8. 构图与执行\n\n1. 从节点库点击/拖入节点(或画布右键搜索添加)。\n2. 拖端口连线;点击节点在右侧检查器改参数。\n3. **Run → Inference** 执行整图,结果显示在节点卡片和检查器预览里。\n\n执行后端:校验(端口/必需输入/环检测)→ Kahn 拓扑排序 → 逐节点 `execute`。\n`TensorValue` 是框架无关的中间表示(纯 Python 数据),torch/TF 节点在 `execute` 内\n惰性 import 并做转换。\n\n---\n\n## 9. 数据输入与预览节点\n\n- **输入**:`text_loader`(读文本)、`json_loader`(读 JSON)、`image_loader`\n (用 PIL 读图片,输出 H×W×3 image_tensor)、`csv_loader`、`mnist_loader` 等。\n- **预览**:\n - `text_preview`:把任意值转成文本。\n - `json_preview`:把张量/值序列化成缩进 JSON。\n - `image_preview`:把图像张量转成 **base64 PNG 缩略图**,在检查器里直接显示\n `<img>`。\n\n`TensorValue` 支持 `kind`:`scalar` / `tensor` / `image_tensor` / `text` / `json` /\n`model`。文本/JSON 不做数值 shape 推断。\n\n---\n\n## 10. Wrangle 代码节点\n\n`wrangle` 节点用于解决内置节点覆盖不到的逻辑。参数 `code` 是任意 Python:\n\n```python\n# 可用变量:x / a / b(已连接输入张量,未连接为 None)、torch、F、nn\nresult = x * 2 + 1\n# 或:\n# result = torch.softmax(x, dim=-1)\n# result = F.gelu(x)\n```\n\n`execute` 把输入转成 torch 张量后 `exec(code)`,取 `result`(或 `y`)作为输出。\n导出时会把代码内联进 `forward`。\n\n---\n\n## 11. 训练与实时 Loss 曲线\n\n**可训练图** = 数据加载节点(如 `dataloader`/`mnist_loader`)+ 损失节点\n(`cross_entropy_loss` 等),且不含 `graph_input`。\n\n- **Run → Train 20/100 steps** 或 Loss 面板按钮开始训练。\n- 后端用 codegen 生成 `nn.Module` → `AdamW` 优化器逐步 `backward()`/`step()`,\n 通过 **SSE(`/api/train/stream`)逐步回传 loss**,前端 SVG 曲线实时增长。\n\n注意:执行器本身仍用 `no_grad()` 逐次重建层;真正的训练走「导出 → 执行」这条路径。\n\n---\n\n## 12. 导出代码\n\n- **File → Export .py (PyTorch)**:生成干净的 `torch.nn.Module`。\n - 可学习层进 `__init__`,内联算子进 `forward`。\n - `graph_input` → `forward` 参数;`graph_output` → `return`。\n - `import`/`graph_reference` 递归内联为嵌套 `nn.Module` 类。\n - 数据加载节点生成真实可运行代码(torchvision + 随机回退)。\n - 自包含训练图附带 `train()` + `__main__` 训练循环。\n- **File → Export .py (Keras/TF)**:对 TF/Keras 节点图生成 `tf.keras.Model`\n (层进 `__init__`,算子进 `call`)。\n\n---\n\n## 13. .riko 文件格式\n\n`.riko` 是 JSON,保存完整工作流:\n\n```json\n{\n "version": "0.1",\n "metadata": { "name": "classifier", "description": "...",\n "inputs": [{"name": "input", "data_kind": "tensor"}],\n "outputs": [{"name": "output", "data_kind": "tensor"}] },\n "nodes": [\n {"id": "a", "type_name": "constant", "label": "Constant", "category": "Inputs",\n "position": [100, 200], "parameters": {"value": 2.0}, "inputs": [], "outputs": []}\n ],\n "edges": [\n {"id": "e1", "source_node": "a", "source_port": "value",\n "target_node": "b", "target_port": "left"}\n ],\n "settings": {}\n}\n```\n\n- Save 下载 `workflow.riko`;Load 接受 `.riko`/`.json`。\n- 文件管理器另提供 `POST /api/files/save` 存到 `workflows/`。\n\n---\n\n## 14. API 端点\n\n| 方法 | 路径 | 说明 |\n|------|------|------|\n| GET | `/api/health` | 健康检查 |\n| GET | `/api/nodes` | 全部节点定义(含已启用插件) |\n| POST | `/api/execute` | 执行 GraphDocument JSON,返回各节点端口输出 |\n| POST | `/api/export_python` | 生成 `torch.nn.Module` 代码 |\n| POST | `/api/export_keras` | 生成 `tf.keras.Model` 代码 |\n| POST | `/api/export_binary` | 将图文档编码为 `.ric` 二进制(base64 下载) |\n| GET | `/api/files` | 列出 `.riko` 文件及其 import 依赖 |\n| GET | `/api/files/content?path=` | 读取 `.riko` 内容 |\n| POST | `/api/files/save` | 保存 `.riko` 到 `workflows/` |\n| GET | `/api/plugins` | 列出插件(enabled/disabled + 注册节点) |\n| POST | `/api/plugins/toggle` | 启用/禁用插件(`{name, enabled}`) |\n| POST | `/api/plugins/upload` | 从 Python 源码安装插件(`{name, code}`) |\n| GET | `/api/project/tree` | 返回工作目录的递归目录树(隐藏 `.riko` 缓存) |\n| POST | `/api/project/set_root` | 导入工作文件夹(`{path}`),创建 `.riko` 缓存并持久化 |\n| POST | `/api/project/create` | 在工作目录新建空 `.riko`(`{name, dir?}`) |\n| POST | `/api/project/mkdir` | 在工作目录新建文件夹(`{name, dir?}`) |\n| POST | `/api/project/rename` | 重命名文件/文件夹(`{path, newName}`) |\n| POST | `/api/project/delete` | 删除文件/空文件夹(`{path}`) |\n| POST | `/api/project/code` | 返回该 `.riko` 导出的 PyTorch 代码(`{path}`) |\n| GET | `/api/project/open?path=` | 读取工作目录内 `.riko`/`.ric` 内容 |\n| POST | `/api/train` | 训练并一次性返回 loss 列表 |\n| POST | `/api/train/stream` | 训练并流式(NDJSON)返回逐步 loss |\n\n---\n\n## 15. 后端架构\n\n```\nReact UI (@xyflow/react) ──HTTP──▶ FastAPI\n │ │\n └─ 图文档 JSON ──▶ Runtime(registry + executor + codegen + trainer + subgraph)\n │\n Tensor IR(core/tensor.py TensorValue + document.py)\n │\n Backend(device/converter torch ↔ TensorValue;\n tf_converter tf ↔ TensorValue)\n```\n\n分层与依赖方向:\n\n- `core`(纯 Python,绝不 import torch/TF)\n- `runtime`(注册表 / 执行器 / codegen / codegen_tf / trainer / subgraph)\n- `nodes`(math 纯 Python;torch_ops、tf_ops 惰性 import)\n- `server`(FastAPI)\n- `backend`(torch/TF 转换,均 optional,缺依赖时报清晰错误)\n\n---\n\n## 16. 开发与测试\n\n```bash\n# Python 测试(97 tests,stdlib unittest)\n.venv/bin/python -m unittest discover -s tests -t .\n\n# 前端测试(8 tests,vitest)\nnpm test\n\n# 前端类型检查 + 构建\nnpm run build\n\n# 验证节点数(内置 194;加上插件后 199+)\n.venv/bin/python -c "import src.nodes; from src.runtime.registry import default_registry; print(len(default_registry().list()))"\n# 应打印 194(未加载插件时)\n```\n\n### 新增一个节点\n\n```python\n# src/nodes/.../my_node.py\nfrom ..base import BaseNode, NodeInput, NodeOutput, Parameter\nfrom ...runtime.registry import register\n\n@register("my_node")\nclass MyNode(BaseNode):\n type_name = "my_node"\n label = "My Node"\n category = "Utility"\n inputs = [NodeInput("x", data_kind="tensor", required=True)]\n outputs = [NodeOutput("result", data_kind="tensor")]\n parameters = [Parameter("scale", default=1.0, dtype="float")]\n\n def execute(self, inputs, params, context):\n ...\n return {"result": ...}\n```\n\n然后在对应 `__init__.py` 里 `from . import my_node`,并在 codegen 里加导出分支。\n\n---\n\n## 17. 已知限制与后续方向\n\n1. **执行器级训练未原生实现**:训练走「codegen → exec」路径;原生优化器节点待加。\n2. **子图固定 input/output 端口**:`graph_reference`/`import` 目前只支持单输入单输出。\n3. **Keras 卷积布局**:channels-last,与 torch 不同,混用时需 transpose。\n4. **TF 未随包安装**:`requirements.txt` 中注释了 `tensorflow>=2.10`,启用需自行安装。\n5. **无 undo/redo、无键盘快捷键、无画布内搜索**(右键菜单有搜索)。\n6. **`Toolbar.tsx` 与 `.doc_backups/` 遗留**:可安全删除。\n\n后续方向:原生训练循环、优化器/梯度裁剪节点、多端口子图、模型动物园(ResNet/VGG/BERT\n预制 `.riko`)、JAX 后端、分组卷积/谱分解(svd/qr/eig)等更多 torch API 覆盖。\n',f2='# Entropia Riko User Guide\n\n> Version: v0.1 · Nodes: 191 · Backends: PyTorch (default) + TensorFlow/Keras (optional)\n> This is the complete user manual: interface, nodes, graph building, training, export and development.\n\n---\n\n## Table of Contents\n\n1. [Overview](#1-overview)\n2. [Quick Start](#2-quick-start)\n3. [Interface](#3-interface)\n4. [Modular Panels (Blender-style)](#4-modular-panels-blender-style)\n5. [Welcome Screen](#5-welcome-screen)\n6. [File Manager & Import](#6-file-manager--import)\n7. [Node System (191 nodes)](#7-node-system-191-nodes)\n8. [Building & Running Graphs](#8-building--running-graphs)\n9. [Data Input & Preview Nodes](#9-data-input--preview-nodes)\n10. [Wrangle Code Node](#10-wrangle-code-node)\n11. [Training & Real-time Loss Curve](#11-training--real-time-loss-curve)\n12. [Exporting Code](#12-exporting-code)\n13. [.riko File Format](#13-tns-file-format)\n14. [API Endpoints](#14-api-endpoints)\n15. [Backend Architecture](#15-backend-architecture)\n16. [Development & Testing](#16-development--testing)\n17. [Known Limitations](#17-known-limitations)\n\n---\n\n## 1. Overview\n\nEntropia Riko is a **standalone node-graph editor** for building and running\nPyTorch (and optionally TensorFlow/Keras) tensor workflows, with a ComfyUI-style\ncanvas and a Material-inspired UI. It is **not** a Houdini plugin.\n\nKey features:\n\n- **191 nodes**: math, tensor ops, neural activations/layers, attention,\n normalization, reductions, shape ops, creation, losses, data loading, model\n inference, subgraph references, Wrangle code, previews, and TF/Keras.\n- **Blender-style modular panels**: drag a corner to split/merge, switch any\n window\'s type, and resize everything simultaneously.\n- **Real-time training + loss curve**: self-contained graphs (data + loss)\n train live with a streaming SVG loss chart.\n- **Code export**: generate clean `torch.nn.Module` or `tf.keras.Model` scripts.\n- **Subgraph import**: a `.riko` graph can reference another like `import xx`.\n- **Data previews**: image thumbnails, text and JSON rendered in the inspector.\n\n---\n\n## 2. Quick Start\n\n### Prerequisites\n- Python 3.10+\n- Node.js 18+\n- PyTorch (CPU build is enough; CUDA/MPS optional)\n\n### Run (two terminals)\n\n```bash\ncd ~/Documents/torch-node/entropia-riko\n\n# Terminal 1: API server (start FIRST)\n.venv/bin/python -m uvicorn src.server.app:app --reload --port 8000\n\n# Terminal 2: frontend dev server\nnpm run dev # → http://localhost:5173\n```\n\nOpen **http://localhost:5173** (the `/api` proxy only works through 5173).\n\n> ⚠️ If you don\'t see 190+ nodes, the API server isn\'t running, or a stale\n> process started without `--reload` is still serving old code — kill and\n> restart it. After code changes, hard-refresh the browser with `Cmd+Shift+R`.\n\n---\n\n## 3. Interface\n\n```\n┌ Menu bar (File / Run / Data / Help, status badge) ────────────────┐\n├ Modular panel area (Blender-style area tree) ─────────────────────┤\n│ [Node Library] [Files] [Canvas (React Flow)] [Inspector] │\n│ [Status / Logs] [Loss Curve] │\n└────────────────────────────────────────────────────────────────────┘\n```\n\n- **Menu bar**: File (new / save / load / export PyTorch / export Keras),\n Run (inference / Train 20 / 100 steps), Data (quick-add dataset nodes),\n Help (welcome screen / about).\n- **Node Library**: grouped, collapsible, searchable; click to add a node.\n- **Canvas**: React Flow node graph; right-click opens a searchable node menu.\n- **Inspector**: parameters / inputs / outputs / preview of the selected node.\n- **Status**: Logs and Queue tabs.\n- **Loss Curve**: live training loss as an SVG line chart.\n\n---\n\n## 4. Modular Panels (Blender-style)\n\nEach panel has a **type dropdown** (top-right) to switch what it shows and a\n**✕** (close) button; the bottom-right corner is a **grip**.\n\n| Action | Gesture | Effect |\n|--------|---------|--------|\n| Switch type | click `type ▾` | Node Library / Files / Graph / Inspector / Status / Loss Curve / Documentation |\n| Split | drag grip **up/left** | a blue preview line follows the mouse (clipped to the panel); release splits at 50%, orientation = drag axis |\n| Merge | drag grip **down/right** | the sibling panel is **shaded + bold-bordered**; release merges it away, current expands |\n| Close current | click **✕** | current panel removed, neighbor absorbs the space |\n| Resize | drag a splitter | all splitters resize independently and simultaneously |\n\nDefault layout: `[Node Library / Files stacked] | [Graph | Inspector]` over\n`[Status | Loss Curve]`.\n\n---\n\n## 5. Welcome Screen\n\nA Blender-style splash opens on startup, with two columns:\n\n- **New File**: `General` (blank graph) + preset templates read from\n `examples/` (cnn / classifier / mlp / mnist_cnn / transformer / …).\n- **Recent Files**: the last opened `.riko` files (deduped, up to 10, stored in\n `localStorage`).\n\nClose with ✕ or by picking an item; reopen via **Help → Welcome Screen**.\n\n---\n\n## 6. File Manager & Import\n\nThe **Files** panel is a Blender-outliner-style tree of `.riko` files under\n`workflows/` and `examples/`. Each file expands to show its `import`\ndependencies (✓ resolved / ✗ missing).\n\n- **Open**: click a file name to load it.\n- **Import as node**: click `⤵` to add an `import` node referencing it.\n- **Save**: name it and click `+ Save` → `workflows/<name>.riko`.\n\n**Subgraph references**: a `.riko` can be referenced by `graph_reference`\n(by `file` path) or `import` (by module name, e.g. `mlp`, resolved under\n`workflows/`, `examples/`, `examples/models/`). The referenced graph must\ncontain `graph_input(name="input")` and `graph_output(name="output")`.\n\n---\n\n## 7. Node System (191 nodes)\n\n### Inputs\n`constant`\n\n### Math (pure Python)\n`add`, `multiply`\n\n### Math (torch)\n`torch_add`, `torch_multiply`, `sub`, `div`, `pow`, `matmul`, `mm`, `maximum`,\n`minimum`, `fmod`, `remainder`, `atan2`\n\n### Tensor (unary)\n`abs`, `exp`, `log`, `log2`, `log10`, `log1p`, `expm1`, `sqrt`, `erf`, `erfc`,\n`neg`, `sign`, `reciprocal`, `floor`, `ceil`, `round`, `square`, `cos`, `sin`\n\n### Neural (activations)\n`relu`, `leaky_relu`, `sigmoid`, `tanh`, `gelu`, `silu`, `selu`, `elu`, `mish`,\n`hardswish`, `hardsigmoid`, `hardtanh`, `softsign`, `tanhshrink`, `softplus`,\n`relu6`, `glu`, `softmax`, `log_softmax`, `log_sigmoid`\n\n### Attention\n`multihead_attention`, `sdpa` (scaled dot-product attention)\n\n### Neural (layers)\n`linear`, `conv2d`, `conv1d`, `conv_transpose2d`, `maxpool2d`, `avgpool2d`,\n`embedding`, `dropout`, `batchnorm1d`, `batchnorm2d`, `layernorm`, `groupnorm`,\n`rmsnorm`, `transformer_encoder`\n\n### Reduce\n`sum`, `mean`, `amax`, `amin`, `logsumexp`, `median`, `max_reduce`, `min_reduce`,\n`prod`, `std`, `var`, `norm`, `argmax`, `argmin`, `cumsum`, `topk`, `sort`\n\n### Shape\n`reshape`, `view`, `transpose`, `swapaxes`, `movedim`, `permute`, `flatten`,\n`squeeze`, `unsqueeze`, `concat`, `stack`, `flip`, `expand`, `expand_as`,\n`broadcast_to`, `tile`, `repeat`, `repeat_interleave`, `tril`, `triu`,\n`diagonal`, `narrow`, `roll`, `index_select`, `gather`, `interpolate`\n\n### Creation\n`zeros`, `ones`, `rand`, `randn`, `randint`, `randperm`, `empty`, `zeros_like`,\n`ones_like`, `randn_like`, `rand_like`, `eye`, `arange`, `linspace`, `full`,\n`positional_encoding`\n\n### Tensor ops\n`bmm`, `dot`, `outer`, `xlogy`, `cross`, `addmm`, `einsum`, `clamp`,\n`contiguous`, `clone`, `detach`, `masked_fill`, `where`\n\n### Loss\n`mse_loss`, `cross_entropy_loss`, `l1_loss`, `smooth_l1_loss`,\n`binary_cross_entropy`, `kl_div`, `nll_loss`, `hinge_embedding_loss`,\n`cosine_embedding_loss`\n\n### Device\n`to_device`\n\n### Model\n`model_loader` (load .pt), `inference` (run forward)\n\n### Subgraph\n`graph_input`, `graph_output`, `graph_reference` (by path), `import` (by module)\n\n### Data (dataset loaders)\n`mnist_loader`, `cifar10_loader`, `csv_loader`, `image_folder_loader`,\n`tensor_file_loader`, `dataloader`, `text_loader`, `json_loader`, `image_loader`\n\n### Wrangle & Preview\n`wrangle` (inline Python code), `text_preview`, `json_preview`, `image_preview`\n\n### TensorFlow / Keras (optional backend)\n`keras_dense`, `keras_conv2d`, `keras_flatten`, `keras_embedding`,\n`keras_layernorm`, `keras_dropout`, `keras_relu`, `keras_sigmoid`, `keras_tanh`,\n`keras_gelu`, `keras_softmax`, `keras_maxpool2d`, `keras_avgpool2d`, `tf_add`,\n`tf_multiply`, `tf_matmul`, `tf_concat`, `tf_reshape`, `tf_transpose`, `tf_reduce`\n\n> Keras convolutions use channels-last `(B,H,W,C)`, unlike torch\'s channels-first.\n\n---\n\n## 8. Building & Running Graphs\n\n1. Add nodes from the library (or right-click the canvas to search).\n2. Drag between ports to connect; click a node to edit parameters in the inspector.\n3. **Run → Inference** executes the whole graph; results appear on node cards\n and in the inspector preview.\n\nExecution backend: validation (ports / required inputs / cycle detection) →\nKahn topological sort → per-node `execute`. `TensorValue` is a framework-neutral\nIR (pure-Python data); torch/TF nodes lazily import and convert inside `execute`.\n\n---\n\n## 9. Data Input & Preview Nodes\n\n- **Inputs**: `text_loader` (read text), `json_loader` (parse JSON),\n `image_loader` (PIL → H×W×3 image_tensor), `csv_loader`, `mnist_loader`, …\n- **Previews**:\n - `text_preview`: convert any value to text.\n - `json_preview`: serialize a tensor/value to indented JSON.\n - `image_preview`: render an image tensor as a **base64 PNG thumbnail** shown\n in the inspector.\n\n`TensorValue` supports `kind`: `scalar` / `tensor` / `image_tensor` / `text` /\n`json` / `model`. Text/JSON payloads skip numeric shape inference.\n\n---\n\n## 10. Wrangle Code Node\n\nThe `wrangle` node covers whatever built-in nodes can\'t. Its `code` parameter\nis arbitrary Python:\n\n```python\n# available: x / a / b (connected input tensors, None if unconnected), torch, F, nn\nresult = x * 2 + 1\n# result = torch.softmax(x, dim=-1)\n# result = F.gelu(x)\n```\n\n`execute` converts inputs to torch tensors, runs `exec(code)`, and returns\n`result` (or `y`). Export inlines the code into `forward`.\n\n---\n\n## 11. Training & Real-time Loss Curve\n\nA **trainable graph** = a data loader node (e.g. `dataloader`/`mnist_loader`) +\na loss node (e.g. `cross_entropy_loss`), with no `graph_input`.\n\n- **Run → Train 20/100 steps** (or the Loss panel buttons) starts training.\n- The backend generates an `nn.Module` via codegen, runs `AdamW` steps with\n `backward()`/`step()`, and streams each loss over **SSE\n (`/api/train/stream`)**; the frontend SVG curve grows in real time.\n\nNote: the executor itself still uses `no_grad()` and rebuilds layers per call;\nreal training goes through the "export → exec" path.\n\n---\n\n## 12. Exporting Code\n\n- **File → Export .py (PyTorch)**: emits a clean `torch.nn.Module`.\n - learnable layers → `__init__`, inline ops → `forward`.\n - `graph_input` → `forward` parameter; `graph_output` → `return`.\n - `import`/`graph_reference` are inlined recursively as nested modules.\n - data loaders emit real runnable code (torchvision + random fallback).\n - self-contained training graphs get a `train()` + `__main__` loop.\n- **File → Export .py (Keras/TF)**: emits a subclassed `tf.keras.Model`\n (layers → `__init__`, ops → `call`).\n\n---\n\n## 13. .riko File Format\n\n`.riko` is JSON storing a complete workflow:\n\n```json\n{\n "version": "0.1",\n "metadata": { "name": "classifier", "description": "...",\n "inputs": [{"name": "input", "data_kind": "tensor"}],\n "outputs": [{"name": "output", "data_kind": "tensor"}] },\n "nodes": [\n {"id": "a", "type_name": "constant", "label": "Constant", "category": "Inputs",\n "position": [100, 200], "parameters": {"value": 2.0}, "inputs": [], "outputs": []}\n ],\n "edges": [\n {"id": "e1", "source_node": "a", "source_port": "value",\n "target_node": "b", "target_port": "left"}\n ],\n "settings": {}\n}\n```\n\n- Save downloads `workflow.riko`; Load accepts `.riko`/`.json`.\n- The file manager additionally saves to `workflows/` via `POST /api/files/save`.\n\n---\n\n## 14. API Endpoints\n\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | `/api/health` | health check |\n| GET | `/api/nodes` | all 191 node definitions |\n| POST | `/api/execute` | execute a GraphDocument JSON, return per-node outputs |\n| POST | `/api/export_python` | generate `torch.nn.Module` code |\n| POST | `/api/export_keras` | generate `tf.keras.Model` code |\n| GET | `/api/files` | list `.riko` files + their import dependencies |\n| GET | `/api/files/content?path=` | read a `.riko` file |\n| POST | `/api/files/save` | save a `.riko` to `workflows/` |\n| POST | `/api/train` | train and return the loss list |\n| POST | `/api/train/stream` | train and stream per-step losses (NDJSON) |\n\n---\n\n## 15. Backend Architecture\n\n```\nReact UI (@xyflow/react) ──HTTP──▶ FastAPI\n │ │\n └─ graph JSON ──▶ Runtime (registry + executor + codegen + trainer + subgraph)\n │\n Tensor IR (core/tensor.py TensorValue + document.py)\n │\n Backend (device/converter torch ↔ TensorValue;\n tf_converter tf ↔ TensorValue)\n```\n\nLayers & dependency direction:\n\n- `core` (pure Python — never imports torch/TF)\n- `runtime` (registry / executor / codegen / codegen_tf / trainer / subgraph)\n- `nodes` (math pure-Python; torch_ops, tf_ops lazy-import)\n- `server` (FastAPI)\n- `backend` (torch/TF converters, both optional with clear errors)\n\n---\n\n## 16. Development & Testing\n\n```bash\n# Python tests (89 tests, stdlib unittest)\n.venv/bin/python -m unittest discover -s tests -t .\n\n# Frontend tests (8 tests, vitest)\nnpm test\n\n# Frontend type-check + build\nnpm run build\n\n# Verify node count\n.venv/bin/python -c "import src.nodes; from src.runtime.registry import default_registry; print(len(default_registry().list()))"\n# should print 191\n```\n\n### Adding a node\n\n```python\n# src/nodes/.../my_node.py\nfrom ..base import BaseNode, NodeInput, NodeOutput, Parameter\nfrom ...runtime.registry import register\n\n@register("my_node")\nclass MyNode(BaseNode):\n type_name = "my_node"\n label = "My Node"\n category = "Utility"\n inputs = [NodeInput("x", data_kind="tensor", required=True)]\n outputs = [NodeOutput("result", data_kind="tensor")]\n parameters = [Parameter("scale", default=1.0, dtype="float")]\n\n def execute(self, inputs, params, context):\n ...\n return {"result": ...}\n```\n\nThen `from . import my_node` in the package `__init__.py`, and add an export\nbranch in codegen.\n\n---\n\n## 17. Known Limitations\n\n1. **No native executor-level training**: training uses the codegen→exec path;\n an in-executor optimizer node is still pending.\n2. **Fixed subgraph input/output ports**: `graph_reference`/`import` support a\n single input and a single output only.\n3. **Keras convolution layout**: channels-last, differs from torch.\n4. **TF not bundled**: `requirements.txt` comments out `tensorflow>=2.10`;\n install it yourself to enable TF nodes.\n5. **No undo/redo, no keyboard shortcuts, no in-canvas search** (right-click menu\n has search).\n6. **`Toolbar.tsx` and `.doc_backups/` are legacy**: safe to delete.\n\nFuture: native training loop, optimizer/gradient-clipping nodes, multi-port\nsubgraphs, a model zoo (ResNet/VGG/BERT presets), a JAX backend, and more torch\nAPI coverage (grouped conv, spectral decompositions svd/qr/eig, …).\n';function zt(e){return e.split(/(`[^`]+`|\*\*[^*]+\*\*|\[[^\]]+\]\([^)]+\))/g).map((n,r)=>{if(n.startsWith("`")&&n.endsWith("`")&&n.length>2)return d.jsx("code",{children:n.slice(1,-1)},r);if(n.startsWith("**")&&n.endsWith("**")&&n.length>4)return d.jsx("strong",{children:n.slice(2,-2)},r);const o=n.match(/^\[([^\]]+)\]\(([^)]+)\)$/);return o?d.jsx("a",{href:o[2],target:"_blank",rel:"noreferrer",children:o[1]},r):d.jsx(M.Fragment,{children:n},r)})}function rp(e){return/^#{1,4}\s/.test(e)}function Ql(e){return/^\s*[-*]\s/.test(e)||/^\s*\d+\.\s/.test(e)}function p2(e){return/^\s*\|[\s:|-]+\|\s*$/.test(e)}function Us(e){const t=e.replace(/\r\n/g,`
64
+ `).split(`
65
+ `),n=[];let r=0;const o=(s,i)=>{n.push(d.jsx(M.Fragment,{children:s},i))};for(;r<t.length;){const s=t[r];if(s.trim()===""){r++;continue}if(s.trim().startsWith("```")){const l=[];for(r++;r<t.length&&!t[r].trim().startsWith("```");)l.push(t[r]),r++;r++,o(d.jsx("pre",{children:d.jsx("code",{children:l.join(`
66
+ `)})}),r);continue}if(rp(s)){const l=s.match(/^(#+)/)[1].length,a=s.replace(/^#+\s*/,"").trim(),c=r;o(l===1?d.jsx("h1",{children:zt(a)}):l===2?d.jsx("h2",{children:zt(a)}):l===3?d.jsx("h3",{children:zt(a)}):d.jsx("h4",{children:zt(a)}),c),r++;continue}if(/^\s*-{3,}\s*$/.test(s)){o(d.jsx("hr",{}),r),r++;continue}if(s.startsWith(">")){const l=[];for(;r<t.length&&t[r].startsWith(">");)l.push(t[r].replace(/^>\s?/,"")),r++;o(d.jsx("blockquote",{children:Us(l.join(`
67
+ `))}),r);continue}if(s.trim().startsWith("|")&&t[r+1]&&p2(t[r+1])){const l=s.trim().replace(/^\||\|$/g,"").split("|").map(c=>c.trim());r+=2;const a=[];for(;r<t.length&&t[r].trim().startsWith("|");)a.push(t[r].trim().replace(/^\||\|$/g,"").split("|").map(c=>c.trim())),r++;o(d.jsxs("table",{children:[d.jsx("thead",{children:d.jsx("tr",{children:l.map((c,u)=>d.jsx("th",{children:zt(c)},u))})}),d.jsx("tbody",{children:a.map((c,u)=>d.jsx("tr",{children:c.map((f,p)=>d.jsx("td",{children:zt(f)},p))},u))})]}),r);continue}if(Ql(s)){const l=/^\s*\d+\.\s/.test(s),a=[];for(;r<t.length&&Ql(t[r]);)a.push(t[r].replace(/^\s*(?:[-*]|\d+\.)\s*/,"")),r++;const c=r;o(l?d.jsx("ol",{children:a.map((u,f)=>d.jsx("li",{children:zt(u)},f))}):d.jsx("ul",{children:a.map((u,f)=>d.jsx("li",{children:zt(u)},f))}),c);continue}const i=[];for(;r<t.length&&t[r].trim()!==""&&!rp(t[r])&&!t[r].trim().startsWith("```")&&!t[r].trim().startsWith("|")&&!t[r].startsWith(">")&&!Ql(t[r])&&!/^\s*-{3,}\s*$/.test(t[r]);)i.push(t[r]),r++;i.length&&o(d.jsx("p",{children:zt(i.join(" "))}),r)}return n}const Cy="entropia_riko_doc_lang";function h2(e){const t=e.split(`
68
+ `);let n="";const r=[];let o=null;const s=[];for(const i of t){if(i.startsWith("# ")){n=i.slice(2).trim();continue}if(i.startsWith("## ")){o&&r.push(o),o={id:i.slice(3).trim(),title:i.slice(3).trim(),body:""};continue}o?o.body+=i+`
69
+ `:i.trim()!==""&&s.push(i)}return o&&r.push(o),{title:n,intro:s.join(`
70
+ `),sections:r}}function m2(){try{return localStorage.getItem(Cy)==="zh"?"zh":"en"}catch{return"en"}}function g2(){var p;const[e,t]=M.useState(m2),n=M.useMemo(()=>h2(e==="zh"?d2:f2),[e]),[r,o]=M.useState(""),[s,i]=M.useState(((p=n.sections[0])==null?void 0:p.id)??"");M.useEffect(()=>{try{localStorage.setItem(Cy,e)}catch{}},[e]),M.useEffect(()=>{i(h=>{var y;return n.sections.some(x=>x.id===h)?h:((y=n.sections[0])==null?void 0:y.id)??""})},[n]);const l=M.useMemo(()=>{const h=r.trim().toLowerCase();return h?n.sections.filter(y=>y.title.toLowerCase().includes(h)||y.body.toLowerCase().includes(h)):n.sections},[n.sections,r]),a=n.sections.findIndex(h=>h.id===s),c=n.sections[a]??n.sections[0],u=a>0?n.sections[a-1]:null,f=a>=0&&a<n.sections.length-1?n.sections[a+1]:null;return d.jsxs("div",{className:"docs-panel",children:[d.jsxs("div",{className:"docs-sidebar",children:[d.jsx("div",{className:"docs-search",children:d.jsx("input",{placeholder:e==="zh"?"搜索文档…":"Search docs…",value:r,onChange:h=>o(h.target.value)})}),d.jsxs("div",{className:"docs-nav",children:[l.map(h=>d.jsx("div",{className:`docs-nav-item ${h.id===s?"active":""}`,onClick:()=>i(h.id),children:h.title},h.id)),l.length===0&&d.jsx("div",{className:"docs-nav-empty",children:e==="zh"?"无匹配":"No matches"})]})]}),d.jsx("div",{className:"docs-content",children:d.jsxs("div",{className:"docs-content-inner",children:[d.jsxs("div",{className:"docs-langbar",children:[d.jsx("div",{className:"docs-pager-spacer"}),d.jsxs("div",{className:"docs-lang-switch",children:[d.jsx("button",{className:`panel-btn ${e==="en"?"active":""}`,onClick:()=>t("en"),children:"EN"}),d.jsx("button",{className:`panel-btn ${e==="zh"?"active":""}`,onClick:()=>t("zh"),children:"中文"})]})]}),r?d.jsx("h1",{children:e==="zh"?"搜索结果":"Search Results"}):d.jsxs(d.Fragment,{children:[d.jsx("h1",{children:n.title}),d.jsx("div",{className:"docs-intro",children:Us(n.intro)}),d.jsx("hr",{})]}),r?l.map(h=>d.jsxs("div",{className:"docs-result",children:[d.jsx("h2",{onClick:()=>{o(""),i(h.id)},children:h.title}),Us(h.body.slice(0,400))]},h.id)):c&&d.jsxs(d.Fragment,{children:[d.jsx("h1",{children:c.title}),Us(c.body)]}),!r&&d.jsxs("div",{className:"docs-pager",children:[u&&d.jsxs("button",{className:"btn btn-sm",onClick:()=>i(u.id),children:["← ",u.title]}),d.jsx("div",{className:"docs-pager-spacer"}),f&&d.jsxs("button",{className:"btn btn-sm",onClick:()=>i(f.id),children:[f.title," →"]})]})]})})]})}function jy(){const[e,t]=M.useState([]),[n,r]=M.useState(!1),o=M.useRef(null),s=B(c=>c.pushToast),i=async()=>{try{const u=await(await fetch("/api/plugins")).json();t(Array.isArray(u.plugins)?u.plugins:[])}catch{t([])}};M.useEffect(()=>{i()},[]);const l=async(c,u)=>{r(!0);try{const p=await(await fetch("/api/plugins/toggle",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:c.dir??c.name,enabled:u})})).json();p.status==="success"?(t(Array.isArray(p.plugins)?p.plugins:[]),B.getState().loadNodeDefs(),s("success",`${c.name} ${u?"enabled":"disabled"}`)):s("error",p.error??"toggle failed")}catch(f){s("error",f instanceof Error?f.message:String(f))}finally{r(!1)}},a=c=>{var p;const u=(p=c.target.files)==null?void 0:p[0];if(c.target.value="",!u)return;const f=new FileReader;f.onload=async()=>{const h=String(f.result??""),y=u.name.replace(/\.py$/i,"")||"plugin";r(!0);try{const k=await(await fetch("/api/plugins/upload",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:y,code:h})})).json();k.status==="success"?(t(Array.isArray(k.plugins)?k.plugins:[]),B.getState().loadNodeDefs(),s("success",`Loaded plugin ${y}`)):s("error",k.error??"upload failed")}catch(x){s("error",x instanceof Error?x.message:String(x))}finally{r(!1)}},f.readAsText(u)};return d.jsxs("div",{className:"plugin-panel",children:[d.jsxs("div",{className:"panel-head",children:[d.jsx("span",{className:"panel-head-title",children:"Plugins"}),d.jsx("span",{className:"spacer"}),d.jsx("button",{className:"panel-btn",title:"Load plugin from a .py file",disabled:n,onClick:()=>{var c;return(c=o.current)==null?void 0:c.click()},children:"+"}),d.jsx("button",{className:"panel-btn",title:"Refresh",onClick:i,children:"↻"}),d.jsx("input",{ref:o,type:"file",accept:".py,text/x-python",style:{display:"none"},onChange:a})]}),d.jsxs("div",{className:"plugin-list",children:[e.length===0&&d.jsx("div",{className:"prefs-empty",children:"No plugins installed."}),e.map(c=>d.jsxs("div",{className:"plugin-item",children:[d.jsxs("div",{className:"plugin-item-main",children:[d.jsxs("span",{className:"plugin-item-name",children:[c.name," ",c.version?`v${c.version}`:""]}),d.jsx("span",{className:`prefs-plugin-status ${c.status}`,children:c.status}),c.description&&d.jsx("span",{className:"plugin-item-desc",children:c.description}),c.error&&d.jsx("span",{className:"prefs-plugin-error",children:c.error})]}),d.jsxs("label",{className:"plugin-toggle",title:c.enabled?"Disable":"Enable",children:[d.jsx("input",{type:"checkbox",checked:!!c.enabled,disabled:n||c.status==="error",onChange:u=>l(c,u.target.checked)}),d.jsx("span",{className:"plugin-toggle-track"})]})]},c.name))]})]})}function y2(){const e=B(_=>_.pushToast),t=B(_=>_.openProjectFile),n=B(_=>_.importModule),r=B(_=>_.projectVersion),[o,s]=M.useState([]),[i,l]=M.useState({}),[a,c]=M.useState(null),[u,f]=M.useState(null),p=async()=>{try{const E=await(await fetch("/api/project/tree")).json();s(Array.isArray(E.tree)?E.tree:[])}catch{s([])}};M.useEffect(()=>{p()},[r]);const h=async(_,E)=>(await fetch(_,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(E)})).json(),y=async _=>{const E=window.prompt("New file name","untitled.riko");if(!E)return;const N=await h("/api/project/create",{name:E,dir:_});N.status==="success"?(await p(),t(N.path)):e("error",N.error??"create failed")},x=async _=>{const E=window.prompt("New folder name");if(!E)return;const N=await h("/api/project/mkdir",{name:E,dir:_});N.status==="success"?(l($=>({...$,[_]:!0})),await p()):e("error",N.error??"mkdir failed")},k=async _=>{const E=window.prompt("Rename",_.name);if(!E)return;const N=await h("/api/project/rename",{path:_.path,newName:E});N.status==="success"?await p():e("error",N.error??"rename failed")},m=async _=>{if(!window.confirm(`Delete ${_.path}?`))return;const E=await h("/api/project/delete",{path:_.path});E.status==="success"?(await p(),e("success",`Deleted ${_.name}`)):e("error",E.error??"delete failed")},v=async _=>{const E=await h("/api/project/code",{path:_.path});E.status==="success"?(B.getState().setCodeBuffer(E.code??""),e("success","Code → Code Editor panel")):e("error",E.error??"code generation failed")},g=async(_,E)=>{const N=await h("/api/project/move",{path:_,targetDir:E});N.status==="success"?(await p(),e("success",`Moved ${_} → ${E||"(root)"}`)):e("error",N.error??"move failed")},w=()=>{const _=(a==null?void 0:a.target)??null;return _&&_.type==="file"?[{id:"open",label:"Open",onSelect:()=>t(_.path)},{id:"code",label:"Preview PyTorch Code",description:"→ Code Editor panel",onSelect:()=>v(_)},{id:"import",label:"Import as Node",description:"reference this graph",onSelect:()=>n(_.name.replace(/\.(riko|ric)$/i,""),{x:260,y:150})},{id:"sep1",label:"",separator:!0},{id:"rename",label:"Rename",onSelect:()=>k(_)},{id:"delete",label:"Delete",danger:!0,onSelect:()=>m(_)}]:_&&_.type==="dir"?[{id:"newfile",label:"New File",onSelect:()=>y(_.path)},{id:"newfolder",label:"New Folder",onSelect:()=>x(_.path)},{id:"sep1",label:"",separator:!0},{id:"rename",label:"Rename",onSelect:()=>k(_)},{id:"delete",label:"Delete",danger:!0,onSelect:()=>m(_)}]:[{id:"newfile",label:"New File",onSelect:()=>y("")},{id:"newfolder",label:"New Folder",onSelect:()=>x("")},{id:"sep1",label:"",separator:!0},{id:"refresh",label:"Refresh",onSelect:p}]},j=(_,E)=>{if(_.type==="dir"){const N=!!i[_.path];return d.jsxs("div",{children:[d.jsxs("div",{className:"proj-row",style:{paddingLeft:8+E*12},draggable:!0,onDragStart:$=>{f(_.path),$.dataTransfer.effectAllowed="move"},onDragOver:$=>{$.preventDefault(),$.dataTransfer.dropEffect="move"},onDrop:$=>{$.preventDefault(),$.stopPropagation(),u&&u!==_.path&&g(u,_.path),f(null)},onClick:()=>l($=>({...$,[_.path]:!N})),onContextMenu:$=>{$.preventDefault(),$.stopPropagation(),c({x:$.clientX,y:$.clientY,target:_})},children:[d.jsx("span",{className:"proj-caret",children:N?"▾":"▸"}),d.jsx("span",{className:"proj-icon",children:"▦"}),d.jsx("span",{className:"proj-name",children:_.name})]}),N&&(_.children??[]).map($=>j($,E+1))]},_.path)}return d.jsxs("div",{className:"proj-row proj-file",style:{paddingLeft:8+E*12},draggable:!0,onDragStart:N=>{f(_.path),N.dataTransfer.effectAllowed="move"},onClick:()=>t(_.path),onContextMenu:N=>{N.preventDefault(),N.stopPropagation(),c({x:N.clientX,y:N.clientY,target:_})},children:[d.jsx("span",{className:"proj-caret",children:"·"}),d.jsx("span",{className:"proj-icon",children:"▤"}),d.jsx("span",{className:"proj-name",children:_.name})]},_.path)};return d.jsxs("div",{className:"project-panel",children:[d.jsxs("div",{className:"panel-head",children:[d.jsx("span",{className:"panel-head-title",children:"New File"}),d.jsx("span",{className:"spacer"}),d.jsx("button",{className:"panel-btn",title:"Refresh",onClick:p,children:"↻"})]}),d.jsxs("div",{className:"proj-tree",onDragOver:_=>_.preventDefault(),onDrop:_=>{_.preventDefault(),u&&g(u,""),f(null)},onContextMenu:_=>{_.preventDefault(),c({x:_.clientX,y:_.clientY,target:null})},children:[o.map(_=>j(_,0)),o.length===0&&d.jsx("div",{className:"welcome-empty",children:"Right-click to create a file."})]}),a&&d.jsx(ji,{entries:w(),x:a.x,y:a.y,onClose:()=>c(null)})]})}function v2(){const e=B(m=>m.codeBuffer),t=B(m=>m.setCodeBuffer),n=B(m=>m.generatePythonCode),r=B(m=>m.pushToast),o=M.useRef(null),s=M.useRef(null),[i,l]=M.useState(null),a=()=>{var m;return(m=o.current)==null?void 0:m.focus()},c=m=>{a(),document.execCommand(m)},u=async()=>{try{await navigator.clipboard.writeText(e),r("success","Copied")}catch{c("copy")}},f=()=>{var m;a(),(m=o.current)==null||m.select()},p=()=>{const m=new Blob([e],{type:"text/x-python"}),v=URL.createObjectURL(m),g=document.createElement("a");g.href=v,g.download="code.py",g.click(),URL.revokeObjectURL(v)},h=()=>t(""),y=m=>{var w;const v=(w=m.target.files)==null?void 0:w[0];if(m.target.value="",!v)return;const g=new FileReader;g.onload=()=>t(String(g.result??"")),g.readAsText(v)},x=[{label:"File",items:[{label:"New",run:h},{label:"Open…",run:()=>{var m;return(m=s.current)==null?void 0:m.click()}},{label:"Generate from Graph",run:n},{label:"Save .py",run:p}]},{label:"Edit",items:[{label:"Undo",run:()=>c("undo")},{label:"Redo",run:()=>c("redo")},{label:"Cut",run:()=>c("cut")},{label:"Copy",run:u},{label:"Paste",run:()=>c("paste")},{label:"Select All",run:f},{label:"Clear",run:h}]}],k=[{icon:"+",title:"New",run:h},{icon:"📂",title:"Open",run:()=>{var m;return(m=s.current)==null?void 0:m.click()}},{icon:"💾",title:"Save .py",run:p},{icon:"↶",title:"Undo",run:()=>c("undo")},{icon:"↷",title:"Redo",run:()=>c("redo")},{icon:"✂",title:"Cut",run:()=>c("cut")},{icon:"⧉",title:"Copy",run:u},{icon:"📋",title:"Paste",run:()=>c("paste")},{icon:"▦",title:"Select All",run:f}];return d.jsxs("div",{className:"code-editor",children:[d.jsx("div",{className:"code-menubar",children:x.map(m=>d.jsxs("div",{className:`code-menu-item ${i===m.label?"active":""}`,onClick:()=>l(i===m.label?null:m.label),children:[m.label,i===m.label&&d.jsx("div",{className:"code-menu-dropdown",onClick:v=>v.stopPropagation(),children:m.items.map((v,g)=>d.jsx("div",{className:"code-menu-entry",onClick:()=>{v.run(),l(null)},children:v.label},g))})]},m.label))}),d.jsx("div",{className:"code-toolbar",children:k.map((m,v)=>d.jsx("button",{className:"panel-btn",title:m.title,onClick:m.run,children:m.icon},v))}),d.jsx("textarea",{ref:o,className:"code-editor-area",value:e,onChange:m=>t(m.target.value),placeholder:"// Right-click a .riko file → Preview PyTorch Code, or File → Generate from Graph.",spellCheck:!1}),d.jsx("input",{ref:s,type:"file",accept:".py,.txt,.riko,.ric,text/plain,text/x-python",style:{display:"none"},onChange:y})]})}function x2(){const e=M.useRef(null),t=M.useRef(!1),n=B(f=>f.addNode),r=B(f=>f.updateParam),o=B(f=>f.pushToast);M.useEffect(()=>{const f=e.current;if(!f)return;const p=f.getContext("2d");p&&(p.fillStyle="#fff",p.fillRect(0,0,f.width,f.height),p.lineWidth=12,p.lineCap="round",p.lineJoin="round",p.strokeStyle="#000")},[]);const s=f=>{const h=e.current.getBoundingClientRect();return{x:f.clientX-h.left,y:f.clientY-h.top}},i=f=>{t.current=!0;const h=e.current.getContext("2d"),{x:y,y:x}=s(f);h.beginPath(),h.moveTo(y,x),h.lineTo(y,x),h.stroke()},l=f=>{if(!t.current)return;const h=e.current.getContext("2d"),{x:y,y:x}=s(f);h.lineTo(y,x),h.stroke()},a=()=>{t.current=!1},c=()=>{const f=e.current,p=f.getContext("2d");p.fillStyle="#fff",p.fillRect(0,0,f.width,f.height)},u=()=>{const f=e.current,p=document.createElement("canvas");p.width=28,p.height=28;const h=p.getContext("2d");h.drawImage(f,0,0,28,28);const y=h.getImageData(0,0,28,28).data,x=[];for(let g=0;g<28*28;g++){const w=1-(y[g*4]+y[g*4+1]+y[g*4+2])/765;x.push(Math.round(w*1e3)/1e3)}const k=[];for(let g=0;g<28;g++)k.push(x.slice(g*28,g*28+28));const m=[[k]];n("constant",{x:260,y:150});const v=B.getState().selectedNodeId;v&&(r(v,"value",m),o("success","Digit → constant node (1×28×28)"))};return d.jsxs("div",{className:"handpad",children:[d.jsxs("div",{className:"panel-head",children:[d.jsx("span",{className:"panel-head-title",children:"Handwriting Pad"}),d.jsx("span",{className:"spacer"}),d.jsx("button",{className:"panel-btn",onClick:c,children:"Clear"}),d.jsx("button",{className:"panel-btn",onClick:u,children:"Send → Node"})]}),d.jsx("div",{className:"handpad-canvas",children:d.jsx("canvas",{ref:e,width:280,height:280,onMouseDown:i,onMouseMove:l,onMouseUp:a,onMouseLeave:a})}),d.jsxs("div",{className:"handpad-hint",children:["Draw a digit → Send creates a ",d.jsx("code",{children:"constant"})," node (1×28×28) to feed the MNIST example."]})]})}const Cu=[{value:"canvas",label:"Graph",category:"Editor"},{value:"inspector",label:"Inspector",category:"Editor"},{value:"status",label:"Status / Logs",category:"Editor"},{value:"loss",label:"Loss Curve",category:"Editor"},{value:"nodes",label:"Scene",category:"Data"},{value:"files",label:"Asset Library",category:"Data"},{value:"project",label:"New File",category:"Data"},{value:"code",label:"Code Editor",category:"Tools"},{value:"pad",label:"Handwriting Pad",category:"Tools"},{value:"docs",label:"Documentation",category:"Tools"},{value:"plugins",label:"Plugins",category:"Tools"},{value:"shader",label:"Node Editor",category:"Editor"},{value:"timeline",label:"Timeline",category:"Editor"}],w2=["Editor","Data","Tools"];let S2=new Set(Cu.map(e=>e.value));function k2(e){var t;return((t=Cu.find(n=>n.value===e))==null?void 0:t.label)??e}const _2={nodes:()=>d.jsx(GC,{}),files:()=>d.jsx(QC,{}),project:()=>d.jsx(y2,{}),canvas:()=>d.jsx(r2,{}),inspector:()=>d.jsx(s2,{}),status:()=>d.jsx(c2,{}),loss:()=>d.jsx(u2,{}),docs:()=>d.jsx(g2,{}),plugins:()=>d.jsx(jy,{}),code:()=>d.jsx(v2,{}),pad:()=>d.jsx(x2,{}),shader:()=>null,timeline:()=>null};function N2(e){const t=_2[e];return t?t():null}function E2({type:e,onType:t}){const[n,r]=M.useState(!1),[o,s]=M.useState(null),i=M.useRef(null),l=()=>{if(!n&&i.current){const a=i.current.getBoundingClientRect();s({top:a.bottom+4,left:a.right-300})}r(a=>!a)};return d.jsxs("div",{className:"type-dropdown",children:[d.jsxs("button",{ref:i,className:"panel-btn",title:"Switch window type",onClick:l,children:[k2(e)," ▾"]}),n&&Xi.createPortal(d.jsxs(d.Fragment,{children:[d.jsx("div",{className:"type-menu-overlay",onClick:()=>r(!1)}),d.jsx("div",{className:"type-menu",style:o?{position:"fixed",top:o.top,left:o.left}:void 0,children:w2.map(a=>d.jsxs("div",{className:"type-menu-col",children:[d.jsx("div",{className:"type-menu-cat",children:a}),Cu.filter(c=>c.category===a&&S2.has(c.value)).map(c=>d.jsx("div",{className:`type-menu-item ${c.value===e?"active":""}`,onClick:()=>{t(c.value),r(!1)},children:c.label},c.value))]},a))})]}),document.body)]})}function op(e,t){return Math.abs(e)<14&&Math.abs(t)<14?null:Math.abs(e)>Math.abs(t)?e<0?"split-row":"merge":t<0?"split-column":"merge"}function C2({onPreview:e,onCommit:t}){const n=M.useRef(null),r=o=>{o.preventDefault(),o.stopPropagation();const s=o.currentTarget.parentElement,i=(s==null?void 0:s.getBoundingClientRect())??null;n.current={x:o.clientX,y:o.clientY};const l=c=>{if(!n.current)return;const u=c.clientX-n.current.x,f=c.clientY-n.current.y,p=op(u,f);e(p?{mode:p,x:c.clientX-((i==null?void 0:i.left)??0),y:c.clientY-((i==null?void 0:i.top)??0)}:null)},a=c=>{if(!n.current)return;const u=c.clientX-n.current.x,f=c.clientY-n.current.y;n.current=null,document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",a),document.body.style.cursor="";const p=op(u,f);e(null),p&&t(p)};document.body.style.cursor="crosshair",document.addEventListener("mousemove",l),document.addEventListener("mouseup",a)};return d.jsx("div",{className:"corner-grip",title:"拖左上:分离面板 · 拖右下:合并面板",onMouseDown:r})}function j2({id:e,type:t,onType:n,onSplitRow:r,onSplitColumn:o,onMerge:s,onClose:i,canMerge:l,mergeTarget:a,preview:c,onPreview:u}){return d.jsxs("div",{className:`panel-slot ${a?"merge-target":""}`,children:[d.jsxs("div",{className:"panel-bar",children:[d.jsx("div",{className:"panel-bar-spacer"}),d.jsx(E2,{type:t,onType:n}),l&&d.jsx("button",{className:"panel-btn",title:"Close / merge panel away",onClick:i,children:"✕"})]}),d.jsx("div",{className:"panel-body",children:N2(t)}),c&&c.mode==="split-row"&&d.jsxs(d.Fragment,{children:[d.jsx("div",{className:"split-preview",style:{left:0,top:0,bottom:0,width:Math.max(0,c.x-4)}}),d.jsx("div",{className:"split-preview",style:{left:c.x+4,top:0,bottom:0,right:0}})]}),c&&c.mode==="split-column"&&d.jsxs(d.Fragment,{children:[d.jsx("div",{className:"split-preview",style:{left:0,right:0,top:0,height:Math.max(0,c.y-4)}}),d.jsx("div",{className:"split-preview",style:{left:0,right:0,top:c.y+4,bottom:0}})]}),d.jsx(C2,{onPreview:u,onCommit:f=>f==="split-row"?r():f==="split-column"?o():s()})]})}function b2({onClose:e}){const t=B(h=>h.recentFiles),n=B(h=>h.openFile),r=B(h=>h.newBlank),o=B(h=>h.load),s=B(h=>h.pushToast),[i,l]=M.useState([]),a=M.useRef(null);M.useEffect(()=>{fetch("/api/files").then(h=>h.json()).then(h=>{Array.isArray(h.files)&&l(h.files.filter(y=>y.path.startsWith("examples")).sort((y,x)=>y.name.localeCompare(x.name)))}).catch(()=>{})},[]);const c=h=>{var y;return((y=h.split("/").pop())==null?void 0:y.replace(/\.riko$/,""))??h},u=h=>{h(),e()},f=()=>{const h=t[0];h?u(()=>n(h)):s("error","No previous session to recover")},p=h=>{var x;const y=(x=h.target.files)==null?void 0:x[0];h.target.value="",y&&(o(y),e())};return d.jsx("div",{className:"welcome-overlay",children:d.jsxs("div",{className:"welcome",children:[d.jsxs("div",{className:"welcome-hero",children:[d.jsx(cl,{className:"welcome-logo",title:"Logo slot — replace public/brand/logo.png (bitmap) or logo.svg (vector)"}),d.jsxs("span",{className:"welcome-version",children:["v",Zo]})]}),d.jsxs("div",{className:"welcome-header",children:[d.jsx("span",{className:"welcome-title",children:"Entropia Riko"}),d.jsx("button",{className:"panel-btn",title:"Close",onClick:e,children:"✕"})]}),d.jsxs("div",{className:"welcome-body",children:[d.jsxs("div",{className:"welcome-col",children:[d.jsx("div",{className:"welcome-col-title",children:"New File"}),d.jsxs("button",{className:"welcome-item welcome-blank",onClick:()=>u(r),children:[d.jsx("span",{className:"welcome-item-icon",children:"⬚"}),d.jsx("span",{children:"General"}),d.jsx("span",{className:"welcome-item-hint",children:"blank graph"})]}),d.jsx("div",{className:"welcome-section-label",children:"Presets"}),d.jsxs("div",{className:"welcome-scroll",children:[i.length===0&&d.jsx("div",{className:"welcome-empty",children:"No presets (start the API server)"}),i.map(h=>d.jsxs("div",{className:"welcome-item",onClick:()=>u(()=>n(h.path)),children:[d.jsx("span",{className:"welcome-item-icon",children:"▦"}),d.jsx("span",{children:h.name}),d.jsx("span",{className:"welcome-item-hint",children:h.imports.length?`imports ${h.imports.length}`:""})]},h.path))]})]}),d.jsxs("div",{className:"welcome-col",children:[d.jsx("div",{className:"welcome-col-title",children:"Recent Files"}),d.jsx("div",{className:"welcome-scroll",children:t.length===0?d.jsx("div",{className:"welcome-empty",children:"No recent files yet"}):t.map(h=>d.jsxs("div",{className:"welcome-item",onClick:()=>u(()=>n(h)),children:[d.jsx("span",{className:"welcome-item-icon",children:"▤"}),d.jsx("span",{children:c(h)}),d.jsx("span",{className:"welcome-item-hint",children:h})]},h))})]})]}),d.jsxs("div",{className:"welcome-footer",children:[d.jsx("button",{className:"welcome-footer-btn",onClick:f,children:"↩ Recover Last Session"}),d.jsx("button",{className:"welcome-footer-btn",onClick:()=>{var h;return(h=a.current)==null?void 0:h.click()},children:"📂 Open"}),d.jsx("input",{ref:a,type:"file",accept:".riko,.ric,.json,application/json,application/octet-stream",style:{display:"none"},onChange:p})]})]})})}const P2=[{id:"appearance",label:"Appearance",icon:"◧"},{id:"plugins",label:"Plugins",icon:"⬡"},{id:"about",label:"About",icon:"ⓘ"}];function T2({onClose:e}){const t=cn(u=>u.theme),n=cn(u=>u.setTheme),r=cn(u=>u.backgroundImage),o=cn(u=>u.setBackgroundImage),[s,i]=M.useState("appearance"),[l,a]=M.useState(r);M.useEffect(()=>{a(r)},[r]);const c=[{value:"light",label:"Light",hint:"Always use the light palette"},{value:"dark",label:"Dark",hint:"Always use the dark palette"},{value:"system",label:"System",hint:"Follow the OS color scheme"},{value:"glass",label:"Liquid Glass",hint:"Apple-style translucent glass"}];return d.jsx(al,{title:"Preferences",onClose:e,width:720,zIndex:1001,children:d.jsxs("div",{className:"prefs-layout",children:[d.jsx("nav",{className:"prefs-sidebar",children:P2.map(u=>d.jsxs("button",{className:`prefs-nav ${s===u.id?"active":""}`,onClick:()=>i(u.id),children:[d.jsx("span",{className:"prefs-nav-icon",children:u.icon}),u.label]},u.id))}),d.jsxs("div",{className:"prefs-content",children:[s==="appearance"&&d.jsxs(d.Fragment,{children:[d.jsxs("section",{className:"prefs-section",children:[d.jsx("h3",{children:"Theme"}),d.jsx("p",{className:"prefs-desc",children:"Choose how the interface looks."}),d.jsx("div",{className:"prefs-theme-list",children:c.map(u=>d.jsxs("label",{className:`prefs-theme ${t===u.value?"active":""}`,children:[d.jsx("input",{type:"radio",name:"theme",checked:t===u.value,onChange:()=>n(u.value)}),d.jsx("span",{className:"prefs-theme-swatch","data-theme":u.value}),d.jsx("span",{className:"prefs-theme-label",children:u.label}),d.jsx("span",{className:"prefs-theme-hint",children:u.hint})]},u.value))})]}),d.jsxs("section",{className:"prefs-section",children:[d.jsx("h3",{children:"Background image"}),d.jsx("p",{className:"prefs-desc",children:"A cover image behind the editor. URL is saved locally."}),d.jsxs("div",{className:"prefs-row",children:[d.jsx("input",{className:"prefs-input",placeholder:"Image URL (https://…)",value:l,onChange:u=>a(u.target.value),onKeyDown:u=>{u.key==="Enter"&&o(l.trim())}}),d.jsx("button",{className:"btn btn-sm",onClick:()=>o(l.trim()),children:"Apply"}),d.jsx("button",{className:"btn btn-sm",onClick:()=>{a(""),o("")},children:"Clear"})]})]})]}),s==="plugins"&&d.jsx("section",{className:"prefs-section",style:{marginBottom:0},children:d.jsx(jy,{})}),s==="about"&&d.jsx("section",{className:"prefs-section",children:d.jsxs("div",{className:"prefs-about",children:[d.jsx(cl,{className:"prefs-about-logo"}),d.jsx("h3",{children:"Entropia Riko"}),d.jsxs("div",{className:"prefs-about-version",children:["Version ",Zo]}),d.jsx("p",{className:"prefs-desc",children:"A professional node-graph deep-learning editor. Build models visually, run inference, train with live loss curves, and export to clean PyTorch or TensorFlow/Keras code."}),d.jsxs("div",{className:"prefs-about-meta",children:[d.jsx("span",{children:"Backends: PyTorch · TensorFlow/Keras"}),d.jsx("span",{children:"Brand assets: public/brand/"})]})]})})]})]})})}function M2({onClose:e}){return d.jsxs(al,{title:"About Entropia Riko",onClose:e,width:440,children:[d.jsxs("div",{className:"about-hero",children:[d.jsx(cl,{className:"about-logo"}),d.jsx("h2",{children:"Entropia Riko"}),d.jsxs("div",{className:"about-version",children:["Version ",Zo]})]}),d.jsxs("div",{className:"about-body",children:[d.jsx("p",{className:"prefs-desc",children:"A professional node-graph deep-learning editor. Build models visually, run inference, train with a live loss curve, and export to clean PyTorch or TensorFlow/Keras code."}),d.jsx("table",{className:"about-meta",children:d.jsxs("tbody",{children:[d.jsxs("tr",{children:[d.jsx("td",{children:"Backends"}),d.jsx("td",{children:"PyTorch · TensorFlow / Keras"})]}),d.jsxs("tr",{children:[d.jsx("td",{children:"File formats"}),d.jsx("td",{children:".riko (JSON) · .ric (binary zlib)"})]}),d.jsxs("tr",{children:[d.jsx("td",{children:"Plugins"}),d.jsx("td",{children:"plugins/*/plugin.json (Python node modules)"})]}),d.jsxs("tr",{children:[d.jsx("td",{children:"License"}),d.jsx("td",{children:"MIT"})]})]})}),d.jsxs("div",{className:"about-assets",children:[d.jsx("span",{children:"Brand assets (replace in place):"}),d.jsx("code",{children:"public/brand/logo.svg"}),d.jsx("code",{children:"public/brand/hero.jpg"})]})]})]})}function I2({onClose:e}){const[t,n]=M.useState(""),[r,o]=M.useState(!1),s=B(l=>l.pushToast),i=async()=>{const l=t.trim();if(l){o(!0);try{const c=await(await fetch("/api/project/set_root",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:l})})).json();c.status==="success"?(B.getState().bumpProject(),s("success",`Working folder: ${c.root}`),e()):s("error",c.error??"import failed")}catch(a){s("error",a instanceof Error?a.message:String(a))}finally{o(!1)}}};return d.jsx(al,{title:"Import Working Folder",onClose:e,width:480,children:d.jsxs("div",{className:"import-folder-body",children:[d.jsxs("p",{className:"prefs-desc",children:["Point the file manager at a local folder. A ",d.jsx("code",{children:".riko"})," cache folder is created inside it for the tool's own state."]}),d.jsx("input",{autoFocus:!0,className:"prefs-input",placeholder:"Absolute path, e.g. /Users/me/project",value:t,onChange:l=>n(l.target.value),onKeyDown:l=>{l.key==="Enter"&&i(),l.key==="Escape"&&e()}}),d.jsxs("div",{className:"prefs-row",style:{marginTop:12},children:[d.jsx("button",{className:"btn btn-primary",disabled:r||!t.trim(),onClick:i,children:"Import"}),d.jsx("button",{className:"btn",onClick:e,children:"Cancel"})]})]})})}function $2(){const e=B(n=>n.toasts),t=B(n=>n.dismissToast);return d.jsx("div",{className:"toast-stack",children:e.map(n=>d.jsxs("div",{className:`toast ${n.kind}`,children:[d.jsx("span",{className:"toast-msg",children:n.message}),d.jsx("button",{className:"toast-close",title:"Dismiss",onClick:()=>t(n.id),children:"✕"})]},n.id))})}let L2=0;const ql=()=>`ws_${++L2}`,sp=[{preset:"layout",graph:"examples/models/mnist.riko"},{preset:"train",graph:"examples/models/mnist_cnn.riko"},{preset:"eval",graph:"examples/models/mnist_infer.riko"},{preset:"config",graph:"examples/models/mnist.riko"},{preset:"utils",graph:"examples/models/mnist.riko"},{preset:"models",graph:"examples/models/mnist.riko"},{preset:"datasets",graph:"examples/models/mnist.riko"}];function R2(){var S;const e=B(C=>C.loadNodeDefs),t=B(C=>C.openFile),n=B(C=>C.welcomeOpen),r=B(C=>C.setWelcomeOpen),o=B(C=>C.prefsOpen),s=B(C=>C.setPrefsOpen),i=B(C=>C.aboutOpen),l=B(C=>C.setAboutOpen),a=B(C=>C.importFolderOpen),c=B(C=>C.setImportFolderOpen);M.useEffect(()=>{(async()=>(await e(),await t(sp[0].graph)))()},[e,t]);const[u,f]=M.useState(()=>sp.map(C=>{const T=ic.find(P=>P.id===C.preset);return{id:ql(),name:T.label,root:T.build(),graph:C.graph}})),[p,h]=M.useState(null),[y,x]=M.useState(null),k=p??((S=u[0])==null?void 0:S.id)??"",v=(u.find(C=>C.id===k)??u[0]).root,g=dc(v)>1,w=C=>{f(T=>T.map(P=>P.id===k?{...P,root:C(P.root)}:P))},j=C=>{h(C);const T=u.find(P=>P.id===C);T!=null&&T.graph&&!B.getState().dirty&&t(T.graph)},_=C=>{const T=ic.find(b=>b.id===C);if(!T)return;const P={id:ql(),name:T.label,root:T.build()};f(b=>[...b,P]),h(P.id)},E=C=>{f(T=>{if(T.length<=1)return T;const P=T.filter(b=>b.id!==C);return C===k&&h(P[0].id),P})},N=(C,T)=>{f(P=>P.map(b=>b.id===C?{...b,name:T}:b))},$=C=>{const T=u.find(R=>R.id===C);if(!T)return;const P={id:ql(),name:`${T.name} copy`,root:JSON.parse(JSON.stringify(T.root))},b=u.findIndex(R=>R.id===C),I=[...u];I.splice(b+1,0,P),f(I),h(P.id)},A=(C,T)=>{f(P=>{const b=P.findIndex(D=>D.id===C),I=b+T;if(b<0||I<0||I>=P.length)return P;const R=[...P],[z]=R.splice(b,1);return R.splice(I,0,z),R})},L=(C,T)=>{f(P=>{const b=P.findIndex(D=>D.id===C),I=P.findIndex(D=>D.id===T);if(b<0||I<0||b===I)return P;const R=[...P],[z]=R.splice(b,1);return R.splice(I,0,z),R})},O=(y==null?void 0:y.mode)==="merge"?cc(v,y.leafId):null,F=C=>{if(C.kind==="leaf"){const T=y&&y.leafId===C.id&&y.mode!=="merge"?y:null;return d.jsx(j2,{id:C.id,type:C.type,canMerge:g,mergeTarget:C.id===O,preview:T,onType:P=>w(b=>uc(b,C.id,P)),onSplitRow:()=>w(P=>bi(P,C.id,"row")),onSplitColumn:()=>w(P=>bi(P,C.id,"column")),onMerge:()=>w(P=>ac(P,C.id)),onClose:()=>w(P=>lc(P,C.id)),onPreview:P=>x(P?{...P,leafId:C.id}:null)},C.id)}return C.direction==="row"?d.jsxs("div",{className:C.id===O?"merge-target":void 0,style:{display:"flex",flex:"1 1 0",minWidth:0,minHeight:0},children:[d.jsx("div",{style:{flex:C.ratio,minWidth:0,minHeight:0,display:"flex"},children:F(C.first)}),d.jsx(YC,{onDrag:(T,P)=>w(b=>Pi(b,C.id,T/P))}),d.jsx("div",{style:{flex:1-C.ratio,minWidth:0,minHeight:0,display:"flex"},children:F(C.second)})]},C.id):d.jsxs("div",{className:C.id===O?"merge-target":void 0,style:{display:"flex",flexDirection:"column",flex:"1 1 0",minWidth:0,minHeight:0},children:[d.jsx("div",{style:{flex:C.ratio,minWidth:0,minHeight:0,display:"flex"},children:F(C.first)}),d.jsx(XC,{onDrag:(T,P)=>w(b=>Pi(b,C.id,T/P))}),d.jsx("div",{style:{flex:1-C.ratio,minWidth:0,minHeight:0,display:"flex"},children:F(C.second)})]},C.id)};return d.jsxs("div",{className:"app",children:[d.jsx(UC,{}),d.jsx(WC,{workspaces:u,activeWorkspaceId:k,onSwitchWorkspace:j,onAddWorkspace:_,onRemoveWorkspace:E,onRenameWorkspace:N,onDuplicateWorkspace:$,onMoveWorkspace:A,onReorderWorkspace:L}),d.jsx("div",{className:"app-body",children:F(v)}),n&&d.jsx(b2,{onClose:()=>r(!1)}),o&&d.jsx(T2,{onClose:()=>s(!1)}),i&&d.jsx(M2,{onClose:()=>l(!1)}),a&&d.jsx(I2,{onClose:()=>c(!1)}),d.jsx(VC,{}),d.jsx($2,{})]})}Jl.createRoot(document.getElementById("root")).render(d.jsx(yc.StrictMode,{children:d.jsx(R2,{})}));