@grackle-ai/web 0.88.0 → 0.89.1

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.
@@ -1,503 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/KnowledgePage-D40LOPEE.js","assets/dagview-CzJGOIoX.js","assets/grpc-BgRV4tIv.js","assets/markdown-DH3wQq0i.js","assets/KnowledgePage-DMqJ4jlP.css"])))=>i.map(i=>d[i]);
2
- import{r as WS,a as XS,b as y,j as l,d as t0,H as n0,P as s0,i as QS,B as eT,c as tT,C as nT,M as sT}from"./dagview-CzJGOIoX.js";import{c as aT,a as iT,G as oT,f as rT,M as lT,A as lb,D as cb,W as cT,O as uT,b as dT,C as Dc,d as fT,e as ub,w as pT,t as mT,p as Xl,g as hT,R as ar,S as a0}from"./grpc-BgRV4tIv.js";import{v as gT,r as vT,t as Ql,i as yT,f as bT,M as fp,a as pp}from"./markdown-DH3wQq0i.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))o(c);new MutationObserver(c=>{for(const u of c)if(u.type==="childList")for(const d of u.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&o(d)}).observe(document,{childList:!0,subtree:!0});function i(c){const u={};return c.integrity&&(u.integrity=c.integrity),c.referrerPolicy&&(u.referrerPolicy=c.referrerPolicy),c.crossOrigin==="use-credentials"?u.credentials="include":c.crossOrigin==="anonymous"?u.credentials="omit":u.credentials="same-origin",u}function o(c){if(c.ep)return;c.ep=!0;const u=i(c);fetch(c.href,u)}})();var ef={exports:{}},ir={},tf={exports:{}},nf={};/**
3
- * @license React
4
- * scheduler.production.js
5
- *
6
- * Copyright (c) Meta Platforms, Inc. and affiliates.
7
- *
8
- * This source code is licensed under the MIT license found in the
9
- * LICENSE file in the root directory of this source tree.
10
- */var i0;function _T(){return i0||(i0=1,(function(n){function s(B,q){var te=B.length;B.push(q);e:for(;0<te;){var re=te-1>>>1,de=B[re];if(0<c(de,q))B[re]=q,B[te]=de,te=re;else break e}}function i(B){return B.length===0?null:B[0]}function o(B){if(B.length===0)return null;var q=B[0],te=B.pop();if(te!==q){B[0]=te;e:for(var re=0,de=B.length,$e=de>>>1;re<$e;){var we=2*(re+1)-1,Se=B[we],Oe=we+1,le=B[Oe];if(0>c(Se,te))Oe<de&&0>c(le,Se)?(B[re]=le,B[Oe]=te,re=Oe):(B[re]=Se,B[we]=te,re=we);else if(Oe<de&&0>c(le,te))B[re]=le,B[Oe]=te,re=Oe;else break e}}return q}function c(B,q){var te=B.sortIndex-q.sortIndex;return te!==0?te:B.id-q.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var u=performance;n.unstable_now=function(){return u.now()}}else{var d=Date,m=d.now();n.unstable_now=function(){return d.now()-m}}var h=[],g=[],v=1,b=null,_=3,S=!1,T=!1,N=!1,j=!1,w=typeof setTimeout=="function"?setTimeout:null,C=typeof clearTimeout=="function"?clearTimeout:null,A=typeof setImmediate<"u"?setImmediate:null;function M(B){for(var q=i(g);q!==null;){if(q.callback===null)o(g);else if(q.startTime<=B)o(g),q.sortIndex=q.expirationTime,s(h,q);else break;q=i(g)}}function D(B){if(N=!1,M(B),!T)if(i(h)!==null)T=!0,E||(E=!0,ae());else{var q=i(g);q!==null&&X(D,q.startTime-B)}}var E=!1,H=-1,z=5,Z=-1;function F(){return j?!0:!(n.unstable_now()-Z<z)}function Q(){if(j=!1,E){var B=n.unstable_now();Z=B;var q=!0;try{e:{T=!1,N&&(N=!1,C(H),H=-1),S=!0;var te=_;try{t:{for(M(B),b=i(h);b!==null&&!(b.expirationTime>B&&F());){var re=b.callback;if(typeof re=="function"){b.callback=null,_=b.priorityLevel;var de=re(b.expirationTime<=B);if(B=n.unstable_now(),typeof de=="function"){b.callback=de,M(B),q=!0;break t}b===i(h)&&o(h),M(B)}else o(h);b=i(h)}if(b!==null)q=!0;else{var $e=i(g);$e!==null&&X(D,$e.startTime-B),q=!1}}break e}finally{b=null,_=te,S=!1}q=void 0}}finally{q?ae():E=!1}}}var ae;if(typeof A=="function")ae=function(){A(Q)};else if(typeof MessageChannel<"u"){var pe=new MessageChannel,oe=pe.port2;pe.port1.onmessage=Q,ae=function(){oe.postMessage(null)}}else ae=function(){w(Q,0)};function X(B,q){H=w(function(){B(n.unstable_now())},q)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(B){B.callback=null},n.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"):z=0<B?Math.floor(1e3/B):5},n.unstable_getCurrentPriorityLevel=function(){return _},n.unstable_next=function(B){switch(_){case 1:case 2:case 3:var q=3;break;default:q=_}var te=_;_=q;try{return B()}finally{_=te}},n.unstable_requestPaint=function(){j=!0},n.unstable_runWithPriority=function(B,q){switch(B){case 1:case 2:case 3:case 4:case 5:break;default:B=3}var te=_;_=B;try{return q()}finally{_=te}},n.unstable_scheduleCallback=function(B,q,te){var re=n.unstable_now();switch(typeof te=="object"&&te!==null?(te=te.delay,te=typeof te=="number"&&0<te?re+te:re):te=re,B){case 1:var de=-1;break;case 2:de=250;break;case 5:de=1073741823;break;case 4:de=1e4;break;default:de=5e3}return de=te+de,B={id:v++,callback:q,priorityLevel:B,startTime:te,expirationTime:de,sortIndex:-1},te>re?(B.sortIndex=te,s(g,B),i(h)===null&&B===i(g)&&(N?(C(H),H=-1):N=!0,X(D,te-re))):(B.sortIndex=de,s(h,B),T||S||(T=!0,E||(E=!0,ae()))),B},n.unstable_shouldYield=F,n.unstable_wrapCallback=function(B){var q=_;return function(){var te=_;_=q;try{return B.apply(this,arguments)}finally{_=te}}}})(nf)),nf}var o0;function xT(){return o0||(o0=1,tf.exports=_T()),tf.exports}/**
11
- * @license React
12
- * react-dom-client.production.js
13
- *
14
- * Copyright (c) Meta Platforms, Inc. and affiliates.
15
- *
16
- * This source code is licensed under the MIT license found in the
17
- * LICENSE file in the root directory of this source tree.
18
- */var r0;function ST(){if(r0)return ir;r0=1;var n=xT(),s=WS(),i=XS();function o(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var a=2;a<arguments.length;a++)t+="&args[]="+encodeURIComponent(arguments[a])}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."}function c(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function u(e){var t=e,a=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,(t.flags&4098)!==0&&(a=t.return),e=t.return;while(e)}return t.tag===3?a:null}function d(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 m(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function h(e){if(u(e)!==e)throw Error(o(188))}function g(e){var t=e.alternate;if(!t){if(t=u(e),t===null)throw Error(o(188));return t!==e?null:e}for(var a=e,r=t;;){var f=a.return;if(f===null)break;var p=f.alternate;if(p===null){if(r=f.return,r!==null){a=r;continue}break}if(f.child===p.child){for(p=f.child;p;){if(p===a)return h(f),e;if(p===r)return h(f),t;p=p.sibling}throw Error(o(188))}if(a.return!==r.return)a=f,r=p;else{for(var x=!1,k=f.child;k;){if(k===a){x=!0,a=f,r=p;break}if(k===r){x=!0,r=f,a=p;break}k=k.sibling}if(!x){for(k=p.child;k;){if(k===a){x=!0,a=p,r=f;break}if(k===r){x=!0,r=p,a=f;break}k=k.sibling}if(!x)throw Error(o(189))}}if(a.alternate!==r)throw Error(o(190))}if(a.tag!==3)throw Error(o(188));return a.stateNode.current===a?e:t}function v(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=v(e),t!==null)return t;e=e.sibling}return null}var b=Object.assign,_=Symbol.for("react.element"),S=Symbol.for("react.transitional.element"),T=Symbol.for("react.portal"),N=Symbol.for("react.fragment"),j=Symbol.for("react.strict_mode"),w=Symbol.for("react.profiler"),C=Symbol.for("react.consumer"),A=Symbol.for("react.context"),M=Symbol.for("react.forward_ref"),D=Symbol.for("react.suspense"),E=Symbol.for("react.suspense_list"),H=Symbol.for("react.memo"),z=Symbol.for("react.lazy"),Z=Symbol.for("react.activity"),F=Symbol.for("react.memo_cache_sentinel"),Q=Symbol.iterator;function ae(e){return e===null||typeof e!="object"?null:(e=Q&&e[Q]||e["@@iterator"],typeof e=="function"?e:null)}var pe=Symbol.for("react.client.reference");function oe(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===pe?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case N:return"Fragment";case w:return"Profiler";case j:return"StrictMode";case D:return"Suspense";case E:return"SuspenseList";case Z:return"Activity"}if(typeof e=="object")switch(e.$$typeof){case T:return"Portal";case A:return e.displayName||"Context";case C:return(e._context.displayName||"Context")+".Consumer";case M:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case H:return t=e.displayName||null,t!==null?t:oe(e.type)||"Memo";case z:t=e._payload,e=e._init;try{return oe(e(t))}catch{}}return null}var X=Array.isArray,B=s.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,q=i.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,te={pending:!1,data:null,method:null,action:null},re=[],de=-1;function $e(e){return{current:e}}function we(e){0>de||(e.current=re[de],re[de]=null,de--)}function Se(e,t){de++,re[de]=e.current,e.current=t}var Oe=$e(null),le=$e(null),fe=$e(null),me=$e(null);function Ce(e,t){switch(Se(fe,t),Se(le,e),Se(Oe,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?kv(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=kv(t),e=wv(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}we(Oe),Se(Oe,e)}function Lt(){we(Oe),we(le),we(fe)}function St(e){e.memoizedState!==null&&Se(me,e);var t=Oe.current,a=wv(t,e.type);t!==a&&(Se(le,e),Se(Oe,a))}function I(e){le.current===e&&(we(Oe),we(le)),me.current===e&&(we(me),er._currentValue=te)}var je,jt;function Ot(e){if(je===void 0)try{throw Error()}catch(a){var t=a.stack.trim().match(/\n( *(at )?)/);je=t&&t[1]||"",jt=-1<a.stack.indexOf(`
19
- at`)?" (<anonymous>)":-1<a.stack.indexOf("@")?"@unknown:0:0":""}return`
20
- `+je+e+jt}var it=!1;function Jn(e,t){if(!e||it)return"";it=!0;var a=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var r={DetermineComponentFrameRoot:function(){try{if(t){var W=function(){throw Error()};if(Object.defineProperty(W.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(W,[])}catch(K){var $=K}Reflect.construct(e,[],W)}else{try{W.call()}catch(K){$=K}e.call(W.prototype)}}else{try{throw Error()}catch(K){$=K}(W=e())&&typeof W.catch=="function"&&W.catch(function(){})}}catch(K){if(K&&$&&typeof K.stack=="string")return[K.stack,$.stack]}return[null,null]}};r.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var f=Object.getOwnPropertyDescriptor(r.DetermineComponentFrameRoot,"name");f&&f.configurable&&Object.defineProperty(r.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var p=r.DetermineComponentFrameRoot(),x=p[0],k=p[1];if(x&&k){var R=x.split(`
21
- `),V=k.split(`
22
- `);for(f=r=0;r<R.length&&!R[r].includes("DetermineComponentFrameRoot");)r++;for(;f<V.length&&!V[f].includes("DetermineComponentFrameRoot");)f++;if(r===R.length||f===V.length)for(r=R.length-1,f=V.length-1;1<=r&&0<=f&&R[r]!==V[f];)f--;for(;1<=r&&0<=f;r--,f--)if(R[r]!==V[f]){if(r!==1||f!==1)do if(r--,f--,0>f||R[r]!==V[f]){var Y=`
23
- `+R[r].replace(" at new "," at ");return e.displayName&&Y.includes("<anonymous>")&&(Y=Y.replace("<anonymous>",e.displayName)),Y}while(1<=r&&0<=f);break}}}finally{it=!1,Error.prepareStackTrace=a}return(a=e?e.displayName||e.name:"")?Ot(a):""}function Ls(e,t){switch(e.tag){case 26:case 27:case 5:return Ot(e.type);case 16:return Ot("Lazy");case 13:return e.child!==t&&t!==null?Ot("Suspense Fallback"):Ot("Suspense");case 19:return Ot("SuspenseList");case 0:case 15:return Jn(e.type,!1);case 11:return Jn(e.type.render,!1);case 1:return Jn(e.type,!0);case 31:return Ot("Activity");default:return""}}function Sn(e){try{var t="",a=null;do t+=Ls(e,a),a=e,e=e.return;while(e);return t}catch(r){return`
24
- Error generating stack: `+r.message+`
25
- `+r.stack}}var zn=Object.prototype.hasOwnProperty,Wn=n.unstable_scheduleCallback,Us=n.unstable_cancelCallback,Pn=n.unstable_shouldYield,De=n.unstable_requestPaint,Je=n.unstable_now,uo=n.unstable_getCurrentPriorityLevel,fo=n.unstable_ImmediatePriority,po=n.unstable_UserBlockingPriority,Ta=n.unstable_NormalPriority,Br=n.unstable_LowPriority,mo=n.unstable_IdlePriority,Lr=n.log,Ur=n.unstable_setDisableYieldValue,zs=null,Yt=null;function Vn(e){if(typeof Lr=="function"&&Ur(e),Yt&&typeof Yt.setStrictMode=="function")try{Yt.setStrictMode(zs,e)}catch{}}var Jt=Math.clz32?Math.clz32:G,zr=Math.log,$c=Math.LN2;function G(e){return e>>>=0,e===0?32:31-(zr(e)/$c|0)|0}var ee=256,ie=262144,ce=4194304;function ue(e){var t=e&42;if(t!==0)return t;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:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function ze(e,t,a){var r=e.pendingLanes;if(r===0)return 0;var f=0,p=e.suspendedLanes,x=e.pingedLanes;e=e.warmLanes;var k=r&134217727;return k!==0?(r=k&~p,r!==0?f=ue(r):(x&=k,x!==0?f=ue(x):a||(a=k&~e,a!==0&&(f=ue(a))))):(k=r&~p,k!==0?f=ue(k):x!==0?f=ue(x):a||(a=r&~e,a!==0&&(f=ue(a)))),f===0?0:t!==0&&t!==f&&(t&p)===0&&(p=f&-f,a=t&-t,p>=a||p===32&&(a&4194048)!==0)?t:f}function ye(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Re(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32: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:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function qe(){var e=ce;return ce<<=1,(ce&62914560)===0&&(ce=4194304),e}function tt(e){for(var t=[],a=0;31>a;a++)t.push(e);return t}function Pe(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Pt(e,t,a,r,f,p){var x=e.pendingLanes;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=a,e.entangledLanes&=a,e.errorRecoveryDisabledLanes&=a,e.shellSuspendCounter=0;var k=e.entanglements,R=e.expirationTimes,V=e.hiddenUpdates;for(a=x&~a;0<a;){var Y=31-Jt(a),W=1<<Y;k[Y]=0,R[Y]=-1;var $=V[Y];if($!==null)for(V[Y]=null,Y=0;Y<$.length;Y++){var K=$[Y];K!==null&&(K.lane&=-536870913)}a&=~W}r!==0&&Vt(e,r,0),p!==0&&f===0&&e.tag!==0&&(e.suspendedLanes|=p&~(x&~t))}function Vt(e,t,a){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-Jt(t);e.entangledLanes|=t,e.entanglements[r]=e.entanglements[r]|1073741824|a&261930}function Tt(e,t){var a=e.entangledLanes|=t;for(e=e.entanglements;a;){var r=31-Jt(a),f=1<<r;f&t|e[r]&t&&(e[r]|=t),a&=~f}}function cs(e,t){var a=t&-t;return a=(a&42)!==0?1:Hn(a),(a&(e.suspendedLanes|t))!==0?0:a}function Hn(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;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:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function ka(e){return e&=-e,2<e?8<e?(e&134217727)!==0?32:268435456:8:2}function cm(){var e=q.p;return e!==0?e:(e=window.event,e===void 0?32:Kv(e.type))}function um(e,t){var a=q.p;try{return q.p=e,t()}finally{q.p=a}}var Ps=Math.random().toString(36).slice(2),Ht="__reactFiber$"+Ps,nn="__reactProps$"+Ps,ii="__reactContainer$"+Ps,qc="__reactEvents$"+Ps,Px="__reactListeners$"+Ps,Vx="__reactHandles$"+Ps,dm="__reactResources$"+Ps,ho="__reactMarker$"+Ps;function Fc(e){delete e[Ht],delete e[nn],delete e[qc],delete e[Px],delete e[Vx]}function oi(e){var t=e[Ht];if(t)return t;for(var a=e.parentNode;a;){if(t=a[ii]||a[Ht]){if(a=t.alternate,t.child!==null||a!==null&&a.child!==null)for(e=Rv(e);e!==null;){if(a=e[Ht])return a;e=Rv(e)}return t}e=a,a=e.parentNode}return null}function ri(e){if(e=e[Ht]||e[ii]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function go(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(o(33))}function li(e){var t=e[dm];return t||(t=e[dm]={hoistableStyles:new Map,hoistableScripts:new Map}),t}function Ut(e){e[ho]=!0}var fm=new Set,pm={};function wa(e,t){ci(e,t),ci(e+"Capture",t)}function ci(e,t){for(pm[e]=t,e=0;e<t.length;e++)fm.add(t[e])}var Hx=RegExp("^[: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]*$"),mm={},hm={};function Gx(e){return zn.call(hm,e)?!0:zn.call(mm,e)?!1:Hx.test(e)?hm[e]=!0:(mm[e]=!0,!1)}function Pr(e,t,a){if(Gx(t))if(a===null)e.removeAttribute(t);else{switch(typeof a){case"undefined":case"function":case"symbol":e.removeAttribute(t);return;case"boolean":var r=t.toLowerCase().slice(0,5);if(r!=="data-"&&r!=="aria-"){e.removeAttribute(t);return}}e.setAttribute(t,""+a)}}function Vr(e,t,a){if(a===null)e.removeAttribute(t);else{switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(t);return}e.setAttribute(t,""+a)}}function us(e,t,a,r){if(r===null)e.removeAttribute(a);else{switch(typeof r){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(a);return}e.setAttributeNS(t,a,""+r)}}function Tn(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function gm(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function $x(e,t,a){var r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);if(!e.hasOwnProperty(t)&&typeof r<"u"&&typeof r.get=="function"&&typeof r.set=="function"){var f=r.get,p=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return f.call(this)},set:function(x){a=""+x,p.call(this,x)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return a},setValue:function(x){a=""+x},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Zc(e){if(!e._valueTracker){var t=gm(e)?"checked":"value";e._valueTracker=$x(e,t,""+e[t])}}function vm(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var a=t.getValue(),r="";return e&&(r=gm(e)?e.checked?"true":"false":e.value),e=r,e!==a?(t.setValue(e),!0):!1}function Hr(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}}var qx=/[\n"\\]/g;function kn(e){return e.replace(qx,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Kc(e,t,a,r,f,p,x,k){e.name="",x!=null&&typeof x!="function"&&typeof x!="symbol"&&typeof x!="boolean"?e.type=x:e.removeAttribute("type"),t!=null?x==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+Tn(t)):e.value!==""+Tn(t)&&(e.value=""+Tn(t)):x!=="submit"&&x!=="reset"||e.removeAttribute("value"),t!=null?Yc(e,x,Tn(t)):a!=null?Yc(e,x,Tn(a)):r!=null&&e.removeAttribute("value"),f==null&&p!=null&&(e.defaultChecked=!!p),f!=null&&(e.checked=f&&typeof f!="function"&&typeof f!="symbol"),k!=null&&typeof k!="function"&&typeof k!="symbol"&&typeof k!="boolean"?e.name=""+Tn(k):e.removeAttribute("name")}function ym(e,t,a,r,f,p,x,k){if(p!=null&&typeof p!="function"&&typeof p!="symbol"&&typeof p!="boolean"&&(e.type=p),t!=null||a!=null){if(!(p!=="submit"&&p!=="reset"||t!=null)){Zc(e);return}a=a!=null?""+Tn(a):"",t=t!=null?""+Tn(t):a,k||t===e.value||(e.value=t),e.defaultValue=t}r=r??f,r=typeof r!="function"&&typeof r!="symbol"&&!!r,e.checked=k?e.checked:!!r,e.defaultChecked=!!r,x!=null&&typeof x!="function"&&typeof x!="symbol"&&typeof x!="boolean"&&(e.name=x),Zc(e)}function Yc(e,t,a){t==="number"&&Hr(e.ownerDocument)===e||e.defaultValue===""+a||(e.defaultValue=""+a)}function ui(e,t,a,r){if(e=e.options,t){t={};for(var f=0;f<a.length;f++)t["$"+a[f]]=!0;for(a=0;a<e.length;a++)f=t.hasOwnProperty("$"+e[a].value),e[a].selected!==f&&(e[a].selected=f),f&&r&&(e[a].defaultSelected=!0)}else{for(a=""+Tn(a),t=null,f=0;f<e.length;f++){if(e[f].value===a){e[f].selected=!0,r&&(e[f].defaultSelected=!0);return}t!==null||e[f].disabled||(t=e[f])}t!==null&&(t.selected=!0)}}function bm(e,t,a){if(t!=null&&(t=""+Tn(t),t!==e.value&&(e.value=t),a==null)){e.defaultValue!==t&&(e.defaultValue=t);return}e.defaultValue=a!=null?""+Tn(a):""}function _m(e,t,a,r){if(t==null){if(r!=null){if(a!=null)throw Error(o(92));if(X(r)){if(1<r.length)throw Error(o(93));r=r[0]}a=r}a==null&&(a=""),t=a}a=Tn(t),e.defaultValue=a,r=e.textContent,r===a&&r!==""&&r!==null&&(e.value=r),Zc(e)}function di(e,t){if(t){var a=e.firstChild;if(a&&a===e.lastChild&&a.nodeType===3){a.nodeValue=t;return}}e.textContent=t}var Fx=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function xm(e,t,a){var r=t.indexOf("--")===0;a==null||typeof a=="boolean"||a===""?r?e.setProperty(t,""):t==="float"?e.cssFloat="":e[t]="":r?e.setProperty(t,a):typeof a!="number"||a===0||Fx.has(t)?t==="float"?e.cssFloat=a:e[t]=(""+a).trim():e[t]=a+"px"}function Sm(e,t,a){if(t!=null&&typeof t!="object")throw Error(o(62));if(e=e.style,a!=null){for(var r in a)!a.hasOwnProperty(r)||t!=null&&t.hasOwnProperty(r)||(r.indexOf("--")===0?e.setProperty(r,""):r==="float"?e.cssFloat="":e[r]="");for(var f in t)r=t[f],t.hasOwnProperty(f)&&a[f]!==r&&xm(e,f,r)}else for(var p in t)t.hasOwnProperty(p)&&xm(e,p,t[p])}function Jc(e){if(e.indexOf("-")===-1)return!1;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 Zx=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),Kx=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function Gr(e){return Kx.test(""+e)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":e}function ds(){}var Wc=null;function Xc(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var fi=null,pi=null;function Tm(e){var t=ri(e);if(t&&(e=t.stateNode)){var a=e[nn]||null;e:switch(e=t.stateNode,t.type){case"input":if(Kc(e,a.value,a.defaultValue,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name),t=a.name,a.type==="radio"&&t!=null){for(a=e;a.parentNode;)a=a.parentNode;for(a=a.querySelectorAll('input[name="'+kn(""+t)+'"][type="radio"]'),t=0;t<a.length;t++){var r=a[t];if(r!==e&&r.form===e.form){var f=r[nn]||null;if(!f)throw Error(o(90));Kc(r,f.value,f.defaultValue,f.defaultValue,f.checked,f.defaultChecked,f.type,f.name)}}for(t=0;t<a.length;t++)r=a[t],r.form===e.form&&vm(r)}break e;case"textarea":bm(e,a.value,a.defaultValue);break e;case"select":t=a.value,t!=null&&ui(e,!!a.multiple,t,!1)}}}var Qc=!1;function km(e,t,a){if(Qc)return e(t,a);Qc=!0;try{var r=e(t);return r}finally{if(Qc=!1,(fi!==null||pi!==null)&&(Al(),fi&&(t=fi,e=pi,pi=fi=null,Tm(t),e)))for(t=0;t<e.length;t++)Tm(e[t])}}function vo(e,t){var a=e.stateNode;if(a===null)return null;var r=a[nn]||null;if(r===null)return null;a=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(a&&typeof a!="function")throw Error(o(231,t,typeof a));return a}var fs=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),eu=!1;if(fs)try{var yo={};Object.defineProperty(yo,"passive",{get:function(){eu=!0}}),window.addEventListener("test",yo,yo),window.removeEventListener("test",yo,yo)}catch{eu=!1}var Vs=null,tu=null,$r=null;function wm(){if($r)return $r;var e,t=tu,a=t.length,r,f="value"in Vs?Vs.value:Vs.textContent,p=f.length;for(e=0;e<a&&t[e]===f[e];e++);var x=a-e;for(r=1;r<=x&&t[a-r]===f[p-r];r++);return $r=f.slice(e,1<r?1-r:void 0)}function qr(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 Fr(){return!0}function Nm(){return!1}function sn(e){function t(a,r,f,p,x){this._reactName=a,this._targetInst=f,this.type=r,this.nativeEvent=p,this.target=x,this.currentTarget=null;for(var k in e)e.hasOwnProperty(k)&&(a=e[k],this[k]=a?a(p):p[k]);return this.isDefaultPrevented=(p.defaultPrevented!=null?p.defaultPrevented:p.returnValue===!1)?Fr:Nm,this.isPropagationStopped=Nm,this}return b(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():typeof a.returnValue!="unknown"&&(a.returnValue=!1),this.isDefaultPrevented=Fr)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():typeof a.cancelBubble!="unknown"&&(a.cancelBubble=!0),this.isPropagationStopped=Fr)},persist:function(){},isPersistent:Fr}),t}var Na={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Zr=sn(Na),bo=b({},Na,{view:0,detail:0}),Yx=sn(bo),nu,su,_o,Kr=b({},bo,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:iu,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!==_o&&(_o&&e.type==="mousemove"?(nu=e.screenX-_o.screenX,su=e.screenY-_o.screenY):su=nu=0,_o=e),nu)},movementY:function(e){return"movementY"in e?e.movementY:su}}),jm=sn(Kr),Jx=b({},Kr,{dataTransfer:0}),Wx=sn(Jx),Xx=b({},bo,{relatedTarget:0}),au=sn(Xx),Qx=b({},Na,{animationName:0,elapsedTime:0,pseudoElement:0}),e1=sn(Qx),t1=b({},Na,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),n1=sn(t1),s1=b({},Na,{data:0}),Cm=sn(s1),a1={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},i1={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"},o1={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function r1(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=o1[e])?!!t[e]:!1}function iu(){return r1}var l1=b({},bo,{key:function(e){if(e.key){var t=a1[e.key]||e.key;if(t!=="Unidentified")return t}return e.type==="keypress"?(e=qr(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?i1[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:iu,charCode:function(e){return e.type==="keypress"?qr(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?qr(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),c1=sn(l1),u1=b({},Kr,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Em=sn(u1),d1=b({},bo,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:iu}),f1=sn(d1),p1=b({},Na,{propertyName:0,elapsedTime:0,pseudoElement:0}),m1=sn(p1),h1=b({},Kr,{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}),g1=sn(h1),v1=b({},Na,{newState:0,oldState:0}),y1=sn(v1),b1=[9,13,27,32],ou=fs&&"CompositionEvent"in window,xo=null;fs&&"documentMode"in document&&(xo=document.documentMode);var _1=fs&&"TextEvent"in window&&!xo,Am=fs&&(!ou||xo&&8<xo&&11>=xo),Dm=" ",Rm=!1;function Mm(e,t){switch(e){case"keyup":return b1.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Om(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var mi=!1;function x1(e,t){switch(e){case"compositionend":return Om(t);case"keypress":return t.which!==32?null:(Rm=!0,Dm);case"textInput":return e=t.data,e===Dm&&Rm?null:e;default:return null}}function S1(e,t){if(mi)return e==="compositionend"||!ou&&Mm(e,t)?(e=wm(),$r=tu=Vs=null,mi=!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 Am&&t.locale!=="ko"?null:t.data;default:return null}}var T1={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 Im(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t==="input"?!!T1[e.type]:t==="textarea"}function Bm(e,t,a,r){fi?pi?pi.push(r):pi=[r]:fi=r,t=Ll(t,"onChange"),0<t.length&&(a=new Zr("onChange","change",null,a,r),e.push({event:a,listeners:t}))}var So=null,To=null;function k1(e){yv(e,0)}function Yr(e){var t=go(e);if(vm(t))return e}function Lm(e,t){if(e==="change")return t}var Um=!1;if(fs){var ru;if(fs){var lu="oninput"in document;if(!lu){var zm=document.createElement("div");zm.setAttribute("oninput","return;"),lu=typeof zm.oninput=="function"}ru=lu}else ru=!1;Um=ru&&(!document.documentMode||9<document.documentMode)}function Pm(){So&&(So.detachEvent("onpropertychange",Vm),To=So=null)}function Vm(e){if(e.propertyName==="value"&&Yr(To)){var t=[];Bm(t,To,e,Xc(e)),km(k1,t)}}function w1(e,t,a){e==="focusin"?(Pm(),So=t,To=a,So.attachEvent("onpropertychange",Vm)):e==="focusout"&&Pm()}function N1(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return Yr(To)}function j1(e,t){if(e==="click")return Yr(t)}function C1(e,t){if(e==="input"||e==="change")return Yr(t)}function E1(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var dn=typeof Object.is=="function"?Object.is:E1;function ko(e,t){if(dn(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;var a=Object.keys(e),r=Object.keys(t);if(a.length!==r.length)return!1;for(r=0;r<a.length;r++){var f=a[r];if(!zn.call(t,f)||!dn(e[f],t[f]))return!1}return!0}function Hm(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Gm(e,t){var a=Hm(e);e=0;for(var r;a;){if(a.nodeType===3){if(r=e+a.textContent.length,e<=t&&r>=t)return{node:a,offset:t-e};e=r}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=Hm(a)}}function $m(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?$m(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function qm(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Hr(e.document);t instanceof e.HTMLIFrameElement;){try{var a=typeof t.contentWindow.location.href=="string"}catch{a=!1}if(a)e=t.contentWindow;else break;t=Hr(e.document)}return t}function cu(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")}var A1=fs&&"documentMode"in document&&11>=document.documentMode,hi=null,uu=null,wo=null,du=!1;function Fm(e,t,a){var r=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;du||hi==null||hi!==Hr(r)||(r=hi,"selectionStart"in r&&cu(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}),wo&&ko(wo,r)||(wo=r,r=Ll(uu,"onSelect"),0<r.length&&(t=new Zr("onSelect","select",null,t,a),e.push({event:t,listeners:r}),t.target=hi)))}function ja(e,t){var a={};return a[e.toLowerCase()]=t.toLowerCase(),a["Webkit"+e]="webkit"+t,a["Moz"+e]="moz"+t,a}var gi={animationend:ja("Animation","AnimationEnd"),animationiteration:ja("Animation","AnimationIteration"),animationstart:ja("Animation","AnimationStart"),transitionrun:ja("Transition","TransitionRun"),transitionstart:ja("Transition","TransitionStart"),transitioncancel:ja("Transition","TransitionCancel"),transitionend:ja("Transition","TransitionEnd")},fu={},Zm={};fs&&(Zm=document.createElement("div").style,"AnimationEvent"in window||(delete gi.animationend.animation,delete gi.animationiteration.animation,delete gi.animationstart.animation),"TransitionEvent"in window||delete gi.transitionend.transition);function Ca(e){if(fu[e])return fu[e];if(!gi[e])return e;var t=gi[e],a;for(a in t)if(t.hasOwnProperty(a)&&a in Zm)return fu[e]=t[a];return e}var Km=Ca("animationend"),Ym=Ca("animationiteration"),Jm=Ca("animationstart"),D1=Ca("transitionrun"),R1=Ca("transitionstart"),M1=Ca("transitioncancel"),Wm=Ca("transitionend"),Xm=new Map,pu="abort auxClick beforeToggle 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(" ");pu.push("scrollEnd");function Gn(e,t){Xm.set(e,t),wa(t,[e])}var Jr=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},wn=[],vi=0,mu=0;function Wr(){for(var e=vi,t=mu=vi=0;t<e;){var a=wn[t];wn[t++]=null;var r=wn[t];wn[t++]=null;var f=wn[t];wn[t++]=null;var p=wn[t];if(wn[t++]=null,r!==null&&f!==null){var x=r.pending;x===null?f.next=f:(f.next=x.next,x.next=f),r.pending=f}p!==0&&Qm(a,f,p)}}function Xr(e,t,a,r){wn[vi++]=e,wn[vi++]=t,wn[vi++]=a,wn[vi++]=r,mu|=r,e.lanes|=r,e=e.alternate,e!==null&&(e.lanes|=r)}function hu(e,t,a,r){return Xr(e,t,a,r),Qr(e)}function Ea(e,t){return Xr(e,null,null,t),Qr(e)}function Qm(e,t,a){e.lanes|=a;var r=e.alternate;r!==null&&(r.lanes|=a);for(var f=!1,p=e.return;p!==null;)p.childLanes|=a,r=p.alternate,r!==null&&(r.childLanes|=a),p.tag===22&&(e=p.stateNode,e===null||e._visibility&1||(f=!0)),e=p,p=p.return;return e.tag===3?(p=e.stateNode,f&&t!==null&&(f=31-Jt(a),e=p.hiddenUpdates,r=e[f],r===null?e[f]=[t]:r.push(t),t.lane=a|536870912),p):null}function Qr(e){if(50<Zo)throw Zo=0,kd=null,Error(o(185));for(var t=e.return;t!==null;)e=t,t=e.return;return e.tag===3?e.stateNode:null}var yi={};function O1(e,t,a,r){this.tag=e,this.key=a,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=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 fn(e,t,a,r){return new O1(e,t,a,r)}function gu(e){return e=e.prototype,!(!e||!e.isReactComponent)}function ps(e,t){var a=e.alternate;return a===null?(a=fn(e.tag,t,e.key,e.mode),a.elementType=e.elementType,a.type=e.type,a.stateNode=e.stateNode,a.alternate=e,e.alternate=a):(a.pendingProps=t,a.type=e.type,a.flags=0,a.subtreeFlags=0,a.deletions=null),a.flags=e.flags&65011712,a.childLanes=e.childLanes,a.lanes=e.lanes,a.child=e.child,a.memoizedProps=e.memoizedProps,a.memoizedState=e.memoizedState,a.updateQueue=e.updateQueue,t=e.dependencies,a.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},a.sibling=e.sibling,a.index=e.index,a.ref=e.ref,a.refCleanup=e.refCleanup,a}function eh(e,t){e.flags&=65011714;var a=e.alternate;return a===null?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=a.childLanes,e.lanes=a.lanes,e.child=a.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=a.memoizedProps,e.memoizedState=a.memoizedState,e.updateQueue=a.updateQueue,e.type=a.type,t=a.dependencies,e.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function el(e,t,a,r,f,p){var x=0;if(r=e,typeof e=="function")gu(e)&&(x=1);else if(typeof e=="string")x=zS(e,a,Oe.current)?26:e==="html"||e==="head"||e==="body"?27:5;else e:switch(e){case Z:return e=fn(31,a,t,f),e.elementType=Z,e.lanes=p,e;case N:return Aa(a.children,f,p,t);case j:x=8,f|=24;break;case w:return e=fn(12,a,t,f|2),e.elementType=w,e.lanes=p,e;case D:return e=fn(13,a,t,f),e.elementType=D,e.lanes=p,e;case E:return e=fn(19,a,t,f),e.elementType=E,e.lanes=p,e;default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case A:x=10;break e;case C:x=9;break e;case M:x=11;break e;case H:x=14;break e;case z:x=16,r=null;break e}x=29,a=Error(o(130,e===null?"null":typeof e,"")),r=null}return t=fn(x,a,t,f),t.elementType=e,t.type=r,t.lanes=p,t}function Aa(e,t,a,r){return e=fn(7,e,r,t),e.lanes=a,e}function vu(e,t,a){return e=fn(6,e,null,t),e.lanes=a,e}function th(e){var t=fn(18,null,null,0);return t.stateNode=e,t}function yu(e,t,a){return t=fn(4,e.children!==null?e.children:[],e.key,t),t.lanes=a,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var nh=new WeakMap;function Nn(e,t){if(typeof e=="object"&&e!==null){var a=nh.get(e);return a!==void 0?a:(t={value:e,source:t,stack:Sn(t)},nh.set(e,t),t)}return{value:e,source:t,stack:Sn(t)}}var bi=[],_i=0,tl=null,No=0,jn=[],Cn=0,Hs=null,Xn=1,Qn="";function ms(e,t){bi[_i++]=No,bi[_i++]=tl,tl=e,No=t}function sh(e,t,a){jn[Cn++]=Xn,jn[Cn++]=Qn,jn[Cn++]=Hs,Hs=e;var r=Xn;e=Qn;var f=32-Jt(r)-1;r&=~(1<<f),a+=1;var p=32-Jt(t)+f;if(30<p){var x=f-f%5;p=(r&(1<<x)-1).toString(32),r>>=x,f-=x,Xn=1<<32-Jt(t)+f|a<<f|r,Qn=p+e}else Xn=1<<p|a<<f|r,Qn=e}function bu(e){e.return!==null&&(ms(e,1),sh(e,1,0))}function _u(e){for(;e===tl;)tl=bi[--_i],bi[_i]=null,No=bi[--_i],bi[_i]=null;for(;e===Hs;)Hs=jn[--Cn],jn[Cn]=null,Qn=jn[--Cn],jn[Cn]=null,Xn=jn[--Cn],jn[Cn]=null}function ah(e,t){jn[Cn++]=Xn,jn[Cn++]=Qn,jn[Cn++]=Hs,Xn=t.id,Qn=t.overflow,Hs=e}var Gt=null,lt=null,Ve=!1,Gs=null,En=!1,xu=Error(o(519));function $s(e){var t=Error(o(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw jo(Nn(t,e)),xu}function ih(e){var t=e.stateNode,a=e.type,r=e.memoizedProps;switch(t[Ht]=e,t[nn]=r,a){case"dialog":Be("cancel",t),Be("close",t);break;case"iframe":case"object":case"embed":Be("load",t);break;case"video":case"audio":for(a=0;a<Yo.length;a++)Be(Yo[a],t);break;case"source":Be("error",t);break;case"img":case"image":case"link":Be("error",t),Be("load",t);break;case"details":Be("toggle",t);break;case"input":Be("invalid",t),ym(t,r.value,r.defaultValue,r.checked,r.defaultChecked,r.type,r.name,!0);break;case"select":Be("invalid",t);break;case"textarea":Be("invalid",t),_m(t,r.value,r.defaultValue,r.children)}a=r.children,typeof a!="string"&&typeof a!="number"&&typeof a!="bigint"||t.textContent===""+a||r.suppressHydrationWarning===!0||Sv(t.textContent,a)?(r.popover!=null&&(Be("beforetoggle",t),Be("toggle",t)),r.onScroll!=null&&Be("scroll",t),r.onScrollEnd!=null&&Be("scrollend",t),r.onClick!=null&&(t.onclick=ds),t=!0):t=!1,t||$s(e,!0)}function oh(e){for(Gt=e.return;Gt;)switch(Gt.tag){case 5:case 31:case 13:En=!1;return;case 27:case 3:En=!0;return;default:Gt=Gt.return}}function xi(e){if(e!==Gt)return!1;if(!Ve)return oh(e),Ve=!0,!1;var t=e.tag,a;if((a=t!==3&&t!==27)&&((a=t===5)&&(a=e.type,a=!(a!=="form"&&a!=="button")||zd(e.type,e.memoizedProps)),a=!a),a&&lt&&$s(e),oh(e),t===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(o(317));lt=Dv(e)}else if(t===31){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(o(317));lt=Dv(e)}else t===27?(t=lt,aa(e.type)?(e=$d,$d=null,lt=e):lt=t):lt=Gt?Dn(e.stateNode.nextSibling):null;return!0}function Da(){lt=Gt=null,Ve=!1}function Su(){var e=Gs;return e!==null&&(ln===null?ln=e:ln.push.apply(ln,e),Gs=null),e}function jo(e){Gs===null?Gs=[e]:Gs.push(e)}var Tu=$e(null),Ra=null,hs=null;function qs(e,t,a){Se(Tu,t._currentValue),t._currentValue=a}function gs(e){e._currentValue=Tu.current,we(Tu)}function ku(e,t,a){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===a)break;e=e.return}}function wu(e,t,a,r){var f=e.child;for(f!==null&&(f.return=e);f!==null;){var p=f.dependencies;if(p!==null){var x=f.child;p=p.firstContext;e:for(;p!==null;){var k=p;p=f;for(var R=0;R<t.length;R++)if(k.context===t[R]){p.lanes|=a,k=p.alternate,k!==null&&(k.lanes|=a),ku(p.return,a,e),r||(x=null);break e}p=k.next}}else if(f.tag===18){if(x=f.return,x===null)throw Error(o(341));x.lanes|=a,p=x.alternate,p!==null&&(p.lanes|=a),ku(x,a,e),x=null}else x=f.child;if(x!==null)x.return=f;else for(x=f;x!==null;){if(x===e){x=null;break}if(f=x.sibling,f!==null){f.return=x.return,x=f;break}x=x.return}f=x}}function Si(e,t,a,r){e=null;for(var f=t,p=!1;f!==null;){if(!p){if((f.flags&524288)!==0)p=!0;else if((f.flags&262144)!==0)break}if(f.tag===10){var x=f.alternate;if(x===null)throw Error(o(387));if(x=x.memoizedProps,x!==null){var k=f.type;dn(f.pendingProps.value,x.value)||(e!==null?e.push(k):e=[k])}}else if(f===me.current){if(x=f.alternate,x===null)throw Error(o(387));x.memoizedState.memoizedState!==f.memoizedState.memoizedState&&(e!==null?e.push(er):e=[er])}f=f.return}e!==null&&wu(t,e,a,r),t.flags|=262144}function nl(e){for(e=e.firstContext;e!==null;){if(!dn(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function Ma(e){Ra=e,hs=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function $t(e){return rh(Ra,e)}function sl(e,t){return Ra===null&&Ma(e),rh(e,t)}function rh(e,t){var a=t._currentValue;if(t={context:t,memoizedValue:a,next:null},hs===null){if(e===null)throw Error(o(308));hs=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else hs=hs.next=t;return a}var I1=typeof AbortController<"u"?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(a,r){e.push(r)}};this.abort=function(){t.aborted=!0,e.forEach(function(a){return a()})}},B1=n.unstable_scheduleCallback,L1=n.unstable_NormalPriority,Ct={$$typeof:A,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Nu(){return{controller:new I1,data:new Map,refCount:0}}function Co(e){e.refCount--,e.refCount===0&&B1(L1,function(){e.controller.abort()})}var Eo=null,ju=0,Ti=0,ki=null;function U1(e,t){if(Eo===null){var a=Eo=[];ju=0,Ti=Ad(),ki={status:"pending",value:void 0,then:function(r){a.push(r)}}}return ju++,t.then(lh,lh),t}function lh(){if(--ju===0&&Eo!==null){ki!==null&&(ki.status="fulfilled");var e=Eo;Eo=null,Ti=0,ki=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function z1(e,t){var a=[],r={status:"pending",value:null,reason:null,then:function(f){a.push(f)}};return e.then(function(){r.status="fulfilled",r.value=t;for(var f=0;f<a.length;f++)(0,a[f])(t)},function(f){for(r.status="rejected",r.reason=f,f=0;f<a.length;f++)(0,a[f])(void 0)}),r}var ch=B.S;B.S=function(e,t){Fg=Je(),typeof t=="object"&&t!==null&&typeof t.then=="function"&&U1(e,t),ch!==null&&ch(e,t)};var Oa=$e(null);function Cu(){var e=Oa.current;return e!==null?e:ot.pooledCache}function al(e,t){t===null?Se(Oa,Oa.current):Se(Oa,t.pool)}function uh(){var e=Cu();return e===null?null:{parent:Ct._currentValue,pool:e}}var wi=Error(o(460)),Eu=Error(o(474)),il=Error(o(542)),ol={then:function(){}};function dh(e){return e=e.status,e==="fulfilled"||e==="rejected"}function fh(e,t,a){switch(a=e[a],a===void 0?e.push(t):a!==t&&(t.then(ds,ds),t=a),t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,mh(e),e;default:if(typeof t.status=="string")t.then(ds,ds);else{if(e=ot,e!==null&&100<e.shellSuspendCounter)throw Error(o(482));e=t,e.status="pending",e.then(function(r){if(t.status==="pending"){var f=t;f.status="fulfilled",f.value=r}},function(r){if(t.status==="pending"){var f=t;f.status="rejected",f.reason=r}})}switch(t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,mh(e),e}throw Ba=t,wi}}function Ia(e){try{var t=e._init;return t(e._payload)}catch(a){throw a!==null&&typeof a=="object"&&typeof a.then=="function"?(Ba=a,wi):a}}var Ba=null;function ph(){if(Ba===null)throw Error(o(459));var e=Ba;return Ba=null,e}function mh(e){if(e===wi||e===il)throw Error(o(483))}var Ni=null,Ao=0;function rl(e){var t=Ao;return Ao+=1,Ni===null&&(Ni=[]),fh(Ni,e,t)}function Do(e,t){t=t.props.ref,e.ref=t!==void 0?t:null}function ll(e,t){throw t.$$typeof===_?Error(o(525)):(e=Object.prototype.toString.call(t),Error(o(31,e==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":e)))}function hh(e){function t(L,O){if(e){var P=L.deletions;P===null?(L.deletions=[O],L.flags|=16):P.push(O)}}function a(L,O){if(!e)return null;for(;O!==null;)t(L,O),O=O.sibling;return null}function r(L){for(var O=new Map;L!==null;)L.key!==null?O.set(L.key,L):O.set(L.index,L),L=L.sibling;return O}function f(L,O){return L=ps(L,O),L.index=0,L.sibling=null,L}function p(L,O,P){return L.index=P,e?(P=L.alternate,P!==null?(P=P.index,P<O?(L.flags|=67108866,O):P):(L.flags|=67108866,O)):(L.flags|=1048576,O)}function x(L){return e&&L.alternate===null&&(L.flags|=67108866),L}function k(L,O,P,J){return O===null||O.tag!==6?(O=vu(P,L.mode,J),O.return=L,O):(O=f(O,P),O.return=L,O)}function R(L,O,P,J){var be=P.type;return be===N?Y(L,O,P.props.children,J,P.key):O!==null&&(O.elementType===be||typeof be=="object"&&be!==null&&be.$$typeof===z&&Ia(be)===O.type)?(O=f(O,P.props),Do(O,P),O.return=L,O):(O=el(P.type,P.key,P.props,null,L.mode,J),Do(O,P),O.return=L,O)}function V(L,O,P,J){return O===null||O.tag!==4||O.stateNode.containerInfo!==P.containerInfo||O.stateNode.implementation!==P.implementation?(O=yu(P,L.mode,J),O.return=L,O):(O=f(O,P.children||[]),O.return=L,O)}function Y(L,O,P,J,be){return O===null||O.tag!==7?(O=Aa(P,L.mode,J,be),O.return=L,O):(O=f(O,P),O.return=L,O)}function W(L,O,P){if(typeof O=="string"&&O!==""||typeof O=="number"||typeof O=="bigint")return O=vu(""+O,L.mode,P),O.return=L,O;if(typeof O=="object"&&O!==null){switch(O.$$typeof){case S:return P=el(O.type,O.key,O.props,null,L.mode,P),Do(P,O),P.return=L,P;case T:return O=yu(O,L.mode,P),O.return=L,O;case z:return O=Ia(O),W(L,O,P)}if(X(O)||ae(O))return O=Aa(O,L.mode,P,null),O.return=L,O;if(typeof O.then=="function")return W(L,rl(O),P);if(O.$$typeof===A)return W(L,sl(L,O),P);ll(L,O)}return null}function $(L,O,P,J){var be=O!==null?O.key:null;if(typeof P=="string"&&P!==""||typeof P=="number"||typeof P=="bigint")return be!==null?null:k(L,O,""+P,J);if(typeof P=="object"&&P!==null){switch(P.$$typeof){case S:return P.key===be?R(L,O,P,J):null;case T:return P.key===be?V(L,O,P,J):null;case z:return P=Ia(P),$(L,O,P,J)}if(X(P)||ae(P))return be!==null?null:Y(L,O,P,J,null);if(typeof P.then=="function")return $(L,O,rl(P),J);if(P.$$typeof===A)return $(L,O,sl(L,P),J);ll(L,P)}return null}function K(L,O,P,J,be){if(typeof J=="string"&&J!==""||typeof J=="number"||typeof J=="bigint")return L=L.get(P)||null,k(O,L,""+J,be);if(typeof J=="object"&&J!==null){switch(J.$$typeof){case S:return L=L.get(J.key===null?P:J.key)||null,R(O,L,J,be);case T:return L=L.get(J.key===null?P:J.key)||null,V(O,L,J,be);case z:return J=Ia(J),K(L,O,P,J,be)}if(X(J)||ae(J))return L=L.get(P)||null,Y(O,L,J,be,null);if(typeof J.then=="function")return K(L,O,P,rl(J),be);if(J.$$typeof===A)return K(L,O,P,sl(O,J),be);ll(O,J)}return null}function ge(L,O,P,J){for(var be=null,Fe=null,ve=O,Me=O=0,Ue=null;ve!==null&&Me<P.length;Me++){ve.index>Me?(Ue=ve,ve=null):Ue=ve.sibling;var Ze=$(L,ve,P[Me],J);if(Ze===null){ve===null&&(ve=Ue);break}e&&ve&&Ze.alternate===null&&t(L,ve),O=p(Ze,O,Me),Fe===null?be=Ze:Fe.sibling=Ze,Fe=Ze,ve=Ue}if(Me===P.length)return a(L,ve),Ve&&ms(L,Me),be;if(ve===null){for(;Me<P.length;Me++)ve=W(L,P[Me],J),ve!==null&&(O=p(ve,O,Me),Fe===null?be=ve:Fe.sibling=ve,Fe=ve);return Ve&&ms(L,Me),be}for(ve=r(ve);Me<P.length;Me++)Ue=K(ve,L,Me,P[Me],J),Ue!==null&&(e&&Ue.alternate!==null&&ve.delete(Ue.key===null?Me:Ue.key),O=p(Ue,O,Me),Fe===null?be=Ue:Fe.sibling=Ue,Fe=Ue);return e&&ve.forEach(function(ca){return t(L,ca)}),Ve&&ms(L,Me),be}function xe(L,O,P,J){if(P==null)throw Error(o(151));for(var be=null,Fe=null,ve=O,Me=O=0,Ue=null,Ze=P.next();ve!==null&&!Ze.done;Me++,Ze=P.next()){ve.index>Me?(Ue=ve,ve=null):Ue=ve.sibling;var ca=$(L,ve,Ze.value,J);if(ca===null){ve===null&&(ve=Ue);break}e&&ve&&ca.alternate===null&&t(L,ve),O=p(ca,O,Me),Fe===null?be=ca:Fe.sibling=ca,Fe=ca,ve=Ue}if(Ze.done)return a(L,ve),Ve&&ms(L,Me),be;if(ve===null){for(;!Ze.done;Me++,Ze=P.next())Ze=W(L,Ze.value,J),Ze!==null&&(O=p(Ze,O,Me),Fe===null?be=Ze:Fe.sibling=Ze,Fe=Ze);return Ve&&ms(L,Me),be}for(ve=r(ve);!Ze.done;Me++,Ze=P.next())Ze=K(ve,L,Me,Ze.value,J),Ze!==null&&(e&&Ze.alternate!==null&&ve.delete(Ze.key===null?Me:Ze.key),O=p(Ze,O,Me),Fe===null?be=Ze:Fe.sibling=Ze,Fe=Ze);return e&&ve.forEach(function(JS){return t(L,JS)}),Ve&&ms(L,Me),be}function at(L,O,P,J){if(typeof P=="object"&&P!==null&&P.type===N&&P.key===null&&(P=P.props.children),typeof P=="object"&&P!==null){switch(P.$$typeof){case S:e:{for(var be=P.key;O!==null;){if(O.key===be){if(be=P.type,be===N){if(O.tag===7){a(L,O.sibling),J=f(O,P.props.children),J.return=L,L=J;break e}}else if(O.elementType===be||typeof be=="object"&&be!==null&&be.$$typeof===z&&Ia(be)===O.type){a(L,O.sibling),J=f(O,P.props),Do(J,P),J.return=L,L=J;break e}a(L,O);break}else t(L,O);O=O.sibling}P.type===N?(J=Aa(P.props.children,L.mode,J,P.key),J.return=L,L=J):(J=el(P.type,P.key,P.props,null,L.mode,J),Do(J,P),J.return=L,L=J)}return x(L);case T:e:{for(be=P.key;O!==null;){if(O.key===be)if(O.tag===4&&O.stateNode.containerInfo===P.containerInfo&&O.stateNode.implementation===P.implementation){a(L,O.sibling),J=f(O,P.children||[]),J.return=L,L=J;break e}else{a(L,O);break}else t(L,O);O=O.sibling}J=yu(P,L.mode,J),J.return=L,L=J}return x(L);case z:return P=Ia(P),at(L,O,P,J)}if(X(P))return ge(L,O,P,J);if(ae(P)){if(be=ae(P),typeof be!="function")throw Error(o(150));return P=be.call(P),xe(L,O,P,J)}if(typeof P.then=="function")return at(L,O,rl(P),J);if(P.$$typeof===A)return at(L,O,sl(L,P),J);ll(L,P)}return typeof P=="string"&&P!==""||typeof P=="number"||typeof P=="bigint"?(P=""+P,O!==null&&O.tag===6?(a(L,O.sibling),J=f(O,P),J.return=L,L=J):(a(L,O),J=vu(P,L.mode,J),J.return=L,L=J),x(L)):a(L,O)}return function(L,O,P,J){try{Ao=0;var be=at(L,O,P,J);return Ni=null,be}catch(ve){if(ve===wi||ve===il)throw ve;var Fe=fn(29,ve,null,L.mode);return Fe.lanes=J,Fe.return=L,Fe}finally{}}}var La=hh(!0),gh=hh(!1),Fs=!1;function Au(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Du(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Zs(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Ks(e,t,a){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,(We&2)!==0){var f=r.pending;return f===null?t.next=t:(t.next=f.next,f.next=t),r.pending=t,t=Qr(e),Qm(e,null,a),t}return Xr(e,r,t,a),Qr(e)}function Ro(e,t,a){if(t=t.updateQueue,t!==null&&(t=t.shared,(a&4194048)!==0)){var r=t.lanes;r&=e.pendingLanes,a|=r,t.lanes=a,Tt(e,a)}}function Ru(e,t){var a=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,a===r)){var f=null,p=null;if(a=a.firstBaseUpdate,a!==null){do{var x={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};p===null?f=p=x:p=p.next=x,a=a.next}while(a!==null);p===null?f=p=t:p=p.next=t}else f=p=t;a={baseState:r.baseState,firstBaseUpdate:f,lastBaseUpdate:p,shared:r.shared,callbacks:r.callbacks},e.updateQueue=a;return}e=a.lastBaseUpdate,e===null?a.firstBaseUpdate=t:e.next=t,a.lastBaseUpdate=t}var Mu=!1;function Mo(){if(Mu){var e=ki;if(e!==null)throw e}}function Oo(e,t,a,r){Mu=!1;var f=e.updateQueue;Fs=!1;var p=f.firstBaseUpdate,x=f.lastBaseUpdate,k=f.shared.pending;if(k!==null){f.shared.pending=null;var R=k,V=R.next;R.next=null,x===null?p=V:x.next=V,x=R;var Y=e.alternate;Y!==null&&(Y=Y.updateQueue,k=Y.lastBaseUpdate,k!==x&&(k===null?Y.firstBaseUpdate=V:k.next=V,Y.lastBaseUpdate=R))}if(p!==null){var W=f.baseState;x=0,Y=V=R=null,k=p;do{var $=k.lane&-536870913,K=$!==k.lane;if(K?(Le&$)===$:(r&$)===$){$!==0&&$===Ti&&(Mu=!0),Y!==null&&(Y=Y.next={lane:0,tag:k.tag,payload:k.payload,callback:null,next:null});e:{var ge=e,xe=k;$=t;var at=a;switch(xe.tag){case 1:if(ge=xe.payload,typeof ge=="function"){W=ge.call(at,W,$);break e}W=ge;break e;case 3:ge.flags=ge.flags&-65537|128;case 0:if(ge=xe.payload,$=typeof ge=="function"?ge.call(at,W,$):ge,$==null)break e;W=b({},W,$);break e;case 2:Fs=!0}}$=k.callback,$!==null&&(e.flags|=64,K&&(e.flags|=8192),K=f.callbacks,K===null?f.callbacks=[$]:K.push($))}else K={lane:$,tag:k.tag,payload:k.payload,callback:k.callback,next:null},Y===null?(V=Y=K,R=W):Y=Y.next=K,x|=$;if(k=k.next,k===null){if(k=f.shared.pending,k===null)break;K=k,k=K.next,K.next=null,f.lastBaseUpdate=K,f.shared.pending=null}}while(!0);Y===null&&(R=W),f.baseState=R,f.firstBaseUpdate=V,f.lastBaseUpdate=Y,p===null&&(f.shared.lanes=0),Qs|=x,e.lanes=x,e.memoizedState=W}}function vh(e,t){if(typeof e!="function")throw Error(o(191,e));e.call(t)}function yh(e,t){var a=e.callbacks;if(a!==null)for(e.callbacks=null,e=0;e<a.length;e++)vh(a[e],t)}var ji=$e(null),cl=$e(0);function bh(e,t){e=ws,Se(cl,e),Se(ji,t),ws=e|t.baseLanes}function Ou(){Se(cl,ws),Se(ji,ji.current)}function Iu(){ws=cl.current,we(ji),we(cl)}var pn=$e(null),An=null;function Ys(e){var t=e.alternate;Se(kt,kt.current&1),Se(pn,e),An===null&&(t===null||ji.current!==null||t.memoizedState!==null)&&(An=e)}function Bu(e){Se(kt,kt.current),Se(pn,e),An===null&&(An=e)}function _h(e){e.tag===22?(Se(kt,kt.current),Se(pn,e),An===null&&(An=e)):Js()}function Js(){Se(kt,kt.current),Se(pn,pn.current)}function mn(e){we(pn),An===e&&(An=null),we(kt)}var kt=$e(0);function ul(e){for(var t=e;t!==null;){if(t.tag===13){var a=t.memoizedState;if(a!==null&&(a=a.dehydrated,a===null||Hd(a)||Gd(a)))return t}else if(t.tag===19&&(t.memoizedProps.revealOrder==="forwards"||t.memoizedProps.revealOrder==="backwards"||t.memoizedProps.revealOrder==="unstable_legacy-backwards"||t.memoizedProps.revealOrder==="together")){if((t.flags&128)!==0)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 vs=0,Ae=null,nt=null,Et=null,dl=!1,Ci=!1,Ua=!1,fl=0,Io=0,Ei=null,P1=0;function vt(){throw Error(o(321))}function Lu(e,t){if(t===null)return!1;for(var a=0;a<t.length&&a<e.length;a++)if(!dn(e[a],t[a]))return!1;return!0}function Uu(e,t,a,r,f,p){return vs=p,Ae=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,B.H=e===null||e.memoizedState===null?sg:Qu,Ua=!1,p=a(r,f),Ua=!1,Ci&&(p=Sh(t,a,r,f)),xh(e),p}function xh(e){B.H=Uo;var t=nt!==null&&nt.next!==null;if(vs=0,Et=nt=Ae=null,dl=!1,Io=0,Ei=null,t)throw Error(o(300));e===null||At||(e=e.dependencies,e!==null&&nl(e)&&(At=!0))}function Sh(e,t,a,r){Ae=e;var f=0;do{if(Ci&&(Ei=null),Io=0,Ci=!1,25<=f)throw Error(o(301));if(f+=1,Et=nt=null,e.updateQueue!=null){var p=e.updateQueue;p.lastEffect=null,p.events=null,p.stores=null,p.memoCache!=null&&(p.memoCache.index=0)}B.H=ag,p=t(a,r)}while(Ci);return p}function V1(){var e=B.H,t=e.useState()[0];return t=typeof t.then=="function"?Bo(t):t,e=e.useState()[0],(nt!==null?nt.memoizedState:null)!==e&&(Ae.flags|=1024),t}function zu(){var e=fl!==0;return fl=0,e}function Pu(e,t,a){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a}function Vu(e){if(dl){for(e=e.memoizedState;e!==null;){var t=e.queue;t!==null&&(t.pending=null),e=e.next}dl=!1}vs=0,Et=nt=Ae=null,Ci=!1,Io=fl=0,Ei=null}function Qt(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Et===null?Ae.memoizedState=Et=e:Et=Et.next=e,Et}function wt(){if(nt===null){var e=Ae.alternate;e=e!==null?e.memoizedState:null}else e=nt.next;var t=Et===null?Ae.memoizedState:Et.next;if(t!==null)Et=t,nt=e;else{if(e===null)throw Ae.alternate===null?Error(o(467)):Error(o(310));nt=e,e={memoizedState:nt.memoizedState,baseState:nt.baseState,baseQueue:nt.baseQueue,queue:nt.queue,next:null},Et===null?Ae.memoizedState=Et=e:Et=Et.next=e}return Et}function pl(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Bo(e){var t=Io;return Io+=1,Ei===null&&(Ei=[]),e=fh(Ei,e,t),t=Ae,(Et===null?t.memoizedState:Et.next)===null&&(t=t.alternate,B.H=t===null||t.memoizedState===null?sg:Qu),e}function ml(e){if(e!==null&&typeof e=="object"){if(typeof e.then=="function")return Bo(e);if(e.$$typeof===A)return $t(e)}throw Error(o(438,String(e)))}function Hu(e){var t=null,a=Ae.updateQueue;if(a!==null&&(t=a.memoCache),t==null){var r=Ae.alternate;r!==null&&(r=r.updateQueue,r!==null&&(r=r.memoCache,r!=null&&(t={data:r.data.map(function(f){return f.slice()}),index:0})))}if(t==null&&(t={data:[],index:0}),a===null&&(a=pl(),Ae.updateQueue=a),a.memoCache=t,a=t.data[t.index],a===void 0)for(a=t.data[t.index]=Array(e),r=0;r<e;r++)a[r]=F;return t.index++,a}function ys(e,t){return typeof t=="function"?t(e):t}function hl(e){var t=wt();return Gu(t,nt,e)}function Gu(e,t,a){var r=e.queue;if(r===null)throw Error(o(311));r.lastRenderedReducer=a;var f=e.baseQueue,p=r.pending;if(p!==null){if(f!==null){var x=f.next;f.next=p.next,p.next=x}t.baseQueue=f=p,r.pending=null}if(p=e.baseState,f===null)e.memoizedState=p;else{t=f.next;var k=x=null,R=null,V=t,Y=!1;do{var W=V.lane&-536870913;if(W!==V.lane?(Le&W)===W:(vs&W)===W){var $=V.revertLane;if($===0)R!==null&&(R=R.next={lane:0,revertLane:0,gesture:null,action:V.action,hasEagerState:V.hasEagerState,eagerState:V.eagerState,next:null}),W===Ti&&(Y=!0);else if((vs&$)===$){V=V.next,$===Ti&&(Y=!0);continue}else W={lane:0,revertLane:V.revertLane,gesture:null,action:V.action,hasEagerState:V.hasEagerState,eagerState:V.eagerState,next:null},R===null?(k=R=W,x=p):R=R.next=W,Ae.lanes|=$,Qs|=$;W=V.action,Ua&&a(p,W),p=V.hasEagerState?V.eagerState:a(p,W)}else $={lane:W,revertLane:V.revertLane,gesture:V.gesture,action:V.action,hasEagerState:V.hasEagerState,eagerState:V.eagerState,next:null},R===null?(k=R=$,x=p):R=R.next=$,Ae.lanes|=W,Qs|=W;V=V.next}while(V!==null&&V!==t);if(R===null?x=p:R.next=k,!dn(p,e.memoizedState)&&(At=!0,Y&&(a=ki,a!==null)))throw a;e.memoizedState=p,e.baseState=x,e.baseQueue=R,r.lastRenderedState=p}return f===null&&(r.lanes=0),[e.memoizedState,r.dispatch]}function $u(e){var t=wt(),a=t.queue;if(a===null)throw Error(o(311));a.lastRenderedReducer=e;var r=a.dispatch,f=a.pending,p=t.memoizedState;if(f!==null){a.pending=null;var x=f=f.next;do p=e(p,x.action),x=x.next;while(x!==f);dn(p,t.memoizedState)||(At=!0),t.memoizedState=p,t.baseQueue===null&&(t.baseState=p),a.lastRenderedState=p}return[p,r]}function Th(e,t,a){var r=Ae,f=wt(),p=Ve;if(p){if(a===void 0)throw Error(o(407));a=a()}else a=t();var x=!dn((nt||f).memoizedState,a);if(x&&(f.memoizedState=a,At=!0),f=f.queue,Zu(Nh.bind(null,r,f,e),[e]),f.getSnapshot!==t||x||Et!==null&&Et.memoizedState.tag&1){if(r.flags|=2048,Ai(9,{destroy:void 0},wh.bind(null,r,f,a,t),null),ot===null)throw Error(o(349));p||(vs&127)!==0||kh(r,t,a)}return a}function kh(e,t,a){e.flags|=16384,e={getSnapshot:t,value:a},t=Ae.updateQueue,t===null?(t=pl(),Ae.updateQueue=t,t.stores=[e]):(a=t.stores,a===null?t.stores=[e]:a.push(e))}function wh(e,t,a,r){t.value=a,t.getSnapshot=r,jh(t)&&Ch(e)}function Nh(e,t,a){return a(function(){jh(t)&&Ch(e)})}function jh(e){var t=e.getSnapshot;e=e.value;try{var a=t();return!dn(e,a)}catch{return!0}}function Ch(e){var t=Ea(e,2);t!==null&&cn(t,e,2)}function qu(e){var t=Qt();if(typeof e=="function"){var a=e;if(e=a(),Ua){Vn(!0);try{a()}finally{Vn(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:ys,lastRenderedState:e},t}function Eh(e,t,a,r){return e.baseState=a,Gu(e,nt,typeof r=="function"?r:ys)}function H1(e,t,a,r,f){if(yl(e))throw Error(o(485));if(e=t.action,e!==null){var p={payload:f,action:e,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(x){p.listeners.push(x)}};B.T!==null?a(!0):p.isTransition=!1,r(p),a=t.pending,a===null?(p.next=t.pending=p,Ah(t,p)):(p.next=a.next,t.pending=a.next=p)}}function Ah(e,t){var a=t.action,r=t.payload,f=e.state;if(t.isTransition){var p=B.T,x={};B.T=x;try{var k=a(f,r),R=B.S;R!==null&&R(x,k),Dh(e,t,k)}catch(V){Fu(e,t,V)}finally{p!==null&&x.types!==null&&(p.types=x.types),B.T=p}}else try{p=a(f,r),Dh(e,t,p)}catch(V){Fu(e,t,V)}}function Dh(e,t,a){a!==null&&typeof a=="object"&&typeof a.then=="function"?a.then(function(r){Rh(e,t,r)},function(r){return Fu(e,t,r)}):Rh(e,t,a)}function Rh(e,t,a){t.status="fulfilled",t.value=a,Mh(t),e.state=a,t=e.pending,t!==null&&(a=t.next,a===t?e.pending=null:(a=a.next,t.next=a,Ah(e,a)))}function Fu(e,t,a){var r=e.pending;if(e.pending=null,r!==null){r=r.next;do t.status="rejected",t.reason=a,Mh(t),t=t.next;while(t!==r)}e.action=null}function Mh(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function Oh(e,t){return t}function Ih(e,t){if(Ve){var a=ot.formState;if(a!==null){e:{var r=Ae;if(Ve){if(lt){t:{for(var f=lt,p=En;f.nodeType!==8;){if(!p){f=null;break t}if(f=Dn(f.nextSibling),f===null){f=null;break t}}p=f.data,f=p==="F!"||p==="F"?f:null}if(f){lt=Dn(f.nextSibling),r=f.data==="F!";break e}}$s(r)}r=!1}r&&(t=a[0])}}return a=Qt(),a.memoizedState=a.baseState=t,r={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Oh,lastRenderedState:t},a.queue=r,a=eg.bind(null,Ae,r),r.dispatch=a,r=qu(!1),p=Xu.bind(null,Ae,!1,r.queue),r=Qt(),f={state:t,dispatch:null,action:e,pending:null},r.queue=f,a=H1.bind(null,Ae,f,p,a),f.dispatch=a,r.memoizedState=e,[t,a,!1]}function Bh(e){var t=wt();return Lh(t,nt,e)}function Lh(e,t,a){if(t=Gu(e,t,Oh)[0],e=hl(ys)[0],typeof t=="object"&&t!==null&&typeof t.then=="function")try{var r=Bo(t)}catch(x){throw x===wi?il:x}else r=t;t=wt();var f=t.queue,p=f.dispatch;return a!==t.memoizedState&&(Ae.flags|=2048,Ai(9,{destroy:void 0},G1.bind(null,f,a),null)),[r,p,e]}function G1(e,t){e.action=t}function Uh(e){var t=wt(),a=nt;if(a!==null)return Lh(t,a,e);wt(),t=t.memoizedState,a=wt();var r=a.queue.dispatch;return a.memoizedState=e,[t,r,!1]}function Ai(e,t,a,r){return e={tag:e,create:a,deps:r,inst:t,next:null},t=Ae.updateQueue,t===null&&(t=pl(),Ae.updateQueue=t),a=t.lastEffect,a===null?t.lastEffect=e.next=e:(r=a.next,a.next=e,e.next=r,t.lastEffect=e),e}function zh(){return wt().memoizedState}function gl(e,t,a,r){var f=Qt();Ae.flags|=e,f.memoizedState=Ai(1|t,{destroy:void 0},a,r===void 0?null:r)}function vl(e,t,a,r){var f=wt();r=r===void 0?null:r;var p=f.memoizedState.inst;nt!==null&&r!==null&&Lu(r,nt.memoizedState.deps)?f.memoizedState=Ai(t,p,a,r):(Ae.flags|=e,f.memoizedState=Ai(1|t,p,a,r))}function Ph(e,t){gl(8390656,8,e,t)}function Zu(e,t){vl(2048,8,e,t)}function $1(e){Ae.flags|=4;var t=Ae.updateQueue;if(t===null)t=pl(),Ae.updateQueue=t,t.events=[e];else{var a=t.events;a===null?t.events=[e]:a.push(e)}}function Vh(e){var t=wt().memoizedState;return $1({ref:t,nextImpl:e}),function(){if((We&2)!==0)throw Error(o(440));return t.impl.apply(void 0,arguments)}}function Hh(e,t){return vl(4,2,e,t)}function Gh(e,t){return vl(4,4,e,t)}function $h(e,t){if(typeof t=="function"){e=e();var a=t(e);return function(){typeof a=="function"?a():t(null)}}if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function qh(e,t,a){a=a!=null?a.concat([e]):null,vl(4,4,$h.bind(null,t,e),a)}function Ku(){}function Fh(e,t){var a=wt();t=t===void 0?null:t;var r=a.memoizedState;return t!==null&&Lu(t,r[1])?r[0]:(a.memoizedState=[e,t],e)}function Zh(e,t){var a=wt();t=t===void 0?null:t;var r=a.memoizedState;if(t!==null&&Lu(t,r[1]))return r[0];if(r=e(),Ua){Vn(!0);try{e()}finally{Vn(!1)}}return a.memoizedState=[r,t],r}function Yu(e,t,a){return a===void 0||(vs&1073741824)!==0&&(Le&261930)===0?e.memoizedState=t:(e.memoizedState=a,e=Kg(),Ae.lanes|=e,Qs|=e,a)}function Kh(e,t,a,r){return dn(a,t)?a:ji.current!==null?(e=Yu(e,a,r),dn(e,t)||(At=!0),e):(vs&42)===0||(vs&1073741824)!==0&&(Le&261930)===0?(At=!0,e.memoizedState=a):(e=Kg(),Ae.lanes|=e,Qs|=e,t)}function Yh(e,t,a,r,f){var p=q.p;q.p=p!==0&&8>p?p:8;var x=B.T,k={};B.T=k,Xu(e,!1,t,a);try{var R=f(),V=B.S;if(V!==null&&V(k,R),R!==null&&typeof R=="object"&&typeof R.then=="function"){var Y=z1(R,r);Lo(e,t,Y,vn(e))}else Lo(e,t,r,vn(e))}catch(W){Lo(e,t,{then:function(){},status:"rejected",reason:W},vn())}finally{q.p=p,x!==null&&k.types!==null&&(x.types=k.types),B.T=x}}function q1(){}function Ju(e,t,a,r){if(e.tag!==5)throw Error(o(476));var f=Jh(e).queue;Yh(e,f,t,te,a===null?q1:function(){return Wh(e),a(r)})}function Jh(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:te,baseState:te,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ys,lastRenderedState:te},next:null};var a={};return t.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ys,lastRenderedState:a},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Wh(e){var t=Jh(e);t.next===null&&(t=e.alternate.memoizedState),Lo(e,t.next.queue,{},vn())}function Wu(){return $t(er)}function Xh(){return wt().memoizedState}function Qh(){return wt().memoizedState}function F1(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var a=vn();e=Zs(a);var r=Ks(t,e,a);r!==null&&(cn(r,t,a),Ro(r,t,a)),t={cache:Nu()},e.payload=t;return}t=t.return}}function Z1(e,t,a){var r=vn();a={lane:r,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},yl(e)?tg(t,a):(a=hu(e,t,a,r),a!==null&&(cn(a,e,r),ng(a,t,r)))}function eg(e,t,a){var r=vn();Lo(e,t,a,r)}function Lo(e,t,a,r){var f={lane:r,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(yl(e))tg(t,f);else{var p=e.alternate;if(e.lanes===0&&(p===null||p.lanes===0)&&(p=t.lastRenderedReducer,p!==null))try{var x=t.lastRenderedState,k=p(x,a);if(f.hasEagerState=!0,f.eagerState=k,dn(k,x))return Xr(e,t,f,0),ot===null&&Wr(),!1}catch{}finally{}if(a=hu(e,t,f,r),a!==null)return cn(a,e,r),ng(a,t,r),!0}return!1}function Xu(e,t,a,r){if(r={lane:2,revertLane:Ad(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},yl(e)){if(t)throw Error(o(479))}else t=hu(e,a,r,2),t!==null&&cn(t,e,2)}function yl(e){var t=e.alternate;return e===Ae||t!==null&&t===Ae}function tg(e,t){Ci=dl=!0;var a=e.pending;a===null?t.next=t:(t.next=a.next,a.next=t),e.pending=t}function ng(e,t,a){if((a&4194048)!==0){var r=t.lanes;r&=e.pendingLanes,a|=r,t.lanes=a,Tt(e,a)}}var Uo={readContext:$t,use:ml,useCallback:vt,useContext:vt,useEffect:vt,useImperativeHandle:vt,useLayoutEffect:vt,useInsertionEffect:vt,useMemo:vt,useReducer:vt,useRef:vt,useState:vt,useDebugValue:vt,useDeferredValue:vt,useTransition:vt,useSyncExternalStore:vt,useId:vt,useHostTransitionStatus:vt,useFormState:vt,useActionState:vt,useOptimistic:vt,useMemoCache:vt,useCacheRefresh:vt};Uo.useEffectEvent=vt;var sg={readContext:$t,use:ml,useCallback:function(e,t){return Qt().memoizedState=[e,t===void 0?null:t],e},useContext:$t,useEffect:Ph,useImperativeHandle:function(e,t,a){a=a!=null?a.concat([e]):null,gl(4194308,4,$h.bind(null,t,e),a)},useLayoutEffect:function(e,t){return gl(4194308,4,e,t)},useInsertionEffect:function(e,t){gl(4,2,e,t)},useMemo:function(e,t){var a=Qt();t=t===void 0?null:t;var r=e();if(Ua){Vn(!0);try{e()}finally{Vn(!1)}}return a.memoizedState=[r,t],r},useReducer:function(e,t,a){var r=Qt();if(a!==void 0){var f=a(t);if(Ua){Vn(!0);try{a(t)}finally{Vn(!1)}}}else f=t;return r.memoizedState=r.baseState=f,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:f},r.queue=e,e=e.dispatch=Z1.bind(null,Ae,e),[r.memoizedState,e]},useRef:function(e){var t=Qt();return e={current:e},t.memoizedState=e},useState:function(e){e=qu(e);var t=e.queue,a=eg.bind(null,Ae,t);return t.dispatch=a,[e.memoizedState,a]},useDebugValue:Ku,useDeferredValue:function(e,t){var a=Qt();return Yu(a,e,t)},useTransition:function(){var e=qu(!1);return e=Yh.bind(null,Ae,e.queue,!0,!1),Qt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,a){var r=Ae,f=Qt();if(Ve){if(a===void 0)throw Error(o(407));a=a()}else{if(a=t(),ot===null)throw Error(o(349));(Le&127)!==0||kh(r,t,a)}f.memoizedState=a;var p={value:a,getSnapshot:t};return f.queue=p,Ph(Nh.bind(null,r,p,e),[e]),r.flags|=2048,Ai(9,{destroy:void 0},wh.bind(null,r,p,a,t),null),a},useId:function(){var e=Qt(),t=ot.identifierPrefix;if(Ve){var a=Qn,r=Xn;a=(r&~(1<<32-Jt(r)-1)).toString(32)+a,t="_"+t+"R_"+a,a=fl++,0<a&&(t+="H"+a.toString(32)),t+="_"}else a=P1++,t="_"+t+"r_"+a.toString(32)+"_";return e.memoizedState=t},useHostTransitionStatus:Wu,useFormState:Ih,useActionState:Ih,useOptimistic:function(e){var t=Qt();t.memoizedState=t.baseState=e;var a={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=a,t=Xu.bind(null,Ae,!0,a),a.dispatch=t,[e,t]},useMemoCache:Hu,useCacheRefresh:function(){return Qt().memoizedState=F1.bind(null,Ae)},useEffectEvent:function(e){var t=Qt(),a={impl:e};return t.memoizedState=a,function(){if((We&2)!==0)throw Error(o(440));return a.impl.apply(void 0,arguments)}}},Qu={readContext:$t,use:ml,useCallback:Fh,useContext:$t,useEffect:Zu,useImperativeHandle:qh,useInsertionEffect:Hh,useLayoutEffect:Gh,useMemo:Zh,useReducer:hl,useRef:zh,useState:function(){return hl(ys)},useDebugValue:Ku,useDeferredValue:function(e,t){var a=wt();return Kh(a,nt.memoizedState,e,t)},useTransition:function(){var e=hl(ys)[0],t=wt().memoizedState;return[typeof e=="boolean"?e:Bo(e),t]},useSyncExternalStore:Th,useId:Xh,useHostTransitionStatus:Wu,useFormState:Bh,useActionState:Bh,useOptimistic:function(e,t){var a=wt();return Eh(a,nt,e,t)},useMemoCache:Hu,useCacheRefresh:Qh};Qu.useEffectEvent=Vh;var ag={readContext:$t,use:ml,useCallback:Fh,useContext:$t,useEffect:Zu,useImperativeHandle:qh,useInsertionEffect:Hh,useLayoutEffect:Gh,useMemo:Zh,useReducer:$u,useRef:zh,useState:function(){return $u(ys)},useDebugValue:Ku,useDeferredValue:function(e,t){var a=wt();return nt===null?Yu(a,e,t):Kh(a,nt.memoizedState,e,t)},useTransition:function(){var e=$u(ys)[0],t=wt().memoizedState;return[typeof e=="boolean"?e:Bo(e),t]},useSyncExternalStore:Th,useId:Xh,useHostTransitionStatus:Wu,useFormState:Uh,useActionState:Uh,useOptimistic:function(e,t){var a=wt();return nt!==null?Eh(a,nt,e,t):(a.baseState=e,[e,a.queue.dispatch])},useMemoCache:Hu,useCacheRefresh:Qh};ag.useEffectEvent=Vh;function ed(e,t,a,r){t=e.memoizedState,a=a(r,t),a=a==null?t:b({},t,a),e.memoizedState=a,e.lanes===0&&(e.updateQueue.baseState=a)}var td={enqueueSetState:function(e,t,a){e=e._reactInternals;var r=vn(),f=Zs(r);f.payload=t,a!=null&&(f.callback=a),t=Ks(e,f,r),t!==null&&(cn(t,e,r),Ro(t,e,r))},enqueueReplaceState:function(e,t,a){e=e._reactInternals;var r=vn(),f=Zs(r);f.tag=1,f.payload=t,a!=null&&(f.callback=a),t=Ks(e,f,r),t!==null&&(cn(t,e,r),Ro(t,e,r))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var a=vn(),r=Zs(a);r.tag=2,t!=null&&(r.callback=t),t=Ks(e,r,a),t!==null&&(cn(t,e,a),Ro(t,e,a))}};function ig(e,t,a,r,f,p,x){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(r,p,x):t.prototype&&t.prototype.isPureReactComponent?!ko(a,r)||!ko(f,p):!0}function og(e,t,a,r){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(a,r),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(a,r),t.state!==e&&td.enqueueReplaceState(t,t.state,null)}function za(e,t){var a=t;if("ref"in t){a={};for(var r in t)r!=="ref"&&(a[r]=t[r])}if(e=e.defaultProps){a===t&&(a=b({},a));for(var f in e)a[f]===void 0&&(a[f]=e[f])}return a}function rg(e){Jr(e)}function lg(e){console.error(e)}function cg(e){Jr(e)}function bl(e,t){try{var a=e.onUncaughtError;a(t.value,{componentStack:t.stack})}catch(r){setTimeout(function(){throw r})}}function ug(e,t,a){try{var r=e.onCaughtError;r(a.value,{componentStack:a.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(f){setTimeout(function(){throw f})}}function nd(e,t,a){return a=Zs(a),a.tag=3,a.payload={element:null},a.callback=function(){bl(e,t)},a}function dg(e){return e=Zs(e),e.tag=3,e}function fg(e,t,a,r){var f=a.type.getDerivedStateFromError;if(typeof f=="function"){var p=r.value;e.payload=function(){return f(p)},e.callback=function(){ug(t,a,r)}}var x=a.stateNode;x!==null&&typeof x.componentDidCatch=="function"&&(e.callback=function(){ug(t,a,r),typeof f!="function"&&(ea===null?ea=new Set([this]):ea.add(this));var k=r.stack;this.componentDidCatch(r.value,{componentStack:k!==null?k:""})})}function K1(e,t,a,r,f){if(a.flags|=32768,r!==null&&typeof r=="object"&&typeof r.then=="function"){if(t=a.alternate,t!==null&&Si(t,a,f,!0),a=pn.current,a!==null){switch(a.tag){case 31:case 13:return An===null?Dl():a.alternate===null&&yt===0&&(yt=3),a.flags&=-257,a.flags|=65536,a.lanes=f,r===ol?a.flags|=16384:(t=a.updateQueue,t===null?a.updateQueue=new Set([r]):t.add(r),jd(e,r,f)),!1;case 22:return a.flags|=65536,r===ol?a.flags|=16384:(t=a.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([r])},a.updateQueue=t):(a=t.retryQueue,a===null?t.retryQueue=new Set([r]):a.add(r)),jd(e,r,f)),!1}throw Error(o(435,a.tag))}return jd(e,r,f),Dl(),!1}if(Ve)return t=pn.current,t!==null?((t.flags&65536)===0&&(t.flags|=256),t.flags|=65536,t.lanes=f,r!==xu&&(e=Error(o(422),{cause:r}),jo(Nn(e,a)))):(r!==xu&&(t=Error(o(423),{cause:r}),jo(Nn(t,a))),e=e.current.alternate,e.flags|=65536,f&=-f,e.lanes|=f,r=Nn(r,a),f=nd(e.stateNode,r,f),Ru(e,f),yt!==4&&(yt=2)),!1;var p=Error(o(520),{cause:r});if(p=Nn(p,a),Fo===null?Fo=[p]:Fo.push(p),yt!==4&&(yt=2),t===null)return!0;r=Nn(r,a),a=t;do{switch(a.tag){case 3:return a.flags|=65536,e=f&-f,a.lanes|=e,e=nd(a.stateNode,r,e),Ru(a,e),!1;case 1:if(t=a.type,p=a.stateNode,(a.flags&128)===0&&(typeof t.getDerivedStateFromError=="function"||p!==null&&typeof p.componentDidCatch=="function"&&(ea===null||!ea.has(p))))return a.flags|=65536,f&=-f,a.lanes|=f,f=dg(f),fg(f,e,a,r),Ru(a,f),!1}a=a.return}while(a!==null);return!1}var sd=Error(o(461)),At=!1;function qt(e,t,a,r){t.child=e===null?gh(t,null,a,r):La(t,e.child,a,r)}function pg(e,t,a,r,f){a=a.render;var p=t.ref;if("ref"in r){var x={};for(var k in r)k!=="ref"&&(x[k]=r[k])}else x=r;return Ma(t),r=Uu(e,t,a,x,p,f),k=zu(),e!==null&&!At?(Pu(e,t,f),bs(e,t,f)):(Ve&&k&&bu(t),t.flags|=1,qt(e,t,r,f),t.child)}function mg(e,t,a,r,f){if(e===null){var p=a.type;return typeof p=="function"&&!gu(p)&&p.defaultProps===void 0&&a.compare===null?(t.tag=15,t.type=p,hg(e,t,p,r,f)):(e=el(a.type,null,r,t,t.mode,f),e.ref=t.ref,e.return=t,t.child=e)}if(p=e.child,!dd(e,f)){var x=p.memoizedProps;if(a=a.compare,a=a!==null?a:ko,a(x,r)&&e.ref===t.ref)return bs(e,t,f)}return t.flags|=1,e=ps(p,r),e.ref=t.ref,e.return=t,t.child=e}function hg(e,t,a,r,f){if(e!==null){var p=e.memoizedProps;if(ko(p,r)&&e.ref===t.ref)if(At=!1,t.pendingProps=r=p,dd(e,f))(e.flags&131072)!==0&&(At=!0);else return t.lanes=e.lanes,bs(e,t,f)}return ad(e,t,a,r,f)}function gg(e,t,a,r){var f=r.children,p=e!==null?e.memoizedState:null;if(e===null&&t.stateNode===null&&(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),r.mode==="hidden"){if((t.flags&128)!==0){if(p=p!==null?p.baseLanes|a:a,e!==null){for(r=t.child=e.child,f=0;r!==null;)f=f|r.lanes|r.childLanes,r=r.sibling;r=f&~p}else r=0,t.child=null;return vg(e,t,p,a,r)}if((a&536870912)!==0)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&al(t,p!==null?p.cachePool:null),p!==null?bh(t,p):Ou(),_h(t);else return r=t.lanes=536870912,vg(e,t,p!==null?p.baseLanes|a:a,a,r)}else p!==null?(al(t,p.cachePool),bh(t,p),Js(),t.memoizedState=null):(e!==null&&al(t,null),Ou(),Js());return qt(e,t,f,a),t.child}function zo(e,t){return e!==null&&e.tag===22||t.stateNode!==null||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function vg(e,t,a,r,f){var p=Cu();return p=p===null?null:{parent:Ct._currentValue,pool:p},t.memoizedState={baseLanes:a,cachePool:p},e!==null&&al(t,null),Ou(),_h(t),e!==null&&Si(e,t,r,!0),t.childLanes=f,null}function _l(e,t){return t=Sl({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function yg(e,t,a){return La(t,e.child,null,a),e=_l(t,t.pendingProps),e.flags|=2,mn(t),t.memoizedState=null,e}function Y1(e,t,a){var r=t.pendingProps,f=(t.flags&128)!==0;if(t.flags&=-129,e===null){if(Ve){if(r.mode==="hidden")return e=_l(t,r),t.lanes=536870912,zo(null,e);if(Bu(t),(e=lt)?(e=Av(e,En),e=e!==null&&e.data==="&"?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:Hs!==null?{id:Xn,overflow:Qn}:null,retryLane:536870912,hydrationErrors:null},a=th(e),a.return=t,t.child=a,Gt=t,lt=null)):e=null,e===null)throw $s(t);return t.lanes=536870912,null}return _l(t,r)}var p=e.memoizedState;if(p!==null){var x=p.dehydrated;if(Bu(t),f)if(t.flags&256)t.flags&=-257,t=yg(e,t,a);else if(t.memoizedState!==null)t.child=e.child,t.flags|=128,t=null;else throw Error(o(558));else if(At||Si(e,t,a,!1),f=(a&e.childLanes)!==0,At||f){if(r=ot,r!==null&&(x=cs(r,a),x!==0&&x!==p.retryLane))throw p.retryLane=x,Ea(e,x),cn(r,e,x),sd;Dl(),t=yg(e,t,a)}else e=p.treeContext,lt=Dn(x.nextSibling),Gt=t,Ve=!0,Gs=null,En=!1,e!==null&&ah(t,e),t=_l(t,r),t.flags|=4096;return t}return e=ps(e.child,{mode:r.mode,children:r.children}),e.ref=t.ref,t.child=e,e.return=t,e}function xl(e,t){var a=t.ref;if(a===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof a!="function"&&typeof a!="object")throw Error(o(284));(e===null||e.ref!==a)&&(t.flags|=4194816)}}function ad(e,t,a,r,f){return Ma(t),a=Uu(e,t,a,r,void 0,f),r=zu(),e!==null&&!At?(Pu(e,t,f),bs(e,t,f)):(Ve&&r&&bu(t),t.flags|=1,qt(e,t,a,f),t.child)}function bg(e,t,a,r,f,p){return Ma(t),t.updateQueue=null,a=Sh(t,r,a,f),xh(e),r=zu(),e!==null&&!At?(Pu(e,t,p),bs(e,t,p)):(Ve&&r&&bu(t),t.flags|=1,qt(e,t,a,p),t.child)}function _g(e,t,a,r,f){if(Ma(t),t.stateNode===null){var p=yi,x=a.contextType;typeof x=="object"&&x!==null&&(p=$t(x)),p=new a(r,p),t.memoizedState=p.state!==null&&p.state!==void 0?p.state:null,p.updater=td,t.stateNode=p,p._reactInternals=t,p=t.stateNode,p.props=r,p.state=t.memoizedState,p.refs={},Au(t),x=a.contextType,p.context=typeof x=="object"&&x!==null?$t(x):yi,p.state=t.memoizedState,x=a.getDerivedStateFromProps,typeof x=="function"&&(ed(t,a,x,r),p.state=t.memoizedState),typeof a.getDerivedStateFromProps=="function"||typeof p.getSnapshotBeforeUpdate=="function"||typeof p.UNSAFE_componentWillMount!="function"&&typeof p.componentWillMount!="function"||(x=p.state,typeof p.componentWillMount=="function"&&p.componentWillMount(),typeof p.UNSAFE_componentWillMount=="function"&&p.UNSAFE_componentWillMount(),x!==p.state&&td.enqueueReplaceState(p,p.state,null),Oo(t,r,p,f),Mo(),p.state=t.memoizedState),typeof p.componentDidMount=="function"&&(t.flags|=4194308),r=!0}else if(e===null){p=t.stateNode;var k=t.memoizedProps,R=za(a,k);p.props=R;var V=p.context,Y=a.contextType;x=yi,typeof Y=="object"&&Y!==null&&(x=$t(Y));var W=a.getDerivedStateFromProps;Y=typeof W=="function"||typeof p.getSnapshotBeforeUpdate=="function",k=t.pendingProps!==k,Y||typeof p.UNSAFE_componentWillReceiveProps!="function"&&typeof p.componentWillReceiveProps!="function"||(k||V!==x)&&og(t,p,r,x),Fs=!1;var $=t.memoizedState;p.state=$,Oo(t,r,p,f),Mo(),V=t.memoizedState,k||$!==V||Fs?(typeof W=="function"&&(ed(t,a,W,r),V=t.memoizedState),(R=Fs||ig(t,a,R,r,$,V,x))?(Y||typeof p.UNSAFE_componentWillMount!="function"&&typeof p.componentWillMount!="function"||(typeof p.componentWillMount=="function"&&p.componentWillMount(),typeof p.UNSAFE_componentWillMount=="function"&&p.UNSAFE_componentWillMount()),typeof p.componentDidMount=="function"&&(t.flags|=4194308)):(typeof p.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=V),p.props=r,p.state=V,p.context=x,r=R):(typeof p.componentDidMount=="function"&&(t.flags|=4194308),r=!1)}else{p=t.stateNode,Du(e,t),x=t.memoizedProps,Y=za(a,x),p.props=Y,W=t.pendingProps,$=p.context,V=a.contextType,R=yi,typeof V=="object"&&V!==null&&(R=$t(V)),k=a.getDerivedStateFromProps,(V=typeof k=="function"||typeof p.getSnapshotBeforeUpdate=="function")||typeof p.UNSAFE_componentWillReceiveProps!="function"&&typeof p.componentWillReceiveProps!="function"||(x!==W||$!==R)&&og(t,p,r,R),Fs=!1,$=t.memoizedState,p.state=$,Oo(t,r,p,f),Mo();var K=t.memoizedState;x!==W||$!==K||Fs||e!==null&&e.dependencies!==null&&nl(e.dependencies)?(typeof k=="function"&&(ed(t,a,k,r),K=t.memoizedState),(Y=Fs||ig(t,a,Y,r,$,K,R)||e!==null&&e.dependencies!==null&&nl(e.dependencies))?(V||typeof p.UNSAFE_componentWillUpdate!="function"&&typeof p.componentWillUpdate!="function"||(typeof p.componentWillUpdate=="function"&&p.componentWillUpdate(r,K,R),typeof p.UNSAFE_componentWillUpdate=="function"&&p.UNSAFE_componentWillUpdate(r,K,R)),typeof p.componentDidUpdate=="function"&&(t.flags|=4),typeof p.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof p.componentDidUpdate!="function"||x===e.memoizedProps&&$===e.memoizedState||(t.flags|=4),typeof p.getSnapshotBeforeUpdate!="function"||x===e.memoizedProps&&$===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=K),p.props=r,p.state=K,p.context=R,r=Y):(typeof p.componentDidUpdate!="function"||x===e.memoizedProps&&$===e.memoizedState||(t.flags|=4),typeof p.getSnapshotBeforeUpdate!="function"||x===e.memoizedProps&&$===e.memoizedState||(t.flags|=1024),r=!1)}return p=r,xl(e,t),r=(t.flags&128)!==0,p||r?(p=t.stateNode,a=r&&typeof a.getDerivedStateFromError!="function"?null:p.render(),t.flags|=1,e!==null&&r?(t.child=La(t,e.child,null,f),t.child=La(t,null,a,f)):qt(e,t,a,f),t.memoizedState=p.state,e=t.child):e=bs(e,t,f),e}function xg(e,t,a,r){return Da(),t.flags|=256,qt(e,t,a,r),t.child}var id={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function od(e){return{baseLanes:e,cachePool:uh()}}function rd(e,t,a){return e=e!==null?e.childLanes&~a:0,t&&(e|=gn),e}function Sg(e,t,a){var r=t.pendingProps,f=!1,p=(t.flags&128)!==0,x;if((x=p)||(x=e!==null&&e.memoizedState===null?!1:(kt.current&2)!==0),x&&(f=!0,t.flags&=-129),x=(t.flags&32)!==0,t.flags&=-33,e===null){if(Ve){if(f?Ys(t):Js(),(e=lt)?(e=Av(e,En),e=e!==null&&e.data!=="&"?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:Hs!==null?{id:Xn,overflow:Qn}:null,retryLane:536870912,hydrationErrors:null},a=th(e),a.return=t,t.child=a,Gt=t,lt=null)):e=null,e===null)throw $s(t);return Gd(e)?t.lanes=32:t.lanes=536870912,null}var k=r.children;return r=r.fallback,f?(Js(),f=t.mode,k=Sl({mode:"hidden",children:k},f),r=Aa(r,f,a,null),k.return=t,r.return=t,k.sibling=r,t.child=k,r=t.child,r.memoizedState=od(a),r.childLanes=rd(e,x,a),t.memoizedState=id,zo(null,r)):(Ys(t),ld(t,k))}var R=e.memoizedState;if(R!==null&&(k=R.dehydrated,k!==null)){if(p)t.flags&256?(Ys(t),t.flags&=-257,t=cd(e,t,a)):t.memoizedState!==null?(Js(),t.child=e.child,t.flags|=128,t=null):(Js(),k=r.fallback,f=t.mode,r=Sl({mode:"visible",children:r.children},f),k=Aa(k,f,a,null),k.flags|=2,r.return=t,k.return=t,r.sibling=k,t.child=r,La(t,e.child,null,a),r=t.child,r.memoizedState=od(a),r.childLanes=rd(e,x,a),t.memoizedState=id,t=zo(null,r));else if(Ys(t),Gd(k)){if(x=k.nextSibling&&k.nextSibling.dataset,x)var V=x.dgst;x=V,r=Error(o(419)),r.stack="",r.digest=x,jo({value:r,source:null,stack:null}),t=cd(e,t,a)}else if(At||Si(e,t,a,!1),x=(a&e.childLanes)!==0,At||x){if(x=ot,x!==null&&(r=cs(x,a),r!==0&&r!==R.retryLane))throw R.retryLane=r,Ea(e,r),cn(x,e,r),sd;Hd(k)||Dl(),t=cd(e,t,a)}else Hd(k)?(t.flags|=192,t.child=e.child,t=null):(e=R.treeContext,lt=Dn(k.nextSibling),Gt=t,Ve=!0,Gs=null,En=!1,e!==null&&ah(t,e),t=ld(t,r.children),t.flags|=4096);return t}return f?(Js(),k=r.fallback,f=t.mode,R=e.child,V=R.sibling,r=ps(R,{mode:"hidden",children:r.children}),r.subtreeFlags=R.subtreeFlags&65011712,V!==null?k=ps(V,k):(k=Aa(k,f,a,null),k.flags|=2),k.return=t,r.return=t,r.sibling=k,t.child=r,zo(null,r),r=t.child,k=e.child.memoizedState,k===null?k=od(a):(f=k.cachePool,f!==null?(R=Ct._currentValue,f=f.parent!==R?{parent:R,pool:R}:f):f=uh(),k={baseLanes:k.baseLanes|a,cachePool:f}),r.memoizedState=k,r.childLanes=rd(e,x,a),t.memoizedState=id,zo(e.child,r)):(Ys(t),a=e.child,e=a.sibling,a=ps(a,{mode:"visible",children:r.children}),a.return=t,a.sibling=null,e!==null&&(x=t.deletions,x===null?(t.deletions=[e],t.flags|=16):x.push(e)),t.child=a,t.memoizedState=null,a)}function ld(e,t){return t=Sl({mode:"visible",children:t},e.mode),t.return=e,e.child=t}function Sl(e,t){return e=fn(22,e,null,t),e.lanes=0,e}function cd(e,t,a){return La(t,e.child,null,a),e=ld(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Tg(e,t,a){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),ku(e.return,t,a)}function ud(e,t,a,r,f,p){var x=e.memoizedState;x===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:a,tailMode:f,treeForkCount:p}:(x.isBackwards=t,x.rendering=null,x.renderingStartTime=0,x.last=r,x.tail=a,x.tailMode=f,x.treeForkCount=p)}function kg(e,t,a){var r=t.pendingProps,f=r.revealOrder,p=r.tail;r=r.children;var x=kt.current,k=(x&2)!==0;if(k?(x=x&1|2,t.flags|=128):x&=1,Se(kt,x),qt(e,t,r,a),r=Ve?No:0,!k&&e!==null&&(e.flags&128)!==0)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Tg(e,a,t);else if(e.tag===19)Tg(e,a,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}switch(f){case"forwards":for(a=t.child,f=null;a!==null;)e=a.alternate,e!==null&&ul(e)===null&&(f=a),a=a.sibling;a=f,a===null?(f=t.child,t.child=null):(f=a.sibling,a.sibling=null),ud(t,!1,f,a,p,r);break;case"backwards":case"unstable_legacy-backwards":for(a=null,f=t.child,t.child=null;f!==null;){if(e=f.alternate,e!==null&&ul(e)===null){t.child=f;break}e=f.sibling,f.sibling=a,a=f,f=e}ud(t,!0,a,null,p,r);break;case"together":ud(t,!1,null,null,void 0,r);break;default:t.memoizedState=null}return t.child}function bs(e,t,a){if(e!==null&&(t.dependencies=e.dependencies),Qs|=t.lanes,(a&t.childLanes)===0)if(e!==null){if(Si(e,t,a,!1),(a&t.childLanes)===0)return null}else return null;if(e!==null&&t.child!==e.child)throw Error(o(153));if(t.child!==null){for(e=t.child,a=ps(e,e.pendingProps),t.child=a,a.return=t;e.sibling!==null;)e=e.sibling,a=a.sibling=ps(e,e.pendingProps),a.return=t;a.sibling=null}return t.child}function dd(e,t){return(e.lanes&t)!==0?!0:(e=e.dependencies,!!(e!==null&&nl(e)))}function J1(e,t,a){switch(t.tag){case 3:Ce(t,t.stateNode.containerInfo),qs(t,Ct,e.memoizedState.cache),Da();break;case 27:case 5:St(t);break;case 4:Ce(t,t.stateNode.containerInfo);break;case 10:qs(t,t.type,t.memoizedProps.value);break;case 31:if(t.memoizedState!==null)return t.flags|=128,Bu(t),null;break;case 13:var r=t.memoizedState;if(r!==null)return r.dehydrated!==null?(Ys(t),t.flags|=128,null):(a&t.child.childLanes)!==0?Sg(e,t,a):(Ys(t),e=bs(e,t,a),e!==null?e.sibling:null);Ys(t);break;case 19:var f=(e.flags&128)!==0;if(r=(a&t.childLanes)!==0,r||(Si(e,t,a,!1),r=(a&t.childLanes)!==0),f){if(r)return kg(e,t,a);t.flags|=128}if(f=t.memoizedState,f!==null&&(f.rendering=null,f.tail=null,f.lastEffect=null),Se(kt,kt.current),r)break;return null;case 22:return t.lanes=0,gg(e,t,a,t.pendingProps);case 24:qs(t,Ct,e.memoizedState.cache)}return bs(e,t,a)}function wg(e,t,a){if(e!==null)if(e.memoizedProps!==t.pendingProps)At=!0;else{if(!dd(e,a)&&(t.flags&128)===0)return At=!1,J1(e,t,a);At=(e.flags&131072)!==0}else At=!1,Ve&&(t.flags&1048576)!==0&&sh(t,No,t.index);switch(t.lanes=0,t.tag){case 16:e:{var r=t.pendingProps;if(e=Ia(t.elementType),t.type=e,typeof e=="function")gu(e)?(r=za(e,r),t.tag=1,t=_g(null,t,e,r,a)):(t.tag=0,t=ad(null,t,e,r,a));else{if(e!=null){var f=e.$$typeof;if(f===M){t.tag=11,t=pg(null,t,e,r,a);break e}else if(f===H){t.tag=14,t=mg(null,t,e,r,a);break e}}throw t=oe(e)||e,Error(o(306,t,""))}}return t;case 0:return ad(e,t,t.type,t.pendingProps,a);case 1:return r=t.type,f=za(r,t.pendingProps),_g(e,t,r,f,a);case 3:e:{if(Ce(t,t.stateNode.containerInfo),e===null)throw Error(o(387));r=t.pendingProps;var p=t.memoizedState;f=p.element,Du(e,t),Oo(t,r,null,a);var x=t.memoizedState;if(r=x.cache,qs(t,Ct,r),r!==p.cache&&wu(t,[Ct],a,!0),Mo(),r=x.element,p.isDehydrated)if(p={element:r,isDehydrated:!1,cache:x.cache},t.updateQueue.baseState=p,t.memoizedState=p,t.flags&256){t=xg(e,t,r,a);break e}else if(r!==f){f=Nn(Error(o(424)),t),jo(f),t=xg(e,t,r,a);break e}else{switch(e=t.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName==="HTML"?e.ownerDocument.body:e}for(lt=Dn(e.firstChild),Gt=t,Ve=!0,Gs=null,En=!0,a=gh(t,null,r,a),t.child=a;a;)a.flags=a.flags&-3|4096,a=a.sibling}else{if(Da(),r===f){t=bs(e,t,a);break e}qt(e,t,r,a)}t=t.child}return t;case 26:return xl(e,t),e===null?(a=Bv(t.type,null,t.pendingProps,null))?t.memoizedState=a:Ve||(a=t.type,e=t.pendingProps,r=Ul(fe.current).createElement(a),r[Ht]=t,r[nn]=e,Ft(r,a,e),Ut(r),t.stateNode=r):t.memoizedState=Bv(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return St(t),e===null&&Ve&&(r=t.stateNode=Mv(t.type,t.pendingProps,fe.current),Gt=t,En=!0,f=lt,aa(t.type)?($d=f,lt=Dn(r.firstChild)):lt=f),qt(e,t,t.pendingProps.children,a),xl(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&Ve&&((f=r=lt)&&(r=NS(r,t.type,t.pendingProps,En),r!==null?(t.stateNode=r,Gt=t,lt=Dn(r.firstChild),En=!1,f=!0):f=!1),f||$s(t)),St(t),f=t.type,p=t.pendingProps,x=e!==null?e.memoizedProps:null,r=p.children,zd(f,p)?r=null:x!==null&&zd(f,x)&&(t.flags|=32),t.memoizedState!==null&&(f=Uu(e,t,V1,null,null,a),er._currentValue=f),xl(e,t),qt(e,t,r,a),t.child;case 6:return e===null&&Ve&&((e=a=lt)&&(a=jS(a,t.pendingProps,En),a!==null?(t.stateNode=a,Gt=t,lt=null,e=!0):e=!1),e||$s(t)),null;case 13:return Sg(e,t,a);case 4:return Ce(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=La(t,null,r,a):qt(e,t,r,a),t.child;case 11:return pg(e,t,t.type,t.pendingProps,a);case 7:return qt(e,t,t.pendingProps,a),t.child;case 8:return qt(e,t,t.pendingProps.children,a),t.child;case 12:return qt(e,t,t.pendingProps.children,a),t.child;case 10:return r=t.pendingProps,qs(t,t.type,r.value),qt(e,t,r.children,a),t.child;case 9:return f=t.type._context,r=t.pendingProps.children,Ma(t),f=$t(f),r=r(f),t.flags|=1,qt(e,t,r,a),t.child;case 14:return mg(e,t,t.type,t.pendingProps,a);case 15:return hg(e,t,t.type,t.pendingProps,a);case 19:return kg(e,t,a);case 31:return Y1(e,t,a);case 22:return gg(e,t,a,t.pendingProps);case 24:return Ma(t),r=$t(Ct),e===null?(f=Cu(),f===null&&(f=ot,p=Nu(),f.pooledCache=p,p.refCount++,p!==null&&(f.pooledCacheLanes|=a),f=p),t.memoizedState={parent:r,cache:f},Au(t),qs(t,Ct,f)):((e.lanes&a)!==0&&(Du(e,t),Oo(t,null,null,a),Mo()),f=e.memoizedState,p=t.memoizedState,f.parent!==r?(f={parent:r,cache:r},t.memoizedState=f,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=f),qs(t,Ct,r)):(r=p.cache,qs(t,Ct,r),r!==f.cache&&wu(t,[Ct],a,!0))),qt(e,t,t.pendingProps.children,a),t.child;case 29:throw t.pendingProps}throw Error(o(156,t.tag))}function _s(e){e.flags|=4}function fd(e,t,a,r,f){if((t=(e.mode&32)!==0)&&(t=!1),t){if(e.flags|=16777216,(f&335544128)===f)if(e.stateNode.complete)e.flags|=8192;else if(Xg())e.flags|=8192;else throw Ba=ol,Eu}else e.flags&=-16777217}function Ng(e,t){if(t.type!=="stylesheet"||(t.state.loading&4)!==0)e.flags&=-16777217;else if(e.flags|=16777216,!Vv(t))if(Xg())e.flags|=8192;else throw Ba=ol,Eu}function Tl(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag!==22?qe():536870912,e.lanes|=t,Oi|=t)}function Po(e,t){if(!Ve)switch(e.tailMode){case"hidden":t=e.tail;for(var a=null;t!==null;)t.alternate!==null&&(a=t),t=t.sibling;a===null?e.tail=null:a.sibling=null;break;case"collapsed":a=e.tail;for(var r=null;a!==null;)a.alternate!==null&&(r=a),a=a.sibling;r===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ct(e){var t=e.alternate!==null&&e.alternate.child===e.child,a=0,r=0;if(t)for(var f=e.child;f!==null;)a|=f.lanes|f.childLanes,r|=f.subtreeFlags&65011712,r|=f.flags&65011712,f.return=e,f=f.sibling;else for(f=e.child;f!==null;)a|=f.lanes|f.childLanes,r|=f.subtreeFlags,r|=f.flags,f.return=e,f=f.sibling;return e.subtreeFlags|=r,e.childLanes=a,t}function W1(e,t,a){var r=t.pendingProps;switch(_u(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return ct(t),null;case 1:return ct(t),null;case 3:return a=t.stateNode,r=null,e!==null&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),gs(Ct),Lt(),a.pendingContext&&(a.context=a.pendingContext,a.pendingContext=null),(e===null||e.child===null)&&(xi(t)?_s(t):e===null||e.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,Su())),ct(t),null;case 26:var f=t.type,p=t.memoizedState;return e===null?(_s(t),p!==null?(ct(t),Ng(t,p)):(ct(t),fd(t,f,null,r,a))):p?p!==e.memoizedState?(_s(t),ct(t),Ng(t,p)):(ct(t),t.flags&=-16777217):(e=e.memoizedProps,e!==r&&_s(t),ct(t),fd(t,f,e,r,a)),null;case 27:if(I(t),a=fe.current,f=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==r&&_s(t);else{if(!r){if(t.stateNode===null)throw Error(o(166));return ct(t),null}e=Oe.current,xi(t)?ih(t):(e=Mv(f,r,a),t.stateNode=e,_s(t))}return ct(t),null;case 5:if(I(t),f=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==r&&_s(t);else{if(!r){if(t.stateNode===null)throw Error(o(166));return ct(t),null}if(p=Oe.current,xi(t))ih(t);else{var x=Ul(fe.current);switch(p){case 1:p=x.createElementNS("http://www.w3.org/2000/svg",f);break;case 2:p=x.createElementNS("http://www.w3.org/1998/Math/MathML",f);break;default:switch(f){case"svg":p=x.createElementNS("http://www.w3.org/2000/svg",f);break;case"math":p=x.createElementNS("http://www.w3.org/1998/Math/MathML",f);break;case"script":p=x.createElement("div"),p.innerHTML="<script><\/script>",p=p.removeChild(p.firstChild);break;case"select":p=typeof r.is=="string"?x.createElement("select",{is:r.is}):x.createElement("select"),r.multiple?p.multiple=!0:r.size&&(p.size=r.size);break;default:p=typeof r.is=="string"?x.createElement(f,{is:r.is}):x.createElement(f)}}p[Ht]=t,p[nn]=r;e:for(x=t.child;x!==null;){if(x.tag===5||x.tag===6)p.appendChild(x.stateNode);else if(x.tag!==4&&x.tag!==27&&x.child!==null){x.child.return=x,x=x.child;continue}if(x===t)break e;for(;x.sibling===null;){if(x.return===null||x.return===t)break e;x=x.return}x.sibling.return=x.return,x=x.sibling}t.stateNode=p;e:switch(Ft(p,f,r),f){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}r&&_s(t)}}return ct(t),fd(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,a),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&_s(t);else{if(typeof r!="string"&&t.stateNode===null)throw Error(o(166));if(e=fe.current,xi(t)){if(e=t.stateNode,a=t.memoizedProps,r=null,f=Gt,f!==null)switch(f.tag){case 27:case 5:r=f.memoizedProps}e[Ht]=t,e=!!(e.nodeValue===a||r!==null&&r.suppressHydrationWarning===!0||Sv(e.nodeValue,a)),e||$s(t,!0)}else e=Ul(e).createTextNode(r),e[Ht]=t,t.stateNode=e}return ct(t),null;case 31:if(a=t.memoizedState,e===null||e.memoizedState!==null){if(r=xi(t),a!==null){if(e===null){if(!r)throw Error(o(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(o(557));e[Ht]=t}else Da(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;ct(t),e=!1}else a=Su(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),e=!0;if(!e)return t.flags&256?(mn(t),t):(mn(t),null);if((t.flags&128)!==0)throw Error(o(558))}return ct(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(f=xi(t),r!==null&&r.dehydrated!==null){if(e===null){if(!f)throw Error(o(318));if(f=t.memoizedState,f=f!==null?f.dehydrated:null,!f)throw Error(o(317));f[Ht]=t}else Da(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;ct(t),f=!1}else f=Su(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=f),f=!0;if(!f)return t.flags&256?(mn(t),t):(mn(t),null)}return mn(t),(t.flags&128)!==0?(t.lanes=a,t):(a=r!==null,e=e!==null&&e.memoizedState!==null,a&&(r=t.child,f=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(f=r.alternate.memoizedState.cachePool.pool),p=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(p=r.memoizedState.cachePool.pool),p!==f&&(r.flags|=2048)),a!==e&&a&&(t.child.flags|=8192),Tl(t,t.updateQueue),ct(t),null);case 4:return Lt(),e===null&&Od(t.stateNode.containerInfo),ct(t),null;case 10:return gs(t.type),ct(t),null;case 19:if(we(kt),r=t.memoizedState,r===null)return ct(t),null;if(f=(t.flags&128)!==0,p=r.rendering,p===null)if(f)Po(r,!1);else{if(yt!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(p=ul(e),p!==null){for(t.flags|=128,Po(r,!1),e=p.updateQueue,t.updateQueue=e,Tl(t,e),t.subtreeFlags=0,e=a,a=t.child;a!==null;)eh(a,e),a=a.sibling;return Se(kt,kt.current&1|2),Ve&&ms(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Je()>Cl&&(t.flags|=128,f=!0,Po(r,!1),t.lanes=4194304)}else{if(!f)if(e=ul(p),e!==null){if(t.flags|=128,f=!0,e=e.updateQueue,t.updateQueue=e,Tl(t,e),Po(r,!0),r.tail===null&&r.tailMode==="hidden"&&!p.alternate&&!Ve)return ct(t),null}else 2*Je()-r.renderingStartTime>Cl&&a!==536870912&&(t.flags|=128,f=!0,Po(r,!1),t.lanes=4194304);r.isBackwards?(p.sibling=t.child,t.child=p):(e=r.last,e!==null?e.sibling=p:t.child=p,r.last=p)}return r.tail!==null?(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Je(),e.sibling=null,a=kt.current,Se(kt,f?a&1|2:a&1),Ve&&ms(t,r.treeForkCount),e):(ct(t),null);case 22:case 23:return mn(t),Iu(),r=t.memoizedState!==null,e!==null?e.memoizedState!==null!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?(a&536870912)!==0&&(t.flags&128)===0&&(ct(t),t.subtreeFlags&6&&(t.flags|=8192)):ct(t),a=t.updateQueue,a!==null&&Tl(t,a.retryQueue),a=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(a=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==a&&(t.flags|=2048),e!==null&&we(Oa),null;case 24:return a=null,e!==null&&(a=e.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),gs(Ct),ct(t),null;case 25:return null;case 30:return null}throw Error(o(156,t.tag))}function X1(e,t){switch(_u(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return gs(Ct),Lt(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return I(t),null;case 31:if(t.memoizedState!==null){if(mn(t),t.alternate===null)throw Error(o(340));Da()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(mn(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(o(340));Da()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return we(kt),null;case 4:return Lt(),null;case 10:return gs(t.type),null;case 22:case 23:return mn(t),Iu(),e!==null&&we(Oa),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return gs(Ct),null;case 25:return null;default:return null}}function jg(e,t){switch(_u(t),t.tag){case 3:gs(Ct),Lt();break;case 26:case 27:case 5:I(t);break;case 4:Lt();break;case 31:t.memoizedState!==null&&mn(t);break;case 13:mn(t);break;case 19:we(kt);break;case 10:gs(t.type);break;case 22:case 23:mn(t),Iu(),e!==null&&we(Oa);break;case 24:gs(Ct)}}function Vo(e,t){try{var a=t.updateQueue,r=a!==null?a.lastEffect:null;if(r!==null){var f=r.next;a=f;do{if((a.tag&e)===e){r=void 0;var p=a.create,x=a.inst;r=p(),x.destroy=r}a=a.next}while(a!==f)}}catch(k){et(t,t.return,k)}}function Ws(e,t,a){try{var r=t.updateQueue,f=r!==null?r.lastEffect:null;if(f!==null){var p=f.next;r=p;do{if((r.tag&e)===e){var x=r.inst,k=x.destroy;if(k!==void 0){x.destroy=void 0,f=t;var R=a,V=k;try{V()}catch(Y){et(f,R,Y)}}}r=r.next}while(r!==p)}}catch(Y){et(t,t.return,Y)}}function Cg(e){var t=e.updateQueue;if(t!==null){var a=e.stateNode;try{yh(t,a)}catch(r){et(e,e.return,r)}}}function Eg(e,t,a){a.props=za(e.type,e.memoizedProps),a.state=e.memoizedState;try{a.componentWillUnmount()}catch(r){et(e,t,r)}}function Ho(e,t){try{var a=e.ref;if(a!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof a=="function"?e.refCleanup=a(r):a.current=r}}catch(f){et(e,t,f)}}function es(e,t){var a=e.ref,r=e.refCleanup;if(a!==null)if(typeof r=="function")try{r()}catch(f){et(e,t,f)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(f){et(e,t,f)}else a.current=null}function Ag(e){var t=e.type,a=e.memoizedProps,r=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":a.autoFocus&&r.focus();break e;case"img":a.src?r.src=a.src:a.srcSet&&(r.srcset=a.srcSet)}}catch(f){et(e,e.return,f)}}function pd(e,t,a){try{var r=e.stateNode;_S(r,e.type,a,t),r[nn]=t}catch(f){et(e,e.return,f)}}function Dg(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&aa(e.type)||e.tag===4}function md(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Dg(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.tag===27&&aa(e.type)||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 hd(e,t,a){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(e,t):(t=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,t.appendChild(e),a=a._reactRootContainer,a!=null||t.onclick!==null||(t.onclick=ds));else if(r!==4&&(r===27&&aa(e.type)&&(a=e.stateNode,t=null),e=e.child,e!==null))for(hd(e,t,a),e=e.sibling;e!==null;)hd(e,t,a),e=e.sibling}function kl(e,t,a){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?a.insertBefore(e,t):a.appendChild(e);else if(r!==4&&(r===27&&aa(e.type)&&(a=e.stateNode),e=e.child,e!==null))for(kl(e,t,a),e=e.sibling;e!==null;)kl(e,t,a),e=e.sibling}function Rg(e){var t=e.stateNode,a=e.memoizedProps;try{for(var r=e.type,f=t.attributes;f.length;)t.removeAttributeNode(f[0]);Ft(t,r,a),t[Ht]=e,t[nn]=a}catch(p){et(e,e.return,p)}}var xs=!1,Dt=!1,gd=!1,Mg=typeof WeakSet=="function"?WeakSet:Set,zt=null;function Q1(e,t){if(e=e.containerInfo,Ld=ql,e=qm(e),cu(e)){if("selectionStart"in e)var a={start:e.selectionStart,end:e.selectionEnd};else e:{a=(a=e.ownerDocument)&&a.defaultView||window;var r=a.getSelection&&a.getSelection();if(r&&r.rangeCount!==0){a=r.anchorNode;var f=r.anchorOffset,p=r.focusNode;r=r.focusOffset;try{a.nodeType,p.nodeType}catch{a=null;break e}var x=0,k=-1,R=-1,V=0,Y=0,W=e,$=null;t:for(;;){for(var K;W!==a||f!==0&&W.nodeType!==3||(k=x+f),W!==p||r!==0&&W.nodeType!==3||(R=x+r),W.nodeType===3&&(x+=W.nodeValue.length),(K=W.firstChild)!==null;)$=W,W=K;for(;;){if(W===e)break t;if($===a&&++V===f&&(k=x),$===p&&++Y===r&&(R=x),(K=W.nextSibling)!==null)break;W=$,$=W.parentNode}W=K}a=k===-1||R===-1?null:{start:k,end:R}}else a=null}a=a||{start:0,end:0}}else a=null;for(Ud={focusedElem:e,selectionRange:a},ql=!1,zt=t;zt!==null;)if(t=zt,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,zt=e;else for(;zt!==null;){switch(t=zt,p=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(a=0;a<e.length;a++)f=e[a],f.ref.impl=f.nextImpl;break;case 11:case 15:break;case 1:if((e&1024)!==0&&p!==null){e=void 0,a=t,f=p.memoizedProps,p=p.memoizedState,r=a.stateNode;try{var ge=za(a.type,f);e=r.getSnapshotBeforeUpdate(ge,p),r.__reactInternalSnapshotBeforeUpdate=e}catch(xe){et(a,a.return,xe)}}break;case 3:if((e&1024)!==0){if(e=t.stateNode.containerInfo,a=e.nodeType,a===9)Vd(e);else if(a===1)switch(e.nodeName){case"HEAD":case"HTML":case"BODY":Vd(e);break;default:e.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((e&1024)!==0)throw Error(o(163))}if(e=t.sibling,e!==null){e.return=t.return,zt=e;break}zt=t.return}}function Og(e,t,a){var r=a.flags;switch(a.tag){case 0:case 11:case 15:Ts(e,a),r&4&&Vo(5,a);break;case 1:if(Ts(e,a),r&4)if(e=a.stateNode,t===null)try{e.componentDidMount()}catch(x){et(a,a.return,x)}else{var f=za(a.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(f,t,e.__reactInternalSnapshotBeforeUpdate)}catch(x){et(a,a.return,x)}}r&64&&Cg(a),r&512&&Ho(a,a.return);break;case 3:if(Ts(e,a),r&64&&(e=a.updateQueue,e!==null)){if(t=null,a.child!==null)switch(a.child.tag){case 27:case 5:t=a.child.stateNode;break;case 1:t=a.child.stateNode}try{yh(e,t)}catch(x){et(a,a.return,x)}}break;case 27:t===null&&r&4&&Rg(a);case 26:case 5:Ts(e,a),t===null&&r&4&&Ag(a),r&512&&Ho(a,a.return);break;case 12:Ts(e,a);break;case 31:Ts(e,a),r&4&&Lg(e,a);break;case 13:Ts(e,a),r&4&&Ug(e,a),r&64&&(e=a.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(a=lS.bind(null,a),CS(e,a))));break;case 22:if(r=a.memoizedState!==null||xs,!r){t=t!==null&&t.memoizedState!==null||Dt,f=xs;var p=Dt;xs=r,(Dt=t)&&!p?ks(e,a,(a.subtreeFlags&8772)!==0):Ts(e,a),xs=f,Dt=p}break;case 30:break;default:Ts(e,a)}}function Ig(e){var t=e.alternate;t!==null&&(e.alternate=null,Ig(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&Fc(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var mt=null,an=!1;function Ss(e,t,a){for(a=a.child;a!==null;)Bg(e,t,a),a=a.sibling}function Bg(e,t,a){if(Yt&&typeof Yt.onCommitFiberUnmount=="function")try{Yt.onCommitFiberUnmount(zs,a)}catch{}switch(a.tag){case 26:Dt||es(a,t),Ss(e,t,a),a.memoizedState?a.memoizedState.count--:a.stateNode&&(a=a.stateNode,a.parentNode.removeChild(a));break;case 27:Dt||es(a,t);var r=mt,f=an;aa(a.type)&&(mt=a.stateNode,an=!1),Ss(e,t,a),Wo(a.stateNode),mt=r,an=f;break;case 5:Dt||es(a,t);case 6:if(r=mt,f=an,mt=null,Ss(e,t,a),mt=r,an=f,mt!==null)if(an)try{(mt.nodeType===9?mt.body:mt.nodeName==="HTML"?mt.ownerDocument.body:mt).removeChild(a.stateNode)}catch(p){et(a,t,p)}else try{mt.removeChild(a.stateNode)}catch(p){et(a,t,p)}break;case 18:mt!==null&&(an?(e=mt,Cv(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,a.stateNode),Hi(e)):Cv(mt,a.stateNode));break;case 4:r=mt,f=an,mt=a.stateNode.containerInfo,an=!0,Ss(e,t,a),mt=r,an=f;break;case 0:case 11:case 14:case 15:Ws(2,a,t),Dt||Ws(4,a,t),Ss(e,t,a);break;case 1:Dt||(es(a,t),r=a.stateNode,typeof r.componentWillUnmount=="function"&&Eg(a,t,r)),Ss(e,t,a);break;case 21:Ss(e,t,a);break;case 22:Dt=(r=Dt)||a.memoizedState!==null,Ss(e,t,a),Dt=r;break;default:Ss(e,t,a)}}function Lg(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{Hi(e)}catch(a){et(t,t.return,a)}}}function Ug(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{Hi(e)}catch(a){et(t,t.return,a)}}function eS(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return t===null&&(t=e.stateNode=new Mg),t;case 22:return e=e.stateNode,t=e._retryCache,t===null&&(t=e._retryCache=new Mg),t;default:throw Error(o(435,e.tag))}}function wl(e,t){var a=eS(e);t.forEach(function(r){if(!a.has(r)){a.add(r);var f=cS.bind(null,e,r);r.then(f,f)}})}function on(e,t){var a=t.deletions;if(a!==null)for(var r=0;r<a.length;r++){var f=a[r],p=e,x=t,k=x;e:for(;k!==null;){switch(k.tag){case 27:if(aa(k.type)){mt=k.stateNode,an=!1;break e}break;case 5:mt=k.stateNode,an=!1;break e;case 3:case 4:mt=k.stateNode.containerInfo,an=!0;break e}k=k.return}if(mt===null)throw Error(o(160));Bg(p,x,f),mt=null,an=!1,p=f.alternate,p!==null&&(p.return=null),f.return=null}if(t.subtreeFlags&13886)for(t=t.child;t!==null;)zg(t,e),t=t.sibling}var $n=null;function zg(e,t){var a=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:on(t,e),rn(e),r&4&&(Ws(3,e,e.return),Vo(3,e),Ws(5,e,e.return));break;case 1:on(t,e),rn(e),r&512&&(Dt||a===null||es(a,a.return)),r&64&&xs&&(e=e.updateQueue,e!==null&&(r=e.callbacks,r!==null&&(a=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=a===null?r:a.concat(r))));break;case 26:var f=$n;if(on(t,e),rn(e),r&512&&(Dt||a===null||es(a,a.return)),r&4){var p=a!==null?a.memoizedState:null;if(r=e.memoizedState,a===null)if(r===null)if(e.stateNode===null){e:{r=e.type,a=e.memoizedProps,f=f.ownerDocument||f;t:switch(r){case"title":p=f.getElementsByTagName("title")[0],(!p||p[ho]||p[Ht]||p.namespaceURI==="http://www.w3.org/2000/svg"||p.hasAttribute("itemprop"))&&(p=f.createElement(r),f.head.insertBefore(p,f.querySelector("head > title"))),Ft(p,r,a),p[Ht]=e,Ut(p),r=p;break e;case"link":var x=zv("link","href",f).get(r+(a.href||""));if(x){for(var k=0;k<x.length;k++)if(p=x[k],p.getAttribute("href")===(a.href==null||a.href===""?null:a.href)&&p.getAttribute("rel")===(a.rel==null?null:a.rel)&&p.getAttribute("title")===(a.title==null?null:a.title)&&p.getAttribute("crossorigin")===(a.crossOrigin==null?null:a.crossOrigin)){x.splice(k,1);break t}}p=f.createElement(r),Ft(p,r,a),f.head.appendChild(p);break;case"meta":if(x=zv("meta","content",f).get(r+(a.content||""))){for(k=0;k<x.length;k++)if(p=x[k],p.getAttribute("content")===(a.content==null?null:""+a.content)&&p.getAttribute("name")===(a.name==null?null:a.name)&&p.getAttribute("property")===(a.property==null?null:a.property)&&p.getAttribute("http-equiv")===(a.httpEquiv==null?null:a.httpEquiv)&&p.getAttribute("charset")===(a.charSet==null?null:a.charSet)){x.splice(k,1);break t}}p=f.createElement(r),Ft(p,r,a),f.head.appendChild(p);break;default:throw Error(o(468,r))}p[Ht]=e,Ut(p),r=p}e.stateNode=r}else Pv(f,e.type,e.stateNode);else e.stateNode=Uv(f,r,e.memoizedProps);else p!==r?(p===null?a.stateNode!==null&&(a=a.stateNode,a.parentNode.removeChild(a)):p.count--,r===null?Pv(f,e.type,e.stateNode):Uv(f,r,e.memoizedProps)):r===null&&e.stateNode!==null&&pd(e,e.memoizedProps,a.memoizedProps)}break;case 27:on(t,e),rn(e),r&512&&(Dt||a===null||es(a,a.return)),a!==null&&r&4&&pd(e,e.memoizedProps,a.memoizedProps);break;case 5:if(on(t,e),rn(e),r&512&&(Dt||a===null||es(a,a.return)),e.flags&32){f=e.stateNode;try{di(f,"")}catch(ge){et(e,e.return,ge)}}r&4&&e.stateNode!=null&&(f=e.memoizedProps,pd(e,f,a!==null?a.memoizedProps:f)),r&1024&&(gd=!0);break;case 6:if(on(t,e),rn(e),r&4){if(e.stateNode===null)throw Error(o(162));r=e.memoizedProps,a=e.stateNode;try{a.nodeValue=r}catch(ge){et(e,e.return,ge)}}break;case 3:if(Vl=null,f=$n,$n=zl(t.containerInfo),on(t,e),$n=f,rn(e),r&4&&a!==null&&a.memoizedState.isDehydrated)try{Hi(t.containerInfo)}catch(ge){et(e,e.return,ge)}gd&&(gd=!1,Pg(e));break;case 4:r=$n,$n=zl(e.stateNode.containerInfo),on(t,e),rn(e),$n=r;break;case 12:on(t,e),rn(e);break;case 31:on(t,e),rn(e),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,wl(e,r)));break;case 13:on(t,e),rn(e),e.child.flags&8192&&e.memoizedState!==null!=(a!==null&&a.memoizedState!==null)&&(jl=Je()),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,wl(e,r)));break;case 22:f=e.memoizedState!==null;var R=a!==null&&a.memoizedState!==null,V=xs,Y=Dt;if(xs=V||f,Dt=Y||R,on(t,e),Dt=Y,xs=V,rn(e),r&8192)e:for(t=e.stateNode,t._visibility=f?t._visibility&-2:t._visibility|1,f&&(a===null||R||xs||Dt||Pa(e)),a=null,t=e;;){if(t.tag===5||t.tag===26){if(a===null){R=a=t;try{if(p=R.stateNode,f)x=p.style,typeof x.setProperty=="function"?x.setProperty("display","none","important"):x.display="none";else{k=R.stateNode;var W=R.memoizedProps.style,$=W!=null&&W.hasOwnProperty("display")?W.display:null;k.style.display=$==null||typeof $=="boolean"?"":(""+$).trim()}}catch(ge){et(R,R.return,ge)}}}else if(t.tag===6){if(a===null){R=t;try{R.stateNode.nodeValue=f?"":R.memoizedProps}catch(ge){et(R,R.return,ge)}}}else if(t.tag===18){if(a===null){R=t;try{var K=R.stateNode;f?Ev(K,!0):Ev(R.stateNode,!1)}catch(ge){et(R,R.return,ge)}}}else if((t.tag!==22&&t.tag!==23||t.memoizedState===null||t===e)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break e;for(;t.sibling===null;){if(t.return===null||t.return===e)break e;a===t&&(a=null),t=t.return}a===t&&(a=null),t.sibling.return=t.return,t=t.sibling}r&4&&(r=e.updateQueue,r!==null&&(a=r.retryQueue,a!==null&&(r.retryQueue=null,wl(e,a))));break;case 19:on(t,e),rn(e),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,wl(e,r)));break;case 30:break;case 21:break;default:on(t,e),rn(e)}}function rn(e){var t=e.flags;if(t&2){try{for(var a,r=e.return;r!==null;){if(Dg(r)){a=r;break}r=r.return}if(a==null)throw Error(o(160));switch(a.tag){case 27:var f=a.stateNode,p=md(e);kl(e,p,f);break;case 5:var x=a.stateNode;a.flags&32&&(di(x,""),a.flags&=-33);var k=md(e);kl(e,k,x);break;case 3:case 4:var R=a.stateNode.containerInfo,V=md(e);hd(e,V,R);break;default:throw Error(o(161))}}catch(Y){et(e,e.return,Y)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function Pg(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;Pg(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),e=e.sibling}}function Ts(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)Og(e,t.alternate,t),t=t.sibling}function Pa(e){for(e=e.child;e!==null;){var t=e;switch(t.tag){case 0:case 11:case 14:case 15:Ws(4,t,t.return),Pa(t);break;case 1:es(t,t.return);var a=t.stateNode;typeof a.componentWillUnmount=="function"&&Eg(t,t.return,a),Pa(t);break;case 27:Wo(t.stateNode);case 26:case 5:es(t,t.return),Pa(t);break;case 22:t.memoizedState===null&&Pa(t);break;case 30:Pa(t);break;default:Pa(t)}e=e.sibling}}function ks(e,t,a){for(a=a&&(t.subtreeFlags&8772)!==0,t=t.child;t!==null;){var r=t.alternate,f=e,p=t,x=p.flags;switch(p.tag){case 0:case 11:case 15:ks(f,p,a),Vo(4,p);break;case 1:if(ks(f,p,a),r=p,f=r.stateNode,typeof f.componentDidMount=="function")try{f.componentDidMount()}catch(V){et(r,r.return,V)}if(r=p,f=r.updateQueue,f!==null){var k=r.stateNode;try{var R=f.shared.hiddenCallbacks;if(R!==null)for(f.shared.hiddenCallbacks=null,f=0;f<R.length;f++)vh(R[f],k)}catch(V){et(r,r.return,V)}}a&&x&64&&Cg(p),Ho(p,p.return);break;case 27:Rg(p);case 26:case 5:ks(f,p,a),a&&r===null&&x&4&&Ag(p),Ho(p,p.return);break;case 12:ks(f,p,a);break;case 31:ks(f,p,a),a&&x&4&&Lg(f,p);break;case 13:ks(f,p,a),a&&x&4&&Ug(f,p);break;case 22:p.memoizedState===null&&ks(f,p,a),Ho(p,p.return);break;case 30:break;default:ks(f,p,a)}t=t.sibling}}function vd(e,t){var a=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(a=e.memoizedState.cachePool.pool),e=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),e!==a&&(e!=null&&e.refCount++,a!=null&&Co(a))}function yd(e,t){e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&Co(e))}function qn(e,t,a,r){if(t.subtreeFlags&10256)for(t=t.child;t!==null;)Vg(e,t,a,r),t=t.sibling}function Vg(e,t,a,r){var f=t.flags;switch(t.tag){case 0:case 11:case 15:qn(e,t,a,r),f&2048&&Vo(9,t);break;case 1:qn(e,t,a,r);break;case 3:qn(e,t,a,r),f&2048&&(e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&Co(e)));break;case 12:if(f&2048){qn(e,t,a,r),e=t.stateNode;try{var p=t.memoizedProps,x=p.id,k=p.onPostCommit;typeof k=="function"&&k(x,t.alternate===null?"mount":"update",e.passiveEffectDuration,-0)}catch(R){et(t,t.return,R)}}else qn(e,t,a,r);break;case 31:qn(e,t,a,r);break;case 13:qn(e,t,a,r);break;case 23:break;case 22:p=t.stateNode,x=t.alternate,t.memoizedState!==null?p._visibility&2?qn(e,t,a,r):Go(e,t):p._visibility&2?qn(e,t,a,r):(p._visibility|=2,Di(e,t,a,r,(t.subtreeFlags&10256)!==0||!1)),f&2048&&vd(x,t);break;case 24:qn(e,t,a,r),f&2048&&yd(t.alternate,t);break;default:qn(e,t,a,r)}}function Di(e,t,a,r,f){for(f=f&&((t.subtreeFlags&10256)!==0||!1),t=t.child;t!==null;){var p=e,x=t,k=a,R=r,V=x.flags;switch(x.tag){case 0:case 11:case 15:Di(p,x,k,R,f),Vo(8,x);break;case 23:break;case 22:var Y=x.stateNode;x.memoizedState!==null?Y._visibility&2?Di(p,x,k,R,f):Go(p,x):(Y._visibility|=2,Di(p,x,k,R,f)),f&&V&2048&&vd(x.alternate,x);break;case 24:Di(p,x,k,R,f),f&&V&2048&&yd(x.alternate,x);break;default:Di(p,x,k,R,f)}t=t.sibling}}function Go(e,t){if(t.subtreeFlags&10256)for(t=t.child;t!==null;){var a=e,r=t,f=r.flags;switch(r.tag){case 22:Go(a,r),f&2048&&vd(r.alternate,r);break;case 24:Go(a,r),f&2048&&yd(r.alternate,r);break;default:Go(a,r)}t=t.sibling}}var $o=8192;function Ri(e,t,a){if(e.subtreeFlags&$o)for(e=e.child;e!==null;)Hg(e,t,a),e=e.sibling}function Hg(e,t,a){switch(e.tag){case 26:Ri(e,t,a),e.flags&$o&&e.memoizedState!==null&&PS(a,$n,e.memoizedState,e.memoizedProps);break;case 5:Ri(e,t,a);break;case 3:case 4:var r=$n;$n=zl(e.stateNode.containerInfo),Ri(e,t,a),$n=r;break;case 22:e.memoizedState===null&&(r=e.alternate,r!==null&&r.memoizedState!==null?(r=$o,$o=16777216,Ri(e,t,a),$o=r):Ri(e,t,a));break;default:Ri(e,t,a)}}function Gg(e){var t=e.alternate;if(t!==null&&(e=t.child,e!==null)){t.child=null;do t=e.sibling,e.sibling=null,e=t;while(e!==null)}}function qo(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var a=0;a<t.length;a++){var r=t[a];zt=r,qg(r,e)}Gg(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)$g(e),e=e.sibling}function $g(e){switch(e.tag){case 0:case 11:case 15:qo(e),e.flags&2048&&Ws(9,e,e.return);break;case 3:qo(e);break;case 12:qo(e);break;case 22:var t=e.stateNode;e.memoizedState!==null&&t._visibility&2&&(e.return===null||e.return.tag!==13)?(t._visibility&=-3,Nl(e)):qo(e);break;default:qo(e)}}function Nl(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var a=0;a<t.length;a++){var r=t[a];zt=r,qg(r,e)}Gg(e)}for(e=e.child;e!==null;){switch(t=e,t.tag){case 0:case 11:case 15:Ws(8,t,t.return),Nl(t);break;case 22:a=t.stateNode,a._visibility&2&&(a._visibility&=-3,Nl(t));break;default:Nl(t)}e=e.sibling}}function qg(e,t){for(;zt!==null;){var a=zt;switch(a.tag){case 0:case 11:case 15:Ws(8,a,t);break;case 23:case 22:if(a.memoizedState!==null&&a.memoizedState.cachePool!==null){var r=a.memoizedState.cachePool.pool;r!=null&&r.refCount++}break;case 24:Co(a.memoizedState.cache)}if(r=a.child,r!==null)r.return=a,zt=r;else e:for(a=e;zt!==null;){r=zt;var f=r.sibling,p=r.return;if(Ig(r),r===a){zt=null;break e}if(f!==null){f.return=p,zt=f;break e}zt=p}}}var tS={getCacheForType:function(e){var t=$t(Ct),a=t.data.get(e);return a===void 0&&(a=e(),t.data.set(e,a)),a},cacheSignal:function(){return $t(Ct).controller.signal}},nS=typeof WeakMap=="function"?WeakMap:Map,We=0,ot=null,Ie=null,Le=0,Qe=0,hn=null,Xs=!1,Mi=!1,bd=!1,ws=0,yt=0,Qs=0,Va=0,_d=0,gn=0,Oi=0,Fo=null,ln=null,xd=!1,jl=0,Fg=0,Cl=1/0,El=null,ea=null,It=0,ta=null,Ii=null,Ns=0,Sd=0,Td=null,Zg=null,Zo=0,kd=null;function vn(){return(We&2)!==0&&Le!==0?Le&-Le:B.T!==null?Ad():cm()}function Kg(){if(gn===0)if((Le&536870912)===0||Ve){var e=ie;ie<<=1,(ie&3932160)===0&&(ie=262144),gn=e}else gn=536870912;return e=pn.current,e!==null&&(e.flags|=32),gn}function cn(e,t,a){(e===ot&&(Qe===2||Qe===9)||e.cancelPendingCommit!==null)&&(Bi(e,0),na(e,Le,gn,!1)),Pe(e,a),((We&2)===0||e!==ot)&&(e===ot&&((We&2)===0&&(Va|=a),yt===4&&na(e,Le,gn,!1)),ts(e))}function Yg(e,t,a){if((We&6)!==0)throw Error(o(327));var r=!a&&(t&127)===0&&(t&e.expiredLanes)===0||ye(e,t),f=r?iS(e,t):Nd(e,t,!0),p=r;do{if(f===0){Mi&&!r&&na(e,t,0,!1);break}else{if(a=e.current.alternate,p&&!sS(a)){f=Nd(e,t,!1),p=!1;continue}if(f===2){if(p=t,e.errorRecoveryDisabledLanes&p)var x=0;else x=e.pendingLanes&-536870913,x=x!==0?x:x&536870912?536870912:0;if(x!==0){t=x;e:{var k=e;f=Fo;var R=k.current.memoizedState.isDehydrated;if(R&&(Bi(k,x).flags|=256),x=Nd(k,x,!1),x!==2){if(bd&&!R){k.errorRecoveryDisabledLanes|=p,Va|=p,f=4;break e}p=ln,ln=f,p!==null&&(ln===null?ln=p:ln.push.apply(ln,p))}f=x}if(p=!1,f!==2)continue}}if(f===1){Bi(e,0),na(e,t,0,!0);break}e:{switch(r=e,p=f,p){case 0:case 1:throw Error(o(345));case 4:if((t&4194048)!==t)break;case 6:na(r,t,gn,!Xs);break e;case 2:ln=null;break;case 3:case 5:break;default:throw Error(o(329))}if((t&62914560)===t&&(f=jl+300-Je(),10<f)){if(na(r,t,gn,!Xs),ze(r,0,!0)!==0)break e;Ns=t,r.timeoutHandle=Nv(Jg.bind(null,r,a,ln,El,xd,t,gn,Va,Oi,Xs,p,"Throttled",-0,0),f);break e}Jg(r,a,ln,El,xd,t,gn,Va,Oi,Xs,p,null,-0,0)}}break}while(!0);ts(e)}function Jg(e,t,a,r,f,p,x,k,R,V,Y,W,$,K){if(e.timeoutHandle=-1,W=t.subtreeFlags,W&8192||(W&16785408)===16785408){W={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:ds},Hg(t,p,W);var ge=(p&62914560)===p?jl-Je():(p&4194048)===p?Fg-Je():0;if(ge=VS(W,ge),ge!==null){Ns=p,e.cancelPendingCommit=ge(av.bind(null,e,t,p,a,r,f,x,k,R,Y,W,null,$,K)),na(e,p,x,!V);return}}av(e,t,p,a,r,f,x,k,R)}function sS(e){for(var t=e;;){var a=t.tag;if((a===0||a===11||a===15)&&t.flags&16384&&(a=t.updateQueue,a!==null&&(a=a.stores,a!==null)))for(var r=0;r<a.length;r++){var f=a[r],p=f.getSnapshot;f=f.value;try{if(!dn(p(),f))return!1}catch{return!1}}if(a=t.child,t.subtreeFlags&16384&&a!==null)a.return=t,t=a;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 na(e,t,a,r){t&=~_d,t&=~Va,e.suspendedLanes|=t,e.pingedLanes&=~t,r&&(e.warmLanes|=t),r=e.expirationTimes;for(var f=t;0<f;){var p=31-Jt(f),x=1<<p;r[p]=-1,f&=~x}a!==0&&Vt(e,a,t)}function Al(){return(We&6)===0?(Ko(0),!1):!0}function wd(){if(Ie!==null){if(Qe===0)var e=Ie.return;else e=Ie,hs=Ra=null,Vu(e),Ni=null,Ao=0,e=Ie;for(;e!==null;)jg(e.alternate,e),e=e.return;Ie=null}}function Bi(e,t){var a=e.timeoutHandle;a!==-1&&(e.timeoutHandle=-1,TS(a)),a=e.cancelPendingCommit,a!==null&&(e.cancelPendingCommit=null,a()),Ns=0,wd(),ot=e,Ie=a=ps(e.current,null),Le=t,Qe=0,hn=null,Xs=!1,Mi=ye(e,t),bd=!1,Oi=gn=_d=Va=Qs=yt=0,ln=Fo=null,xd=!1,(t&8)!==0&&(t|=t&32);var r=e.entangledLanes;if(r!==0)for(e=e.entanglements,r&=t;0<r;){var f=31-Jt(r),p=1<<f;t|=e[f],r&=~p}return ws=t,Wr(),a}function Wg(e,t){Ae=null,B.H=Uo,t===wi||t===il?(t=ph(),Qe=3):t===Eu?(t=ph(),Qe=4):Qe=t===sd?8:t!==null&&typeof t=="object"&&typeof t.then=="function"?6:1,hn=t,Ie===null&&(yt=1,bl(e,Nn(t,e.current)))}function Xg(){var e=pn.current;return e===null?!0:(Le&4194048)===Le?An===null:(Le&62914560)===Le||(Le&536870912)!==0?e===An:!1}function Qg(){var e=B.H;return B.H=Uo,e===null?Uo:e}function ev(){var e=B.A;return B.A=tS,e}function Dl(){yt=4,Xs||(Le&4194048)!==Le&&pn.current!==null||(Mi=!0),(Qs&134217727)===0&&(Va&134217727)===0||ot===null||na(ot,Le,gn,!1)}function Nd(e,t,a){var r=We;We|=2;var f=Qg(),p=ev();(ot!==e||Le!==t)&&(El=null,Bi(e,t)),t=!1;var x=yt;e:do try{if(Qe!==0&&Ie!==null){var k=Ie,R=hn;switch(Qe){case 8:wd(),x=6;break e;case 3:case 2:case 9:case 6:pn.current===null&&(t=!0);var V=Qe;if(Qe=0,hn=null,Li(e,k,R,V),a&&Mi){x=0;break e}break;default:V=Qe,Qe=0,hn=null,Li(e,k,R,V)}}aS(),x=yt;break}catch(Y){Wg(e,Y)}while(!0);return t&&e.shellSuspendCounter++,hs=Ra=null,We=r,B.H=f,B.A=p,Ie===null&&(ot=null,Le=0,Wr()),x}function aS(){for(;Ie!==null;)tv(Ie)}function iS(e,t){var a=We;We|=2;var r=Qg(),f=ev();ot!==e||Le!==t?(El=null,Cl=Je()+500,Bi(e,t)):Mi=ye(e,t);e:do try{if(Qe!==0&&Ie!==null){t=Ie;var p=hn;t:switch(Qe){case 1:Qe=0,hn=null,Li(e,t,p,1);break;case 2:case 9:if(dh(p)){Qe=0,hn=null,nv(t);break}t=function(){Qe!==2&&Qe!==9||ot!==e||(Qe=7),ts(e)},p.then(t,t);break e;case 3:Qe=7;break e;case 4:Qe=5;break e;case 7:dh(p)?(Qe=0,hn=null,nv(t)):(Qe=0,hn=null,Li(e,t,p,7));break;case 5:var x=null;switch(Ie.tag){case 26:x=Ie.memoizedState;case 5:case 27:var k=Ie;if(x?Vv(x):k.stateNode.complete){Qe=0,hn=null;var R=k.sibling;if(R!==null)Ie=R;else{var V=k.return;V!==null?(Ie=V,Rl(V)):Ie=null}break t}}Qe=0,hn=null,Li(e,t,p,5);break;case 6:Qe=0,hn=null,Li(e,t,p,6);break;case 8:wd(),yt=6;break e;default:throw Error(o(462))}}oS();break}catch(Y){Wg(e,Y)}while(!0);return hs=Ra=null,B.H=r,B.A=f,We=a,Ie!==null?0:(ot=null,Le=0,Wr(),yt)}function oS(){for(;Ie!==null&&!Pn();)tv(Ie)}function tv(e){var t=wg(e.alternate,e,ws);e.memoizedProps=e.pendingProps,t===null?Rl(e):Ie=t}function nv(e){var t=e,a=t.alternate;switch(t.tag){case 15:case 0:t=bg(a,t,t.pendingProps,t.type,void 0,Le);break;case 11:t=bg(a,t,t.pendingProps,t.type.render,t.ref,Le);break;case 5:Vu(t);default:jg(a,t),t=Ie=eh(t,ws),t=wg(a,t,ws)}e.memoizedProps=e.pendingProps,t===null?Rl(e):Ie=t}function Li(e,t,a,r){hs=Ra=null,Vu(t),Ni=null,Ao=0;var f=t.return;try{if(K1(e,f,t,a,Le)){yt=1,bl(e,Nn(a,e.current)),Ie=null;return}}catch(p){if(f!==null)throw Ie=f,p;yt=1,bl(e,Nn(a,e.current)),Ie=null;return}t.flags&32768?(Ve||r===1?e=!0:Mi||(Le&536870912)!==0?e=!1:(Xs=e=!0,(r===2||r===9||r===3||r===6)&&(r=pn.current,r!==null&&r.tag===13&&(r.flags|=16384))),sv(t,e)):Rl(t)}function Rl(e){var t=e;do{if((t.flags&32768)!==0){sv(t,Xs);return}e=t.return;var a=W1(t.alternate,t,ws);if(a!==null){Ie=a;return}if(t=t.sibling,t!==null){Ie=t;return}Ie=t=e}while(t!==null);yt===0&&(yt=5)}function sv(e,t){do{var a=X1(e.alternate,e);if(a!==null){a.flags&=32767,Ie=a;return}if(a=e.return,a!==null&&(a.flags|=32768,a.subtreeFlags=0,a.deletions=null),!t&&(e=e.sibling,e!==null)){Ie=e;return}Ie=e=a}while(e!==null);yt=6,Ie=null}function av(e,t,a,r,f,p,x,k,R){e.cancelPendingCommit=null;do Ml();while(It!==0);if((We&6)!==0)throw Error(o(327));if(t!==null){if(t===e.current)throw Error(o(177));if(p=t.lanes|t.childLanes,p|=mu,Pt(e,a,p,x,k,R),e===ot&&(Ie=ot=null,Le=0),Ii=t,ta=e,Ns=a,Sd=p,Td=f,Zg=r,(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?(e.callbackNode=null,e.callbackPriority=0,uS(Ta,function(){return cv(),null})):(e.callbackNode=null,e.callbackPriority=0),r=(t.flags&13878)!==0,(t.subtreeFlags&13878)!==0||r){r=B.T,B.T=null,f=q.p,q.p=2,x=We,We|=4;try{Q1(e,t,a)}finally{We=x,q.p=f,B.T=r}}It=1,iv(),ov(),rv()}}function iv(){if(It===1){It=0;var e=ta,t=Ii,a=(t.flags&13878)!==0;if((t.subtreeFlags&13878)!==0||a){a=B.T,B.T=null;var r=q.p;q.p=2;var f=We;We|=4;try{zg(t,e);var p=Ud,x=qm(e.containerInfo),k=p.focusedElem,R=p.selectionRange;if(x!==k&&k&&k.ownerDocument&&$m(k.ownerDocument.documentElement,k)){if(R!==null&&cu(k)){var V=R.start,Y=R.end;if(Y===void 0&&(Y=V),"selectionStart"in k)k.selectionStart=V,k.selectionEnd=Math.min(Y,k.value.length);else{var W=k.ownerDocument||document,$=W&&W.defaultView||window;if($.getSelection){var K=$.getSelection(),ge=k.textContent.length,xe=Math.min(R.start,ge),at=R.end===void 0?xe:Math.min(R.end,ge);!K.extend&&xe>at&&(x=at,at=xe,xe=x);var L=Gm(k,xe),O=Gm(k,at);if(L&&O&&(K.rangeCount!==1||K.anchorNode!==L.node||K.anchorOffset!==L.offset||K.focusNode!==O.node||K.focusOffset!==O.offset)){var P=W.createRange();P.setStart(L.node,L.offset),K.removeAllRanges(),xe>at?(K.addRange(P),K.extend(O.node,O.offset)):(P.setEnd(O.node,O.offset),K.addRange(P))}}}}for(W=[],K=k;K=K.parentNode;)K.nodeType===1&&W.push({element:K,left:K.scrollLeft,top:K.scrollTop});for(typeof k.focus=="function"&&k.focus(),k=0;k<W.length;k++){var J=W[k];J.element.scrollLeft=J.left,J.element.scrollTop=J.top}}ql=!!Ld,Ud=Ld=null}finally{We=f,q.p=r,B.T=a}}e.current=t,It=2}}function ov(){if(It===2){It=0;var e=ta,t=Ii,a=(t.flags&8772)!==0;if((t.subtreeFlags&8772)!==0||a){a=B.T,B.T=null;var r=q.p;q.p=2;var f=We;We|=4;try{Og(e,t.alternate,t)}finally{We=f,q.p=r,B.T=a}}It=3}}function rv(){if(It===4||It===3){It=0,De();var e=ta,t=Ii,a=Ns,r=Zg;(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?It=5:(It=0,Ii=ta=null,lv(e,e.pendingLanes));var f=e.pendingLanes;if(f===0&&(ea=null),ka(a),t=t.stateNode,Yt&&typeof Yt.onCommitFiberRoot=="function")try{Yt.onCommitFiberRoot(zs,t,void 0,(t.current.flags&128)===128)}catch{}if(r!==null){t=B.T,f=q.p,q.p=2,B.T=null;try{for(var p=e.onRecoverableError,x=0;x<r.length;x++){var k=r[x];p(k.value,{componentStack:k.stack})}}finally{B.T=t,q.p=f}}(Ns&3)!==0&&Ml(),ts(e),f=e.pendingLanes,(a&261930)!==0&&(f&42)!==0?e===kd?Zo++:(Zo=0,kd=e):Zo=0,Ko(0)}}function lv(e,t){(e.pooledCacheLanes&=t)===0&&(t=e.pooledCache,t!=null&&(e.pooledCache=null,Co(t)))}function Ml(){return iv(),ov(),rv(),cv()}function cv(){if(It!==5)return!1;var e=ta,t=Sd;Sd=0;var a=ka(Ns),r=B.T,f=q.p;try{q.p=32>a?32:a,B.T=null,a=Td,Td=null;var p=ta,x=Ns;if(It=0,Ii=ta=null,Ns=0,(We&6)!==0)throw Error(o(331));var k=We;if(We|=4,$g(p.current),Vg(p,p.current,x,a),We=k,Ko(0,!1),Yt&&typeof Yt.onPostCommitFiberRoot=="function")try{Yt.onPostCommitFiberRoot(zs,p)}catch{}return!0}finally{q.p=f,B.T=r,lv(e,t)}}function uv(e,t,a){t=Nn(a,t),t=nd(e.stateNode,t,2),e=Ks(e,t,2),e!==null&&(Pe(e,2),ts(e))}function et(e,t,a){if(e.tag===3)uv(e,e,a);else for(;t!==null;){if(t.tag===3){uv(t,e,a);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof r.componentDidCatch=="function"&&(ea===null||!ea.has(r))){e=Nn(a,e),a=dg(2),r=Ks(t,a,2),r!==null&&(fg(a,r,t,e),Pe(r,2),ts(r));break}}t=t.return}}function jd(e,t,a){var r=e.pingCache;if(r===null){r=e.pingCache=new nS;var f=new Set;r.set(t,f)}else f=r.get(t),f===void 0&&(f=new Set,r.set(t,f));f.has(a)||(bd=!0,f.add(a),e=rS.bind(null,e,t,a),t.then(e,e))}function rS(e,t,a){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&a,e.warmLanes&=~a,ot===e&&(Le&a)===a&&(yt===4||yt===3&&(Le&62914560)===Le&&300>Je()-jl?(We&2)===0&&Bi(e,0):_d|=a,Oi===Le&&(Oi=0)),ts(e)}function dv(e,t){t===0&&(t=qe()),e=Ea(e,t),e!==null&&(Pe(e,t),ts(e))}function lS(e){var t=e.memoizedState,a=0;t!==null&&(a=t.retryLane),dv(e,a)}function cS(e,t){var a=0;switch(e.tag){case 31:case 13:var r=e.stateNode,f=e.memoizedState;f!==null&&(a=f.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(o(314))}r!==null&&r.delete(t),dv(e,a)}function uS(e,t){return Wn(e,t)}var Ol=null,Ui=null,Cd=!1,Il=!1,Ed=!1,sa=0;function ts(e){e!==Ui&&e.next===null&&(Ui===null?Ol=Ui=e:Ui=Ui.next=e),Il=!0,Cd||(Cd=!0,fS())}function Ko(e,t){if(!Ed&&Il){Ed=!0;do for(var a=!1,r=Ol;r!==null;){if(e!==0){var f=r.pendingLanes;if(f===0)var p=0;else{var x=r.suspendedLanes,k=r.pingedLanes;p=(1<<31-Jt(42|e)+1)-1,p&=f&~(x&~k),p=p&201326741?p&201326741|1:p?p|2:0}p!==0&&(a=!0,hv(r,p))}else p=Le,p=ze(r,r===ot?p:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),(p&3)===0||ye(r,p)||(a=!0,hv(r,p));r=r.next}while(a);Ed=!1}}function dS(){fv()}function fv(){Il=Cd=!1;var e=0;sa!==0&&SS()&&(e=sa);for(var t=Je(),a=null,r=Ol;r!==null;){var f=r.next,p=pv(r,t);p===0?(r.next=null,a===null?Ol=f:a.next=f,f===null&&(Ui=a)):(a=r,(e!==0||(p&3)!==0)&&(Il=!0)),r=f}It!==0&&It!==5||Ko(e),sa!==0&&(sa=0)}function pv(e,t){for(var a=e.suspendedLanes,r=e.pingedLanes,f=e.expirationTimes,p=e.pendingLanes&-62914561;0<p;){var x=31-Jt(p),k=1<<x,R=f[x];R===-1?((k&a)===0||(k&r)!==0)&&(f[x]=Re(k,t)):R<=t&&(e.expiredLanes|=k),p&=~k}if(t=ot,a=Le,a=ze(e,e===t?a:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r=e.callbackNode,a===0||e===t&&(Qe===2||Qe===9)||e.cancelPendingCommit!==null)return r!==null&&r!==null&&Us(r),e.callbackNode=null,e.callbackPriority=0;if((a&3)===0||ye(e,a)){if(t=a&-a,t===e.callbackPriority)return t;switch(r!==null&&Us(r),ka(a)){case 2:case 8:a=po;break;case 32:a=Ta;break;case 268435456:a=mo;break;default:a=Ta}return r=mv.bind(null,e),a=Wn(a,r),e.callbackPriority=t,e.callbackNode=a,t}return r!==null&&r!==null&&Us(r),e.callbackPriority=2,e.callbackNode=null,2}function mv(e,t){if(It!==0&&It!==5)return e.callbackNode=null,e.callbackPriority=0,null;var a=e.callbackNode;if(Ml()&&e.callbackNode!==a)return null;var r=Le;return r=ze(e,e===ot?r:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r===0?null:(Yg(e,r,t),pv(e,Je()),e.callbackNode!=null&&e.callbackNode===a?mv.bind(null,e):null)}function hv(e,t){if(Ml())return null;Yg(e,t,!0)}function fS(){kS(function(){(We&6)!==0?Wn(fo,dS):fv()})}function Ad(){if(sa===0){var e=Ti;e===0&&(e=ee,ee<<=1,(ee&261888)===0&&(ee=256)),sa=e}return sa}function gv(e){return e==null||typeof e=="symbol"||typeof e=="boolean"?null:typeof e=="function"?e:Gr(""+e)}function vv(e,t){var a=t.ownerDocument.createElement("input");return a.name=t.name,a.value=t.value,e.id&&a.setAttribute("form",e.id),t.parentNode.insertBefore(a,t),e=new FormData(e),a.parentNode.removeChild(a),e}function pS(e,t,a,r,f){if(t==="submit"&&a&&a.stateNode===f){var p=gv((f[nn]||null).action),x=r.submitter;x&&(t=(t=x[nn]||null)?gv(t.formAction):x.getAttribute("formAction"),t!==null&&(p=t,x=null));var k=new Zr("action","action",null,r,f);e.push({event:k,listeners:[{instance:null,listener:function(){if(r.defaultPrevented){if(sa!==0){var R=x?vv(f,x):new FormData(f);Ju(a,{pending:!0,data:R,method:f.method,action:p},null,R)}}else typeof p=="function"&&(k.preventDefault(),R=x?vv(f,x):new FormData(f),Ju(a,{pending:!0,data:R,method:f.method,action:p},p,R))},currentTarget:f}]})}}for(var Dd=0;Dd<pu.length;Dd++){var Rd=pu[Dd],mS=Rd.toLowerCase(),hS=Rd[0].toUpperCase()+Rd.slice(1);Gn(mS,"on"+hS)}Gn(Km,"onAnimationEnd"),Gn(Ym,"onAnimationIteration"),Gn(Jm,"onAnimationStart"),Gn("dblclick","onDoubleClick"),Gn("focusin","onFocus"),Gn("focusout","onBlur"),Gn(D1,"onTransitionRun"),Gn(R1,"onTransitionStart"),Gn(M1,"onTransitionCancel"),Gn(Wm,"onTransitionEnd"),ci("onMouseEnter",["mouseout","mouseover"]),ci("onMouseLeave",["mouseout","mouseover"]),ci("onPointerEnter",["pointerout","pointerover"]),ci("onPointerLeave",["pointerout","pointerover"]),wa("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),wa("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),wa("onBeforeInput",["compositionend","keypress","textInput","paste"]),wa("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),wa("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),wa("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Yo="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(" "),gS=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(Yo));function yv(e,t){t=(t&4)!==0;for(var a=0;a<e.length;a++){var r=e[a],f=r.event;r=r.listeners;e:{var p=void 0;if(t)for(var x=r.length-1;0<=x;x--){var k=r[x],R=k.instance,V=k.currentTarget;if(k=k.listener,R!==p&&f.isPropagationStopped())break e;p=k,f.currentTarget=V;try{p(f)}catch(Y){Jr(Y)}f.currentTarget=null,p=R}else for(x=0;x<r.length;x++){if(k=r[x],R=k.instance,V=k.currentTarget,k=k.listener,R!==p&&f.isPropagationStopped())break e;p=k,f.currentTarget=V;try{p(f)}catch(Y){Jr(Y)}f.currentTarget=null,p=R}}}}function Be(e,t){var a=t[qc];a===void 0&&(a=t[qc]=new Set);var r=e+"__bubble";a.has(r)||(bv(t,e,2,!1),a.add(r))}function Md(e,t,a){var r=0;t&&(r|=4),bv(a,e,r,t)}var Bl="_reactListening"+Math.random().toString(36).slice(2);function Od(e){if(!e[Bl]){e[Bl]=!0,fm.forEach(function(a){a!=="selectionchange"&&(gS.has(a)||Md(a,!1,e),Md(a,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[Bl]||(t[Bl]=!0,Md("selectionchange",!1,t))}}function bv(e,t,a,r){switch(Kv(t)){case 2:var f=$S;break;case 8:f=qS;break;default:f=Yd}a=f.bind(null,t,a,e),f=void 0,!eu||t!=="touchstart"&&t!=="touchmove"&&t!=="wheel"||(f=!0),r?f!==void 0?e.addEventListener(t,a,{capture:!0,passive:f}):e.addEventListener(t,a,!0):f!==void 0?e.addEventListener(t,a,{passive:f}):e.addEventListener(t,a,!1)}function Id(e,t,a,r,f){var p=r;if((t&1)===0&&(t&2)===0&&r!==null)e:for(;;){if(r===null)return;var x=r.tag;if(x===3||x===4){var k=r.stateNode.containerInfo;if(k===f)break;if(x===4)for(x=r.return;x!==null;){var R=x.tag;if((R===3||R===4)&&x.stateNode.containerInfo===f)return;x=x.return}for(;k!==null;){if(x=oi(k),x===null)return;if(R=x.tag,R===5||R===6||R===26||R===27){r=p=x;continue e}k=k.parentNode}}r=r.return}km(function(){var V=p,Y=Xc(a),W=[];e:{var $=Xm.get(e);if($!==void 0){var K=Zr,ge=e;switch(e){case"keypress":if(qr(a)===0)break e;case"keydown":case"keyup":K=c1;break;case"focusin":ge="focus",K=au;break;case"focusout":ge="blur",K=au;break;case"beforeblur":case"afterblur":K=au;break;case"click":if(a.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":K=jm;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":K=Wx;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":K=f1;break;case Km:case Ym:case Jm:K=e1;break;case Wm:K=m1;break;case"scroll":case"scrollend":K=Yx;break;case"wheel":K=g1;break;case"copy":case"cut":case"paste":K=n1;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":K=Em;break;case"toggle":case"beforetoggle":K=y1}var xe=(t&4)!==0,at=!xe&&(e==="scroll"||e==="scrollend"),L=xe?$!==null?$+"Capture":null:$;xe=[];for(var O=V,P;O!==null;){var J=O;if(P=J.stateNode,J=J.tag,J!==5&&J!==26&&J!==27||P===null||L===null||(J=vo(O,L),J!=null&&xe.push(Jo(O,J,P))),at)break;O=O.return}0<xe.length&&($=new K($,ge,null,a,Y),W.push({event:$,listeners:xe}))}}if((t&7)===0){e:{if($=e==="mouseover"||e==="pointerover",K=e==="mouseout"||e==="pointerout",$&&a!==Wc&&(ge=a.relatedTarget||a.fromElement)&&(oi(ge)||ge[ii]))break e;if((K||$)&&($=Y.window===Y?Y:($=Y.ownerDocument)?$.defaultView||$.parentWindow:window,K?(ge=a.relatedTarget||a.toElement,K=V,ge=ge?oi(ge):null,ge!==null&&(at=u(ge),xe=ge.tag,ge!==at||xe!==5&&xe!==27&&xe!==6)&&(ge=null)):(K=null,ge=V),K!==ge)){if(xe=jm,J="onMouseLeave",L="onMouseEnter",O="mouse",(e==="pointerout"||e==="pointerover")&&(xe=Em,J="onPointerLeave",L="onPointerEnter",O="pointer"),at=K==null?$:go(K),P=ge==null?$:go(ge),$=new xe(J,O+"leave",K,a,Y),$.target=at,$.relatedTarget=P,J=null,oi(Y)===V&&(xe=new xe(L,O+"enter",ge,a,Y),xe.target=P,xe.relatedTarget=at,J=xe),at=J,K&&ge)t:{for(xe=vS,L=K,O=ge,P=0,J=L;J;J=xe(J))P++;J=0;for(var be=O;be;be=xe(be))J++;for(;0<P-J;)L=xe(L),P--;for(;0<J-P;)O=xe(O),J--;for(;P--;){if(L===O||O!==null&&L===O.alternate){xe=L;break t}L=xe(L),O=xe(O)}xe=null}else xe=null;K!==null&&_v(W,$,K,xe,!1),ge!==null&&at!==null&&_v(W,at,ge,xe,!0)}}e:{if($=V?go(V):window,K=$.nodeName&&$.nodeName.toLowerCase(),K==="select"||K==="input"&&$.type==="file")var Fe=Lm;else if(Im($))if(Um)Fe=C1;else{Fe=N1;var ve=w1}else K=$.nodeName,!K||K.toLowerCase()!=="input"||$.type!=="checkbox"&&$.type!=="radio"?V&&Jc(V.elementType)&&(Fe=Lm):Fe=j1;if(Fe&&(Fe=Fe(e,V))){Bm(W,Fe,a,Y);break e}ve&&ve(e,$,V),e==="focusout"&&V&&$.type==="number"&&V.memoizedProps.value!=null&&Yc($,"number",$.value)}switch(ve=V?go(V):window,e){case"focusin":(Im(ve)||ve.contentEditable==="true")&&(hi=ve,uu=V,wo=null);break;case"focusout":wo=uu=hi=null;break;case"mousedown":du=!0;break;case"contextmenu":case"mouseup":case"dragend":du=!1,Fm(W,a,Y);break;case"selectionchange":if(A1)break;case"keydown":case"keyup":Fm(W,a,Y)}var Me;if(ou)e:{switch(e){case"compositionstart":var Ue="onCompositionStart";break e;case"compositionend":Ue="onCompositionEnd";break e;case"compositionupdate":Ue="onCompositionUpdate";break e}Ue=void 0}else mi?Mm(e,a)&&(Ue="onCompositionEnd"):e==="keydown"&&a.keyCode===229&&(Ue="onCompositionStart");Ue&&(Am&&a.locale!=="ko"&&(mi||Ue!=="onCompositionStart"?Ue==="onCompositionEnd"&&mi&&(Me=wm()):(Vs=Y,tu="value"in Vs?Vs.value:Vs.textContent,mi=!0)),ve=Ll(V,Ue),0<ve.length&&(Ue=new Cm(Ue,e,null,a,Y),W.push({event:Ue,listeners:ve}),Me?Ue.data=Me:(Me=Om(a),Me!==null&&(Ue.data=Me)))),(Me=_1?x1(e,a):S1(e,a))&&(Ue=Ll(V,"onBeforeInput"),0<Ue.length&&(ve=new Cm("onBeforeInput","beforeinput",null,a,Y),W.push({event:ve,listeners:Ue}),ve.data=Me)),pS(W,e,V,a,Y)}yv(W,t)})}function Jo(e,t,a){return{instance:e,listener:t,currentTarget:a}}function Ll(e,t){for(var a=t+"Capture",r=[];e!==null;){var f=e,p=f.stateNode;if(f=f.tag,f!==5&&f!==26&&f!==27||p===null||(f=vo(e,a),f!=null&&r.unshift(Jo(e,f,p)),f=vo(e,t),f!=null&&r.push(Jo(e,f,p))),e.tag===3)return r;e=e.return}return[]}function vS(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function _v(e,t,a,r,f){for(var p=t._reactName,x=[];a!==null&&a!==r;){var k=a,R=k.alternate,V=k.stateNode;if(k=k.tag,R!==null&&R===r)break;k!==5&&k!==26&&k!==27||V===null||(R=V,f?(V=vo(a,p),V!=null&&x.unshift(Jo(a,V,R))):f||(V=vo(a,p),V!=null&&x.push(Jo(a,V,R)))),a=a.return}x.length!==0&&e.push({event:t,listeners:x})}var yS=/\r\n?/g,bS=/\u0000|\uFFFD/g;function xv(e){return(typeof e=="string"?e:""+e).replace(yS,`
26
- `).replace(bS,"")}function Sv(e,t){return t=xv(t),xv(e)===t}function st(e,t,a,r,f,p){switch(a){case"children":typeof r=="string"?t==="body"||t==="textarea"&&r===""||di(e,r):(typeof r=="number"||typeof r=="bigint")&&t!=="body"&&di(e,""+r);break;case"className":Vr(e,"class",r);break;case"tabIndex":Vr(e,"tabindex",r);break;case"dir":case"role":case"viewBox":case"width":case"height":Vr(e,a,r);break;case"style":Sm(e,r,p);break;case"data":if(t!=="object"){Vr(e,"data",r);break}case"src":case"href":if(r===""&&(t!=="a"||a!=="href")){e.removeAttribute(a);break}if(r==null||typeof r=="function"||typeof r=="symbol"||typeof r=="boolean"){e.removeAttribute(a);break}r=Gr(""+r),e.setAttribute(a,r);break;case"action":case"formAction":if(typeof r=="function"){e.setAttribute(a,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof p=="function"&&(a==="formAction"?(t!=="input"&&st(e,t,"name",f.name,f,null),st(e,t,"formEncType",f.formEncType,f,null),st(e,t,"formMethod",f.formMethod,f,null),st(e,t,"formTarget",f.formTarget,f,null)):(st(e,t,"encType",f.encType,f,null),st(e,t,"method",f.method,f,null),st(e,t,"target",f.target,f,null)));if(r==null||typeof r=="symbol"||typeof r=="boolean"){e.removeAttribute(a);break}r=Gr(""+r),e.setAttribute(a,r);break;case"onClick":r!=null&&(e.onclick=ds);break;case"onScroll":r!=null&&Be("scroll",e);break;case"onScrollEnd":r!=null&&Be("scrollend",e);break;case"dangerouslySetInnerHTML":if(r!=null){if(typeof r!="object"||!("__html"in r))throw Error(o(61));if(a=r.__html,a!=null){if(f.children!=null)throw Error(o(60));e.innerHTML=a}}break;case"multiple":e.multiple=r&&typeof r!="function"&&typeof r!="symbol";break;case"muted":e.muted=r&&typeof r!="function"&&typeof r!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(r==null||typeof r=="function"||typeof r=="boolean"||typeof r=="symbol"){e.removeAttribute("xlink:href");break}a=Gr(""+r),e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",a);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":r!=null&&typeof r!="function"&&typeof r!="symbol"?e.setAttribute(a,""+r):e.removeAttribute(a);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":r&&typeof r!="function"&&typeof r!="symbol"?e.setAttribute(a,""):e.removeAttribute(a);break;case"capture":case"download":r===!0?e.setAttribute(a,""):r!==!1&&r!=null&&typeof r!="function"&&typeof r!="symbol"?e.setAttribute(a,r):e.removeAttribute(a);break;case"cols":case"rows":case"size":case"span":r!=null&&typeof r!="function"&&typeof r!="symbol"&&!isNaN(r)&&1<=r?e.setAttribute(a,r):e.removeAttribute(a);break;case"rowSpan":case"start":r==null||typeof r=="function"||typeof r=="symbol"||isNaN(r)?e.removeAttribute(a):e.setAttribute(a,r);break;case"popover":Be("beforetoggle",e),Be("toggle",e),Pr(e,"popover",r);break;case"xlinkActuate":us(e,"http://www.w3.org/1999/xlink","xlink:actuate",r);break;case"xlinkArcrole":us(e,"http://www.w3.org/1999/xlink","xlink:arcrole",r);break;case"xlinkRole":us(e,"http://www.w3.org/1999/xlink","xlink:role",r);break;case"xlinkShow":us(e,"http://www.w3.org/1999/xlink","xlink:show",r);break;case"xlinkTitle":us(e,"http://www.w3.org/1999/xlink","xlink:title",r);break;case"xlinkType":us(e,"http://www.w3.org/1999/xlink","xlink:type",r);break;case"xmlBase":us(e,"http://www.w3.org/XML/1998/namespace","xml:base",r);break;case"xmlLang":us(e,"http://www.w3.org/XML/1998/namespace","xml:lang",r);break;case"xmlSpace":us(e,"http://www.w3.org/XML/1998/namespace","xml:space",r);break;case"is":Pr(e,"is",r);break;case"innerText":case"textContent":break;default:(!(2<a.length)||a[0]!=="o"&&a[0]!=="O"||a[1]!=="n"&&a[1]!=="N")&&(a=Zx.get(a)||a,Pr(e,a,r))}}function Bd(e,t,a,r,f,p){switch(a){case"style":Sm(e,r,p);break;case"dangerouslySetInnerHTML":if(r!=null){if(typeof r!="object"||!("__html"in r))throw Error(o(61));if(a=r.__html,a!=null){if(f.children!=null)throw Error(o(60));e.innerHTML=a}}break;case"children":typeof r=="string"?di(e,r):(typeof r=="number"||typeof r=="bigint")&&di(e,""+r);break;case"onScroll":r!=null&&Be("scroll",e);break;case"onScrollEnd":r!=null&&Be("scrollend",e);break;case"onClick":r!=null&&(e.onclick=ds);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!pm.hasOwnProperty(a))e:{if(a[0]==="o"&&a[1]==="n"&&(f=a.endsWith("Capture"),t=a.slice(2,f?a.length-7:void 0),p=e[nn]||null,p=p!=null?p[a]:null,typeof p=="function"&&e.removeEventListener(t,p,f),typeof r=="function")){typeof p!="function"&&p!==null&&(a in e?e[a]=null:e.hasAttribute(a)&&e.removeAttribute(a)),e.addEventListener(t,r,f);break e}a in e?e[a]=r:r===!0?e.setAttribute(a,""):Pr(e,a,r)}}}function Ft(e,t,a){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":Be("error",e),Be("load",e);var r=!1,f=!1,p;for(p in a)if(a.hasOwnProperty(p)){var x=a[p];if(x!=null)switch(p){case"src":r=!0;break;case"srcSet":f=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(o(137,t));default:st(e,t,p,x,a,null)}}f&&st(e,t,"srcSet",a.srcSet,a,null),r&&st(e,t,"src",a.src,a,null);return;case"input":Be("invalid",e);var k=p=x=f=null,R=null,V=null;for(r in a)if(a.hasOwnProperty(r)){var Y=a[r];if(Y!=null)switch(r){case"name":f=Y;break;case"type":x=Y;break;case"checked":R=Y;break;case"defaultChecked":V=Y;break;case"value":p=Y;break;case"defaultValue":k=Y;break;case"children":case"dangerouslySetInnerHTML":if(Y!=null)throw Error(o(137,t));break;default:st(e,t,r,Y,a,null)}}ym(e,p,k,R,V,x,f,!1);return;case"select":Be("invalid",e),r=x=p=null;for(f in a)if(a.hasOwnProperty(f)&&(k=a[f],k!=null))switch(f){case"value":p=k;break;case"defaultValue":x=k;break;case"multiple":r=k;default:st(e,t,f,k,a,null)}t=p,a=x,e.multiple=!!r,t!=null?ui(e,!!r,t,!1):a!=null&&ui(e,!!r,a,!0);return;case"textarea":Be("invalid",e),p=f=r=null;for(x in a)if(a.hasOwnProperty(x)&&(k=a[x],k!=null))switch(x){case"value":r=k;break;case"defaultValue":f=k;break;case"children":p=k;break;case"dangerouslySetInnerHTML":if(k!=null)throw Error(o(91));break;default:st(e,t,x,k,a,null)}_m(e,r,f,p);return;case"option":for(R in a)if(a.hasOwnProperty(R)&&(r=a[R],r!=null))switch(R){case"selected":e.selected=r&&typeof r!="function"&&typeof r!="symbol";break;default:st(e,t,R,r,a,null)}return;case"dialog":Be("beforetoggle",e),Be("toggle",e),Be("cancel",e),Be("close",e);break;case"iframe":case"object":Be("load",e);break;case"video":case"audio":for(r=0;r<Yo.length;r++)Be(Yo[r],e);break;case"image":Be("error",e),Be("load",e);break;case"details":Be("toggle",e);break;case"embed":case"source":case"link":Be("error",e),Be("load",e);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(V in a)if(a.hasOwnProperty(V)&&(r=a[V],r!=null))switch(V){case"children":case"dangerouslySetInnerHTML":throw Error(o(137,t));default:st(e,t,V,r,a,null)}return;default:if(Jc(t)){for(Y in a)a.hasOwnProperty(Y)&&(r=a[Y],r!==void 0&&Bd(e,t,Y,r,a,void 0));return}}for(k in a)a.hasOwnProperty(k)&&(r=a[k],r!=null&&st(e,t,k,r,a,null))}function _S(e,t,a,r){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var f=null,p=null,x=null,k=null,R=null,V=null,Y=null;for(K in a){var W=a[K];if(a.hasOwnProperty(K)&&W!=null)switch(K){case"checked":break;case"value":break;case"defaultValue":R=W;default:r.hasOwnProperty(K)||st(e,t,K,null,r,W)}}for(var $ in r){var K=r[$];if(W=a[$],r.hasOwnProperty($)&&(K!=null||W!=null))switch($){case"type":p=K;break;case"name":f=K;break;case"checked":V=K;break;case"defaultChecked":Y=K;break;case"value":x=K;break;case"defaultValue":k=K;break;case"children":case"dangerouslySetInnerHTML":if(K!=null)throw Error(o(137,t));break;default:K!==W&&st(e,t,$,K,r,W)}}Kc(e,x,k,R,V,Y,p,f);return;case"select":K=x=k=$=null;for(p in a)if(R=a[p],a.hasOwnProperty(p)&&R!=null)switch(p){case"value":break;case"multiple":K=R;default:r.hasOwnProperty(p)||st(e,t,p,null,r,R)}for(f in r)if(p=r[f],R=a[f],r.hasOwnProperty(f)&&(p!=null||R!=null))switch(f){case"value":$=p;break;case"defaultValue":k=p;break;case"multiple":x=p;default:p!==R&&st(e,t,f,p,r,R)}t=k,a=x,r=K,$!=null?ui(e,!!a,$,!1):!!r!=!!a&&(t!=null?ui(e,!!a,t,!0):ui(e,!!a,a?[]:"",!1));return;case"textarea":K=$=null;for(k in a)if(f=a[k],a.hasOwnProperty(k)&&f!=null&&!r.hasOwnProperty(k))switch(k){case"value":break;case"children":break;default:st(e,t,k,null,r,f)}for(x in r)if(f=r[x],p=a[x],r.hasOwnProperty(x)&&(f!=null||p!=null))switch(x){case"value":$=f;break;case"defaultValue":K=f;break;case"children":break;case"dangerouslySetInnerHTML":if(f!=null)throw Error(o(91));break;default:f!==p&&st(e,t,x,f,r,p)}bm(e,$,K);return;case"option":for(var ge in a)if($=a[ge],a.hasOwnProperty(ge)&&$!=null&&!r.hasOwnProperty(ge))switch(ge){case"selected":e.selected=!1;break;default:st(e,t,ge,null,r,$)}for(R in r)if($=r[R],K=a[R],r.hasOwnProperty(R)&&$!==K&&($!=null||K!=null))switch(R){case"selected":e.selected=$&&typeof $!="function"&&typeof $!="symbol";break;default:st(e,t,R,$,r,K)}return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var xe in a)$=a[xe],a.hasOwnProperty(xe)&&$!=null&&!r.hasOwnProperty(xe)&&st(e,t,xe,null,r,$);for(V in r)if($=r[V],K=a[V],r.hasOwnProperty(V)&&$!==K&&($!=null||K!=null))switch(V){case"children":case"dangerouslySetInnerHTML":if($!=null)throw Error(o(137,t));break;default:st(e,t,V,$,r,K)}return;default:if(Jc(t)){for(var at in a)$=a[at],a.hasOwnProperty(at)&&$!==void 0&&!r.hasOwnProperty(at)&&Bd(e,t,at,void 0,r,$);for(Y in r)$=r[Y],K=a[Y],!r.hasOwnProperty(Y)||$===K||$===void 0&&K===void 0||Bd(e,t,Y,$,r,K);return}}for(var L in a)$=a[L],a.hasOwnProperty(L)&&$!=null&&!r.hasOwnProperty(L)&&st(e,t,L,null,r,$);for(W in r)$=r[W],K=a[W],!r.hasOwnProperty(W)||$===K||$==null&&K==null||st(e,t,W,$,r,K)}function Tv(e){switch(e){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function xS(){if(typeof performance.getEntriesByType=="function"){for(var e=0,t=0,a=performance.getEntriesByType("resource"),r=0;r<a.length;r++){var f=a[r],p=f.transferSize,x=f.initiatorType,k=f.duration;if(p&&k&&Tv(x)){for(x=0,k=f.responseEnd,r+=1;r<a.length;r++){var R=a[r],V=R.startTime;if(V>k)break;var Y=R.transferSize,W=R.initiatorType;Y&&Tv(W)&&(R=R.responseEnd,x+=Y*(R<k?1:(k-V)/(R-V)))}if(--r,t+=8*(p+x)/(f.duration/1e3),e++,10<e)break}}if(0<e)return t/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e=="number")?e:5}var Ld=null,Ud=null;function Ul(e){return e.nodeType===9?e:e.ownerDocument}function kv(e){switch(e){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function wv(e,t){if(e===0)switch(t){case"svg":return 1;case"math":return 2;default:return 0}return e===1&&t==="foreignObject"?0:e}function zd(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.children=="bigint"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var Pd=null;function SS(){var e=window.event;return e&&e.type==="popstate"?e===Pd?!1:(Pd=e,!0):(Pd=null,!1)}var Nv=typeof setTimeout=="function"?setTimeout:void 0,TS=typeof clearTimeout=="function"?clearTimeout:void 0,jv=typeof Promise=="function"?Promise:void 0,kS=typeof queueMicrotask=="function"?queueMicrotask:typeof jv<"u"?function(e){return jv.resolve(null).then(e).catch(wS)}:Nv;function wS(e){setTimeout(function(){throw e})}function aa(e){return e==="head"}function Cv(e,t){var a=t,r=0;do{var f=a.nextSibling;if(e.removeChild(a),f&&f.nodeType===8)if(a=f.data,a==="/$"||a==="/&"){if(r===0){e.removeChild(f),Hi(t);return}r--}else if(a==="$"||a==="$?"||a==="$~"||a==="$!"||a==="&")r++;else if(a==="html")Wo(e.ownerDocument.documentElement);else if(a==="head"){a=e.ownerDocument.head,Wo(a);for(var p=a.firstChild;p;){var x=p.nextSibling,k=p.nodeName;p[ho]||k==="SCRIPT"||k==="STYLE"||k==="LINK"&&p.rel.toLowerCase()==="stylesheet"||a.removeChild(p),p=x}}else a==="body"&&Wo(e.ownerDocument.body);a=f}while(a);Hi(t)}function Ev(e,t){var a=e;e=0;do{var r=a.nextSibling;if(a.nodeType===1?t?(a._stashedDisplay=a.style.display,a.style.display="none"):(a.style.display=a._stashedDisplay||"",a.getAttribute("style")===""&&a.removeAttribute("style")):a.nodeType===3&&(t?(a._stashedText=a.nodeValue,a.nodeValue=""):a.nodeValue=a._stashedText||""),r&&r.nodeType===8)if(a=r.data,a==="/$"){if(e===0)break;e--}else a!=="$"&&a!=="$?"&&a!=="$~"&&a!=="$!"||e++;a=r}while(a)}function Vd(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var a=t;switch(t=t.nextSibling,a.nodeName){case"HTML":case"HEAD":case"BODY":Vd(a),Fc(a);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(a.rel.toLowerCase()==="stylesheet")continue}e.removeChild(a)}}function NS(e,t,a,r){for(;e.nodeType===1;){var f=a;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!r&&(e.nodeName!=="INPUT"||e.type!=="hidden"))break}else if(r){if(!e[ho])switch(t){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if(p=e.getAttribute("rel"),p==="stylesheet"&&e.hasAttribute("data-precedence"))break;if(p!==f.rel||e.getAttribute("href")!==(f.href==null||f.href===""?null:f.href)||e.getAttribute("crossorigin")!==(f.crossOrigin==null?null:f.crossOrigin)||e.getAttribute("title")!==(f.title==null?null:f.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(p=e.getAttribute("src"),(p!==(f.src==null?null:f.src)||e.getAttribute("type")!==(f.type==null?null:f.type)||e.getAttribute("crossorigin")!==(f.crossOrigin==null?null:f.crossOrigin))&&p&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else if(t==="input"&&e.type==="hidden"){var p=f.name==null?null:""+f.name;if(f.type==="hidden"&&e.getAttribute("name")===p)return e}else return e;if(e=Dn(e.nextSibling),e===null)break}return null}function jS(e,t,a){if(t==="")return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!a||(e=Dn(e.nextSibling),e===null))return null;return e}function Av(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!t||(e=Dn(e.nextSibling),e===null))return null;return e}function Hd(e){return e.data==="$?"||e.data==="$~"}function Gd(e){return e.data==="$!"||e.data==="$?"&&e.ownerDocument.readyState!=="loading"}function CS(e,t){var a=e.ownerDocument;if(e.data==="$~")e._reactRetry=t;else if(e.data!=="$?"||a.readyState!=="loading")t();else{var r=function(){t(),a.removeEventListener("DOMContentLoaded",r)};a.addEventListener("DOMContentLoaded",r),e._reactRetry=r}}function Dn(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==="$?"||t==="$~"||t==="&"||t==="F!"||t==="F")break;if(t==="/$"||t==="/&")return null}}return e}var $d=null;function Dv(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var a=e.data;if(a==="/$"||a==="/&"){if(t===0)return Dn(e.nextSibling);t--}else a!=="$"&&a!=="$!"&&a!=="$?"&&a!=="$~"&&a!=="&"||t++}e=e.nextSibling}return null}function Rv(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var a=e.data;if(a==="$"||a==="$!"||a==="$?"||a==="$~"||a==="&"){if(t===0)return e;t--}else a!=="/$"&&a!=="/&"||t++}e=e.previousSibling}return null}function Mv(e,t,a){switch(t=Ul(a),e){case"html":if(e=t.documentElement,!e)throw Error(o(452));return e;case"head":if(e=t.head,!e)throw Error(o(453));return e;case"body":if(e=t.body,!e)throw Error(o(454));return e;default:throw Error(o(451))}}function Wo(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);Fc(e)}var Rn=new Map,Ov=new Set;function zl(e){return typeof e.getRootNode=="function"?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var js=q.d;q.d={f:ES,r:AS,D:DS,C:RS,L:MS,m:OS,X:BS,S:IS,M:LS};function ES(){var e=js.f(),t=Al();return e||t}function AS(e){var t=ri(e);t!==null&&t.tag===5&&t.type==="form"?Wh(t):js.r(e)}var zi=typeof document>"u"?null:document;function Iv(e,t,a){var r=zi;if(r&&typeof t=="string"&&t){var f=kn(t);f='link[rel="'+e+'"][href="'+f+'"]',typeof a=="string"&&(f+='[crossorigin="'+a+'"]'),Ov.has(f)||(Ov.add(f),e={rel:e,crossOrigin:a,href:t},r.querySelector(f)===null&&(t=r.createElement("link"),Ft(t,"link",e),Ut(t),r.head.appendChild(t)))}}function DS(e){js.D(e),Iv("dns-prefetch",e,null)}function RS(e,t){js.C(e,t),Iv("preconnect",e,t)}function MS(e,t,a){js.L(e,t,a);var r=zi;if(r&&e&&t){var f='link[rel="preload"][as="'+kn(t)+'"]';t==="image"&&a&&a.imageSrcSet?(f+='[imagesrcset="'+kn(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(f+='[imagesizes="'+kn(a.imageSizes)+'"]')):f+='[href="'+kn(e)+'"]';var p=f;switch(t){case"style":p=Pi(e);break;case"script":p=Vi(e)}Rn.has(p)||(e=b({rel:"preload",href:t==="image"&&a&&a.imageSrcSet?void 0:e,as:t},a),Rn.set(p,e),r.querySelector(f)!==null||t==="style"&&r.querySelector(Xo(p))||t==="script"&&r.querySelector(Qo(p))||(t=r.createElement("link"),Ft(t,"link",e),Ut(t),r.head.appendChild(t)))}}function OS(e,t){js.m(e,t);var a=zi;if(a&&e){var r=t&&typeof t.as=="string"?t.as:"script",f='link[rel="modulepreload"][as="'+kn(r)+'"][href="'+kn(e)+'"]',p=f;switch(r){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":p=Vi(e)}if(!Rn.has(p)&&(e=b({rel:"modulepreload",href:e},t),Rn.set(p,e),a.querySelector(f)===null)){switch(r){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(Qo(p)))return}r=a.createElement("link"),Ft(r,"link",e),Ut(r),a.head.appendChild(r)}}}function IS(e,t,a){js.S(e,t,a);var r=zi;if(r&&e){var f=li(r).hoistableStyles,p=Pi(e);t=t||"default";var x=f.get(p);if(!x){var k={loading:0,preload:null};if(x=r.querySelector(Xo(p)))k.loading=5;else{e=b({rel:"stylesheet",href:e,"data-precedence":t},a),(a=Rn.get(p))&&qd(e,a);var R=x=r.createElement("link");Ut(R),Ft(R,"link",e),R._p=new Promise(function(V,Y){R.onload=V,R.onerror=Y}),R.addEventListener("load",function(){k.loading|=1}),R.addEventListener("error",function(){k.loading|=2}),k.loading|=4,Pl(x,t,r)}x={type:"stylesheet",instance:x,count:1,state:k},f.set(p,x)}}}function BS(e,t){js.X(e,t);var a=zi;if(a&&e){var r=li(a).hoistableScripts,f=Vi(e),p=r.get(f);p||(p=a.querySelector(Qo(f)),p||(e=b({src:e,async:!0},t),(t=Rn.get(f))&&Fd(e,t),p=a.createElement("script"),Ut(p),Ft(p,"link",e),a.head.appendChild(p)),p={type:"script",instance:p,count:1,state:null},r.set(f,p))}}function LS(e,t){js.M(e,t);var a=zi;if(a&&e){var r=li(a).hoistableScripts,f=Vi(e),p=r.get(f);p||(p=a.querySelector(Qo(f)),p||(e=b({src:e,async:!0,type:"module"},t),(t=Rn.get(f))&&Fd(e,t),p=a.createElement("script"),Ut(p),Ft(p,"link",e),a.head.appendChild(p)),p={type:"script",instance:p,count:1,state:null},r.set(f,p))}}function Bv(e,t,a,r){var f=(f=fe.current)?zl(f):null;if(!f)throw Error(o(446));switch(e){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(t=Pi(a.href),a=li(f).hoistableStyles,r=a.get(t),r||(r={type:"style",instance:null,count:0,state:null},a.set(t,r)),r):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){e=Pi(a.href);var p=li(f).hoistableStyles,x=p.get(e);if(x||(f=f.ownerDocument||f,x={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},p.set(e,x),(p=f.querySelector(Xo(e)))&&!p._p&&(x.instance=p,x.state.loading=5),Rn.has(e)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},Rn.set(e,a),p||US(f,e,a,x.state))),t&&r===null)throw Error(o(528,""));return x}if(t&&r!==null)throw Error(o(529,""));return null;case"script":return t=a.async,a=a.src,typeof a=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Vi(a),a=li(f).hoistableScripts,r=a.get(t),r||(r={type:"script",instance:null,count:0,state:null},a.set(t,r)),r):{type:"void",instance:null,count:0,state:null};default:throw Error(o(444,e))}}function Pi(e){return'href="'+kn(e)+'"'}function Xo(e){return'link[rel="stylesheet"]['+e+"]"}function Lv(e){return b({},e,{"data-precedence":e.precedence,precedence:null})}function US(e,t,a,r){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?r.loading=1:(t=e.createElement("link"),r.preload=t,t.addEventListener("load",function(){return r.loading|=1}),t.addEventListener("error",function(){return r.loading|=2}),Ft(t,"link",a),Ut(t),e.head.appendChild(t))}function Vi(e){return'[src="'+kn(e)+'"]'}function Qo(e){return"script[async]"+e}function Uv(e,t,a){if(t.count++,t.instance===null)switch(t.type){case"style":var r=e.querySelector('style[data-href~="'+kn(a.href)+'"]');if(r)return t.instance=r,Ut(r),r;var f=b({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement("style"),Ut(r),Ft(r,"style",f),Pl(r,a.precedence,e),t.instance=r;case"stylesheet":f=Pi(a.href);var p=e.querySelector(Xo(f));if(p)return t.state.loading|=4,t.instance=p,Ut(p),p;r=Lv(a),(f=Rn.get(f))&&qd(r,f),p=(e.ownerDocument||e).createElement("link"),Ut(p);var x=p;return x._p=new Promise(function(k,R){x.onload=k,x.onerror=R}),Ft(p,"link",r),t.state.loading|=4,Pl(p,a.precedence,e),t.instance=p;case"script":return p=Vi(a.src),(f=e.querySelector(Qo(p)))?(t.instance=f,Ut(f),f):(r=a,(f=Rn.get(p))&&(r=b({},a),Fd(r,f)),e=e.ownerDocument||e,f=e.createElement("script"),Ut(f),Ft(f,"link",r),e.head.appendChild(f),t.instance=f);case"void":return null;default:throw Error(o(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(r=t.instance,t.state.loading|=4,Pl(r,a.precedence,e));return t.instance}function Pl(e,t,a){for(var r=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),f=r.length?r[r.length-1]:null,p=f,x=0;x<r.length;x++){var k=r[x];if(k.dataset.precedence===t)p=k;else if(p!==f)break}p?p.parentNode.insertBefore(e,p.nextSibling):(t=a.nodeType===9?a.head:a,t.insertBefore(e,t.firstChild))}function qd(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.title==null&&(e.title=t.title)}function Fd(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.integrity==null&&(e.integrity=t.integrity)}var Vl=null;function zv(e,t,a){if(Vl===null){var r=new Map,f=Vl=new Map;f.set(a,r)}else f=Vl,r=f.get(a),r||(r=new Map,f.set(a,r));if(r.has(e))return r;for(r.set(e,null),a=a.getElementsByTagName(e),f=0;f<a.length;f++){var p=a[f];if(!(p[ho]||p[Ht]||e==="link"&&p.getAttribute("rel")==="stylesheet")&&p.namespaceURI!=="http://www.w3.org/2000/svg"){var x=p.getAttribute(t)||"";x=e+x;var k=r.get(x);k?k.push(p):r.set(x,[p])}}return r}function Pv(e,t,a){e=e.ownerDocument||e,e.head.insertBefore(a,t==="title"?e.querySelector("head > title"):null)}function zS(e,t,a){if(a===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Vv(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function PS(e,t,a,r){if(a.type==="stylesheet"&&(typeof r.media!="string"||matchMedia(r.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var f=Pi(r.href),p=t.querySelector(Xo(f));if(p){t=p._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Hl.bind(e),t.then(e,e)),a.state.loading|=4,a.instance=p,Ut(p);return}p=t.ownerDocument||t,r=Lv(r),(f=Rn.get(f))&&qd(r,f),p=p.createElement("link"),Ut(p);var x=p;x._p=new Promise(function(k,R){x.onload=k,x.onerror=R}),Ft(p,"link",r),a.instance=p}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(a,t),(t=a.state.preload)&&(a.state.loading&3)===0&&(e.count++,a=Hl.bind(e),t.addEventListener("load",a),t.addEventListener("error",a))}}var Zd=0;function VS(e,t){return e.stylesheets&&e.count===0&&$l(e,e.stylesheets),0<e.count||0<e.imgCount?function(a){var r=setTimeout(function(){if(e.stylesheets&&$l(e,e.stylesheets),e.unsuspend){var p=e.unsuspend;e.unsuspend=null,p()}},6e4+t);0<e.imgBytes&&Zd===0&&(Zd=62500*xS());var f=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&$l(e,e.stylesheets),e.unsuspend)){var p=e.unsuspend;e.unsuspend=null,p()}},(e.imgBytes>Zd?50:800)+t);return e.unsuspend=a,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(f)}}:null}function Hl(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)$l(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Gl=null;function $l(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Gl=new Map,t.forEach(HS,e),Gl=null,Hl.call(e))}function HS(e,t){if(!(t.state.loading&4)){var a=Gl.get(e);if(a)var r=a.get(null);else{a=new Map,Gl.set(e,a);for(var f=e.querySelectorAll("link[data-precedence],style[data-precedence]"),p=0;p<f.length;p++){var x=f[p];(x.nodeName==="LINK"||x.getAttribute("media")!=="not all")&&(a.set(x.dataset.precedence,x),r=x)}r&&a.set(null,r)}f=t.instance,x=f.getAttribute("data-precedence"),p=a.get(x)||r,p===r&&a.set(null,f),a.set(x,f),this.count++,r=Hl.bind(this),f.addEventListener("load",r),f.addEventListener("error",r),p?p.parentNode.insertBefore(f,p.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(f,e.firstChild)),t.state.loading|=4}}var er={$$typeof:A,Provider:null,Consumer:null,_currentValue:te,_currentValue2:te,_threadCount:0};function GS(e,t,a,r,f,p,x,k,R){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=tt(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=tt(0),this.hiddenUpdates=tt(null),this.identifierPrefix=r,this.onUncaughtError=f,this.onCaughtError=p,this.onRecoverableError=x,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=R,this.incompleteTransitions=new Map}function Hv(e,t,a,r,f,p,x,k,R,V,Y,W){return e=new GS(e,t,a,x,R,V,Y,W,k),t=1,p===!0&&(t|=24),p=fn(3,null,null,t),e.current=p,p.stateNode=e,t=Nu(),t.refCount++,e.pooledCache=t,t.refCount++,p.memoizedState={element:r,isDehydrated:a,cache:t},Au(p),e}function Gv(e){return e?(e=yi,e):yi}function $v(e,t,a,r,f,p){f=Gv(f),r.context===null?r.context=f:r.pendingContext=f,r=Zs(t),r.payload={element:a},p=p===void 0?null:p,p!==null&&(r.callback=p),a=Ks(e,r,t),a!==null&&(cn(a,e,t),Ro(a,e,t))}function qv(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var a=e.retryLane;e.retryLane=a!==0&&a<t?a:t}}function Kd(e,t){qv(e,t),(e=e.alternate)&&qv(e,t)}function Fv(e){if(e.tag===13||e.tag===31){var t=Ea(e,67108864);t!==null&&cn(t,e,67108864),Kd(e,67108864)}}function Zv(e){if(e.tag===13||e.tag===31){var t=vn();t=Hn(t);var a=Ea(e,t);a!==null&&cn(a,e,t),Kd(e,t)}}var ql=!0;function $S(e,t,a,r){var f=B.T;B.T=null;var p=q.p;try{q.p=2,Yd(e,t,a,r)}finally{q.p=p,B.T=f}}function qS(e,t,a,r){var f=B.T;B.T=null;var p=q.p;try{q.p=8,Yd(e,t,a,r)}finally{q.p=p,B.T=f}}function Yd(e,t,a,r){if(ql){var f=Jd(r);if(f===null)Id(e,t,r,Fl,a),Yv(e,r);else if(ZS(f,e,t,a,r))r.stopPropagation();else if(Yv(e,r),t&4&&-1<FS.indexOf(e)){for(;f!==null;){var p=ri(f);if(p!==null)switch(p.tag){case 3:if(p=p.stateNode,p.current.memoizedState.isDehydrated){var x=ue(p.pendingLanes);if(x!==0){var k=p;for(k.pendingLanes|=2,k.entangledLanes|=2;x;){var R=1<<31-Jt(x);k.entanglements[1]|=R,x&=~R}ts(p),(We&6)===0&&(Cl=Je()+500,Ko(0))}}break;case 31:case 13:k=Ea(p,2),k!==null&&cn(k,p,2),Al(),Kd(p,2)}if(p=Jd(r),p===null&&Id(e,t,r,Fl,a),p===f)break;f=p}f!==null&&r.stopPropagation()}else Id(e,t,r,null,a)}}function Jd(e){return e=Xc(e),Wd(e)}var Fl=null;function Wd(e){if(Fl=null,e=oi(e),e!==null){var t=u(e);if(t===null)e=null;else{var a=t.tag;if(a===13){if(e=d(t),e!==null)return e;e=null}else if(a===31){if(e=m(t),e!==null)return e;e=null}else if(a===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return Fl=e,null}function Kv(e){switch(e){case"beforetoggle":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"toggle":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 2;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"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(uo()){case fo:return 2;case po:return 8;case Ta:case Br:return 32;case mo:return 268435456;default:return 32}default:return 32}}var Xd=!1,ia=null,oa=null,ra=null,tr=new Map,nr=new Map,la=[],FS="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".split(" ");function Yv(e,t){switch(e){case"focusin":case"focusout":ia=null;break;case"dragenter":case"dragleave":oa=null;break;case"mouseover":case"mouseout":ra=null;break;case"pointerover":case"pointerout":tr.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":nr.delete(t.pointerId)}}function sr(e,t,a,r,f,p){return e===null||e.nativeEvent!==p?(e={blockedOn:t,domEventName:a,eventSystemFlags:r,nativeEvent:p,targetContainers:[f]},t!==null&&(t=ri(t),t!==null&&Fv(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,f!==null&&t.indexOf(f)===-1&&t.push(f),e)}function ZS(e,t,a,r,f){switch(t){case"focusin":return ia=sr(ia,e,t,a,r,f),!0;case"dragenter":return oa=sr(oa,e,t,a,r,f),!0;case"mouseover":return ra=sr(ra,e,t,a,r,f),!0;case"pointerover":var p=f.pointerId;return tr.set(p,sr(tr.get(p)||null,e,t,a,r,f)),!0;case"gotpointercapture":return p=f.pointerId,nr.set(p,sr(nr.get(p)||null,e,t,a,r,f)),!0}return!1}function Jv(e){var t=oi(e.target);if(t!==null){var a=u(t);if(a!==null){if(t=a.tag,t===13){if(t=d(a),t!==null){e.blockedOn=t,um(e.priority,function(){Zv(a)});return}}else if(t===31){if(t=m(a),t!==null){e.blockedOn=t,um(e.priority,function(){Zv(a)});return}}else if(t===3&&a.stateNode.current.memoizedState.isDehydrated){e.blockedOn=a.tag===3?a.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Zl(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var a=Jd(e.nativeEvent);if(a===null){a=e.nativeEvent;var r=new a.constructor(a.type,a);Wc=r,a.target.dispatchEvent(r),Wc=null}else return t=ri(a),t!==null&&Fv(t),e.blockedOn=a,!1;t.shift()}return!0}function Wv(e,t,a){Zl(e)&&a.delete(t)}function KS(){Xd=!1,ia!==null&&Zl(ia)&&(ia=null),oa!==null&&Zl(oa)&&(oa=null),ra!==null&&Zl(ra)&&(ra=null),tr.forEach(Wv),nr.forEach(Wv)}function Kl(e,t){e.blockedOn===t&&(e.blockedOn=null,Xd||(Xd=!0,n.unstable_scheduleCallback(n.unstable_NormalPriority,KS)))}var Yl=null;function Xv(e){Yl!==e&&(Yl=e,n.unstable_scheduleCallback(n.unstable_NormalPriority,function(){Yl===e&&(Yl=null);for(var t=0;t<e.length;t+=3){var a=e[t],r=e[t+1],f=e[t+2];if(typeof r!="function"){if(Wd(r||a)===null)continue;break}var p=ri(a);p!==null&&(e.splice(t,3),t-=3,Ju(p,{pending:!0,data:f,method:a.method,action:r},r,f))}}))}function Hi(e){function t(R){return Kl(R,e)}ia!==null&&Kl(ia,e),oa!==null&&Kl(oa,e),ra!==null&&Kl(ra,e),tr.forEach(t),nr.forEach(t);for(var a=0;a<la.length;a++){var r=la[a];r.blockedOn===e&&(r.blockedOn=null)}for(;0<la.length&&(a=la[0],a.blockedOn===null);)Jv(a),a.blockedOn===null&&la.shift();if(a=(e.ownerDocument||e).$$reactFormReplay,a!=null)for(r=0;r<a.length;r+=3){var f=a[r],p=a[r+1],x=f[nn]||null;if(typeof p=="function")x||Xv(a);else if(x){var k=null;if(p&&p.hasAttribute("formAction")){if(f=p,x=p[nn]||null)k=x.formAction;else if(Wd(f)!==null)continue}else k=x.action;typeof k=="function"?a[r+1]=k:(a.splice(r,3),r-=3),Xv(a)}}}function Qv(){function e(p){p.canIntercept&&p.info==="react-transition"&&p.intercept({handler:function(){return new Promise(function(x){return f=x})},focusReset:"manual",scroll:"manual"})}function t(){f!==null&&(f(),f=null),r||setTimeout(a,20)}function a(){if(!r&&!navigation.transition){var p=navigation.currentEntry;p&&p.url!=null&&navigation.navigate(p.url,{state:p.getState(),info:"react-transition",history:"replace"})}}if(typeof navigation=="object"){var r=!1,f=null;return navigation.addEventListener("navigate",e),navigation.addEventListener("navigatesuccess",t),navigation.addEventListener("navigateerror",t),setTimeout(a,100),function(){r=!0,navigation.removeEventListener("navigate",e),navigation.removeEventListener("navigatesuccess",t),navigation.removeEventListener("navigateerror",t),f!==null&&(f(),f=null)}}}function Qd(e){this._internalRoot=e}Jl.prototype.render=Qd.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(o(409));var a=t.current,r=vn();$v(a,r,e,t,null,null)},Jl.prototype.unmount=Qd.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;$v(e.current,2,null,e,null,null),Al(),t[ii]=null}};function Jl(e){this._internalRoot=e}Jl.prototype.unstable_scheduleHydration=function(e){if(e){var t=cm();e={blockedOn:null,target:e,priority:t};for(var a=0;a<la.length&&t!==0&&t<la[a].priority;a++);la.splice(a,0,e),a===0&&Jv(e)}};var e0=s.version;if(e0!=="19.2.4")throw Error(o(527,e0,"19.2.4"));q.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render=="function"?Error(o(188)):(e=Object.keys(e).join(","),Error(o(268,e)));return e=g(t),e=e!==null?v(e):null,e=e===null?null:e.stateNode,e};var YS={bundleType:0,version:"19.2.4",rendererPackageName:"react-dom",currentDispatcherRef:B,reconcilerVersion:"19.2.4"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var Wl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Wl.isDisabled&&Wl.supportsFiber)try{zs=Wl.inject(YS),Yt=Wl}catch{}}return ir.createRoot=function(e,t){if(!c(e))throw Error(o(299));var a=!1,r="",f=rg,p=lg,x=cg;return t!=null&&(t.unstable_strictMode===!0&&(a=!0),t.identifierPrefix!==void 0&&(r=t.identifierPrefix),t.onUncaughtError!==void 0&&(f=t.onUncaughtError),t.onCaughtError!==void 0&&(p=t.onCaughtError),t.onRecoverableError!==void 0&&(x=t.onRecoverableError)),t=Hv(e,1,!1,null,null,a,r,null,f,p,x,Qv),e[ii]=t.current,Od(e),new Qd(t)},ir.hydrateRoot=function(e,t,a){if(!c(e))throw Error(o(299));var r=!1,f="",p=rg,x=lg,k=cg,R=null;return a!=null&&(a.unstable_strictMode===!0&&(r=!0),a.identifierPrefix!==void 0&&(f=a.identifierPrefix),a.onUncaughtError!==void 0&&(p=a.onUncaughtError),a.onCaughtError!==void 0&&(x=a.onCaughtError),a.onRecoverableError!==void 0&&(k=a.onRecoverableError),a.formState!==void 0&&(R=a.formState)),t=Hv(e,1,!0,t,a??null,r,f,R,p,x,k,Qv),t.context=Gv(null),a=t.current,r=vn(),r=Hn(r),f=Zs(r),f.callback=null,Ks(a,f,r),a=r,t.current.lanes=a,Pe(t,a),ts(t),e[ii]=t.current,Od(e),new Jl(t)},ir.version="19.2.4",ir}var l0;function TT(){if(l0)return ef.exports;l0=1;function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(s){console.error(s)}}return n(),ef.exports=ST(),ef.exports}var kT=TT();const wT="modulepreload",NT=function(n){return"/"+n},c0={},jT=function(s,i,o){let c=Promise.resolve();if(i&&i.length>0){let d=function(g){return Promise.all(g.map(v=>Promise.resolve(v).then(b=>({status:"fulfilled",value:b}),b=>({status:"rejected",reason:b}))))};document.getElementsByTagName("link");const m=document.querySelector("meta[property=csp-nonce]"),h=(m==null?void 0:m.nonce)||(m==null?void 0:m.getAttribute("nonce"));c=d(i.map(g=>{if(g=NT(g),g in c0)return;c0[g]=!0;const v=g.endsWith(".css"),b=v?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${g}"]${b}`))return;const _=document.createElement("link");if(_.rel=v?"stylesheet":wT,v||(_.as="script"),_.crossOrigin="",_.href=g,h&&_.setAttribute("nonce",h),document.head.appendChild(_),v)return new Promise((S,T)=>{_.addEventListener("load",S),_.addEventListener("error",()=>T(new Error(`Unable to preload CSS for ${g}`)))})}))}function u(d){const m=new Event("vite:preloadError",{cancelable:!0});if(m.payload=d,window.dispatchEvent(m),!m.defaultPrevented)throw d}return c.then(d=>{for(const m of d||[])m.status==="rejected"&&u(m.reason);return s().catch(u)})},CT=new Proxy(globalThis.fetch,{apply(n,s,i){return Reflect.apply(globalThis.fetch,s,i)}}),ET=aT({baseUrl:"/",fetch:CT}),ke=iT(oT,ET),AT="_bar_1xhb4_1",DT="_input_1xhb4_32",RT="_select_1xhb4_67",MT="_btnPrimary_1xhb4_103",OT="_btnGhost_1xhb4_173",IT="_badge_1xhb4_195",BT="_disconnectHint_1xhb4_205",yn={bar:AT,input:DT,select:RT,btnPrimary:MT,btnGhost:OT,badge:IT,disconnectHint:BT};function LT(n,s){if(!n)return!1;const i=s.find(o=>o.id===n);return i!==void 0&&(i.status==="disconnected"||i.status==="error")}function UT({environmentId:n,onReconnect:s}){return l.jsxs(l.Fragment,{children:[l.jsx("span",{className:yn.disconnectHint,"data-testid":"env-disconnect-hint",children:"Environment unavailable"}),l.jsx("button",{type:"button",onClick:()=>s(n),className:yn.btnGhost,"data-testid":"reconnect-btn",title:"Reconnect the environment to resume messaging",children:"Reconnect"})]})}function Sr({mode:n,sessionId:s,environmentId:i,taskId:o,showPersonaSelect:c,personas:u,environments:d,onSendInput:m,onSpawn:h,onStartTask:g,onProvisionEnvironment:v,onShowToast:b}){const[_,S]=y.useState(""),[T,N]=y.useState(""),j=LT(i,d),w=C=>{if(C.preventDefault(),!!_.trim())if(n==="send"){if(!s||j)return;m(s,_),S("")}else if(n==="spawn"){if(!i)return;h(i,_,T),b==null||b("Session started","success"),S(""),N("")}else{if(!o)return;g(o,void 0,i,_),S("")}};return n==="spawn"?l.jsxs("form",{onSubmit:w,className:yn.bar,children:[l.jsx("span",{className:yn.badge,children:"new chat"}),l.jsx("input",{type:"text",value:_,onChange:C=>S(C.target.value),placeholder:"Enter prompt...",autoFocus:!0,className:yn.input}),c&&l.jsxs("select",{value:T,onChange:C=>N(C.target.value),className:yn.select,children:[l.jsx("option",{value:"",children:"(Default)"}),u.map(C=>l.jsx("option",{value:C.id,children:C.name},C.id))]}),l.jsx("button",{type:"submit",disabled:!_.trim()||!i,className:yn.btnPrimary,children:"Go"})]}):n==="start"?l.jsxs("form",{onSubmit:w,className:yn.bar,children:[l.jsx("input",{type:"text",value:_,onChange:C=>S(C.target.value),placeholder:"Type a message...",autoFocus:!0,className:yn.input}),l.jsx("button",{type:"submit",disabled:!_.trim(),className:yn.btnPrimary,children:"Send"})]}):l.jsxs("form",{onSubmit:w,className:yn.bar,children:[j&&i&&l.jsx(UT,{environmentId:i,onReconnect:v}),l.jsx("input",{type:"text",value:_,onChange:C=>S(C.target.value),placeholder:"Type a message...",autoFocus:!j,disabled:j,className:yn.input}),l.jsx("span",{title:j?"Environment is unavailable — reconnect first":void 0,children:l.jsx("button",{type:"submit",disabled:!_.trim()||j,className:yn.btnPrimary,children:"Send"})})]})}const u0=220,d0=70,zT=40,PT=60,VT="hierarchy",HT="dependency";function GT(n){return y.useMemo(()=>{if(n.length===0)return{nodes:[],edges:[]};const s=new t0.graphlib.Graph({multigraph:!0});s.setDefaultEdgeLabel(()=>({})),s.setGraph({rankdir:"TB",nodesep:zT,ranksep:PT});const i=new Map(n.map(d=>[d.id,d])),o=new Map;for(const d of n)if(d.parentTaskId&&i.has(d.parentTaskId)){const m=o.get(d.parentTaskId)||[];m.push(d),o.set(d.parentTaskId,m)}for(const d of n)s.setNode(d.id,{width:u0,height:d0});const c=[];for(const d of n){if(d.parentTaskId&&i.has(d.parentTaskId)){const m=`hierarchy-${d.parentTaskId}-${d.id}`;s.setEdge(d.parentTaskId,d.id,{},m),c.push({id:m,source:d.parentTaskId,target:d.id,type:"smoothstep",data:{edgeType:VT},style:{stroke:"var(--accent-green)",strokeWidth:2},animated:!1})}for(const m of d.dependsOn)if(i.has(m)){const h=`dependency-${m}-${d.id}`;s.setEdge(m,d.id,{},h),c.push({id:h,source:m,target:d.id,type:"smoothstep",data:{edgeType:HT},style:{stroke:"var(--text-tertiary)",strokeWidth:1.5,strokeDasharray:"6 3"},animated:!1})}}return t0.layout(s),{nodes:n.map(d=>{const m=s.node(d.id),h=o.get(d.id)||[];return{id:d.id,type:"task",position:{x:m.x-u0/2,y:m.y-d0/2},data:{task:d,childCount:h.length,doneChildCount:h.filter(g=>g.status==="complete").length,hasDependencies:d.dependsOn.length>0}}}),edges:c}},[n])}const zf={not_started:{color:"var(--text-tertiary)",icon:"○",label:"Not Started"},working:{color:"var(--accent-green)",icon:"●",label:"Working"},paused:{color:"var(--accent-yellow)",icon:"◉",label:"Paused"},complete:{color:"var(--accent-green)",icon:"✓",label:"Complete"},failed:{color:"var(--accent-red)",icon:"✗",label:"Failed"},blocked:{color:"var(--accent-yellow)",icon:"⦸",label:"Blocked"}};function va(n){return n==="blocked"?zf.blocked:zf[mp(n)]}const $T={not_started:"statusPending",working:"statusInProgress",paused:"statusWaitingInput",complete:"statusDone",failed:"statusFailed"};function qT(n){return $T[mp(n)]??"statusPending"}const FT=["working","paused","failed","not_started","blocked","complete"],f0=["not_started","working","paused","complete","failed"],ZT={pending:"not_started",assigned:"not_started",in_progress:"working",waiting_input:"paused",review:"paused",done:"complete"};function mp(n){return n in zf&&n!=="blocked"?n:ZT[n]??"not_started"}const KT={not_started:"--text-tertiary",working:"--accent-green",paused:"--accent-yellow",complete:"--accent-green",failed:"--accent-red",pending:"--text-tertiary",assigned:"--text-tertiary",in_progress:"--accent-green",review:"--accent-yellow",done:"--accent-green",waiting_input:"--accent-yellow"},YT="_dagContainer_js4w6_1",JT="_taskNode_js4w6_26",WT="_taskNodeBorder_js4w6_54",XT="_taskNodeContent_js4w6_60",QT="_taskNodeHeader_js4w6_70",ek="_taskNodeIcon_js4w6_77",tk="_taskNodeTitle_js4w6_82",nk="_taskNodeBadges_js4w6_90",sk="_childBadge_js4w6_95",ak="_depBadge_js4w6_107",ik="_handle_js4w6_119",ok="_emptyCta_js4w6_126",rk="_ctaDescription_js4w6_137",lk="_ctaButton_js4w6_144",tn={dagContainer:YT,taskNode:JT,taskNodeBorder:WT,taskNodeContent:XT,taskNodeHeader:QT,taskNodeIcon:ek,taskNodeTitle:tk,taskNodeBadges:nk,childBadge:sk,depBadge:ak,handle:ik,emptyCta:ok,ctaDescription:rk,ctaButton:lk};function ck({data:n}){const{task:s,childCount:i,doneChildCount:o,hasDependencies:c}=n,u=va(s.status);return l.jsxs("div",{className:tn.taskNode,"data-task-id":s.id,"data-task-title":s.title,children:[l.jsx(n0,{type:"target",position:s0.Top,className:tn.handle}),l.jsx("div",{className:tn.taskNodeBorder,style:{backgroundColor:u.color}}),l.jsxs("div",{className:tn.taskNodeContent,children:[l.jsxs("div",{className:tn.taskNodeHeader,children:[l.jsx("span",{className:tn.taskNodeIcon,style:{color:u.color},children:u.icon}),l.jsx("span",{className:tn.taskNodeTitle,children:s.title})]}),l.jsxs("div",{className:tn.taskNodeBadges,children:[i>0&&l.jsxs("span",{className:tn.childBadge,children:[o,"/",i]}),c&&l.jsx("span",{className:tn.depBadge,children:"dep"})]})]}),l.jsx(n0,{type:"source",position:s0.Bottom,className:tn.handle})]})}/**
27
- * react-router v7.13.2
28
- *
29
- * Copyright (c) Remix Software Inc.
30
- *
31
- * This source code is licensed under the MIT license found in the
32
- * LICENSE.md file in the root directory of this source tree.
33
- *
34
- * @license MIT
35
- */var p0="popstate";function m0(n){return typeof n=="object"&&n!=null&&"pathname"in n&&"search"in n&&"hash"in n&&"state"in n&&"key"in n}function uk(n={}){function s(o,c){var g;let u=(g=c.state)==null?void 0:g.masked,{pathname:d,search:m,hash:h}=u||o.location;return Pf("",{pathname:d,search:m,hash:h},c.state&&c.state.usr||null,c.state&&c.state.key||"default",u?{pathname:o.location.pathname,search:o.location.search,hash:o.location.hash}:void 0)}function i(o,c){return typeof c=="string"?c:Tr(c)}return fk(s,i,null,n)}function dt(n,s){if(n===!1||n===null||typeof n>"u")throw new Error(s)}function Ln(n,s){if(!n){typeof console<"u"&&console.warn(s);try{throw new Error(s)}catch{}}}function dk(){return Math.random().toString(36).substring(2,10)}function h0(n,s){return{usr:n.state,key:n.key,idx:s,masked:n.unstable_mask?{pathname:n.pathname,search:n.search,hash:n.hash}:void 0}}function Pf(n,s,i=null,o,c){return{pathname:typeof n=="string"?n:n.pathname,search:"",hash:"",...typeof s=="string"?oo(s):s,state:i,key:s&&s.key||o||dk(),unstable_mask:c}}function Tr({pathname:n="/",search:s="",hash:i=""}){return s&&s!=="?"&&(n+=s.charAt(0)==="?"?s:"?"+s),i&&i!=="#"&&(n+=i.charAt(0)==="#"?i:"#"+i),n}function oo(n){let s={};if(n){let i=n.indexOf("#");i>=0&&(s.hash=n.substring(i),n=n.substring(0,i));let o=n.indexOf("?");o>=0&&(s.search=n.substring(o),n=n.substring(0,o)),n&&(s.pathname=n)}return s}function fk(n,s,i,o={}){let{window:c=document.defaultView,v5Compat:u=!1}=o,d=c.history,m="POP",h=null,g=v();g==null&&(g=0,d.replaceState({...d.state,idx:g},""));function v(){return(d.state||{idx:null}).idx}function b(){m="POP";let j=v(),w=j==null?null:j-g;g=j,h&&h({action:m,location:N.location,delta:w})}function _(j,w){m="PUSH";let C=m0(j)?j:Pf(N.location,j,w);g=v()+1;let A=h0(C,g),M=N.createHref(C.unstable_mask||C);try{d.pushState(A,"",M)}catch(D){if(D instanceof DOMException&&D.name==="DataCloneError")throw D;c.location.assign(M)}u&&h&&h({action:m,location:N.location,delta:1})}function S(j,w){m="REPLACE";let C=m0(j)?j:Pf(N.location,j,w);g=v();let A=h0(C,g),M=N.createHref(C.unstable_mask||C);d.replaceState(A,"",M),u&&h&&h({action:m,location:N.location,delta:0})}function T(j){return pk(j)}let N={get action(){return m},get location(){return n(c,d)},listen(j){if(h)throw new Error("A history only accepts one active listener");return c.addEventListener(p0,b),h=j,()=>{c.removeEventListener(p0,b),h=null}},createHref(j){return s(c,j)},createURL:T,encodeLocation(j){let w=T(j);return{pathname:w.pathname,search:w.search,hash:w.hash}},push:_,replace:S,go(j){return d.go(j)}};return N}function pk(n,s=!1){let i="http://localhost";typeof window<"u"&&(i=window.location.origin!=="null"?window.location.origin:window.location.href),dt(i,"No window.location.(origin|href) available to create URL");let o=typeof n=="string"?n:Tr(n);return o=o.replace(/ $/,"%20"),!s&&o.startsWith("//")&&(o=i+o),new URL(o,i)}function db(n,s,i="/"){return mk(n,s,i,!1)}function mk(n,s,i,o){let c=typeof s=="string"?oo(s):s,u=Is(c.pathname||"/",i);if(u==null)return null;let d=fb(n);hk(d);let m=null;for(let h=0;m==null&&h<d.length;++h){let g=mb(u);m=kk(d[h],g,o)}return m}function fb(n,s=[],i=[],o="",c=!1){let u=(d,m,h=c,g)=>{let v={relativePath:g===void 0?d.path||"":g,caseSensitive:d.caseSensitive===!0,childrenIndex:m,route:d};if(v.relativePath.startsWith("/")){if(!v.relativePath.startsWith(o)&&h)return;dt(v.relativePath.startsWith(o),`Absolute route path "${v.relativePath}" nested under path "${o}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),v.relativePath=v.relativePath.slice(o.length)}let b=as([o,v.relativePath]),_=i.concat(v);d.children&&d.children.length>0&&(dt(d.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${b}".`),fb(d.children,s,_,b,h)),!(d.path==null&&!d.index)&&s.push({path:b,score:Sk(b,d.index),routesMeta:_})};return n.forEach((d,m)=>{var h;if(d.path===""||!((h=d.path)!=null&&h.includes("?")))u(d,m);else for(let g of pb(d.path))u(d,m,!0,g)}),s}function pb(n){let s=n.split("/");if(s.length===0)return[];let[i,...o]=s,c=i.endsWith("?"),u=i.replace(/\?$/,"");if(o.length===0)return c?[u,""]:[u];let d=pb(o.join("/")),m=[];return m.push(...d.map(h=>h===""?u:[u,h].join("/"))),c&&m.push(...d),m.map(h=>n.startsWith("/")&&h===""?"/":h)}function hk(n){n.sort((s,i)=>s.score!==i.score?i.score-s.score:Tk(s.routesMeta.map(o=>o.childrenIndex),i.routesMeta.map(o=>o.childrenIndex)))}var gk=/^:[\w-]+$/,vk=3,yk=2,bk=1,_k=10,xk=-2,g0=n=>n==="*";function Sk(n,s){let i=n.split("/"),o=i.length;return i.some(g0)&&(o+=xk),s&&(o+=yk),i.filter(c=>!g0(c)).reduce((c,u)=>c+(gk.test(u)?vk:u===""?bk:_k),o)}function Tk(n,s){return n.length===s.length&&n.slice(0,-1).every((o,c)=>o===s[c])?n[n.length-1]-s[s.length-1]:0}function kk(n,s,i=!1){let{routesMeta:o}=n,c={},u="/",d=[];for(let m=0;m<o.length;++m){let h=o[m],g=m===o.length-1,v=u==="/"?s:s.slice(u.length)||"/",b=kr({path:h.relativePath,caseSensitive:h.caseSensitive,end:g},v),_=h.route;if(!b&&g&&i&&!o[o.length-1].route.index&&(b=kr({path:h.relativePath,caseSensitive:h.caseSensitive,end:!1},v)),!b)return null;Object.assign(c,b.params),d.push({params:c,pathname:as([u,b.pathname]),pathnameBase:Ek(as([u,b.pathnameBase])),route:_}),b.pathnameBase!=="/"&&(u=as([u,b.pathnameBase]))}return d}function kr(n,s){typeof n=="string"&&(n={path:n,caseSensitive:!1,end:!0});let[i,o]=wk(n.path,n.caseSensitive,n.end),c=s.match(i);if(!c)return null;let u=c[0],d=u.replace(/(.)\/+$/,"$1"),m=c.slice(1);return{params:o.reduce((g,{paramName:v,isOptional:b},_)=>{if(v==="*"){let T=m[_]||"";d=u.slice(0,u.length-T.length).replace(/(.)\/+$/,"$1")}const S=m[_];return b&&!S?g[v]=void 0:g[v]=(S||"").replace(/%2F/g,"/"),g},{}),pathname:u,pathnameBase:d,pattern:n}}function wk(n,s=!1,i=!0){Ln(n==="*"||!n.endsWith("*")||n.endsWith("/*"),`Route path "${n}" will be treated as if it were "${n.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${n.replace(/\*$/,"/*")}".`);let o=[],c="^"+n.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(d,m,h,g,v)=>{if(o.push({paramName:m,isOptional:h!=null}),h){let b=v.charAt(g+d.length);return b&&b!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return n.endsWith("*")?(o.push({paramName:"*"}),c+=n==="*"||n==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):i?c+="\\/*$":n!==""&&n!=="/"&&(c+="(?:(?=\\/|$))"),[new RegExp(c,s?void 0:"i"),o]}function mb(n){try{return n.split("/").map(s=>decodeURIComponent(s).replace(/\//g,"%2F")).join("/")}catch(s){return Ln(!1,`The URL path "${n}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${s}).`),n}}function Is(n,s){if(s==="/")return n;if(!n.toLowerCase().startsWith(s.toLowerCase()))return null;let i=s.endsWith("/")?s.length-1:s.length,o=n.charAt(i);return o&&o!=="/"?null:n.slice(i)||"/"}var Nk=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function jk(n,s="/"){let{pathname:i,search:o="",hash:c=""}=typeof n=="string"?oo(n):n,u;return i?(i=i.replace(/\/\/+/g,"/"),i.startsWith("/")?u=v0(i.substring(1),"/"):u=v0(i,s)):u=s,{pathname:u,search:Ak(o),hash:Dk(c)}}function v0(n,s){let i=s.replace(/\/+$/,"").split("/");return n.split("/").forEach(c=>{c===".."?i.length>1&&i.pop():c!=="."&&i.push(c)}),i.length>1?i.join("/"):"/"}function sf(n,s,i,o){return`Cannot include a '${n}' character in a manually specified \`to.${s}\` field [${JSON.stringify(o)}]. Please separate it out to the \`to.${i}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function Ck(n){return n.filter((s,i)=>i===0||s.route.path&&s.route.path.length>0)}function hp(n){let s=Ck(n);return s.map((i,o)=>o===s.length-1?i.pathname:i.pathnameBase)}function Rc(n,s,i,o=!1){let c;typeof n=="string"?c=oo(n):(c={...n},dt(!c.pathname||!c.pathname.includes("?"),sf("?","pathname","search",c)),dt(!c.pathname||!c.pathname.includes("#"),sf("#","pathname","hash",c)),dt(!c.search||!c.search.includes("#"),sf("#","search","hash",c)));let u=n===""||c.pathname==="",d=u?"/":c.pathname,m;if(d==null)m=i;else{let b=s.length-1;if(!o&&d.startsWith("..")){let _=d.split("/");for(;_[0]==="..";)_.shift(),b-=1;c.pathname=_.join("/")}m=b>=0?s[b]:"/"}let h=jk(c,m),g=d&&d!=="/"&&d.endsWith("/"),v=(u||d===".")&&i.endsWith("/");return!h.pathname.endsWith("/")&&(g||v)&&(h.pathname+="/"),h}var as=n=>n.join("/").replace(/\/\/+/g,"/"),Ek=n=>n.replace(/\/+$/,"").replace(/^\/*/,"/"),Ak=n=>!n||n==="?"?"":n.startsWith("?")?n:"?"+n,Dk=n=>!n||n==="#"?"":n.startsWith("#")?n:"#"+n,Rk=class{constructor(n,s,i,o=!1){this.status=n,this.statusText=s||"",this.internal=o,i instanceof Error?(this.data=i.toString(),this.error=i):this.data=i}};function Mk(n){return n!=null&&typeof n.status=="number"&&typeof n.statusText=="string"&&typeof n.internal=="boolean"&&"data"in n}function Ok(n){return n.map(s=>s.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var hb=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function gb(n,s){let i=n;if(typeof i!="string"||!Nk.test(i))return{absoluteURL:void 0,isExternal:!1,to:i};let o=i,c=!1;if(hb)try{let u=new URL(window.location.href),d=i.startsWith("//")?new URL(u.protocol+i):new URL(i),m=Is(d.pathname,s);d.origin===u.origin&&m!=null?i=m+d.search+d.hash:c=!0}catch{Ln(!1,`<Link to="${i}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:o,isExternal:c,to:i}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var vb=["POST","PUT","PATCH","DELETE"];new Set(vb);var Ik=["GET",...vb];new Set(Ik);var ro=y.createContext(null);ro.displayName="DataRouter";var Mc=y.createContext(null);Mc.displayName="DataRouterState";var Bk=y.createContext(!1),yb=y.createContext({isTransitioning:!1});yb.displayName="ViewTransition";var Lk=y.createContext(new Map);Lk.displayName="Fetchers";var Uk=y.createContext(null);Uk.displayName="Await";var xn=y.createContext(null);xn.displayName="Navigation";var Ar=y.createContext(null);Ar.displayName="Location";var Un=y.createContext({outlet:null,matches:[],isDataRoute:!1});Un.displayName="Route";var gp=y.createContext(null);gp.displayName="RouteError";var bb="REACT_ROUTER_ERROR",zk="REDIRECT",Pk="ROUTE_ERROR_RESPONSE";function Vk(n){if(n.startsWith(`${bb}:${zk}:{`))try{let s=JSON.parse(n.slice(28));if(typeof s=="object"&&s&&typeof s.status=="number"&&typeof s.statusText=="string"&&typeof s.location=="string"&&typeof s.reloadDocument=="boolean"&&typeof s.replace=="boolean")return s}catch{}}function Hk(n){if(n.startsWith(`${bb}:${Pk}:{`))try{let s=JSON.parse(n.slice(40));if(typeof s=="object"&&s&&typeof s.status=="number"&&typeof s.statusText=="string")return new Rk(s.status,s.statusText,s.data)}catch{}}function Gk(n,{relative:s}={}){dt(ei(),"useHref() may be used only in the context of a <Router> component.");let{basename:i,navigator:o}=y.useContext(xn),{hash:c,pathname:u,search:d}=Dr(n,{relative:s}),m=u;return i!=="/"&&(m=u==="/"?i:as([i,u])),o.createHref({pathname:m,search:d,hash:c})}function ei(){return y.useContext(Ar)!=null}function Bt(){return dt(ei(),"useLocation() may be used only in the context of a <Router> component."),y.useContext(Ar).location}function Rt(n){dt(ei(),"useMatch() may be used only in the context of a <Router> component.");let{pathname:s}=Bt();return y.useMemo(()=>kr(n,mb(s)),[s,n])}var _b="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function xb(n){y.useContext(xn).static||y.useLayoutEffect(n)}function Oc(){let{isDataRoute:n}=y.useContext(Un);return n?a2():$k()}function $k(){dt(ei(),"useNavigate() may be used only in the context of a <Router> component.");let n=y.useContext(ro),{basename:s,navigator:i}=y.useContext(xn),{matches:o}=y.useContext(Un),{pathname:c}=Bt(),u=JSON.stringify(hp(o)),d=y.useRef(!1);return xb(()=>{d.current=!0}),y.useCallback((h,g={})=>{if(Ln(d.current,_b),!d.current)return;if(typeof h=="number"){i.go(h);return}let v=Rc(h,JSON.parse(u),c,g.relative==="path");n==null&&s!=="/"&&(v.pathname=v.pathname==="/"?s:as([s,v.pathname])),(g.replace?i.replace:i.push)(v,g.state,g)},[s,i,u,c,n])}var qk=y.createContext(null);function Fk(n){let s=y.useContext(Un).outlet;return y.useMemo(()=>s&&y.createElement(qk.Provider,{value:n},s),[s,n])}function _a(){let{matches:n}=y.useContext(Un),s=n[n.length-1];return s?s.params:{}}function Dr(n,{relative:s}={}){let{matches:i}=y.useContext(Un),{pathname:o}=Bt(),c=JSON.stringify(hp(i));return y.useMemo(()=>Rc(n,JSON.parse(c),o,s==="path"),[n,c,o,s])}function Zk(n,s){return Sb(n,s)}function Sb(n,s,i){var j;dt(ei(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:o}=y.useContext(xn),{matches:c}=y.useContext(Un),u=c[c.length-1],d=u?u.params:{},m=u?u.pathname:"/",h=u?u.pathnameBase:"/",g=u&&u.route;{let w=g&&g.path||"";kb(m,!g||w.endsWith("*")||w.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${m}" (under <Route path="${w}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
36
-
37
- Please change the parent <Route path="${w}"> to <Route path="${w==="/"?"*":`${w}/*`}">.`)}let v=Bt(),b;if(s){let w=typeof s=="string"?oo(s):s;dt(h==="/"||((j=w.pathname)==null?void 0:j.startsWith(h)),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${h}" but pathname "${w.pathname}" was given in the \`location\` prop.`),b=w}else b=v;let _=b.pathname||"/",S=_;if(h!=="/"){let w=h.replace(/^\//,"").split("/");S="/"+_.replace(/^\//,"").split("/").slice(w.length).join("/")}let T=db(n,{pathname:S});Ln(g||T!=null,`No routes matched location "${b.pathname}${b.search}${b.hash}" `),Ln(T==null||T[T.length-1].route.element!==void 0||T[T.length-1].route.Component!==void 0||T[T.length-1].route.lazy!==void 0,`Matched leaf route at location "${b.pathname}${b.search}${b.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let N=Xk(T&&T.map(w=>Object.assign({},w,{params:Object.assign({},d,w.params),pathname:as([h,o.encodeLocation?o.encodeLocation(w.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:w.pathname]),pathnameBase:w.pathnameBase==="/"?h:as([h,o.encodeLocation?o.encodeLocation(w.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:w.pathnameBase])})),c,i);return s&&N?y.createElement(Ar.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",unstable_mask:void 0,...b},navigationType:"POP"}},N):N}function Kk(){let n=s2(),s=Mk(n)?`${n.status} ${n.statusText}`:n instanceof Error?n.message:JSON.stringify(n),i=n instanceof Error?n.stack:null,o="rgba(200,200,200, 0.5)",c={padding:"0.5rem",backgroundColor:o},u={padding:"2px 4px",backgroundColor:o},d=null;return console.error("Error handled by React Router default ErrorBoundary:",n),d=y.createElement(y.Fragment,null,y.createElement("p",null,"💿 Hey developer 👋"),y.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",y.createElement("code",{style:u},"ErrorBoundary")," or"," ",y.createElement("code",{style:u},"errorElement")," prop on your route.")),y.createElement(y.Fragment,null,y.createElement("h2",null,"Unexpected Application Error!"),y.createElement("h3",{style:{fontStyle:"italic"}},s),i?y.createElement("pre",{style:c},i):null,d)}var Yk=y.createElement(Kk,null),Tb=class extends y.Component{constructor(n){super(n),this.state={location:n.location,revalidation:n.revalidation,error:n.error}}static getDerivedStateFromError(n){return{error:n}}static getDerivedStateFromProps(n,s){return s.location!==n.location||s.revalidation!=="idle"&&n.revalidation==="idle"?{error:n.error,location:n.location,revalidation:n.revalidation}:{error:n.error!==void 0?n.error:s.error,location:s.location,revalidation:n.revalidation||s.revalidation}}componentDidCatch(n,s){this.props.onError?this.props.onError(n,s):console.error("React Router caught the following error during render",n)}render(){let n=this.state.error;if(this.context&&typeof n=="object"&&n&&"digest"in n&&typeof n.digest=="string"){const i=Hk(n.digest);i&&(n=i)}let s=n!==void 0?y.createElement(Un.Provider,{value:this.props.routeContext},y.createElement(gp.Provider,{value:n,children:this.props.component})):this.props.children;return this.context?y.createElement(Jk,{error:n},s):s}};Tb.contextType=Bk;var af=new WeakMap;function Jk({children:n,error:s}){let{basename:i}=y.useContext(xn);if(typeof s=="object"&&s&&"digest"in s&&typeof s.digest=="string"){let o=Vk(s.digest);if(o){let c=af.get(s);if(c)throw c;let u=gb(o.location,i);if(hb&&!af.get(s))if(u.isExternal||o.reloadDocument)window.location.href=u.absoluteURL||u.to;else{const d=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(u.to,{replace:o.replace}));throw af.set(s,d),d}return y.createElement("meta",{httpEquiv:"refresh",content:`0;url=${u.absoluteURL||u.to}`})}}return n}function Wk({routeContext:n,match:s,children:i}){let o=y.useContext(ro);return o&&o.static&&o.staticContext&&(s.route.errorElement||s.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=s.route.id),y.createElement(Un.Provider,{value:n},i)}function Xk(n,s=[],i){let o=i==null?void 0:i.state;if(n==null){if(!o)return null;if(o.errors)n=o.matches;else if(s.length===0&&!o.initialized&&o.matches.length>0)n=o.matches;else return null}let c=n,u=o==null?void 0:o.errors;if(u!=null){let v=c.findIndex(b=>b.route.id&&(u==null?void 0:u[b.route.id])!==void 0);dt(v>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(u).join(",")}`),c=c.slice(0,Math.min(c.length,v+1))}let d=!1,m=-1;if(i&&o){d=o.renderFallback;for(let v=0;v<c.length;v++){let b=c[v];if((b.route.HydrateFallback||b.route.hydrateFallbackElement)&&(m=v),b.route.id){let{loaderData:_,errors:S}=o,T=b.route.loader&&!_.hasOwnProperty(b.route.id)&&(!S||S[b.route.id]===void 0);if(b.route.lazy||T){i.isStatic&&(d=!0),m>=0?c=c.slice(0,m+1):c=[c[0]];break}}}}let h=i==null?void 0:i.onError,g=o&&h?(v,b)=>{var _,S;h(v,{location:o.location,params:((S=(_=o.matches)==null?void 0:_[0])==null?void 0:S.params)??{},unstable_pattern:Ok(o.matches),errorInfo:b})}:void 0;return c.reduceRight((v,b,_)=>{let S,T=!1,N=null,j=null;o&&(S=u&&b.route.id?u[b.route.id]:void 0,N=b.route.errorElement||Yk,d&&(m<0&&_===0?(kb("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),T=!0,j=null):m===_&&(T=!0,j=b.route.hydrateFallbackElement||null)));let w=s.concat(c.slice(0,_+1)),C=()=>{let A;return S?A=N:T?A=j:b.route.Component?A=y.createElement(b.route.Component,null):b.route.element?A=b.route.element:A=v,y.createElement(Wk,{match:b,routeContext:{outlet:v,matches:w,isDataRoute:o!=null},children:A})};return o&&(b.route.ErrorBoundary||b.route.errorElement||_===0)?y.createElement(Tb,{location:o.location,revalidation:o.revalidation,component:N,error:S,children:C(),routeContext:{outlet:null,matches:w,isDataRoute:!0},onError:g}):C()},null)}function vp(n){return`${n} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Qk(n){let s=y.useContext(ro);return dt(s,vp(n)),s}function e2(n){let s=y.useContext(Mc);return dt(s,vp(n)),s}function t2(n){let s=y.useContext(Un);return dt(s,vp(n)),s}function yp(n){let s=t2(n),i=s.matches[s.matches.length-1];return dt(i.route.id,`${n} can only be used on routes that contain a unique "id"`),i.route.id}function n2(){return yp("useRouteId")}function s2(){var o;let n=y.useContext(gp),s=e2("useRouteError"),i=yp("useRouteError");return n!==void 0?n:(o=s.errors)==null?void 0:o[i]}function a2(){let{router:n}=Qk("useNavigate"),s=yp("useNavigate"),i=y.useRef(!1);return xb(()=>{i.current=!0}),y.useCallback(async(c,u={})=>{Ln(i.current,_b),i.current&&(typeof c=="number"?await n.navigate(c):await n.navigate(c,{fromRouteId:s,...u}))},[n,s])}var y0={};function kb(n,s,i){!s&&!y0[n]&&(y0[n]=!0,Ln(!1,i))}y.memo(i2);function i2({routes:n,future:s,state:i,isStatic:o,onError:c}){return Sb(n,void 0,{state:i,isStatic:o,onError:c})}function Yn({to:n,replace:s,state:i,relative:o}){dt(ei(),"<Navigate> may be used only in the context of a <Router> component.");let{static:c}=y.useContext(xn);Ln(!c,"<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.");let{matches:u}=y.useContext(Un),{pathname:d}=Bt(),m=Oc(),h=Rc(n,hp(u),d,o==="path"),g=JSON.stringify(h);return y.useEffect(()=>{m(JSON.parse(g),{replace:s,state:i,relative:o})},[m,g,o,s,i]),null}function ti(n){return Fk(n.context)}function Ne(n){dt(!1,"A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.")}function o2({basename:n="/",children:s=null,location:i,navigationType:o="POP",navigator:c,static:u=!1,unstable_useTransitions:d}){dt(!ei(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let m=n.replace(/^\/*/,"/"),h=y.useMemo(()=>({basename:m,navigator:c,static:u,unstable_useTransitions:d,future:{}}),[m,c,u,d]);typeof i=="string"&&(i=oo(i));let{pathname:g="/",search:v="",hash:b="",state:_=null,key:S="default",unstable_mask:T}=i,N=y.useMemo(()=>{let j=Is(g,m);return j==null?null:{location:{pathname:j,search:v,hash:b,state:_,key:S,unstable_mask:T},navigationType:o}},[m,g,v,b,_,S,o,T]);return Ln(N!=null,`<Router basename="${m}"> is not able to match the URL "${g}${v}${b}" because it does not start with the basename, so the <Router> won't render anything.`),N==null?null:y.createElement(xn.Provider,{value:h},y.createElement(Ar.Provider,{children:s,value:N}))}function r2({children:n,location:s}){return Zk(Vf(n),s)}function Vf(n,s=[]){let i=[];return y.Children.forEach(n,(o,c)=>{if(!y.isValidElement(o))return;let u=[...s,c];if(o.type===y.Fragment){i.push.apply(i,Vf(o.props.children,u));return}dt(o.type===Ne,`[${typeof o.type=="string"?o.type:o.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),dt(!o.props.index||!o.props.children,"An index route cannot have child routes.");let d={id:o.props.id||u.join("-"),caseSensitive:o.props.caseSensitive,element:o.props.element,Component:o.props.Component,index:o.props.index,path:o.props.path,middleware:o.props.middleware,loader:o.props.loader,action:o.props.action,hydrateFallbackElement:o.props.hydrateFallbackElement,HydrateFallback:o.props.HydrateFallback,errorElement:o.props.errorElement,ErrorBoundary:o.props.ErrorBoundary,hasErrorBoundary:o.props.hasErrorBoundary===!0||o.props.ErrorBoundary!=null||o.props.errorElement!=null,shouldRevalidate:o.props.shouldRevalidate,handle:o.props.handle,lazy:o.props.lazy};o.props.children&&(d.children=Vf(o.props.children,u)),i.push(d)}),i}var fc="get",pc="application/x-www-form-urlencoded";function Ic(n){return typeof HTMLElement<"u"&&n instanceof HTMLElement}function l2(n){return Ic(n)&&n.tagName.toLowerCase()==="button"}function c2(n){return Ic(n)&&n.tagName.toLowerCase()==="form"}function u2(n){return Ic(n)&&n.tagName.toLowerCase()==="input"}function d2(n){return!!(n.metaKey||n.altKey||n.ctrlKey||n.shiftKey)}function f2(n,s){return n.button===0&&(!s||s==="_self")&&!d2(n)}function Hf(n=""){return new URLSearchParams(typeof n=="string"||Array.isArray(n)||n instanceof URLSearchParams?n:Object.keys(n).reduce((s,i)=>{let o=n[i];return s.concat(Array.isArray(o)?o.map(c=>[i,c]):[[i,o]])},[]))}function p2(n,s){let i=Hf(n);return s&&s.forEach((o,c)=>{i.has(c)||s.getAll(c).forEach(u=>{i.append(c,u)})}),i}var ec=null;function m2(){if(ec===null)try{new FormData(document.createElement("form"),0),ec=!1}catch{ec=!0}return ec}var h2=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function of(n){return n!=null&&!h2.has(n)?(Ln(!1,`"${n}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${pc}"`),null):n}function g2(n,s){let i,o,c,u,d;if(c2(n)){let m=n.getAttribute("action");o=m?Is(m,s):null,i=n.getAttribute("method")||fc,c=of(n.getAttribute("enctype"))||pc,u=new FormData(n)}else if(l2(n)||u2(n)&&(n.type==="submit"||n.type==="image")){let m=n.form;if(m==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let h=n.getAttribute("formaction")||m.getAttribute("action");if(o=h?Is(h,s):null,i=n.getAttribute("formmethod")||m.getAttribute("method")||fc,c=of(n.getAttribute("formenctype"))||of(m.getAttribute("enctype"))||pc,u=new FormData(m,n),!m2()){let{name:g,type:v,value:b}=n;if(v==="image"){let _=g?`${g}.`:"";u.append(`${_}x`,"0"),u.append(`${_}y`,"0")}else g&&u.append(g,b)}}else{if(Ic(n))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');i=fc,o=null,c=pc,d=n}return u&&c==="text/plain"&&(d=u,u=void 0),{action:o,method:i.toLowerCase(),encType:c,formData:u,body:d}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function bp(n,s){if(n===!1||n===null||typeof n>"u")throw new Error(s)}function v2(n,s,i,o){let c=typeof n=="string"?new URL(n,typeof window>"u"?"server://singlefetch/":window.location.origin):n;return i?c.pathname.endsWith("/")?c.pathname=`${c.pathname}_.${o}`:c.pathname=`${c.pathname}.${o}`:c.pathname==="/"?c.pathname=`_root.${o}`:s&&Is(c.pathname,s)==="/"?c.pathname=`${s.replace(/\/$/,"")}/_root.${o}`:c.pathname=`${c.pathname.replace(/\/$/,"")}.${o}`,c}async function y2(n,s){if(n.id in s)return s[n.id];try{let i=await import(n.module);return s[n.id]=i,i}catch(i){return console.error(`Error loading route module \`${n.module}\`, reloading page...`),console.error(i),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function b2(n){return n==null?!1:n.href==null?n.rel==="preload"&&typeof n.imageSrcSet=="string"&&typeof n.imageSizes=="string":typeof n.rel=="string"&&typeof n.href=="string"}async function _2(n,s,i){let o=await Promise.all(n.map(async c=>{let u=s.routes[c.route.id];if(u){let d=await y2(u,i);return d.links?d.links():[]}return[]}));return k2(o.flat(1).filter(b2).filter(c=>c.rel==="stylesheet"||c.rel==="preload").map(c=>c.rel==="stylesheet"?{...c,rel:"prefetch",as:"style"}:{...c,rel:"prefetch"}))}function b0(n,s,i,o,c,u){let d=(h,g)=>i[g]?h.route.id!==i[g].route.id:!0,m=(h,g)=>{var v;return i[g].pathname!==h.pathname||((v=i[g].route.path)==null?void 0:v.endsWith("*"))&&i[g].params["*"]!==h.params["*"]};return u==="assets"?s.filter((h,g)=>d(h,g)||m(h,g)):u==="data"?s.filter((h,g)=>{var b;let v=o.routes[h.route.id];if(!v||!v.hasLoader)return!1;if(d(h,g)||m(h,g))return!0;if(h.route.shouldRevalidate){let _=h.route.shouldRevalidate({currentUrl:new URL(c.pathname+c.search+c.hash,window.origin),currentParams:((b=i[0])==null?void 0:b.params)||{},nextUrl:new URL(n,window.origin),nextParams:h.params,defaultShouldRevalidate:!0});if(typeof _=="boolean")return _}return!0}):[]}function x2(n,s,{includeHydrateFallback:i}={}){return S2(n.map(o=>{let c=s.routes[o.route.id];if(!c)return[];let u=[c.module];return c.clientActionModule&&(u=u.concat(c.clientActionModule)),c.clientLoaderModule&&(u=u.concat(c.clientLoaderModule)),i&&c.hydrateFallbackModule&&(u=u.concat(c.hydrateFallbackModule)),c.imports&&(u=u.concat(c.imports)),u}).flat(1))}function S2(n){return[...new Set(n)]}function T2(n){let s={},i=Object.keys(n).sort();for(let o of i)s[o]=n[o];return s}function k2(n,s){let i=new Set;return new Set(s),n.reduce((o,c)=>{let u=JSON.stringify(T2(c));return i.has(u)||(i.add(u),o.push({key:u,link:c})),o},[])}function wb(){let n=y.useContext(ro);return bp(n,"You must render this element inside a <DataRouterContext.Provider> element"),n}function w2(){let n=y.useContext(Mc);return bp(n,"You must render this element inside a <DataRouterStateContext.Provider> element"),n}var _p=y.createContext(void 0);_p.displayName="FrameworkContext";function Nb(){let n=y.useContext(_p);return bp(n,"You must render this element inside a <HydratedRouter> element"),n}function N2(n,s){let i=y.useContext(_p),[o,c]=y.useState(!1),[u,d]=y.useState(!1),{onFocus:m,onBlur:h,onMouseEnter:g,onMouseLeave:v,onTouchStart:b}=s,_=y.useRef(null);y.useEffect(()=>{if(n==="render"&&d(!0),n==="viewport"){let N=w=>{w.forEach(C=>{d(C.isIntersecting)})},j=new IntersectionObserver(N,{threshold:.5});return _.current&&j.observe(_.current),()=>{j.disconnect()}}},[n]),y.useEffect(()=>{if(o){let N=setTimeout(()=>{d(!0)},100);return()=>{clearTimeout(N)}}},[o]);let S=()=>{c(!0)},T=()=>{c(!1),d(!1)};return i?n!=="intent"?[u,_,{}]:[u,_,{onFocus:or(m,S),onBlur:or(h,T),onMouseEnter:or(g,S),onMouseLeave:or(v,T),onTouchStart:or(b,S)}]:[!1,_,{}]}function or(n,s){return i=>{n&&n(i),i.defaultPrevented||s(i)}}function j2({page:n,...s}){let{router:i}=wb(),o=y.useMemo(()=>db(i.routes,n,i.basename),[i.routes,n,i.basename]);return o?y.createElement(E2,{page:n,matches:o,...s}):null}function C2(n){let{manifest:s,routeModules:i}=Nb(),[o,c]=y.useState([]);return y.useEffect(()=>{let u=!1;return _2(n,s,i).then(d=>{u||c(d)}),()=>{u=!0}},[n,s,i]),o}function E2({page:n,matches:s,...i}){let o=Bt(),{future:c,manifest:u,routeModules:d}=Nb(),{basename:m}=wb(),{loaderData:h,matches:g}=w2(),v=y.useMemo(()=>b0(n,s,g,u,o,"data"),[n,s,g,u,o]),b=y.useMemo(()=>b0(n,s,g,u,o,"assets"),[n,s,g,u,o]),_=y.useMemo(()=>{if(n===o.pathname+o.search+o.hash)return[];let N=new Set,j=!1;if(s.forEach(C=>{var M;let A=u.routes[C.route.id];!A||!A.hasLoader||(!v.some(D=>D.route.id===C.route.id)&&C.route.id in h&&((M=d[C.route.id])!=null&&M.shouldRevalidate)||A.hasClientLoader?j=!0:N.add(C.route.id))}),N.size===0)return[];let w=v2(n,m,c.unstable_trailingSlashAwareDataRequests,"data");return j&&N.size>0&&w.searchParams.set("_routes",s.filter(C=>N.has(C.route.id)).map(C=>C.route.id).join(",")),[w.pathname+w.search]},[m,c.unstable_trailingSlashAwareDataRequests,h,o,u,v,s,n,d]),S=y.useMemo(()=>x2(b,u),[b,u]),T=C2(b);return y.createElement(y.Fragment,null,_.map(N=>y.createElement("link",{key:N,rel:"prefetch",as:"fetch",href:N,...i})),S.map(N=>y.createElement("link",{key:N,rel:"modulepreload",href:N,...i})),T.map(({key:N,link:j})=>y.createElement("link",{key:N,nonce:i.nonce,...j,crossOrigin:j.crossOrigin??i.crossOrigin})))}function A2(...n){return s=>{n.forEach(i=>{typeof i=="function"?i(s):i!=null&&(i.current=s)})}}var D2=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{D2&&(window.__reactRouterVersion="7.13.2")}catch{}function R2({basename:n,children:s,unstable_useTransitions:i,window:o}){let c=y.useRef();c.current==null&&(c.current=uk({window:o,v5Compat:!0}));let u=c.current,[d,m]=y.useState({action:u.action,location:u.location}),h=y.useCallback(g=>{i===!1?m(g):y.startTransition(()=>m(g))},[i]);return y.useLayoutEffect(()=>u.listen(h),[u,h]),y.createElement(o2,{basename:n,children:s,location:d.location,navigationType:d.action,navigator:u,unstable_useTransitions:i})}var jb=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,xp=y.forwardRef(function({onClick:s,discover:i="render",prefetch:o="none",relative:c,reloadDocument:u,replace:d,unstable_mask:m,state:h,target:g,to:v,preventScrollReset:b,viewTransition:_,unstable_defaultShouldRevalidate:S,...T},N){let{basename:j,navigator:w,unstable_useTransitions:C}=y.useContext(xn),A=typeof v=="string"&&jb.test(v),M=gb(v,j);v=M.to;let D=Gk(v,{relative:c}),E=Bt(),H=null;if(m){let X=Rc(m,[],E.unstable_mask?E.unstable_mask.pathname:"/",!0);j!=="/"&&(X.pathname=X.pathname==="/"?j:as([j,X.pathname])),H=w.createHref(X)}let[z,Z,F]=N2(o,T),Q=B2(v,{replace:d,unstable_mask:m,state:h,target:g,preventScrollReset:b,relative:c,viewTransition:_,unstable_defaultShouldRevalidate:S,unstable_useTransitions:C});function ae(X){s&&s(X),X.defaultPrevented||Q(X)}let pe=!(M.isExternal||u),oe=y.createElement("a",{...T,...F,href:(pe?H:void 0)||M.absoluteURL||D,onClick:pe?ae:s,ref:A2(N,Z),target:g,"data-discover":!A&&i==="render"?"true":void 0});return z&&!A?y.createElement(y.Fragment,null,oe,y.createElement(j2,{page:D})):oe});xp.displayName="Link";var M2=y.forwardRef(function({"aria-current":s="page",caseSensitive:i=!1,className:o="",end:c=!1,style:u,to:d,viewTransition:m,children:h,...g},v){let b=Dr(d,{relative:g.relative}),_=Bt(),S=y.useContext(Mc),{navigator:T,basename:N}=y.useContext(xn),j=S!=null&&V2(b)&&m===!0,w=T.encodeLocation?T.encodeLocation(b).pathname:b.pathname,C=_.pathname,A=S&&S.navigation&&S.navigation.location?S.navigation.location.pathname:null;i||(C=C.toLowerCase(),A=A?A.toLowerCase():null,w=w.toLowerCase()),A&&N&&(A=Is(A,N)||A);const M=w!=="/"&&w.endsWith("/")?w.length-1:w.length;let D=C===w||!c&&C.startsWith(w)&&C.charAt(M)==="/",E=A!=null&&(A===w||!c&&A.startsWith(w)&&A.charAt(w.length)==="/"),H={isActive:D,isPending:E,isTransitioning:j},z=D?s:void 0,Z;typeof o=="function"?Z=o(H):Z=[o,D?"active":null,E?"pending":null,j?"transitioning":null].filter(Boolean).join(" ");let F=typeof u=="function"?u(H):u;return y.createElement(xp,{...g,"aria-current":z,className:Z,ref:v,style:F,to:d,viewTransition:m},typeof h=="function"?h(H):h)});M2.displayName="NavLink";var O2=y.forwardRef(({discover:n="render",fetcherKey:s,navigate:i,reloadDocument:o,replace:c,state:u,method:d=fc,action:m,onSubmit:h,relative:g,preventScrollReset:v,viewTransition:b,unstable_defaultShouldRevalidate:_,...S},T)=>{let{unstable_useTransitions:N}=y.useContext(xn),j=z2(),w=P2(m,{relative:g}),C=d.toLowerCase()==="get"?"get":"post",A=typeof m=="string"&&jb.test(m),M=D=>{if(h&&h(D),D.defaultPrevented)return;D.preventDefault();let E=D.nativeEvent.submitter,H=(E==null?void 0:E.getAttribute("formmethod"))||d,z=()=>j(E||D.currentTarget,{fetcherKey:s,method:H,navigate:i,replace:c,state:u,relative:g,preventScrollReset:v,viewTransition:b,unstable_defaultShouldRevalidate:_});N&&i!==!1?y.startTransition(()=>z()):z()};return y.createElement("form",{ref:T,method:C,action:w,onSubmit:o?h:M,...S,"data-discover":!A&&n==="render"?"true":void 0})});O2.displayName="Form";function I2(n){return`${n} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Cb(n){let s=y.useContext(ro);return dt(s,I2(n)),s}function B2(n,{target:s,replace:i,unstable_mask:o,state:c,preventScrollReset:u,relative:d,viewTransition:m,unstable_defaultShouldRevalidate:h,unstable_useTransitions:g}={}){let v=Oc(),b=Bt(),_=Dr(n,{relative:d});return y.useCallback(S=>{if(f2(S,s)){S.preventDefault();let T=i!==void 0?i:Tr(b)===Tr(_),N=()=>v(n,{replace:T,unstable_mask:o,state:c,preventScrollReset:u,relative:d,viewTransition:m,unstable_defaultShouldRevalidate:h});g?y.startTransition(()=>N()):N()}},[b,v,_,i,o,c,s,n,u,d,m,h,g])}function Sp(n){Ln(typeof URLSearchParams<"u","You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let s=y.useRef(Hf(n)),i=y.useRef(!1),o=Bt(),c=y.useMemo(()=>p2(o.search,i.current?null:s.current),[o.search]),u=Oc(),d=y.useCallback((m,h)=>{const g=Hf(typeof m=="function"?m(new URLSearchParams(c)):m);i.current=!0,u("?"+g,h)},[u,c]);return[c,d]}var L2=0,U2=()=>`__${String(++L2)}__`;function z2(){let{router:n}=Cb("useSubmit"),{basename:s}=y.useContext(xn),i=n2(),o=n.fetch,c=n.navigate;return y.useCallback(async(u,d={})=>{let{action:m,method:h,encType:g,formData:v,body:b}=g2(u,s);if(d.navigate===!1){let _=d.fetcherKey||U2();await o(_,i,d.action||m,{unstable_defaultShouldRevalidate:d.unstable_defaultShouldRevalidate,preventScrollReset:d.preventScrollReset,formData:v,body:b,formMethod:d.method||h,formEncType:d.encType||g,flushSync:d.flushSync})}else await c(d.action||m,{unstable_defaultShouldRevalidate:d.unstable_defaultShouldRevalidate,preventScrollReset:d.preventScrollReset,formData:v,body:b,formMethod:d.method||h,formEncType:d.encType||g,replace:d.replace,state:d.state,fromRouteId:i,flushSync:d.flushSync,viewTransition:d.viewTransition})},[o,c,s,i])}function P2(n,{relative:s}={}){let{basename:i}=y.useContext(xn),o=y.useContext(Un);dt(o,"useFormAction must be used inside a RouteContext");let[c]=o.matches.slice(-1),u={...Dr(n||".",{relative:s})},d=Bt();if(n==null){u.search=d.search;let m=new URLSearchParams(u.search),h=m.getAll("index");if(h.some(v=>v==="")){m.delete("index"),h.filter(b=>b).forEach(b=>m.append("index",b));let v=m.toString();u.search=v?`?${v}`:""}}return(!n||n===".")&&c.route.index&&(u.search=u.search?u.search.replace(/^\?/,"?index&"):"?index"),i!=="/"&&(u.pathname=u.pathname==="/"?i:as([i,u.pathname])),Tr(u)}function V2(n,{relative:s}={}){let i=y.useContext(yb);dt(i!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:o}=Cb("useViewTransitionState"),c=Dr(n,{relative:s});if(!i.isTransitioning)return!1;let u=Is(i.currentLocation.pathname,o)||i.currentLocation.pathname,d=Is(i.nextLocation.pathname,o)||i.nextLocation.pathname;return kr(c.pathname,d)!=null||kr(c.pathname,u)!=null}function xt(){const n=Oc();return y.useCallback((s,i)=>{typeof s=="number"?n(s):n(s,i)},[n])}function Eb(n){return`/sessions/${encodeURIComponent(n)}`}function Qi(n,s){return s?`/environments/${encodeURIComponent(s)}/workspaces/${encodeURIComponent(n)}`:`/workspaces/${encodeURIComponent(n)}`}function rs(n,s,i,o){const c=encodeURIComponent(n);let u;return i&&o?u=`/environments/${encodeURIComponent(o)}/workspaces/${encodeURIComponent(i)}/tasks/${c}`:i?u=`/workspaces/${encodeURIComponent(i)}/tasks/${c}`:u=`/tasks/${c}`,s?`${u}/${s}`:u}function ni(n,s,i){const o=new URLSearchParams;n&&o.set("workspace",n),s&&o.set("parent",s);const c=o.toString();if(n&&i){const u=`/environments/${encodeURIComponent(i)}/workspaces/${encodeURIComponent(n)}/tasks/new`;return s?`${u}?parent=${encodeURIComponent(s)}`:u}return c?`/tasks/new?${c}`:"/tasks/new"}function Ab(n){return`/sessions/new?${new URLSearchParams({env:n}).toString()}`}const eo="/environments",H2="/environments/new";function to(n){return`/environments/${encodeURIComponent(n)}`}function G2(n){return`/environments/${encodeURIComponent(n)}/edit`}const Xi="/settings",$2="/settings/credentials",rf="/settings/personas",q2="/settings/personas/new";function Db(n){return`/settings/personas/${encodeURIComponent(n)}`}const F2="/settings/shortcuts",Z2="/pair",K2="/chat",Wa="/",Y2="/tasks",Rb="/workspaces/new",Mb="/knowledge",J2=KT,W2={task:ck};function X2({workspaceId:n,environmentId:s,tasks:i,resolvedThemeId:o}){const c=xt(),u=y.useMemo(()=>i.filter(b=>b.workspaceId===n),[i,n]),{nodes:d,edges:m}=GT(u),h=y.useMemo(()=>{const b=getComputedStyle(document.documentElement),_={};for(const[S,T]of Object.entries(J2))_[S]=b.getPropertyValue(T).trim()||"#6b7a8d";return _},[o]),g=y.useCallback((b,_)=>{c(rs(_.id,void 0,n,s))},[c,n,s]),v=y.useCallback(b=>{const _=b.data;return h[_.task.status]||h.pending},[h]);return u.length===0?l.jsxs("div",{className:tn.emptyCta,children:[l.jsx("button",{className:tn.ctaButton,onClick:()=>c(ni(n,void 0,s)),children:"Create Task"}),l.jsx("div",{className:tn.ctaDescription,children:"Create tasks to see the dependency graph"})]}):l.jsx("div",{className:tn.dagContainer,children:l.jsxs(QS,{nodes:d,edges:m,nodeTypes:W2,onNodeClick:g,fitView:!0,fitViewOptions:{padding:.2},minZoom:.3,maxZoom:2,children:[l.jsx(eT,{variant:tT.Dots,gap:24,size:1,color:"var(--text-disabled)"}),l.jsx(nT,{showInteractive:!1}),l.jsx(sT,{nodeColor:v,maskColor:"var(--bg-overlay)",style:{background:"var(--bg-inset)"}})]})})}const Q2="_breadcrumbs_17or2_1",ew="_list_17or2_11",tw="_item_17or2_21",nw="_separator_17or2_28",sw="_link_17or2_34",aw="_current_17or2_57",Gi={breadcrumbs:Q2,list:ew,item:tw,separator:nw,link:sw,current:aw},iw="›";function xa({segments:n}){return l.jsx("nav",{className:Gi.breadcrumbs,"aria-label":"Breadcrumb","data-testid":"breadcrumbs",children:l.jsx("ol",{className:Gi.list,children:n.map((s,i)=>{const o=i===n.length-1;return l.jsxs("li",{className:Gi.item,children:[i>0&&l.jsx("span",{className:Gi.separator,"aria-hidden":"true",children:iw}),s.url&&!o?l.jsx(xp,{className:Gi.link,to:s.url,title:s.label,children:s.label}):l.jsx("span",{className:Gi.current,"aria-current":"page",title:s.label,children:s.label})]},i)})})})}const ow="_btn_dwk2o_1",rw="_sm_dwk2o_22",lw="_md_dwk2o_28",cw="_lg_dwk2o_34",uw="_primary_dwk2o_40",dw="_danger_dwk2o_55",fw="_outline_dwk2o_70",pw="_ghost_dwk2o_80",lf={btn:ow,sm:rw,md:lw,lg:cw,primary:uw,danger:dw,outline:fw,ghost:pw},Ds=y.forwardRef(function({variant:s="primary",size:i="md",className:o,children:c,...u},d){const m=[lf.btn,lf[s],lf[i],o].filter(Boolean).join(" ");return l.jsx("button",{ref:d,className:m,...u,children:c})}),mw="_copyButton_1bqk0_1",hw={copyButton:mw},gw=2e3;function si({text:n,className:s,"data-testid":i}){const[o,c]=y.useState(!1),u=y.useRef(void 0);y.useEffect(()=>()=>{u.current!==void 0&&clearTimeout(u.current)},[]);const d=y.useCallback(async()=>{try{await navigator.clipboard.writeText(n),c(!0),u.current!==void 0&&clearTimeout(u.current),u.current=setTimeout(()=>{c(!1),u.current=void 0},gw)}catch{}},[n]);return l.jsx("button",{type:"button",className:`${hw.copyButton} ${s??""}`,onClick:()=>{d().catch(()=>{})},"aria-label":o?"Copied":"Copy to clipboard","data-testid":i??"copy-button",children:o?"✓":"📋"})}const vw="_banner_bxqlh_1",yw="_label_bxqlh_15",bw="_text_bxqlh_25",_w="_link_bxqlh_29",tc={banner:vw,label:yw,text:bw,link:_w};function xw(){return l.jsxs("div",{className:tc.banner,"data-testid":"demo-banner",children:[l.jsx("span",{className:tc.label,children:"DEMO"}),l.jsxs("span",{className:tc.text,children:["This is an interactive demo with mock data."," ",l.jsx("a",{href:"https://github.com/nick-pape/grackle",target:"_blank",rel:"noopener noreferrer",className:tc.link,children:"Install Grackle"})," ","to use it for real."]})]})}const Sw="_container_og0yp_1",Tw="_chevronButton_og0yp_6",kw="_mainButton_og0yp_6",ww="_sm_og0yp_34",Nw="_md_og0yp_34",jw="_lg_og0yp_34",Cw="_primary_og0yp_57",Ew="_danger_og0yp_70",Aw="_outline_og0yp_83",Dw="_ghost_og0yp_92",Rw="_dropdown_og0yp_100",Mw="_option_og0yp_113",Ow="_optionLabel_og0yp_130",Iw="_optionDesc_og0yp_135",Cs={container:Sw,chevronButton:Tw,mainButton:kw,sm:ww,md:Nw,lg:jw,primary:Cw,danger:Ew,outline:Aw,ghost:Dw,dropdown:Rw,option:Mw,optionLabel:Ow,optionDesc:Iw};function Ob({label:n,onClick:s,options:i,variant:o="primary",size:c="md","data-testid":u}){const[d,m]=y.useState(!1),h=y.useRef(null);y.useEffect(()=>{if(!d)return;function _(S){h.current&&S.target instanceof Node&&!h.current.contains(S.target)&&m(!1)}return document.addEventListener("mousedown",_),()=>document.removeEventListener("mousedown",_)},[d]),y.useEffect(()=>{if(!d)return;function _(S){S.key==="Escape"&&m(!1)}return document.addEventListener("keydown",_),()=>document.removeEventListener("keydown",_)},[d]);const g=Cs[o]||"",v=Cs[c]||"",b=()=>{d&&m(!1),s()};return l.jsxs("div",{ref:h,className:Cs.container,"data-testid":u,children:[l.jsx("button",{type:"button",className:`${Cs.mainButton} ${g} ${v}`,onClick:b,"data-testid":u?`${u}-main`:void 0,children:n}),l.jsx("button",{type:"button",className:`${Cs.chevronButton} ${g} ${v}`,onClick:()=>m(_=>!_),"aria-label":`More options for ${n}`,"aria-haspopup":"menu","aria-expanded":d,"data-testid":u?`${u}-chevron`:void 0,children:"▾"}),d&&l.jsx("div",{className:Cs.dropdown,"data-testid":u?`${u}-menu`:void 0,children:i.map((_,S)=>l.jsxs("button",{type:"button",className:Cs.option,onClick:()=>{_.onClick(),m(!1)},children:[l.jsx("span",{className:Cs.optionLabel,children:_.label}),_.description&&l.jsx("span",{className:Cs.optionDesc,children:_.description})]},S))})]})}function Gf(){Gf=function(c,u){return new i(c,void 0,u)};var n=RegExp.prototype,s=new WeakMap;function i(c,u,d){var m=new RegExp(c,u);return s.set(m,d||s.get(c)),_c(m,i.prototype)}function o(c,u){var d=s.get(u);return Object.keys(d).reduce(function(m,h){var g=d[h];if(typeof g=="number")m[h]=c[g];else{for(var v=0;c[g[v]]===void 0&&v+1<g.length;)v++;m[h]=c[g[v]]}return m},Object.create(null))}return(function(c,u){if(typeof u!="function"&&u!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(u&&u.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),Object.defineProperty(c,"prototype",{writable:!1}),u&&_c(c,u)})(i,RegExp),i.prototype.exec=function(c){var u=n.exec.call(this,c);if(u){u.groups=o(u,this);var d=u.indices;d&&(d.groups=o(d,this))}return u},i.prototype[Symbol.replace]=function(c,u){if(typeof u=="string"){var d=s.get(this);return n[Symbol.replace].call(this,c,u.replace(/\$<([^>]+)>/g,function(h,g){var v=d[g];return"$"+(Array.isArray(v)?v.join("$"):v)}))}if(typeof u=="function"){var m=this;return n[Symbol.replace].call(this,c,function(){var h=arguments;return typeof h[h.length-1]!="object"&&(h=[].slice.call(h)).push(o(h,m)),u.apply(this,h)})}return n[Symbol.replace].call(this,c,u)},Gf.apply(this,arguments)}function _c(n,s){return _c=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(i,o){return i.__proto__=o,i},_c(n,s)}function _0(n,s){(s==null||s>n.length)&&(s=n.length);for(var i=0,o=new Array(s);i<s;i++)o[i]=n[i];return o}function cf(n,s){var i=typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(i)return(i=i.call(n)).next.bind(i);if(Array.isArray(n)||(i=(function(c,u){if(c){if(typeof c=="string")return _0(c,u);var d=Object.prototype.toString.call(c).slice(8,-1);return d==="Object"&&c.constructor&&(d=c.constructor.name),d==="Map"||d==="Set"?Array.from(c):d==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(d)?_0(c,u):void 0}})(n))||s){i&&(n=i);var o=0;return function(){return o>=n.length?{done:!0}:{done:!1,value:n[o++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
38
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var Bw=(function(n){return function(s){return s===void 0&&(s={}),(function(o,c){if(c&&!o.registered(c))throw new Error('The default language "'+c+'" is not registered with refractor.')})(n,s.defaultLanguage),function(o){gT(o,"element",i)};function i(o,c,u){var d,m;if(u&&u.tagName==="pre"&&o.tagName==="code"){var h=(o==null||(d=o.data)==null?void 0:d.meta)||(o==null||(m=o.properties)==null?void 0:m.metastring)||"";o.properties.className?typeof o.properties.className=="boolean"?o.properties.className=[]:Array.isArray(o.properties.className)||(o.properties.className=[o.properties.className]):o.properties.className=[];var g,v,b=(function(D){for(var E,H=cf(D.properties.className);!(E=H()).done;){var z=E.value;if(z.slice(0,9)==="language-")return z.slice(9).toLowerCase()}return null})(o);if(!b&&s.defaultLanguage&&o.properties.className.push("language-"+(b=s.defaultLanguage)),o.properties.className.push("code-highlight"),b)try{var _,S;S=(_=b)!=null&&_.includes("diff-")?b.split("-")[1]:b,g=n.highlight(Ql(o),S),u.properties.className=(u.properties.className||[]).concat("language-"+S)}catch(D){if(!s.ignoreMissing||!/Unknown language/.test(D.message))throw D;g=o}else g=o;g.children=(v=1,function D(E){return E.reduce(function(H,z){if(z.type==="text"){var Z=z.value,F=(Z.match(/\n/g)||"").length;if(F===0)z.position={start:{line:v,column:1},end:{line:v,column:1}},H.push(z);else for(var Q,ae=Z.split(`
39
- `),pe=cf(ae.entries());!(Q=pe()).done;){var oe=Q.value,X=oe[0],B=oe[1];H.push({type:"text",value:X===ae.length-1?B:B+`
40
- `,position:{start:{line:v+X,column:1},end:{line:v+X,column:1}}})}return v+=F,H}if(Object.prototype.hasOwnProperty.call(z,"children")){var q=v;return z.children=D(z.children),H.push(z),z.position={start:{line:q,column:1},end:{line:v,column:1}},H}return H.push(z),H},[])})(g.children),g.position=g.children.length>0?{start:{line:g.children[0].position.start.line,column:0},end:{line:g.children[g.children.length-1].position.end.line,column:0}}:{start:{line:0,column:0},end:{line:0,column:0}};for(var T,N=(function(D){var E=/{([\d,-]+)}/,H=D.split(",").map(function(F){return F.trim()}).join();if(E.test(H)){var z=E.exec(H)[1],Z=yT(z);return function(F){return Z.includes(F+1)}}return function(){return!1}})(h),j=(function(D){var E=Gf(/showLineNumbers=(\d+)/i,{lines:1});if(E.test(D)){var H=E.exec(D);return Number(H.groups.lines)}return 1})(h),w=(function(D){for(var E=new Array(D),H=0;H<D;H++)E[H]={type:"element",tagName:"span",properties:{className:[]},children:[]};return E})(g.position.end.line),C=["showlinenumbers=false",'showlinenumbers="false"',"showlinenumbers={false}"],A=function(){var D,E,H=T.value,z=H[0],Z=H[1];Z.properties.className=["code-line"];var F=bT(g,function(Q){return Q.position.start.line<=z+1&&Q.position.end.line>=z+1});Z.children=F.children,(h.toLowerCase().includes("showLineNumbers".toLowerCase())||s.showLineNumbers===!0||typeof s.showLineNumbers=="object"&&s.showLineNumbers.includes(b))&&!C.some(function(Q){return h.toLowerCase().includes(Q)})&&(Z.properties.line=[(z+j).toString()],Z.properties.className.push("line-number")),N(z)&&Z.properties.className.push("highlight-line"),(b==="diff"||(D=b)!=null&&D.includes("diff-"))&&Ql(Z).substring(0,1)==="-"?Z.properties.className.push("deleted"):(b==="diff"||(E=b)!=null&&E.includes("diff-"))&&Ql(Z).substring(0,1)==="+"&&Z.properties.className.push("inserted")},M=cf(w.entries());!(T=M()).done;)A();w.length>0&&Ql(w[w.length-1]).trim()===""&&w.pop(),o.children=w}}}})(vT);function Ib(n){if(n>=1e6)return`${(n/1e6).toFixed(1)}M`;if(n>=1e3){const s=Number((n/1e3).toFixed(1));return s>=1e3?`${(n/1e6).toFixed(1)}M`:`${s.toFixed(1)}k`}return String(n)}function no(n){return n===0?"-":n<.01?`$${n.toFixed(4)}`:`$${n.toFixed(2)}`}const Lw={read:"file-read",view:"file-read",edit:"file-edit",file_change:"file-edit",write:"file-write",bash:"shell",command_execution:"shell",grep:"search",glob:"search",todowrite:"todo",update_plan:"todo",todo_write:"todo",report_intent:"metadata"};function Uw(n){return Lw[n.toLowerCase()]??"generic"}const zw="_card_17a7m_2",Pw="_cardBlue_17a7m_20",Vw="_cardOrange_17a7m_24",Hw="_cardGreen_17a7m_28",Gw="_cardPurple_17a7m_32",$w="_cardNeutral_17a7m_36",qw="_cardRed_17a7m_40",Fw="_header_17a7m_44",Zw="_icon_17a7m_51",Kw="_toolName_17a7m_58",Yw="_fileName_17a7m_65",Jw="_badge_17a7m_74",Ww="_spacer_17a7m_81",Xw="_bodyToggle_17a7m_85",Qw="_chevron_17a7m_103",eN="_chevronExpanded_17a7m_108",tN="_pre_17a7m_112",nN="_diffAdd_17a7m_136",sN="_diffRemove_17a7m_148",aN="_diffContext_17a7m_160",iN="_diffHeader_17a7m_169",oN="_diffLine_17a7m_175",rN="_exitOk_17a7m_181",lN="_exitError_17a7m_187",cN="_exitPending_17a7m_193",uN="_copyButtonInline_17a7m_207",dN="_inProgress_17a7m_221",fN="_metadata_17a7m_225",pN="_metadataPrefix_17a7m_232",se={card:zw,cardBlue:Pw,cardOrange:Vw,cardGreen:Hw,cardPurple:Gw,cardNeutral:$w,cardRed:qw,header:Fw,icon:Zw,toolName:Kw,fileName:Yw,badge:Jw,spacer:Ww,bodyToggle:Xw,chevron:Qw,chevronExpanded:eN,pre:tN,diffAdd:nN,diffRemove:sN,diffContext:aN,diffHeader:iN,diffLine:oN,exitOk:rN,exitError:lN,exitPending:cN,copyButtonInline:uN,inProgress:dN,metadata:fN,metadataPrefix:pN};function mN(n){if(n==null||typeof n!="object")return"";const s=n;return typeof s.file_path=="string"?s.file_path:typeof s.path=="string"?s.path:""}function hN(n){const s=n.split(/[/\\]/);return s[s.length-1]||n}const uf=5;function x0({tool:n,args:s,result:i,isError:o,writeVariant:c}){const[u,d]=y.useState(!1),m=mN(s),h=hN(m),g=i===void 0,v=o?se.cardRed:c?se.cardGreen:se.cardBlue,b=c?"var(--accent-green)":"var(--accent-blue)",_=c?"📝":"📄",S=c?"tool-card-file-write":"tool-card-file-read",T=(i==null?void 0:i.split(`
41
- `))??[],N=T.length>uf,j=u?T:T.slice(0,uf);return l.jsxs("div",{className:`${se.card} ${v} ${g?se.inProgress:""}`,"data-testid":S,children:[l.jsxs("div",{className:se.header,children:[l.jsx("span",{className:se.icon,children:_}),l.jsx("span",{className:se.toolName,style:{color:b},children:n}),h&&l.jsx("span",{className:se.fileName,title:m,children:h}),!g&&T.length>0&&l.jsxs(l.Fragment,{children:[l.jsx("span",{className:se.spacer}),l.jsxs("span",{className:se.badge,children:[T.length," lines"]})]}),!g&&!o&&i&&l.jsx(si,{text:i,"data-testid":"tool-card-copy",className:se.copyButtonInline})]}),o&&i&&l.jsx("pre",{className:se.pre,"data-testid":"tool-card-error",children:i}),!o&&!g&&T.length>0&&l.jsxs(l.Fragment,{children:[l.jsx("pre",{className:se.pre,"data-testid":"tool-card-content",children:j.map((w,C)=>l.jsxs("span",{className:se.diffLine,children:[l.jsx("span",{style:{color:"var(--text-tertiary)",userSelect:"none",marginRight:"var(--space-sm)",display:"inline-block",width:"3ch",textAlign:"right"},children:C+1}),w]},C))}),N&&l.jsxs("button",{type:"button",className:se.bodyToggle,onClick:()=>{d(w=>!w)},"aria-expanded":u,"data-testid":"tool-card-toggle",children:[l.jsx("span",{className:`${se.chevron} ${u?se.chevronExpanded:""}`,children:"▸"}),u?"collapse":`${T.length-uf} more lines`]})]})]})}function gN(n){const s=n.split(`
42
- `),i=[];for(const o of s)o.startsWith("diff --git")||o.startsWith("index ")||(o.startsWith("--- ")||o.startsWith("+++ "))&&!o.startsWith("---- ")&&!o.startsWith("++++ ")||(o.startsWith("@@")?i.push({type:"header",content:o}):o.startsWith("+")?i.push({type:"add",content:o.slice(1)}):o.startsWith("-")?i.push({type:"remove",content:o.slice(1)}):o.startsWith(" ")?i.push({type:"context",content:o.slice(1)}):o===""&&i.push({type:"context",content:""}));return i}function vN(n,s){const i=n.split(`
43
- `),o=s.split(`
44
- `),c=[];for(const u of i)c.push({type:"remove",content:u});for(const u of o)c.push({type:"add",content:u});return c}function yN(n){let s=0,i=0;for(const o of n)o.type==="add"&&s++,o.type==="remove"&&i++;return{added:s,removed:i}}function bN(n){if(n==null||typeof n!="object")return"";const s=n;return typeof s.file_path=="string"&&s.file_path||typeof s.path=="string"&&s.path||""}function _N(n){if(n===void 0||typeof n!="object"||n===null)return;const s=n,i=(typeof s.old_string=="string"?s.old_string:void 0)??(typeof s.old_str=="string"?s.old_str:void 0),o=(typeof s.new_string=="string"?s.new_string:void 0)??(typeof s.new_str=="string"?s.new_str:void 0);if(i!==void 0&&o!==void 0)return{oldStr:i,newStr:o}}function xN(n){const s=n.split(/[/\\]/);return s[s.length-1]||n}function SN(n,s){if(s){let o=s;if(s.trimStart().startsWith("{"))try{const c=JSON.parse(s);typeof c.detailedContent=="string"&&(o=c.detailedContent)}catch{}if(o.includes("@@")||o.startsWith("diff ")){const c=gN(o);if(c.length>0)return c}}const i=_N(n);if(i)return vN(i.oldStr,i.newStr)}const df=5;function TN({tool:n,args:s,result:i,isError:o,detailedResult:c}){const[u,d]=y.useState(!1),m=bN(s),h=xN(m),g=i===void 0,v=SN(s,c),b=v?yN(v):null,_=((v==null?void 0:v.length)??0)>df,S=u?v:v==null?void 0:v.slice(0,df);return l.jsxs("div",{className:`${se.card} ${o?se.cardRed:se.cardOrange} ${g?se.inProgress:""}`,"data-testid":"tool-card-file-edit",children:[l.jsxs("div",{className:se.header,children:[l.jsx("span",{className:se.icon,children:"✏️"}),l.jsx("span",{className:se.toolName,style:{color:"var(--accent-yellow)"},children:n}),h&&l.jsx("span",{className:se.fileName,title:m,children:h}),b&&l.jsxs(l.Fragment,{children:[l.jsx("span",{className:se.spacer}),l.jsxs("span",{className:se.badge,"data-testid":"tool-card-diff-stats",children:[l.jsxs("span",{style:{color:"var(--accent-green)"},children:["+",b.added]})," ",l.jsxs("span",{style:{color:"var(--accent-red)"},children:["−",b.removed]})]})]}),!g&&!o&&(v||i)&&l.jsx(si,{text:v?v.map(T=>`${T.type==="add"?"+":T.type==="remove"?"-":T.type==="header"?"":" "}${T.content}`).join(`
45
- `):i,"data-testid":"tool-card-copy",className:se.copyButtonInline})]}),o&&i&&l.jsx("pre",{className:se.pre,"data-testid":"tool-card-error",children:i}),!o&&S&&S.length>0&&l.jsxs(l.Fragment,{children:[l.jsx("pre",{className:se.pre,"data-testid":"tool-card-diff",children:S.map((T,N)=>{let j=se.diffContext;return T.type==="add"&&(j=se.diffAdd),T.type==="remove"&&(j=se.diffRemove),T.type==="header"&&(j=se.diffHeader),l.jsx("span",{className:`${se.diffLine} ${j}`,children:T.content},N)})}),_&&l.jsxs("button",{type:"button",className:se.bodyToggle,onClick:()=>{d(T=>!T)},"aria-expanded":u,"data-testid":"tool-card-toggle",children:[l.jsx("span",{className:`${se.chevron} ${u?se.chevronExpanded:""}`,children:"▸"}),u?"collapse":`${((v==null?void 0:v.length)??0)-df} more lines`]})]}),!o&&!v&&!g&&i&&l.jsx("pre",{className:se.pre,"data-testid":"tool-card-content",children:i})]})}const kN=/^\[exit (\d+)\]\s*/;function wN(n){const s=kN.exec(n);return s?{exitCode:Number(s[1]),output:n.slice(s[0].length)}:{exitCode:void 0,output:n}}function NN(n){if(n==null||typeof n!="object")return"";const s=n;return typeof s.command=="string"?s.command:""}function jN(n){const s=/pwsh(?:\.exe)?["']?\s+-Command\s+'(.+?)'\s*$/i.exec(n);if(s)return s[1];const i=/pwsh(?:\.exe)?["']?\s+-Command\s+"(.+?)"\s*$/i.exec(n);return i?i[1]:n}const ff=3;function CN({tool:n,args:s,result:i,isError:o}){const[c,u]=y.useState(!1),d=NN(s),m=jN(d),h=i===void 0,g=i?wN(i):null,v=(g==null?void 0:g.output.split(`
46
- `))??[],b=v.length>ff,_=c?v:v.slice(0,ff),S=g==null?void 0:g.exitCode,T=o||S!==void 0&&S!==0;return l.jsxs("div",{className:`${se.card} ${T?se.cardRed:se.cardNeutral}`,"data-testid":"tool-card-shell",children:[l.jsxs("div",{className:se.header,children:[l.jsx("span",{className:se.icon,style:{color:"var(--text-secondary)",fontFamily:"var(--font-mono)",fontWeight:"bold"},children:"$"}),l.jsx("span",{className:se.fileName,style:{flex:1,color:"var(--text-primary)"},title:d!==m?d:void 0,"data-testid":"tool-card-command",children:m}),S!==void 0&&l.jsxs("span",{className:S===0?se.exitOk:se.exitError,"data-testid":"tool-card-exit-code",children:[S===0?"✓":"✗"," exit ",S]}),!h&&g&&g.output.length>0&&l.jsx(si,{text:g.output,"data-testid":"tool-card-copy",className:se.copyButtonInline}),h&&l.jsx("span",{className:se.exitPending,"data-testid":"tool-card-pending",children:"●"})]}),!h&&g&&g.output.length>0&&l.jsxs(l.Fragment,{children:[l.jsx("pre",{className:se.pre,"data-testid":"tool-card-output",children:_.join(`
47
- `)}),b&&l.jsxs("button",{type:"button",className:se.bodyToggle,onClick:()=>{u(N=>!N)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[l.jsx("span",{className:`${se.chevron} ${c?se.chevronExpanded:""}`,children:"▸"}),c?"collapse":`${v.length-ff} more lines`]})]})]})}function EN(n){if(n==null||typeof n!="object")return{pattern:"",path:""};const s=n,i=typeof s.pattern=="string"?s.pattern:"",o=typeof s.path=="string"?s.path:"";return{pattern:i,path:o}}const pf=5;function AN({tool:n,args:s,result:i,isError:o}){const[c,u]=y.useState(!1),{pattern:d,path:m}=EN(s),h=i===void 0,g=(i==null?void 0:i.split(`
48
- `).filter(_=>_.length>0))??[],v=g.length>pf,b=c?g:g.slice(0,pf);return l.jsxs("div",{className:`${se.card} ${o?se.cardRed:se.cardPurple} ${h?se.inProgress:""}`,"data-testid":"tool-card-search",children:[l.jsxs("div",{className:se.header,children:[l.jsx("span",{className:se.icon,children:"🔍"}),l.jsx("span",{className:se.toolName,style:{color:"var(--accent-purple, #a78bfa)"},children:n}),d&&l.jsxs("span",{className:se.fileName,"data-testid":"tool-card-pattern",children:['"',d,'"']}),m&&l.jsxs("span",{className:se.fileName,style:{flexShrink:1},"data-testid":"tool-card-search-path",children:["in ",m]}),!h&&!o&&g.length>0&&l.jsxs(l.Fragment,{children:[l.jsx("span",{className:se.spacer}),l.jsxs("span",{className:se.badge,"data-testid":"tool-card-match-count",children:[g.length," ",g.length===1?"match":"matches"]})]}),!h&&!o&&i&&l.jsx(si,{text:i,"data-testid":"tool-card-copy",className:se.copyButtonInline})]}),o&&i&&l.jsx("pre",{className:se.pre,"data-testid":"tool-card-error",children:i}),!o&&!h&&b.length>0&&l.jsxs(l.Fragment,{children:[l.jsx("pre",{className:se.pre,"data-testid":"tool-card-results",children:b.join(`
49
- `)}),v&&l.jsxs("button",{type:"button",className:se.bodyToggle,onClick:()=>{u(_=>!_)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[l.jsx("span",{className:`${se.chevron} ${c?se.chevronExpanded:""}`,children:"▸"}),c?"collapse":`${g.length-pf} more matches`]})]})]})}const DN="_progressBar_14f5c_1",RN="_progressFill_14f5c_9",MN="_activeTask_14f5c_16",ON="_activeIcon_14f5c_27",IN="_todoPulse_14f5c_1",BN="_activeText_14f5c_34",LN="_checklist_14f5c_48",UN="_item_14f5c_55",zN="_itemIcon_14f5c_65",PN="_itemText_14f5c_73",VN="_pending_14f5c_78",HN="_in_progress_14f5c_85",GN="_completed_14f5c_97",$N="_emptyMessage_14f5c_108",Fn={progressBar:DN,progressFill:RN,activeTask:MN,activeIcon:ON,todoPulse:IN,activeText:BN,checklist:LN,item:UN,itemIcon:zN,itemText:PN,pending:VN,in_progress:HN,completed:GN,emptyMessage:$N},qN=/^[-*]\s*\[([ xX~!/])\]\s*(.+)$/;function FN(n){if(n===void 0||typeof n!="object"||n===null)return[];const s=n;return Array.isArray(s.todos)?s.todos.filter(i=>typeof i=="object"&&i!==null&&typeof i.content=="string"&&typeof i.status=="string").map(i=>({content:i.content,activeForm:typeof i.activeForm=="string"?i.activeForm:void 0,status:S0(i.status)})):Array.isArray(s.plan)?s.plan.filter(i=>typeof i=="object"&&i!==null&&typeof i.step=="string"&&typeof i.status=="string").map(i=>({content:i.step,status:S0(i.status)})):typeof s.content=="string"?ZN(s.content):[]}function S0(n){switch(n.toLowerCase()){case"completed":case"done":case"complete":return"completed";case"in_progress":case"in-progress":case"working":case"active":return"in_progress";default:return"pending"}}function ZN(n){const s=n.split(`
50
- `),i=[];for(const o of s){const c=qN.exec(o.trim());if(c){const u=c[1],d=c[2].trim();let m="pending";u==="x"||u==="X"?m="completed":(u==="~"||u==="/"||u==="!")&&(m="in_progress"),i.push({content:d,status:m})}}return i}function KN(n){switch(n){case"completed":return"✓";case"in_progress":return"●";default:return"○"}}function YN({args:n}){const s=FN(n),i=s.filter(u=>u.status==="completed").length,o=s.find(u=>u.status==="in_progress"),c=s.length===0;return l.jsxs("div",{className:`${se.card} ${se.cardBlue}`,"data-testid":"tool-card-todo",children:[l.jsxs("div",{className:se.header,children:[l.jsx("span",{className:se.icon,children:"☑"}),l.jsx("span",{className:se.toolName,style:{color:"var(--accent-blue)"},children:c?"Todos cleared":"Todos"}),!c&&l.jsxs(l.Fragment,{children:[l.jsx("span",{className:se.spacer}),l.jsxs("span",{className:se.badge,"data-testid":"tool-card-todo-progress",children:[i,"/",s.length]})]})]}),!c&&l.jsx("div",{className:Fn.progressBar,"data-testid":"tool-card-todo-bar",children:l.jsx("div",{className:Fn.progressFill,style:{width:`${i/s.length*100}%`}})}),o&&l.jsxs("div",{className:Fn.activeTask,"data-testid":"tool-card-todo-active",children:[l.jsx("span",{className:Fn.activeIcon,children:"●"}),l.jsx("span",{className:Fn.activeText,children:o.activeForm||o.content})]}),!c&&l.jsx("div",{className:Fn.checklist,"data-testid":"tool-card-todo-list",children:s.map((u,d)=>l.jsxs("div",{className:`${Fn.item} ${Fn[u.status]}`,"data-testid":"tool-card-todo-item",children:[l.jsx("span",{className:Fn.itemIcon,children:KN(u.status)}),l.jsx("span",{className:Fn.itemText,children:u.content})]},d))}),c&&l.jsx("div",{className:Fn.emptyMessage,children:"All items completed and cleared."})]})}function JN(n,s){if(s==null||typeof s!="object")return"";const i=s;if(typeof i.intent=="string")return i.intent;for(const o of Object.values(i))if(typeof o=="string")return o;return n}function WN({tool:n,args:s}){const i=JN(n,s);return l.jsxs("div",{className:se.metadata,"data-testid":"tool-card-metadata",children:[l.jsx("span",{className:se.metadataPrefix,children:"↳"}),i]})}function XN(n){const s=/^mcp__(.+?)__(.+)$/.exec(n);return s?{display:`${s[1]} / ${s[2]}`,isMcp:!0}:{display:n,isMcp:!1}}function QN(n){if(n==null)return"";if(typeof n!="object")return String(n);const s=n;if(typeof s.command=="string")return s.command;if(typeof s.file_path=="string")return s.file_path;if(typeof s.path=="string")return s.path;if(typeof s.query=="string")return s.query;if(typeof s.url=="string")return s.url;try{const i=JSON.stringify(n);return i.length>120?`${i.slice(0,120)}…`:i}catch{return""}}const mf=5;function ej({tool:n,args:s,result:i,isError:o}){const[c,u]=y.useState(!1),{display:d}=XN(n),m=QN(s),h=i===void 0,g=(i==null?void 0:i.split(`
51
- `))??[],v=g.length>mf,b=c?i:g.slice(0,mf).join(`
52
- `);let _="";if(s!=null)try{_=JSON.stringify(s,null,2)}catch{_=String(s)}return l.jsxs("div",{className:`${se.card} ${o?se.cardRed:se.cardBlue} ${h?se.inProgress:""}`,"data-testid":"tool-card-generic",children:[l.jsxs("div",{className:se.header,children:[l.jsx("span",{className:se.icon,children:"⚙"}),l.jsx("span",{className:se.toolName,style:{color:"var(--accent-blue)"},children:d}),m&&l.jsx("span",{className:se.fileName,children:m}),!h&&!o&&i&&l.jsx(si,{text:i,"data-testid":"tool-card-copy",className:se.copyButtonInline})]}),h&&_&&l.jsx("pre",{className:se.pre,"data-testid":"tool-card-args",children:_}),o&&i&&l.jsx("pre",{className:se.pre,"data-testid":"tool-card-error",children:i}),!o&&!h&&i&&l.jsxs(l.Fragment,{children:[l.jsx("pre",{className:se.pre,"data-testid":"tool-card-result",children:b}),v&&l.jsxs("button",{type:"button",className:se.bodyToggle,onClick:()=>{u(S=>!S)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[l.jsx("span",{className:`${se.chevron} ${c?se.chevronExpanded:""}`,children:"▸"}),c?"collapse":`${g.length-mf} more lines`]})]})]})}function hf(n){switch(Uw(n.tool)){case"file-read":return l.jsx(x0,{...n});case"file-edit":return l.jsx(TN,{...n});case"file-write":return l.jsx(x0,{...n,writeVariant:!0});case"shell":return l.jsx(CN,{...n});case"search":return l.jsx(AN,{...n});case"todo":return l.jsx(YN,{...n});case"metadata":return l.jsx(WN,{...n});default:return l.jsx(ej,{...n})}}const tj="_systemContextEvent_8n7q0_1",nj="_systemContextHeader_8n7q0_7",sj="_systemContextBadge_8n7q0_28",aj="_systemContextToggle_8n7q0_37",ij="_systemContextPre_8n7q0_43",oj="_systemContextEllipsis_8n7q0_54",rj="_systemEvent_8n7q0_58",lj="_systemTimestamp_8n7q0_65",cj="_textEvent_8n7q0_69",uj="_messageCopyButton_8n7q0_75",dj="_codeBlockWrapper_8n7q0_159",fj="_codeBlockCopyButton_8n7q0_162",pj="_errorEvent_8n7q0_166",mj="_statusEvent_8n7q0_174",hj="_userInputEvent_8n7q0_183",gj="_userInputContent_8n7q0_189",vj="_signalEvent_8n7q0_206",yj="_signalBadge_8n7q0_217",bj="_signalContent_8n7q0_226",_j="_usageEvent_8n7q0_231",xj="_usageBadge_8n7q0_238",Sj="_defaultEvent_8n7q0_247",_t={systemContextEvent:tj,systemContextHeader:nj,systemContextBadge:sj,systemContextToggle:aj,systemContextPre:ij,systemContextEllipsis:oj,systemEvent:rj,systemTimestamp:lj,textEvent:cj,messageCopyButton:uj,codeBlockWrapper:dj,codeBlockCopyButton:fj,errorEvent:pj,statusEvent:mj,userInputEvent:hj,userInputContent:gj,signalEvent:vj,signalBadge:yj,signalContent:bj,usageEvent:_j,usageBadge:xj,defaultEvent:Sj},T0=3;function Tj({content:n}){const[s,i]=y.useState(!1),o=n.split(`
53
- `),c=o.length>T0,u=s?n:o.slice(0,T0).join(`
54
- `);return l.jsxs("div",{className:_t.systemContextEvent,"data-testid":"system-context-event",children:[l.jsxs("button",{type:"button",className:_t.systemContextHeader,onClick:()=>{i(d=>!d)},"aria-expanded":s,children:[l.jsx("span",{className:_t.systemContextBadge,children:"SYSTEM PROMPT"}),c&&l.jsx("span",{className:_t.systemContextToggle,"aria-hidden":"true",children:s?"▾":"▸"})]}),l.jsxs("pre",{className:_t.systemContextPre,children:[u,!s&&c&&l.jsx("span",{className:_t.systemContextEllipsis,children:"…"})]})]})}function kj({time:n,content:s}){return l.jsxs("div",{className:_t.systemEvent,children:[l.jsxs("span",{className:_t.systemTimestamp,children:["[",n,"]"]})," ",s]})}function $f(n){return typeof n=="string"?n:typeof n=="number"?String(n):Array.isArray(n)?n.map($f).join(""):n!=null&&typeof n=="object"&&"props"in n?$f(n.props.children):""}function wj({children:n,node:s,...i}){const o=$f(n);return l.jsxs("div",{className:_t.codeBlockWrapper,children:[l.jsx("pre",{...i,children:n}),l.jsx(si,{text:o,"data-testid":"copy-code-block",className:_t.codeBlockCopyButton})]})}const Nj={pre:wj};function jj({content:n}){return l.jsxs("div",{className:_t.textEvent,children:[l.jsx(si,{text:n,"data-testid":"copy-message",className:_t.messageCopyButton}),l.jsx(fp,{remarkPlugins:[pp],rehypePlugins:[Bw],components:Nj,children:n})]})}function Cj({content:n}){return l.jsxs("div",{className:_t.errorEvent,children:["Error: ",n]})}function Ej({content:n}){return l.jsxs("div",{className:_t.statusEvent,children:["--- ",n," ---"]})}function Aj({content:n}){return l.jsx("div",{className:_t.userInputEvent,children:l.jsx("span",{className:_t.userInputContent,children:n})})}function Dj({content:n}){return l.jsxs("div",{className:_t.signalEvent,"data-testid":"signal-event",children:[l.jsx("span",{className:_t.signalBadge,children:"SIGNAL"}),l.jsx("span",{className:_t.signalContent,children:n})]})}function Rj({content:n}){let s=n;try{const i=JSON.parse(n),o=Number(i.input_tokens)||0,c=Number(i.output_tokens)||0,u=Ib(o+c),d=no(Number(i.cost_usd)||0);s=`${u} tokens · ${d}`}catch{}return l.jsx("div",{className:_t.usageEvent,"data-testid":"usage-event",children:l.jsx("span",{className:_t.usageBadge,children:s})})}function Mj({content:n}){return l.jsx("div",{className:_t.defaultEvent,children:n})}function Oj({event:n,toolUseCtx:s}){const i=new Date(n.timestamp).toLocaleTimeString();switch(n.eventType){case"system":{if(n.raw)try{if(JSON.parse(n.raw).systemContext===!0)return l.jsx(Tj,{content:n.content})}catch{}return l.jsx(kj,{time:i,content:n.content})}case"text":case"output":return l.jsx(jj,{content:n.content});case"tool_use":{let o="",c={};try{const u=JSON.parse(n.content);o=u.tool||"",c=u.args}catch{}return l.jsx(hf,{tool:o,args:c})}case"tool_result":{let o=!1;if(n.raw)try{o=JSON.parse(n.raw).is_error===!0}catch{}let c=n.content;if(n.content.trimStart().startsWith("{"))try{const u=JSON.parse(n.content);typeof u.content=="string"&&(c=u.content)}catch{}return s?l.jsx(hf,{tool:s.tool,args:s.args,result:c,isError:o,detailedResult:s.detailedResult}):l.jsx(hf,{tool:"Tool output",args:void 0,result:c,isError:o})}case"error":return l.jsx(Cj,{content:n.content});case"status":return l.jsx(Ej,{content:n.content});case"user_input":return l.jsx(Aj,{content:n.content});case"signal":return l.jsx(Dj,{content:n.content});case"usage":return l.jsx(Rj,{content:n.content});default:return l.jsx(Mj,{content:n.content})}}const Tp=y.createContext({});function kp(n){const s=y.useRef(null);return s.current===null&&(s.current=n()),s.current}const Bc=y.createContext(null),wp=y.createContext({transformPagePoint:n=>n,isStatic:!1,reducedMotion:"never"});class Ij extends y.Component{getSnapshotBeforeUpdate(s){const i=this.props.childRef.current;if(i&&s.isPresent&&!this.props.isPresent){const o=this.props.sizeRef.current;o.height=i.offsetHeight||0,o.width=i.offsetWidth||0,o.top=i.offsetTop,o.left=i.offsetLeft}return null}componentDidUpdate(){}render(){return this.props.children}}function Bj({children:n,isPresent:s}){const i=y.useId(),o=y.useRef(null),c=y.useRef({width:0,height:0,top:0,left:0}),{nonce:u}=y.useContext(wp);return y.useInsertionEffect(()=>{const{width:d,height:m,top:h,left:g}=c.current;if(s||!o.current||!d||!m)return;o.current.dataset.motionPopId=i;const v=document.createElement("style");return u&&(v.nonce=u),document.head.appendChild(v),v.sheet&&v.sheet.insertRule(`
55
- [data-motion-pop-id="${i}"] {
56
- position: absolute !important;
57
- width: ${d}px !important;
58
- height: ${m}px !important;
59
- top: ${h}px !important;
60
- left: ${g}px !important;
61
- }
62
- `),()=>{document.head.removeChild(v)}},[s]),l.jsx(Ij,{isPresent:s,childRef:o,sizeRef:c,children:y.cloneElement(n,{ref:o})})}const Lj=({children:n,initial:s,isPresent:i,onExitComplete:o,custom:c,presenceAffectsLayout:u,mode:d})=>{const m=kp(Uj),h=y.useId(),g=y.useCallback(b=>{m.set(b,!0);for(const _ of m.values())if(!_)return;o&&o()},[m,o]),v=y.useMemo(()=>({id:h,initial:s,isPresent:i,custom:c,onExitComplete:g,register:b=>(m.set(b,!1),()=>m.delete(b))}),u?[Math.random(),g]:[i,g]);return y.useMemo(()=>{m.forEach((b,_)=>m.set(_,!1))},[i]),y.useEffect(()=>{!i&&!m.size&&o&&o()},[i]),d==="popLayout"&&(n=l.jsx(Bj,{isPresent:i,children:n})),l.jsx(Bc.Provider,{value:v,children:n})};function Uj(){return new Map}function Bb(n=!0){const s=y.useContext(Bc);if(s===null)return[!0,null];const{isPresent:i,onExitComplete:o,register:c}=s,u=y.useId();y.useEffect(()=>{n&&c(u)},[n]);const d=y.useCallback(()=>n&&o&&o(u),[u,o,n]);return!i&&o?[!1,d]:[!0]}const nc=n=>n.key||"";function k0(n){const s=[];return y.Children.forEach(n,i=>{y.isValidElement(i)&&s.push(i)}),s}const Np=typeof window<"u",Lb=Np?y.useLayoutEffect:y.useEffect,ls=({children:n,custom:s,initial:i=!0,onExitComplete:o,presenceAffectsLayout:c=!0,mode:u="sync",propagate:d=!1})=>{const[m,h]=Bb(d),g=y.useMemo(()=>k0(n),[n]),v=d&&!m?[]:g.map(nc),b=y.useRef(!0),_=y.useRef(g),S=kp(()=>new Map),[T,N]=y.useState(g),[j,w]=y.useState(g);Lb(()=>{b.current=!1,_.current=g;for(let M=0;M<j.length;M++){const D=nc(j[M]);v.includes(D)?S.delete(D):S.get(D)!==!0&&S.set(D,!1)}},[j,v.length,v.join("-")]);const C=[];if(g!==T){let M=[...g];for(let D=0;D<j.length;D++){const E=j[D],H=nc(E);v.includes(H)||(M.splice(D,0,E),C.push(E))}u==="wait"&&C.length&&(M=C),w(k0(M)),N(g);return}const{forceRender:A}=y.useContext(Tp);return l.jsx(l.Fragment,{children:j.map(M=>{const D=nc(M),E=d&&!m?!1:g===j||v.includes(D),H=()=>{if(S.has(D))S.set(D,!0);else return;let z=!0;S.forEach(Z=>{Z||(z=!1)}),z&&(A==null||A(),w(_.current),d&&(h==null||h()),o&&o())};return l.jsx(Lj,{isPresent:E,initial:!b.current||i?void 0:!1,custom:E?void 0:s,presenceAffectsLayout:c,mode:u,onExitComplete:E?void 0:H,children:M},D)})})},bn=n=>n;let Ub=bn;const zj={useManualTiming:!1};function Pj(n){let s=new Set,i=new Set,o=!1,c=!1;const u=new WeakSet;let d={delta:0,timestamp:0,isProcessing:!1};function m(g){u.has(g)&&(h.schedule(g),n()),g(d)}const h={schedule:(g,v=!1,b=!1)=>{const S=b&&o?s:i;return v&&u.add(g),S.has(g)||S.add(g),g},cancel:g=>{i.delete(g),u.delete(g)},process:g=>{if(d=g,o){c=!0;return}o=!0,[s,i]=[i,s],s.forEach(m),s.clear(),o=!1,c&&(c=!1,h.process(g))}};return h}const sc=["read","resolveKeyframes","update","preRender","render","postRender"],Vj=40;function zb(n,s){let i=!1,o=!0;const c={delta:0,timestamp:0,isProcessing:!1},u=()=>i=!0,d=sc.reduce((w,C)=>(w[C]=Pj(u),w),{}),{read:m,resolveKeyframes:h,update:g,preRender:v,render:b,postRender:_}=d,S=()=>{const w=performance.now();i=!1,c.delta=o?1e3/60:Math.max(Math.min(w-c.timestamp,Vj),1),c.timestamp=w,c.isProcessing=!0,m.process(c),h.process(c),g.process(c),v.process(c),b.process(c),_.process(c),c.isProcessing=!1,i&&s&&(o=!1,n(S))},T=()=>{i=!0,o=!0,c.isProcessing||n(S)};return{schedule:sc.reduce((w,C)=>{const A=d[C];return w[C]=(M,D=!1,E=!1)=>(i||T(),A.schedule(M,D,E)),w},{}),cancel:w=>{for(let C=0;C<sc.length;C++)d[sc[C]].cancel(w)},state:c,steps:d}}const{schedule:ft,cancel:ya,state:Zt,steps:gf}=zb(typeof requestAnimationFrame<"u"?requestAnimationFrame:bn,!0),Pb=y.createContext({strict:!1}),w0={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]},so={};for(const n in w0)so[n]={isEnabled:s=>w0[n].some(i=>!!s[i])};function Hj(n){for(const s in n)so[s]={...so[s],...n[s]}}const Gj=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","ignoreStrict","viewport"]);function xc(n){return n.startsWith("while")||n.startsWith("drag")&&n!=="draggable"||n.startsWith("layout")||n.startsWith("onTap")||n.startsWith("onPan")||n.startsWith("onLayout")||Gj.has(n)}let Vb=n=>!xc(n);function $j(n){n&&(Vb=s=>s.startsWith("on")?!xc(s):n(s))}try{$j(require("@emotion/is-prop-valid").default)}catch{}function qj(n,s,i){const o={};for(const c in n)c==="values"&&typeof n.values=="object"||(Vb(c)||i===!0&&xc(c)||!s&&!xc(c)||n.draggable&&c.startsWith("onDrag"))&&(o[c]=n[c]);return o}function Fj(n){if(typeof Proxy>"u")return n;const s=new Map,i=(...o)=>n(...o);return new Proxy(i,{get:(o,c)=>c==="create"?n:(s.has(c)||s.set(c,n(c)),s.get(c))})}const Lc=y.createContext({});function wr(n){return typeof n=="string"||Array.isArray(n)}function Uc(n){return n!==null&&typeof n=="object"&&typeof n.start=="function"}const jp=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],Cp=["initial",...jp];function zc(n){return Uc(n.animate)||Cp.some(s=>wr(n[s]))}function Hb(n){return!!(zc(n)||n.variants)}function Zj(n,s){if(zc(n)){const{initial:i,animate:o}=n;return{initial:i===!1||wr(i)?i:void 0,animate:wr(o)?o:void 0}}return n.inherit!==!1?s:{}}function Kj(n){const{initial:s,animate:i}=Zj(n,y.useContext(Lc));return y.useMemo(()=>({initial:s,animate:i}),[N0(s),N0(i)])}function N0(n){return Array.isArray(n)?n.join(" "):n}const Yj=Symbol.for("motionComponentSymbol");function Fi(n){return n&&typeof n=="object"&&Object.prototype.hasOwnProperty.call(n,"current")}function Jj(n,s,i){return y.useCallback(o=>{o&&n.onMount&&n.onMount(o),s&&(o?s.mount(o):s.unmount()),i&&(typeof i=="function"?i(o):Fi(i)&&(i.current=o))},[s])}const Ep=n=>n.replace(/([a-z])([A-Z])/gu,"$1-$2").toLowerCase(),Wj="framerAppearId",Gb="data-"+Ep(Wj),{schedule:Ap}=zb(queueMicrotask,!1),$b=y.createContext({});function Xj(n,s,i,o,c){var u,d;const{visualElement:m}=y.useContext(Lc),h=y.useContext(Pb),g=y.useContext(Bc),v=y.useContext(wp).reducedMotion,b=y.useRef(null);o=o||h.renderer,!b.current&&o&&(b.current=o(n,{visualState:s,parent:m,props:i,presenceContext:g,blockInitialAnimation:g?g.initial===!1:!1,reducedMotionConfig:v}));const _=b.current,S=y.useContext($b);_&&!_.projection&&c&&(_.type==="html"||_.type==="svg")&&Qj(b.current,i,c,S);const T=y.useRef(!1);y.useInsertionEffect(()=>{_&&T.current&&_.update(i,g)});const N=i[Gb],j=y.useRef(!!N&&!(!((u=window.MotionHandoffIsComplete)===null||u===void 0)&&u.call(window,N))&&((d=window.MotionHasOptimisedAnimation)===null||d===void 0?void 0:d.call(window,N)));return Lb(()=>{_&&(T.current=!0,window.MotionIsMounted=!0,_.updateFeatures(),Ap.render(_.render),j.current&&_.animationState&&_.animationState.animateChanges())}),y.useEffect(()=>{_&&(!j.current&&_.animationState&&_.animationState.animateChanges(),j.current&&(queueMicrotask(()=>{var w;(w=window.MotionHandoffMarkAsComplete)===null||w===void 0||w.call(window,N)}),j.current=!1))}),_}function Qj(n,s,i,o){const{layoutId:c,layout:u,drag:d,dragConstraints:m,layoutScroll:h,layoutRoot:g}=s;n.projection=new i(n.latestValues,s["data-framer-portal-id"]?void 0:qb(n.parent)),n.projection.setOptions({layoutId:c,layout:u,alwaysMeasureLayout:!!d||m&&Fi(m),visualElement:n,animationType:typeof u=="string"?u:"both",initialPromotionConfig:o,layoutScroll:h,layoutRoot:g})}function qb(n){if(n)return n.options.allowProjection!==!1?n.projection:qb(n.parent)}function eC({preloadedFeatures:n,createVisualElement:s,useRender:i,useVisualState:o,Component:c}){var u,d;n&&Hj(n);function m(g,v){let b;const _={...y.useContext(wp),...g,layoutId:tC(g)},{isStatic:S}=_,T=Kj(g),N=o(g,S);if(!S&&Np){nC();const j=sC(_);b=j.MeasureLayout,T.visualElement=Xj(c,N,_,s,j.ProjectionNode)}return l.jsxs(Lc.Provider,{value:T,children:[b&&T.visualElement?l.jsx(b,{visualElement:T.visualElement,..._}):null,i(c,g,Jj(N,T.visualElement,v),N,S,T.visualElement)]})}m.displayName=`motion.${typeof c=="string"?c:`create(${(d=(u=c.displayName)!==null&&u!==void 0?u:c.name)!==null&&d!==void 0?d:""})`}`;const h=y.forwardRef(m);return h[Yj]=c,h}function tC({layoutId:n}){const s=y.useContext(Tp).id;return s&&n!==void 0?s+"-"+n:n}function nC(n,s){y.useContext(Pb).strict}function sC(n){const{drag:s,layout:i}=so;if(!s&&!i)return{};const o={...s,...i};return{MeasureLayout:s!=null&&s.isEnabled(n)||i!=null&&i.isEnabled(n)?o.MeasureLayout:void 0,ProjectionNode:o.ProjectionNode}}const aC=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function Dp(n){return typeof n!="string"||n.includes("-")?!1:!!(aC.indexOf(n)>-1||/[A-Z]/u.test(n))}function j0(n){const s=[{},{}];return n==null||n.values.forEach((i,o)=>{s[0][o]=i.get(),s[1][o]=i.getVelocity()}),s}function Rp(n,s,i,o){if(typeof s=="function"){const[c,u]=j0(o);s=s(i!==void 0?i:n.custom,c,u)}if(typeof s=="string"&&(s=n.variants&&n.variants[s]),typeof s=="function"){const[c,u]=j0(o);s=s(i!==void 0?i:n.custom,c,u)}return s}const qf=n=>Array.isArray(n),iC=n=>!!(n&&typeof n=="object"&&n.mix&&n.toValue),oC=n=>qf(n)?n[n.length-1]||0:n,Xt=n=>!!(n&&n.getVelocity);function mc(n){const s=Xt(n)?n.get():n;return iC(s)?s.toValue():s}function rC({scrapeMotionValuesFromProps:n,createRenderState:s,onUpdate:i},o,c,u){const d={latestValues:lC(o,c,u,n),renderState:s()};return i&&(d.onMount=m=>i({props:o,current:m,...d}),d.onUpdate=m=>i(m)),d}const Fb=n=>(s,i)=>{const o=y.useContext(Lc),c=y.useContext(Bc),u=()=>rC(n,s,o,c);return i?u():kp(u)};function lC(n,s,i,o){const c={},u=o(n,{});for(const _ in u)c[_]=mc(u[_]);let{initial:d,animate:m}=n;const h=zc(n),g=Hb(n);s&&g&&!h&&n.inherit!==!1&&(d===void 0&&(d=s.initial),m===void 0&&(m=s.animate));let v=i?i.initial===!1:!1;v=v||d===!1;const b=v?m:d;if(b&&typeof b!="boolean"&&!Uc(b)){const _=Array.isArray(b)?b:[b];for(let S=0;S<_.length;S++){const T=Rp(n,_[S]);if(T){const{transitionEnd:N,transition:j,...w}=T;for(const C in w){let A=w[C];if(Array.isArray(A)){const M=v?A.length-1:0;A=A[M]}A!==null&&(c[C]=A)}for(const C in N)c[C]=N[C]}}}return c}const lo=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],ai=new Set(lo),Zb=n=>s=>typeof s=="string"&&s.startsWith(n),Kb=Zb("--"),cC=Zb("var(--"),Mp=n=>cC(n)?uC.test(n.split("/*")[0].trim()):!1,uC=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu,Yb=(n,s)=>s&&typeof n=="number"?s.transform(n):n,Bs=(n,s,i)=>i>s?s:i<n?n:i,co={test:n=>typeof n=="number",parse:parseFloat,transform:n=>n},Nr={...co,transform:n=>Bs(0,1,n)},ac={...co,default:1},Rr=n=>({test:s=>typeof s=="string"&&s.endsWith(n)&&s.split(" ").length===1,parse:parseFloat,transform:s=>`${s}${n}`}),ha=Rr("deg"),is=Rr("%"),Te=Rr("px"),dC=Rr("vh"),fC=Rr("vw"),C0={...is,parse:n=>is.parse(n)/100,transform:n=>is.transform(n*100)},pC={borderWidth:Te,borderTopWidth:Te,borderRightWidth:Te,borderBottomWidth:Te,borderLeftWidth:Te,borderRadius:Te,radius:Te,borderTopLeftRadius:Te,borderTopRightRadius:Te,borderBottomRightRadius:Te,borderBottomLeftRadius:Te,width:Te,maxWidth:Te,height:Te,maxHeight:Te,top:Te,right:Te,bottom:Te,left:Te,padding:Te,paddingTop:Te,paddingRight:Te,paddingBottom:Te,paddingLeft:Te,margin:Te,marginTop:Te,marginRight:Te,marginBottom:Te,marginLeft:Te,backgroundPositionX:Te,backgroundPositionY:Te},mC={rotate:ha,rotateX:ha,rotateY:ha,rotateZ:ha,scale:ac,scaleX:ac,scaleY:ac,scaleZ:ac,skew:ha,skewX:ha,skewY:ha,distance:Te,translateX:Te,translateY:Te,translateZ:Te,x:Te,y:Te,z:Te,perspective:Te,transformPerspective:Te,opacity:Nr,originX:C0,originY:C0,originZ:Te},E0={...co,transform:Math.round},Op={...pC,...mC,zIndex:E0,size:Te,fillOpacity:Nr,strokeOpacity:Nr,numOctaves:E0},hC={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},gC=lo.length;function vC(n,s,i){let o="",c=!0;for(let u=0;u<gC;u++){const d=lo[u],m=n[d];if(m===void 0)continue;let h=!0;if(typeof m=="number"?h=m===(d.startsWith("scale")?1:0):h=parseFloat(m)===0,!h||i){const g=Yb(m,Op[d]);if(!h){c=!1;const v=hC[d]||d;o+=`${v}(${g}) `}i&&(s[d]=g)}}return o=o.trim(),i?o=i(s,c?"":o):c&&(o="none"),o}function Ip(n,s,i){const{style:o,vars:c,transformOrigin:u}=n;let d=!1,m=!1;for(const h in s){const g=s[h];if(ai.has(h)){d=!0;continue}else if(Kb(h)){c[h]=g;continue}else{const v=Yb(g,Op[h]);h.startsWith("origin")?(m=!0,u[h]=v):o[h]=v}}if(s.transform||(d||i?o.transform=vC(s,n.transform,i):o.transform&&(o.transform="none")),m){const{originX:h="50%",originY:g="50%",originZ:v=0}=u;o.transformOrigin=`${h} ${g} ${v}`}}const yC={offset:"stroke-dashoffset",array:"stroke-dasharray"},bC={offset:"strokeDashoffset",array:"strokeDasharray"};function _C(n,s,i=1,o=0,c=!0){n.pathLength=1;const u=c?yC:bC;n[u.offset]=Te.transform(-o);const d=Te.transform(s),m=Te.transform(i);n[u.array]=`${d} ${m}`}function A0(n,s,i){return typeof n=="string"?n:Te.transform(s+i*n)}function xC(n,s,i){const o=A0(s,n.x,n.width),c=A0(i,n.y,n.height);return`${o} ${c}`}function Bp(n,{attrX:s,attrY:i,attrScale:o,originX:c,originY:u,pathLength:d,pathSpacing:m=1,pathOffset:h=0,...g},v,b){if(Ip(n,g,b),v){n.style.viewBox&&(n.attrs.viewBox=n.style.viewBox);return}n.attrs=n.style,n.style={};const{attrs:_,style:S,dimensions:T}=n;_.transform&&(T&&(S.transform=_.transform),delete _.transform),T&&(c!==void 0||u!==void 0||S.transform)&&(S.transformOrigin=xC(T,c!==void 0?c:.5,u!==void 0?u:.5)),s!==void 0&&(_.x=s),i!==void 0&&(_.y=i),o!==void 0&&(_.scale=o),d!==void 0&&_C(_,d,m,h,!1)}const Lp=()=>({style:{},transform:{},transformOrigin:{},vars:{}}),Jb=()=>({...Lp(),attrs:{}}),Up=n=>typeof n=="string"&&n.toLowerCase()==="svg";function Wb(n,{style:s,vars:i},o,c){Object.assign(n.style,s,c&&c.getProjectionStyles(o));for(const u in i)n.style.setProperty(u,i[u])}const Xb=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]);function Qb(n,s,i,o){Wb(n,s,void 0,o);for(const c in s.attrs)n.setAttribute(Xb.has(c)?c:Ep(c),s.attrs[c])}const Sc={};function SC(n){Object.assign(Sc,n)}function e_(n,{layout:s,layoutId:i}){return ai.has(n)||n.startsWith("origin")||(s||i!==void 0)&&(!!Sc[n]||n==="opacity")}function zp(n,s,i){var o;const{style:c}=n,u={};for(const d in c)(Xt(c[d])||s.style&&Xt(s.style[d])||e_(d,n)||((o=i==null?void 0:i.getValue(d))===null||o===void 0?void 0:o.liveStyle)!==void 0)&&(u[d]=c[d]);return u}function t_(n,s,i){const o=zp(n,s,i);for(const c in n)if(Xt(n[c])||Xt(s[c])){const u=lo.indexOf(c)!==-1?"attr"+c.charAt(0).toUpperCase()+c.substring(1):c;o[u]=n[c]}return o}function TC(n,s){try{s.dimensions=typeof n.getBBox=="function"?n.getBBox():n.getBoundingClientRect()}catch{s.dimensions={x:0,y:0,width:0,height:0}}}const D0=["x","y","width","height","cx","cy","r"],kC={useVisualState:Fb({scrapeMotionValuesFromProps:t_,createRenderState:Jb,onUpdate:({props:n,prevProps:s,current:i,renderState:o,latestValues:c})=>{if(!i)return;let u=!!n.drag;if(!u){for(const m in c)if(ai.has(m)){u=!0;break}}if(!u)return;let d=!s;if(s)for(let m=0;m<D0.length;m++){const h=D0[m];n[h]!==s[h]&&(d=!0)}d&&ft.read(()=>{TC(i,o),ft.render(()=>{Bp(o,c,Up(i.tagName),n.transformTemplate),Qb(i,o)})})}})},wC={useVisualState:Fb({scrapeMotionValuesFromProps:zp,createRenderState:Lp})};function n_(n,s,i){for(const o in s)!Xt(s[o])&&!e_(o,i)&&(n[o]=s[o])}function NC({transformTemplate:n},s){return y.useMemo(()=>{const i=Lp();return Ip(i,s,n),Object.assign({},i.vars,i.style)},[s])}function jC(n,s){const i=n.style||{},o={};return n_(o,i,n),Object.assign(o,NC(n,s)),o}function CC(n,s){const i={},o=jC(n,s);return n.drag&&n.dragListener!==!1&&(i.draggable=!1,o.userSelect=o.WebkitUserSelect=o.WebkitTouchCallout="none",o.touchAction=n.drag===!0?"none":`pan-${n.drag==="x"?"y":"x"}`),n.tabIndex===void 0&&(n.onTap||n.onTapStart||n.whileTap)&&(i.tabIndex=0),i.style=o,i}function EC(n,s,i,o){const c=y.useMemo(()=>{const u=Jb();return Bp(u,s,Up(o),n.transformTemplate),{...u.attrs,style:{...u.style}}},[s]);if(n.style){const u={};n_(u,n.style,n),c.style={...u,...c.style}}return c}function AC(n=!1){return(i,o,c,{latestValues:u},d)=>{const h=(Dp(i)?EC:CC)(o,u,d,i),g=qj(o,typeof i=="string",n),v=i!==y.Fragment?{...g,...h,ref:c}:{},{children:b}=o,_=y.useMemo(()=>Xt(b)?b.get():b,[b]);return y.createElement(i,{...v,children:_})}}function DC(n,s){return function(o,{forwardMotionProps:c}={forwardMotionProps:!1}){const d={...Dp(o)?kC:wC,preloadedFeatures:n,useRender:AC(c),createVisualElement:s,Component:o};return eC(d)}}function s_(n,s){if(!Array.isArray(s))return!1;const i=s.length;if(i!==n.length)return!1;for(let o=0;o<i;o++)if(s[o]!==n[o])return!1;return!0}function Pc(n,s,i){const o=n.getProps();return Rp(o,s,i!==void 0?i:o.custom,n)}function Pp(n,s){return n?n[s]||n.default||n:void 0}const a_=new Set(["width","height","top","left","right","bottom",...lo]);let hc;function RC(){hc=void 0}const os={now:()=>(hc===void 0&&os.set(Zt.isProcessing||zj.useManualTiming?Zt.timestamp:performance.now()),hc),set:n=>{hc=n,queueMicrotask(RC)}};function Vp(n,s){n.indexOf(s)===-1&&n.push(s)}function Hp(n,s){const i=n.indexOf(s);i>-1&&n.splice(i,1)}class Gp{constructor(){this.subscriptions=[]}add(s){return Vp(this.subscriptions,s),()=>Hp(this.subscriptions,s)}notify(s,i,o){const c=this.subscriptions.length;if(c)if(c===1)this.subscriptions[0](s,i,o);else for(let u=0;u<c;u++){const d=this.subscriptions[u];d&&d(s,i,o)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}function i_(n,s){return s?n*(1e3/s):0}const R0=30,MC=n=>!isNaN(parseFloat(n));class OC{constructor(s,i={}){this.version="11.18.2",this.canTrackVelocity=null,this.events={},this.updateAndNotify=(o,c=!0)=>{const u=os.now();this.updatedAt!==u&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(o),this.current!==this.prev&&this.events.change&&this.events.change.notify(this.current),c&&this.events.renderRequest&&this.events.renderRequest.notify(this.current)},this.hasAnimated=!1,this.setCurrent(s),this.owner=i.owner}setCurrent(s){this.current=s,this.updatedAt=os.now(),this.canTrackVelocity===null&&s!==void 0&&(this.canTrackVelocity=MC(this.current))}setPrevFrameValue(s=this.current){this.prevFrameValue=s,this.prevUpdatedAt=this.updatedAt}onChange(s){return this.on("change",s)}on(s,i){this.events[s]||(this.events[s]=new Gp);const o=this.events[s].add(i);return s==="change"?()=>{o(),ft.read(()=>{this.events.change.getSize()||this.stop()})}:o}clearListeners(){for(const s in this.events)this.events[s].clear()}attach(s,i){this.passiveEffect=s,this.stopPassiveEffect=i}set(s,i=!0){!i||!this.passiveEffect?this.updateAndNotify(s,i):this.passiveEffect(s,this.updateAndNotify)}setWithVelocity(s,i,o){this.set(i),this.prev=void 0,this.prevFrameValue=s,this.prevUpdatedAt=this.updatedAt-o}jump(s,i=!0){this.updateAndNotify(s),this.prev=s,this.prevUpdatedAt=this.prevFrameValue=void 0,i&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}get(){return this.current}getPrevious(){return this.prev}getVelocity(){const s=os.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||s-this.updatedAt>R0)return 0;const i=Math.min(this.updatedAt-this.prevUpdatedAt,R0);return i_(parseFloat(this.current)-parseFloat(this.prevFrameValue),i)}start(s){return this.stop(),new Promise(i=>{this.hasAnimated=!0,this.animation=s(i),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function jr(n,s){return new OC(n,s)}function IC(n,s,i){n.hasValue(s)?n.getValue(s).set(i):n.addValue(s,jr(i))}function BC(n,s){const i=Pc(n,s);let{transitionEnd:o={},transition:c={},...u}=i||{};u={...u,...o};for(const d in u){const m=oC(u[d]);IC(n,d,m)}}function LC(n){return!!(Xt(n)&&n.add)}function Ff(n,s){const i=n.getValue("willChange");if(LC(i))return i.add(s)}function o_(n){return n.props[Gb]}function $p(n){let s;return()=>(s===void 0&&(s=n()),s)}const UC=$p(()=>window.ScrollTimeline!==void 0);class zC{constructor(s){this.stop=()=>this.runAll("stop"),this.animations=s.filter(Boolean)}get finished(){return Promise.all(this.animations.map(s=>"finished"in s?s.finished:s))}getAll(s){return this.animations[0][s]}setAll(s,i){for(let o=0;o<this.animations.length;o++)this.animations[o][s]=i}attachTimeline(s,i){const o=this.animations.map(c=>{if(UC()&&c.attachTimeline)return c.attachTimeline(s);if(typeof i=="function")return i(c)});return()=>{o.forEach((c,u)=>{c&&c(),this.animations[u].stop()})}}get time(){return this.getAll("time")}set time(s){this.setAll("time",s)}get speed(){return this.getAll("speed")}set speed(s){this.setAll("speed",s)}get startTime(){return this.getAll("startTime")}get duration(){let s=0;for(let i=0;i<this.animations.length;i++)s=Math.max(s,this.animations[i].duration);return s}runAll(s){this.animations.forEach(i=>i[s]())}flatten(){this.runAll("flatten")}play(){this.runAll("play")}pause(){this.runAll("pause")}cancel(){this.runAll("cancel")}complete(){this.runAll("complete")}}class PC extends zC{then(s,i){return Promise.all(this.animations).then(s).catch(i)}}const Rs=n=>n*1e3,Ms=n=>n/1e3;function qp(n){return typeof n=="function"}function M0(n,s){n.timeline=s,n.onfinish=null}const Fp=n=>Array.isArray(n)&&typeof n[0]=="number",VC={linearEasing:void 0};function HC(n,s){const i=$p(n);return()=>{var o;return(o=VC[s])!==null&&o!==void 0?o:i()}}const Tc=HC(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),ao=(n,s,i)=>{const o=s-n;return o===0?1:(i-n)/o},r_=(n,s,i=10)=>{let o="";const c=Math.max(Math.round(s/i),2);for(let u=0;u<c;u++)o+=n(ao(0,c-1,u))+", ";return`linear(${o.substring(0,o.length-2)})`};function l_(n){return!!(typeof n=="function"&&Tc()||!n||typeof n=="string"&&(n in Zf||Tc())||Fp(n)||Array.isArray(n)&&n.every(l_))}const dr=([n,s,i,o])=>`cubic-bezier(${n}, ${s}, ${i}, ${o})`,Zf={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:dr([0,.65,.55,1]),circOut:dr([.55,0,1,.45]),backIn:dr([.31,.01,.66,-.59]),backOut:dr([.33,1.53,.69,.99])};function c_(n,s){if(n)return typeof n=="function"&&Tc()?r_(n,s):Fp(n)?dr(n):Array.isArray(n)?n.map(i=>c_(i,s)||Zf.easeOut):Zf[n]}const u_=(n,s,i)=>(((1-3*i+3*s)*n+(3*i-6*s))*n+3*s)*n,GC=1e-7,$C=12;function qC(n,s,i,o,c){let u,d,m=0;do d=s+(i-s)/2,u=u_(d,o,c)-n,u>0?i=d:s=d;while(Math.abs(u)>GC&&++m<$C);return d}function Mr(n,s,i,o){if(n===s&&i===o)return bn;const c=u=>qC(u,0,1,n,i);return u=>u===0||u===1?u:u_(c(u),s,o)}const d_=n=>s=>s<=.5?n(2*s)/2:(2-n(2*(1-s)))/2,f_=n=>s=>1-n(1-s),p_=Mr(.33,1.53,.69,.99),Zp=f_(p_),m_=d_(Zp),h_=n=>(n*=2)<1?.5*Zp(n):.5*(2-Math.pow(2,-10*(n-1))),Kp=n=>1-Math.sin(Math.acos(n)),g_=f_(Kp),v_=d_(Kp),y_=n=>/^0[^.\s]+$/u.test(n);function FC(n){return typeof n=="number"?n===0:n!==null?n==="none"||n==="0"||y_(n):!0}const gr=n=>Math.round(n*1e5)/1e5,Yp=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function ZC(n){return n==null}const KC=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,Jp=(n,s)=>i=>!!(typeof i=="string"&&KC.test(i)&&i.startsWith(n)||s&&!ZC(i)&&Object.prototype.hasOwnProperty.call(i,s)),b_=(n,s,i)=>o=>{if(typeof o!="string")return o;const[c,u,d,m]=o.match(Yp);return{[n]:parseFloat(c),[s]:parseFloat(u),[i]:parseFloat(d),alpha:m!==void 0?parseFloat(m):1}},YC=n=>Bs(0,255,n),vf={...co,transform:n=>Math.round(YC(n))},Ka={test:Jp("rgb","red"),parse:b_("red","green","blue"),transform:({red:n,green:s,blue:i,alpha:o=1})=>"rgba("+vf.transform(n)+", "+vf.transform(s)+", "+vf.transform(i)+", "+gr(Nr.transform(o))+")"};function JC(n){let s="",i="",o="",c="";return n.length>5?(s=n.substring(1,3),i=n.substring(3,5),o=n.substring(5,7),c=n.substring(7,9)):(s=n.substring(1,2),i=n.substring(2,3),o=n.substring(3,4),c=n.substring(4,5),s+=s,i+=i,o+=o,c+=c),{red:parseInt(s,16),green:parseInt(i,16),blue:parseInt(o,16),alpha:c?parseInt(c,16)/255:1}}const Kf={test:Jp("#"),parse:JC,transform:Ka.transform},Zi={test:Jp("hsl","hue"),parse:b_("hue","saturation","lightness"),transform:({hue:n,saturation:s,lightness:i,alpha:o=1})=>"hsla("+Math.round(n)+", "+is.transform(gr(s))+", "+is.transform(gr(i))+", "+gr(Nr.transform(o))+")"},Wt={test:n=>Ka.test(n)||Kf.test(n)||Zi.test(n),parse:n=>Ka.test(n)?Ka.parse(n):Zi.test(n)?Zi.parse(n):Kf.parse(n),transform:n=>typeof n=="string"?n:n.hasOwnProperty("red")?Ka.transform(n):Zi.transform(n)},WC=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function XC(n){var s,i;return isNaN(n)&&typeof n=="string"&&(((s=n.match(Yp))===null||s===void 0?void 0:s.length)||0)+(((i=n.match(WC))===null||i===void 0?void 0:i.length)||0)>0}const __="number",x_="color",QC="var",eE="var(",O0="${}",tE=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function Cr(n){const s=n.toString(),i=[],o={color:[],number:[],var:[]},c=[];let u=0;const m=s.replace(tE,h=>(Wt.test(h)?(o.color.push(u),c.push(x_),i.push(Wt.parse(h))):h.startsWith(eE)?(o.var.push(u),c.push(QC),i.push(h)):(o.number.push(u),c.push(__),i.push(parseFloat(h))),++u,O0)).split(O0);return{values:i,split:m,indexes:o,types:c}}function S_(n){return Cr(n).values}function T_(n){const{split:s,types:i}=Cr(n),o=s.length;return c=>{let u="";for(let d=0;d<o;d++)if(u+=s[d],c[d]!==void 0){const m=i[d];m===__?u+=gr(c[d]):m===x_?u+=Wt.transform(c[d]):u+=c[d]}return u}}const nE=n=>typeof n=="number"?0:n;function sE(n){const s=S_(n);return T_(n)(s.map(nE))}const ba={test:XC,parse:S_,createTransformer:T_,getAnimatableNone:sE},aE=new Set(["brightness","contrast","saturate","opacity"]);function iE(n){const[s,i]=n.slice(0,-1).split("(");if(s==="drop-shadow")return n;const[o]=i.match(Yp)||[];if(!o)return n;const c=i.replace(o,"");let u=aE.has(s)?1:0;return o!==i&&(u*=100),s+"("+u+c+")"}const oE=/\b([a-z-]*)\(.*?\)/gu,Yf={...ba,getAnimatableNone:n=>{const s=n.match(oE);return s?s.map(iE).join(" "):n}},rE={...Op,color:Wt,backgroundColor:Wt,outlineColor:Wt,fill:Wt,stroke:Wt,borderColor:Wt,borderTopColor:Wt,borderRightColor:Wt,borderBottomColor:Wt,borderLeftColor:Wt,filter:Yf,WebkitFilter:Yf},Wp=n=>rE[n];function k_(n,s){let i=Wp(n);return i!==Yf&&(i=ba),i.getAnimatableNone?i.getAnimatableNone(s):void 0}const lE=new Set(["auto","none","0"]);function cE(n,s,i){let o=0,c;for(;o<n.length&&!c;){const u=n[o];typeof u=="string"&&!lE.has(u)&&Cr(u).values.length&&(c=n[o]),o++}if(c&&i)for(const u of s)n[u]=k_(i,c)}const I0=n=>n===co||n===Te,B0=(n,s)=>parseFloat(n.split(", ")[s]),L0=(n,s)=>(i,{transform:o})=>{if(o==="none"||!o)return 0;const c=o.match(/^matrix3d\((.+)\)$/u);if(c)return B0(c[1],s);{const u=o.match(/^matrix\((.+)\)$/u);return u?B0(u[1],n):0}},uE=new Set(["x","y","z"]),dE=lo.filter(n=>!uE.has(n));function fE(n){const s=[];return dE.forEach(i=>{const o=n.getValue(i);o!==void 0&&(s.push([i,o.get()]),o.set(i.startsWith("scale")?1:0))}),s}const io={width:({x:n},{paddingLeft:s="0",paddingRight:i="0"})=>n.max-n.min-parseFloat(s)-parseFloat(i),height:({y:n},{paddingTop:s="0",paddingBottom:i="0"})=>n.max-n.min-parseFloat(s)-parseFloat(i),top:(n,{top:s})=>parseFloat(s),left:(n,{left:s})=>parseFloat(s),bottom:({y:n},{top:s})=>parseFloat(s)+(n.max-n.min),right:({x:n},{left:s})=>parseFloat(s)+(n.max-n.min),x:L0(4,13),y:L0(5,14)};io.translateX=io.x;io.translateY=io.y;const Ja=new Set;let Jf=!1,Wf=!1;function w_(){if(Wf){const n=Array.from(Ja).filter(o=>o.needsMeasurement),s=new Set(n.map(o=>o.element)),i=new Map;s.forEach(o=>{const c=fE(o);c.length&&(i.set(o,c),o.render())}),n.forEach(o=>o.measureInitialState()),s.forEach(o=>{o.render();const c=i.get(o);c&&c.forEach(([u,d])=>{var m;(m=o.getValue(u))===null||m===void 0||m.set(d)})}),n.forEach(o=>o.measureEndState()),n.forEach(o=>{o.suspendedScrollY!==void 0&&window.scrollTo(0,o.suspendedScrollY)})}Wf=!1,Jf=!1,Ja.forEach(n=>n.complete()),Ja.clear()}function N_(){Ja.forEach(n=>{n.readKeyframes(),n.needsMeasurement&&(Wf=!0)})}function pE(){N_(),w_()}class Xp{constructor(s,i,o,c,u,d=!1){this.isComplete=!1,this.isAsync=!1,this.needsMeasurement=!1,this.isScheduled=!1,this.unresolvedKeyframes=[...s],this.onComplete=i,this.name=o,this.motionValue=c,this.element=u,this.isAsync=d}scheduleResolve(){this.isScheduled=!0,this.isAsync?(Ja.add(this),Jf||(Jf=!0,ft.read(N_),ft.resolveKeyframes(w_))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:s,name:i,element:o,motionValue:c}=this;for(let u=0;u<s.length;u++)if(s[u]===null)if(u===0){const d=c==null?void 0:c.get(),m=s[s.length-1];if(d!==void 0)s[0]=d;else if(o&&i){const h=o.readValue(i,m);h!=null&&(s[0]=h)}s[0]===void 0&&(s[0]=m),c&&d===void 0&&c.set(s[0])}else s[u]=s[u-1]}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(){this.isComplete=!0,this.onComplete(this.unresolvedKeyframes,this.finalKeyframe),Ja.delete(this)}cancel(){this.isComplete||(this.isScheduled=!1,Ja.delete(this))}resume(){this.isComplete||this.scheduleResolve()}}const j_=n=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(n),mE=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function hE(n){const s=mE.exec(n);if(!s)return[,];const[,i,o,c]=s;return[`--${i??o}`,c]}function C_(n,s,i=1){const[o,c]=hE(n);if(!o)return;const u=window.getComputedStyle(s).getPropertyValue(o);if(u){const d=u.trim();return j_(d)?parseFloat(d):d}return Mp(c)?C_(c,s,i+1):c}const E_=n=>s=>s.test(n),gE={test:n=>n==="auto",parse:n=>n},A_=[co,Te,is,ha,fC,dC,gE],U0=n=>A_.find(E_(n));class D_ extends Xp{constructor(s,i,o,c,u){super(s,i,o,c,u,!0)}readKeyframes(){const{unresolvedKeyframes:s,element:i,name:o}=this;if(!i||!i.current)return;super.readKeyframes();for(let h=0;h<s.length;h++){let g=s[h];if(typeof g=="string"&&(g=g.trim(),Mp(g))){const v=C_(g,i.current);v!==void 0&&(s[h]=v),h===s.length-1&&(this.finalKeyframe=g)}}if(this.resolveNoneKeyframes(),!a_.has(o)||s.length!==2)return;const[c,u]=s,d=U0(c),m=U0(u);if(d!==m)if(I0(d)&&I0(m))for(let h=0;h<s.length;h++){const g=s[h];typeof g=="string"&&(s[h]=parseFloat(g))}else this.needsMeasurement=!0}resolveNoneKeyframes(){const{unresolvedKeyframes:s,name:i}=this,o=[];for(let c=0;c<s.length;c++)FC(s[c])&&o.push(c);o.length&&cE(s,o,i)}measureInitialState(){const{element:s,unresolvedKeyframes:i,name:o}=this;if(!s||!s.current)return;o==="height"&&(this.suspendedScrollY=window.pageYOffset),this.measuredOrigin=io[o](s.measureViewportBox(),window.getComputedStyle(s.current)),i[0]=this.measuredOrigin;const c=i[i.length-1];c!==void 0&&s.getValue(o,c).jump(c,!1)}measureEndState(){var s;const{element:i,name:o,unresolvedKeyframes:c}=this;if(!i||!i.current)return;const u=i.getValue(o);u&&u.jump(this.measuredOrigin,!1);const d=c.length-1,m=c[d];c[d]=io[o](i.measureViewportBox(),window.getComputedStyle(i.current)),m!==null&&this.finalKeyframe===void 0&&(this.finalKeyframe=m),!((s=this.removedTransforms)===null||s===void 0)&&s.length&&this.removedTransforms.forEach(([h,g])=>{i.getValue(h).set(g)}),this.resolveNoneKeyframes()}}const z0=(n,s)=>s==="zIndex"?!1:!!(typeof n=="number"||Array.isArray(n)||typeof n=="string"&&(ba.test(n)||n==="0")&&!n.startsWith("url("));function vE(n){const s=n[0];if(n.length===1)return!0;for(let i=0;i<n.length;i++)if(n[i]!==s)return!0}function yE(n,s,i,o){const c=n[0];if(c===null)return!1;if(s==="display"||s==="visibility")return!0;const u=n[n.length-1],d=z0(c,s),m=z0(u,s);return!d||!m?!1:vE(n)||(i==="spring"||qp(i))&&o}const bE=n=>n!==null;function Vc(n,{repeat:s,repeatType:i="loop"},o){const c=n.filter(bE),u=s&&i!=="loop"&&s%2===1?0:c.length-1;return!u||o===void 0?c[u]:o}const _E=40;class R_{constructor({autoplay:s=!0,delay:i=0,type:o="keyframes",repeat:c=0,repeatDelay:u=0,repeatType:d="loop",...m}){this.isStopped=!1,this.hasAttemptedResolve=!1,this.createdAt=os.now(),this.options={autoplay:s,delay:i,type:o,repeat:c,repeatDelay:u,repeatType:d,...m},this.updateFinishedPromise()}calcStartTime(){return this.resolvedAt?this.resolvedAt-this.createdAt>_E?this.resolvedAt:this.createdAt:this.createdAt}get resolved(){return!this._resolved&&!this.hasAttemptedResolve&&pE(),this._resolved}onKeyframesResolved(s,i){this.resolvedAt=os.now(),this.hasAttemptedResolve=!0;const{name:o,type:c,velocity:u,delay:d,onComplete:m,onUpdate:h,isGenerator:g}=this.options;if(!g&&!yE(s,o,c,u))if(d)this.options.duration=0;else{h&&h(Vc(s,this.options,i)),m&&m(),this.resolveFinishedPromise();return}const v=this.initPlayback(s,i);v!==!1&&(this._resolved={keyframes:s,finalKeyframe:i,...v},this.onPostResolved())}onPostResolved(){}then(s,i){return this.currentFinishedPromise.then(s,i)}flatten(){this.options.type="keyframes",this.options.ease="linear"}updateFinishedPromise(){this.currentFinishedPromise=new Promise(s=>{this.resolveFinishedPromise=s})}}const Xf=2e4;function M_(n){let s=0;const i=50;let o=n.next(s);for(;!o.done&&s<Xf;)s+=i,o=n.next(s);return s>=Xf?1/0:s}const gt=(n,s,i)=>n+(s-n)*i;function yf(n,s,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?n+(s-n)*6*i:i<1/2?s:i<2/3?n+(s-n)*(2/3-i)*6:n}function xE({hue:n,saturation:s,lightness:i,alpha:o}){n/=360,s/=100,i/=100;let c=0,u=0,d=0;if(!s)c=u=d=i;else{const m=i<.5?i*(1+s):i+s-i*s,h=2*i-m;c=yf(h,m,n+1/3),u=yf(h,m,n),d=yf(h,m,n-1/3)}return{red:Math.round(c*255),green:Math.round(u*255),blue:Math.round(d*255),alpha:o}}function kc(n,s){return i=>i>0?s:n}const bf=(n,s,i)=>{const o=n*n,c=i*(s*s-o)+o;return c<0?0:Math.sqrt(c)},SE=[Kf,Ka,Zi],TE=n=>SE.find(s=>s.test(n));function P0(n){const s=TE(n);if(!s)return!1;let i=s.parse(n);return s===Zi&&(i=xE(i)),i}const V0=(n,s)=>{const i=P0(n),o=P0(s);if(!i||!o)return kc(n,s);const c={...i};return u=>(c.red=bf(i.red,o.red,u),c.green=bf(i.green,o.green,u),c.blue=bf(i.blue,o.blue,u),c.alpha=gt(i.alpha,o.alpha,u),Ka.transform(c))},kE=(n,s)=>i=>s(n(i)),Or=(...n)=>n.reduce(kE),Qf=new Set(["none","hidden"]);function wE(n,s){return Qf.has(n)?i=>i<=0?n:s:i=>i>=1?s:n}function NE(n,s){return i=>gt(n,s,i)}function Qp(n){return typeof n=="number"?NE:typeof n=="string"?Mp(n)?kc:Wt.test(n)?V0:EE:Array.isArray(n)?O_:typeof n=="object"?Wt.test(n)?V0:jE:kc}function O_(n,s){const i=[...n],o=i.length,c=n.map((u,d)=>Qp(u)(u,s[d]));return u=>{for(let d=0;d<o;d++)i[d]=c[d](u);return i}}function jE(n,s){const i={...n,...s},o={};for(const c in i)n[c]!==void 0&&s[c]!==void 0&&(o[c]=Qp(n[c])(n[c],s[c]));return c=>{for(const u in o)i[u]=o[u](c);return i}}function CE(n,s){var i;const o=[],c={color:0,var:0,number:0};for(let u=0;u<s.values.length;u++){const d=s.types[u],m=n.indexes[d][c[d]],h=(i=n.values[m])!==null&&i!==void 0?i:0;o[u]=h,c[d]++}return o}const EE=(n,s)=>{const i=ba.createTransformer(s),o=Cr(n),c=Cr(s);return o.indexes.var.length===c.indexes.var.length&&o.indexes.color.length===c.indexes.color.length&&o.indexes.number.length>=c.indexes.number.length?Qf.has(n)&&!c.values.length||Qf.has(s)&&!o.values.length?wE(n,s):Or(O_(CE(o,c),c.values),i):kc(n,s)};function I_(n,s,i){return typeof n=="number"&&typeof s=="number"&&typeof i=="number"?gt(n,s,i):Qp(n)(n,s)}const AE=5;function B_(n,s,i){const o=Math.max(s-AE,0);return i_(i-n(o),s-o)}const bt={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1},_f=.001;function DE({duration:n=bt.duration,bounce:s=bt.bounce,velocity:i=bt.velocity,mass:o=bt.mass}){let c,u,d=1-s;d=Bs(bt.minDamping,bt.maxDamping,d),n=Bs(bt.minDuration,bt.maxDuration,Ms(n)),d<1?(c=g=>{const v=g*d,b=v*n,_=v-i,S=ep(g,d),T=Math.exp(-b);return _f-_/S*T},u=g=>{const b=g*d*n,_=b*i+i,S=Math.pow(d,2)*Math.pow(g,2)*n,T=Math.exp(-b),N=ep(Math.pow(g,2),d);return(-c(g)+_f>0?-1:1)*((_-S)*T)/N}):(c=g=>{const v=Math.exp(-g*n),b=(g-i)*n+1;return-_f+v*b},u=g=>{const v=Math.exp(-g*n),b=(i-g)*(n*n);return v*b});const m=5/n,h=ME(c,u,m);if(n=Rs(n),isNaN(h))return{stiffness:bt.stiffness,damping:bt.damping,duration:n};{const g=Math.pow(h,2)*o;return{stiffness:g,damping:d*2*Math.sqrt(o*g),duration:n}}}const RE=12;function ME(n,s,i){let o=i;for(let c=1;c<RE;c++)o=o-n(o)/s(o);return o}function ep(n,s){return n*Math.sqrt(1-s*s)}const OE=["duration","bounce"],IE=["stiffness","damping","mass"];function H0(n,s){return s.some(i=>n[i]!==void 0)}function BE(n){let s={velocity:bt.velocity,stiffness:bt.stiffness,damping:bt.damping,mass:bt.mass,isResolvedFromDuration:!1,...n};if(!H0(n,IE)&&H0(n,OE))if(n.visualDuration){const i=n.visualDuration,o=2*Math.PI/(i*1.2),c=o*o,u=2*Bs(.05,1,1-(n.bounce||0))*Math.sqrt(c);s={...s,mass:bt.mass,stiffness:c,damping:u}}else{const i=DE(n);s={...s,...i,mass:bt.mass},s.isResolvedFromDuration=!0}return s}function L_(n=bt.visualDuration,s=bt.bounce){const i=typeof n!="object"?{visualDuration:n,keyframes:[0,1],bounce:s}:n;let{restSpeed:o,restDelta:c}=i;const u=i.keyframes[0],d=i.keyframes[i.keyframes.length-1],m={done:!1,value:u},{stiffness:h,damping:g,mass:v,duration:b,velocity:_,isResolvedFromDuration:S}=BE({...i,velocity:-Ms(i.velocity||0)}),T=_||0,N=g/(2*Math.sqrt(h*v)),j=d-u,w=Ms(Math.sqrt(h/v)),C=Math.abs(j)<5;o||(o=C?bt.restSpeed.granular:bt.restSpeed.default),c||(c=C?bt.restDelta.granular:bt.restDelta.default);let A;if(N<1){const D=ep(w,N);A=E=>{const H=Math.exp(-N*w*E);return d-H*((T+N*w*j)/D*Math.sin(D*E)+j*Math.cos(D*E))}}else if(N===1)A=D=>d-Math.exp(-w*D)*(j+(T+w*j)*D);else{const D=w*Math.sqrt(N*N-1);A=E=>{const H=Math.exp(-N*w*E),z=Math.min(D*E,300);return d-H*((T+N*w*j)*Math.sinh(z)+D*j*Math.cosh(z))/D}}const M={calculatedDuration:S&&b||null,next:D=>{const E=A(D);if(S)m.done=D>=b;else{let H=0;N<1&&(H=D===0?Rs(T):B_(A,D,E));const z=Math.abs(H)<=o,Z=Math.abs(d-E)<=c;m.done=z&&Z}return m.value=m.done?d:E,m},toString:()=>{const D=Math.min(M_(M),Xf),E=r_(H=>M.next(D*H).value,D,30);return D+"ms "+E}};return M}function G0({keyframes:n,velocity:s=0,power:i=.8,timeConstant:o=325,bounceDamping:c=10,bounceStiffness:u=500,modifyTarget:d,min:m,max:h,restDelta:g=.5,restSpeed:v}){const b=n[0],_={done:!1,value:b},S=z=>m!==void 0&&z<m||h!==void 0&&z>h,T=z=>m===void 0?h:h===void 0||Math.abs(m-z)<Math.abs(h-z)?m:h;let N=i*s;const j=b+N,w=d===void 0?j:d(j);w!==j&&(N=w-b);const C=z=>-N*Math.exp(-z/o),A=z=>w+C(z),M=z=>{const Z=C(z),F=A(z);_.done=Math.abs(Z)<=g,_.value=_.done?w:F};let D,E;const H=z=>{S(_.value)&&(D=z,E=L_({keyframes:[_.value,T(_.value)],velocity:B_(A,z,_.value),damping:c,stiffness:u,restDelta:g,restSpeed:v}))};return H(0),{calculatedDuration:null,next:z=>{let Z=!1;return!E&&D===void 0&&(Z=!0,M(z),H(z)),D!==void 0&&z>=D?E.next(z-D):(!Z&&M(z),_)}}}const LE=Mr(.42,0,1,1),UE=Mr(0,0,.58,1),U_=Mr(.42,0,.58,1),zE=n=>Array.isArray(n)&&typeof n[0]!="number",PE={linear:bn,easeIn:LE,easeInOut:U_,easeOut:UE,circIn:Kp,circInOut:v_,circOut:g_,backIn:Zp,backInOut:m_,backOut:p_,anticipate:h_},$0=n=>{if(Fp(n)){Ub(n.length===4);const[s,i,o,c]=n;return Mr(s,i,o,c)}else if(typeof n=="string")return PE[n];return n};function VE(n,s,i){const o=[],c=i||I_,u=n.length-1;for(let d=0;d<u;d++){let m=c(n[d],n[d+1]);if(s){const h=Array.isArray(s)?s[d]||bn:s;m=Or(h,m)}o.push(m)}return o}function HE(n,s,{clamp:i=!0,ease:o,mixer:c}={}){const u=n.length;if(Ub(u===s.length),u===1)return()=>s[0];if(u===2&&s[0]===s[1])return()=>s[1];const d=n[0]===n[1];n[0]>n[u-1]&&(n=[...n].reverse(),s=[...s].reverse());const m=VE(s,o,c),h=m.length,g=v=>{if(d&&v<n[0])return s[0];let b=0;if(h>1)for(;b<n.length-2&&!(v<n[b+1]);b++);const _=ao(n[b],n[b+1],v);return m[b](_)};return i?v=>g(Bs(n[0],n[u-1],v)):g}function GE(n,s){const i=n[n.length-1];for(let o=1;o<=s;o++){const c=ao(0,s,o);n.push(gt(i,1,c))}}function $E(n){const s=[0];return GE(s,n.length-1),s}function qE(n,s){return n.map(i=>i*s)}function FE(n,s){return n.map(()=>s||U_).splice(0,n.length-1)}function wc({duration:n=300,keyframes:s,times:i,ease:o="easeInOut"}){const c=zE(o)?o.map($0):$0(o),u={done:!1,value:s[0]},d=qE(i&&i.length===s.length?i:$E(s),n),m=HE(d,s,{ease:Array.isArray(c)?c:FE(s,c)});return{calculatedDuration:n,next:h=>(u.value=m(h),u.done=h>=n,u)}}const ZE=n=>{const s=({timestamp:i})=>n(i);return{start:()=>ft.update(s,!0),stop:()=>ya(s),now:()=>Zt.isProcessing?Zt.timestamp:os.now()}},KE={decay:G0,inertia:G0,tween:wc,keyframes:wc,spring:L_},YE=n=>n/100;class em extends R_{constructor(s){super(s),this.holdTime=null,this.cancelTime=null,this.currentTime=0,this.playbackSpeed=1,this.pendingPlayState="running",this.startTime=null,this.state="idle",this.stop=()=>{if(this.resolver.cancel(),this.isStopped=!0,this.state==="idle")return;this.teardown();const{onStop:h}=this.options;h&&h()};const{name:i,motionValue:o,element:c,keyframes:u}=this.options,d=(c==null?void 0:c.KeyframeResolver)||Xp,m=(h,g)=>this.onKeyframesResolved(h,g);this.resolver=new d(u,m,i,o,c),this.resolver.scheduleResolve()}flatten(){super.flatten(),this._resolved&&Object.assign(this._resolved,this.initPlayback(this._resolved.keyframes))}initPlayback(s){const{type:i="keyframes",repeat:o=0,repeatDelay:c=0,repeatType:u,velocity:d=0}=this.options,m=qp(i)?i:KE[i]||wc;let h,g;m!==wc&&typeof s[0]!="number"&&(h=Or(YE,I_(s[0],s[1])),s=[0,100]);const v=m({...this.options,keyframes:s});u==="mirror"&&(g=m({...this.options,keyframes:[...s].reverse(),velocity:-d})),v.calculatedDuration===null&&(v.calculatedDuration=M_(v));const{calculatedDuration:b}=v,_=b+c,S=_*(o+1)-c;return{generator:v,mirroredGenerator:g,mapPercentToKeyframes:h,calculatedDuration:b,resolvedDuration:_,totalDuration:S}}onPostResolved(){const{autoplay:s=!0}=this.options;this.play(),this.pendingPlayState==="paused"||!s?this.pause():this.state=this.pendingPlayState}tick(s,i=!1){const{resolved:o}=this;if(!o){const{keyframes:z}=this.options;return{done:!0,value:z[z.length-1]}}const{finalKeyframe:c,generator:u,mirroredGenerator:d,mapPercentToKeyframes:m,keyframes:h,calculatedDuration:g,totalDuration:v,resolvedDuration:b}=o;if(this.startTime===null)return u.next(0);const{delay:_,repeat:S,repeatType:T,repeatDelay:N,onUpdate:j}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,s):this.speed<0&&(this.startTime=Math.min(s-v/this.speed,this.startTime)),i?this.currentTime=s:this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=Math.round(s-this.startTime)*this.speed;const w=this.currentTime-_*(this.speed>=0?1:-1),C=this.speed>=0?w<0:w>v;this.currentTime=Math.max(w,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=v);let A=this.currentTime,M=u;if(S){const z=Math.min(this.currentTime,v)/b;let Z=Math.floor(z),F=z%1;!F&&z>=1&&(F=1),F===1&&Z--,Z=Math.min(Z,S+1),!!(Z%2)&&(T==="reverse"?(F=1-F,N&&(F-=N/b)):T==="mirror"&&(M=d)),A=Bs(0,1,F)*b}const D=C?{done:!1,value:h[0]}:M.next(A);m&&(D.value=m(D.value));let{done:E}=D;!C&&g!==null&&(E=this.speed>=0?this.currentTime>=v:this.currentTime<=0);const H=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&E);return H&&c!==void 0&&(D.value=Vc(h,this.options,c)),j&&j(D.value),H&&this.finish(),D}get duration(){const{resolved:s}=this;return s?Ms(s.calculatedDuration):0}get time(){return Ms(this.currentTime)}set time(s){s=Rs(s),this.currentTime=s,this.holdTime!==null||this.speed===0?this.holdTime=s:this.driver&&(this.startTime=this.driver.now()-s/this.speed)}get speed(){return this.playbackSpeed}set speed(s){const i=this.playbackSpeed!==s;this.playbackSpeed=s,i&&(this.time=Ms(this.currentTime))}play(){if(this.resolver.isScheduled||this.resolver.resume(),!this._resolved){this.pendingPlayState="running";return}if(this.isStopped)return;const{driver:s=ZE,onPlay:i,startTime:o}=this.options;this.driver||(this.driver=s(u=>this.tick(u))),i&&i();const c=this.driver.now();this.holdTime!==null?this.startTime=c-this.holdTime:this.startTime?this.state==="finished"&&(this.startTime=c):this.startTime=o??this.calcStartTime(),this.state==="finished"&&this.updateFinishedPromise(),this.cancelTime=this.startTime,this.holdTime=null,this.state="running",this.driver.start()}pause(){var s;if(!this._resolved){this.pendingPlayState="paused";return}this.state="paused",this.holdTime=(s=this.currentTime)!==null&&s!==void 0?s:0}complete(){this.state!=="running"&&this.play(),this.pendingPlayState=this.state="finished",this.holdTime=null}finish(){this.teardown(),this.state="finished";const{onComplete:s}=this.options;s&&s()}cancel(){this.cancelTime!==null&&this.tick(this.cancelTime),this.teardown(),this.updateFinishedPromise()}teardown(){this.state="idle",this.stopDriver(),this.resolveFinishedPromise(),this.updateFinishedPromise(),this.startTime=this.cancelTime=null,this.resolver.cancel()}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(s){return this.startTime=0,this.tick(s,!0)}}const JE=new Set(["opacity","clipPath","filter","transform"]);function WE(n,s,i,{delay:o=0,duration:c=300,repeat:u=0,repeatType:d="loop",ease:m="easeInOut",times:h}={}){const g={[s]:i};h&&(g.offset=h);const v=c_(m,c);return Array.isArray(v)&&(g.easing=v),n.animate(g,{delay:o,duration:c,easing:Array.isArray(v)?"linear":v,fill:"both",iterations:u+1,direction:d==="reverse"?"alternate":"normal"})}const XE=$p(()=>Object.hasOwnProperty.call(Element.prototype,"animate")),Nc=10,QE=2e4;function eA(n){return qp(n.type)||n.type==="spring"||!l_(n.ease)}function tA(n,s){const i=new em({...s,keyframes:n,repeat:0,delay:0,isGenerator:!0});let o={done:!1,value:n[0]};const c=[];let u=0;for(;!o.done&&u<QE;)o=i.sample(u),c.push(o.value),u+=Nc;return{times:void 0,keyframes:c,duration:u-Nc,ease:"linear"}}const z_={anticipate:h_,backInOut:m_,circInOut:v_};function nA(n){return n in z_}class q0 extends R_{constructor(s){super(s);const{name:i,motionValue:o,element:c,keyframes:u}=this.options;this.resolver=new D_(u,(d,m)=>this.onKeyframesResolved(d,m),i,o,c),this.resolver.scheduleResolve()}initPlayback(s,i){let{duration:o=300,times:c,ease:u,type:d,motionValue:m,name:h,startTime:g}=this.options;if(!m.owner||!m.owner.current)return!1;if(typeof u=="string"&&Tc()&&nA(u)&&(u=z_[u]),eA(this.options)){const{onComplete:b,onUpdate:_,motionValue:S,element:T,...N}=this.options,j=tA(s,N);s=j.keyframes,s.length===1&&(s[1]=s[0]),o=j.duration,c=j.times,u=j.ease,d="keyframes"}const v=WE(m.owner.current,h,s,{...this.options,duration:o,times:c,ease:u});return v.startTime=g??this.calcStartTime(),this.pendingTimeline?(M0(v,this.pendingTimeline),this.pendingTimeline=void 0):v.onfinish=()=>{const{onComplete:b}=this.options;m.set(Vc(s,this.options,i)),b&&b(),this.cancel(),this.resolveFinishedPromise()},{animation:v,duration:o,times:c,type:d,ease:u,keyframes:s}}get duration(){const{resolved:s}=this;if(!s)return 0;const{duration:i}=s;return Ms(i)}get time(){const{resolved:s}=this;if(!s)return 0;const{animation:i}=s;return Ms(i.currentTime||0)}set time(s){const{resolved:i}=this;if(!i)return;const{animation:o}=i;o.currentTime=Rs(s)}get speed(){const{resolved:s}=this;if(!s)return 1;const{animation:i}=s;return i.playbackRate}set speed(s){const{resolved:i}=this;if(!i)return;const{animation:o}=i;o.playbackRate=s}get state(){const{resolved:s}=this;if(!s)return"idle";const{animation:i}=s;return i.playState}get startTime(){const{resolved:s}=this;if(!s)return null;const{animation:i}=s;return i.startTime}attachTimeline(s){if(!this._resolved)this.pendingTimeline=s;else{const{resolved:i}=this;if(!i)return bn;const{animation:o}=i;M0(o,s)}return bn}play(){if(this.isStopped)return;const{resolved:s}=this;if(!s)return;const{animation:i}=s;i.playState==="finished"&&this.updateFinishedPromise(),i.play()}pause(){const{resolved:s}=this;if(!s)return;const{animation:i}=s;i.pause()}stop(){if(this.resolver.cancel(),this.isStopped=!0,this.state==="idle")return;this.resolveFinishedPromise(),this.updateFinishedPromise();const{resolved:s}=this;if(!s)return;const{animation:i,keyframes:o,duration:c,type:u,ease:d,times:m}=s;if(i.playState==="idle"||i.playState==="finished")return;if(this.time){const{motionValue:g,onUpdate:v,onComplete:b,element:_,...S}=this.options,T=new em({...S,keyframes:o,duration:c,type:u,ease:d,times:m,isGenerator:!0}),N=Rs(this.time);g.setWithVelocity(T.sample(N-Nc).value,T.sample(N).value,Nc)}const{onStop:h}=this.options;h&&h(),this.cancel()}complete(){const{resolved:s}=this;s&&s.animation.finish()}cancel(){const{resolved:s}=this;s&&s.animation.cancel()}static supports(s){const{motionValue:i,name:o,repeatDelay:c,repeatType:u,damping:d,type:m}=s;if(!i||!i.owner||!(i.owner.current instanceof HTMLElement))return!1;const{onUpdate:h,transformTemplate:g}=i.owner.getProps();return XE()&&o&&JE.has(o)&&!h&&!g&&!c&&u!=="mirror"&&d!==0&&m!=="inertia"}}const sA={type:"spring",stiffness:500,damping:25,restSpeed:10},aA=n=>({type:"spring",stiffness:550,damping:n===0?2*Math.sqrt(550):30,restSpeed:10}),iA={type:"keyframes",duration:.8},oA={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},rA=(n,{keyframes:s})=>s.length>2?iA:ai.has(n)?n.startsWith("scale")?aA(s[1]):sA:oA;function lA({when:n,delay:s,delayChildren:i,staggerChildren:o,staggerDirection:c,repeat:u,repeatType:d,repeatDelay:m,from:h,elapsed:g,...v}){return!!Object.keys(v).length}const tm=(n,s,i,o={},c,u)=>d=>{const m=Pp(o,n)||{},h=m.delay||o.delay||0;let{elapsed:g=0}=o;g=g-Rs(h);let v={keyframes:Array.isArray(i)?i:[null,i],ease:"easeOut",velocity:s.getVelocity(),...m,delay:-g,onUpdate:_=>{s.set(_),m.onUpdate&&m.onUpdate(_)},onComplete:()=>{d(),m.onComplete&&m.onComplete()},name:n,motionValue:s,element:u?void 0:c};lA(m)||(v={...v,...rA(n,v)}),v.duration&&(v.duration=Rs(v.duration)),v.repeatDelay&&(v.repeatDelay=Rs(v.repeatDelay)),v.from!==void 0&&(v.keyframes[0]=v.from);let b=!1;if((v.type===!1||v.duration===0&&!v.repeatDelay)&&(v.duration=0,v.delay===0&&(b=!0)),b&&!u&&s.get()!==void 0){const _=Vc(v.keyframes,m);if(_!==void 0)return ft.update(()=>{v.onUpdate(_),v.onComplete()}),new PC([])}return!u&&q0.supports(v)?new q0(v):new em(v)};function cA({protectedKeys:n,needsAnimating:s},i){const o=n.hasOwnProperty(i)&&s[i]!==!0;return s[i]=!1,o}function P_(n,s,{delay:i=0,transitionOverride:o,type:c}={}){var u;let{transition:d=n.getDefaultTransition(),transitionEnd:m,...h}=s;o&&(d=o);const g=[],v=c&&n.animationState&&n.animationState.getState()[c];for(const b in h){const _=n.getValue(b,(u=n.latestValues[b])!==null&&u!==void 0?u:null),S=h[b];if(S===void 0||v&&cA(v,b))continue;const T={delay:i,...Pp(d||{},b)};let N=!1;if(window.MotionHandoffAnimation){const w=o_(n);if(w){const C=window.MotionHandoffAnimation(w,b,ft);C!==null&&(T.startTime=C,N=!0)}}Ff(n,b),_.start(tm(b,_,S,n.shouldReduceMotion&&a_.has(b)?{type:!1}:T,n,N));const j=_.animation;j&&g.push(j)}return m&&Promise.all(g).then(()=>{ft.update(()=>{m&&BC(n,m)})}),g}function tp(n,s,i={}){var o;const c=Pc(n,s,i.type==="exit"?(o=n.presenceContext)===null||o===void 0?void 0:o.custom:void 0);let{transition:u=n.getDefaultTransition()||{}}=c||{};i.transitionOverride&&(u=i.transitionOverride);const d=c?()=>Promise.all(P_(n,c,i)):()=>Promise.resolve(),m=n.variantChildren&&n.variantChildren.size?(g=0)=>{const{delayChildren:v=0,staggerChildren:b,staggerDirection:_}=u;return uA(n,s,v+g,b,_,i)}:()=>Promise.resolve(),{when:h}=u;if(h){const[g,v]=h==="beforeChildren"?[d,m]:[m,d];return g().then(()=>v())}else return Promise.all([d(),m(i.delay)])}function uA(n,s,i=0,o=0,c=1,u){const d=[],m=(n.variantChildren.size-1)*o,h=c===1?(g=0)=>g*o:(g=0)=>m-g*o;return Array.from(n.variantChildren).sort(dA).forEach((g,v)=>{g.notify("AnimationStart",s),d.push(tp(g,s,{...u,delay:i+h(v)}).then(()=>g.notify("AnimationComplete",s)))}),Promise.all(d)}function dA(n,s){return n.sortNodePosition(s)}function fA(n,s,i={}){n.notify("AnimationStart",s);let o;if(Array.isArray(s)){const c=s.map(u=>tp(n,u,i));o=Promise.all(c)}else if(typeof s=="string")o=tp(n,s,i);else{const c=typeof s=="function"?Pc(n,s,i.custom):s;o=Promise.all(P_(n,c,i))}return o.then(()=>{n.notify("AnimationComplete",s)})}const pA=Cp.length;function V_(n){if(!n)return;if(!n.isControllingVariants){const i=n.parent?V_(n.parent)||{}:{};return n.props.initial!==void 0&&(i.initial=n.props.initial),i}const s={};for(let i=0;i<pA;i++){const o=Cp[i],c=n.props[o];(wr(c)||c===!1)&&(s[o]=c)}return s}const mA=[...jp].reverse(),hA=jp.length;function gA(n){return s=>Promise.all(s.map(({animation:i,options:o})=>fA(n,i,o)))}function vA(n){let s=gA(n),i=F0(),o=!0;const c=h=>(g,v)=>{var b;const _=Pc(n,v,h==="exit"?(b=n.presenceContext)===null||b===void 0?void 0:b.custom:void 0);if(_){const{transition:S,transitionEnd:T,...N}=_;g={...g,...N,...T}}return g};function u(h){s=h(n)}function d(h){const{props:g}=n,v=V_(n.parent)||{},b=[],_=new Set;let S={},T=1/0;for(let j=0;j<hA;j++){const w=mA[j],C=i[w],A=g[w]!==void 0?g[w]:v[w],M=wr(A),D=w===h?C.isActive:null;D===!1&&(T=j);let E=A===v[w]&&A!==g[w]&&M;if(E&&o&&n.manuallyAnimateOnMount&&(E=!1),C.protectedKeys={...S},!C.isActive&&D===null||!A&&!C.prevProp||Uc(A)||typeof A=="boolean")continue;const H=yA(C.prevProp,A);let z=H||w===h&&C.isActive&&!E&&M||j>T&&M,Z=!1;const F=Array.isArray(A)?A:[A];let Q=F.reduce(c(w),{});D===!1&&(Q={});const{prevResolvedValues:ae={}}=C,pe={...ae,...Q},oe=q=>{z=!0,_.has(q)&&(Z=!0,_.delete(q)),C.needsAnimating[q]=!0;const te=n.getValue(q);te&&(te.liveStyle=!1)};for(const q in pe){const te=Q[q],re=ae[q];if(S.hasOwnProperty(q))continue;let de=!1;qf(te)&&qf(re)?de=!s_(te,re):de=te!==re,de?te!=null?oe(q):_.add(q):te!==void 0&&_.has(q)?oe(q):C.protectedKeys[q]=!0}C.prevProp=A,C.prevResolvedValues=Q,C.isActive&&(S={...S,...Q}),o&&n.blockInitialAnimation&&(z=!1),z&&(!(E&&H)||Z)&&b.push(...F.map(q=>({animation:q,options:{type:w}})))}if(_.size){const j={};_.forEach(w=>{const C=n.getBaseTarget(w),A=n.getValue(w);A&&(A.liveStyle=!0),j[w]=C??null}),b.push({animation:j})}let N=!!b.length;return o&&(g.initial===!1||g.initial===g.animate)&&!n.manuallyAnimateOnMount&&(N=!1),o=!1,N?s(b):Promise.resolve()}function m(h,g){var v;if(i[h].isActive===g)return Promise.resolve();(v=n.variantChildren)===null||v===void 0||v.forEach(_=>{var S;return(S=_.animationState)===null||S===void 0?void 0:S.setActive(h,g)}),i[h].isActive=g;const b=d(h);for(const _ in i)i[_].protectedKeys={};return b}return{animateChanges:d,setActive:m,setAnimateFunction:u,getState:()=>i,reset:()=>{i=F0(),o=!0}}}function yA(n,s){return typeof s=="string"?s!==n:Array.isArray(s)?!s_(s,n):!1}function Ha(n=!1){return{isActive:n,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function F0(){return{animate:Ha(!0),whileInView:Ha(),whileHover:Ha(),whileTap:Ha(),whileDrag:Ha(),whileFocus:Ha(),exit:Ha()}}class Sa{constructor(s){this.isMounted=!1,this.node=s}update(){}}class bA extends Sa{constructor(s){super(s),s.animationState||(s.animationState=vA(s))}updateAnimationControlsSubscription(){const{animate:s}=this.node.getProps();Uc(s)&&(this.unmountControls=s.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:s}=this.node.getProps(),{animate:i}=this.node.prevProps||{};s!==i&&this.updateAnimationControlsSubscription()}unmount(){var s;this.node.animationState.reset(),(s=this.unmountControls)===null||s===void 0||s.call(this)}}let _A=0;class xA extends Sa{constructor(){super(...arguments),this.id=_A++}update(){if(!this.node.presenceContext)return;const{isPresent:s,onExitComplete:i}=this.node.presenceContext,{isPresent:o}=this.node.prevPresenceContext||{};if(!this.node.animationState||s===o)return;const c=this.node.animationState.setActive("exit",!s);i&&!s&&c.then(()=>i(this.id))}mount(){const{register:s}=this.node.presenceContext||{};s&&(this.unmount=s(this.id))}unmount(){}}const SA={animation:{Feature:bA},exit:{Feature:xA}},Kn={x:!1,y:!1};function H_(){return Kn.x||Kn.y}function TA(n){return n==="x"||n==="y"?Kn[n]?null:(Kn[n]=!0,()=>{Kn[n]=!1}):Kn.x||Kn.y?null:(Kn.x=Kn.y=!0,()=>{Kn.x=Kn.y=!1})}const nm=n=>n.pointerType==="mouse"?typeof n.button!="number"||n.button<=0:n.isPrimary!==!1;function Er(n,s,i,o={passive:!0}){return n.addEventListener(s,i,o),()=>n.removeEventListener(s,i)}function Ir(n){return{point:{x:n.pageX,y:n.pageY}}}const kA=n=>s=>nm(s)&&n(s,Ir(s));function vr(n,s,i,o){return Er(n,s,kA(i),o)}const Z0=(n,s)=>Math.abs(n-s);function wA(n,s){const i=Z0(n.x,s.x),o=Z0(n.y,s.y);return Math.sqrt(i**2+o**2)}class G_{constructor(s,i,{transformPagePoint:o,contextWindow:c,dragSnapToOrigin:u=!1}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const b=Sf(this.lastMoveEventInfo,this.history),_=this.startEvent!==null,S=wA(b.offset,{x:0,y:0})>=3;if(!_&&!S)return;const{point:T}=b,{timestamp:N}=Zt;this.history.push({...T,timestamp:N});const{onStart:j,onMove:w}=this.handlers;_||(j&&j(this.lastMoveEvent,b),this.startEvent=this.lastMoveEvent),w&&w(this.lastMoveEvent,b)},this.handlePointerMove=(b,_)=>{this.lastMoveEvent=b,this.lastMoveEventInfo=xf(_,this.transformPagePoint),ft.update(this.updatePoint,!0)},this.handlePointerUp=(b,_)=>{this.end();const{onEnd:S,onSessionEnd:T,resumeAnimation:N}=this.handlers;if(this.dragSnapToOrigin&&N&&N(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const j=Sf(b.type==="pointercancel"?this.lastMoveEventInfo:xf(_,this.transformPagePoint),this.history);this.startEvent&&S&&S(b,j),T&&T(b,j)},!nm(s))return;this.dragSnapToOrigin=u,this.handlers=i,this.transformPagePoint=o,this.contextWindow=c||window;const d=Ir(s),m=xf(d,this.transformPagePoint),{point:h}=m,{timestamp:g}=Zt;this.history=[{...h,timestamp:g}];const{onSessionStart:v}=i;v&&v(s,Sf(m,this.history)),this.removeListeners=Or(vr(this.contextWindow,"pointermove",this.handlePointerMove),vr(this.contextWindow,"pointerup",this.handlePointerUp),vr(this.contextWindow,"pointercancel",this.handlePointerUp))}updateHandlers(s){this.handlers=s}end(){this.removeListeners&&this.removeListeners(),ya(this.updatePoint)}}function xf(n,s){return s?{point:s(n.point)}:n}function K0(n,s){return{x:n.x-s.x,y:n.y-s.y}}function Sf({point:n},s){return{point:n,delta:K0(n,$_(s)),offset:K0(n,NA(s)),velocity:jA(s,.1)}}function NA(n){return n[0]}function $_(n){return n[n.length-1]}function jA(n,s){if(n.length<2)return{x:0,y:0};let i=n.length-1,o=null;const c=$_(n);for(;i>=0&&(o=n[i],!(c.timestamp-o.timestamp>Rs(s)));)i--;if(!o)return{x:0,y:0};const u=Ms(c.timestamp-o.timestamp);if(u===0)return{x:0,y:0};const d={x:(c.x-o.x)/u,y:(c.y-o.y)/u};return d.x===1/0&&(d.x=0),d.y===1/0&&(d.y=0),d}const q_=1e-4,CA=1-q_,EA=1+q_,F_=.01,AA=0-F_,DA=0+F_;function _n(n){return n.max-n.min}function RA(n,s,i){return Math.abs(n-s)<=i}function Y0(n,s,i,o=.5){n.origin=o,n.originPoint=gt(s.min,s.max,n.origin),n.scale=_n(i)/_n(s),n.translate=gt(i.min,i.max,n.origin)-n.originPoint,(n.scale>=CA&&n.scale<=EA||isNaN(n.scale))&&(n.scale=1),(n.translate>=AA&&n.translate<=DA||isNaN(n.translate))&&(n.translate=0)}function yr(n,s,i,o){Y0(n.x,s.x,i.x,o?o.originX:void 0),Y0(n.y,s.y,i.y,o?o.originY:void 0)}function J0(n,s,i){n.min=i.min+s.min,n.max=n.min+_n(s)}function MA(n,s,i){J0(n.x,s.x,i.x),J0(n.y,s.y,i.y)}function W0(n,s,i){n.min=s.min-i.min,n.max=n.min+_n(s)}function br(n,s,i){W0(n.x,s.x,i.x),W0(n.y,s.y,i.y)}function OA(n,{min:s,max:i},o){return s!==void 0&&n<s?n=o?gt(s,n,o.min):Math.max(n,s):i!==void 0&&n>i&&(n=o?gt(i,n,o.max):Math.min(n,i)),n}function X0(n,s,i){return{min:s!==void 0?n.min+s:void 0,max:i!==void 0?n.max+i-(n.max-n.min):void 0}}function IA(n,{top:s,left:i,bottom:o,right:c}){return{x:X0(n.x,i,c),y:X0(n.y,s,o)}}function Q0(n,s){let i=s.min-n.min,o=s.max-n.max;return s.max-s.min<n.max-n.min&&([i,o]=[o,i]),{min:i,max:o}}function BA(n,s){return{x:Q0(n.x,s.x),y:Q0(n.y,s.y)}}function LA(n,s){let i=.5;const o=_n(n),c=_n(s);return c>o?i=ao(s.min,s.max-o,n.min):o>c&&(i=ao(n.min,n.max-c,s.min)),Bs(0,1,i)}function UA(n,s){const i={};return s.min!==void 0&&(i.min=s.min-n.min),s.max!==void 0&&(i.max=s.max-n.min),i}const np=.35;function zA(n=np){return n===!1?n=0:n===!0&&(n=np),{x:ey(n,"left","right"),y:ey(n,"top","bottom")}}function ey(n,s,i){return{min:ty(n,s),max:ty(n,i)}}function ty(n,s){return typeof n=="number"?n:n[s]||0}const ny=()=>({translate:0,scale:1,origin:0,originPoint:0}),Ki=()=>({x:ny(),y:ny()}),sy=()=>({min:0,max:0}),Nt=()=>({x:sy(),y:sy()});function Bn(n){return[n("x"),n("y")]}function Z_({top:n,left:s,right:i,bottom:o}){return{x:{min:s,max:i},y:{min:n,max:o}}}function PA({x:n,y:s}){return{top:s.min,right:n.max,bottom:s.max,left:n.min}}function VA(n,s){if(!s)return n;const i=s({x:n.left,y:n.top}),o=s({x:n.right,y:n.bottom});return{top:i.y,left:i.x,bottom:o.y,right:o.x}}function Tf(n){return n===void 0||n===1}function sp({scale:n,scaleX:s,scaleY:i}){return!Tf(n)||!Tf(s)||!Tf(i)}function Fa(n){return sp(n)||K_(n)||n.z||n.rotate||n.rotateX||n.rotateY||n.skewX||n.skewY}function K_(n){return ay(n.x)||ay(n.y)}function ay(n){return n&&n!=="0%"}function jc(n,s,i){const o=n-i,c=s*o;return i+c}function iy(n,s,i,o,c){return c!==void 0&&(n=jc(n,c,o)),jc(n,i,o)+s}function ap(n,s=0,i=1,o,c){n.min=iy(n.min,s,i,o,c),n.max=iy(n.max,s,i,o,c)}function Y_(n,{x:s,y:i}){ap(n.x,s.translate,s.scale,s.originPoint),ap(n.y,i.translate,i.scale,i.originPoint)}const oy=.999999999999,ry=1.0000000000001;function HA(n,s,i,o=!1){const c=i.length;if(!c)return;s.x=s.y=1;let u,d;for(let m=0;m<c;m++){u=i[m],d=u.projectionDelta;const{visualElement:h}=u.options;h&&h.props.style&&h.props.style.display==="contents"||(o&&u.options.layoutScroll&&u.scroll&&u!==u.root&&Ji(n,{x:-u.scroll.offset.x,y:-u.scroll.offset.y}),d&&(s.x*=d.x.scale,s.y*=d.y.scale,Y_(n,d)),o&&Fa(u.latestValues)&&Ji(n,u.latestValues))}s.x<ry&&s.x>oy&&(s.x=1),s.y<ry&&s.y>oy&&(s.y=1)}function Yi(n,s){n.min=n.min+s,n.max=n.max+s}function ly(n,s,i,o,c=.5){const u=gt(n.min,n.max,c);ap(n,s,i,u,o)}function Ji(n,s){ly(n.x,s.x,s.scaleX,s.scale,s.originX),ly(n.y,s.y,s.scaleY,s.scale,s.originY)}function J_(n,s){return Z_(VA(n.getBoundingClientRect(),s))}function GA(n,s,i){const o=J_(n,i),{scroll:c}=s;return c&&(Yi(o.x,c.offset.x),Yi(o.y,c.offset.y)),o}const W_=({current:n})=>n?n.ownerDocument.defaultView:null,$A=new WeakMap;class qA{constructor(s){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=Nt(),this.visualElement=s}start(s,{snapToCursor:i=!1}={}){const{presenceContext:o}=this.visualElement;if(o&&o.isPresent===!1)return;const c=v=>{const{dragSnapToOrigin:b}=this.getProps();b?this.pauseAnimation():this.stopAnimation(),i&&this.snapToCursor(Ir(v).point)},u=(v,b)=>{const{drag:_,dragPropagation:S,onDragStart:T}=this.getProps();if(_&&!S&&(this.openDragLock&&this.openDragLock(),this.openDragLock=TA(_),!this.openDragLock))return;this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),Bn(j=>{let w=this.getAxisMotionValue(j).get()||0;if(is.test(w)){const{projection:C}=this.visualElement;if(C&&C.layout){const A=C.layout.layoutBox[j];A&&(w=_n(A)*(parseFloat(w)/100))}}this.originPoint[j]=w}),T&&ft.postRender(()=>T(v,b)),Ff(this.visualElement,"transform");const{animationState:N}=this.visualElement;N&&N.setActive("whileDrag",!0)},d=(v,b)=>{const{dragPropagation:_,dragDirectionLock:S,onDirectionLock:T,onDrag:N}=this.getProps();if(!_&&!this.openDragLock)return;const{offset:j}=b;if(S&&this.currentDirection===null){this.currentDirection=FA(j),this.currentDirection!==null&&T&&T(this.currentDirection);return}this.updateAxis("x",b.point,j),this.updateAxis("y",b.point,j),this.visualElement.render(),N&&N(v,b)},m=(v,b)=>this.stop(v,b),h=()=>Bn(v=>{var b;return this.getAnimationState(v)==="paused"&&((b=this.getAxisMotionValue(v).animation)===null||b===void 0?void 0:b.play())}),{dragSnapToOrigin:g}=this.getProps();this.panSession=new G_(s,{onSessionStart:c,onStart:u,onMove:d,onSessionEnd:m,resumeAnimation:h},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:g,contextWindow:W_(this.visualElement)})}stop(s,i){const o=this.isDragging;if(this.cancel(),!o)return;const{velocity:c}=i;this.startAnimation(c);const{onDragEnd:u}=this.getProps();u&&ft.postRender(()=>u(s,i))}cancel(){this.isDragging=!1;const{projection:s,animationState:i}=this.visualElement;s&&(s.isAnimationBlocked=!1),this.panSession&&this.panSession.end(),this.panSession=void 0;const{dragPropagation:o}=this.getProps();!o&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),i&&i.setActive("whileDrag",!1)}updateAxis(s,i,o){const{drag:c}=this.getProps();if(!o||!ic(s,c,this.currentDirection))return;const u=this.getAxisMotionValue(s);let d=this.originPoint[s]+o[s];this.constraints&&this.constraints[s]&&(d=OA(d,this.constraints[s],this.elastic[s])),u.set(d)}resolveConstraints(){var s;const{dragConstraints:i,dragElastic:o}=this.getProps(),c=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):(s=this.visualElement.projection)===null||s===void 0?void 0:s.layout,u=this.constraints;i&&Fi(i)?this.constraints||(this.constraints=this.resolveRefConstraints()):i&&c?this.constraints=IA(c.layoutBox,i):this.constraints=!1,this.elastic=zA(o),u!==this.constraints&&c&&this.constraints&&!this.hasMutatedConstraints&&Bn(d=>{this.constraints!==!1&&this.getAxisMotionValue(d)&&(this.constraints[d]=UA(c.layoutBox[d],this.constraints[d]))})}resolveRefConstraints(){const{dragConstraints:s,onMeasureDragConstraints:i}=this.getProps();if(!s||!Fi(s))return!1;const o=s.current,{projection:c}=this.visualElement;if(!c||!c.layout)return!1;const u=GA(o,c.root,this.visualElement.getTransformPagePoint());let d=BA(c.layout.layoutBox,u);if(i){const m=i(PA(d));this.hasMutatedConstraints=!!m,m&&(d=Z_(m))}return d}startAnimation(s){const{drag:i,dragMomentum:o,dragElastic:c,dragTransition:u,dragSnapToOrigin:d,onDragTransitionEnd:m}=this.getProps(),h=this.constraints||{},g=Bn(v=>{if(!ic(v,i,this.currentDirection))return;let b=h&&h[v]||{};d&&(b={min:0,max:0});const _=c?200:1e6,S=c?40:1e7,T={type:"inertia",velocity:o?s[v]:0,bounceStiffness:_,bounceDamping:S,timeConstant:750,restDelta:1,restSpeed:10,...u,...b};return this.startAxisValueAnimation(v,T)});return Promise.all(g).then(m)}startAxisValueAnimation(s,i){const o=this.getAxisMotionValue(s);return Ff(this.visualElement,s),o.start(tm(s,o,0,i,this.visualElement,!1))}stopAnimation(){Bn(s=>this.getAxisMotionValue(s).stop())}pauseAnimation(){Bn(s=>{var i;return(i=this.getAxisMotionValue(s).animation)===null||i===void 0?void 0:i.pause()})}getAnimationState(s){var i;return(i=this.getAxisMotionValue(s).animation)===null||i===void 0?void 0:i.state}getAxisMotionValue(s){const i=`_drag${s.toUpperCase()}`,o=this.visualElement.getProps(),c=o[i];return c||this.visualElement.getValue(s,(o.initial?o.initial[s]:void 0)||0)}snapToCursor(s){Bn(i=>{const{drag:o}=this.getProps();if(!ic(i,o,this.currentDirection))return;const{projection:c}=this.visualElement,u=this.getAxisMotionValue(i);if(c&&c.layout){const{min:d,max:m}=c.layout.layoutBox[i];u.set(s[i]-gt(d,m,.5))}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:s,dragConstraints:i}=this.getProps(),{projection:o}=this.visualElement;if(!Fi(i)||!o||!this.constraints)return;this.stopAnimation();const c={x:0,y:0};Bn(d=>{const m=this.getAxisMotionValue(d);if(m&&this.constraints!==!1){const h=m.get();c[d]=LA({min:h,max:h},this.constraints[d])}});const{transformTemplate:u}=this.visualElement.getProps();this.visualElement.current.style.transform=u?u({},""):"none",o.root&&o.root.updateScroll(),o.updateLayout(),this.resolveConstraints(),Bn(d=>{if(!ic(d,s,null))return;const m=this.getAxisMotionValue(d),{min:h,max:g}=this.constraints[d];m.set(gt(h,g,c[d]))})}addListeners(){if(!this.visualElement.current)return;$A.set(this.visualElement,this);const s=this.visualElement.current,i=vr(s,"pointerdown",h=>{const{drag:g,dragListener:v=!0}=this.getProps();g&&v&&this.start(h)}),o=()=>{const{dragConstraints:h}=this.getProps();Fi(h)&&h.current&&(this.constraints=this.resolveRefConstraints())},{projection:c}=this.visualElement,u=c.addEventListener("measure",o);c&&!c.layout&&(c.root&&c.root.updateScroll(),c.updateLayout()),ft.read(o);const d=Er(window,"resize",()=>this.scalePositionWithinConstraints()),m=c.addEventListener("didUpdate",(({delta:h,hasLayoutChanged:g})=>{this.isDragging&&g&&(Bn(v=>{const b=this.getAxisMotionValue(v);b&&(this.originPoint[v]+=h[v].translate,b.set(b.get()+h[v].translate))}),this.visualElement.render())}));return()=>{d(),i(),u(),m&&m()}}getProps(){const s=this.visualElement.getProps(),{drag:i=!1,dragDirectionLock:o=!1,dragPropagation:c=!1,dragConstraints:u=!1,dragElastic:d=np,dragMomentum:m=!0}=s;return{...s,drag:i,dragDirectionLock:o,dragPropagation:c,dragConstraints:u,dragElastic:d,dragMomentum:m}}}function ic(n,s,i){return(s===!0||s===n)&&(i===null||i===n)}function FA(n,s=10){let i=null;return Math.abs(n.y)>s?i="y":Math.abs(n.x)>s&&(i="x"),i}class ZA extends Sa{constructor(s){super(s),this.removeGroupControls=bn,this.removeListeners=bn,this.controls=new qA(s)}mount(){const{dragControls:s}=this.node.getProps();s&&(this.removeGroupControls=s.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||bn}unmount(){this.removeGroupControls(),this.removeListeners()}}const cy=n=>(s,i)=>{n&&ft.postRender(()=>n(s,i))};class KA extends Sa{constructor(){super(...arguments),this.removePointerDownListener=bn}onPointerDown(s){this.session=new G_(s,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:W_(this.node)})}createPanHandlers(){const{onPanSessionStart:s,onPanStart:i,onPan:o,onPanEnd:c}=this.node.getProps();return{onSessionStart:cy(s),onStart:cy(i),onMove:o,onEnd:(u,d)=>{delete this.session,c&&ft.postRender(()=>c(u,d))}}}mount(){this.removePointerDownListener=vr(this.node.current,"pointerdown",s=>this.onPointerDown(s))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}const gc={hasAnimatedSinceResize:!0,hasEverUpdated:!1};function uy(n,s){return s.max===s.min?0:n/(s.max-s.min)*100}const rr={correct:(n,s)=>{if(!s.target)return n;if(typeof n=="string")if(Te.test(n))n=parseFloat(n);else return n;const i=uy(n,s.target.x),o=uy(n,s.target.y);return`${i}% ${o}%`}},YA={correct:(n,{treeScale:s,projectionDelta:i})=>{const o=n,c=ba.parse(n);if(c.length>5)return o;const u=ba.createTransformer(n),d=typeof c[0]!="number"?1:0,m=i.x.scale*s.x,h=i.y.scale*s.y;c[0+d]/=m,c[1+d]/=h;const g=gt(m,h,.5);return typeof c[2+d]=="number"&&(c[2+d]/=g),typeof c[3+d]=="number"&&(c[3+d]/=g),u(c)}};class JA extends y.Component{componentDidMount(){const{visualElement:s,layoutGroup:i,switchLayoutGroup:o,layoutId:c}=this.props,{projection:u}=s;SC(WA),u&&(i.group&&i.group.add(u),o&&o.register&&c&&o.register(u),u.root.didUpdate(),u.addEventListener("animationComplete",()=>{this.safeToRemove()}),u.setOptions({...u.options,onExitComplete:()=>this.safeToRemove()})),gc.hasEverUpdated=!0}getSnapshotBeforeUpdate(s){const{layoutDependency:i,visualElement:o,drag:c,isPresent:u}=this.props,d=o.projection;return d&&(d.isPresent=u,c||s.layoutDependency!==i||i===void 0?d.willUpdate():this.safeToRemove(),s.isPresent!==u&&(u?d.promote():d.relegate()||ft.postRender(()=>{const m=d.getStack();(!m||!m.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:s}=this.props.visualElement;s&&(s.root.didUpdate(),Ap.postRender(()=>{!s.currentAnimation&&s.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:s,layoutGroup:i,switchLayoutGroup:o}=this.props,{projection:c}=s;c&&(c.scheduleCheckAfterUnmount(),i&&i.group&&i.group.remove(c),o&&o.deregister&&o.deregister(c))}safeToRemove(){const{safeToRemove:s}=this.props;s&&s()}render(){return null}}function X_(n){const[s,i]=Bb(),o=y.useContext(Tp);return l.jsx(JA,{...n,layoutGroup:o,switchLayoutGroup:y.useContext($b),isPresent:s,safeToRemove:i})}const WA={borderRadius:{...rr,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:rr,borderTopRightRadius:rr,borderBottomLeftRadius:rr,borderBottomRightRadius:rr,boxShadow:YA};function XA(n,s,i){const o=Xt(n)?n:jr(n);return o.start(tm("",o,s,i)),o.animation}function QA(n){return n instanceof SVGElement&&n.tagName!=="svg"}const eD=(n,s)=>n.depth-s.depth;class tD{constructor(){this.children=[],this.isDirty=!1}add(s){Vp(this.children,s),this.isDirty=!0}remove(s){Hp(this.children,s),this.isDirty=!0}forEach(s){this.isDirty&&this.children.sort(eD),this.isDirty=!1,this.children.forEach(s)}}function nD(n,s){const i=os.now(),o=({timestamp:c})=>{const u=c-i;u>=s&&(ya(o),n(u-s))};return ft.read(o,!0),()=>ya(o)}const Q_=["TopLeft","TopRight","BottomLeft","BottomRight"],sD=Q_.length,dy=n=>typeof n=="string"?parseFloat(n):n,fy=n=>typeof n=="number"||Te.test(n);function aD(n,s,i,o,c,u){c?(n.opacity=gt(0,i.opacity!==void 0?i.opacity:1,iD(o)),n.opacityExit=gt(s.opacity!==void 0?s.opacity:1,0,oD(o))):u&&(n.opacity=gt(s.opacity!==void 0?s.opacity:1,i.opacity!==void 0?i.opacity:1,o));for(let d=0;d<sD;d++){const m=`border${Q_[d]}Radius`;let h=py(s,m),g=py(i,m);if(h===void 0&&g===void 0)continue;h||(h=0),g||(g=0),h===0||g===0||fy(h)===fy(g)?(n[m]=Math.max(gt(dy(h),dy(g),o),0),(is.test(g)||is.test(h))&&(n[m]+="%")):n[m]=g}(s.rotate||i.rotate)&&(n.rotate=gt(s.rotate||0,i.rotate||0,o))}function py(n,s){return n[s]!==void 0?n[s]:n.borderRadius}const iD=ex(0,.5,g_),oD=ex(.5,.95,bn);function ex(n,s,i){return o=>o<n?0:o>s?1:i(ao(n,s,o))}function my(n,s){n.min=s.min,n.max=s.max}function Mn(n,s){my(n.x,s.x),my(n.y,s.y)}function hy(n,s){n.translate=s.translate,n.scale=s.scale,n.originPoint=s.originPoint,n.origin=s.origin}function gy(n,s,i,o,c){return n-=s,n=jc(n,1/i,o),c!==void 0&&(n=jc(n,1/c,o)),n}function rD(n,s=0,i=1,o=.5,c,u=n,d=n){if(is.test(s)&&(s=parseFloat(s),s=gt(d.min,d.max,s/100)-d.min),typeof s!="number")return;let m=gt(u.min,u.max,o);n===u&&(m-=s),n.min=gy(n.min,s,i,m,c),n.max=gy(n.max,s,i,m,c)}function vy(n,s,[i,o,c],u,d){rD(n,s[i],s[o],s[c],s.scale,u,d)}const lD=["x","scaleX","originX"],cD=["y","scaleY","originY"];function yy(n,s,i,o){vy(n.x,s,lD,i?i.x:void 0,o?o.x:void 0),vy(n.y,s,cD,i?i.y:void 0,o?o.y:void 0)}function by(n){return n.translate===0&&n.scale===1}function tx(n){return by(n.x)&&by(n.y)}function _y(n,s){return n.min===s.min&&n.max===s.max}function uD(n,s){return _y(n.x,s.x)&&_y(n.y,s.y)}function xy(n,s){return Math.round(n.min)===Math.round(s.min)&&Math.round(n.max)===Math.round(s.max)}function nx(n,s){return xy(n.x,s.x)&&xy(n.y,s.y)}function Sy(n){return _n(n.x)/_n(n.y)}function Ty(n,s){return n.translate===s.translate&&n.scale===s.scale&&n.originPoint===s.originPoint}class dD{constructor(){this.members=[]}add(s){Vp(this.members,s),s.scheduleRender()}remove(s){if(Hp(this.members,s),s===this.prevLead&&(this.prevLead=void 0),s===this.lead){const i=this.members[this.members.length-1];i&&this.promote(i)}}relegate(s){const i=this.members.findIndex(c=>s===c);if(i===0)return!1;let o;for(let c=i;c>=0;c--){const u=this.members[c];if(u.isPresent!==!1){o=u;break}}return o?(this.promote(o),!0):!1}promote(s,i){const o=this.lead;if(s!==o&&(this.prevLead=o,this.lead=s,s.show(),o)){o.instance&&o.scheduleRender(),s.scheduleRender(),s.resumeFrom=o,i&&(s.resumeFrom.preserveOpacity=!0),o.snapshot&&(s.snapshot=o.snapshot,s.snapshot.latestValues=o.animationValues||o.latestValues),s.root&&s.root.isUpdating&&(s.isLayoutDirty=!0);const{crossfade:c}=s.options;c===!1&&o.hide()}}exitAnimationComplete(){this.members.forEach(s=>{const{options:i,resumingFrom:o}=s;i.onExitComplete&&i.onExitComplete(),o&&o.options.onExitComplete&&o.options.onExitComplete()})}scheduleRender(){this.members.forEach(s=>{s.instance&&s.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}function fD(n,s,i){let o="";const c=n.x.translate/s.x,u=n.y.translate/s.y,d=(i==null?void 0:i.z)||0;if((c||u||d)&&(o=`translate3d(${c}px, ${u}px, ${d}px) `),(s.x!==1||s.y!==1)&&(o+=`scale(${1/s.x}, ${1/s.y}) `),i){const{transformPerspective:g,rotate:v,rotateX:b,rotateY:_,skewX:S,skewY:T}=i;g&&(o=`perspective(${g}px) ${o}`),v&&(o+=`rotate(${v}deg) `),b&&(o+=`rotateX(${b}deg) `),_&&(o+=`rotateY(${_}deg) `),S&&(o+=`skewX(${S}deg) `),T&&(o+=`skewY(${T}deg) `)}const m=n.x.scale*s.x,h=n.y.scale*s.y;return(m!==1||h!==1)&&(o+=`scale(${m}, ${h})`),o||"none"}const Za={type:"projectionFrame",totalNodes:0,resolvedTargetDeltas:0,recalculatedProjection:0},fr=typeof window<"u"&&window.MotionDebug!==void 0,kf=["","X","Y","Z"],pD={visibility:"hidden"},ky=1e3;let mD=0;function wf(n,s,i,o){const{latestValues:c}=s;c[n]&&(i[n]=c[n],s.setStaticValue(n,0),o&&(o[n]=0))}function sx(n){if(n.hasCheckedOptimisedAppear=!0,n.root===n)return;const{visualElement:s}=n.options;if(!s)return;const i=o_(s);if(window.MotionHasOptimisedAnimation(i,"transform")){const{layout:c,layoutId:u}=n.options;window.MotionCancelOptimisedAnimation(i,"transform",ft,!(c||u))}const{parent:o}=n;o&&!o.hasCheckedOptimisedAppear&&sx(o)}function ax({attachResizeListener:n,defaultParent:s,measureScroll:i,checkIsScrollRoot:o,resetTransform:c}){return class{constructor(d={},m=s==null?void 0:s()){this.id=mD++,this.animationId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,fr&&(Za.totalNodes=Za.resolvedTargetDeltas=Za.recalculatedProjection=0),this.nodes.forEach(vD),this.nodes.forEach(SD),this.nodes.forEach(TD),this.nodes.forEach(yD),fr&&window.MotionDebug.record(Za)},this.resolvedRelativeTargetAt=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=d,this.root=m?m.root||m:this,this.path=m?[...m.path,m]:[],this.parent=m,this.depth=m?m.depth+1:0;for(let h=0;h<this.path.length;h++)this.path[h].shouldResetTransform=!0;this.root===this&&(this.nodes=new tD)}addEventListener(d,m){return this.eventHandlers.has(d)||this.eventHandlers.set(d,new Gp),this.eventHandlers.get(d).add(m)}notifyListeners(d,...m){const h=this.eventHandlers.get(d);h&&h.notify(...m)}hasListeners(d){return this.eventHandlers.has(d)}mount(d,m=this.root.hasTreeAnimated){if(this.instance)return;this.isSVG=QA(d),this.instance=d;const{layoutId:h,layout:g,visualElement:v}=this.options;if(v&&!v.current&&v.mount(d),this.root.nodes.add(this),this.parent&&this.parent.children.add(this),m&&(g||h)&&(this.isLayoutDirty=!0),n){let b;const _=()=>this.root.updateBlockedByResize=!1;n(d,()=>{this.root.updateBlockedByResize=!0,b&&b(),b=nD(_,250),gc.hasAnimatedSinceResize&&(gc.hasAnimatedSinceResize=!1,this.nodes.forEach(Ny))})}h&&this.root.registerSharedNode(h,this),this.options.animate!==!1&&v&&(h||g)&&this.addEventListener("didUpdate",({delta:b,hasLayoutChanged:_,hasRelativeTargetChanged:S,layout:T})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const N=this.options.transition||v.getDefaultTransition()||CD,{onLayoutAnimationStart:j,onLayoutAnimationComplete:w}=v.getProps(),C=!this.targetLayout||!nx(this.targetLayout,T)||S,A=!_&&S;if(this.options.layoutRoot||this.resumeFrom&&this.resumeFrom.instance||A||_&&(C||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0),this.setAnimationOrigin(b,A);const M={...Pp(N,"layout"),onPlay:j,onComplete:w};(v.shouldReduceMotion||this.options.layoutRoot)&&(M.delay=0,M.type=!1),this.startAnimation(M)}else _||Ny(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=T})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const d=this.getStack();d&&d.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,ya(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(kD),this.animationId++)}getTransformTemplate(){const{visualElement:d}=this.options;return d&&d.getProps().transformTemplate}willUpdate(d=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&sx(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let v=0;v<this.path.length;v++){const b=this.path[v];b.shouldResetTransform=!0,b.updateScroll("snapshot"),b.options.layoutRoot&&b.willUpdate(!1)}const{layoutId:m,layout:h}=this.options;if(m===void 0&&!h)return;const g=this.getTransformTemplate();this.prevTransformTemplateValue=g?g(this.latestValues,""):void 0,this.updateSnapshot(),d&&this.notifyListeners("willUpdate")}update(){if(this.updateScheduled=!1,this.isUpdateBlocked()){this.unblockUpdate(),this.clearAllSnapshots(),this.nodes.forEach(wy);return}this.isUpdating||this.nodes.forEach(_D),this.isUpdating=!1,this.nodes.forEach(xD),this.nodes.forEach(hD),this.nodes.forEach(gD),this.clearAllSnapshots();const m=os.now();Zt.delta=Bs(0,1e3/60,m-Zt.timestamp),Zt.timestamp=m,Zt.isProcessing=!0,gf.update.process(Zt),gf.preRender.process(Zt),gf.render.process(Zt),Zt.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,Ap.read(this.scheduleUpdate))}clearAllSnapshots(){this.nodes.forEach(bD),this.sharedNodes.forEach(wD)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,ft.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){ft.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure())}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let h=0;h<this.path.length;h++)this.path[h].updateScroll();const d=this.layout;this.layout=this.measure(!1),this.layoutCorrected=Nt(),this.isLayoutDirty=!1,this.projectionDelta=void 0,this.notifyListeners("measure",this.layout.layoutBox);const{visualElement:m}=this.options;m&&m.notify("LayoutMeasure",this.layout.layoutBox,d?d.layoutBox:void 0)}updateScroll(d="measure"){let m=!!(this.options.layoutScroll&&this.instance);if(this.scroll&&this.scroll.animationId===this.root.animationId&&this.scroll.phase===d&&(m=!1),m){const h=o(this.instance);this.scroll={animationId:this.root.animationId,phase:d,isRoot:h,offset:i(this.instance),wasRoot:this.scroll?this.scroll.isRoot:h}}}resetTransform(){if(!c)return;const d=this.isLayoutDirty||this.shouldResetTransform||this.options.alwaysMeasureLayout,m=this.projectionDelta&&!tx(this.projectionDelta),h=this.getTransformTemplate(),g=h?h(this.latestValues,""):void 0,v=g!==this.prevTransformTemplateValue;d&&(m||Fa(this.latestValues)||v)&&(c(this.instance,g),this.shouldResetTransform=!1,this.scheduleRender())}measure(d=!0){const m=this.measurePageBox();let h=this.removeElementScroll(m);return d&&(h=this.removeTransform(h)),ED(h),{animationId:this.root.animationId,measuredBox:m,layoutBox:h,latestValues:{},source:this.id}}measurePageBox(){var d;const{visualElement:m}=this.options;if(!m)return Nt();const h=m.measureViewportBox();if(!(((d=this.scroll)===null||d===void 0?void 0:d.wasRoot)||this.path.some(AD))){const{scroll:v}=this.root;v&&(Yi(h.x,v.offset.x),Yi(h.y,v.offset.y))}return h}removeElementScroll(d){var m;const h=Nt();if(Mn(h,d),!((m=this.scroll)===null||m===void 0)&&m.wasRoot)return h;for(let g=0;g<this.path.length;g++){const v=this.path[g],{scroll:b,options:_}=v;v!==this.root&&b&&_.layoutScroll&&(b.wasRoot&&Mn(h,d),Yi(h.x,b.offset.x),Yi(h.y,b.offset.y))}return h}applyTransform(d,m=!1){const h=Nt();Mn(h,d);for(let g=0;g<this.path.length;g++){const v=this.path[g];!m&&v.options.layoutScroll&&v.scroll&&v!==v.root&&Ji(h,{x:-v.scroll.offset.x,y:-v.scroll.offset.y}),Fa(v.latestValues)&&Ji(h,v.latestValues)}return Fa(this.latestValues)&&Ji(h,this.latestValues),h}removeTransform(d){const m=Nt();Mn(m,d);for(let h=0;h<this.path.length;h++){const g=this.path[h];if(!g.instance||!Fa(g.latestValues))continue;sp(g.latestValues)&&g.updateSnapshot();const v=Nt(),b=g.measurePageBox();Mn(v,b),yy(m,g.latestValues,g.snapshot?g.snapshot.layoutBox:void 0,v)}return Fa(this.latestValues)&&yy(m,this.latestValues),m}setTargetDelta(d){this.targetDelta=d,this.root.scheduleUpdateProjection(),this.isProjectionDirty=!0}setOptions(d){this.options={...this.options,...d,crossfade:d.crossfade!==void 0?d.crossfade:!0}}clearMeasurements(){this.scroll=void 0,this.layout=void 0,this.snapshot=void 0,this.prevTransformTemplateValue=void 0,this.targetDelta=void 0,this.target=void 0,this.isLayoutDirty=!1}forceRelativeParentToResolveTarget(){this.relativeParent&&this.relativeParent.resolvedRelativeTargetAt!==Zt.timestamp&&this.relativeParent.resolveTargetDelta(!0)}resolveTargetDelta(d=!1){var m;const h=this.getLead();this.isProjectionDirty||(this.isProjectionDirty=h.isProjectionDirty),this.isTransformDirty||(this.isTransformDirty=h.isTransformDirty),this.isSharedProjectionDirty||(this.isSharedProjectionDirty=h.isSharedProjectionDirty);const g=!!this.resumingFrom||this!==h;if(!(d||g&&this.isSharedProjectionDirty||this.isProjectionDirty||!((m=this.parent)===null||m===void 0)&&m.isProjectionDirty||this.attemptToResolveRelativeTarget||this.root.updateBlockedByResize))return;const{layout:b,layoutId:_}=this.options;if(!(!this.layout||!(b||_))){if(this.resolvedRelativeTargetAt=Zt.timestamp,!this.targetDelta&&!this.relativeTarget){const S=this.getClosestProjectingParent();S&&S.layout&&this.animationProgress!==1?(this.relativeParent=S,this.forceRelativeParentToResolveTarget(),this.relativeTarget=Nt(),this.relativeTargetOrigin=Nt(),br(this.relativeTargetOrigin,this.layout.layoutBox,S.layout.layoutBox),Mn(this.relativeTarget,this.relativeTargetOrigin)):this.relativeParent=this.relativeTarget=void 0}if(!(!this.relativeTarget&&!this.targetDelta)){if(this.target||(this.target=Nt(),this.targetWithTransforms=Nt()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target?(this.forceRelativeParentToResolveTarget(),MA(this.target,this.relativeTarget,this.relativeParent.target)):this.targetDelta?(this.resumingFrom?this.target=this.applyTransform(this.layout.layoutBox):Mn(this.target,this.layout.layoutBox),Y_(this.target,this.targetDelta)):Mn(this.target,this.layout.layoutBox),this.attemptToResolveRelativeTarget){this.attemptToResolveRelativeTarget=!1;const S=this.getClosestProjectingParent();S&&!!S.resumingFrom==!!this.resumingFrom&&!S.options.layoutScroll&&S.target&&this.animationProgress!==1?(this.relativeParent=S,this.forceRelativeParentToResolveTarget(),this.relativeTarget=Nt(),this.relativeTargetOrigin=Nt(),br(this.relativeTargetOrigin,this.target,S.target),Mn(this.relativeTarget,this.relativeTargetOrigin)):this.relativeParent=this.relativeTarget=void 0}fr&&Za.resolvedTargetDeltas++}}}getClosestProjectingParent(){if(!(!this.parent||sp(this.parent.latestValues)||K_(this.parent.latestValues)))return this.parent.isProjecting()?this.parent:this.parent.getClosestProjectingParent()}isProjecting(){return!!((this.relativeTarget||this.targetDelta||this.options.layoutRoot)&&this.layout)}calcProjection(){var d;const m=this.getLead(),h=!!this.resumingFrom||this!==m;let g=!0;if((this.isProjectionDirty||!((d=this.parent)===null||d===void 0)&&d.isProjectionDirty)&&(g=!1),h&&(this.isSharedProjectionDirty||this.isTransformDirty)&&(g=!1),this.resolvedRelativeTargetAt===Zt.timestamp&&(g=!1),g)return;const{layout:v,layoutId:b}=this.options;if(this.isTreeAnimating=!!(this.parent&&this.parent.isTreeAnimating||this.currentAnimation||this.pendingAnimation),this.isTreeAnimating||(this.targetDelta=this.relativeTarget=void 0),!this.layout||!(v||b))return;Mn(this.layoutCorrected,this.layout.layoutBox);const _=this.treeScale.x,S=this.treeScale.y;HA(this.layoutCorrected,this.treeScale,this.path,h),m.layout&&!m.target&&(this.treeScale.x!==1||this.treeScale.y!==1)&&(m.target=m.layout.layoutBox,m.targetWithTransforms=Nt());const{target:T}=m;if(!T){this.prevProjectionDelta&&(this.createProjectionDeltas(),this.scheduleRender());return}!this.projectionDelta||!this.prevProjectionDelta?this.createProjectionDeltas():(hy(this.prevProjectionDelta.x,this.projectionDelta.x),hy(this.prevProjectionDelta.y,this.projectionDelta.y)),yr(this.projectionDelta,this.layoutCorrected,T,this.latestValues),(this.treeScale.x!==_||this.treeScale.y!==S||!Ty(this.projectionDelta.x,this.prevProjectionDelta.x)||!Ty(this.projectionDelta.y,this.prevProjectionDelta.y))&&(this.hasProjected=!0,this.scheduleRender(),this.notifyListeners("projectionUpdate",T)),fr&&Za.recalculatedProjection++}hide(){this.isVisible=!1}show(){this.isVisible=!0}scheduleRender(d=!0){var m;if((m=this.options.visualElement)===null||m===void 0||m.scheduleRender(),d){const h=this.getStack();h&&h.scheduleRender()}this.resumingFrom&&!this.resumingFrom.instance&&(this.resumingFrom=void 0)}createProjectionDeltas(){this.prevProjectionDelta=Ki(),this.projectionDelta=Ki(),this.projectionDeltaWithTransform=Ki()}setAnimationOrigin(d,m=!1){const h=this.snapshot,g=h?h.latestValues:{},v={...this.latestValues},b=Ki();(!this.relativeParent||!this.relativeParent.options.layoutRoot)&&(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!m;const _=Nt(),S=h?h.source:void 0,T=this.layout?this.layout.source:void 0,N=S!==T,j=this.getStack(),w=!j||j.members.length<=1,C=!!(N&&!w&&this.options.crossfade===!0&&!this.path.some(jD));this.animationProgress=0;let A;this.mixTargetDelta=M=>{const D=M/1e3;jy(b.x,d.x,D),jy(b.y,d.y,D),this.setTargetDelta(b),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(br(_,this.layout.layoutBox,this.relativeParent.layout.layoutBox),ND(this.relativeTarget,this.relativeTargetOrigin,_,D),A&&uD(this.relativeTarget,A)&&(this.isProjectionDirty=!1),A||(A=Nt()),Mn(A,this.relativeTarget)),N&&(this.animationValues=v,aD(v,g,this.latestValues,D,C,w)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=D},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(d){this.notifyListeners("animationStart"),this.currentAnimation&&this.currentAnimation.stop(),this.resumingFrom&&this.resumingFrom.currentAnimation&&this.resumingFrom.currentAnimation.stop(),this.pendingAnimation&&(ya(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=ft.update(()=>{gc.hasAnimatedSinceResize=!0,this.currentAnimation=XA(0,ky,{...d,onUpdate:m=>{this.mixTargetDelta(m),d.onUpdate&&d.onUpdate(m)},onComplete:()=>{d.onComplete&&d.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const d=this.getStack();d&&d.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(ky),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const d=this.getLead();let{targetWithTransforms:m,target:h,layout:g,latestValues:v}=d;if(!(!m||!h||!g)){if(this!==d&&this.layout&&g&&ix(this.options.animationType,this.layout.layoutBox,g.layoutBox)){h=this.target||Nt();const b=_n(this.layout.layoutBox.x);h.x.min=d.target.x.min,h.x.max=h.x.min+b;const _=_n(this.layout.layoutBox.y);h.y.min=d.target.y.min,h.y.max=h.y.min+_}Mn(m,h),Ji(m,v),yr(this.projectionDeltaWithTransform,this.layoutCorrected,m,v)}}registerSharedNode(d,m){this.sharedNodes.has(d)||this.sharedNodes.set(d,new dD),this.sharedNodes.get(d).add(m);const g=m.options.initialPromotionConfig;m.promote({transition:g?g.transition:void 0,preserveFollowOpacity:g&&g.shouldPreserveFollowOpacity?g.shouldPreserveFollowOpacity(m):void 0})}isLead(){const d=this.getStack();return d?d.lead===this:!0}getLead(){var d;const{layoutId:m}=this.options;return m?((d=this.getStack())===null||d===void 0?void 0:d.lead)||this:this}getPrevLead(){var d;const{layoutId:m}=this.options;return m?(d=this.getStack())===null||d===void 0?void 0:d.prevLead:void 0}getStack(){const{layoutId:d}=this.options;if(d)return this.root.sharedNodes.get(d)}promote({needsReset:d,transition:m,preserveFollowOpacity:h}={}){const g=this.getStack();g&&g.promote(this,h),d&&(this.projectionDelta=void 0,this.needsReset=!0),m&&this.setOptions({transition:m})}relegate(){const d=this.getStack();return d?d.relegate(this):!1}resetSkewAndRotation(){const{visualElement:d}=this.options;if(!d)return;let m=!1;const{latestValues:h}=d;if((h.z||h.rotate||h.rotateX||h.rotateY||h.rotateZ||h.skewX||h.skewY)&&(m=!0),!m)return;const g={};h.z&&wf("z",d,g,this.animationValues);for(let v=0;v<kf.length;v++)wf(`rotate${kf[v]}`,d,g,this.animationValues),wf(`skew${kf[v]}`,d,g,this.animationValues);d.render();for(const v in g)d.setStaticValue(v,g[v]),this.animationValues&&(this.animationValues[v]=g[v]);d.scheduleRender()}getProjectionStyles(d){var m,h;if(!this.instance||this.isSVG)return;if(!this.isVisible)return pD;const g={visibility:""},v=this.getTransformTemplate();if(this.needsReset)return this.needsReset=!1,g.opacity="",g.pointerEvents=mc(d==null?void 0:d.pointerEvents)||"",g.transform=v?v(this.latestValues,""):"none",g;const b=this.getLead();if(!this.projectionDelta||!this.layout||!b.target){const N={};return this.options.layoutId&&(N.opacity=this.latestValues.opacity!==void 0?this.latestValues.opacity:1,N.pointerEvents=mc(d==null?void 0:d.pointerEvents)||""),this.hasProjected&&!Fa(this.latestValues)&&(N.transform=v?v({},""):"none",this.hasProjected=!1),N}const _=b.animationValues||b.latestValues;this.applyTransformsToTarget(),g.transform=fD(this.projectionDeltaWithTransform,this.treeScale,_),v&&(g.transform=v(_,g.transform));const{x:S,y:T}=this.projectionDelta;g.transformOrigin=`${S.origin*100}% ${T.origin*100}% 0`,b.animationValues?g.opacity=b===this?(h=(m=_.opacity)!==null&&m!==void 0?m:this.latestValues.opacity)!==null&&h!==void 0?h:1:this.preserveOpacity?this.latestValues.opacity:_.opacityExit:g.opacity=b===this?_.opacity!==void 0?_.opacity:"":_.opacityExit!==void 0?_.opacityExit:0;for(const N in Sc){if(_[N]===void 0)continue;const{correct:j,applyTo:w}=Sc[N],C=g.transform==="none"?_[N]:j(_[N],b);if(w){const A=w.length;for(let M=0;M<A;M++)g[w[M]]=C}else g[N]=C}return this.options.layoutId&&(g.pointerEvents=b===this?mc(d==null?void 0:d.pointerEvents)||"":"none"),g}clearSnapshot(){this.resumeFrom=this.snapshot=void 0}resetTree(){this.root.nodes.forEach(d=>{var m;return(m=d.currentAnimation)===null||m===void 0?void 0:m.stop()}),this.root.nodes.forEach(wy),this.root.sharedNodes.clear()}}}function hD(n){n.updateLayout()}function gD(n){var s;const i=((s=n.resumeFrom)===null||s===void 0?void 0:s.snapshot)||n.snapshot;if(n.isLead()&&n.layout&&i&&n.hasListeners("didUpdate")){const{layoutBox:o,measuredBox:c}=n.layout,{animationType:u}=n.options,d=i.source!==n.layout.source;u==="size"?Bn(b=>{const _=d?i.measuredBox[b]:i.layoutBox[b],S=_n(_);_.min=o[b].min,_.max=_.min+S}):ix(u,i.layoutBox,o)&&Bn(b=>{const _=d?i.measuredBox[b]:i.layoutBox[b],S=_n(o[b]);_.max=_.min+S,n.relativeTarget&&!n.currentAnimation&&(n.isProjectionDirty=!0,n.relativeTarget[b].max=n.relativeTarget[b].min+S)});const m=Ki();yr(m,o,i.layoutBox);const h=Ki();d?yr(h,n.applyTransform(c,!0),i.measuredBox):yr(h,o,i.layoutBox);const g=!tx(m);let v=!1;if(!n.resumeFrom){const b=n.getClosestProjectingParent();if(b&&!b.resumeFrom){const{snapshot:_,layout:S}=b;if(_&&S){const T=Nt();br(T,i.layoutBox,_.layoutBox);const N=Nt();br(N,o,S.layoutBox),nx(T,N)||(v=!0),b.options.layoutRoot&&(n.relativeTarget=N,n.relativeTargetOrigin=T,n.relativeParent=b)}}}n.notifyListeners("didUpdate",{layout:o,snapshot:i,delta:h,layoutDelta:m,hasLayoutChanged:g,hasRelativeTargetChanged:v})}else if(n.isLead()){const{onExitComplete:o}=n.options;o&&o()}n.options.transition=void 0}function vD(n){fr&&Za.totalNodes++,n.parent&&(n.isProjecting()||(n.isProjectionDirty=n.parent.isProjectionDirty),n.isSharedProjectionDirty||(n.isSharedProjectionDirty=!!(n.isProjectionDirty||n.parent.isProjectionDirty||n.parent.isSharedProjectionDirty)),n.isTransformDirty||(n.isTransformDirty=n.parent.isTransformDirty))}function yD(n){n.isProjectionDirty=n.isSharedProjectionDirty=n.isTransformDirty=!1}function bD(n){n.clearSnapshot()}function wy(n){n.clearMeasurements()}function _D(n){n.isLayoutDirty=!1}function xD(n){const{visualElement:s}=n.options;s&&s.getProps().onBeforeLayoutMeasure&&s.notify("BeforeLayoutMeasure"),n.resetTransform()}function Ny(n){n.finishAnimation(),n.targetDelta=n.relativeTarget=n.target=void 0,n.isProjectionDirty=!0}function SD(n){n.resolveTargetDelta()}function TD(n){n.calcProjection()}function kD(n){n.resetSkewAndRotation()}function wD(n){n.removeLeadSnapshot()}function jy(n,s,i){n.translate=gt(s.translate,0,i),n.scale=gt(s.scale,1,i),n.origin=s.origin,n.originPoint=s.originPoint}function Cy(n,s,i,o){n.min=gt(s.min,i.min,o),n.max=gt(s.max,i.max,o)}function ND(n,s,i,o){Cy(n.x,s.x,i.x,o),Cy(n.y,s.y,i.y,o)}function jD(n){return n.animationValues&&n.animationValues.opacityExit!==void 0}const CD={duration:.45,ease:[.4,0,.1,1]},Ey=n=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(n),Ay=Ey("applewebkit/")&&!Ey("chrome/")?Math.round:bn;function Dy(n){n.min=Ay(n.min),n.max=Ay(n.max)}function ED(n){Dy(n.x),Dy(n.y)}function ix(n,s,i){return n==="position"||n==="preserve-aspect"&&!RA(Sy(s),Sy(i),.2)}function AD(n){var s;return n!==n.root&&((s=n.scroll)===null||s===void 0?void 0:s.wasRoot)}const DD=ax({attachResizeListener:(n,s)=>Er(n,"resize",s),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),Nf={current:void 0},ox=ax({measureScroll:n=>({x:n.scrollLeft,y:n.scrollTop}),defaultParent:()=>{if(!Nf.current){const n=new DD({});n.mount(window),n.setOptions({layoutScroll:!0}),Nf.current=n}return Nf.current},resetTransform:(n,s)=>{n.style.transform=s!==void 0?s:"none"},checkIsScrollRoot:n=>window.getComputedStyle(n).position==="fixed"}),RD={pan:{Feature:KA},drag:{Feature:ZA,ProjectionNode:ox,MeasureLayout:X_}};function MD(n,s,i){var o;if(n instanceof Element)return[n];if(typeof n=="string"){let c=document;const u=(o=void 0)!==null&&o!==void 0?o:c.querySelectorAll(n);return u?Array.from(u):[]}return Array.from(n)}function rx(n,s){const i=MD(n),o=new AbortController,c={passive:!0,...s,signal:o.signal};return[i,c,()=>o.abort()]}function Ry(n){return s=>{s.pointerType==="touch"||H_()||n(s)}}function OD(n,s,i={}){const[o,c,u]=rx(n,i),d=Ry(m=>{const{target:h}=m,g=s(m);if(typeof g!="function"||!h)return;const v=Ry(b=>{g(b),h.removeEventListener("pointerleave",v)});h.addEventListener("pointerleave",v,c)});return o.forEach(m=>{m.addEventListener("pointerenter",d,c)}),u}function My(n,s,i){const{props:o}=n;n.animationState&&o.whileHover&&n.animationState.setActive("whileHover",i==="Start");const c="onHover"+i,u=o[c];u&&ft.postRender(()=>u(s,Ir(s)))}class ID extends Sa{mount(){const{current:s}=this.node;s&&(this.unmount=OD(s,i=>(My(this.node,i,"Start"),o=>My(this.node,o,"End"))))}unmount(){}}class BD extends Sa{constructor(){super(...arguments),this.isActive=!1}onFocus(){let s=!1;try{s=this.node.current.matches(":focus-visible")}catch{s=!0}!s||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=Or(Er(this.node.current,"focus",()=>this.onFocus()),Er(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}const lx=(n,s)=>s?n===s?!0:lx(n,s.parentElement):!1,LD=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function UD(n){return LD.has(n.tagName)||n.tabIndex!==-1}const pr=new WeakSet;function Oy(n){return s=>{s.key==="Enter"&&n(s)}}function jf(n,s){n.dispatchEvent(new PointerEvent("pointer"+s,{isPrimary:!0,bubbles:!0}))}const zD=(n,s)=>{const i=n.currentTarget;if(!i)return;const o=Oy(()=>{if(pr.has(i))return;jf(i,"down");const c=Oy(()=>{jf(i,"up")}),u=()=>jf(i,"cancel");i.addEventListener("keyup",c,s),i.addEventListener("blur",u,s)});i.addEventListener("keydown",o,s),i.addEventListener("blur",()=>i.removeEventListener("keydown",o),s)};function Iy(n){return nm(n)&&!H_()}function PD(n,s,i={}){const[o,c,u]=rx(n,i),d=m=>{const h=m.currentTarget;if(!Iy(m)||pr.has(h))return;pr.add(h);const g=s(m),v=(S,T)=>{window.removeEventListener("pointerup",b),window.removeEventListener("pointercancel",_),!(!Iy(S)||!pr.has(h))&&(pr.delete(h),typeof g=="function"&&g(S,{success:T}))},b=S=>{v(S,i.useGlobalTarget||lx(h,S.target))},_=S=>{v(S,!1)};window.addEventListener("pointerup",b,c),window.addEventListener("pointercancel",_,c)};return o.forEach(m=>{!UD(m)&&m.getAttribute("tabindex")===null&&(m.tabIndex=0),(i.useGlobalTarget?window:m).addEventListener("pointerdown",d,c),m.addEventListener("focus",g=>zD(g,c),c)}),u}function By(n,s,i){const{props:o}=n;n.animationState&&o.whileTap&&n.animationState.setActive("whileTap",i==="Start");const c="onTap"+(i==="End"?"":i),u=o[c];u&&ft.postRender(()=>u(s,Ir(s)))}class VD extends Sa{mount(){const{current:s}=this.node;s&&(this.unmount=PD(s,i=>(By(this.node,i,"Start"),(o,{success:c})=>By(this.node,o,c?"End":"Cancel")),{useGlobalTarget:this.node.props.globalTapTarget}))}unmount(){}}const ip=new WeakMap,Cf=new WeakMap,HD=n=>{const s=ip.get(n.target);s&&s(n)},GD=n=>{n.forEach(HD)};function $D({root:n,...s}){const i=n||document;Cf.has(i)||Cf.set(i,{});const o=Cf.get(i),c=JSON.stringify(s);return o[c]||(o[c]=new IntersectionObserver(GD,{root:n,...s})),o[c]}function qD(n,s,i){const o=$D(s);return ip.set(n,i),o.observe(n),()=>{ip.delete(n),o.unobserve(n)}}const FD={some:0,all:1};class ZD extends Sa{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();const{viewport:s={}}=this.node.getProps(),{root:i,margin:o,amount:c="some",once:u}=s,d={root:i?i.current:void 0,rootMargin:o,threshold:typeof c=="number"?c:FD[c]},m=h=>{const{isIntersecting:g}=h;if(this.isInView===g||(this.isInView=g,u&&!g&&this.hasEnteredView))return;g&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",g);const{onViewportEnter:v,onViewportLeave:b}=this.node.getProps(),_=g?v:b;_&&_(h)};return qD(this.node.current,d,m)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:s,prevProps:i}=this.node;["amount","margin","root"].some(KD(s,i))&&this.startObserver()}unmount(){}}function KD({viewport:n={}},{viewport:s={}}={}){return i=>n[i]!==s[i]}const YD={inView:{Feature:ZD},tap:{Feature:VD},focus:{Feature:BD},hover:{Feature:ID}},JD={layout:{ProjectionNode:ox,MeasureLayout:X_}},Cc={current:null},sm={current:!1};function cx(){if(sm.current=!0,!!Np)if(window.matchMedia){const n=window.matchMedia("(prefers-reduced-motion)"),s=()=>Cc.current=n.matches;n.addListener(s),s()}else Cc.current=!1}const WD=[...A_,Wt,ba],XD=n=>WD.find(E_(n)),Ly=new WeakMap;function QD(n,s,i){for(const o in s){const c=s[o],u=i[o];if(Xt(c))n.addValue(o,c);else if(Xt(u))n.addValue(o,jr(c,{owner:n}));else if(u!==c)if(n.hasValue(o)){const d=n.getValue(o);d.liveStyle===!0?d.jump(c):d.hasAnimated||d.set(c)}else{const d=n.getStaticValue(o);n.addValue(o,jr(d!==void 0?d:c,{owner:n}))}}for(const o in i)s[o]===void 0&&n.removeValue(o);return s}const Uy=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];class eR{scrapeMotionValuesFromProps(s,i,o){return{}}constructor({parent:s,props:i,presenceContext:o,reducedMotionConfig:c,blockInitialAnimation:u,visualState:d},m={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.values=new Map,this.KeyframeResolver=Xp,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const S=os.now();this.renderScheduledAt<S&&(this.renderScheduledAt=S,ft.render(this.render,!1,!0))};const{latestValues:h,renderState:g,onUpdate:v}=d;this.onUpdate=v,this.latestValues=h,this.baseTarget={...h},this.initialValues=i.initial?{...h}:{},this.renderState=g,this.parent=s,this.props=i,this.presenceContext=o,this.depth=s?s.depth+1:0,this.reducedMotionConfig=c,this.options=m,this.blockInitialAnimation=!!u,this.isControllingVariants=zc(i),this.isVariantNode=Hb(i),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(s&&s.current);const{willChange:b,..._}=this.scrapeMotionValuesFromProps(i,{},this);for(const S in _){const T=_[S];h[S]!==void 0&&Xt(T)&&T.set(h[S],!1)}}mount(s){this.current=s,Ly.set(s,this),this.projection&&!this.projection.instance&&this.projection.mount(s),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((i,o)=>this.bindToMotionValue(o,i)),sm.current||cx(),this.shouldReduceMotion=this.reducedMotionConfig==="never"?!1:this.reducedMotionConfig==="always"?!0:Cc.current,this.parent&&this.parent.children.add(this),this.update(this.props,this.presenceContext)}unmount(){Ly.delete(this.current),this.projection&&this.projection.unmount(),ya(this.notifyUpdate),ya(this.render),this.valueSubscriptions.forEach(s=>s()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent&&this.parent.children.delete(this);for(const s in this.events)this.events[s].clear();for(const s in this.features){const i=this.features[s];i&&(i.unmount(),i.isMounted=!1)}this.current=null}bindToMotionValue(s,i){this.valueSubscriptions.has(s)&&this.valueSubscriptions.get(s)();const o=ai.has(s),c=i.on("change",m=>{this.latestValues[s]=m,this.props.onUpdate&&ft.preRender(this.notifyUpdate),o&&this.projection&&(this.projection.isTransformDirty=!0)}),u=i.on("renderRequest",this.scheduleRender);let d;window.MotionCheckAppearSync&&(d=window.MotionCheckAppearSync(this,s,i)),this.valueSubscriptions.set(s,()=>{c(),u(),d&&d(),i.owner&&i.stop()})}sortNodePosition(s){return!this.current||!this.sortInstanceNodePosition||this.type!==s.type?0:this.sortInstanceNodePosition(this.current,s.current)}updateFeatures(){let s="animation";for(s in so){const i=so[s];if(!i)continue;const{isEnabled:o,Feature:c}=i;if(!this.features[s]&&c&&o(this.props)&&(this.features[s]=new c(this)),this.features[s]){const u=this.features[s];u.isMounted?u.update():(u.mount(),u.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):Nt()}getStaticValue(s){return this.latestValues[s]}setStaticValue(s,i){this.latestValues[s]=i}update(s,i){(s.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=s,this.prevPresenceContext=this.presenceContext,this.presenceContext=i;for(let o=0;o<Uy.length;o++){const c=Uy[o];this.propEventSubscriptions[c]&&(this.propEventSubscriptions[c](),delete this.propEventSubscriptions[c]);const u="on"+c,d=s[u];d&&(this.propEventSubscriptions[c]=this.on(c,d))}this.prevMotionValues=QD(this,this.scrapeMotionValuesFromProps(s,this.prevProps,this),this.prevMotionValues),this.handleChildMotionValue&&this.handleChildMotionValue(),this.onUpdate&&this.onUpdate(this)}getProps(){return this.props}getVariant(s){return this.props.variants?this.props.variants[s]:void 0}getDefaultTransition(){return this.props.transition}getTransformPagePoint(){return this.props.transformPagePoint}getClosestVariantNode(){return this.isVariantNode?this:this.parent?this.parent.getClosestVariantNode():void 0}addVariantChild(s){const i=this.getClosestVariantNode();if(i)return i.variantChildren&&i.variantChildren.add(s),()=>i.variantChildren.delete(s)}addValue(s,i){const o=this.values.get(s);i!==o&&(o&&this.removeValue(s),this.bindToMotionValue(s,i),this.values.set(s,i),this.latestValues[s]=i.get())}removeValue(s){this.values.delete(s);const i=this.valueSubscriptions.get(s);i&&(i(),this.valueSubscriptions.delete(s)),delete this.latestValues[s],this.removeValueFromRenderState(s,this.renderState)}hasValue(s){return this.values.has(s)}getValue(s,i){if(this.props.values&&this.props.values[s])return this.props.values[s];let o=this.values.get(s);return o===void 0&&i!==void 0&&(o=jr(i===null?void 0:i,{owner:this}),this.addValue(s,o)),o}readValue(s,i){var o;let c=this.latestValues[s]!==void 0||!this.current?this.latestValues[s]:(o=this.getBaseTargetFromProps(this.props,s))!==null&&o!==void 0?o:this.readValueFromInstance(this.current,s,this.options);return c!=null&&(typeof c=="string"&&(j_(c)||y_(c))?c=parseFloat(c):!XD(c)&&ba.test(i)&&(c=k_(s,i)),this.setBaseTarget(s,Xt(c)?c.get():c)),Xt(c)?c.get():c}setBaseTarget(s,i){this.baseTarget[s]=i}getBaseTarget(s){var i;const{initial:o}=this.props;let c;if(typeof o=="string"||typeof o=="object"){const d=Rp(this.props,o,(i=this.presenceContext)===null||i===void 0?void 0:i.custom);d&&(c=d[s])}if(o&&c!==void 0)return c;const u=this.getBaseTargetFromProps(this.props,s);return u!==void 0&&!Xt(u)?u:this.initialValues[s]!==void 0&&c===void 0?void 0:this.baseTarget[s]}on(s,i){return this.events[s]||(this.events[s]=new Gp),this.events[s].add(i)}notify(s,...i){this.events[s]&&this.events[s].notify(...i)}}class ux extends eR{constructor(){super(...arguments),this.KeyframeResolver=D_}sortInstanceNodePosition(s,i){return s.compareDocumentPosition(i)&2?1:-1}getBaseTargetFromProps(s,i){return s.style?s.style[i]:void 0}removeValueFromRenderState(s,{vars:i,style:o}){delete i[s],delete o[s]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:s}=this.props;Xt(s)&&(this.childSubscription=s.on("change",i=>{this.current&&(this.current.textContent=`${i}`)}))}}function tR(n){return window.getComputedStyle(n)}class nR extends ux{constructor(){super(...arguments),this.type="html",this.renderInstance=Wb}readValueFromInstance(s,i){if(ai.has(i)){const o=Wp(i);return o&&o.default||0}else{const o=tR(s),c=(Kb(i)?o.getPropertyValue(i):o[i])||0;return typeof c=="string"?c.trim():c}}measureInstanceViewportBox(s,{transformPagePoint:i}){return J_(s,i)}build(s,i,o){Ip(s,i,o.transformTemplate)}scrapeMotionValuesFromProps(s,i,o){return zp(s,i,o)}}class sR extends ux{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=Nt}getBaseTargetFromProps(s,i){return s[i]}readValueFromInstance(s,i){if(ai.has(i)){const o=Wp(i);return o&&o.default||0}return i=Xb.has(i)?i:Ep(i),s.getAttribute(i)}scrapeMotionValuesFromProps(s,i,o){return t_(s,i,o)}build(s,i,o){Bp(s,i,this.isSVGTag,o.transformTemplate)}renderInstance(s,i,o,c){Qb(s,i,o,c)}mount(s){this.isSVGTag=Up(s.tagName),super.mount(s)}}const aR=(n,s)=>Dp(n)?new sR(s):new nR(s,{allowProjection:n!==y.Fragment}),iR=DC({...SA,...YD,...RD,...JD},aR),Mt=Fj(iR);function oR(){!sm.current&&cx();const[n]=y.useState(Cc.current);return n}const rR="_overlay_cmicx_1",lR="_dialog_cmicx_11",cR="_title_cmicx_30",uR="_description_cmicx_38",dR="_actions_cmicx_45",fR="_cancelButton_cmicx_52",pR="_confirmButton_cmicx_79",Ga={overlay:rR,dialog:lR,title:cR,description:uR,actions:dR,cancelButton:fR,confirmButton:pR};function Xa({isOpen:n,title:s,description:i,confirmLabel:o="Delete",onConfirm:c,onCancel:u}){const d=y.useId(),m=y.useId();return l.jsx(ls,{children:n&&l.jsx(Mt.div,{className:Ga.overlay,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.15},onClick:u,onKeyDown:h=>{h.key==="Escape"&&u()},role:"dialog","aria-modal":"true","aria-labelledby":d,"aria-describedby":i?m:void 0,children:l.jsxs(Mt.div,{className:Ga.dialog,initial:{opacity:0,scale:.93,y:-10},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.93,y:-10},transition:{duration:.15,ease:[.16,1,.3,1]},onClick:h=>h.stopPropagation(),children:[l.jsx("h3",{id:d,className:Ga.title,children:s}),i&&l.jsx("p",{id:m,className:Ga.description,children:i}),l.jsxs("div",{className:Ga.actions,children:[l.jsx("button",{type:"button",className:Ga.cancelButton,onClick:u,autoFocus:!0,children:"Cancel"}),l.jsx("button",{type:"button",className:Ga.confirmButton,onClick:c,children:o})]})]})})})}const mR="_spinner_1uyt1_1",hR="_spin_1uyt1_1",gR="_sm_1uyt1_14",vR="_md_1uyt1_20",yR="_lg_1uyt1_26",bR="_xl_1uyt1_32",zy={spinner:mR,spin:hR,sm:gR,md:vR,lg:yR,xl:bR};function dx({size:n="md",className:s,label:i="Loading",liveRegion:o=!1}){return l.jsx("span",{className:`${zy.spinner} ${zy[n]} ${s??""}`,role:o?"status":void 0,"aria-label":i,"aria-hidden":o?void 0:!0})}const _R="_splash_1bn1g_1",xR="_logo_1bn1g_11",Py={splash:_R,logo:xR};function fx(){return l.jsxs("div",{className:Py.splash,"data-testid":"splash-screen",children:[l.jsx("img",{src:"/grackle-logo.png",alt:"Grackle",className:Py.logo}),l.jsx(dx,{size:"xl",label:"Loading Grackle",liveRegion:!0})]})}const px=50;function SR(n,s,i,o,c=px){return o?n<c:s-n-i<c}function TR(n,s){const i=s-n;return i>0?i:0}function kR({scrollRef:n,contentLength:s,isReversed:i}){const[o,c]=y.useState(!0),u=y.useRef(0),d=y.useRef(!1),m=y.useRef(0);y.useEffect(()=>{const g=n.current;if(!g)return;let v=!0;const b=()=>{m.current||(m.current=requestAnimationFrame(()=>{m.current=0;const _=SR(g.scrollTop,g.scrollHeight,g.clientHeight,i,px);_!==v&&(v=_,c(_))}))};return g.addEventListener("scroll",b,{passive:!0}),()=>{g.removeEventListener("scroll",b),m.current&&(cancelAnimationFrame(m.current),m.current=0)}},[n,i]),y.useLayoutEffect(()=>{const g=n.current;!g||d.current||(d.current=!0,i?g.scrollTop=0:g.scrollTop=g.scrollHeight,c(!0))},[n,i]),y.useLayoutEffect(()=>{const g=n.current;if(g){if(i&&!o){const v=TR(u.current,g.scrollHeight);v>0&&(g.scrollTop+=v)}o&&(i?g.scrollTo({top:0,behavior:"smooth"}):g.scrollTo({top:g.scrollHeight,behavior:"smooth"})),u.current=g.scrollHeight}},[s,o,i,n]);const h=y.useCallback(()=>{const g=n.current;if(!g)return;const v=i?0:g.scrollHeight;g.scrollTo({top:v,behavior:"smooth"}),c(!0)},[n,i]);return{isAtAnchor:o,scrollToAnchor:h}}const wR="_wrapper_1rtuy_1",NR="_scrollContainer_1rtuy_9",jR="_toolbar_1rtuy_15",CR="_directionToggle_1rtuy_22",ER="_scrollToAnchor_1rtuy_60",AR="_scrollToAnchorBottom_1rtuy_84",DR="_scrollToAnchorTop_1rtuy_88",RR="_eventOverflowWarning_1rtuy_92",ga={wrapper:wR,scrollContainer:NR,toolbar:jR,directionToggle:CR,scrollToAnchor:ER,scrollToAnchorBottom:AR,scrollToAnchorTop:DR,eventOverflowWarning:RR},mx="grackle-stream-direction";function MR(){try{return localStorage.getItem(mx)==="reversed"}catch{return!1}}function OR({eventsDropped:n}){return n<=0?l.jsx(l.Fragment,{}):l.jsxs("div",{className:ga.eventOverflowWarning,role:"alert",children:["⚠"," ",n.toLocaleString()," older event",n===1?"":"s"," were dropped — only the most recent 5,000 are shown. Full history is available in the session log."]})}function am({events:n,eventsDropped:s,emptyState:i}){const o=y.useRef(null),[c,u]=y.useState(MR),d=oR(),m=y.useMemo(()=>c?[...n].reverse():n,[n,c]),{isAtAnchor:h,scrollToAnchor:g}=kR({scrollRef:o,contentLength:n.length,isReversed:c}),v=()=>{const S=!c;u(S);try{localStorage.setItem(mx,S?"reversed":"default")}catch{}},b=d?0:.2,_=c?-8:8;return l.jsxs("div",{className:ga.wrapper,children:[l.jsx("div",{className:ga.toolbar,children:l.jsx("button",{className:ga.directionToggle,onClick:v,title:c?"Showing newest first":"Showing oldest first","aria-label":c?"Switch to newest at bottom":"Switch to newest at top","data-testid":"direction-toggle",children:c?"↓":"↑"})}),l.jsxs("div",{ref:o,className:ga.scrollContainer,"data-testid":"event-stream-scroll",children:[n.length===0&&i,l.jsx(OR,{eventsDropped:s}),l.jsx(ls,{initial:!1,children:m.map((S,T)=>{const N=c?n.length-1-T:T;return l.jsx(Mt.div,{initial:{opacity:0,y:_},animate:{opacity:1,y:0},transition:{duration:b,ease:"easeOut"},children:l.jsx(Oj,{event:S,toolUseCtx:S.toolUseCtx})},`${S.sessionId}-${S.timestamp}-${N}`)})})]}),l.jsx(ls,{children:!h&&l.jsxs(Mt.button,{className:`${ga.scrollToAnchor} ${c?ga.scrollToAnchorTop:ga.scrollToAnchorBottom}`,onClick:g,initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.9},transition:{duration:.15},"aria-label":"Scroll to latest","data-testid":"scroll-to-anchor",children:[c?"↑":"↓"," New events"]})})]})}function im(n){const{value:s,onSave:i,validate:o,fieldId:c,activeFieldId:u,onActivate:d,enterToSave:m=!0,trimOnSave:h=!0}=n,[g,v]=y.useState(""),[b,_]=y.useState(""),S=y.useRef(!1),T=u===c,N=y.useCallback(H=>{v(H),_("")},[]),j=y.useCallback(()=>{_("")},[]),w=y.useCallback(()=>{S.current=!1,d==null||d(null),v(""),_("")},[d]),C=y.useCallback(()=>{const H=h?g.trim():g;if(o){const Z=o(g);if(Z){_(Z);return}}const z=h?s.trim():s;if(H===z){w();return}i(H),w()},[g,s,h,o,i,w]),A=y.useCallback(()=>{S.current=!0,d==null||d(c),v(s),_("")},[c,s,d]),M=y.useCallback(H=>{if(S.current){S.current=!1;return}H.relatedTarget instanceof HTMLElement&&H.relatedTarget.dataset.editAction===c||C()},[c,C]),D=y.useCallback(H=>{H.key==="Escape"?w():H.key==="Enter"&&m&&C()},[w,m,C]),E=(()=>{if(!T)return!1;const H=h?s.trim():s;return(h?g.trim():g)!==H})();return y.useEffect(()=>{!T&&(g!==""||b!=="")&&(v(""),_(""))},[T,g,b]),{isEditing:T,draft:g,error:b,isDirty:E,startEdit:A,cancelEdit:w,save:C,setDraft:N,clearError:j,handleBlur:M,handleKeyDown:D,ignoreInitialBlurRef:S}}const IR="_editFieldWrapper_yuzty_1",BR="_editInput_yuzty_10",LR="_editTextarea_yuzty_42",UR="_editSelect_yuzty_78",zR="_editError_yuzty_111",PR="_editInputInvalid_yuzty_118",VR="_editHint_yuzty_123",HR="_unsavedDot_yuzty_132",GR="_metaValueClickable_yuzty_140",$R="_editButton_yuzty_159",qR="_metaPlaceholder_yuzty_175",FR="_worktreeToggle_yuzty_180",Ye={editFieldWrapper:IR,editInput:BR,editTextarea:LR,editSelect:UR,editError:zR,editInputInvalid:PR,editHint:VR,unsavedDot:HR,metaValueClickable:GR,editButton:$R,metaPlaceholder:qR,worktreeToggle:FR};function Kt(n){const{value:s,onSave:i,validate:o,mode:c="edit",fieldId:u="text",activeFieldId:d,onActivate:m,onChange:h,renderDisplay:g,placeholder:v,maxLength:b,ariaLabel:_,"data-testid":S}=n,T=y.useRef(null),N=im({value:s,onSave:i,validate:o,fieldId:u,activeFieldId:d,onActivate:m,enterToSave:!0,trimOnSave:!0});if(y.useEffect(()=>{if(N.isEditing){const w=window.setTimeout(()=>{var C;(C=T.current)==null||C.focus()},0);return()=>window.clearTimeout(w)}},[N.isEditing]),c==="create"){const w=A=>{h==null||h(A.target.value)},C=o==null?void 0:o(s);return l.jsxs("div",{className:Ye.editFieldWrapper,children:[l.jsx("input",{className:`${Ye.editInput} ${C?Ye.editInputInvalid:""}`,value:s,onChange:w,maxLength:b,placeholder:v,"aria-label":_,"data-testid":S?`${S}-input`:void 0}),C&&l.jsx("span",{className:Ye.editError,"data-testid":"edit-error",children:C})]})}if(N.isEditing)return l.jsxs("div",{className:Ye.editFieldWrapper,children:[l.jsx("input",{ref:T,className:`${Ye.editInput} ${N.error?Ye.editInputInvalid:""}`,value:N.draft,onChange:w=>N.setDraft(w.target.value),onBlur:N.handleBlur,onKeyDown:N.handleKeyDown,maxLength:b,placeholder:v,"aria-label":_,"data-testid":S?`${S}-input`:void 0}),N.isDirty&&l.jsx("span",{className:Ye.unsavedDot,title:"Unsaved changes"}),N.error&&l.jsx("span",{className:Ye.editError,"data-testid":"edit-error",children:N.error}),l.jsx("span",{className:Ye.editHint,children:"Enter to save · Esc to cancel"})]});const j=g==null?void 0:g(s);return l.jsxs("span",{role:"button",tabIndex:0,className:Ye.metaValueClickable,onClick:()=>N.startEdit(),onKeyDown:w=>{(w.key==="Enter"||w.key===" ")&&(w.preventDefault(),N.startEdit())},title:"Click to edit","aria-label":_,"data-testid":S?`${S}-button`:void 0,children:[j!==void 0?j:s?l.jsx("span",{children:s}):l.jsx("span",{className:Ye.metaPlaceholder,children:v||"None"}),l.jsx("span",{className:Ye.editButton,"aria-hidden":"true",children:"✏️"})]})}function op(n){const{value:s,onSave:i,validate:o,mode:c="edit",fieldId:u="textarea",activeFieldId:d,onActivate:m,onChange:h,renderDisplay:g,placeholder:v,ariaLabel:b,"data-testid":_}=n,S=y.useRef(null),T=im({value:s,onSave:i,validate:o,fieldId:u,activeFieldId:d,onActivate:m,enterToSave:!1,trimOnSave:!1});if(y.useEffect(()=>{if(T.isEditing){const j=window.setTimeout(()=>{var w;(w=S.current)==null||w.focus()},0);return()=>window.clearTimeout(j)}},[T.isEditing]),c==="create"){const j=C=>{h==null||h(C.target.value)},w=o==null?void 0:o(s);return l.jsxs("div",{className:Ye.editFieldWrapper,children:[l.jsx("textarea",{className:`${Ye.editTextarea} ${w?Ye.editInputInvalid:""}`,value:s,onChange:j,placeholder:v,"aria-label":b,"data-testid":_?`${_}-input`:void 0}),w&&l.jsx("span",{className:Ye.editError,"data-testid":"edit-error",children:w})]})}if(T.isEditing)return l.jsxs("div",{className:Ye.editFieldWrapper,children:[l.jsx("textarea",{ref:S,className:`${Ye.editTextarea} ${T.error?Ye.editInputInvalid:""}`,value:T.draft,onChange:j=>T.setDraft(j.target.value),onBlur:T.handleBlur,onKeyDown:T.handleKeyDown,title:b,"aria-label":b,"data-testid":_?`${_}-input`:void 0}),T.isDirty&&l.jsx("span",{className:Ye.unsavedDot,title:"Unsaved changes"}),T.error&&l.jsx("span",{className:Ye.editError,"data-testid":"edit-error",children:T.error}),l.jsx("span",{className:Ye.editHint,children:"Tab to save · Esc to cancel"})]});const N=g==null?void 0:g(s);return l.jsxs("span",{role:"button",tabIndex:0,className:Ye.metaValueClickable,onClick:()=>T.startEdit(),onKeyDown:j=>{(j.key==="Enter"||j.key===" ")&&(j.preventDefault(),T.startEdit())},title:"Click to edit","aria-label":b,"data-testid":_?`${_}-button`:void 0,children:[N!==void 0?N:s?l.jsx("span",{children:s}):l.jsx("span",{className:Ye.metaPlaceholder,children:v||"None"}),l.jsx("span",{className:Ye.editButton,"aria-hidden":"true",children:"✏️"})]})}function Ec(n){var A;const{value:s,onSave:i,mode:o="edit",options:c,fieldId:u="select",activeFieldId:d,onActivate:m,onChange:h,renderDisplay:g,placeholder:v,ariaLabel:b,"data-testid":_}=n,S=y.useRef(null),T=im({value:s,onSave:i,fieldId:u,activeFieldId:d,onActivate:m,enterToSave:!1,trimOnSave:!1});y.useEffect(()=>{if(T.isEditing){const M=window.setTimeout(()=>{var D;(D=S.current)==null||D.focus()},0);return()=>window.clearTimeout(M)}},[T.isEditing]);const N=y.useCallback(M=>{const D=M.target.value;T.ignoreInitialBlurRef.current=!1,D!==s&&i(D),T.cancelEdit()},[s,i,T]),j=y.useCallback(M=>{if(T.ignoreInitialBlurRef.current){T.ignoreInitialBlurRef.current=!1;return}M.relatedTarget instanceof HTMLElement&&M.relatedTarget.dataset.editAction===u||T.cancelEdit()},[u,T]);if(o==="create")return l.jsx("select",{className:Ye.editSelect,value:s,onChange:M=>h==null?void 0:h(M.target.value),"aria-label":b,"data-testid":_?`${_}-select`:void 0,children:c.map(M=>l.jsx("option",{value:M.value,children:M.label},M.value))});if(T.isEditing)return l.jsx("select",{ref:S,className:Ye.editSelect,value:T.draft,onChange:N,onBlur:j,title:b,"aria-label":b,"data-testid":_?`${_}-select`:void 0,children:c.map(M=>l.jsx("option",{value:M.value,children:M.label},M.value))});const w=g==null?void 0:g(s),C=(A=c.find(M=>M.value===s))==null?void 0:A.label;return l.jsxs("button",{type:"button",className:Ye.metaValueClickable,onClick:()=>T.startEdit(),title:"Click to change","aria-label":b,"data-testid":_?`${_}-button`:void 0,children:[w!==void 0?w:C?l.jsx("span",{children:C}):l.jsx("span",{className:Ye.metaPlaceholder,children:v||"None"}),l.jsx("span",{className:Ye.editButton,"aria-hidden":"true",children:"✏️"})]})}function ZR(n){const{checked:s,onChange:i,label:o,ariaLabel:c,"data-testid":u}=n;return l.jsxs("label",{className:Ye.worktreeToggle,"data-testid":u,children:[l.jsx("input",{type:"checkbox",checked:s,onChange:d=>i(d.target.checked),"aria-label":c}),l.jsx("span",{children:o})]})}const KR="_envRow_1e1r5_1",YR="_envDot_1e1r5_7",JR="_envDotGreen_1e1r5_14",WR="_envDotYellow_1e1r5_18",XR="_envDotRed_1e1r5_22",QR="_envDotGray_1e1r5_26",Wi={envRow:KR,envDot:YR,envDotGreen:JR,envDotYellow:WR,envDotRed:XR,envDotGray:QR};function eM(n){const s=n.toLowerCase();return s==="ready"||s==="running"||s==="available"||s==="connected"?Wi.envDotGreen:s==="provisioning"||s==="starting"||s==="pending"||s==="connecting"?Wi.envDotYellow:s==="error"||s==="failed"||s==="disconnected"?Wi.envDotRed:Wi.envDotGray}function tM(n){const{value:s,onSave:i,environments:o,allowNone:c=!1,fieldId:u="environment",activeFieldId:d,onActivate:m,placeholder:h="No environment",ariaLabel:g="Environment","data-testid":v}=n,b=o.find(T=>T.id===s),_=[...c?[{value:"",label:"None"}]:[],...o.map(T=>({value:T.id,label:T.displayName}))],S=()=>{if(b)return l.jsxs("span",{className:Wi.envRow,children:[l.jsx("span",{className:`${Wi.envDot} ${eM(b.status)}`}),b.displayName]})};return l.jsx(Ec,{value:s,onSave:i,options:_,fieldId:u,activeFieldId:d,onActivate:m,renderDisplay:S,placeholder:h,ariaLabel:g,"data-testid":v})}const nM="_nav_1snmp_1",sM="_searchForm_1snmp_8",aM="_searchInput_1snmp_15",iM="_searchButton_1snmp_33",oM="_clearButton_1snmp_68",rM="_workspaceSelect_1snmp_85",lM="_listHeader_1snmp_99",cM="_nodeList_1snmp_108",uM="_nodeItem_1snmp_116",dM="_indicator_1snmp_129",fM="_label_1snmp_136",pM="_badge_1snmp_145",On={nav:nM,searchForm:sM,searchInput:aM,searchButton:iM,clearButton:oM,workspaceSelect:rM,listHeader:lM,nodeList:cM,nodeItem:uM,indicator:dM,label:fM,badge:pM};function mM({nodes:n,workspaces:s,loading:i,searchQuery:o,onSearch:c,onClearSearch:u,onSelectNode:d,onWorkspaceChange:m}){const[h,g]=y.useState(""),v=y.useCallback(T=>{T.preventDefault(),h.trim()&&c(h.trim())},[h,c]),b=y.useCallback(()=>{g(""),u()},[u]),_=y.useCallback(T=>{d(T)},[d]),S=y.useCallback(T=>{g(""),m(T)},[m]);return l.jsxs("div",{className:On.nav,"data-testid":"knowledge-nav",children:[l.jsxs("form",{className:On.searchForm,onSubmit:v,children:[l.jsx("input",{className:On.searchInput,type:"text",placeholder:"Search...",value:h,onChange:T=>{g(T.target.value)},"data-testid":"knowledge-search-input"}),l.jsx("button",{type:"submit",className:On.searchButton,disabled:i,children:"Go"})]}),o&&l.jsx("button",{type:"button",className:On.clearButton,onClick:b,children:"Clear search"}),l.jsxs("select",{className:On.workspaceSelect,onChange:T=>{S(T.target.value)},"data-testid":"knowledge-workspace-filter",children:[l.jsx("option",{value:"",children:"All workspaces"}),s.map(T=>l.jsx("option",{value:T.id,children:T.name},T.id))]}),l.jsxs("div",{className:On.listHeader,children:["Nodes (",n.length,")"]}),l.jsx("ul",{className:On.nodeList,children:n.map(T=>l.jsxs("li",{className:On.nodeItem,onClick:()=>{_(T.id)},onKeyDown:N=>{(N.key==="Enter"||N.key===" ")&&(N.preventDefault(),_(T.id))},role:"button",tabIndex:0,children:[l.jsx("span",{className:On.indicator,style:{backgroundColor:T.kind==="reference"?"#4A9EFF":T.category==="decision"?"#22C55E":T.category==="concept"?"#A855F7":T.category==="snippet"?"#6B7280":"#EAB308"}}),l.jsx("span",{className:On.label,children:T.label}),l.jsx("span",{className:On.badge,children:T.kind==="reference"?T.sourceType:T.category})]},T.id))})]})}const hM="_container_1mq5u_1",gM="_hamburger_1mq5u_33",vM="_brand_1mq5u_49",yM="_brandLogo_1mq5u_68",bM="_info_1mq5u_75",_M="_connectionLabel_1mq5u_90",xM="_connectionDot_1mq5u_103",SM="_connected_1mq5u_106",TM="_disconnected_1mq5u_110",Es={container:hM,hamburger:gM,brand:vM,brandLogo:yM,info:bM,connectionLabel:_M,connectionDot:xM,connected:SM,disconnected:TM};function kM({connected:n,environments:s,sessions:i,onToggleSidebar:o,sidebarOpen:c}){const u=xt(),d=s.length,m=s.filter(g=>g.status==="connected").length,h=i.filter(g=>["running","idle"].includes(g.status)).length;return l.jsxs("div",{className:Es.container,children:[o&&l.jsx("button",{type:"button",className:Es.hamburger,onClick:o,"aria-label":"Toggle sidebar","aria-expanded":c,children:"☰"}),l.jsxs("button",{type:"button",className:Es.brand,onClick:()=>u(Wa),title:"Home",children:[l.jsx("img",{src:"/icon-192x192.png",alt:"",className:Es.brandLogo,"aria-hidden":"true","data-testid":"statusbar-logo"}),"Grackle"]}),l.jsxs("div",{className:Es.info,children:[l.jsxs("span",{"aria-label":n?"Connected":"Disconnected",children:[l.jsx("span",{className:`${Es.connectionDot} ${n?Es.connected:Es.disconnected}`,"aria-hidden":"true",children:"●"})," ",l.jsx("span",{className:Es.connectionLabel,"aria-hidden":"true",children:n?"Connected":"Disconnected"})]}),l.jsxs("span",{children:[m,"/",d," env",d!==1?"s":""]}),l.jsxs("span",{children:[h," active"]})]})]})}const wM="_nav_13gkc_1",NM="_tab_13gkc_35",jM="_tabIcon_13gkc_68",CM="_tabLabel_13gkc_79",EM="_tabActive_13gkc_84",lr={nav:wM,tab:NM,tabIcon:jM,tabLabel:CM,tabActive:EM},$a=[{view:"dashboard",label:"Dashboard",icon:"🏠",route:Wa,testId:"sidebar-tab-dashboard"},{view:"chat",label:"Chat",icon:"💬",route:K2,testId:"sidebar-tab-chat"},{view:"tasks",label:"Tasks",icon:"📋",route:Y2,testId:"sidebar-tab-tasks"},{view:"environments",label:"Environments",icon:"🖥️",route:eo,testId:"sidebar-tab-environments"},{view:"knowledge",label:"Knowledge",icon:"🧠",route:Mb,testId:"sidebar-tab-knowledge"},{view:"settings",label:"Settings",icon:"⚙️",route:$2,testId:"sidebar-tab-settings"}];function AM(n){return n===Wa||n==="/"?"dashboard":n.startsWith("/chat")||n.startsWith("/sessions")?"chat":n.startsWith("/workspaces")||n.startsWith("/environments")?"environments":n.startsWith(Mb)?"knowledge":n.startsWith(Xi)?"settings":"tasks"}function DM(){const n=Bt(),s=xt(),i=y.useRef(null),o=AM(n.pathname),c=y.useCallback(d=>{s(d.route)},[s]),u=y.useCallback(d=>{var b,_;const m=(b=i.current)==null?void 0:b.querySelectorAll('[role="tab"]');if(!m)return;const h=Array.from(m).findIndex(S=>S===document.activeElement),g=h>=0?h:$a.findIndex(S=>S.view===o);let v=g;if(d.key==="ArrowRight"||d.key==="j"||d.key==="J")d.preventDefault(),v=(g+1)%$a.length;else if(d.key==="ArrowLeft"||d.key==="k"||d.key==="K")d.preventDefault(),v=(g-1+$a.length)%$a.length;else if(d.key==="Home")d.preventDefault(),v=0;else if(d.key==="End")d.preventDefault(),v=$a.length-1;else return;s($a[v].route),(_=m[v])==null||_.focus()},[o,s]);return l.jsx("nav",{className:lr.nav,ref:i,role:"tablist","aria-orientation":"horizontal","aria-label":"App navigation",onKeyDown:u,"data-testid":"sidebar-nav",children:$a.map(d=>{const m=d.view===o;return l.jsxs("button",{role:"tab",type:"button","aria-selected":m,tabIndex:m?0:-1,className:`${lr.tab} ${m?lr.tabActive:""}`,onClick:()=>c(d),"data-testid":d.testId,title:d.label,"aria-label":d.label,children:[l.jsx("span",{className:lr.tabIcon,"aria-hidden":"true",children:d.icon}),l.jsx("span",{className:lr.tabLabel,children:d.label})]},d.view)})})}const RM="_container_pi6ii_1",MM="_content_pi6ii_66",Vy={container:RM,content:MM},OM=320,hx=220,gx=600,vx="grackle-sidebar-width";function IM(){try{const n=localStorage.getItem(vx);if(n!==null){const s=Number(n);if(Number.isFinite(s)&&s>=hx&&s<=gx)return s}}catch{}return OM}function BM(n){try{localStorage.setItem(vx,String(n))}catch{}}function LM({content:n}){const[s]=y.useState(IM),i=y.useRef(null);if(y.useEffect(()=>{const o=i.current;if(!o)return;const c=new ResizeObserver(u=>{for(const d of u){const m=d.borderBoxSize[0];if(m){const h=Math.round(m.inlineSize);h>=hx&&h<=gx&&BM(h)}}});return c.observe(o),()=>{c.disconnect()}},[]),n!==void 0)return l.jsx("div",{className:Vy.container,ref:i,"data-testid":"sidebar",style:{width:s},children:l.jsx("div",{className:Vy.content,children:n})})}const UM="_bar_tnfsh_1",zM="_btnPrimary_tnfsh_32",PM="_statusText_tnfsh_85",VM="_statusCompleted_tnfsh_90",HM="_statusFailed_tnfsh_94",GM="_statusBlocked_tnfsh_98",$M="_hintText_tnfsh_103",ht={bar:UM,btnPrimary:zM,statusText:PM,statusCompleted:VM,statusFailed:HM,statusBlocked:GM,hintText:$M};function qM({sessions:n,tasks:s,environments:i}){const o=xt(),c=Bt(),u=Rt("/sessions/:sessionId"),d=Rt("/tasks/:taskId"),m=Rt("/tasks/:taskId/stream"),h=Rt("/tasks/:taskId/findings"),g=Rt("/tasks/:taskId/edit"),v=Rt("/environments/:environmentId/workspaces/:workspaceId/tasks/:taskId"),b=Rt("/environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/stream"),_=Rt("/environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/findings"),S=Rt("/environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/edit"),T=Rt("/sessions/new"),N=Rt("/environments/:environmentId/workspaces/:workspaceId"),j=Rt("/tasks/new"),w=Rt("/chat"),C=Rt("/"),A=Rt("/settings/*"),M=u==null?void 0:u.params.sessionId,D=(d==null?void 0:d.params.taskId)??(m==null?void 0:m.params.taskId)??(h==null?void 0:h.params.taskId)??(v==null?void 0:v.params.taskId)??(b==null?void 0:b.params.taskId)??(_==null?void 0:_.params.taskId)??(S==null?void 0:S.params.taskId),E=v??b??_??S,H=(E==null?void 0:E.params.environmentId)??(N==null?void 0:N.params.environmentId),z=c.pathname.startsWith("/environments")&&!N&&!E,Z=!!w,F=!!T,Q=!!N&&!v&&!b&&!_&&!S,ae=!!j;if(!!C&&!F&&!Q&&!ae||!!A||(!!g||!!S)||ae||z||F)return l.jsx(l.Fragment,{});if(Z)return i.find(q=>q.adapterType==="local"&&q.status==="connected")?l.jsx(l.Fragment,{}):l.jsx("div",{className:ht.bar,children:l.jsx("span",{className:ht.hintText,children:"Add a local environment to start chatting"})});if(Q)return l.jsx("div",{className:ht.bar,children:l.jsx("span",{className:ht.hintText,children:"Select a task or click + to create one"})});if(D){const B=s.find(re=>re.id===D);if(!B)return l.jsx("div",{className:ht.bar,children:l.jsx("span",{className:ht.hintText,children:"Loading..."})});const q=new Map(s.map(re=>[re.id,re])),te=B.dependsOn.some(re=>{const de=q.get(re);return de!==void 0&&de.status!=="complete"});if(B.status==="not_started"){const re=te?B.dependsOn.map(de=>q.get(de)).filter(de=>de&&de.status!=="complete").map(de=>de.title):[];return l.jsx("div",{className:ht.bar,children:te?l.jsxs("span",{className:ht.statusBlocked,children:["Blocked by: ",re.join(", ")]}):l.jsx("span",{className:ht.hintText,children:"Use the buttons above to start or manage this task"})})}if(B.status==="working"||B.status==="paused"){const re=B.latestSessionId||void 0,de=re?n.find(we=>we.id===re):void 0;return de&&de.status!=="stopped"?l.jsx(l.Fragment,{}):l.jsx("div",{className:ht.bar,children:l.jsx("span",{className:ht.hintText,children:"Waiting for agent..."})})}if(B.status==="complete")return l.jsxs("div",{className:ht.bar,children:[l.jsx("span",{className:`${ht.statusText} ${ht.statusCompleted}`,children:"Task completed"}),l.jsx("button",{onClick:()=>o(ni(B.workspaceId,void 0,H)),className:ht.btnPrimary,children:"+ New Task"})]});if(B.status==="failed")return l.jsx("div",{className:ht.bar,children:l.jsx("span",{className:`${ht.statusText} ${ht.statusFailed}`,children:"Task failed"})})}if(M){const B=n.find(re=>re.id===M),q=(B==null?void 0:B.status)==="stopped";if(B!==void 0&&!q)return l.jsx(l.Fragment,{});if(q)return l.jsxs("div",{className:ht.bar,children:[l.jsxs("span",{className:`${ht.statusText} ${ht.hintText}`,children:["Session ",B.endReason||B.status]}),l.jsx("button",{onClick:()=>o(Ab(B.environmentId)),className:ht.btnPrimary,children:"+ New Chat"})]})}return l.jsx("div",{className:ht.bar,children:l.jsx("span",{className:ht.hintText,children:"Loading..."})})}const FM="_nav_14i94_1",ZM="_tab_14i94_24",KM="_tabActive_14i94_62",YM="_tabLabel_14i94_75",JM="_statusDot_14i94_81",WM="_pulse_14i94_87",XM="_addButton_14i94_99",QM="_empty_14i94_132",ua={nav:FM,tab:ZM,tabActive:KM,tabLabel:YM,statusDot:JM,pulse:WM,addButton:XM,empty:QM},e3={connected:"var(--accent-green)",sleeping:"var(--accent-yellow)",error:"var(--accent-red)",disconnected:"var(--text-tertiary)",connecting:"var(--accent-blue)"};function t3({environments:n}){const s=xt(),i=y.useRef(null),o=Rt("/environments/:environmentId"),c=Rt("/environments/:environmentId/edit"),u=Rt("/environments/:environmentId/workspaces/:workspaceId"),d=Rt("/environments/:environmentId/workspaces/:workspaceId/*"),m=(o==null?void 0:o.params.environmentId)??(c==null?void 0:c.params.environmentId)??(u==null?void 0:u.params.environmentId)??(d==null?void 0:d.params.environmentId),h=m==="new"?void 0:m,g=y.useCallback(_=>{s(to(_))},[s]),v=y.useCallback(_=>{var w;const S=(w=i.current)==null?void 0:w.querySelectorAll('[role="tab"]');if(!S||S.length===0)return;const T=Array.from(S).findIndex(C=>C===document.activeElement),N=T>=0?T:n.findIndex(C=>C.id===h);let j=N;if(_.key==="ArrowDown"||_.key==="j"||_.key==="J")_.preventDefault(),j=(N+1)%S.length;else if(_.key==="ArrowUp"||_.key==="k"||_.key==="K")_.preventDefault(),j=(N-1+S.length)%S.length;else if(_.key==="Home")_.preventDefault(),j=0;else if(_.key==="End")_.preventDefault(),j=S.length-1;else return;j<n.length&&s(to(n[j].id)),S[j].focus()},[h,n,s]),b=h??(n.length>0?n[0].id:void 0);return l.jsxs("div",{className:ua.nav,"data-testid":"environment-nav",children:[l.jsx("nav",{ref:i,role:"tablist","aria-orientation":"vertical","aria-label":"Environments",onKeyDown:v,children:n.map(_=>{const S=_.id===h,T=_.id===b,N=e3[_.status]||"var(--text-tertiary)",j=_.status==="connected";return l.jsxs("button",{role:"tab",type:"button","aria-selected":S,tabIndex:T?0:-1,className:`${ua.tab} ${S?ua.tabActive:""}`,onClick:()=>g(_.id),"data-testid":"env-nav-item",children:[l.jsx("span",{className:`${ua.statusDot} ${j?ua.pulse:""}`,style:{color:N},children:"●"}),l.jsx("span",{className:ua.tabLabel,title:_.displayName||_.id,children:_.displayName||_.id})]},_.id)})}),l.jsx("button",{type:"button",className:ua.addButton,onClick:()=>s(H2),title:"Add environment","data-testid":"env-nav-add",children:"+ Add Environment"}),n.length===0&&l.jsx("div",{className:ua.empty,children:"No environments yet."})]})}function n3(n){if(n.length===0)return[];const s=[...n].sort((o,c)=>o[0]-c[0]),i=[[s[0][0],s[0][1]]];for(let o=1;o<s.length;o++){const c=i[i.length-1],[u,d]=s[o];u<=c[1]+1?c[1]=Math.max(c[1],d):i.push([u,d])}return i}function yx({text:n,indices:s,highlightClass:i}){if(!s||s.length===0)return l.jsx(l.Fragment,{children:n});const o=n3(s),c=[];let u=0;for(const[d,m]of o)d>u&&c.push(l.jsx("span",{children:n.slice(u,d)},`p${u}`)),c.push(l.jsx("mark",{className:i,children:n.slice(d,m+1)},`m${d}`)),u=m+1;return u<n.length&&c.push(l.jsx("span",{children:n.slice(u)},`p${u}`)),l.jsx(l.Fragment,{children:c})}function s3(n){const s=new Map(n.map(o=>[o.id,{...o,children:[]}])),i=[];for(const o of s.values())o.parentTaskId&&s.has(o.parentTaskId)?s.get(o.parentTaskId).children.push(o):i.push(o);for(const o of s.values())o.children.sort((c,u)=>c.sortOrder-u.sortOrder);return i.sort((o,c)=>o.sortOrder-c.sortOrder)}function a3(n,s){const i=new Map;for(const u of n){const m=u.dependsOn.length>0&&u.dependsOn.some(g=>s.get(g)!=="complete")?"blocked":u.status,h=i.get(m);h?h.push(u):i.set(m,[u])}const o=[],c=new Set;for(const u of FT){c.add(u);const d=i.get(u);if(d&&d.length>0){d.sort((h,g)=>h.sortOrder-g.sortOrder);const m=va(u);o.push({status:u,label:m.label,style:m,tasks:d})}}for(const[u,d]of i)if(!c.has(u)&&d.length>0){d.sort((h,g)=>h.sortOrder-g.sortOrder);const m=va(u);o.push({status:u,label:m.label,style:m,tasks:d})}return o}const i3="_container_z4i38_1",o3="_header_z4i38_5",r3="_headerActions_z4i38_17",l3="_searchInput_z4i38_23",c3="_searchHighlight_z4i38_56",u3="_groupToggle_z4i38_62",d3="_groupToggleActive_z4i38_89",f3="_addButton_z4i38_93",p3="_taskRow_z4i38_120",m3="_selected_z4i38_140",h3="_expandArrow_z4i38_150",g3="_expanded_z4i38_157",v3="_leafSpacer_z4i38_161",y3="_taskStatusIcon_z4i38_166",b3="_taskTitle_z4i38_170",_3="_workspaceBadge_z4i38_177",x3="_childCountBadge_z4i38_195",S3="_dependencyBadge_z4i38_208",T3="_blockedBadge_z4i38_220",k3="_addChildButton_z4i38_225",w3="_emptyState_z4i38_268",N3="_statusGroupHeader_z4i38_275",j3="_statusGroupIcon_z4i38_294",C3="_statusGroupLabel_z4i38_298",E3="_statusGroupCount_z4i38_303",Ge={container:i3,header:o3,headerActions:r3,searchInput:l3,searchHighlight:c3,groupToggle:u3,groupToggleActive:d3,addButton:f3,taskRow:p3,selected:m3,expandArrow:h3,expanded:g3,leafSpacer:v3,taskStatusIcon:y3,taskTitle:b3,workspaceBadge:_3,childCountBadge:x3,dependencyBadge:S3,blockedBadge:T3,addChildButton:k3,emptyState:w3,statusGroupHeader:N3,statusGroupIcon:j3,statusGroupLabel:C3,statusGroupCount:E3},A3=[{name:"title",weight:2},{name:"description",weight:1}],bx=16,D3=16,_x="grackle-task-group-by-status";function Hy(){try{return localStorage.getItem(_x)==="true"}catch{return!1}}function R3(n){try{localStorage.setItem(_x,String(n))}catch{}}function M3({group:n,isExpanded:s,onToggle:i,selectedTaskId:o,navigate:c,titleHighlights:u,workspaceNames:d}){return l.jsxs("div",{"data-testid":`status-group-${n.status}`,children:[l.jsxs("div",{className:Ge.statusGroupHeader,role:"button",tabIndex:0,"aria-expanded":s,onClick:i,onKeyDown:m=>{(m.key==="Enter"||m.key===" ")&&(m.preventDefault(),i())},children:[l.jsx("span",{className:`${Ge.expandArrow} ${s?Ge.expanded:""}`,children:"▸"}),l.jsx("span",{className:Ge.statusGroupIcon,style:{color:n.style.color},children:n.style.icon}),l.jsx("span",{className:Ge.statusGroupLabel,children:n.label}),l.jsx("span",{className:Ge.statusGroupCount,children:n.tasks.length})]}),l.jsx(ls,{children:s&&l.jsx(Mt.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.2},style:{overflow:"hidden"},children:n.tasks.map(m=>{const h=va(m.status),g=o===m.id,v=m.parentTaskId||!m.workspaceId?void 0:d.get(m.workspaceId);return l.jsxs("div",{onClick:()=>c(rs(m.id)),className:`${Ge.taskRow} ${g?Ge.selected:""}`,style:{"--task-indent":`${bx}px`},"data-task-id":m.id,children:[l.jsx("span",{className:Ge.leafSpacer}),l.jsx("span",{className:Ge.taskStatusIcon,style:{color:h.color},children:h.icon}),l.jsx("span",{className:Ge.taskTitle,title:m.title,children:l.jsx(yx,{text:m.title,indices:u.get(m.id),highlightClass:Ge.searchHighlight})}),v&&l.jsx("span",{className:Ge.workspaceBadge,title:v,children:v})]},m.id)})})})]})}function xx({node:n,depth:s,expandedTasks:i,toggleTask:o,selectedTaskId:c,navigate:u,taskStatusById:d,titleHighlights:m,workspaceNames:h}){const g=va(n.status),v=n.dependsOn.length>0&&n.dependsOn.some(w=>d.get(w)!=="complete"),b=i.has(n.id),_=n.children.length>0,S=c===n.id,T=bx+s*D3,j=s===0&&!n.parentTaskId&&n.workspaceId?h.get(n.workspaceId):void 0;return l.jsxs(l.Fragment,{children:[l.jsxs("div",{onClick:()=>u(rs(n.id)),className:`${Ge.taskRow} ${S?Ge.selected:""}`,style:{"--task-indent":`${T}px`},"data-task-id":n.id,children:[_&&l.jsx("span",{className:`${Ge.expandArrow} ${b?Ge.expanded:""}`,role:"button",tabIndex:0,"aria-label":b?"Collapse task":"Expand task",onClick:w=>{w.stopPropagation(),o(n.id)},onKeyDown:w=>{(w.key==="Enter"||w.key===" ")&&(w.preventDefault(),w.stopPropagation(),o(n.id))},children:"▸"}),!_&&l.jsx("span",{className:Ge.leafSpacer}),l.jsx("span",{className:Ge.taskStatusIcon,style:{color:g.color},children:g.icon}),l.jsx("span",{className:Ge.taskTitle,title:n.title,children:l.jsx(yx,{text:n.title,indices:m.get(n.id),highlightClass:Ge.searchHighlight})}),j&&l.jsx("span",{className:Ge.workspaceBadge,title:j,children:j}),_&&l.jsxs("span",{className:Ge.childCountBadge,children:[n.children.filter(w=>w.status==="complete").length,"/",n.children.length]}),n.dependsOn.length>0&&l.jsx("span",{className:`${Ge.dependencyBadge} ${v?Ge.blockedBadge:""}`,title:`Depends on: ${n.dependsOn.join(", ")}`,children:v?"blocked":"dep"}),s<lT&&l.jsx("button",{onClick:w=>{w.stopPropagation(),u(ni(n.workspaceId,n.id))},title:"Add child task","aria-label":"Add child task",className:Ge.addChildButton,children:"+"})]}),l.jsx(ls,{children:_&&b&&l.jsx(Mt.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.15},style:{overflow:"hidden"},children:n.children.map(w=>l.jsx(xx,{node:w,depth:s+1,expandedTasks:i,toggleTask:o,selectedTaskId:c,navigate:u,taskStatusById:d,titleHighlights:m,workspaceNames:h},w.id))})})]})}function O3({workspaces:n,tasks:s}){const i=xt(),[o,c]=y.useState(new Set),[u,d]=y.useState(new Set),[m,h]=y.useState(Hy),[g,v]=y.useState(Hy),[b,_]=y.useState(new Map),S=Rt("/tasks/:taskId/*"),T=(S==null?void 0:S.params.taskId)!=="new"?S==null?void 0:S.params.taskId:void 0,N=y.useMemo(()=>new Map(s.map(oe=>[oe.id,oe.status])),[s]),j=y.useMemo(()=>new Map(n.map(oe=>[oe.id,oe.name])),[n]),w=()=>{const oe=!m;R3(oe),h(oe),oe&&(v(!0),_(new Map))},C=oe=>{_(X=>{const B=new Map(X),q=B.has(oe)?B.get(oe):g;return B.set(oe,!q),B})},A=oe=>b.has(oe)?b.get(oe):g,M=oe=>{c(X=>{const B=new Set(X);return B.has(oe)?(B.delete(oe),d(q=>new Set(q).add(oe))):(B.add(oe),d(q=>{const te=new Set(q);return te.delete(oe),te})),B})};y.useEffect(()=>{const oe=new Set(s.filter(X=>X.parentTaskId).map(X=>X.parentTaskId));oe.size>0&&c(X=>{const B=new Set(X);for(const q of oe)u.has(q)||B.add(q);return B})},[s,u]);const[D,E]=y.useState(""),{directMatchTaskIds:H,treeMatchTaskIds:z,titleHighlights:Z}=y.useMemo(()=>{if(!D.trim())return{directMatchTaskIds:null,treeMatchTaskIds:null,titleHighlights:new Map};const oe=rT(s,D,A3),X=new Set(oe.map(re=>re.item.id)),B=new Map;for(const re of oe){const de=re.matches.find($e=>$e.key==="title");de&&B.set(re.item.id,de.indices)}const q=new Set(X),te=new Map(s.map(re=>[re.id,re]));for(const re of[...X]){let de=te.get(re);for(;de!=null&&de.parentTaskId;)q.add(de.parentTaskId),de=te.get(de.parentTaskId)}return{directMatchTaskIds:X,treeMatchTaskIds:q,titleHighlights:B}},[D,s]),F=H!==null,Q=F?m?H:z:null,ae=Q?s.filter(oe=>Q.has(oe.id)):s,pe=m?[]:s3(ae);return l.jsxs("div",{className:Ge.container,children:[l.jsxs("div",{className:Ge.header,children:[l.jsx("span",{children:"Tasks"}),l.jsxs("div",{className:Ge.headerActions,children:[l.jsx("button",{className:`${Ge.groupToggle} ${m?Ge.groupToggleActive:""}`,onClick:w,"aria-label":m?"Switch to tree view":"Group tasks by status","aria-pressed":m,title:m?"Switch to tree view":"Group tasks by status","data-testid":"task-group-by-status-toggle",children:"≡"}),l.jsx("button",{className:Ge.addButton,onClick:()=>i(ni()),"aria-label":"New task",title:"New task","data-testid":"new-task-button",children:"+"})]})]}),s.length>0&&l.jsx("input",{type:"text",value:D,onChange:oe=>E(oe.target.value),placeholder:"Filter...","aria-label":"Filter tasks",className:Ge.searchInput,"data-testid":"sidebar-search"}),m?a3(ae,N).map(oe=>l.jsx(M3,{group:oe,isExpanded:A(oe.status),onToggle:()=>C(oe.status),selectedTaskId:T,navigate:i,titleHighlights:Z,workspaceNames:j},oe.status)):pe.map(oe=>l.jsx(xx,{node:oe,depth:0,expandedTasks:o,toggleTask:M,selectedTaskId:T,navigate:i,taskStatusById:N,titleHighlights:Z,workspaceNames:j},oe.id)),ae.length===0&&!F&&l.jsx("div",{className:Ge.emptyState,children:"No tasks yet. Click + to create one."}),ae.length===0&&F&&l.jsx("div",{className:Ge.emptyState,children:"No matching tasks"})]})}const I3="_toast_da8ll_1",B3="_success_da8ll_18",L3="_icon_da8ll_22",U3="_error_da8ll_25",z3="_warning_da8ll_32",P3="_info_da8ll_38",V3="_message_da8ll_53",H3="_close_da8ll_60",cr={toast:I3,success:B3,icon:L3,error:U3,warning:z3,info:P3,message:V3,close:H3},G3={success:"✓",error:"✕",warning:"⚠",info:"ℹ"};function $3({toast:n,onDismiss:s}){return y.useEffect(()=>{const i=setTimeout(()=>s(n.id),n.duration);return()=>clearTimeout(i)},[n.id,n.duration,s]),l.jsxs(Mt.div,{className:`${cr.toast} ${cr[n.variant]}`,role:"status",initial:{opacity:0,y:-16,scale:.94},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:-8,scale:.94},transition:{duration:.2,ease:"easeOut"},layout:!0,children:[l.jsx("span",{className:cr.icon,"aria-hidden":"true",children:G3[n.variant]}),l.jsx("span",{className:cr.message,children:n.message}),l.jsx("button",{type:"button",className:cr.close,onClick:()=>s(n.id),"aria-label":"Dismiss notification",children:"×"})]})}const q3="_container_qqse2_1",F3={container:q3};function Z3({toasts:n,onDismiss:s}){return l.jsx("div",{className:F3.container,"data-testid":"toast-container",children:l.jsx(ls,{children:n.map(i=>l.jsx($3,{toast:i,onDismiss:s},i.id))})})}const K3="_callout_1jaue_1",Y3="_success_1jaue_11",J3="_icon_1jaue_15",W3="_error_1jaue_18",X3="_warning_1jaue_25",Q3="_info_1jaue_32",e6="_content_1jaue_48",t6="_close_1jaue_53",ur={callout:K3,success:Y3,icon:J3,error:W3,warning:X3,info:Q3,content:e6,close:t6},n6={success:"✓",error:"✕",warning:"⚠",info:"ℹ"};function s6({variant:n="info",children:s,dismissible:i=!1,className:o}){const[c,u]=y.useState(!1);return l.jsx(l.Fragment,{children:!c&&l.jsxs("div",{className:[ur.callout,ur[n],o].filter(Boolean).join(" "),role:n==="error"||n==="warning"?"alert":"status",children:[l.jsx("span",{className:ur.icon,"aria-hidden":"true",children:n6[n]}),l.jsx("span",{className:ur.content,children:s}),i&&l.jsx("button",{type:"button",className:ur.close,onClick:()=>u(!0),"aria-label":"Dismiss",children:"×"})]})})}function a6({currentVersion:n,latestVersion:s,updateAvailable:i,isDocker:o}){if(!i)return l.jsx(l.Fragment,{});const c=o?"docker pull ghcr.io/nick-pape/grackle:latest && docker restart grackle":`npm install -g @grackle-ai/cli@${s}`;return l.jsx("div",{"data-testid":"update-banner",children:l.jsxs(s6,{variant:"info",dismissible:!0,children:[l.jsxs("strong",{children:["Grackle v",s]})," is available (you have v",n,")."," ","Run: ",l.jsx("code",{children:c})]})})}const i6="_container_1pqxm_1",o6="_emptyState_1pqxm_8",r6="_card_1pqxm_14",l6="_cardHeader_1pqxm_34",c6="_categoryBadge_1pqxm_46",u6="_findingTitle_1pqxm_54",d6="_findingDate_1pqxm_60",f6="_findingContent_1pqxm_72",p6="_tags_1pqxm_78",m6="_tag_1pqxm_78",ns={container:i6,emptyState:o6,card:r6,cardHeader:l6,categoryBadge:c6,findingTitle:u6,findingDate:d6,findingContent:f6,tags:p6,tag:m6};function h6(n){const s=new Date(n),i=new Date,o=i.getTime()-s.getTime(),c=Math.floor(o/1e3),u=Math.floor(c/60),d=Math.floor(u/60),m=Math.floor(d/24);if(c<60)return"just now";if(u<60)return`${u}m ago`;if(d<24)return`${d}h ago`;if(m===1)return"yesterday";if(m<7)return`${m} days ago`;const h=s.getFullYear()===i.getFullYear(),g=s.toLocaleString("en-US",{month:"short"}),v=s.getDate();return h?`${g} ${v}`:`${g} ${v} ${s.getFullYear()}`}const Gy={architecture:{text:"var(--accent-blue)",bg:"var(--accent-blue-dim)"},api:{text:"var(--accent-green)",bg:"var(--accent-green-dim)"},bug:{text:"var(--accent-red)",bg:"var(--accent-red-dim)"},decision:{text:"var(--accent-yellow)",bg:"var(--accent-yellow-dim)"},dependency:{text:"var(--accent-purple)",bg:"var(--accent-purple-dim)"},pattern:{text:"var(--accent-cyan)",bg:"var(--accent-cyan-dim)"},general:{text:"var(--text-secondary)",bg:"var(--bg-elevated)"}};function g6({findings:n}){return n.length===0?l.jsx("div",{className:ns.emptyState,children:"No findings yet. Agents will post discoveries here."}):l.jsx("div",{className:ns.container,children:n.map((s,i)=>{const o=Gy[s.category]||Gy.general;return l.jsxs(Mt.div,{className:ns.card,initial:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{delay:i*.05,duration:.2},children:[l.jsxs("div",{className:ns.cardHeader,children:[l.jsx("span",{className:ns.categoryBadge,style:{background:o.bg,color:o.text},children:s.category}),l.jsx("span",{className:ns.findingTitle,children:s.title}),l.jsx("span",{className:ns.findingDate,title:s.createdAt,children:h6(s.createdAt)})]}),l.jsx("div",{className:ns.findingContent,children:s.content.length>300?s.content.slice(0,300)+"...":s.content}),s.tags.length>0&&l.jsx("div",{className:ns.tags,children:s.tags.map(c=>l.jsx("span",{className:ns.tag,style:{color:o.text,textShadow:`0 0 8px ${o.text}`},children:c},c))})]},s.id)})})}const v6="_section_1ingb_14",y6="_sectionTitle_1ingb_26",b6="_sectionDescription_1ingb_35",_6="_tokenList_1ingb_48",x6="_tokenRow_1ingb_55",S6="_tokenBadge_1ingb_68",T6="_tokenName_1ingb_83",k6="_tokenTarget_1ingb_90",w6="_deleteButton_1ingb_99",N6="_addForm_1ingb_113",j6="_formRow_1ingb_119",C6="_input_1ingb_125",E6="_select_1ingb_155",A6="_addButton_1ingb_187",D6="_emptyStateInfo_1ingb_221",R6="_themeOptions_1ingb_229",M6="_themeOption_1ingb_229",O6="_themeOptionSelected_1ingb_254",I6="_themeOptionHeader_1ingb_259",B6="_themeOptionLabel_1ingb_266",L6="_themeOptionDesc_1ingb_273",U6="_variantToggle_1ingb_279",z6="_variantButton_1ingb_286",P6="_variantActive_1ingb_305",V6="_themeSwatches_1ingb_311",H6="_themeSwatch_1ingb_311",G6="_systemToggle_1ingb_325",$6="_systemToggleHint_1ingb_341",q6="_themeActive_1ingb_348",F6="_aboutGrid_1ingb_354",Z6="_aboutItem_1ingb_360",K6="_aboutLabel_1ingb_373",Y6="_aboutValue_1ingb_379",J6="_aboutDot_1ingb_387",W6="_aboutDotConnected_1ingb_394",X6="_aboutDotDisconnected_1ingb_398",he={section:v6,sectionTitle:y6,sectionDescription:b6,tokenList:_6,tokenRow:x6,tokenBadge:S6,tokenName:T6,tokenTarget:k6,deleteButton:w6,addForm:N6,formRow:j6,input:C6,select:E6,addButton:A6,emptyStateInfo:D6,themeOptions:R6,themeOption:M6,themeOptionSelected:O6,themeOptionHeader:I6,themeOptionLabel:B6,themeOptionDesc:L6,variantToggle:U6,variantButton:z6,variantActive:P6,themeSwatches:V6,themeSwatch:H6,systemToggle:G6,systemToggleHint:$6,themeActive:q6,aboutGrid:F6,aboutItem:Z6,aboutLabel:K6,aboutValue:Y6,aboutDot:J6,aboutDotConnected:W6,aboutDotDisconnected:X6},Q6=[{value:"env_var",label:"Environment Variable"},{value:"file",label:"File"}];function eO({tokens:n,onSetToken:s,onDeleteToken:i,onShowToast:o}){const[c,u]=y.useState(""),[d,m]=y.useState(""),[h,g]=y.useState("env_var"),[v,b]=y.useState(""),[_,S]=y.useState(null),T=w=>{if(w.preventDefault(),!c||!d)return;const C=h==="env_var"?v||c.toUpperCase()+"_TOKEN":"";s(c,d,h,C,h==="file"?v:""),o==null||o("Token saved successfully","success"),u(""),m(""),b("")},N=w=>{S(w)},j=()=>{_&&(i(_),o==null||o("Token deleted","info")),S(null)};return l.jsxs(l.Fragment,{children:[l.jsx(Xa,{isOpen:_!==null,title:"Delete Token?",description:_?`"${_}" will be permanently removed.`:void 0,onConfirm:j,onCancel:()=>S(null)}),l.jsxs("section",{className:he.section,children:[l.jsx("h3",{className:he.sectionTitle,children:"Tokens"}),l.jsx("p",{className:he.sectionDescription,children:"API tokens are auto-pushed to environments when set or updated. Values are write-only."}),n.length===0?l.jsx("div",{className:he.emptyStateInfo,children:"Add your first API token to enable service integrations."}):l.jsx("div",{className:he.tokenList,children:n.map(w=>l.jsxs("div",{className:he.tokenRow,children:[l.jsx("span",{className:he.tokenBadge,children:w.tokenType}),l.jsx("span",{className:he.tokenName,children:w.name}),l.jsx("span",{className:he.tokenTarget,children:w.tokenType==="env_var"?w.envVar:w.filePath}),l.jsx("button",{className:he.deleteButton,onClick:()=>N(w.name),title:`Delete ${w.name}`,children:"×"})]},w.name))}),l.jsxs("form",{className:he.addForm,onSubmit:T,children:[l.jsxs("div",{className:he.formRow,children:[l.jsx("input",{className:he.input,type:"text",placeholder:"Token name",value:c,onChange:w=>u(w.target.value)}),l.jsx("input",{className:he.input,type:"password",placeholder:"Value",value:d,onChange:w=>m(w.target.value)})]}),l.jsxs("div",{className:he.formRow,children:[l.jsx("select",{className:he.select,value:h,onChange:w=>g(w.target.value),children:Q6.map(w=>l.jsx("option",{value:w.value,children:w.label},w.value))}),l.jsx("input",{className:he.input,type:"text",placeholder:h==="env_var"?"Env var name (e.g. API_TOKEN)":"File path (e.g. /home/user/.token)",value:v,onChange:w=>b(w.target.value)}),l.jsx("button",{className:he.addButton,type:"submit",children:"Add Token"})]})]})]})]})}const Hc=[{id:"grackle",label:"Grackle",description:"The default Grackle theme — iridescent purple on clean dark.",swatches:["#0e1218","#8b5cf6","#60a5fa","#e5e7eb","#34d399"],variantLightId:"grackle-light",variantDarkId:"grackle-dark"},{id:"grackle-light",label:"Grackle Light",description:"Light Grackle variant.",hidden:!0},{id:"grackle-dark",label:"Grackle Dark",description:"Dark Grackle variant.",hidden:!0},{id:"glass",label:"Glassmorphism",description:"Dark frosted-glass aesthetic with backdrop blur effects.",swatches:["#0a0c14","#4ecca3","#70a1ff","#e2e8f0","#a855f7"]},{id:"matrix",label:"Matrix",description:"Phosphor-green CRT terminal with scanlines and glow.",swatches:["#050505","#00ff41","#00bfff","#33ff77","#ffb000"]},{id:"brutalist",label:"Neubrutalism",description:"Thick borders, raw colors, bold type — ugly on purpose.",swatches:["#f5f0e8","#ff5757","#5ce1e6","#1a1a1a","#ffde59"],variantLightId:"brutalist-light",variantDarkId:"brutalist-dark"},{id:"brutalist-light",label:"Neubrutalism Light",description:"Light neubrutalism variant.",hidden:!0},{id:"brutalist-dark",label:"Neubrutalism Dark",description:"Dark neubrutalism variant.",hidden:!0},{id:"monokai",label:"Monokai",description:"Classic warm editor palette — pink, green, and purple.",swatches:["#272822","#f92672","#a6e22e","#f8f8f2","#ae81ff"],variantLightId:"monokai-light",variantDarkId:"monokai-dark"},{id:"monokai-dark",label:"Monokai Dark",description:"Dark Monokai variant.",hidden:!0},{id:"monokai-light",label:"Monokai Light",description:"Light Monokai variant.",hidden:!0},{id:"ubuntu",label:"Ubuntu",description:"Aubergine terminal with the GNOME Tango palette.",swatches:["#300a24","#8ae234","#ef2929","#eeeeec","#fce94f"]},{id:"sandstone",label:"Sandstone",description:"Warm terracotta accent on dark brown, in the style of Claude Code.",swatches:["#1a1815","#C15F3C","#6b8afd","#e8e6e3","#a78bfa"]},{id:"verdigris",label:"Verdigris",description:"Teal accent on charcoal, in the style of ChatGPT.",swatches:["#141414","#00a67e","#3b82f6","#ececec","#ab68ff"]},{id:"primer",label:"Primer",description:"Blue accent on ink-dark grey, in the style of GitHub.",swatches:["#0d1117","#58a6ff","#3fb950","#c9d1d9","#bc8cff"]}],Sx=new Set(Hc.map(n=>n.id)),$y="grackle";function rp(n){return Hc.find(s=>s.id===n)}function tO({themeId:n,resolvedThemeId:s,onSetTheme:i,preferSystem:o,onSetPreferSystem:c}){return l.jsxs("section",{className:he.section,children:[l.jsx("h3",{className:he.sectionTitle,children:"Appearance"}),l.jsx("p",{className:he.sectionDescription,children:"Choose how Grackle looks across the app."}),l.jsx("div",{className:he.themeOptions,children:Hc.filter(u=>!u.hidden).map(u=>{const d=!!(u.variantLightId&&u.variantDarkId),m=d?n===u.id||n===u.variantLightId||n===u.variantDarkId:n===u.id,h=d&&s===u.variantLightId;return l.jsxs("button",{type:"button",className:`${he.themeOption} ${m?he.themeOptionSelected:""}`,"aria-pressed":m,onClick:()=>i(u.id),children:[l.jsxs("span",{className:he.themeOptionHeader,children:[l.jsxs("span",{children:[l.jsx("span",{className:he.themeOptionLabel,children:u.label}),l.jsx("span",{className:he.themeOptionDesc,children:u.description})]}),d&&l.jsxs("span",{className:he.variantToggle,children:[l.jsx("span",{role:"button",tabIndex:0,className:`${he.variantButton} ${m&&h?he.variantActive:""}`,onClick:g=>{g.stopPropagation(),c(!1),i(u.variantLightId)},onKeyDown:g=>{(g.key==="Enter"||g.key===" ")&&(g.preventDefault(),g.stopPropagation(),c(!1),i(u.variantLightId))},"aria-label":"Light variant","aria-pressed":m&&h,children:"☼"}),l.jsx("span",{role:"button",tabIndex:0,className:`${he.variantButton} ${m&&!h?he.variantActive:""}`,onClick:g=>{g.stopPropagation(),c(!1),i(u.variantDarkId)},onKeyDown:g=>{(g.key==="Enter"||g.key===" ")&&(g.preventDefault(),g.stopPropagation(),c(!1),i(u.variantDarkId))},"aria-label":"Dark variant","aria-pressed":m&&!h,children:"☾"})]})]}),u.swatches&&l.jsx("span",{className:he.themeSwatches,children:u.swatches.map((g,v)=>l.jsx("span",{className:he.themeSwatch,style:{background:g}},v))})]},u.id)})}),l.jsxs("label",{className:he.systemToggle,children:[l.jsx("input",{type:"checkbox",checked:o,onChange:u=>c(u.target.checked)}),l.jsx("span",{children:"Match system light/dark preference"})]}),l.jsx("p",{className:he.systemToggleHint,children:"Automatically switches between light and dark variants when available."}),l.jsxs("p",{className:he.themeActive,children:["Active theme: ",l.jsx("strong",{children:s})]})]})}function nO({connected:n,environments:s,sessions:i}){const o=s.filter(d=>d.status==="connected").length,c=s.length,u=i.filter(d=>["running","idle"].includes(d.status)).length;return l.jsxs("section",{className:he.section,"data-testid":"about-panel",children:[l.jsx("h3",{className:he.sectionTitle,children:"About"}),l.jsx("p",{className:he.sectionDescription,children:"Connection status and application information."}),l.jsxs("div",{className:he.aboutGrid,children:[l.jsxs("div",{className:he.aboutItem,children:[l.jsx("span",{className:he.aboutLabel,children:"Connection"}),l.jsxs("span",{className:he.aboutValue,children:[l.jsx("span",{className:`${he.aboutDot} ${n?he.aboutDotConnected:he.aboutDotDisconnected}`}),n?"Connected":"Disconnected"]})]}),l.jsxs("div",{className:he.aboutItem,children:[l.jsx("span",{className:he.aboutLabel,children:"Environments"}),l.jsxs("span",{className:he.aboutValue,children:[o,"/",c," connected"]})]}),l.jsxs("div",{className:he.aboutItem,children:[l.jsx("span",{className:he.aboutLabel,children:"Active Sessions"}),l.jsx("span",{className:he.aboutValue,children:u})]}),l.jsxs("div",{className:he.aboutItem,children:[l.jsx("span",{className:he.aboutLabel,children:"Version"}),l.jsx("span",{className:he.aboutValue,children:"0.87.0"})]})]})]})}const sO="_container_cddyd_1",aO="_header_cddyd_8",iO="_headerTitle_cddyd_35",oO="_badge_cddyd_44",rO="_headerActions_cddyd_54",lO="_body_cddyd_61",cO="_formContent_cddyd_73",uO="_section_cddyd_85",dO="_label_cddyd_91",fO="_titleInput_cddyd_98",pO="_descriptionTextarea_cddyd_131",mO="_parentContext_cddyd_167",hO="_parentLabel_cddyd_175",gO="_parentName_cddyd_182",vO="_personaSelect_cddyd_186",yO="_depList_cddyd_220",bO="_depItem_cddyd_226",_O="_depItemSelected_cddyd_248",xO="_noDeps_cddyd_252",SO="_btnPrimary_cddyd_258",TO="_btnGhost_cddyd_289",Ke={container:sO,header:aO,headerTitle:iO,badge:oO,headerActions:rO,body:lO,formContent:cO,section:uO,label:dO,titleInput:fO,descriptionTextarea:pO,parentContext:mO,parentLabel:hO,parentName:gO,personaSelect:vO,depList:yO,depItem:bO,depItemSelected:_O,noDeps:xO,btnPrimary:SO,btnGhost:TO};function Tx({mode:n,taskId:s,workspaceId:i,parentTaskId:o,environmentId:c,tasks:u,workspaces:d,personas:m,onCreateTask:h,onUpdateTask:g,onEditDone:v,onShowToast:b}){const _=xt(),S=n==="edit",T=S&&s?u.find(me=>me.id===s):void 0,N=S?(T==null?void 0:T.workspaceId)??"":i??"",[j,w]=y.useState(N),C=N||j,A=d.find(me=>me.id===C),M=c??(A==null?void 0:A.environmentId),D=!S&&!i,E=S?(T==null?void 0:T.parentTaskId)??"":o??"",H=E?u.find(me=>me.id===E):void 0,[z,Z]=y.useState((T==null?void 0:T.title)??""),[F,Q]=y.useState((T==null?void 0:T.description)??""),[ae,pe]=y.useState((T==null?void 0:T.dependsOn)??[]),[oe,X]=y.useState((T==null?void 0:T.defaultPersonaId)??""),[B,q]=y.useState((T==null?void 0:T.canDecompose)??!1),[te,re]=y.useState(!1),de=y.useRef(!1);y.useEffect(()=>{S&&T&&!de.current&&(de.current=!0,Z(T.title),Q(T.description),pe(T.dependsOn),X(T.defaultPersonaId),q(T.canDecompose))},[S,T]);const $e=u.filter(me=>me.workspaceId===C&&(!S||me.id!==s)&&me.id!==E),we=z.trim().length>0&&(!S||T!==void 0)&&C.length>0,Se=me=>{pe(Ce=>Ce.includes(me)?Ce.filter(Lt=>Lt!==me):[...Ce,me])},Oe=()=>{!we||te||S&&T===void 0||(S&&s?(g(s,z.trim(),F,ae,oe),b==null||b("Task updated","success"),v?v():_(rs(s,void 0,C,M),{replace:!0})):(re(!0),h(C,z.trim(),F,ae.length>0?ae:void 0,E||void 0,oe,B,()=>{b==null||b("Task created","success"),_(i?Qi(i,M):"/tasks",{replace:!0})},me=>{b==null||b(me,"error"),re(!1)})))},le=()=>{if(v){v();return}_(S&&s?rs(s,void 0,C,M):i?Qi(i,M):"/tasks")},fe=S?"edit task":E?"child task":"new task";return l.jsxs("div",{className:Ke.container,children:[l.jsxs("div",{className:Ke.header,children:[l.jsxs("div",{className:Ke.headerTitle,children:[l.jsx("span",{className:Ke.badge,children:fe}),H&&l.jsxs("span",{className:Ke.parentContext,children:[l.jsx("span",{className:Ke.parentLabel,children:"Child of"}),l.jsx("span",{className:Ke.parentName,children:H.title})]})]}),l.jsxs("div",{className:Ke.headerActions,children:[l.jsx("button",{onClick:Oe,disabled:!we||te,className:Ke.btnPrimary,"data-testid":"task-edit-save",children:te?"Creating…":S?"Save Changes":"Create"}),l.jsx("button",{onClick:le,className:Ke.btnGhost,children:"Cancel"})]})]}),l.jsx("div",{className:Ke.body,children:l.jsxs("div",{className:Ke.formContent,children:[D&&l.jsxs("div",{className:Ke.section,children:[l.jsx("label",{className:Ke.label,htmlFor:"task-edit-workspace",children:"Workspace"}),l.jsxs("select",{id:"task-edit-workspace",value:j,onChange:me=>w(me.target.value),className:Ke.personaSelect,"data-testid":"task-edit-workspace",children:[l.jsx("option",{value:"",children:"Select a workspace..."}),d.map(me=>l.jsx("option",{value:me.id,children:me.name},me.id))]})]}),l.jsxs("div",{className:Ke.section,children:[l.jsx("label",{className:Ke.label,htmlFor:"task-edit-title",children:"Title"}),l.jsx("input",{id:"task-edit-title",type:"text",value:z,onChange:me=>Z(me.target.value),placeholder:"Task title...",autoFocus:!0,className:Ke.titleInput,"data-testid":"task-edit-title",onKeyDown:me=>{me.key==="Enter"&&we&&Oe()}})]}),l.jsxs("div",{className:Ke.section,children:[l.jsx("label",{className:Ke.label,htmlFor:"task-edit-description",children:"Description"}),l.jsx("textarea",{id:"task-edit-description",value:F,onChange:me=>Q(me.target.value),placeholder:"Describe the task... (markdown supported)",className:Ke.descriptionTextarea,"data-testid":"task-edit-description",rows:8})]}),l.jsxs("div",{className:Ke.section,children:[l.jsx("label",{className:Ke.label,htmlFor:"task-edit-persona",children:"Default Persona"}),l.jsxs("select",{id:"task-edit-persona",value:oe,onChange:me=>X(me.target.value),className:Ke.personaSelect,"data-testid":"task-edit-persona",children:[l.jsx("option",{value:"",children:"(Inherit)"}),m.map(me=>l.jsx("option",{value:me.id,children:me.name},me.id))]})]}),!S&&l.jsx("div",{className:Ke.section,children:l.jsxs("label",{className:Ke.depItem,"data-testid":"task-edit-can-decompose",children:[l.jsx("input",{type:"checkbox",checked:B,onChange:me=>q(me.target.checked)}),"Can spawn subtasks"]})}),l.jsxs("div",{className:Ke.section,children:[l.jsx("div",{className:Ke.label,children:"Dependencies"}),$e.length===0?l.jsx("div",{className:Ke.noDeps,children:"No other tasks in this workspace"}):l.jsx("div",{className:Ke.depList,children:$e.map(me=>{const Ce=ae.includes(me.id);return l.jsxs("label",{className:`${Ke.depItem} ${Ce?Ke.depItemSelected:""}`,"data-testid":`dep-option-${me.id}`,children:[l.jsx("input",{type:"checkbox",checked:Ce,onChange:()=>Se(me.id)}),me.title,l.jsxs("span",{style:{opacity:.5,fontSize:"11px",marginLeft:"4px"},children:["(",me.status,")"]})]},me.id)})})]})]})})]})}const kO="_container_legrg_1",wO="_header_legrg_8",NO="_headerTitle_legrg_35",jO="_badge_legrg_44",CO="_headerActions_legrg_54",EO="_body_legrg_61",AO="_formContent_legrg_73",DO="_section_legrg_85",RO="_label_legrg_91",MO="_nameInput_legrg_98",OO="_fieldInput_legrg_131",IO="_adapterSelect_legrg_164",BO="_readOnlyValue_legrg_198",LO="_codespaceSection_legrg_204",UO="_codespaceActions_legrg_210",zO="_creatingHint_legrg_216",PO="_errorHint_legrg_222",VO="_btnPrimary_legrg_235",HO="_btnGhost_legrg_266",ne={container:kO,header:wO,headerTitle:NO,badge:jO,headerActions:CO,body:EO,formContent:AO,section:DO,label:RO,nameInput:MO,fieldInput:OO,adapterSelect:IO,readOnlyValue:BO,codespaceSection:LO,codespaceActions:UO,creatingHint:zO,errorHint:PO,btnPrimary:VO,btnGhost:HO},vc=1,yc=65535;function Ef(n){if(!n.trim())return!0;const s=Number(n);return Number.isInteger(s)&&s>=vc&&s<=yc}function Af(n){try{const s=JSON.parse(n);if(typeof s=="object"&&s!==null&&!Array.isArray(s))return s}catch{}return{}}function GO({codespaceName:n,onCodespaceNameChange:s,envName:i,onEnvNameChange:o,codespaces:c,codespaceError:u,codespaceListError:d,codespaceCreating:m,onCreateCodespace:h}){const[g,v]=y.useState("pick"),[b,_]=y.useState(""),[S,T]=y.useState("");return g==="create"?l.jsxs("div",{className:ne.codespaceSection,children:[l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Repository"}),l.jsx("input",{type:"text",value:b,onChange:N=>_(N.target.value),placeholder:"owner/repo",className:ne.fieldInput,"data-testid":"env-codespace-repo"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Machine Type"}),l.jsx("input",{type:"text",value:S,onChange:N=>T(N.target.value),placeholder:"Machine type (optional)...",className:ne.fieldInput,"data-testid":"env-codespace-machine"})]}),l.jsxs("div",{className:ne.codespaceActions,children:[l.jsx("button",{onClick:()=>{b.trim()&&(h(b.trim(),S.trim()||void 0),v("pick"),_(""),T(""))},disabled:!b.trim(),className:ne.btnPrimary,children:"Create"}),l.jsx("button",{onClick:()=>{v("pick"),_(""),T("")},className:ne.btnGhost,children:"Cancel"})]})]}):l.jsx("div",{className:ne.codespaceSection,children:l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Codespace"}),!d&&l.jsxs("select",{value:n,onChange:N=>{N.target.value==="__create__"?(v("create"),s("")):(s(N.target.value),N.target.value&&!i.trim()&&o(N.target.value))},disabled:m,className:ne.adapterSelect,"data-testid":"env-codespace-select",children:[l.jsx("option",{value:"",children:"Select a codespace..."}),c.map(N=>l.jsxs("option",{value:N.name,children:[N.name," (",N.repository,") — ",N.state]},N.name)),l.jsx("option",{value:"__create__",children:"Create new from repo..."})]}),m&&l.jsx("span",{className:ne.creatingHint,children:"Creating codespace..."}),d&&l.jsxs(l.Fragment,{children:[l.jsx("span",{className:ne.errorHint,children:d}),l.jsx("input",{type:"text",value:n,onChange:N=>s(N.target.value),placeholder:"Or enter codespace name manually...",className:ne.fieldInput,"data-testid":"env-codespace-manual"})]}),u&&!d&&l.jsx("span",{className:ne.errorHint,children:u})]})})}function kx({mode:n,environmentId:s,environments:i,onAddEnvironment:o,onUpdateEnvironment:c,onListCodespaces:u,codespaces:d,codespaceError:m,codespaceListError:h,codespaceCreating:g,onCreateCodespace:v,onShowToast:b}){const _=xt(),S=n==="edit",T=S&&s?i.find(le=>le.id===s):void 0,[N,j]=y.useState(""),[w,C]=y.useState("local"),[A,M]=y.useState(""),[D,E]=y.useState(""),[H,z]=y.useState(""),[Z,F]=y.useState(""),[Q,ae]=y.useState(""),[pe,oe]=y.useState(""),[X,B]=y.useState(""),[q,te]=y.useState(null),re=y.useCallback(()=>{const le={};if(w==="local"){if(A.trim()&&(le.host=A.trim()),D.trim()){const fe=Number(D);Number.isInteger(fe)&&(le.port=fe)}}else if(w==="ssh"){if(le.host=A.trim(),H.trim()&&(le.user=H.trim()),D.trim()){const fe=Number(D);Number.isInteger(fe)&&(le.sshPort=fe)}Z.trim()&&(le.identityFile=Z.trim())}else w==="docker"?(Q.trim()&&(le.image=Q.trim()),pe.trim()&&(le.repo=pe.trim())):w==="codespace"&&(le.codespaceName=X.trim());return le},[w,A,D,H,Z,Q,pe,X]),de=()=>!(!N.trim()||w==="ssh"&&!A.trim()||w==="codespace"&&!X.trim()||(w==="local"||w==="ssh")&&!Ef(D)),$e=()=>{de()&&(o(N.trim(),w,re()),b==null||b("Environment added successfully","success"),_(eo,{replace:!0}))},we=()=>{_(s?to(s):eo)},Se=y.useCallback((le,fe)=>{if(!T||!s)return;const me=Af(T.adapterConfig),Ce=fe.trim();Ce?me[le]=Ce:delete me[le],c(s,{adapterConfig:me})},[T,s,c]),Oe=y.useCallback((le,fe)=>{if(!T||!s)return;const me=Af(T.adapterConfig);if(fe.trim()){const Ce=Number(fe);Number.isInteger(Ce)&&Ce>=vc&&Ce<=yc&&(me[le]=Ce)}else delete me[le];c(s,{adapterConfig:me})},[T,s,c]);if(S){if(!T)return l.jsxs("div",{className:ne.container,children:[l.jsxs("div",{className:ne.header,children:[l.jsx("div",{className:ne.headerTitle,children:l.jsx("span",{className:ne.badge,children:"edit environment"})}),l.jsx("div",{className:ne.headerActions,children:l.jsx("button",{onClick:we,className:ne.btnGhost,children:"Back"})})]}),l.jsx("div",{className:ne.body,children:l.jsx("div",{className:ne.formContent,children:l.jsx("span",{className:ne.readOnlyValue,children:"Environment not found"})})})]});const le=Af(T.adapterConfig);return l.jsxs("div",{className:ne.container,"data-testid":"env-edit-panel",children:[l.jsxs("div",{className:ne.header,children:[l.jsx("div",{className:ne.headerTitle,children:l.jsx("span",{className:ne.badge,children:"edit environment"})}),l.jsx("div",{className:ne.headerActions,children:l.jsx("button",{onClick:we,className:ne.btnGhost,"data-testid":"env-edit-back",children:"Back"})})]}),l.jsx("div",{className:ne.body,children:l.jsxs("div",{className:ne.formContent,children:[l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Name"}),l.jsx(Kt,{value:T.displayName,onSave:fe=>{s&&c(s,{displayName:fe})},validate:fe=>fe.trim()===""?"Name cannot be empty":void 0,mode:"edit",fieldId:"name",activeFieldId:q,onActivate:te,placeholder:"Environment name",ariaLabel:"Environment name","data-testid":"env-edit-name"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Adapter Type"}),l.jsx("span",{className:ne.readOnlyValue,"data-testid":"env-edit-adapter-type",children:T.adapterType})]}),T.adapterType==="local"&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Host"}),l.jsx(Kt,{value:String(le.host??""),onSave:fe=>Se("host",fe),mode:"edit",fieldId:"host",activeFieldId:q,onActivate:te,placeholder:"(default)",ariaLabel:"Host","data-testid":"env-edit-host"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Port"}),l.jsx(Kt,{value:String(le.port??""),onSave:fe=>Oe("port",fe),validate:fe=>Ef(fe)?void 0:"Port must be 1-65535",mode:"edit",fieldId:"port",activeFieldId:q,onActivate:te,placeholder:"(default)",ariaLabel:"Port","data-testid":"env-edit-port"})]})]}),T.adapterType==="ssh"&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Host"}),l.jsx(Kt,{value:String(le.host??""),onSave:fe=>Se("host",fe),validate:fe=>fe.trim()===""?"Host is required":void 0,mode:"edit",fieldId:"host",activeFieldId:q,onActivate:te,placeholder:"hostname or IP",ariaLabel:"Host","data-testid":"env-edit-host"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"User"}),l.jsx(Kt,{value:String(le.user??""),onSave:fe=>Se("user",fe),mode:"edit",fieldId:"user",activeFieldId:q,onActivate:te,placeholder:"(default)",ariaLabel:"User","data-testid":"env-edit-user"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"SSH Port"}),l.jsx(Kt,{value:String(le.sshPort??""),onSave:fe=>Oe("sshPort",fe),validate:fe=>Ef(fe)?void 0:"Port must be 1-65535",mode:"edit",fieldId:"sshPort",activeFieldId:q,onActivate:te,placeholder:"22",ariaLabel:"SSH Port","data-testid":"env-edit-ssh-port"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Identity File"}),l.jsx(Kt,{value:String(le.identityFile??""),onSave:fe=>Se("identityFile",fe),mode:"edit",fieldId:"identityFile",activeFieldId:q,onActivate:te,placeholder:"~/.ssh/id_rsa",ariaLabel:"Identity File","data-testid":"env-edit-identity-file"})]})]}),T.adapterType==="docker"&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Image"}),l.jsx(Kt,{value:String(le.image??""),onSave:fe=>Se("image",fe),mode:"edit",fieldId:"image",activeFieldId:q,onActivate:te,placeholder:"(default)",ariaLabel:"Image","data-testid":"env-edit-image"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Repo"}),l.jsx(Kt,{value:String(le.repo??""),onSave:fe=>Se("repo",fe),mode:"edit",fieldId:"repo",activeFieldId:q,onActivate:te,placeholder:"(none)",ariaLabel:"Repo","data-testid":"env-edit-repo"})]})]}),T.adapterType==="codespace"&&l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Codespace Name"}),l.jsx(Kt,{value:String(le.codespaceName??""),onSave:fe=>Se("codespaceName",fe),validate:fe=>fe.trim()===""?"Codespace name is required":void 0,mode:"edit",fieldId:"codespaceName",activeFieldId:q,onActivate:te,placeholder:"codespace-name",ariaLabel:"Codespace Name","data-testid":"env-edit-codespace-name"})]})]})})]})}return l.jsxs("div",{className:ne.container,"data-testid":"env-create-panel",children:[l.jsxs("div",{className:ne.header,children:[l.jsx("div",{className:ne.headerTitle,children:l.jsx("span",{className:ne.badge,children:"new environment"})}),l.jsxs("div",{className:ne.headerActions,children:[l.jsx("button",{onClick:$e,disabled:!de(),className:ne.btnPrimary,"data-testid":"env-create-submit",children:"Create"}),l.jsx("button",{onClick:we,className:ne.btnGhost,children:"Cancel"})]})]}),l.jsx("div",{className:ne.body,children:l.jsxs("div",{className:ne.formContent,children:[l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,htmlFor:"env-create-name",children:"Name"}),l.jsx("input",{id:"env-create-name",type:"text",value:N,onChange:le=>j(le.target.value),placeholder:"Environment name...",autoFocus:!0,className:ne.nameInput,"data-testid":"env-create-name",onKeyDown:le=>{le.key==="Enter"&&de()&&$e()}})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,htmlFor:"env-create-adapter",children:"Adapter Type"}),l.jsxs("select",{id:"env-create-adapter",value:w,onChange:le=>{C(le.target.value),le.target.value==="codespace"&&u()},className:ne.adapterSelect,"data-testid":"env-create-adapter",children:[l.jsx("option",{value:"local",children:"local"}),l.jsx("option",{value:"ssh",children:"ssh"}),l.jsx("option",{value:"docker",children:"docker"}),l.jsx("option",{value:"codespace",children:"codespace"})]})]}),w==="local"&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,htmlFor:"env-create-host",children:"Host"}),l.jsx("input",{id:"env-create-host",type:"text",value:A,onChange:le=>M(le.target.value),placeholder:"Host (optional)...",className:ne.fieldInput,"data-testid":"env-create-host"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,htmlFor:"env-create-port",children:"Port"}),l.jsx("input",{id:"env-create-port",type:"number",min:vc,max:yc,value:D,onChange:le=>E(le.target.value),placeholder:"Port (optional)...",className:ne.fieldInput,"data-testid":"env-create-port"})]})]}),w==="ssh"&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,htmlFor:"env-create-host",children:"Host"}),l.jsx("input",{id:"env-create-host",type:"text",value:A,onChange:le=>M(le.target.value),placeholder:"Host (required)...",className:ne.fieldInput,"data-testid":"env-create-host"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,htmlFor:"env-create-user",children:"User"}),l.jsx("input",{id:"env-create-user",type:"text",value:H,onChange:le=>z(le.target.value),placeholder:"User (optional)...",className:ne.fieldInput,"data-testid":"env-create-user"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,htmlFor:"env-create-port",children:"SSH Port"}),l.jsx("input",{id:"env-create-port",type:"number",min:vc,max:yc,value:D,onChange:le=>E(le.target.value),placeholder:"SSH port (optional)...",className:ne.fieldInput,"data-testid":"env-create-port"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,htmlFor:"env-create-identity",children:"Identity File"}),l.jsx("input",{id:"env-create-identity",type:"text",value:Z,onChange:le=>F(le.target.value),placeholder:"Identity file (optional)...",className:ne.fieldInput,"data-testid":"env-create-identity"})]})]}),w==="docker"&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,htmlFor:"env-create-image",children:"Image"}),l.jsx("input",{id:"env-create-image",type:"text",value:Q,onChange:le=>ae(le.target.value),placeholder:"Image (optional)...",className:ne.fieldInput,"data-testid":"env-create-image"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,htmlFor:"env-create-repo",children:"Repo"}),l.jsx("input",{id:"env-create-repo",type:"text",value:pe,onChange:le=>oe(le.target.value),placeholder:"Repo (optional)...",className:ne.fieldInput,"data-testid":"env-create-repo"})]})]}),w==="codespace"&&l.jsx(GO,{codespaceName:X,onCodespaceNameChange:B,envName:N,onEnvNameChange:j,codespaces:d,codespaceError:m,codespaceListError:h,codespaceCreating:g,onCreateCodespace:v})]})})]})}const $O="_group_1iprv_1",qO="_groupTitle_1iprv_8",FO="_shortcutList_1iprv_17",ZO="_shortcutRow_1iprv_23",KO="_keys_1iprv_36",YO="_kbd_1iprv_43",JO="_description_1iprv_60",qa={group:$O,groupTitle:qO,shortcutList:FO,shortcutRow:ZO,keys:KO,kbd:YO,description:JO},WO=[{title:"Global",shortcuts:[{keys:["?"],description:"Open keyboard shortcuts reference"},{keys:["N"],description:"Create a new task"},{keys:["Escape"],description:"Close dialog or cancel editing"}]},{title:"Task Page",shortcuts:[{keys:["1"],description:"Switch to Overview tab"},{keys:["2"],description:"Switch to Stream tab"},{keys:["3"],description:"Switch to Findings tab"}]},{title:"Workspace Page",shortcuts:[{keys:["1"],description:"Switch to Graph view"},{keys:["2"],description:"Switch to Board view"},{keys:["3"],description:"Switch to Tasks view"}]},{title:"Navigation Lists",shortcuts:[{keys:["←"],description:"Previous tab (horizontal nav)"},{keys:["→"],description:"Next tab (horizontal nav)"},{keys:["↑"],description:"Previous item (vertical nav)"},{keys:["↓"],description:"Next item (vertical nav)"},{keys:["J"],description:"Next item (alias for arrow down/right)"},{keys:["K"],description:"Previous item (alias for arrow up/left)"},{keys:["Home"],description:"Jump to first item"},{keys:["End"],description:"Jump to last item"}]},{title:"Editing",shortcuts:[{keys:["Enter"],description:"Activate / save inline edit"},{keys:["Space"],description:"Activate button or start editing"},{keys:["Escape"],description:"Cancel edit and discard changes"}]},{title:"Chat",shortcuts:[{keys:["Enter"],description:"Send message (when input is focused)"}]}];function XO(){return l.jsxs("section",{className:he.section,"data-testid":"keyboard-shortcuts-panel",children:[l.jsx("h3",{className:he.sectionTitle,children:"Keyboard Shortcuts"}),l.jsx("p",{className:he.sectionDescription,children:"Keyboard shortcuts for navigating and interacting with Grackle. Global shortcuts are suppressed while typing in text fields."}),WO.map(n=>l.jsxs("div",{className:qa.group,children:[l.jsx("h4",{className:qa.groupTitle,children:n.title}),l.jsx("div",{className:qa.shortcutList,children:n.shortcuts.map(s=>l.jsxs("div",{className:qa.shortcutRow,children:[l.jsx("span",{className:qa.keys,children:s.keys.map(i=>l.jsx("kbd",{className:qa.kbd,children:i},i))}),l.jsx("span",{className:qa.description,children:s.description})]},s.description))})]},n.title))]})}const QO="_workpadSection_y8nj9_1",eI="_workpadLabel_y8nj9_9",tI="_workpadStatus_y8nj9_17",nI="_workpadSummary_y8nj9_23",sI="_workpadExtra_y8nj9_29",da={workpadSection:QO,workpadLabel:eI,workpadStatus:tI,workpadSummary:nI,workpadExtra:sI};function aI({workpad:n}){if(!n)return;let s;try{const i=JSON.parse(n);if(i==null||typeof i!="object"||Array.isArray(i))return;s=i}catch{return l.jsxs("div",{className:da.workpadSection,"data-testid":"workpad-panel",children:[l.jsx("div",{className:da.workpadLabel,children:"Workpad"}),l.jsx("div",{className:da.workpadExtra,children:n})]})}if(!(!s.status&&!s.summary&&!s.extra))return l.jsxs("div",{className:da.workpadSection,"data-testid":"workpad-panel",children:[l.jsx("div",{className:da.workpadLabel,children:"Workpad"}),s.status&&l.jsx("div",{className:da.workpadStatus,"data-testid":"workpad-status",children:s.status}),s.summary&&l.jsx("div",{className:da.workpadSummary,"data-testid":"workpad-summary",children:s.summary}),s.extra&&Object.keys(s.extra).length>0&&l.jsx("div",{className:da.workpadExtra,"data-testid":"workpad-extra",children:JSON.stringify(s.extra,null,2)})]})}const iI=[{key:"claude",label:"Claude",description:"Forward Claude credentials for AI agent access.",options:[{value:"off",label:"Off"},{value:"subscription",label:"Subscription"},{value:"api_key",label:"API Key"}]},{key:"github",label:"GitHub",description:"Forward GITHUB_TOKEN and GH_TOKEN for git operations.",options:[{value:"off",label:"Off"},{value:"on",label:"On"}]},{key:"copilot",label:"Copilot",description:"Forward Copilot tokens (COPILOT_GITHUB_TOKEN, CLI config).",options:[{value:"off",label:"Off"},{value:"on",label:"On"}]},{key:"codex",label:"Codex",description:"Forward OPENAI_API_KEY for Codex/OpenAI access.",options:[{value:"off",label:"Off"},{value:"on",label:"On"}]},{key:"goose",label:"Goose",description:"Forward Goose config and API keys for Goose agent access.",options:[{value:"off",label:"Off"},{value:"on",label:"On"}]}];function oI({credentialProviders:n,onUpdateCredentialProviders:s}){const i=(o,c)=>{const u={...n};o==="claude"?u.claude=c:u[o]=c,s(u)};return l.jsxs("section",{className:he.section,children:[l.jsx("h3",{className:he.sectionTitle,children:"Credential Providers"}),l.jsx("p",{className:he.sectionDescription,children:"Enable providers to automatically forward credentials to environments at task start. Credentials are read fresh from the host each time."}),l.jsx("div",{className:he.tokenList,children:iI.map(o=>l.jsxs("div",{className:he.tokenRow,children:[l.jsx("span",{className:he.tokenName,children:o.label}),l.jsx("span",{className:he.tokenTarget,children:o.description}),l.jsx("select",{className:he.select,value:n[o.key],onChange:c=>i(o.key,c.target.value),children:o.options.map(c=>l.jsx("option",{value:c.value,children:c.label},c.value))})]},o.key))})]})}const rI="_container_10efq_1",lI="_header_10efq_7",cI="_list_10efq_105",uI="_card_10efq_111",dI="_cardHeader_10efq_125",fI="_cardTitle_10efq_135",pI="_defaultBadge_10efq_141",mI="_cardActions_10efq_155",hI="_description_10efq_160",gI="_meta_10efq_166",vI="_empty_10efq_212",yI="_typeBadge_10efq_362",In={container:rI,header:lI,list:cI,card:uI,cardHeader:dI,cardTitle:fI,defaultBadge:pI,cardActions:mI,description:hI,meta:gI,empty:vI,typeBadge:yI};function bI({personas:n,appDefaultPersonaId:s,onDeletePersona:i,onSetAppDefaultPersonaId:o,onNavigateToNew:c,onNavigateToPersona:u}){const[d,m]=y.useState(null),h=d?n.find(v=>v.id===d):void 0,g=async v=>{await i(v),m(null)};return l.jsxs("div",{className:In.container,children:[l.jsxs("div",{className:In.header,children:[l.jsx("h2",{children:"Personas"}),l.jsx(Ds,{variant:"primary",size:"md",onClick:c,"data-testid":"persona-new-button",children:"+ New Persona"})]}),n.length===0?l.jsx("p",{className:In.empty,children:"No personas yet. Create one to get started."}):l.jsx("div",{className:In.list,children:n.map(v=>{const b=s===v.id,_=v.type==="script";return l.jsxs("div",{className:In.card,"data-testid":`persona-card-${v.id}`,onClick:()=>u(v.id),role:"button",tabIndex:0,onKeyDown:S=>{S.currentTarget===S.target&&(S.key==="Enter"||S.key===" ")&&(S.preventDefault(),u(v.id))},children:[l.jsxs("div",{className:In.cardHeader,children:[l.jsxs("span",{className:In.cardTitle,children:[l.jsx("strong",{children:v.name}),l.jsx("span",{className:In.typeBadge,"data-testid":`persona-type-badge-${v.id}`,children:_?"Script":"Agent"}),b&&l.jsx("span",{className:In.defaultBadge,"data-testid":`persona-default-badge-${v.id}`,children:"App Default"})]}),l.jsxs("div",{className:In.cardActions,onClick:S=>S.stopPropagation(),children:[!b&&l.jsx(Ds,{variant:"ghost",size:"sm",onClick:()=>{o(v.id).catch(()=>{})},"data-testid":`persona-set-default-${v.id}`,title:"Set as app default persona",children:"Set Default"}),l.jsx(Ds,{variant:"ghost",size:"sm",onClick:()=>u(v.id),children:"Edit"}),l.jsx(Ds,{variant:"ghost",size:"sm",onClick:()=>m(v.id),"data-testid":`persona-delete-${v.id}`,children:"Delete"})]})]}),v.description&&l.jsx("p",{className:In.description,children:v.description}),l.jsxs("div",{className:In.meta,children:[v.runtime&&l.jsxs("span",{children:["Runtime: ",v.runtime]}),v.model&&l.jsxs("span",{children:["Model: ",v.model]}),v.maxTurns>0&&l.jsxs("span",{children:["Max turns: ",v.maxTurns]})]})]},v.id)})}),l.jsx(Xa,{isOpen:d!==null,title:"Delete Persona?",description:`"${(h==null?void 0:h.name)??""}" will be permanently removed.`,confirmLabel:"Delete",onConfirm:()=>{d&&g(d).catch(()=>{})},onCancel:()=>m(null)})]})}const _I="_container_uy08i_1",xI="_header_uy08i_7",SI="_count_uy08i_13",TI="_presets_uy08i_18",kI="_presetButton_uy08i_24",wI="_filterInput_uy08i_41",NI="_groups_uy08i_53",jI="_group_uy08i_53",CI="_groupHeader_uy08i_68",EI="_groupName_uy08i_77",AI="_groupCount_uy08i_81",DI="_toolList_uy08i_87",RI="_toolItem_uy08i_95",MI="_toolName_uy08i_103",en={container:_I,header:xI,count:SI,presets:TI,presetButton:kI,filterInput:wI,groups:NI,group:jI,groupHeader:CI,groupName:EI,groupCount:AI,toolList:DI,toolItem:RI,toolName:MI},OI=(()=>{const n=new Map;for(const s of lb){const i=s==="get_version_status"?"version":s.split("_")[0];n.has(i)||n.set(i,[]),n.get(i).push(s)}return[...n.entries()].sort(([s],[i])=>s.localeCompare(i)).map(([s,i])=>({group:s,tools:i.sort()}))})(),II=[{name:"default",label:"Default",tools:cb},{name:"worker",label:"Worker",tools:cT},{name:"orchestrator",label:"Orchestrator",tools:uT},{name:"admin",label:"Admin",tools:dT}];function qy({selectedTools:n,onChange:s,disabled:i}){const[o,c]=y.useState(""),u=y.useMemo(()=>new Set(n),[n]),d=y.useCallback(v=>{if(i)return;const b=new Set(u);b.has(v)?b.delete(v):b.add(v),s([...b].sort())},[u,s,i]),m=y.useCallback((v,b)=>{if(i)return;const _=new Set(u);for(const S of v)b?_.delete(S):_.add(S);s([..._].sort())},[u,s,i]),h=y.useCallback(v=>{i||s([...v].sort())},[s,i]),g=o.toLowerCase();return l.jsxs("div",{className:en.container,"data-testid":"mcp-tool-selector",children:[l.jsx("div",{className:en.header,children:l.jsx("span",{className:en.count,children:n.length===0?`Using default (${cb.length} tools)`:`${n.length} of ${lb.size} tools selected`})}),l.jsxs("div",{className:en.presets,"data-testid":"mcp-tool-presets",children:[II.map(v=>l.jsx("button",{type:"button",className:en.presetButton,disabled:i,onClick:()=>h(v.tools),"data-testid":`preset-${v.name}`,children:v.label},v.name)),l.jsx("button",{type:"button",className:en.presetButton,disabled:i,onClick:()=>s([]),"data-testid":"preset-clear",children:"Clear"})]}),l.jsx("input",{type:"text",className:en.filterInput,placeholder:"Filter tools...",value:o,onChange:v=>c(v.target.value),disabled:i,"data-testid":"mcp-tool-filter"}),l.jsx("div",{className:en.groups,children:OI.map(({group:v,tools:b})=>{const _=g?b.filter(T=>T.toLowerCase().includes(g)):b;if(_.length===0)return null;const S=_.every(T=>u.has(T));return l.jsxs("div",{className:en.group,"data-testid":`tool-group-${v}`,children:[l.jsxs("label",{className:en.groupHeader,children:[l.jsx("input",{type:"checkbox",checked:S,onChange:()=>m(_,S),disabled:i,"data-testid":`group-toggle-${v}`}),l.jsx("span",{className:en.groupName,children:v}),l.jsxs("span",{className:en.groupCount,children:["(",_.filter(T=>u.has(T)).length,"/",_.length,")"]})]}),l.jsx("div",{className:en.toolList,children:_.map(T=>l.jsxs("label",{className:en.toolItem,children:[l.jsx("input",{type:"checkbox",checked:u.has(T),onChange:()=>d(T),disabled:i,"data-testid":`tool-${T}`}),l.jsx("span",{className:en.toolName,children:T})]},T))})]},v)})})]})}const BI="_nav_1bhou_1",LI="_tab_1bhou_24",UI="_tabIcon_1bhou_62",zI="_tabActive_1bhou_68",oc={nav:BI,tab:LI,tabIcon:UI,tabActive:zI},As=[{path:"credentials",label:"Credentials",icon:"🔑"},{path:"personas",label:"Personas",icon:"👤"},{path:"appearance",label:"Appearance",icon:"🎨"},{path:"shortcuts",label:"Shortcuts",icon:"⌨️"},{path:"about",label:"About",icon:"ℹ️"}];function PI(){var d;const n=Bt(),s=xt(),i=y.useRef(null),o=((d=As.find(m=>{const h=`${Xi}/${m.path}`;return n.pathname===h||n.pathname.startsWith(`${h}/`)}))==null?void 0:d.path)??As[0].path,c=y.useCallback(m=>{s(`${Xi}/${m}`)},[s]),u=y.useCallback(m=>{var S,T;const h=(S=i.current)==null?void 0:S.querySelectorAll('[role="tab"]');if(!h)return;const g=Array.from(h).findIndex(N=>N===document.activeElement),v=g>=0?g:As.findIndex(N=>N.path===o);let b=v;if(m.key==="ArrowDown"||m.key==="j"||m.key==="J")m.preventDefault(),b=(v+1)%As.length;else if(m.key==="ArrowUp"||m.key==="k"||m.key==="K")m.preventDefault(),b=(v-1+As.length)%As.length;else if(m.key==="Home")m.preventDefault(),b=0;else if(m.key==="End")m.preventDefault(),b=As.length-1;else return;const _=As[b].path;s(`${Xi}/${_}`),(T=h[b])==null||T.focus()},[o,s]);return l.jsx("nav",{className:oc.nav,ref:i,role:"tablist","aria-orientation":"vertical","aria-label":"Settings",onKeyDown:u,children:As.map(m=>{const h=m.path===o;return l.jsxs("button",{role:"tab",type:"button","aria-selected":h,tabIndex:h?0:-1,className:`${oc.tab} ${h?oc.tabActive:""}`,onClick:()=>c(m.path),children:[l.jsx("span",{className:oc.tabIcon,"aria-hidden":"true",children:m.icon}),m.label]},m.path)})})}function VI({tasks:n,taskStatusById:s,sessionStatusByTaskId:i}){const o=new Map;for(const u of n)if(u.parentTaskId){const d=o.get(u.parentTaskId);d?d.push(u):o.set(u.parentTaskId,[u])}const c=new Map(f0.map(u=>[u,[]]));for(const u of n){const d=mp(u.status),m=u.dependsOn.length>0&&u.dependsOn.some(T=>s.get(T)!=="complete"),h=o.get(u.id)??[],g=h.length,v=h.filter(T=>T.status==="complete").length;let b;if(d==="paused"&&i){const T=i.get(u.id);T==="idle"?b="Needs input":T==="completed"&&(b="Ready to complete")}const _={task:u,isBlocked:m,childCount:g,doneChildCount:v,pausedSubBadge:b},S=c.get(d);S?S.push(_):c.get("not_started").push(_)}for(const u of c.values())u.sort((d,m)=>d.task.sortOrder-m.task.sortOrder);return f0.map(u=>{const d=va(u);return{status:u,label:d.label,style:d,tasks:c.get(u)??[]}})}const HI="_boardContainer_1c4y1_1",GI="_column_1c4y1_17",$I="_columnHeader_1c4y1_34",qI="_columnIcon_1c4y1_47",FI="_columnLabel_1c4y1_52",ZI="_columnCount_1c4y1_57",KI="_cardList_1c4y1_67",YI="_emptyPlaceholder_1c4y1_76",JI="_card_1c4y1_67",WI="_cardHeader_1c4y1_107",XI="_cardStatusIcon_1c4y1_113",QI="_cardTitle_1c4y1_119",e4="_cardBadges_1c4y1_127",t4="_badge_1c4y1_134",n4="_blockedBadge_1c4y1_146",s4="_childBadge_1c4y1_151",a4="_depBadge_1c4y1_155",i4="_parentBadge_1c4y1_159",o4="_pausedSubBadge_1c4y1_166",r4="_personaBadge_1c4y1_170",l4="_envBadge_1c4y1_174",c4="_emptyCta_1c4y1_178",u4="_ctaButton_1c4y1_188",d4="_ctaDescription_1c4y1_204",Xe={boardContainer:HI,column:GI,columnHeader:$I,columnIcon:qI,columnLabel:FI,columnCount:ZI,cardList:KI,emptyPlaceholder:YI,card:JI,cardHeader:WI,cardStatusIcon:XI,cardTitle:QI,cardBadges:e4,badge:t4,blockedBadge:n4,childBadge:s4,depBadge:a4,parentBadge:i4,pausedSubBadge:o4,personaBadge:r4,envBadge:l4,emptyCta:c4,ctaButton:u4,ctaDescription:d4};function f4({workspaceId:n,environmentId:s,tasks:i,sessions:o,personas:c,environments:u}){const d=xt(),m=y.useMemo(()=>i.filter(_=>_.workspaceId===n),[i,n]),h=y.useMemo(()=>new Map(i.map(_=>[_.id,_.status])),[i]),g=y.useMemo(()=>new Map(m.map(_=>[_.id,_])),[m]),v=y.useMemo(()=>{const _=new Map(o.map(C=>[C.id,C])),S=new Map(c.map(C=>[C.id,C])),T=new Map(u.map(C=>[C.id,C])),N=new Map,j=new Map,w=new Map;for(const C of m)if(C.latestSessionId){const A=_.get(C.latestSessionId);if(A){if(N.set(C.id,A.endReason||A.status),A.personaId){const M=S.get(A.personaId);M&&j.set(C.id,M.name)}if(A.environmentId){const M=T.get(A.environmentId);M&&w.set(C.id,M.displayName)}}}return{sessionStatusByTaskId:N,personaNameByTaskId:j,environmentNameByTaskId:w}},[m,o,c,u]),b=y.useMemo(()=>VI({tasks:m,taskStatusById:h,sessionStatusByTaskId:v.sessionStatusByTaskId}),[m,h,v]);return m.length===0?l.jsxs("div",{className:Xe.emptyCta,"data-testid":"board-empty-cta",children:[l.jsx("button",{className:Xe.ctaButton,onClick:()=>d(ni(n,void 0,s)),children:"Create Task"}),l.jsx("div",{className:Xe.ctaDescription,children:"Break your work into tasks and let agents tackle them"})]}):l.jsx("div",{className:Xe.boardContainer,"data-testid":"board-container",children:b.map(_=>l.jsxs("section",{className:Xe.column,"data-testid":`board-column-${_.status}`,"aria-label":`${_.label}, ${_.tasks.length} ${_.tasks.length===1?"task":"tasks"}`,children:[l.jsxs("div",{className:Xe.columnHeader,children:[l.jsx("span",{className:Xe.columnIcon,style:{color:_.style.color},children:_.style.icon}),l.jsx("span",{className:Xe.columnLabel,children:_.label}),l.jsx("span",{className:Xe.columnCount,"data-testid":`board-count-${_.status}`,children:_.tasks.length})]}),l.jsx("div",{className:Xe.cardList,children:_.tasks.length===0?l.jsx("div",{className:Xe.emptyPlaceholder,children:"No tasks"}):l.jsx(ls,{mode:"popLayout",children:_.tasks.map(S=>l.jsx(Mt.div,{layout:!0,initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.15},children:l.jsx(p4,{boardTask:S,tasksById:g,personaName:v.personaNameByTaskId.get(S.task.id),envName:v.environmentNameByTaskId.get(S.task.id),onClick:()=>d(rs(S.task.id,void 0,n,s))})},S.task.id))})})]},_.status))})}function p4({boardTask:n,tasksById:s,personaName:i,envName:o,onClick:c}){const{task:u,isBlocked:d,childCount:m,doneChildCount:h,pausedSubBadge:g}=n,v=va(u.status),b=u.parentTaskId?s.get(u.parentTaskId):void 0;return l.jsxs("div",{className:Xe.card,tabIndex:0,role:"button","data-testid":`board-card-${u.id}`,onClick:c,onKeyDown:_=>{(_.key==="Enter"||_.key===" ")&&(_.preventDefault(),c())},children:[l.jsxs("div",{className:Xe.cardHeader,children:[l.jsx("span",{className:Xe.cardStatusIcon,style:{color:v.color},children:v.icon}),l.jsx("span",{className:Xe.cardTitle,children:u.title})]}),l.jsxs("div",{className:Xe.cardBadges,children:[b&&l.jsx("span",{className:`${Xe.badge} ${Xe.parentBadge}`,title:b.title,children:b.title}),m>0&&l.jsxs("span",{className:`${Xe.badge} ${Xe.childBadge}`,children:[h,"/",m]}),d&&l.jsx("span",{className:`${Xe.badge} ${Xe.blockedBadge}`,children:"blocked"}),u.dependsOn.length>0&&!d&&l.jsx("span",{className:`${Xe.badge} ${Xe.depBadge}`,children:"dep"}),g&&l.jsx("span",{className:`${Xe.badge} ${Xe.pausedSubBadge}`,children:g}),i&&l.jsx("span",{className:`${Xe.badge} ${Xe.personaBadge}`,children:i}),o&&l.jsx("span",{className:`${Xe.badge} ${Xe.envBadge}`,children:o})]})]})}const m4="_formContent_ymnez_1",h4="_section_ymnez_13",g4="_label_ymnez_19",v4="_titleInput_ymnez_26",y4="_descriptionTextarea_ymnez_58",b4="_selectField_ymnez_94",_4="_checkboxRow_ymnez_128",x4="_checkboxLabel_ymnez_141",S4="_fieldError_ymnez_146",ut={formContent:m4,section:h4,label:g4,titleInput:v4,descriptionTextarea:y4,selectField:b4,checkboxRow:_4,checkboxLabel:x4,fieldError:S4};function T4(n,s){return{name:(n==null?void 0:n.name)??"",description:(n==null?void 0:n.description)??"",repoUrl:(n==null?void 0:n.repoUrl)??"",environmentId:(n==null?void 0:n.environmentId)??s??"",defaultPersonaId:(n==null?void 0:n.defaultPersonaId)??"",useWorktrees:(n==null?void 0:n.useWorktrees)??!0,workingDirectory:(n==null?void 0:n.workingDirectory)??""}}const k4=100;function w4({values:n,onChange:s,environments:i,personas:o,errors:c,disabled:u,autoFocusName:d}){const m=(h,g)=>{s({...n,[h]:g})};return l.jsxs("div",{className:ut.formContent,children:[l.jsxs("div",{className:ut.section,children:[l.jsx("label",{className:ut.label,htmlFor:"ws-name",children:"Name"}),l.jsx("input",{id:"ws-name",className:ut.titleInput,type:"text",value:n.name,onChange:h=>m("name",h.target.value),placeholder:"Workspace name",maxLength:k4,autoFocus:d,disabled:u,"data-testid":"workspace-form-name"}),(c==null?void 0:c.name)&&l.jsx("span",{className:ut.fieldError,"data-testid":"workspace-form-error-name",children:c.name})]}),l.jsxs("div",{className:ut.section,children:[l.jsx("label",{className:ut.label,htmlFor:"ws-description",children:"Description"}),l.jsx("textarea",{id:"ws-description",className:ut.descriptionTextarea,value:n.description,onChange:h=>m("description",h.target.value),placeholder:"Optional description (Markdown supported)",disabled:u,"data-testid":"workspace-form-description"})]}),l.jsxs("div",{className:ut.section,children:[l.jsx("label",{className:ut.label,htmlFor:"ws-repo",children:"Repository URL"}),l.jsx("input",{id:"ws-repo",className:ut.titleInput,type:"text",value:n.repoUrl,onChange:h=>m("repoUrl",h.target.value),placeholder:"https://github.com/org/repo",disabled:u,"data-testid":"workspace-form-repo"}),(c==null?void 0:c.repoUrl)&&l.jsx("span",{className:ut.fieldError,"data-testid":"workspace-form-error-repoUrl",children:c.repoUrl})]}),l.jsxs("div",{className:ut.section,children:[l.jsx("label",{className:ut.label,htmlFor:"ws-environment",children:"Environment"}),l.jsxs("select",{id:"ws-environment",className:ut.selectField,value:n.environmentId,onChange:h=>m("environmentId",h.target.value),disabled:u,"data-testid":"workspace-form-environment",children:[l.jsx("option",{value:"",children:"Select environment…"}),i.map(h=>l.jsx("option",{value:h.id,children:h.displayName||h.id},h.id))]}),(c==null?void 0:c.environmentId)&&l.jsx("span",{className:ut.fieldError,"data-testid":"workspace-form-error-environmentId",children:c.environmentId})]}),l.jsxs("div",{className:ut.section,children:[l.jsx("label",{className:ut.label,htmlFor:"ws-persona",children:"Default Persona"}),l.jsxs("select",{id:"ws-persona",className:ut.selectField,value:n.defaultPersonaId,onChange:h=>m("defaultPersonaId",h.target.value),disabled:u,"data-testid":"workspace-form-persona",children:[l.jsx("option",{value:"",children:"(Inherit)"}),o.map(h=>l.jsx("option",{value:h.id,children:h.name},h.id))]})]}),l.jsx("div",{className:ut.section,children:l.jsxs("label",{className:ut.checkboxRow,children:[l.jsx("input",{type:"checkbox",checked:n.useWorktrees,onChange:h=>m("useWorktrees",h.target.checked),disabled:u,"data-testid":"workspace-form-worktrees"}),l.jsx("span",{className:ut.checkboxLabel,children:"Enable worktree isolation"})]})}),l.jsxs("div",{className:ut.section,children:[l.jsx("label",{className:ut.label,htmlFor:"ws-workdir",children:"Working Directory"}),l.jsx("input",{id:"ws-workdir",className:ut.titleInput,type:"text",value:n.workingDirectory,onChange:h=>m("workingDirectory",h.target.value),placeholder:"Default (server default)",disabled:u,"data-testid":"workspace-form-workdir"})]})]})}const wx=y.createContext(void 0),N4=4e3;function j4({children:n}){const[s,i]=y.useState([]),o=y.useRef(0),c=y.useCallback(d=>{i(m=>m.filter(h=>h.id!==d))},[]),u=y.useCallback((d,m="info",h=N4)=>{const g=`toast-${++o.current}`;i(v=>[...v,{id:g,message:d,variant:m,duration:h}])},[]);return l.jsx(wx.Provider,{value:{toasts:s,showToast:u,dismissToast:c},children:n})}function un(){const n=y.useContext(wx);if(!n)throw new Error("useToast must be used within ToastProvider");return n}const lp="grackle-theme",Nx="grackle-prefer-system",jx="(prefers-color-scheme: dark)";let mr=[],bc;function Df(){bc=void 0;for(const n of mr)n()}function cp(){return typeof window>"u"?!1:window.matchMedia(jx).matches}function _r(){if(typeof localStorage>"u")return $y;try{const n=localStorage.getItem(lp);if(n!==null&&Sx.has(n))return n}catch{}return $y}function Ac(){if(typeof localStorage>"u")return!1;try{return localStorage.getItem(Nx)==="true"}catch{return!1}}function up(n){return Hc.find(s=>s.variantLightId===n||s.variantDarkId===n)}function Cx(n,s){const i=rp(n);if(i!=null&&i.variantDarkId)return s&&i.variantLightId?cp()?i.variantDarkId:i.variantLightId:i.variantDarkId;if(i!=null&&i.hidden&&s){const o=up(n);if(o!=null&&o.variantLightId&&o.variantDarkId)return cp()?o.variantDarkId:o.variantLightId}return n}function qi(n,s,i=!1){i&&document.documentElement.classList.add("no-transitions"),document.documentElement.dataset.theme=Cx(n,s),i&&(document.documentElement.offsetHeight,requestAnimationFrame(()=>{document.documentElement.classList.remove("no-transitions")}))}typeof document<"u"&&qi(_r(),Ac());function C4(){return bc===void 0&&(bc={themeId:_r(),systemDark:cp(),preferSystem:Ac()}),bc}function E4(n){return mr=[...mr,n],()=>{mr=mr.filter(s=>s!==n)}}function A4(){const n=y.useSyncExternalStore(E4,C4),{themeId:s,preferSystem:i}=n,o=Cx(s,i),c=y.useCallback(d=>{if(Sx.has(d)){try{localStorage.setItem(lp,d)}catch{}qi(d,Ac(),!0),Df()}},[]),u=y.useCallback(d=>{try{localStorage.setItem(Nx,d?"true":"false")}catch{}if(d){const m=_r(),h=rp(m);if(h!=null&&h.hidden){const g=up(m);if(g)try{localStorage.setItem(lp,g.id)}catch{}}}qi(_r(),d,!0),Df()},[]);return y.useEffect(()=>{qi(s,i)},[s,i]),y.useEffect(()=>{if(typeof window>"u")return;const d=window.matchMedia(jx),m=()=>{const h=_r(),g=Ac();if(g){const v=rp(h);if(v!=null&&v.variantDarkId&&v.variantLightId&&qi(h,g),v!=null&&v.hidden){const b=up(h);b!=null&&b.variantDarkId&&b.variantLightId&&qi(h,g)}}Df()};return d.addEventListener("change",m),()=>{d.removeEventListener("change",m)}},[]),{themeId:s,setTheme:c,resolvedThemeId:o,preferSystem:i,setPreferSystem:u}}const Ex=y.createContext(void 0);function D4({children:n}){const s=A4();return l.jsx(Ex.Provider,{value:s,children:n})}function Ax(){const n=y.useContext(Ex);if(!n)throw new Error("useThemeContext must be used within ThemeProvider");return n}const Dx=y.createContext(void 0),Rx=y.createContext(void 0);function R4({children:n}){const[s,i]=y.useState(void 0),o=y.useCallback(c=>{i(c)},[]);return l.jsx(Rx.Provider,{value:o,children:l.jsx(Dx.Provider,{value:s,children:n})})}function M4(){return y.useContext(Dx)}function O4(){const n=y.useContext(Rx);if(n===void 0)throw new Error("useSidebarSetter must be used within a SidebarProvider");return n}const om=y.createContext(void 0);function pt(){const n=y.useContext(om);if(!n)throw new Error("useGrackle must be used within GrackleProvider");return n}function Mx(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function Ox(n,s){return console.warn(`[ws] Malformed "${n}" message: ${s}`),!1}function I4(n){return Mx(n)&&typeof n.sessionId=="string"&&typeof n.eventType=="string"&&typeof n.timestamp=="string"&&typeof n.content=="string"&&(n.raw===void 0||typeof n.raw=="string")}const B4=new Set(["off","subscription","api_key"]),rc=new Set(["off","on"]);function L4(n){return Mx(n)&&B4.has(n.claude)&&rc.has(n.github)&&rc.has(n.copilot)&&rc.has(n.codex)&&rc.has(n.goose)}function Ix(n){switch(n){case"waiting_input":return"idle";case"completed":return"stopped";case"killed":return"stopped";case"failed":return"stopped";case"interrupted":return"stopped";case"terminated":return"stopped";default:return n}}function Bx(n){switch(n){case"completed":return"completed";case"killed":return"killed";case"failed":return"interrupted";case"interrupted":return"interrupted";case"terminated":return"terminated";default:return}}const $i=5e3;function U4(n,s){const i=[];let o=n;const c=new Set;for(;o&&s.has(o)&&!c.has(o);){c.add(o);const u=s.get(o);i.unshift(u),o=u.parentTaskId||void 0}return i}const Qa={label:"Home",url:Wa};function z4(n){return n?[Qa,{label:"Settings",url:Xi},{label:n,url:void 0}]:[Qa,{label:"Settings",url:void 0}]}const Lx={label:"Environments",url:eo};function P4(){return[Qa,{label:"Environments",url:void 0}]}function V4(){return[Qa,{label:"New Chat",url:void 0}]}function H4(n){return[Qa,{label:`Session ${n.slice(0,8)}`,url:void 0}]}function G4(n,s,i,o){const c=i.find(d=>d.id===n),u=o.find(d=>d.id===s);return[Qa,Lx,{label:(u==null?void 0:u.displayName)??"Environment",url:to(s)},{label:(c==null?void 0:c.name)??"Workspace",url:void 0}]}function $4(n,s,i,o,c){const u=U4(n,c),d=c.get(n),m=d==null?void 0:d.workspaceId,h=m?i.find(S=>S.id===m):void 0,g=s??(h==null?void 0:h.environmentId),v=g?o.find(S=>S.id===g):void 0,b=[Qa];v&&g&&(b.push(Lx),b.push({label:v.displayName,url:to(g)})),h&&g&&b.push({label:h.name,url:Qi(h.id,g)});for(let S=0;S<u.length-1;S++)b.push({label:u[S].title,url:rs(u[S].id,void 0,m,g)});const _=u[u.length-1];return b.push({label:(_==null?void 0:_.title)??n,url:void 0}),b}function rm(n){const s=[];for(const i of n){const o=s[s.length-1];i.eventType==="text"&&(o==null?void 0:o.eventType)==="text"?s[s.length-1]={...o,content:o.content+i.content}:s.push(i)}return s}function lm(n){const s=new Map;for(const u of n)if(u.raw)try{s.set(u,JSON.parse(u.raw))}catch{}const i=new Map;for(const u of n){if(u.eventType!=="tool_use")continue;const d=s.get(u);if(!(!d||typeof d.id!="string"))try{const m=JSON.parse(u.content);i.set(d.id,{tool:m.tool,args:m.args})}catch{}}const o=new Set;return n.map(u=>{if(u.eventType!=="tool_result")return u;const d=s.get(u);if(!d||typeof d.tool_use_id!="string")return u;const m=i.get(d.tool_use_id);if(!m)return u;o.add(d.tool_use_id);let h;const g=u.content.trim();if(g.startsWith("{"))try{const v=JSON.parse(g);typeof v.detailedContent=="string"&&(h=v.detailedContent)}catch{}return{...u,toolUseCtx:{...m,detailedResult:h}}}).filter(u=>{if(u.eventType!=="tool_use")return!0;const d=s.get(u);return d&&typeof d.id=="string"?!o.has(d.id):!0})}function q4(n,s,i){const o=n.filter(h=>h.status==="running"||h.status==="idle"||h.status==="waiting").length,c=Ux(s),u=s.filter(h=>dp(h,c)).length,d=s.filter(h=>h.status==="paused"||h.status==="failed"||dp(h,c)).length,m=i.filter(h=>h.status==="disconnected"||h.status==="error").length;return{activeSessions:o,blockedTasks:u,attentionTasks:d,unhealthyEnvironments:m}}function Ux(n){const s=new Map;for(const i of n)s.set(i.id,i.status);return s}function dp(n,s){return n.dependsOn.some(i=>s.get(i)!=="complete")}function F4(n,s){var d;const i=new Map;for(const m of s)i.set(m.id,m);const o=Ux(n),c=[];for(const m of n){const h=m.workspaceId?((d=i.get(m.workspaceId))==null?void 0:d.name)??"Unknown":"Unknown";m.status==="failed"?c.push({task:m,reason:"failed",workspaceName:h}):dp(m,o)?c.push({task:m,reason:"blocked",workspaceName:h}):m.status==="paused"&&c.push({task:m,reason:"paused",workspaceName:h})}const u={failed:0,blocked:1,paused:2};return c.sort((m,h)=>(u[m.reason]??3)-(u[h.reason]??3)),c}function Z4(n,s){const i=new Map;for(const o of s)i.set(o.id,o);return n.filter(o=>o.status==="running"||o.status==="idle"||o.status==="waiting").map(o=>{var c;return{session:o,environmentName:((c=i.get(o.environmentId))==null?void 0:c.displayName)??"Unknown"}})}function K4(n,s,i){const o=new Map;for(const c of s){if(!c.workspaceId)continue;let u=o.get(c.workspaceId);u||(u={totalTasks:0,completedTasks:0,workingTasks:0,failedTasks:0},o.set(c.workspaceId,u)),u.totalTasks+=1,c.status==="complete"?u.completedTasks+=1:c.status==="working"?u.workingTasks+=1:c.status==="failed"&&(u.failedTasks+=1)}return n.map(c=>{const u=o.get(c.id)??{totalTasks:0,completedTasks:0,workingTasks:0,failedTasks:0};return{workspace:c,totalTasks:u.totalTasks,completedTasks:u.completedTasks,workingTasks:u.workingTasks,failedTasks:u.failedTasks}})}const ss=[{id:"kn-auth-flow",label:"Authentication Flow",kind:"knowledge",category:"concept",content:"The application uses JWT Bearer tokens for stateless authentication. Access tokens expire after 24h. Refresh tokens are stored in the database and rotated on use. The auth middleware verifies tokens and attaches the decoded payload to req.user.",tags:["auth","jwt","security"],workspaceId:"proj-alpha",createdAt:"2026-02-25T10:30:00Z",updatedAt:"2026-02-27T08:15:00Z",val:5},{id:"kn-db-schema",label:"Database Schema",kind:"knowledge",category:"concept",content:"PostgreSQL database with tables: users, sessions, refresh_tokens, audit_log. Uses UUID primary keys, TIMESTAMPTZ for all timestamps, and JSONB for flexible metadata columns. Connection pooling via pg-pool with per-tenant isolation.",tags:["database","postgres","schema"],workspaceId:"proj-alpha",createdAt:"2026-02-23T11:00:00Z",updatedAt:"2026-02-26T22:45:00Z",val:4},{id:"kn-error-handling",label:"Error Response Pattern",kind:"knowledge",category:"concept",content:"All API errors follow the shape { error: string, code: string, details?: unknown }. HTTP status codes map to: 400 (validation), 401 (unauthenticated), 403 (forbidden), 404 (not found), 409 (conflict), 429 (rate limited), 500 (internal).",tags:["api","errors","patterns"],workspaceId:"proj-alpha",createdAt:"2026-02-27T08:17:00Z",updatedAt:"2026-02-27T08:17:00Z",val:3},{id:"kn-rate-limiting",label:"Rate Limiting Strategy",kind:"knowledge",category:"concept",content:"Token-bucket algorithm with in-memory state per client IP. Default rate: 100 requests/minute, burst: 20. Returns 429 with Retry-After header. Redis adapter available for multi-instance deployments.",tags:["api","rate-limiting","infrastructure"],workspaceId:"proj-alpha",createdAt:"2026-02-27T09:00:00Z",updatedAt:"2026-02-27T09:00:00Z",val:2},{id:"kn-etl-pipeline",label:"ETL Pipeline Architecture",kind:"knowledge",category:"concept",content:"Data pipelines follow an Extract-Transform-Load pattern with pluggable stages. Each stage reads from a source (Postgres, S3, API), transforms via configurable mappers, and loads into a target (Parquet, BigQuery, S3). Incremental loads use high-watermark tracking.",tags:["etl","pipeline","architecture"],workspaceId:"proj-beta",createdAt:"2026-02-26T08:00:00Z",updatedAt:"2026-02-27T09:05:00Z",val:4},{id:"kn-parquet-format",label:"Parquet Output Format",kind:"knowledge",category:"concept",content:"Parquet files are written with row-group buffering (configurable batch size, default 10000 rows). Supports Snappy, ZSTD, and GZIP compression. Schema is derived from the internal column type system using Arrow type mapping.",tags:["parquet","data-format","compression"],workspaceId:"proj-beta",createdAt:"2026-02-26T08:05:00Z",updatedAt:"2026-02-26T08:15:00Z",val:3},{id:"kn-jwt-over-session",label:"JWT over Session Auth",kind:"knowledge",category:"decision",content:"Chose JWT tokens over server-side sessions for stateless auth. Rationale: (1) no session store needed, (2) works across microservices without shared state, (3) supports mobile clients natively. Trade-off: tokens can't be revoked instantly (mitigated by short expiry + refresh rotation).",tags:["auth","decision","jwt"],workspaceId:"proj-alpha",createdAt:"2026-02-25T10:00:00Z",updatedAt:"2026-02-25T10:00:00Z",val:3},{id:"kn-pg-pool-decision",label:"pg-pool over Knex",kind:"knowledge",category:"decision",content:"Chose pg-pool over Knex for connection pooling. pg-pool gives direct control over idle timeout, max connections, and health check queries. Knex wraps pg-pool and adds query-building overhead we don't need since we write raw SQL with parameterized queries.",tags:["database","decision","postgres"],workspaceId:"proj-alpha",createdAt:"2026-02-23T11:30:00Z",updatedAt:"2026-02-23T11:30:00Z",val:2},{id:"kn-watermark-decision",label:"Local Watermark Storage",kind:"knowledge",category:"decision",content:"Currently using local SQLite for watermark storage. This works for single-worker pipelines but needs to move to a shared store (Redis or Postgres) for production multi-worker scenarios. Tracked as a follow-up task.",tags:["pipeline","decision","watermarks"],workspaceId:"proj-beta",createdAt:"2026-02-27T09:05:00Z",updatedAt:"2026-02-27T09:05:00Z",val:2},{id:"kn-jwt-middleware",label:"JWT Verify Middleware",kind:"knowledge",category:"snippet",content:`\`\`\`typescript
63
- export function verifyToken(req: Request, res: Response, next: NextFunction): void {
64
- const header = req.headers.authorization;
65
- if (!header?.startsWith("Bearer ")) {
66
- res.status(401).json({ error: "Missing token" });
67
- return;
68
- }
69
- const decoded = jwt.verify(header.slice(7), JWT_SECRET) as JwtPayload;
70
- req.user = decoded;
71
- next();
72
- }
73
- \`\`\``,tags:["auth","jwt","middleware","typescript"],workspaceId:"proj-alpha",createdAt:"2026-02-27T08:15:14Z",updatedAt:"2026-02-27T08:15:14Z",val:2},{id:"kn-audit-schema",label:"Audit Log Schema",kind:"knowledge",category:"snippet",content:`\`\`\`sql
74
- CREATE TABLE audit_log (
75
- id BIGSERIAL PRIMARY KEY,
76
- user_id UUID REFERENCES users(id),
77
- action TEXT NOT NULL,
78
- entity_type TEXT NOT NULL,
79
- entity_id TEXT NOT NULL,
80
- old_value JSONB,
81
- new_value JSONB,
82
- ip_address INET,
83
- created_at TIMESTAMPTZ DEFAULT now()
84
- );
85
- \`\`\``,tags:["database","audit","schema","sql"],workspaceId:"proj-alpha",createdAt:"2026-02-26T22:45:15Z",updatedAt:"2026-02-26T22:45:15Z",val:2},{id:"kn-n1-query",label:"N+1 Query in User List",kind:"knowledge",category:"insight",content:"GET /api/users performs a separate query for each user's role metadata, resulting in N+1 queries. For 500 users this adds ~2 seconds of latency. Solution: use a JOIN or batch lookup to fetch all role data in a single query.",tags:["performance","database","n+1"],workspaceId:"proj-alpha",createdAt:"2026-02-22T09:30:00Z",updatedAt:"2026-02-22T09:30:00Z",val:2},{id:"kn-session-race",label:"Session Cleanup Race Condition",kind:"knowledge",category:"insight",content:"When two concurrent requests hit /api/logout, the second call throws a 500 because the session row has already been deleted. Fix: use DELETE ... RETURNING or add IF EXISTS guard to make the operation idempotent.",tags:["bug","concurrency","sessions"],workspaceId:"proj-alpha",createdAt:"2026-02-26T22:50:00Z",updatedAt:"2026-02-26T22:50:00Z",val:2},{id:"kn-ref-task-001",label:"JWT Auth Task",kind:"reference",sourceType:"task",sourceId:"task-001",content:"Implement JWT authentication across all protected routes, replacing session-based auth.",workspaceId:"proj-alpha",createdAt:"2026-02-25T10:00:00Z",updatedAt:"2026-02-27T08:15:00Z",val:3},{id:"kn-ref-task-006",label:"Parquet Export Task",kind:"reference",sourceType:"task",sourceId:"task-006",content:"Add Parquet export support for pipeline outputs, enabling downstream Spark consumption.",workspaceId:"proj-beta",createdAt:"2026-02-26T08:00:00Z",updatedAt:"2026-02-27T09:00:00Z",val:3},{id:"kn-ref-sess-001",label:"Auth Middleware Session",kind:"reference",sourceType:"session",sourceId:"sess-001",content:"Active session implementing JWT auth middleware, rewrote auth.ts, login.ts, and test suite.",workspaceId:"proj-alpha",createdAt:"2026-02-27T08:15:00Z",updatedAt:"2026-02-27T08:15:42Z",val:2}],fa=[{source:"kn-auth-flow",target:"kn-jwt-over-session",type:"decided_by"},{source:"kn-auth-flow",target:"kn-jwt-middleware",type:"implemented_by"},{source:"kn-auth-flow",target:"kn-ref-task-001",type:"tracked_in"},{source:"kn-auth-flow",target:"kn-error-handling",type:"relates_to"},{source:"kn-jwt-over-session",target:"kn-ref-task-001",type:"motivated_by"},{source:"kn-db-schema",target:"kn-pg-pool-decision",type:"decided_by"},{source:"kn-db-schema",target:"kn-audit-schema",type:"contains"},{source:"kn-db-schema",target:"kn-n1-query",type:"affected_by"},{source:"kn-db-schema",target:"kn-session-race",type:"affected_by"},{source:"kn-rate-limiting",target:"kn-error-handling",type:"relates_to"},{source:"kn-rate-limiting",target:"kn-auth-flow",type:"depends_on"},{source:"kn-etl-pipeline",target:"kn-parquet-format",type:"outputs_to"},{source:"kn-etl-pipeline",target:"kn-watermark-decision",type:"decided_by"},{source:"kn-etl-pipeline",target:"kn-ref-task-006",type:"tracked_in"},{source:"kn-parquet-format",target:"kn-ref-task-006",type:"tracked_in"},{source:"kn-watermark-decision",target:"kn-etl-pipeline",type:"relates_to"},{source:"kn-ref-task-001",target:"kn-ref-sess-001",type:"has_session"},{source:"kn-jwt-middleware",target:"kn-ref-sess-001",type:"created_in"},{source:"kn-audit-schema",target:"kn-db-schema",type:"part_of"}],Y4=new Map(ss.map(n=>[n.id,n]));function Rf(n){const s=Y4.get(n);if(!s)throw new Error(`MOCK_KNOWLEDGE_NODES is missing node "${n}"`);return s}const Fy={"kn-auth-flow":{node:Rf("kn-auth-flow"),edges:[{fromId:"kn-auth-flow",toId:"kn-jwt-over-session",type:"decided_by"},{fromId:"kn-auth-flow",toId:"kn-jwt-middleware",type:"implemented_by"},{fromId:"kn-auth-flow",toId:"kn-ref-task-001",type:"tracked_in"},{fromId:"kn-auth-flow",toId:"kn-error-handling",type:"relates_to"},{fromId:"kn-rate-limiting",toId:"kn-auth-flow",type:"depends_on"}]},"kn-db-schema":{node:Rf("kn-db-schema"),edges:[{fromId:"kn-db-schema",toId:"kn-pg-pool-decision",type:"decided_by"},{fromId:"kn-db-schema",toId:"kn-audit-schema",type:"contains"},{fromId:"kn-db-schema",toId:"kn-n1-query",type:"affected_by"},{fromId:"kn-db-schema",toId:"kn-session-race",type:"affected_by"},{fromId:"kn-audit-schema",toId:"kn-db-schema",type:"part_of"}]},"kn-etl-pipeline":{node:Rf("kn-etl-pipeline"),edges:[{fromId:"kn-etl-pipeline",toId:"kn-parquet-format",type:"outputs_to"},{fromId:"kn-etl-pipeline",toId:"kn-watermark-decision",type:"decided_by"},{fromId:"kn-etl-pipeline",toId:"kn-ref-task-006",type:"tracked_in"},{fromId:"kn-watermark-decision",toId:"kn-etl-pipeline",type:"relates_to"}]}},J4=[{id:"env-local-01",displayName:"Local Dev",adapterType:"local",adapterConfig:"{}",status:"connected",bootstrapped:!0},{id:"env-docker-01",displayName:"Docker Sandbox",adapterType:"docker",adapterConfig:'{"image":"node:20"}',status:"connected",bootstrapped:!0},{id:"env-cs-01",displayName:"GitHub Codespace",adapterType:"codespace",adapterConfig:'{"codespaceName":"my-codespace"}',status:"connected",bootstrapped:!0},{id:"env-remote-01",displayName:"Staging (SSH)",adapterType:"ssh",adapterConfig:'{"host":"192.168.1.10","user":"deploy","sshPort":22}',status:"disconnected",bootstrapped:!1}],W4=[{id:"sess-001-prev",environmentId:"env-local-01",runtime:"claude-code",status:"stopped",endReason:"interrupted",prompt:"Implement auth middleware",startedAt:"2026-02-26T14:00:00Z",endedAt:"2026-02-26T15:12:00Z",error:"Context window exceeded before completing implementation",inputTokens:84200,outputTokens:12750,costUsd:.41},{id:"sess-001",environmentId:"env-local-01",runtime:"claude-code",status:"running",prompt:"Refactor the authentication middleware to use JWT tokens",startedAt:"2026-02-27T08:15:00Z",inputTokens:42600,outputTokens:8100,costUsd:.22},{id:"sess-002",environmentId:"env-docker-01",runtime:"copilot",status:"stopped",endReason:"completed",prompt:"Write unit tests for the user registration endpoint",startedAt:"2026-02-27T07:30:00Z",endedAt:"2026-02-27T07:33:00Z",inputTokens:31400,outputTokens:9800,costUsd:.18},{id:"sess-003",environmentId:"env-local-01",runtime:"claude-code",status:"stopped",endReason:"interrupted",prompt:"Migrate database schema to add audit_log table",startedAt:"2026-02-26T22:45:00Z",endedAt:"2026-02-26T23:10:00Z",inputTokens:56300,outputTokens:14200,costUsd:.31},{id:"sess-004",environmentId:"env-docker-01",runtime:"codex",status:"running",prompt:"Implement rate limiting for the public API",startedAt:"2026-02-27T09:00:00Z",inputTokens:18900,outputTokens:4500,costUsd:.1},{id:"sess-005",environmentId:"env-cs-01",runtime:"claude-code",status:"suspended",prompt:"Refactor database connection pooling for multi-tenant isolation",startedAt:"2026-02-27T06:00:00Z",inputTokens:67800,outputTokens:19300,costUsd:.38}],X4=[{sessionId:"sess-001-prev",eventType:"status",timestamp:"2026-02-26T14:00:01Z",content:"running"},{sessionId:"sess-001-prev",eventType:"system",timestamp:"2026-02-26T14:00:02Z",content:`You are a senior backend engineer. Focus on security best practices and thorough testing.
86
- Project: acme/alpha — Node.js + Express REST API
87
- Task: Implement auth middleware using JWT tokens`,raw:JSON.stringify({systemContext:!0})},{sessionId:"sess-001-prev",eventType:"text",timestamp:"2026-02-26T14:00:05Z",content:"I'll start by reading the current authentication middleware to understand what needs to change."},{sessionId:"sess-001-prev",eventType:"tool_use",timestamp:"2026-02-26T14:00:06Z",content:JSON.stringify({tool:"Read",args:{file_path:"src/middleware/auth.ts"}}),raw:JSON.stringify({id:"tu-prev-001",type:"tool_use"})},{sessionId:"sess-001-prev",eventType:"tool_result",timestamp:"2026-02-26T14:00:07Z",content:`import session from "express-session";
88
- import type { Request, Response, NextFunction } from "express";
89
-
90
- export function requireAuth(req: Request, res: Response, next: NextFunction): void {
91
- if (!req.session?.userId) {
92
- res.status(401).json({ error: "Not authenticated" });
93
- return;
94
- }
95
- next();
96
- }`,raw:JSON.stringify({tool_use_id:"tu-prev-001"})},{sessionId:"sess-001-prev",eventType:"text",timestamp:"2026-02-26T14:00:10Z",content:"The current auth uses express-session with server-side session storage. Let me find all files that depend on this pattern."},{sessionId:"sess-001-prev",eventType:"tool_use",timestamp:"2026-02-26T14:00:11Z",content:JSON.stringify({tool:"Grep",args:{pattern:"req\\.session",path:"src/"}}),raw:JSON.stringify({id:"tu-prev-002",type:"tool_use"})},{sessionId:"sess-001-prev",eventType:"tool_result",timestamp:"2026-02-26T14:00:12Z",content:`src/middleware/auth.ts:4: if (!req.session?.userId) {
97
- src/routes/login.ts:18: req.session.userId = user.id;
98
- src/routes/login.ts:19: req.session.role = user.role;
99
- src/routes/protected.ts:7: const userId = req.session.userId;`,raw:JSON.stringify({tool_use_id:"tu-prev-002"})},{sessionId:"sess-001-prev",eventType:"usage",timestamp:"2026-02-26T14:30:00Z",content:JSON.stringify({input_tokens:42100,output_tokens:6350,cost_usd:.21})},{sessionId:"sess-001-prev",eventType:"text",timestamp:"2026-02-26T14:30:02Z",content:"Found 3 files using session-based auth. Now let me read the login route and the protected route to understand the full flow before making changes."},{sessionId:"sess-001-prev",eventType:"tool_use",timestamp:"2026-02-26T14:30:03Z",content:JSON.stringify({tool:"Read",args:{file_path:"src/routes/login.ts"}}),raw:JSON.stringify({id:"tu-prev-003",type:"tool_use"})},{sessionId:"sess-001-prev",eventType:"tool_result",timestamp:"2026-02-26T14:30:04Z",content:`import { Router } from "express";
100
- import bcrypt from "bcrypt";
101
- import { db } from "../db.js";
102
-
103
- const router = Router();
104
-
105
- router.post("/login", async (req, res) => {
106
- const { email, password } = req.body;
107
- const user = await db.users.findByEmail(email);
108
- if (!user || !await bcrypt.compare(password, user.passwordHash)) {
109
- return res.status(401).json({ error: "Invalid credentials" });
110
- }
111
- req.session.userId = user.id;
112
- req.session.role = user.role;
113
- res.json({ ok: true });
114
- });
115
-
116
- export default router;`,raw:JSON.stringify({tool_use_id:"tu-prev-003"})},{sessionId:"sess-001-prev",eventType:"error",timestamp:"2026-02-26T15:12:00Z",content:"Context window exceeded before completing implementation"},{sessionId:"sess-001-prev",eventType:"status",timestamp:"2026-02-26T15:12:01Z",content:"interrupted"},{sessionId:"sess-001",eventType:"status",timestamp:"2026-02-27T08:15:01Z",content:"running"},{sessionId:"sess-001",eventType:"system",timestamp:"2026-02-27T08:15:02Z",content:`You are a senior backend engineer. Focus on security best practices and thorough testing.
117
- Project: acme/alpha — Node.js + Express REST API
118
- Task: Implement auth middleware using JWT tokens
119
-
120
- Note: A previous session attempted this task but was interrupted. Pick up where it left off.`,raw:JSON.stringify({systemContext:!0})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:04Z",content:"I'll pick up the JWT auth migration. The previous session identified 3 files that need updating. Let me verify the current state and start implementing."},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:04.5Z",content:JSON.stringify({tool:"TodoWrite",args:{todos:[{content:"Install jsonwebtoken package",activeForm:"Installing jsonwebtoken",status:"pending"},{content:"Rewrite auth middleware for JWT",activeForm:"Rewriting auth middleware",status:"pending"},{content:"Update login route to issue tokens",activeForm:"Updating login route",status:"pending"},{content:"Update protected routes",activeForm:"Updating protected routes",status:"pending"},{content:"Fix and update tests",activeForm:"Fixing tests",status:"pending"},{content:"Run full test suite",activeForm:"Running tests",status:"pending"}]}})},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:05Z",content:JSON.stringify({tool:"Grep",args:{pattern:"express-session|req\\.session",path:"src/",output_mode:"files_with_matches"}}),raw:JSON.stringify({id:"tu-001-01",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:06Z",content:`src/middleware/auth.ts
121
- src/routes/login.ts
122
- src/routes/protected.ts`,raw:JSON.stringify({tool_use_id:"tu-001-01"})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:08Z",content:"Good, same 3 files. Let me install the JWT library first, then rewrite the middleware."},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:09Z",content:JSON.stringify({tool:"Bash",args:{command:"npm install jsonwebtoken && npm install -D @types/jsonwebtoken"}}),raw:JSON.stringify({id:"tu-001-02",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:11Z",content:`added 12 packages in 3.2s
123
-
124
- added 1 package in 0.8s`,raw:JSON.stringify({tool_use_id:"tu-001-02"})},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:11.5Z",content:JSON.stringify({tool:"TodoWrite",args:{todos:[{content:"Install jsonwebtoken package",activeForm:"Installing jsonwebtoken",status:"completed"},{content:"Rewrite auth middleware for JWT",activeForm:"Rewriting auth middleware",status:"in_progress"},{content:"Update login route to issue tokens",activeForm:"Updating login route",status:"pending"},{content:"Update protected routes",activeForm:"Updating protected routes",status:"pending"},{content:"Fix and update tests",activeForm:"Fixing tests",status:"pending"},{content:"Run full test suite",activeForm:"Running tests",status:"pending"}]}})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:12Z",content:"Now I'll rewrite the auth middleware to use JWT verification instead of session checks."},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:13Z",content:JSON.stringify({tool:"Write",args:{file_path:"src/middleware/auth.ts",content:`import jwt from "jsonwebtoken";
125
- import type { Request, Response, NextFunction } from "express";
126
-
127
- const JWT_SECRET = process.env.JWT_SECRET || "change-me";
128
-
129
- export interface JwtPayload {
130
- userId: string;
131
- role: string;
132
- iat: number;
133
- exp: number;
134
- }
135
-
136
- export function verifyToken(req: Request, res: Response, next: NextFunction): void {
137
- const header = req.headers.authorization;
138
- if (!header?.startsWith("Bearer ")) {
139
- res.status(401).json({ error: "Missing or malformed token" });
140
- return;
141
- }
142
- try {
143
- const decoded = jwt.verify(header.slice(7), JWT_SECRET) as JwtPayload;
144
- req.user = decoded;
145
- next();
146
- } catch (err) {
147
- if (err instanceof jwt.TokenExpiredError) {
148
- res.status(401).json({ error: "Token expired" });
149
- } else {
150
- res.status(403).json({ error: "Invalid token" });
151
- }
152
- }
153
- }
154
- `}}),raw:JSON.stringify({id:"tu-001-03",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:14Z",content:"File written: src/middleware/auth.ts (32 lines)",raw:JSON.stringify({tool_use_id:"tu-001-03"})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:16Z",content:`Now I need to update the login route to issue JWT tokens instead of setting session data.
155
-
156
- The new login flow will:
157
- 1. Validate credentials (unchanged)
158
- 2. Generate a JWT with \`userId\` and \`role\` claims
159
- 3. Return the token in the response body
160
- 4. Include a refresh token for long-lived sessions`},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:17Z",content:JSON.stringify({tool:"Write",args:{file_path:"src/routes/login.ts",content:`import { Router } from "express";
161
- import bcrypt from "bcrypt";
162
- import jwt from "jsonwebtoken";
163
- import crypto from "node:crypto";
164
- import { db } from "../db.js";
165
-
166
- const JWT_SECRET = process.env.JWT_SECRET || "change-me";
167
- const ACCESS_TOKEN_EXPIRY = "24h";
168
- const REFRESH_TOKEN_BYTES = 48;
169
-
170
- const router = Router();
171
-
172
- router.post("/login", async (req, res) => {
173
- const { email, password } = req.body;
174
- const user = await db.users.findByEmail(email);
175
- if (!user || !(await bcrypt.compare(password, user.passwordHash))) {
176
- return res.status(401).json({ error: "Invalid credentials" });
177
- }
178
-
179
- const accessToken = jwt.sign(
180
- { userId: user.id, role: user.role },
181
- JWT_SECRET,
182
- { expiresIn: ACCESS_TOKEN_EXPIRY },
183
- );
184
-
185
- const refreshToken = crypto.randomBytes(REFRESH_TOKEN_BYTES).toString("hex");
186
- await db.refreshTokens.create({ userId: user.id, token: refreshToken });
187
-
188
- res.json({ accessToken, refreshToken, expiresIn: ACCESS_TOKEN_EXPIRY });
189
- });
190
-
191
- export default router;
192
- `}}),raw:JSON.stringify({id:"tu-001-04",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:18Z",content:"File written: src/routes/login.ts (33 lines)",raw:JSON.stringify({tool_use_id:"tu-001-04"})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:20Z",content:"Let me update the protected route to use the new `req.user` shape from the JWT payload."},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:21Z",content:JSON.stringify({tool:"Edit",args:{file_path:"src/routes/protected.ts",old_string:"const userId = req.session.userId;",new_string:"const { userId } = req.user as JwtPayload;"}}),raw:JSON.stringify({id:"tu-001-05",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:22Z",content:"Updated src/routes/protected.ts",raw:JSON.stringify({tool_use_id:"tu-001-05"})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:24Z",content:"Now let me run the existing tests to make sure nothing is broken, then I'll add new JWT-specific tests."},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:25Z",content:JSON.stringify({tool:"Bash",args:{command:"npm test"}}),raw:JSON.stringify({id:"tu-001-06",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:30Z",content:` PASS src/routes/__tests__/login.test.ts
193
- PASS src/routes/__tests__/protected.test.ts
194
- FAIL src/middleware/__tests__/auth.test.ts
195
- x should reject missing session (12ms)
196
- x should allow valid session (8ms)
197
-
198
- 2 failed, 12 passed, 14 total
199
-
200
- Test Suites: 1 failed, 2 passed, 3 total`,raw:JSON.stringify({tool_use_id:"tu-001-06",is_error:!0})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:32Z",content:`Two tests failed because they still test the old session-based auth. I need to rewrite those tests for JWT.
201
-
202
- Let me update the auth middleware tests:`},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:33Z",content:JSON.stringify({tool:"Write",args:{file_path:"src/middleware/__tests__/auth.test.ts",content:`import { describe, it, expect } from "vitest";
203
- import jwt from "jsonwebtoken";
204
- import { verifyToken } from "../auth.js";
205
- import { createMockReqRes } from "../../test-utils/mock-express.js";
206
-
207
- const SECRET = "test-secret";
208
- process.env.JWT_SECRET = SECRET;
209
-
210
- describe("verifyToken", () => {
211
- it("should reject requests without Authorization header", () => {
212
- const { req, res, next } = createMockReqRes();
213
- verifyToken(req, res, next);
214
- expect(res.status).toHaveBeenCalledWith(401);
215
- });
216
-
217
- it("should reject expired tokens", () => {
218
- const token = jwt.sign({ userId: "u1", role: "user" }, SECRET, { expiresIn: "-1h" });
219
- const { req, res, next } = createMockReqRes({ authorization: \`Bearer \${token}\` });
220
- verifyToken(req, res, next);
221
- expect(res.status).toHaveBeenCalledWith(401);
222
- });
223
-
224
- it("should accept valid tokens and attach user to request", () => {
225
- const token = jwt.sign({ userId: "u1", role: "admin" }, SECRET, { expiresIn: "1h" });
226
- const { req, res, next } = createMockReqRes({ authorization: \`Bearer \${token}\` });
227
- verifyToken(req, res, next);
228
- expect(next).toHaveBeenCalled();
229
- expect(req.user).toMatchObject({ userId: "u1", role: "admin" });
230
- });
231
- });
232
- `}}),raw:JSON.stringify({id:"tu-001-07",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:34Z",content:"File written: src/middleware/__tests__/auth.test.ts (32 lines)",raw:JSON.stringify({tool_use_id:"tu-001-07"})},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:35Z",content:JSON.stringify({tool:"Bash",args:{command:"npm test"}}),raw:JSON.stringify({id:"tu-001-08",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:40Z",content:` PASS src/routes/__tests__/login.test.ts
233
- PASS src/routes/__tests__/protected.test.ts
234
- PASS src/middleware/__tests__/auth.test.ts
235
-
236
- Test Suites: 3 passed, 3 total
237
- Tests: 14 passed, 14 total`,raw:JSON.stringify({tool_use_id:"tu-001-08"})},{sessionId:"sess-001",eventType:"usage",timestamp:"2026-02-27T08:15:41Z",content:JSON.stringify({input_tokens:42600,output_tokens:8100,cost_usd:.22})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:42Z",content:`All 14 tests pass. Here's a summary of the changes:
238
-
239
- ### Changes made
240
-
241
- | File | Action |
242
- |------|--------|
243
- | \`src/middleware/auth.ts\` | Rewrote to verify JWT Bearer tokens |
244
- | \`src/routes/login.ts\` | Now issues JWT access + refresh tokens |
245
- | \`src/routes/protected.ts\` | Updated to read \`req.user\` from JWT payload |
246
- | \`src/middleware/__tests__/auth.test.ts\` | Updated tests for JWT verification |
247
-
248
- ### Key decisions
249
- - **Access token expiry**: 24 hours (configurable via \`JWT_SECRET\` env var)
250
- - **Refresh tokens**: 48-byte random hex, stored in DB
251
- - **Error handling**: Distinguishes expired tokens (401) from invalid tokens (403)`},{sessionId:"sess-002",eventType:"status",timestamp:"2026-02-27T07:30:01Z",content:"running"},{sessionId:"sess-002",eventType:"system",timestamp:"2026-02-27T07:30:02Z",content:`You are a QA engineer. Write comprehensive tests covering happy paths, edge cases, error scenarios, and security.
252
- Project: acme/alpha — Node.js + Express REST API
253
- Task: Write unit tests for the user registration endpoint`,raw:JSON.stringify({systemContext:!0})},{sessionId:"sess-002",eventType:"text",timestamp:"2026-02-27T07:30:04Z",content:"I'll write thorough tests for `POST /api/register`. Let me first read the registration endpoint to understand its behavior."},{sessionId:"sess-002",eventType:"tool_use",timestamp:"2026-02-27T07:30:05Z",content:JSON.stringify({tool:"Read",args:{file_path:"src/routes/register.ts"}}),raw:JSON.stringify({id:"tu-002-01",type:"tool_use"})},{sessionId:"sess-002",eventType:"tool_result",timestamp:"2026-02-27T07:30:06Z",content:`import { Router } from "express";
254
- import bcrypt from "bcrypt";
255
- import { db } from "../db.js";
256
- import { validateEmail, validatePassword } from "../utils/validators.js";
257
-
258
- const SALT_ROUNDS = 12;
259
- const router = Router();
260
-
261
- router.post("/register", async (req, res) => {
262
- const { name, email, password } = req.body;
263
-
264
- if (!name || !email || !password) {
265
- return res.status(400).json({ error: "Missing required fields" });
266
- }
267
- if (!validateEmail(email)) {
268
- return res.status(400).json({ error: "Invalid email format" });
269
- }
270
- if (!validatePassword(password)) {
271
- return res.status(400).json({ error: "Password too weak" });
272
- }
273
-
274
- const existing = await db.users.findByEmail(email);
275
- if (existing) {
276
- return res.status(409).json({ error: "Email already registered" });
277
- }
278
-
279
- const passwordHash = await bcrypt.hash(password, SALT_ROUNDS);
280
- const user = await db.users.create({ name, email, passwordHash });
281
- res.status(201).json({ id: user.id, name: user.name, email: user.email });
282
- });
283
-
284
- export default router;`,raw:JSON.stringify({tool_use_id:"tu-002-01"})},{sessionId:"sess-002",eventType:"text",timestamp:"2026-02-27T07:30:10Z",content:`Good. The endpoint validates input, checks for duplicates, hashes the password, and creates the user. I'll write tests covering:
285
-
286
- 1. **Happy path** - valid registration
287
- 2. **Missing fields** - each required field missing
288
- 3. **Invalid email** - malformed email format
289
- 4. **Weak password** - password validation failure
290
- 5. **Duplicate email** - conflict with existing user
291
- 6. **SQL injection** - malicious email input
292
- 7. **XSS payload** - HTML in the name field
293
- 8. **Response shape** - correct status codes and body structure`},{sessionId:"sess-002",eventType:"tool_use",timestamp:"2026-02-27T07:30:12Z",content:JSON.stringify({tool:"Write",args:{file_path:"src/routes/__tests__/register.test.ts",content:"// [test content - 8 test cases as described above]"}}),raw:JSON.stringify({id:"tu-002-02",type:"tool_use"})},{sessionId:"sess-002",eventType:"tool_result",timestamp:"2026-02-27T07:30:13Z",content:"File written: src/routes/__tests__/register.test.ts (142 lines)",raw:JSON.stringify({tool_use_id:"tu-002-02"})},{sessionId:"sess-002",eventType:"tool_use",timestamp:"2026-02-27T07:31:00Z",content:JSON.stringify({tool:"Bash",args:{command:"npm test -- --testPathPattern=register"}}),raw:JSON.stringify({id:"tu-002-03",type:"tool_use"})},{sessionId:"sess-002",eventType:"tool_result",timestamp:"2026-02-27T07:31:30Z",content:` PASS src/routes/__tests__/register.test.ts
294
- POST /api/register
295
- ✓ should register a valid user (28ms)
296
- ✓ should reject missing name (4ms)
297
- ✓ should reject missing email (3ms)
298
- ✓ should reject missing password (3ms)
299
- ✓ should reject invalid email format (5ms)
300
- ✓ should reject weak password (4ms)
301
- ✓ should reject duplicate email (12ms)
302
- ✓ should sanitize HTML in name field (6ms)
303
-
304
- Tests: 8 passed, 8 total`,raw:JSON.stringify({tool_use_id:"tu-002-03"})},{sessionId:"sess-002",eventType:"usage",timestamp:"2026-02-27T07:32:00Z",content:JSON.stringify({input_tokens:31400,output_tokens:9800,cost_usd:.18})},{sessionId:"sess-002",eventType:"text",timestamp:"2026-02-27T07:32:30Z",content:"All 8 test cases pass. Created `src/routes/__tests__/register.test.ts` with comprehensive coverage for the registration endpoint including input validation, duplicate detection, and security edge cases."},{sessionId:"sess-002",eventType:"status",timestamp:"2026-02-27T07:33:00Z",content:"completed"},{sessionId:"sess-003",eventType:"status",timestamp:"2026-02-26T22:45:01Z",content:"running"},{sessionId:"sess-003",eventType:"system",timestamp:"2026-02-26T22:45:02Z",content:`You are a database engineer. Focus on safe migrations, zero-downtime deployments, and data integrity.
305
- Project: acme/alpha — Node.js + Express + PostgreSQL
306
- Task: Add audit_log table and migrate schema`,raw:JSON.stringify({systemContext:!0})},{sessionId:"sess-003",eventType:"text",timestamp:"2026-02-26T22:45:05Z",content:"I need to add an `audit_log` table for tracking all write operations. Let me review the current schema first."},{sessionId:"sess-003",eventType:"tool_use",timestamp:"2026-02-26T22:45:06Z",content:JSON.stringify({tool:"Read",args:{file_path:"migrations/001_initial.sql"}}),raw:JSON.stringify({id:"tu-003-01",type:"tool_use"})},{sessionId:"sess-003",eventType:"tool_result",timestamp:"2026-02-26T22:45:07Z",content:`CREATE TABLE users (
307
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
308
- name TEXT NOT NULL,
309
- email TEXT UNIQUE NOT NULL,
310
- password_hash TEXT NOT NULL,
311
- role TEXT DEFAULT 'user',
312
- created_at TIMESTAMPTZ DEFAULT now(),
313
- updated_at TIMESTAMPTZ DEFAULT now()
314
- );
315
-
316
- CREATE TABLE sessions (
317
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
318
- user_id UUID REFERENCES users(id),
319
- expires_at TIMESTAMPTZ NOT NULL,
320
- created_at TIMESTAMPTZ DEFAULT now()
321
- );`,raw:JSON.stringify({tool_use_id:"tu-003-01"})},{sessionId:"sess-003",eventType:"text",timestamp:"2026-02-26T22:45:12Z",content:"I see the schema. I'll create a migration that:\n1. Adds a `last_login_at` column to `users`\n2. Adds an index on `sessions.expires_at` for efficient cleanup queries\n3. Creates the `audit_log` table\n\nLet me write the migration file:"},{sessionId:"sess-003",eventType:"tool_use",timestamp:"2026-02-26T22:45:14Z",content:JSON.stringify({tool:"Write",args:{file_path:"migrations/002_audit_log.sql",content:`-- Migration: 002_audit_log
322
- -- Add audit logging and user activity tracking
323
-
324
- BEGIN;
325
-
326
- -- 1. Add last_login_at to users
327
- ALTER TABLE users ADD COLUMN last_login_at TIMESTAMPTZ;
328
-
329
- -- 2. Index for session cleanup queries
330
- CREATE INDEX CONCURRENTLY idx_sessions_expires_at ON sessions (expires_at);
331
-
332
- -- 3. Audit log table
333
- CREATE TABLE audit_log (
334
- id BIGSERIAL PRIMARY KEY,
335
- user_id UUID REFERENCES users(id),
336
- action TEXT NOT NULL,
337
- entity_type TEXT NOT NULL,
338
- entity_id TEXT NOT NULL,
339
- old_value JSONB,
340
- new_value JSONB,
341
- ip_address INET,
342
- created_at TIMESTAMPTZ DEFAULT now()
343
- );
344
-
345
- CREATE INDEX idx_audit_log_user ON audit_log (user_id);
346
- CREATE INDEX idx_audit_log_entity ON audit_log (entity_type, entity_id);
347
- CREATE INDEX idx_audit_log_created ON audit_log (created_at);
348
-
349
- COMMIT;
350
- `}}),raw:JSON.stringify({id:"tu-003-02",type:"tool_use"})},{sessionId:"sess-003",eventType:"tool_result",timestamp:"2026-02-26T22:45:15Z",content:"File written: migrations/002_audit_log.sql (29 lines)",raw:JSON.stringify({tool_use_id:"tu-003-02"})},{sessionId:"sess-003",eventType:"text",timestamp:"2026-02-26T22:46:00Z",content:"Now I need to implement the audit middleware that logs write operations. This will intercept POST, PUT, PATCH, and DELETE requests."},{sessionId:"sess-003",eventType:"tool_use",timestamp:"2026-02-26T22:46:02Z",content:JSON.stringify({tool:"Bash",args:{command:"npm run migrate -- --dry-run"}}),raw:JSON.stringify({id:"tu-003-03",type:"tool_use"})},{sessionId:"sess-003",eventType:"tool_result",timestamp:"2026-02-26T22:46:10Z",content:`Dry run: would apply 002_audit_log.sql
351
- - ALTER TABLE users ADD COLUMN last_login_at
352
- - CREATE INDEX CONCURRENTLY idx_sessions_expires_at
353
- - CREATE TABLE audit_log
354
- - 3 indexes on audit_log
355
-
356
- WARNING: CREATE INDEX CONCURRENTLY cannot run inside a transaction block.
357
- Please split this into a separate migration step.`,raw:JSON.stringify({tool_use_id:"tu-003-03",is_error:!0})},{sessionId:"sess-003",eventType:"text",timestamp:"2026-02-26T22:46:15Z",content:"Good catch from the dry run! `CREATE INDEX CONCURRENTLY` can't run inside a transaction. I need to split the migration into two files: one for the transactional DDL and another for the concurrent index creation."},{sessionId:"sess-003",eventType:"usage",timestamp:"2026-02-26T23:00:00Z",content:JSON.stringify({input_tokens:56300,output_tokens:14200,cost_usd:.31})},{sessionId:"sess-003",eventType:"status",timestamp:"2026-02-26T23:10:00Z",content:"interrupted"},{sessionId:"sess-004",eventType:"status",timestamp:"2026-02-27T09:00:01Z",content:"running"},{sessionId:"sess-004",eventType:"system",timestamp:"2026-02-27T09:00:02Z",content:`You are a backend engineer specializing in API infrastructure.
358
- Project: acme/data-pipeline — ETL pipelines for analytics
359
- Task: Implement rate limiting for the public API using a token-bucket algorithm`,raw:JSON.stringify({systemContext:!0})},{sessionId:"sess-004",eventType:"text",timestamp:"2026-02-27T09:00:05Z",content:"I'll implement rate limiting using a token-bucket algorithm. Let me first survey the existing API infrastructure to find the right integration point."},{sessionId:"sess-004",eventType:"tool_use",timestamp:"2026-02-27T09:00:05.5Z",content:JSON.stringify({tool:"TodoWrite",args:{todos:[{content:"Survey middleware structure",activeForm:"Surveying middleware",status:"in_progress"},{content:"Implement token-bucket algorithm",activeForm:"Implementing token bucket",status:"pending"},{content:"Add rate limit middleware to app",activeForm:"Adding middleware",status:"pending"},{content:"Write tests for rate limiting",activeForm:"Writing tests",status:"pending"},{content:"Add Redis adapter for multi-instance",activeForm:"Adding Redis adapter",status:"pending"}]}})},{sessionId:"sess-004",eventType:"tool_use",timestamp:"2026-02-27T09:00:06Z",content:JSON.stringify({tool:"Glob",args:{pattern:"src/middleware/**/*.ts"}}),raw:JSON.stringify({id:"tu-004-01",type:"tool_use"})},{sessionId:"sess-004",eventType:"tool_result",timestamp:"2026-02-27T09:00:07Z",content:`src/middleware/cors.ts
360
- src/middleware/error-handler.ts
361
- src/middleware/logger.ts
362
- src/middleware/request-id.ts`,raw:JSON.stringify({tool_use_id:"tu-004-01"})},{sessionId:"sess-004",eventType:"tool_use",timestamp:"2026-02-27T09:00:09Z",content:JSON.stringify({tool:"TodoWrite",args:{todos:[{content:"Survey middleware structure",activeForm:"Surveying middleware",status:"completed"},{content:"Implement token-bucket algorithm",activeForm:"Implementing token bucket",status:"in_progress"},{content:"Add rate limit middleware to app",activeForm:"Adding middleware",status:"pending"},{content:"Write tests for rate limiting",activeForm:"Writing tests",status:"pending"},{content:"Add Redis adapter for multi-instance",activeForm:"Adding Redis adapter",status:"pending"}]}})},{sessionId:"sess-004",eventType:"text",timestamp:"2026-02-27T09:00:10Z",content:`Good middleware structure already in place. I'll add a \`rate-limiter.ts\` module that:
363
-
364
- - Uses an **in-memory token bucket** per client IP
365
- - Supports configurable rate (requests/second) and burst size
366
- - Returns \`429 Too Many Requests\` with \`Retry-After\` header
367
- - Has a Redis adapter option for multi-instance deployments
368
-
369
- Let me implement it:`},{sessionId:"sess-004",eventType:"tool_use",timestamp:"2026-02-27T09:00:12Z",content:JSON.stringify({tool:"Write",args:{file_path:"src/middleware/rate-limiter.ts",content:"// Token bucket rate limiter implementation"}}),raw:JSON.stringify({id:"tu-004-02",type:"tool_use"})},{sessionId:"sess-004",eventType:"tool_result",timestamp:"2026-02-27T09:00:13Z",content:"File written: src/middleware/rate-limiter.ts (87 lines)",raw:JSON.stringify({tool_use_id:"tu-004-02"})},{sessionId:"sess-004",eventType:"text",timestamp:"2026-02-27T09:00:18Z",content:"Now I need to wire the rate limiter into the Express middleware stack. It should go after the request-ID middleware but before route handlers."},{sessionId:"sess-005",eventType:"status",timestamp:"2026-02-27T06:00:01Z",content:"running"},{sessionId:"sess-005",eventType:"system",timestamp:"2026-02-27T06:00:02Z",content:`You are a database specialist. Focus on connection management, performance, and multi-tenant isolation.
370
- Project: acme/alpha — Node.js + Express + PostgreSQL
371
- Task: Refactor database connection pooling for multi-tenant isolation`,raw:JSON.stringify({systemContext:!0})},{sessionId:"sess-005",eventType:"text",timestamp:"2026-02-27T06:00:05Z",content:"I'll refactor the DB layer to support per-tenant connection pools. This is needed because the current single-pool design means one slow tenant can exhaust connections for everyone."},{sessionId:"sess-005",eventType:"tool_use",timestamp:"2026-02-27T06:00:06Z",content:JSON.stringify({tool:"Read",args:{file_path:"src/db/pool.ts"}}),raw:JSON.stringify({id:"tu-005-01",type:"tool_use"})},{sessionId:"sess-005",eventType:"tool_result",timestamp:"2026-02-27T06:00:07Z",content:`import pg from "pg";
372
-
373
- const pool = new pg.Pool({
374
- connectionString: process.env.DATABASE_URL,
375
- max: 20,
376
- idleTimeoutMillis: 30000,
377
- });
378
-
379
- export { pool };`,raw:JSON.stringify({tool_use_id:"tu-005-01"})},{sessionId:"sess-005",eventType:"text",timestamp:"2026-02-27T06:00:12Z",content:`The current pool is a single shared instance with \`max: 20\`. For multi-tenant isolation, I need:
380
-
381
- 1. **A \`PoolManager\` class** that creates and caches per-tenant pools
382
- 2. **Configurable limits** per tenant (max connections, idle timeout)
383
- 3. **Health checks** with automatic pool eviction for unhealthy connections
384
- 4. **Graceful shutdown** that drains all pools`},{sessionId:"sess-005",eventType:"tool_use",timestamp:"2026-02-27T06:00:14Z",content:JSON.stringify({tool:"Grep",args:{pattern:"import.*pool|from.*pool",path:"src/",output_mode:"content"}}),raw:JSON.stringify({id:"tu-005-02",type:"tool_use"})},{sessionId:"sess-005",eventType:"tool_result",timestamp:"2026-02-27T06:00:15Z",content:`src/db/index.ts:1:import { pool } from "./pool.js";
385
- src/routes/users.ts:2:import { pool } from "../db/pool.js";
386
- src/routes/register.ts:3:import { pool } from "../db/pool.js";
387
- src/routes/admin.ts:4:import { pool } from "../db/pool.js";
388
- src/services/billing.ts:2:import { pool } from "../db/pool.js";
389
- src/services/analytics.ts:1:import { pool } from "../db/pool.js";`,raw:JSON.stringify({tool_use_id:"tu-005-02"})},{sessionId:"sess-005",eventType:"text",timestamp:"2026-02-27T06:00:20Z",content:`Six files import the pool directly. I'll need to:
390
- 1. Create a new \`PoolManager\` abstraction
391
- 2. Update all consumers to use \`getPool(tenantId)\` instead of the global pool
392
- 3. Add middleware to extract tenant ID from the request
393
-
394
- This is a significant refactor. Let me start with the PoolManager class.`},{sessionId:"sess-005",eventType:"usage",timestamp:"2026-02-27T06:30:00Z",content:JSON.stringify({input_tokens:67800,output_tokens:19300,cost_usd:.38})},{sessionId:"sess-005",eventType:"status",timestamp:"2026-02-27T06:30:01Z",content:"suspended"}],Q4=[{id:"proj-alpha",name:"Workspace Alpha",description:"Core platform API and authentication services",repoUrl:"https://github.com/acme/alpha",environmentId:"env-local-01",status:"active",workingDirectory:"",useWorktrees:!0,defaultPersonaId:"",createdAt:"2026-01-15T10:00:00Z",updatedAt:"2026-01-15T10:00:00Z"},{id:"proj-beta",name:"Data Pipeline",description:"ETL pipelines for analytics and reporting",repoUrl:"https://github.com/acme/data-pipeline",environmentId:"env-docker-01",status:"active",workingDirectory:"",useWorktrees:!0,defaultPersonaId:"",createdAt:"2026-02-01T14:30:00Z",updatedAt:"2026-02-01T14:30:00Z"},{id:"proj-gamma",name:"Mobile App",description:"React Native cross-platform mobile application",repoUrl:"",environmentId:"env-local-01",status:"archived",workingDirectory:"",useWorktrees:!0,defaultPersonaId:"",createdAt:"2025-11-20T09:00:00Z",updatedAt:"2025-11-20T09:00:00Z"}],eB=[{id:"task-001",workspaceId:"proj-alpha",title:"Implement JWT authentication",description:"Replace session-based auth with JWT tokens across all protected routes",status:"working",branch:"feat/jwt-auth",latestSessionId:"sess-001",dependsOn:[],reviewNotes:void 0,sortOrder:1,createdAt:"2026-02-25T10:00:00Z",parentTaskId:"",depth:0,childTaskIds:["task-001a","task-001b","task-001c"],canDecompose:!0,defaultPersonaId:"",workpad:JSON.stringify({status:"in_progress",summary:"Design and implement JWT-based authentication with access/refresh tokens, replacing session-based auth.",extra:{approach:"Replace express-session with JWT Bearer tokens. Access tokens expire in 24h, refresh tokens stored in DB.",files_changed:["src/middleware/auth.ts","src/routes/login.ts","src/routes/protected.ts"],decisions:["Chose jsonwebtoken over jose for consistency with existing codebase","24h access token expiry — long enough for dev sessions, short enough for security","Refresh tokens are 48-byte random hex stored in DB with user association"],blockers:"Need to verify token rotation strategy with security team before merging"}})},{id:"task-001a",workspaceId:"proj-alpha",title:"Design token schema",description:"Define JWT payload structure, expiry, and refresh token strategy",status:"complete",branch:"feat/jwt-auth/design-token-schema",latestSessionId:"",dependsOn:[],reviewNotes:void 0,sortOrder:1,createdAt:"2026-02-25T10:10:00Z",parentTaskId:"task-001",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-001b",workspaceId:"proj-alpha",title:"Implement auth middleware",description:"Build Express middleware that verifies JWT Bearer tokens",status:"working",branch:"feat/jwt-auth/implement-auth-middleware",latestSessionId:"sess-001",dependsOn:[],reviewNotes:void 0,sortOrder:2,createdAt:"2026-02-25T10:15:00Z",parentTaskId:"task-001",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-001c",workspaceId:"proj-alpha",title:"Write auth integration tests",description:"End-to-end tests for login flow, token refresh, and protected route access",status:"not_started",branch:"",latestSessionId:"",dependsOn:["task-001b"],reviewNotes:void 0,sortOrder:3,createdAt:"2026-02-25T10:20:00Z",parentTaskId:"task-001",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-002",workspaceId:"proj-alpha",title:"Add rate limiting",description:"Implement token-bucket rate limiting for public API endpoints",status:"not_started",branch:"",latestSessionId:"",dependsOn:["task-001"],reviewNotes:void 0,sortOrder:2,createdAt:"2026-02-25T10:05:00Z",parentTaskId:"",depth:0,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-003",workspaceId:"proj-alpha",title:"Set up OpenAPI documentation",description:"Generate Swagger docs from route decorators and serve at /api/docs",status:"paused",branch:"feat/openapi-docs",latestSessionId:"sess-002",dependsOn:[],reviewNotes:void 0,sortOrder:3,createdAt:"2026-02-24T16:00:00Z",parentTaskId:"",depth:0,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-004",workspaceId:"proj-alpha",title:"Database connection pooling",description:"Switch from single connection to a connection pool with health checks",status:"complete",branch:"feat/db-pool",latestSessionId:"",dependsOn:[],reviewNotes:void 0,sortOrder:4,createdAt:"2026-02-23T11:00:00Z",parentTaskId:"",depth:0,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-005",workspaceId:"proj-alpha",title:"Fix N+1 query in user list",description:"Use a JOIN instead of per-row lookups in GET /api/users",status:"not_started",branch:"fix/user-list-n1",latestSessionId:"",dependsOn:[],reviewNotes:void 0,sortOrder:5,createdAt:"2026-02-22T09:30:00Z",parentTaskId:"",depth:0,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-006",workspaceId:"proj-beta",title:"Add Parquet export support",description:"Allow pipeline outputs to be written as Parquet files for Spark consumption",status:"working",branch:"feat/parquet-export",latestSessionId:"",dependsOn:[],reviewNotes:void 0,sortOrder:1,createdAt:"2026-02-26T08:00:00Z",parentTaskId:"",depth:0,childTaskIds:["task-006a","task-006b","task-006c","task-006d"],canDecompose:!0,defaultPersonaId:"",workpad:JSON.stringify({status:"in_progress",summary:"Plan for adding Parquet export support, including compression options and performance benchmarks.",extra:{approach:"Use apache-arrow npm package for Parquet write support. Map internal column types to Arrow type system.",compression:{supported:["snappy","zstd","gzip"],default:"snappy"},benchmarks:{"1M rows snappy":"2.3s","1M rows zstd":"3.1s","1M rows gzip":"4.8s"}}})},{id:"task-006a",workspaceId:"proj-beta",title:"Define Parquet schema mapping",description:"Map internal column types to Arrow/Parquet type system",status:"complete",branch:"feat/parquet-export/define-parquet-schema-mapping",latestSessionId:"",dependsOn:[],reviewNotes:void 0,sortOrder:1,createdAt:"2026-02-26T08:05:00Z",parentTaskId:"task-006",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-006b",workspaceId:"proj-beta",title:"Implement row-group writer",description:"Write buffered row groups with configurable batch size",status:"complete",branch:"feat/parquet-export/implement-row-group-writer",latestSessionId:"",dependsOn:["task-006a"],reviewNotes:void 0,sortOrder:2,createdAt:"2026-02-26T08:10:00Z",parentTaskId:"task-006",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-006c",workspaceId:"proj-beta",title:"Add compression options",description:"Support Snappy, ZSTD, and GZIP compression for Parquet output",status:"working",branch:"feat/parquet-export/add-compression-options",latestSessionId:"sess-004",dependsOn:["task-006b"],reviewNotes:void 0,sortOrder:3,createdAt:"2026-02-26T08:15:00Z",parentTaskId:"task-006",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-006d",workspaceId:"proj-beta",title:"Write Parquet integration tests",description:"Round-trip tests: write Parquet, read back with pyarrow, verify data integrity",status:"not_started",branch:"",latestSessionId:"",dependsOn:["task-006c"],reviewNotes:void 0,sortOrder:4,createdAt:"2026-02-26T08:20:00Z",parentTaskId:"task-006",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-007",workspaceId:"proj-beta",title:"Implement incremental loads",description:"Track watermarks so pipelines only process new/changed rows",status:"working",branch:"feat/incremental",latestSessionId:"sess-004",dependsOn:[],reviewNotes:void 0,sortOrder:2,createdAt:"2026-02-26T08:30:00Z",parentTaskId:"",depth:0,childTaskIds:["task-007a","task-007b"],canDecompose:!0,defaultPersonaId:"",workpad:""},{id:"task-007a",workspaceId:"proj-beta",title:"Design watermark storage",description:"Define schema for per-pipeline high-watermark tracking",status:"complete",branch:"feat/incremental/design-watermark-storage",latestSessionId:"",dependsOn:[],reviewNotes:void 0,sortOrder:1,createdAt:"2026-02-26T08:35:00Z",parentTaskId:"task-007",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-007b",workspaceId:"proj-beta",title:"Implement change detection query",description:"Generate WHERE clauses from watermarks to fetch only changed rows",status:"failed",branch:"feat/incremental/implement-change-detection-query",latestSessionId:"",dependsOn:["task-007a"],reviewNotes:void 0,sortOrder:2,createdAt:"2026-02-26T08:40:00Z",parentTaskId:"task-007",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-008",workspaceId:"proj-beta",title:"Add pipeline monitoring dashboard",description:"Real-time metrics for pipeline throughput, latency, and error rates",status:"paused",branch:"feat/monitoring",latestSessionId:"",dependsOn:[],reviewNotes:void 0,sortOrder:3,createdAt:"2026-02-26T09:00:00Z",parentTaskId:"",depth:0,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""}],Zy=[{id:"find-001",workspaceId:"proj-alpha",taskId:"task-001",sessionId:"sess-001",category:"architecture",title:"Auth middleware is tightly coupled to Express",content:"The current auth middleware directly references Express Request/Response types. Consider extracting a framework-agnostic token verification layer so we can reuse it in the WebSocket auth path.",tags:["auth","decoupling","middleware"],createdAt:"2026-02-27T08:16:00Z"},{id:"find-002",workspaceId:"proj-alpha",taskId:"task-003",sessionId:"sess-002",category:"api",title:"Missing pagination on GET /api/users",content:"The users endpoint returns all rows without limit/offset. For datasets over 10k rows this will cause timeouts. Recommend cursor-based pagination with a default page size of 50.",tags:["api","pagination","performance"],createdAt:"2026-02-27T07:31:00Z"},{id:"find-003",workspaceId:"proj-alpha",taskId:"task-005",sessionId:"sess-003",category:"bug",title:"Race condition in session cleanup",content:"When two requests hit /api/logout concurrently, the second call throws a 500 because the session row has already been deleted. Needs an idempotent DELETE or a conditional check.",tags:["bug","concurrency","sessions"],createdAt:"2026-02-26T22:50:00Z"},{id:"find-004",workspaceId:"proj-alpha",taskId:"task-004",sessionId:"",category:"decision",title:"Chose pg-pool over knex connection pool",content:"pg-pool gives us direct control over idle timeout, max connections, and health check queries. Knex wraps pg-pool anyway and adds overhead we don't need since we write raw SQL.",tags:["database","decision","postgres"],createdAt:"2026-02-23T11:30:00Z"},{id:"find-005",workspaceId:"proj-alpha",taskId:"",sessionId:"",category:"dependency",title:"jsonwebtoken has 3 high-severity CVEs",content:"The jsonwebtoken package (v8.x) has known vulnerabilities. Consider migrating to jose which is maintained, supports ESM, and covers the same JWS/JWE surface area with zero dependencies.",tags:["security","dependency","jwt"],createdAt:"2026-02-27T08:20:00Z"},{id:"find-006",workspaceId:"proj-alpha",taskId:"task-001",sessionId:"sess-001",category:"pattern",title:"Consistent error response shape",content:"All error responses should follow the shape `{ error: string, code: string, details?: unknown }`. Currently some routes return `{ message: string }` and others return `{ error: string }`.",tags:["api","consistency","error-handling"],createdAt:"2026-02-27T08:17:00Z"},{id:"find-007",workspaceId:"proj-beta",taskId:"task-007",sessionId:"sess-004",category:"architecture",title:"Watermark storage should be pluggable",content:"The incremental load watermarks are currently stored in a local SQLite file. For production multi-worker scenarios, this needs to be backed by a shared store (Redis or Postgres).",tags:["architecture","pipeline","scalability"],createdAt:"2026-02-27T09:05:00Z"}],tB=[{name:"anthropic",tokenType:"env_var",envVar:"ANTHROPIC_API_KEY",filePath:"",expiresAt:""},{name:"github",tokenType:"env_var",envVar:"GITHUB_TOKEN",filePath:"",expiresAt:"2026-12-31T23:59:59Z"},{name:"gcp-service-account",tokenType:"file",envVar:"",filePath:"/home/user/.config/gcloud/credentials.json",expiresAt:""}],nB=[{id:"persona-arch",name:"Software Architect",description:"Designs system architecture, defines interfaces, and decomposes large features into implementable tasks.",systemPrompt:"You are a senior software architect. Focus on clean interfaces, separation of concerns, and scalable patterns. When decomposing work, create concrete subtasks with clear acceptance criteria.",toolConfig:JSON.stringify({allowedTools:["Read","Grep","Glob","Write","Edit"]}),runtime:"claude-code",model:"claude-sonnet-4-6",maxTurns:50,mcpServers:"[]",createdAt:"2026-02-20T10:00:00Z",updatedAt:"2026-02-20T10:00:00Z",type:"agent",script:"",allowedMcpTools:["task_create","task_update","task_list","finding_post","finding_list","knowledge_search","knowledge_create_node","session_spawn"]},{id:"persona-fe",name:"Frontend Engineer",description:"React specialist — builds UI components, writes CSS, implements routing, and creates Playwright tests.",systemPrompt:"You are a frontend engineer specializing in React, TypeScript, and modern CSS. Follow component composition patterns, use semantic HTML, and write accessible markup.",toolConfig:JSON.stringify({allowedTools:["Read","Grep","Glob","Write","Edit","Bash"]}),runtime:"claude-code",model:"claude-sonnet-4-6",maxTurns:100,mcpServers:"[]",createdAt:"2026-02-20T10:05:00Z",updatedAt:"2026-02-20T10:05:00Z",type:"agent",script:"",allowedMcpTools:[]},{id:"persona-reviewer",name:"Code Reviewer",description:"Reviews diffs for correctness, security, and style. Posts findings for issues discovered.",systemPrompt:"You are a meticulous code reviewer. Check for security vulnerabilities, performance issues, and style consistency. Post findings for anything noteworthy.",toolConfig:JSON.stringify({allowedTools:["Read","Grep","Glob"]}),runtime:"claude-code",model:"claude-sonnet-4-6",maxTurns:30,mcpServers:"[]",createdAt:"2026-02-20T10:10:00Z",updatedAt:"2026-02-20T10:10:00Z",type:"agent",script:"",allowedMcpTools:["finding_post","finding_list","knowledge_search"]},{id:"persona-tester",name:"QA Engineer",description:"Writes comprehensive test suites — unit tests, integration tests, and E2E Playwright specs.",systemPrompt:"You are a QA engineer focused on test coverage. Write tests that cover happy paths, edge cases, error scenarios, and accessibility. Use Playwright for E2E tests.",toolConfig:JSON.stringify({allowedTools:["Read","Grep","Glob","Write","Edit","Bash"]}),runtime:"claude-code",model:"claude-sonnet-4-6",maxTurns:80,mcpServers:"[]",createdAt:"2026-02-20T10:15:00Z",updatedAt:"2026-02-20T10:15:00Z",type:"agent",script:"",allowedMcpTools:[]},{id:"persona-lint",name:"Lint & Format",description:"Scripted persona — runs ESLint and Prettier on changed files, auto-fixes violations, and posts a findings summary.",systemPrompt:"",toolConfig:"{}",runtime:"genaiscript",model:"",maxTurns:1,mcpServers:"[]",createdAt:"2026-02-21T09:00:00Z",updatedAt:"2026-02-21T09:00:00Z",type:"script",script:`const files = env.files.filter(f => /\\.(ts|tsx|js)$/.test(f.filename));
395
- for (const f of files) {
396
- const eslintResult = await host.exec("npx", ["eslint", "--fix", f.filename]);
397
- if (eslintResult.exitCode !== 0) {
398
- env.findings.push({ category: "lint", title: \`Lint issues in \${f.filename}\`, content: eslintResult.stderr });
399
- }
400
- const prettierResult = await host.exec("npx", ["prettier", "--write", f.filename]);
401
- if (prettierResult.exitCode !== 0) {
402
- env.findings.push({ category: "format", title: \`Prettier issues in \${f.filename}\`, content: prettierResult.stderr });
403
- }
404
- }
405
- env.findings.push({ category: "summary", title: "Lint & format pass complete", content: \`Ran ESLint and Prettier on \${files.length} files\` });`,allowedMcpTools:[]}],sB={"task-001b":[{id:"sess-001-prev",environmentId:"env-local-01",runtime:"claude-code",status:"stopped",endReason:"interrupted",prompt:"Implement auth middleware",startedAt:"2026-02-26T14:00:00Z"},{id:"sess-001",environmentId:"env-local-01",runtime:"claude-code",status:"running",prompt:"Implement auth middleware",startedAt:"2026-02-27T08:15:00Z"}],"task-006c":[{id:"sess-004",environmentId:"env-docker-01",runtime:"claude-code",status:"running",prompt:"Add compression options",startedAt:"2026-02-27T09:00:00Z"}]};function Ee(n){return new Date(Date.now()+n).toISOString()}const Ky=[{label:"API Refactor",pauseForInput:!1,steps:[{delayMs:0,event:{eventType:"status",timestamp:Ee(0),content:"running"}},{delayMs:600,event:{eventType:"text",timestamp:Ee(600),content:"I'll start by finding all API route files that need refactoring."}},{delayMs:1200,event:{eventType:"tool_use",timestamp:Ee(1200),content:JSON.stringify({tool:"Glob",args:{pattern:"src/routes/**/*.ts"}}),raw:JSON.stringify({id:"stream-a-01",type:"tool_use"})}},{delayMs:1600,event:{eventType:"tool_result",timestamp:Ee(1600),content:`src/routes/users.ts
406
- src/routes/auth.ts
407
- src/routes/billing.ts
408
- src/routes/admin.ts
409
- src/routes/health.ts`,raw:JSON.stringify({tool_use_id:"stream-a-01"})}},{delayMs:2200,event:{eventType:"text",timestamp:Ee(2200),content:`Found 5 route files. Let me refactor users.ts to use Express Router with a middleware chain.
410
-
411
- \`\`\`typescript
412
- const router = Router();
413
- router.use(authenticate);
414
- router.use(validateBody);
415
-
416
- router.get("/", listUsers);
417
- router.post("/", createUser);
418
- router.get("/:id", getUser);
419
- router.put("/:id", updateUser);
420
- router.delete("/:id", deleteUser);
421
- \`\`\``}},{delayMs:3200,event:{eventType:"tool_use",timestamp:Ee(3200),content:JSON.stringify({tool:"Bash",args:{command:"npm test -- --testPathPattern=routes"}}),raw:JSON.stringify({id:"stream-a-02",type:"tool_use"})}},{delayMs:4e3,event:{eventType:"tool_result",timestamp:Ee(4e3),content:` PASS src/routes/__tests__/users.test.ts
422
- PASS src/routes/__tests__/auth.test.ts
423
- PASS src/routes/__tests__/billing.test.ts
424
-
425
- Test Suites: 3 passed, 3 total
426
- Tests: 22 passed, 22 total`,raw:JSON.stringify({tool_use_id:"stream-a-02"})}},{delayMs:4500,event:{eventType:"usage",timestamp:Ee(4500),content:JSON.stringify({input_tokens:28400,output_tokens:7200,cost_usd:.15})}},{delayMs:5e3,event:{eventType:"text",timestamp:Ee(5e3),content:"All 22 tests pass. The route refactoring is complete."}},{delayMs:5500,event:{eventType:"status",timestamp:Ee(5500),content:"completed"}}]},{label:"Database Migration",pauseForInput:!0,pauseAfterStep:4,steps:[{delayMs:0,event:{eventType:"status",timestamp:Ee(0),content:"running"}},{delayMs:600,event:{eventType:"text",timestamp:Ee(600),content:"Scanning the current database schema to plan the migration."}},{delayMs:1200,event:{eventType:"tool_use",timestamp:Ee(1200),content:JSON.stringify({tool:"Read",args:{file_path:"migrations/001_initial.sql"}}),raw:JSON.stringify({id:"stream-b-01",type:"tool_use"})}},{delayMs:1800,event:{eventType:"tool_result",timestamp:Ee(1800),content:`CREATE TABLE users (
427
- id UUID PRIMARY KEY,
428
- name TEXT NOT NULL,
429
- email TEXT UNIQUE NOT NULL,
430
- created_at TIMESTAMPTZ DEFAULT now()
431
- );
432
-
433
- CREATE TABLE sessions (
434
- id UUID PRIMARY KEY,
435
- user_id UUID REFERENCES users(id),
436
- expires_at TIMESTAMPTZ NOT NULL
437
- );`,raw:JSON.stringify({tool_use_id:"stream-b-01"})}},{delayMs:2600,event:{eventType:"text",timestamp:Ee(2600),content:`I found the tables to modify:
438
- - **users**: add column \`last_login_at\`
439
- - **sessions**: add index on \`expires_at\`
440
- - **audit_log**: new table
441
-
442
- This migration will add a NOT NULL column to the \`users\` table. The table has **50,000+ rows** which may lock the table briefly.
443
-
444
- Please confirm to proceed.`}}],resumeSteps:[{delayMs:500,event:{eventType:"text",timestamp:Ee(0),content:"Proceeding with migration."}},{delayMs:1200,event:{eventType:"tool_use",timestamp:Ee(700),content:JSON.stringify({tool:"Bash",args:{command:"npm run migrate"}}),raw:JSON.stringify({id:"stream-b-02",type:"tool_use"})}},{delayMs:2200,event:{eventType:"tool_result",timestamp:Ee(1700),content:`Applying 002_add_last_login.sql... done
445
- Applying 003_sessions_index.sql... done
446
- Applying 004_audit_log.sql... done
447
-
448
- 3 migrations applied successfully.`,raw:JSON.stringify({tool_use_id:"stream-b-02"})}},{delayMs:2800,event:{eventType:"text",timestamp:Ee(2300),content:"All 3 migrations applied successfully. The `audit_log` table is ready."}},{delayMs:3200,event:{eventType:"status",timestamp:Ee(2700),content:"completed"}}]},{label:"Test Writer",pauseForInput:!1,steps:[{delayMs:0,event:{eventType:"status",timestamp:Ee(0),content:"running"}},{delayMs:600,event:{eventType:"text",timestamp:Ee(600),content:"I'll generate tests for `src/services/billing.ts`. Let me read the implementation first."}},{delayMs:1200,event:{eventType:"tool_use",timestamp:Ee(1200),content:JSON.stringify({tool:"Read",args:{file_path:"src/services/billing.ts"}}),raw:JSON.stringify({id:"stream-c-01",type:"tool_use"})}},{delayMs:1800,event:{eventType:"tool_result",timestamp:Ee(1800),content:`import { StripeClient } from "./stripe-client.js";
449
- import type { Invoice, LineItem } from "../types/billing.js";
450
-
451
- export class BillingService {
452
- constructor(private stripe: StripeClient) {}
453
-
454
- async calculateMonthlyTotal(userId: string): Promise<number> {
455
- const invoices = await this.stripe.listInvoices(userId);
456
- return invoices.reduce((sum, inv) => sum + inv.total, 0);
457
- }
458
- }`,raw:JSON.stringify({tool_use_id:"stream-c-01"})}},{delayMs:2400,event:{eventType:"text",timestamp:Ee(2400),content:"The billing service imports from `./stripe-client.js`. Let me check if that module exists."}},{delayMs:2800,event:{eventType:"tool_use",timestamp:Ee(2800),content:JSON.stringify({tool:"Read",args:{file_path:"src/services/stripe-client.ts"}}),raw:JSON.stringify({id:"stream-c-02",type:"tool_use"})}},{delayMs:3200,event:{eventType:"tool_result",timestamp:Ee(3200),content:"Error: ENOENT: no such file or directory, open 'src/services/stripe-client.ts'",raw:JSON.stringify({tool_use_id:"stream-c-02",is_error:!0})}},{delayMs:3600,event:{eventType:"error",timestamp:Ee(3600),content:"Cannot resolve import 'src/services/stripe-client.ts' — module not found. The billing service depends on a Stripe client that doesn't exist in this environment."}},{delayMs:4e3,event:{eventType:"status",timestamp:Ee(4e3),content:"failed"}}]},{label:"Fix Auth Bug",pauseForInput:!1,steps:[{delayMs:0,event:{eventType:"status",timestamp:Ee(0),content:"running"}},{delayMs:600,event:{eventType:"text",timestamp:Ee(600),content:"Let me investigate the authentication bug..."}},{delayMs:1200,event:{eventType:"tool_use",timestamp:Ee(1200),content:JSON.stringify({tool:"Read",args:{file_path:"/src/middleware/auth.ts"}}),raw:JSON.stringify({id:"tool-mock-001"})}},{delayMs:1800,event:{eventType:"tool_result",timestamp:Ee(1800),content:`import jwt from "jsonwebtoken";
459
- import type { Request, Response, NextFunction } from "express";
460
-
461
- const JWT_SECRET = process.env.JWT_SECRET || "change-me";
462
-
463
- export function verifyToken(req: Request, res: Response, next: NextFunction): void {
464
- const header = req.headers.authorization;
465
- if (!header?.startsWith("Bearer ")) {
466
- res.status(401).json({ error: "Missing token" });
467
- return;
468
- }
469
- try {
470
- const decoded = jwt.verify(header.slice(7), JWT_SECRET);
471
- if (decoded.exp > Date.now() / 1000) {
472
- res.status(403).json({ error: "Token expired" });
473
- return;
474
- }
475
- req.user = decoded;
476
- next();
477
- } catch {
478
- res.status(403).json({ error: "Invalid token" });
479
- }
480
- }`,raw:JSON.stringify({tool_use_id:"tool-mock-001",is_error:!1})}},{delayMs:2600,event:{eventType:"text",timestamp:Ee(2600),content:"Found the issue — the token expiry check on line 14 is using `>` instead of `<`. A token is expired when `exp < now`, but the code checks `exp > now` which means it rejects *valid* tokens and accepts *expired* ones. Let me fix it."}},{delayMs:3400,event:{eventType:"tool_use",timestamp:Ee(3400),content:JSON.stringify({tool:"Edit",args:{file_path:"/src/middleware/auth.ts",old_string:" if (decoded.exp > Date.now() / 1000) {",new_string:" if (decoded.exp < Date.now() / 1000) {"}}),raw:JSON.stringify({id:"tool-mock-002"})}},{delayMs:4e3,event:{eventType:"tool_result",timestamp:Ee(4e3),content:"File updated successfully",raw:JSON.stringify({tool_use_id:"tool-mock-002",is_error:!1})}},{delayMs:4600,event:{eventType:"tool_use",timestamp:Ee(4600),content:JSON.stringify({tool:"Bash",args:{command:"npm test -- --grep auth"}}),raw:JSON.stringify({id:"tool-mock-003"})}},{delayMs:5800,event:{eventType:"tool_result",timestamp:Ee(5800),content:`[exit 0] > jest --grep auth
481
-
482
- PASS src/auth.test.ts
483
- ✓ validates JWT token (12ms)
484
- ✓ rejects expired token (3ms)
485
- ✓ handles missing header (1ms)
486
-
487
- Tests: 3 passed, 3 total
488
- Time: 1.234s`,raw:JSON.stringify({tool_use_id:"tool-mock-003",is_error:!1})}},{delayMs:6400,event:{eventType:"tool_use",timestamp:Ee(6400),content:JSON.stringify({tool:"Grep",args:{pattern:"decoded\\.exp",path:"src/"}}),raw:JSON.stringify({id:"tool-mock-004"})}},{delayMs:7e3,event:{eventType:"tool_result",timestamp:Ee(7e3),content:`src/middleware/auth.ts:14: if (decoded.exp < Date.now() / 1000) {
489
- src/utils/token-refresh.ts:28: const remaining = decoded.exp - Date.now() / 1000;`,raw:JSON.stringify({tool_use_id:"tool-mock-004",is_error:!1})}},{delayMs:7800,event:{eventType:"text",timestamp:Ee(7800),content:"Fixed. The token expiry comparison was inverted — `decoded.exp > Date.now()` should have been `<` (a token is expired when its `exp` is in the past). The other occurrence in `token-refresh.ts` uses subtraction (not comparison), so it was already correct. All 3 auth tests pass."}},{delayMs:8400,event:{eventType:"usage",timestamp:Ee(8400),content:JSON.stringify({input_tokens:42600,output_tokens:1850,cost_usd:.12})}},{delayMs:8800,event:{eventType:"status",timestamp:Ee(8800),content:"completed"}}]}],Yy=400;function aB({children:n}){const[s,i]=y.useState(J4),[o,c]=y.useState(W4),[u,d]=y.useState(X4),[m,h]=y.useState(void 0),[g,v]=y.useState(Q4),[b,_]=y.useState(eB),[S,T]=y.useState(Zy),[N,j]=y.useState(tB),[w,C]=y.useState({claude:"off",github:"off",copilot:"off",codex:"off",goose:"off"}),[A,M]=y.useState(nB),[D]=y.useState(sB),[E,H]=y.useState(""),[z,Z]=y.useState(ss),[F,Q]=y.useState(fa),[ae,pe]=y.useState(void 0),[oe,X]=y.useState(void 0),[B,q]=y.useState(""),te=y.useRef(void 0),re=y.useRef(0),de=y.useRef(0),$e=y.useRef(new Set),we=y.useRef(new Map),Se=y.useRef(b);Se.current=b;const Oe=y.useRef(new Map),le=y.useRef(new Map),fe=y.useCallback(G=>(re.current+=1,`mock-${G}-${String(re.current).padStart(3,"0")}`),[]),me=y.useCallback(()=>{const G=Ky[de.current%Ky.length];return de.current+=1,G},[]),Ce=y.useCallback((G,ee,ie)=>{const ce=setTimeout(()=>{var ue;$e.current.delete(ce),ie&&((ue=we.current.get(ie))==null||ue.delete(ce)),G()},ee);$e.current.add(ce),ie&&(we.current.has(ie)||we.current.set(ie,new Set),we.current.get(ie).add(ce))},[]),Lt=y.useCallback(G=>{const ee=we.current.get(G);ee&&(ee.forEach(ie=>{clearTimeout(ie),$e.current.delete(ie)}),we.current.delete(G))},[]),St=y.useCallback((G,ee,ie)=>{c(ce=>ce.map(ue=>ue.id===G?{...ue,status:ee,...ie!==void 0?{endReason:ie}:{}}:ue))},[]),I=y.useCallback(G=>{d(ee=>[...ee,G])},[]),je=y.useCallback((G,ee,ie)=>{ee.forEach((ce,ue)=>{Ce(()=>{const ze={sessionId:G,...ce.event,timestamp:new Date().toISOString()};if(I(ze),ce.event.eventType==="status"){const ye=Ix(ce.event.content),Re=Bx(ce.event.content);St(G,ye,Re)}ue===ee.length-1&&ie&&ie()},ce.delayMs,G)})},[Ce,I,St]),jt=y.useCallback((G,ee,ie,ce)=>{console.log("[MockGrackle] spawn",{environmentId:G,prompt:ee,runtime:ce});const ue=fe("sess"),ze={id:ue,environmentId:G,runtime:ce||"claude-code",status:"running",prompt:ee,startedAt:new Date().toISOString()};c(Re=>[...Re,ze]),h(ue);const ye=me();if(console.log(`[MockGrackle] Playing scenario: ${ye.label}`),ye.pauseForInput){const Re=ye.pauseAfterStep??ye.steps.length-1,qe=ye.steps.slice(0,Re+1),tt=qe.length>0?qe[qe.length-1].delayMs:0;je(ue,qe),Ce(()=>{St(ue,"idle"),I({sessionId:ue,eventType:"status",timestamp:new Date().toISOString(),content:"idle"})},tt+Yy,ue),ye.resumeSteps&&Oe.current.set(ue,ye.resumeSteps)}else je(ue,ye.steps)},[fe,me,je,Ce,St,I]),Ot=y.useCallback(G=>{console.log("[MockGrackle] kill",G),Lt(G),Oe.current.delete(G),St(G,"stopped","killed"),I({sessionId:G,eventType:"status",timestamp:new Date().toISOString(),content:"killed"}),_(ee=>ee.map(ie=>ie.latestSessionId===G&&ie.status==="working"?{...ie,status:"not_started"}:ie))},[Lt,St,I]),it=y.useCallback(G=>{console.log("[MockGrackle] stopGraceful",G),Lt(G),Oe.current.delete(G),St(G,"stopped","terminated"),I({sessionId:G,eventType:"status",timestamp:new Date().toISOString(),content:"terminated"}),_(ee=>ee.map(ie=>ie.latestSessionId===G&&ie.status==="working"?{...ie,status:"not_started"}:ie))},[Lt,St,I]),Jn=y.useCallback(()=>{console.log("[MockGrackle] refresh")},[]),Ls=y.useCallback(G=>{console.log("[MockGrackle] loadSessionEvents",G)},[]),Sn=y.useCallback(()=>{console.log("[MockGrackle] clearEvents"),d([])},[]),zn=y.useCallback((G,ee,ie,ce,ue,ze,ye,Re,qe)=>{console.log("[MockGrackle] createWorkspace",{name:G,description:ee});const tt={id:fe("proj"),name:G,description:ee||"",repoUrl:ie||"",environmentId:ce||"",status:"active",workingDirectory:ye||"",useWorktrees:ze??!0,defaultPersonaId:ue||"",createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};v(Pe=>[...Pe,tt]),Re&&Re()},[fe]),Wn=y.useCallback(G=>{console.log("[MockGrackle] archiveWorkspace",G),v(ee=>ee.map(ie=>ie.id===G?{...ie,status:"archived"}:ie))},[]),Us=y.useCallback(G=>{console.log("[MockGrackle] loadTasks",G)},[]),Pn=y.useCallback((G,ee,ie,ce,ue,ze,ye,Re,qe)=>{console.log("[MockGrackle] createTask",{workspaceId:G,title:ee,parentTaskId:ue}),_(tt=>{const Pt=tt.filter(Hn=>Hn.workspaceId===G).reduce((Hn,ka)=>Math.max(Hn,ka.sortOrder),0),Vt=ue?tt.find(Hn=>Hn.id===ue):void 0;if(ue&&!Vt)return console.warn("[MockGrackle] Parent task not found:",ue),tt;if(Vt&&!Vt.canDecompose)return console.warn("[MockGrackle] Parent task does not have decomposition rights:",ue),tt;const Tt=Vt?Vt.depth+1:0,cs={id:fe("task"),workspaceId:G,title:ee,description:ie||"",status:"not_started",branch:"",latestSessionId:"",dependsOn:ce||[],reviewNotes:void 0,sortOrder:Pt+1,createdAt:new Date().toISOString(),parentTaskId:ue||"",depth:Tt,childTaskIds:[],canDecompose:ye??!ue,defaultPersonaId:ze||"",workpad:""};return[...tt,cs]}),Re&&Re()},[fe]),De=y.useCallback((G,ee,ie,ce)=>{var tt;console.log("[MockGrackle] startTask",{taskId:G});const ue=Se.current.find(Pe=>Pe.id===G),ze=(ue==null?void 0:ue.title)??"",ye=fe("sess"),Re={id:ye,environmentId:"env-local-01",runtime:"claude-code",status:"running",prompt:ze||G,startedAt:new Date().toISOString()};c(Pe=>[...Pe,Re]),_(Pe=>Pe.map(Pt=>Pt.id===G?{...Pt,status:"working",latestSessionId:ye,branch:`mock/${G.slice(0,8)}`}:Pt));const qe=me();if(console.log(`[MockGrackle] Playing task scenario: ${qe.label}`),qe.pauseForInput){const Pe=qe.pauseAfterStep??qe.steps.length-1,Pt=qe.steps.slice(0,Pe+1),Vt=Pt.length>0?Pt[Pt.length-1].delayMs:0;if(je(ye,Pt),Ce(()=>{St(ye,"idle"),I({sessionId:ye,eventType:"status",timestamp:new Date().toISOString(),content:"idle"})},Vt+Yy,ye),qe.resumeSteps){const Tt=[...qe.resumeSteps];Oe.current.set(ye,Tt);const cs=Tt.reduce((Hn,ka)=>Math.max(Hn,ka.delayMs),0);le.current.set(ye,{taskId:G,delayAfterResume:cs+200})}}else{const Pe=qe.steps.length>0?qe.steps[qe.steps.length-1].delayMs:0;je(ye,qe.steps);const Pt=(tt=qe.steps[qe.steps.length-1])==null?void 0:tt.event.content;Ce(()=>{Pt==="completed"?_(Vt=>Vt.map(Tt=>Tt.id===G&&Tt.status==="working"?{...Tt,status:"paused"}:Tt)):Pt==="failed"&&_(Vt=>Vt.map(Tt=>Tt.id===G&&Tt.status==="working"?{...Tt,status:"failed"}:Tt))},Pe+100,ye)}},[fe,me,je,Ce,St,I]),Je=y.useCallback((G,ee)=>{console.log("[MockGrackle] sendInput",{sessionId:G,text:ee}),I({sessionId:G,eventType:"output",timestamp:new Date().toISOString(),content:`User input: ${ee}`}),St(G,"running"),I({sessionId:G,eventType:"status",timestamp:new Date().toISOString(),content:"running"});const ie=Oe.current.get(G);if(ie)Oe.current.delete(G),je(G,ie);else{const ue=[{delayMs:500,event:{eventType:"output",timestamp:new Date().toISOString(),content:"I received your input, continuing..."}},{delayMs:1500,event:{eventType:"status",timestamp:new Date().toISOString(),content:"completed"}}];je(G,ue)}const ce=le.current.get(G);ce&&(le.current.delete(G),Ce(()=>{_(ue=>ue.map(ze=>ze.id===ce.taskId&&ze.status==="working"?{...ze,status:"paused"}:ze))},ce.delayAfterResume,G))},[I,St,je,Ce]),uo=y.useCallback(G=>{console.log("[MockGrackle] completeTask",G),_(ee=>ee.map(ie=>ie.id===G?{...ie,status:"complete"}:ie))},[]),fo=y.useCallback(G=>{console.log("[MockGrackle] resumeTask",G)},[]),po=y.useCallback((G,ee,ie,ce,ue)=>{console.log("[MockGrackle] updateTask",{taskId:G,title:ee}),_(ze=>ze.map(ye=>ye.id===G?{...ye,title:ee.trim()||ye.title,description:ie,dependsOn:ce,...ue!==void 0?{defaultPersonaId:ue}:{}}:ye))},[]),Ta=y.useCallback(G=>{console.log("[MockGrackle] deleteTask",G),_(ee=>ee.filter(ie=>ie.id!==G))},[]),Br=y.useCallback(G=>{console.log("[MockGrackle] loadFindings",G),T(Zy.filter(ee=>ee.workspaceId===G))},[]),mo=y.useCallback((G,ee,ie,ce,ue)=>{console.log("[MockGrackle] postFinding",{workspaceId:G,title:ee});const ze={id:fe("find"),workspaceId:G,taskId:"",sessionId:"",category:ce||"general",title:ee,content:ie,tags:ue||[],createdAt:new Date().toISOString()};T(ye=>[...ye,ze])},[fe]),Lr=y.useCallback(()=>{console.log("[MockGrackle] loadEnvironments")},[]),Ur=y.useCallback((G,ee,ie)=>{console.log("[MockGrackle] addEnvironment",{displayName:G,adapterType:ee,adapterConfig:ie})},[]),zs=y.useCallback((G,ee)=>{console.log("[MockGrackle] updateEnvironment",{environmentId:G,...ee}),i(ie=>ie.map(ce=>ce.id!==G?ce:{...ce,...ee.displayName!==void 0?{displayName:ee.displayName}:{},...ee.adapterConfig!==void 0?{adapterConfig:JSON.stringify(ee.adapterConfig)}:{}}))},[]),Yt=y.useCallback(()=>{console.log("[MockGrackle] loadTokens")},[]),Vn=y.useCallback((G,ee,ie,ce,ue)=>{console.log("[MockGrackle] setToken",{name:G,tokenType:ie}),j(ze=>[...ze.filter(Re=>Re.name!==G),{name:G,tokenType:ie,envVar:ce,filePath:ue,expiresAt:""}])},[]),Jt=y.useCallback(G=>{console.log("[MockGrackle] deleteToken",G),j(ee=>ee.filter(ie=>ie.name!==G))},[]),zr=y.useCallback(G=>{console.log("[MockGrackle] updateCredentialProviders",G),C(G)},[]);y.useEffect(()=>()=>{$e.current.forEach(clearTimeout),$e.current.clear()},[]);const $c=y.useMemo(()=>({connected:!0,send:()=>{},environments:s,sessions:o,events:u,eventsDropped:0,lastSpawnedId:m,workspaces:g,tasks:b,findings:S,tokens:N,credentialProviders:w,spawn:jt,sendInput:Je,kill:Ot,stopGraceful:it,refresh:Jn,loadSessionEvents:Ls,clearEvents:Sn,loadWorkspaces:()=>{console.log("[MockGrackle] loadWorkspaces")},createWorkspace:zn,archiveWorkspace:Wn,updateWorkspace:(G,ee)=>{console.log("[MockGrackle] updateWorkspace",{workspaceId:G,...ee}),v(ie=>ie.map(ce=>ce.id!==G?ce:{...ce,...ee.name!==void 0?{name:ee.name}:{},...ee.description!==void 0?{description:ee.description}:{},...ee.repoUrl!==void 0?{repoUrl:ee.repoUrl}:{},...ee.environmentId!==void 0?{environmentId:ee.environmentId}:{},...ee.workingDirectory!==void 0?{workingDirectory:ee.workingDirectory}:{},...ee.useWorktrees!==void 0?{useWorktrees:ee.useWorktrees}:{},...ee.defaultPersonaId!==void 0?{defaultPersonaId:ee.defaultPersonaId}:{},updatedAt:new Date().toISOString()}))},loadTasks:Us,loadAllTasks:()=>{console.log("[MockGrackle] loadAllTasks")},createTask:Pn,startTask:De,stopTask:G=>{console.log("[MockGrackle] stopTask",{taskId:G}),uo(G)},completeTask:uo,resumeTask:fo,updateTask:po,deleteTask:Ta,loadFindings:Br,postFinding:mo,loadEnvironments:Lr,addEnvironment:Ur,updateEnvironment:zs,loadTokens:Yt,setToken:Vn,deleteToken:Jt,updateCredentialProviders:zr,provisionStatus:{},provisionEnvironment:(G,ee)=>{},stopEnvironment:()=>{},removeEnvironment:()=>{},codespaces:[],codespaceError:"",codespaceListError:"",codespaceCreating:!1,listCodespaces:()=>{},createCodespace:()=>{},workspaceCreating:!1,taskStartingId:void 0,personas:A,createPersona:async(G,ee,ie,ce,ue,ze,ye,Re,qe)=>{console.log("[MockGrackle] createPersona",{name:G});const tt={id:`mock-persona-${Date.now()}`,name:G,description:ee,systemPrompt:ie,toolConfig:"{}",runtime:ce??"claude-code",model:ue||"",maxTurns:ze||0,mcpServers:"[]",createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),type:ye||"agent",script:Re||"",allowedMcpTools:qe||[]};return M(Pe=>[...Pe,tt]),tt},updatePersona:async(G,ee,ie,ce,ue,ze,ye,Re,qe,tt)=>{console.log("[MockGrackle] updatePersona",{personaId:G,name:ee});const Pe=A.find(Tt=>Tt.id===G);if(!Pe)throw new Error(`Persona not found: ${G}`);const Pt=new Date().toISOString(),Vt={...Pe,...ee!==void 0?{name:ee}:{},...ie!==void 0?{description:ie}:{},...ce!==void 0?{systemPrompt:ce}:{},...ue!==void 0?{runtime:ue}:{},...ze!==void 0?{model:ze}:{},...ye!==void 0?{maxTurns:ye}:{},...Re!==void 0?{type:Re}:{},...qe!==void 0?{script:qe}:{},...tt!==void 0?{allowedMcpTools:tt}:{},updatedAt:Pt};return M(Tt=>Tt.map(cs=>cs.id===G?Vt:cs)),Vt},deletePersona:async G=>{console.log("[MockGrackle] deletePersona",G),M(ee=>ee.filter(ie=>ie.id!==G))},taskSessions:D,loadTaskSessions:G=>{console.log("[MockGrackle] loadTaskSessions",G)},appDefaultPersonaId:E,setAppDefaultPersonaId:async G=>{console.log("[MockGrackle] setAppDefaultPersonaId",G),H(G)},onboardingCompleted:!0,completeOnboarding:async()=>{console.log("[MockGrackle] completeOnboarding")},usageCache:{"workspace:proj-alpha":{inputTokens:214500,outputTokens:44850,costUsd:1.12,sessionCount:4},"workspace:proj-beta":{inputTokens:86700,outputTokens:23800,costUsd:.48,sessionCount:3},"task:task-001":{inputTokens:126800,outputTokens:20850,costUsd:.63,sessionCount:2},"task:task-006":{inputTokens:18900,outputTokens:4500,costUsd:.1,sessionCount:1},"task_tree:task-001":{inputTokens:126800,outputTokens:20850,costUsd:.63,sessionCount:2},"task_tree:task-006":{inputTokens:18900,outputTokens:4500,costUsd:.1,sessionCount:1}},loadUsage:(G,ee)=>{console.log(`[MockGrackle] loadUsage(${G}, ${ee})`)},knowledge:{graphData:{nodes:z,links:F},selectedNode:ae,loading:!1,selectedId:oe,searchQuery:B,search:G=>{if(console.log("[MockGrackle] knowledge.search",G),!G.trim()){q(G);return}q(G);const ee=te.current,ie=ee?ss.filter(ye=>!ye.workspaceId||ye.workspaceId===ee):ss,ce=G.toLowerCase(),ue=ie.filter(ye=>{var Re,qe,tt;return ye.label.toLowerCase().includes(ce)||((Re=ye.content)==null?void 0:Re.toLowerCase().includes(ce))||((qe=ye.tags)==null?void 0:qe.some(Pe=>Pe.toLowerCase().includes(ce)))||((tt=ye.category)==null?void 0:tt.toLowerCase().includes(ce))});Z(ue);const ze=new Set(ue.map(ye=>ye.id));Q(fa.filter(ye=>ze.has(ye.source)&&ze.has(ye.target))),X(void 0),pe(void 0)},clearSearch:()=>{console.log("[MockGrackle] knowledge.clearSearch"),q("");const G=te.current,ee=G?ss.filter(ce=>!ce.workspaceId||ce.workspaceId===G):ss;Z(ee);const ie=new Set(ee.map(ce=>ce.id));Q(fa.filter(ce=>ie.has(ce.source)&&ie.has(ce.target)))},selectNode:G=>{console.log("[MockGrackle] knowledge.selectNode",G),X(G);const ee=G in Fy?Fy[G]:void 0;if(ee)pe(ee);else{const ie=ss.find(ce=>ce.id===G);if(ie){const ce=fa.filter(ue=>ue.source===G||ue.target===G).map(ue=>({fromId:ue.source,toId:ue.target,type:ue.type}));pe({node:ie,edges:ce})}}},clearSelection:()=>{console.log("[MockGrackle] knowledge.clearSelection"),X(void 0),pe(void 0)},expandNode:G=>{console.log("[MockGrackle] knowledge.expandNode",G),Z(ee=>{const ie=new Set(ee.map(Re=>Re.id)),ce=fa.filter(Re=>Re.source===G||Re.target===G),ue=new Set;for(const Re of ce)ie.has(Re.source)||ue.add(Re.source),ie.has(Re.target)||ue.add(Re.target);if(ue.size===0)return ee;const ze=ss.filter(Re=>ue.has(Re.id)),ye=new Set([...ie,...ue]);return Q(Re=>{const qe=new Set(Re.map(Pe=>`${Pe.source}|${Pe.target}|${Pe.type}`)),tt=fa.filter(Pe=>ye.has(Pe.source)&&ye.has(Pe.target)&&!qe.has(`${Pe.source}|${Pe.target}|${Pe.type}`));return tt.length>0?[...Re,...tt]:Re}),[...ee,...ze]})},loadRecent:G=>{if(console.log("[MockGrackle] knowledge.loadRecent",G),te.current=G,G){const ee=ss.filter(ce=>!ce.workspaceId||ce.workspaceId===G);Z(ee);const ie=new Set(ee.map(ce=>ce.id));Q(fa.filter(ce=>ie.has(ce.source)&&ie.has(ce.target)))}else Z(ss),Q(fa);q("")},handleEvent:()=>!1}}),[s,o,u,m,g,b,S,N,w,A,D,E,z,F,ae,oe,B,jt,Je,Ot,it,Jn,Ls,Sn,zn,Wn,Us,Pn,De,uo,fo,po,Ta,Br,mo,Lr,Ur,zs,Yt,Vn,Jt,zr]);return l.jsx(om.Provider,{value:$c,children:n})}const iB=3e3;function oB(n){const[s,i]=y.useState(!1),o=y.useRef(n.onSessionEvent);o.current=n.onSessionEvent;const c=y.useRef(n.onDomainEvent);c.current=n.onDomainEvent;const u=y.useRef(n.onConnect);u.current=n.onConnect;const d=y.useRef(n.onDisconnect);return d.current=n.onDisconnect,y.useEffect(()=>{let m=!1,h;async function g(){var v,b;if(!m){try{const _=ke.streamEvents({});i(!0),(v=u.current)==null||v.call(u);for await(const S of _){if(m)break;const T=S.event;if(T.case==="sessionEvent"){const N=T.value;o.current({sessionId:N.sessionId,type:N.type,timestamp:N.timestamp,content:N.content,raw:N.raw})}else if(T.case==="domainEvent"){const N=T.value;c.current({id:N.id,type:N.type,timestamp:N.timestamp,payloadJson:N.payloadJson})}}}catch(_){if(_ instanceof Dc&&_.code===fT.Unauthenticated){window.location.href=Z2;return}}m||(i(!1),(b=d.current)==null||b.call(d),h=setTimeout(()=>{g().catch(()=>{})},iB))}}return g().catch(()=>{}),()=>{m=!0,clearTimeout(h),i(!1)}},[]),{connected:s}}function rB(n){return{id:n.id,displayName:n.displayName,adapterType:n.adapterType,adapterConfig:n.adapterConfig||"{}",status:n.status,bootstrapped:n.bootstrapped}}function Jy(n){return{id:n.id,environmentId:n.environmentId,runtime:n.runtime,status:n.status,prompt:n.prompt,startedAt:n.startedAt,endedAt:n.endedAt||void 0,error:n.error||void 0,endReason:n.endReason||void 0,personaId:n.personaId||void 0,inputTokens:n.inputTokens,outputTokens:n.outputTokens,costUsd:n.costUsd}}function lB(n){return{sessionId:n.sessionId,eventType:ub(n.type),timestamp:n.timestamp,content:n.content,raw:n.raw||void 0}}function cB(n){return{id:n.id,name:n.name,description:n.description,repoUrl:n.repoUrl,environmentId:n.environmentId,status:pT(n.status),workingDirectory:n.workingDirectory,useWorktrees:n.useWorktrees,defaultPersonaId:n.defaultPersonaId,createdAt:n.createdAt,updatedAt:n.updatedAt}}function Wy(n){return{id:n.id,workspaceId:n.workspaceId??void 0,title:n.title,description:n.description,status:mT(n.status),branch:n.branch,latestSessionId:n.latestSessionId,dependsOn:[...n.dependsOn],sortOrder:n.sortOrder,createdAt:n.createdAt,startedAt:n.startedAt||void 0,completedAt:n.completedAt||void 0,parentTaskId:n.parentTaskId,depth:n.depth,childTaskIds:[...n.childTaskIds],canDecompose:n.canDecompose,defaultPersonaId:n.defaultPersonaId,workpad:n.workpad}}function uB(n){return{id:n.id,workspaceId:n.workspaceId,taskId:n.taskId,sessionId:n.sessionId,category:n.category,title:n.title,content:n.content,tags:[...n.tags],createdAt:n.createdAt}}function dB(n){return{name:n.name,tokenType:n.type,envVar:n.envVar,filePath:n.filePath,expiresAt:n.expiresAt}}function fB(n){return{claude:hT(n.claude),github:Xl(n.github),copilot:Xl(n.copilot),codex:Xl(n.codex),goose:Xl(n.goose)}}function pB(n){return{name:n.name,repository:n.repository,state:n.state,gitStatus:n.gitStatus}}function Mf(n){return{id:n.id,name:n.name,description:n.description,systemPrompt:n.systemPrompt,toolConfig:n.toolConfig?JSON.stringify({allowedTools:[...n.toolConfig.allowedTools],disallowedTools:[...n.toolConfig.disallowedTools]}):"{}",runtime:n.runtime,model:n.model,maxTurns:n.maxTurns,mcpServers:JSON.stringify(n.mcpServers.map(s=>({name:s.name,command:s.command,args:[...s.args],tools:[...s.tools]}))),createdAt:n.createdAt,updatedAt:n.updatedAt,type:n.type||"agent",script:n.script,allowedMcpTools:[...n.allowedMcpTools]}}function mB(n){return{inputTokens:n.inputTokens,outputTokens:n.outputTokens,costUsd:n.costUsd,sessionCount:n.sessionCount}}function lc(n,s=0){return{id:n.id,label:n.title||n.label||n.id,kind:n.kind,category:n.category||void 0,sourceType:n.sourceType||void 0,sourceId:n.sourceId||void 0,content:n.content||void 0,tags:n.tags.length>0?[...n.tags]:void 0,workspaceId:n.workspaceId||void 0,createdAt:n.createdAt||void 0,updatedAt:n.updatedAt||void 0,val:s}}function Of(n){return{source:n.fromId,target:n.toId,type:n.type}}const Xy=5e3;function hB(){const[n,s]=y.useState([]),[i,o]=y.useState({}),c=y.useCallback(()=>{ke.listEnvironments({}).then(_=>{s(_.environments.map(rB))},()=>{})},[]),u=y.useCallback(_=>{switch(_.type){case"environment.added":return!0;case"environment.removed":{const S=_.payload.environmentId;return S&&(s(T=>T.filter(N=>N.id!==S)),o(T=>{const N={...T};return delete N[S],N})),!0}case"environment.changed":return c(),!0;case"environment.provision_progress":{const S=_.payload;if(typeof S.environmentId!="string"||typeof S.stage!="string"||typeof S.message!="string"||typeof S.progress!="number")return Ox("environment.provision_progress","invalid payload"),!0;if(o(T=>({...T,[S.environmentId]:{stage:S.stage,message:S.message,progress:S.progress}})),S.stage==="ready"){const T=S.environmentId;setTimeout(()=>{o(N=>{const j={...N};return delete j[T],j})},Xy)}return!0}default:return!1}},[c]),d=y.useCallback(_=>{var S;if(_.type==="environments"){const T=Array.isArray((S=_.payload)==null?void 0:S.environments)?_.payload.environments:[];return s(T),!0}return!1},[]),m=y.useCallback((_,S,T)=>{ke.addEnvironment({displayName:_,adapterType:S,adapterConfig:JSON.stringify(T??{})}).catch(()=>{})},[]),h=y.useCallback((_,S)=>{ke.updateEnvironment({id:_,displayName:S.displayName,adapterConfig:S.adapterConfig?JSON.stringify(S.adapterConfig):void 0}).catch(()=>{})},[]),g=y.useCallback((_,S)=>{(async()=>{try{const N=ke.provisionEnvironment({id:_,force:S??!1});for await(const j of N)o(w=>({...w,[_]:{stage:j.stage,message:j.message,progress:j.progress}})),j.stage==="ready"&&setTimeout(()=>{o(w=>{const C={...w};return delete C[_],C})},Xy)}catch{o(N=>{const j={...N};return delete j[_],j})}})().catch(()=>{})},[]),v=y.useCallback(_=>{ke.stopEnvironment({id:_}).catch(()=>{})},[]),b=y.useCallback(_=>{ke.removeEnvironment({id:_}).catch(()=>{})},[]);return{environments:n,provisionStatus:i,loadEnvironments:c,addEnvironment:m,updateEnvironment:h,provisionEnvironment:g,stopEnvironment:v,removeEnvironment:b,handleEvent:u,handleLegacyMessage:d}}const If=new Set(["pending","running","idle"]),gB=new Set(["completed","failed","interrupted","hibernating","suspended"]),Qy=["pending","running","idle"];function vB(){const[n,s]=y.useState([]),[i,o]=y.useState([]),[c,u]=y.useState(0),[d,m]=y.useState(void 0),[h,g]=y.useState({}),v=y.useCallback(()=>{ke.listSessions({}).then(D=>{const E=D.sessions.map(Jy);s(H=>{const z=new Map(H.map(Z=>[Z.id,Z]));return E.map(Z=>{const F=z.get(Z.id),Q=F==null?void 0:F.status;return!Q||Q===Z.status?Z:gB.has(Q)&&If.has(Z.status)?{...Z,status:Q,...F.endReason!==void 0?{endReason:F.endReason}:{}}:If.has(Q)&&If.has(Z.status)&&Qy.indexOf(Q)>Qy.indexOf(Z.status)?{...Z,status:Q}:Z})})},()=>{})},[]),b=y.useCallback(D=>{if(D.type!=="session_event")return!1;if(!I4(D.payload))return Ox("session_event","payload is not a valid SessionEvent"),!0;const E=D.payload;let H=0;if(o(z=>{const Z=[...z,E];return Z.length>$i?(H=Z.length-$i,Z.slice(-$i)):Z}),H>0&&u(z=>z+H),E.eventType==="usage")try{const z=JSON.parse(E.content),Z=Number(z.input_tokens)||0,F=Number(z.output_tokens)||0,Q=Number(z.cost_usd)||0;(Z>0||F>0||Q>0)&&s(ae=>ae.map(pe=>pe.id===E.sessionId?{...pe,inputTokens:(pe.inputTokens??0)+Z,outputTokens:(pe.outputTokens??0)+F,costUsd:(pe.costUsd??0)+Q}:pe))}catch{}if(E.eventType==="status"){const z=Ix(E.content),Z=Bx(E.content);s(F=>F.some(ae=>ae.id===E.sessionId)?F.map(ae=>ae.id===E.sessionId?{...ae,status:z,...Z!==void 0?{endReason:Z}:{}}:ae):[...F,{id:E.sessionId,environmentId:"",runtime:"",status:z,prompt:"",startedAt:E.timestamp,...Z!==void 0?{endReason:Z}:{}}])}return!0},[]),_=y.useCallback(D=>{b({type:"session_event",payload:D})},[b]),S=y.useCallback(D=>{var E,H,z,Z,F;switch(D.type){case"sessions":{const Q=Array.isArray((E=D.payload)==null?void 0:E.sessions)?D.payload.sessions:[];return s(Q),!0}case"spawned":{const Q=(H=D.payload)==null?void 0:H.sessionId;return typeof Q=="string"&&Q&&m(Q),v(),!0}case"session_events":{const Q=Array.isArray((z=D.payload)==null?void 0:z.events)?D.payload.events:[];return Q.length>0&&o(Q),!0}case"task_sessions":{const Q=(Z=D.payload)==null?void 0:Z.taskId;if(typeof Q=="string"&&Q){const ae=Array.isArray((F=D.payload)==null?void 0:F.sessions)?D.payload.sessions:[];g(pe=>({...pe,[Q]:ae}))}return!0}default:return!1}},[v]),T=y.useCallback((D,E,H,z)=>{ke.spawnAgent({environmentId:D,prompt:E,personaId:H||"",workingDirectory:z||""}).then(Z=>{m(Z.id),v()},()=>{})},[v]),N=y.useCallback((D,E)=>{ke.sendInput({sessionId:D,text:E}).catch(()=>{})},[]),j=y.useCallback(D=>{ke.killAgent({id:D,graceful:!1}).catch(()=>{})},[]),w=y.useCallback(D=>{ke.killAgent({id:D,graceful:!0}).catch(()=>{})},[]),C=y.useCallback(D=>{ke.getSessionEvents({id:D}).then(E=>{const H=E.events.map(lB);if(H.length>0){let z=0;o(Z=>{const F=new Set;for(const pe of Z)pe.sessionId===D&&F.add(`${pe.timestamp}|${pe.eventType}`);const Q=H.filter(pe=>!F.has(`${pe.timestamp}|${pe.eventType}`)),ae=[...Z,...Q].sort((pe,oe)=>pe.sessionId!==oe.sessionId?0:pe.timestamp.localeCompare(oe.timestamp));return ae.length>$i?(z=ae.length-$i,ae.slice(-$i)):ae}),z>0&&u(Z=>Z+z)}},()=>{})},[]),A=y.useCallback(()=>{o([]),u(0)},[]),M=y.useCallback(D=>{ke.getTaskSessions({id:D}).then(E=>{const H=E.sessions.map(Jy);g(z=>({...z,[D]:H}))},()=>{})},[]);return{sessions:n,events:i,eventsDropped:c,lastSpawnedId:d,taskSessions:h,loadSessions:v,spawn:T,sendInput:N,kill:j,stopGraceful:w,loadSessionEvents:C,clearEvents:A,loadTaskSessions:M,handleMessage:b,handleSessionEvent:_,handleLegacyMessage:S}}function yB(){const[n,s]=y.useState([]),[i,o]=y.useState(!1),c=y.useCallback(()=>{ke.listWorkspaces({}).then(v=>{s(v.workspaces.map(cB))},()=>{})},[]),u=y.useCallback(v=>{switch(v.type){case"workspace.created":return o(!1),c(),!0;case"workspace.archived":case"workspace.updated":return c(),!0;default:return!1}},[c]),d=y.useCallback(()=>{o(!1)},[]),m=y.useCallback((v,b,_,S,T,N,j,w,C)=>{o(!0),ke.createWorkspace({name:v,description:b||"",repoUrl:_||"",environmentId:S||"",defaultPersonaId:T||void 0,useWorktrees:N??!0,workingDirectory:j||void 0}).then(()=>{o(!1),w==null||w()},A=>{o(!1);const M=A instanceof Dc?A.message:"Failed to create workspace";C==null||C(M)})},[]),h=y.useCallback(v=>{ke.archiveWorkspace({id:v}).catch(()=>{})},[]),g=y.useCallback((v,b)=>{ke.updateWorkspace({id:v,...b}).catch(()=>{})},[]);return{workspaces:n,workspaceCreating:i,loadWorkspaces:c,createWorkspace:m,archiveWorkspace:h,updateWorkspace:g,handleEvent:u,onDisconnect:d}}function bB(){const[n,s]=y.useState([]),[i,o]=y.useState(void 0),c=y.useRef({}),u=y.useCallback(C=>{ke.listTasks({workspaceId:C}).then(A=>{const M=A.tasks.map(Wy);s(D=>[...D.filter(E=>E.workspaceId!==C),...M])},()=>{})},[]),d=y.useCallback(()=>{ke.listTasks({}).then(C=>{const A=C.tasks.map(Wy);s(M=>{const D=new Set(A.map(E=>E.id));return[...M.filter(E=>!D.has(E.id)),...A]})},()=>{})},[]),m=y.useCallback((C,A)=>{const M=D=>{clearTimeout(c.current[D]),c.current[D]=setTimeout(()=>{delete c.current[D],u(D)},200)};C?M(C):A&&s(D=>{const E=D.find(H=>H.id===A);return E!=null&&E.workspaceId?M(E.workspaceId):d(),D})},[u,d]),h=y.useCallback(C=>{const A=C.payload;switch(C.type){case"task.created":{const M=typeof A.workspaceId=="string"?A.workspaceId:"";return M&&u(M),!0}case"task.started":{const M=typeof A.taskId=="string"?A.taskId:"",D=typeof A.sessionId=="string"?A.sessionId:"",E=typeof A.workspaceId=="string"?A.workspaceId:"";return o(H=>M&&H===M?void 0:H),D&&M&&s(H=>H.map(z=>z.id===M?{...z,latestSessionId:D}:z)),m(E,M),!0}case"task.completed":case"task.deleted":case"task.reparented":case"task.updated":{const M=typeof A.workspaceId=="string"?A.workspaceId:"",D=typeof A.taskId=="string"?A.taskId:"";return m(M,D),!0}default:return!1}},[u,m]),g=y.useCallback(()=>{o(void 0)},[]),v=y.useCallback(C=>{var A,M;if(C.type==="tasks"){const D=Array.isArray((A=C.payload)==null?void 0:A.tasks)?C.payload.tasks:[],E=typeof((M=C.payload)==null?void 0:M.workspaceId)=="string"&&C.payload.workspaceId?C.payload.workspaceId:"";return s(E?H=>[...H.filter(z=>z.workspaceId!==E),...D]:H=>{const z=new Set(D.map(Z=>Z.id));return[...H.filter(Z=>!z.has(Z.id)),...D]}),!0}return!1},[]),b=y.useCallback((C,A,M,D,E,H,z,Z,F)=>{ke.createTask({workspaceId:C,title:A,description:M||"",dependsOn:D||[],parentTaskId:E||"",defaultPersonaId:H||void 0,canDecompose:z??void 0}).then(()=>{Z==null||Z()},Q=>{const ae=Q instanceof Dc?Q.message:"Failed to create task";F==null||F(ae)})},[]),_=y.useCallback((C,A,M,D)=>{o(C),ke.startTask({taskId:C,personaId:A||"",environmentId:M||"",notes:D||""}).catch(()=>{o(void 0)})},[]),S=y.useCallback(C=>{ke.stopTask({id:C}).catch(()=>{})},[]),T=y.useCallback(C=>{ke.completeTask({id:C}).catch(()=>{})},[]),N=y.useCallback(C=>{ke.resumeTask({id:C}).catch(()=>{})},[]),j=y.useCallback((C,A,M,D,E)=>{ke.updateTask({id:C,title:A,description:M,dependsOn:D,...E!==void 0?{defaultPersonaId:E}:{}}).catch(()=>{})},[]),w=y.useCallback(C=>{ke.deleteTask({id:C}).catch(()=>{})},[]);return{tasks:n,taskStartingId:i,loadTasks:u,loadAllTasks:d,createTask:b,startTask:_,stopTask:S,completeTask:T,resumeTask:N,updateTask:j,deleteTask:w,handleEvent:h,onDisconnect:g,handleLegacyMessage:v}}function _B(){const[n,s]=y.useState([]),i=y.useCallback(u=>{ke.queryFindings({workspaceId:u}).then(d=>{s(d.findings.map(uB))},()=>{})},[]),o=y.useCallback(u=>{if(u.type==="finding.posted"){const d=typeof u.payload.workspaceId=="string"?u.payload.workspaceId:"";return d&&i(d),!0}return!1},[i]),c=y.useCallback((u,d,m,h,g)=>{ke.postFinding({workspaceId:u,title:d,content:m,category:h??"general",tags:g??[]}).catch(()=>{})},[]);return{findings:n,loadFindings:i,postFinding:c,handleEvent:o}}function xB(){const[n,s]=y.useState([]),i=y.useCallback(()=>{ke.listTokens({}).then(d=>{s(d.tokens.map(dB))},()=>{})},[]),o=y.useCallback(d=>d.type==="token.changed"?(i(),!0):!1,[i]),c=y.useCallback((d,m,h,g,v)=>{ke.setToken({name:d,value:m,type:h,envVar:g,filePath:v}).catch(()=>{})},[]),u=y.useCallback(d=>{ke.deleteToken({name:d}).catch(()=>{})},[]);return{tokens:n,loadTokens:i,setToken:c,deleteToken:u,handleEvent:o}}function SB(){const[n,s]=y.useState({claude:"off",github:"off",copilot:"off",codex:"off",goose:"off"}),i=y.useCallback(()=>{ke.getCredentialProviders({}).then(u=>{s(fB(u))},()=>{})},[]),o=y.useCallback(u=>u.type==="credential.providers_changed"?(L4(u.payload)&&s(u.payload),!0):!1,[]),c=y.useCallback(u=>{const d=[{provider:"claude",value:u.claude},{provider:"github",value:u.github},{provider:"copilot",value:u.copilot},{provider:"codex",value:u.codex},{provider:"goose",value:u.goose}];for(const{provider:m,value:h}of d)ke.setCredentialProvider({provider:m,value:h}).catch(()=>{})},[]);return{credentialProviders:n,loadCredentials:i,updateCredentialProviders:c,handleEvent:o}}function TB(){const[n,s]=y.useState([]),[i,o]=y.useState(""),[c,u]=y.useState(""),[d,m]=y.useState(!1),h=y.useCallback(()=>{ke.listCodespaces({}).then(v=>{s(v.codespaces.map(pB)),u(v.error)},()=>{})},[]),g=y.useCallback((v,b)=>{m(!0),o(""),ke.createCodespace({repo:v,machine:b??""}).then(()=>{m(!1),h()},_=>{m(!1);const S=_ instanceof Dc?_.message:"Failed to create codespace";o(S)})},[h]);return{codespaces:n,codespaceError:i,codespaceListError:c,codespaceCreating:d,listCodespaces:h,createCodespace:g}}function kB(){const[n,s]=y.useState([]),i=y.useCallback(()=>{ke.listPersonas({}).then(m=>{s(m.personas.map(Mf))},()=>{})},[]),o=y.useCallback(m=>{switch(m.type){case"persona.created":case"persona.updated":case"persona.deleted":return i(),!0;default:return!1}},[i]),c=y.useCallback((m,h,g,v,b,_,S,T,N)=>ke.createPersona({name:m,description:h,systemPrompt:g,runtime:v||"",model:b||"",maxTurns:_||0,type:S||"agent",script:T||"",allowedMcpTools:N||[]}).then(j=>{const w=Mf(j);return s(C=>[...C.filter(A=>A.id!==w.id),w]),w}),[]),u=y.useCallback((m,h,g,v,b,_,S,T,N,j)=>{const w={id:m};return h!==void 0&&(w.name=h),g!==void 0&&(w.description=g),v!==void 0&&(w.systemPrompt=v),b!==void 0&&(w.runtime=b),_!==void 0&&(w.model=_),S!==void 0&&(w.maxTurns=S),T!==void 0&&(w.type=T),N!==void 0&&(w.script=N),j!==void 0&&(w.allowedMcpTools={tools:j}),ke.updatePersona(w).then(C=>{const A=Mf(C);return s(M=>M.map(D=>D.id===A.id?A:D)),A})},[]),d=y.useCallback(async m=>{await ke.deletePersona({id:m}),s(h=>h.filter(g=>g.id!==m))},[]);return{personas:n,loadPersonas:i,createPersona:c,updatePersona:u,deletePersona:d,handleEvent:o}}function wB(n){if(n)try{return JSON.parse(n)}catch{return}}function NB(){const[n,s]=y.useState(new Map),[i,o]=y.useState([]),[c,u]=y.useState(void 0),[d,m]=y.useState(void 0),[h,g]=y.useState(!1),[v,b]=y.useState(""),_=y.useRef(""),S=y.useCallback(M=>{const D=M??"";_.current=D,b(""),g(!0),ke.listRecentKnowledgeNodes({limit:30,workspaceId:D}).then(E=>{const H=new Map,z=[];for(const Z of E.nodes)H.set(Z.id,lc(Z));for(const Z of E.edges)z.push(Of(Z));for(const Z of z){const F=H.get(Z.source);F&&(F.val+=1);const Q=H.get(Z.target);Q&&(Q.val+=1)}s(H),o(z),g(!1)},()=>{g(!1)})},[]),T=y.useCallback(M=>{M.trim()&&(b(M),m(void 0),u(void 0),g(!0),ke.searchKnowledge({query:M,limit:20,workspaceId:_.current}).then(D=>{const E=new Map,H=[];for(const z of D.results){z.node&&E.set(z.node.id,lc(z.node,z.edges.length));for(const Z of z.edges)H.push(Of(Z))}s(E),o(H),g(!1)},()=>{g(!1)}))},[]),N=y.useCallback(()=>{S(_.current)},[S]),j=y.useCallback(M=>{m(M),ke.getKnowledgeNode({id:M}).then(D=>{if(!D.node){u(void 0);return}u({node:lc(D.node,D.edges.length),edges:D.edges.map(E=>({fromId:E.fromId,toId:E.toId,type:E.type,metadata:wB(E.metadataJson)}))})},()=>{u(void 0)})},[]),w=y.useCallback(()=>{m(void 0),u(void 0)},[]),C=y.useCallback(M=>{ke.expandKnowledgeNode({id:M,depth:1}).then(D=>{s(E=>{const H=new Map(E);for(const z of D.nodes)H.has(z.id)||H.set(z.id,lc(z));return H}),o(E=>{const H=new Set(E.map(Z=>`${Z.source}:${Z.target}:${Z.type}`)),z=[];for(const Z of D.edges){const F=Of(Z),Q=`${F.source}:${F.target}:${F.type}`;H.has(Q)||z.push(F)}return[...E,...z]})},()=>{})},[]),A=y.useCallback(M=>!1,[]);return{graphData:{nodes:[...n.values()],links:i},selectedNode:c,selectedId:d,loading:h,searchQuery:v,search:T,clearSearch:N,selectNode:j,clearSelection:w,expandNode:C,loadRecent:S,handleEvent:A}}function jB(){const[n,s]=y.useState(""),[i,o]=y.useState(void 0),[c,u]=y.useState({}),d=hB(),m=vB(),h=yB(),g=bB(),v=_B(),b=xB(),_=SB(),S=TB(),T=kB(),N=NB(),{connected:j}=oB({onSessionEvent:F=>{m.handleSessionEvent({sessionId:F.sessionId,eventType:ub(F.type),timestamp:F.timestamp,content:F.content,raw:F.raw||void 0})},onDomainEvent:F=>{try{const Q=JSON.parse(F.payloadJson);E({id:F.id,type:F.type,timestamp:F.timestamp,payload:Q})}catch{console.warn("[grackle] Failed to parse domain event payloadJson:",F.payloadJson)}},onConnect:H,onDisconnect:z}),w="default_persona_id",C="onboarding_completed",A=y.useCallback(async F=>{const Q=await ke.setSetting({key:w,value:F});s(Q.value)},[]),M=y.useCallback(()=>{o(!0),ke.setSetting({key:C,value:"true"}).catch(()=>{})},[]),D=y.useCallback((F,Q)=>{ke.getUsage({scope:F,id:Q}).then(ae=>{const pe=`${F}:${Q}`;u(oe=>({...oe,[pe]:mB(ae)}))},()=>{})},[]);function E(F){const Q=F.payload.key,ae=F.payload.value;if(F.type==="setting.changed"){Q===w&&s(ae??""),Q===C&&o(ae==="true");return}if(d.handleEvent(F)){(F.type==="environment.removed"||F.type==="environment.changed")&&m.loadSessions();return}if(!h.handleEvent(F)){if(g.handleEvent(F)){F.type==="task.started"&&m.loadSessions();return}v.handleEvent(F)||b.handleEvent(F)||_.handleEvent(F)||T.handleEvent(F)||N.handleEvent(F)}}function H(){d.loadEnvironments(),m.loadSessions(),h.loadWorkspaces(),b.loadTokens(),_.loadCredentials(),T.loadPersonas(),ke.getSetting({key:w}).then(F=>{s(F.value)},()=>{}),ke.getSetting({key:C}).then(F=>{o(F.value==="true")},()=>{}),g.loadAllTasks()}function z(){h.onDisconnect(),g.onDisconnect()}const Z=y.useCallback(()=>{d.loadEnvironments(),m.loadSessions(),h.loadWorkspaces(),b.loadTokens()},[d.loadEnvironments,m.loadSessions,h.loadWorkspaces,b.loadTokens]);return{connected:j,environments:d.environments,sessions:m.sessions,events:m.events,eventsDropped:m.eventsDropped,lastSpawnedId:m.lastSpawnedId,workspaces:h.workspaces,tasks:g.tasks,findings:v.findings,tokens:b.tokens,spawn:m.spawn,sendInput:m.sendInput,kill:m.kill,stopGraceful:m.stopGraceful,refresh:Z,loadSessionEvents:m.loadSessionEvents,clearEvents:m.clearEvents,loadWorkspaces:h.loadWorkspaces,createWorkspace:h.createWorkspace,archiveWorkspace:h.archiveWorkspace,updateWorkspace:h.updateWorkspace,loadTasks:g.loadTasks,loadAllTasks:g.loadAllTasks,createTask:g.createTask,startTask:g.startTask,stopTask:g.stopTask,completeTask:g.completeTask,resumeTask:g.resumeTask,updateTask:g.updateTask,deleteTask:g.deleteTask,loadFindings:v.loadFindings,postFinding:v.postFinding,loadEnvironments:d.loadEnvironments,addEnvironment:d.addEnvironment,updateEnvironment:d.updateEnvironment,loadTokens:b.loadTokens,setToken:b.setToken,deleteToken:b.deleteToken,credentialProviders:_.credentialProviders,updateCredentialProviders:_.updateCredentialProviders,provisionStatus:d.provisionStatus,provisionEnvironment:d.provisionEnvironment,stopEnvironment:d.stopEnvironment,removeEnvironment:d.removeEnvironment,codespaces:S.codespaces,codespaceError:S.codespaceError,codespaceListError:S.codespaceListError,codespaceCreating:S.codespaceCreating,listCodespaces:S.listCodespaces,createCodespace:S.createCodespace,workspaceCreating:h.workspaceCreating,taskStartingId:g.taskStartingId,personas:T.personas,createPersona:T.createPersona,updatePersona:T.updatePersona,deletePersona:T.deletePersona,taskSessions:m.taskSessions,loadTaskSessions:m.loadTaskSessions,appDefaultPersonaId:n,setAppDefaultPersonaId:A,onboardingCompleted:i,completeOnboarding:M,usageCache:c,loadUsage:D,knowledge:N}}function CB({children:n}){const s=jB();return l.jsx(om.Provider,{value:s,children:n})}function EB(n,s){const i=y.useRef(null);y.useEffect(()=>{const o=i.current;if(i.current=n,o===null)return;const c=new Map;for(const d of o)c.set(d.id,d);const u=new Set;for(const d of n){u.add(d.id);const m=c.get(d.id);if(m&&m.status!==d.status&&d.status!=="sleeping"){if(d.status==="connecting"){s("Provisioning environment…","info");continue}d.status==="connected"?s("Environment connected","success"):d.status==="error"?s("Environment provision failed","error"):d.status==="disconnected"&&(m.status==="connected"?s("Environment disconnected","warning"):s("Environment stopped","info"))}}for(const d of o)u.has(d.id)||s("Environment removed","info")},[n,s])}const AB={working:{message:"Task is now running",variant:"info"},paused:{message:"Task paused",variant:"warning"},complete:{message:"Task complete",variant:"success"},failed:{message:"Task failed to complete",variant:"error"}};function DB(n){return AB[n]}function RB(n,s){if(n===void 0)return[];const i=[],o=new Map;for(const u of n)o.set(u.id,u);const c=new Set;for(const u of s){c.add(u.id);const d=o.get(u.id);if(!d||d.status===u.status)continue;const m=DB(u.status);m&&i.push(m)}for(const u of n)c.has(u.id)||i.push({message:"Task deleted",variant:"info"});return i}function MB(n,s){const i=y.useRef(void 0);y.useEffect(()=>{const o=i.current;i.current=n;const c=RB(o,n);for(const u of c)s(u.message,u.variant)},[n,s])}const OB="_dashboard_16pzm_1",IB="_kpiStrip_16pzm_11",BB="_kpiCard_16pzm_23",LB="_kpiValue_16pzm_68",UB="_kpiLabel_16pzm_76",zB="_bodyGrid_16pzm_84",PB="_section_16pzm_96",VB="_sectionHeader_16pzm_109",HB="_sectionIcon_16pzm_118",GB="_sectionTitle_16pzm_123",$B="_sectionCount_16pzm_131",qB="_sectionBody_16pzm_138",FB="_emptyHint_16pzm_143",ZB="_sessionRow_16pzm_150",KB="_sessionPrompt_16pzm_177",YB="_sessionEnv_16pzm_186",JB="_sessionRuntime_16pzm_192",WB="_sessionStatus_16pzm_198",XB="_statusDot_16pzm_207",QB="_attentionRow_16pzm_233",eL="_attentionTitle_16pzm_259",tL="_attentionMeta_16pzm_267",nL="_reasonBadge_16pzm_274",sL="_bottomGrid_16pzm_301",aL="_envRow_16pzm_312",iL="_envName_16pzm_323",oL="_envStatusBadge_16pzm_333",rL="_workspaceRow_16pzm_369",lL="_workspaceTop_16pzm_395",cL="_workspaceName_16pzm_401",uL="_workspaceCounts_16pzm_407",dL="_progressBar_16pzm_415",fL="_progressFill_16pzm_422",_e={dashboard:OB,kpiStrip:IB,kpiCard:BB,kpiValue:LB,kpiLabel:UB,bodyGrid:zB,section:PB,sectionHeader:VB,sectionIcon:HB,sectionTitle:GB,sectionCount:$B,sectionBody:qB,emptyHint:FB,sessionRow:ZB,sessionPrompt:KB,sessionEnv:YB,sessionRuntime:JB,sessionStatus:WB,statusDot:XB,attentionRow:QB,attentionTitle:eL,attentionMeta:tL,reasonBadge:nL,bottomGrid:sL,envRow:aL,envName:iL,envStatusBadge:oL,workspaceRow:rL,workspaceTop:lL,workspaceName:cL,workspaceCounts:uL,progressBar:dL,progressFill:fL},pL={hidden:{opacity:0,y:12},visible:n=>({opacity:1,y:0,transition:{delay:n*.06,duration:.3,ease:"easeOut"}})},cc={hidden:{opacity:0,y:16},visible:n=>({opacity:1,y:0,transition:{delay:.15+n*.08,duration:.35,ease:"easeOut"}})};function mL(n,s,i,o){const c=[`${n} of ${s} tasks completed`];return i>0&&c.push(`${i} in progress`),o>0&&c.push(`${o} failed`),c.join(", ")}function uc({value:n,label:s,accent:i,index:o,testId:c}){return l.jsxs(Mt.div,{className:_e.kpiCard,"data-accent":i,"data-testid":c,variants:pL,initial:"hidden",animate:"visible",custom:o,children:[l.jsx("span",{className:_e.kpiValue,children:n}),l.jsx("span",{className:_e.kpiLabel,children:s})]})}function hL(){const{workspaces:n,tasks:s,sessions:i,environments:o,loadTasks:c}=pt(),u=xt(),d=y.useRef(new Set);y.useEffect(()=>{for(const b of n)d.current.has(b.id)||(d.current.add(b.id),c(b.id))},[n,c]);const m=y.useMemo(()=>q4(i,s,o),[i,s,o]),h=y.useMemo(()=>Z4(i,o),[i,o]),g=y.useMemo(()=>F4(s,n),[s,n]),v=y.useMemo(()=>K4(n,s),[n,s,o]);return l.jsxs("div",{className:_e.dashboard,"data-testid":"dashboard",children:[l.jsxs("div",{className:_e.kpiStrip,"data-testid":"dashboard-kpi-strip",children:[l.jsx(uc,{value:m.activeSessions,label:"Active Sessions",accent:"green",index:0,testId:"kpi-active-sessions"}),l.jsx(uc,{value:m.blockedTasks,label:"Blocked Tasks",accent:"yellow",index:1,testId:"kpi-blocked-tasks"}),l.jsx(uc,{value:m.attentionTasks,label:"Needs Attention",accent:"red",index:2,testId:"kpi-attention-tasks"}),l.jsx(uc,{value:m.unhealthyEnvironments,label:"Unhealthy Envs",accent:"blue",index:3,testId:"kpi-unhealthy-envs"})]}),l.jsxs("div",{className:_e.bodyGrid,children:[l.jsxs(Mt.div,{className:_e.section,variants:cc,initial:"hidden",animate:"visible",custom:0,"data-testid":"dashboard-active-sessions",children:[l.jsxs("div",{className:_e.sectionHeader,children:[l.jsx("span",{className:_e.sectionIcon,"aria-hidden":"true",children:"●"}),l.jsx("span",{className:_e.sectionTitle,children:"Active Sessions"}),l.jsx("span",{className:_e.sectionCount,children:h.length})]}),l.jsx("div",{className:_e.sectionBody,children:h.length===0?l.jsx("div",{className:_e.emptyHint,children:"No active sessions"}):h.map(({session:b,environmentName:_})=>l.jsxs("button",{type:"button",className:_e.sessionRow,onClick:()=>u(Eb(b.id)),"data-testid":"session-row",children:[l.jsx("span",{className:_e.sessionPrompt,title:b.prompt,children:b.prompt||"—"}),l.jsx("span",{className:_e.sessionEnv,children:_}),l.jsx("span",{className:_e.sessionRuntime,children:b.runtime}),l.jsxs("span",{className:_e.sessionStatus,children:[l.jsx("span",{className:_e.statusDot,"data-status":b.status}),b.status]})]},b.id))})]}),l.jsxs(Mt.div,{className:_e.section,variants:cc,initial:"hidden",animate:"visible",custom:1,"data-testid":"dashboard-needs-attention",children:[l.jsxs("div",{className:_e.sectionHeader,children:[l.jsx("span",{className:_e.sectionIcon,"aria-hidden":"true",children:"⚑"}),l.jsx("span",{className:_e.sectionTitle,children:"Needs Attention"}),l.jsx("span",{className:_e.sectionCount,children:g.length})]}),l.jsx("div",{className:_e.sectionBody,children:g.length===0?l.jsx("div",{className:_e.emptyHint,children:"All clear"}):g.map(({task:b,reason:_,workspaceName:S})=>l.jsxs("button",{type:"button",className:_e.attentionRow,onClick:()=>u(rs(b.id)),"data-testid":"attention-row",children:[l.jsxs("div",{className:_e.attentionTitle,children:[l.jsx("span",{className:_e.reasonBadge,"data-reason":_,children:_}),b.title]}),l.jsx("div",{className:_e.attentionMeta,children:l.jsx("span",{children:S})})]},b.id))})]})]}),l.jsxs("div",{className:_e.bottomGrid,children:[l.jsxs(Mt.div,{className:_e.section,variants:cc,initial:"hidden",animate:"visible",custom:2,"data-testid":"dashboard-env-health",children:[l.jsxs("div",{className:_e.sectionHeader,children:[l.jsx("span",{className:_e.sectionIcon,"aria-hidden":"true",children:"◈"}),l.jsx("span",{className:_e.sectionTitle,children:"Environment Health"}),l.jsx("span",{className:_e.sectionCount,children:o.length})]}),l.jsx("div",{className:_e.sectionBody,children:o.length===0?l.jsx("div",{className:_e.emptyHint,children:"No environments configured"}):o.map(b=>l.jsxs("div",{className:_e.envRow,"data-testid":"dashboard-env-row",children:[l.jsx("span",{className:_e.envName,children:b.displayName}),l.jsx("span",{className:_e.envStatusBadge,"data-status":b.status,children:b.status})]},b.id))})]}),l.jsxs(Mt.div,{className:_e.section,variants:cc,initial:"hidden",animate:"visible",custom:3,"data-testid":"dashboard-workspace-snapshot",children:[l.jsxs("div",{className:_e.sectionHeader,children:[l.jsx("span",{className:_e.sectionIcon,"aria-hidden":"true",children:"▦"}),l.jsx("span",{className:_e.sectionTitle,children:"Workspaces"}),l.jsx("span",{className:_e.sectionCount,children:n.length})]}),l.jsx("div",{className:_e.sectionBody,children:v.length===0?l.jsx("div",{className:_e.emptyHint,children:"No workspaces yet"}):v.map(({workspace:b,totalTasks:_,completedTasks:S,workingTasks:T,failedTasks:N})=>{const j=_>0?Math.round(S/_*100):0;return l.jsxs("button",{type:"button",className:_e.workspaceRow,onClick:()=>u(Qi(b.id,b.environmentId)),"data-testid":"workspace-row",children:[l.jsxs("div",{className:_e.workspaceTop,children:[l.jsx("span",{className:_e.workspaceName,children:b.name}),l.jsxs("span",{className:_e.workspaceCounts,"aria-label":mL(S,_,T,N),children:[S,"/",_,T>0&&l.jsxs("span",{style:{color:"var(--accent-green)"},"aria-hidden":"true",children:["▸",T]}),N>0&&l.jsxs("span",{style:{color:"var(--accent-red)"},"aria-hidden":"true",children:["✗",N]})]})]}),_>0&&l.jsx("div",{className:_e.progressBar,children:l.jsx("div",{className:_e.progressFill,style:{width:`${j}%`}})})]},b.id)})})]})]})]})}const gL="_panelContainer_101ly_1",vL="_emptyState_101ly_8",yL="_fadeIn_101ly_1",bL="_workspaceSummary_101ly_17",_L="_workspaceSummaryTitle_101ly_28",xL="_workspaceSummarySubtitle_101ly_32",SL="_header_101ly_36",TL="_headerInfo_101ly_71",kL="_killButton_101ly_77",wL="_headerTitle_101ly_106",NL="_headerActions_101ly_121",jL="_taskStatusBadge_101ly_128",CL="_taskBranch_101ly_137",EL="_taskBlockedBadge_101ly_143",AL="_btnPrimary_101ly_151",DL="_btnDanger_101ly_182",RL="_btnGhost_101ly_221",ML="_rejectInput_101ly_247",OL="_tabBar_101ly_277",IL="_tab_101ly_277",BL="_active_101ly_303",LL="_eventScroll_101ly_308",UL="_tabContent_101ly_314",zL="_noContext_101ly_319",PL="_overviewContent_101ly_325",VL="_overviewDashboard_101ly_334",HL="_overviewHero_101ly_340",GL="_statusBadge_101ly_347",$L="_statusPending_101ly_359",qL="_statusAssigned_101ly_364",FL="_statusInProgress_101ly_369",ZL="_statusReview_101ly_374",KL="_statusDone_101ly_379",YL="_statusFailed_101ly_384",JL="_statusWaitingInput_101ly_389",WL="_overviewBranchPill_101ly_394",XL="_branchLink_101ly_409",QL="_overviewSection_101ly_420",e5="_overviewLabel_101ly_426",t5="_overviewValue_101ly_433",n5="_overviewMuted_101ly_438",s5="_overviewMarkdown_101ly_444",a5="_envRow_101ly_513",i5="_envDot_101ly_519",o5="_envDotGreen_101ly_526",r5="_envDotYellow_101ly_530",l5="_envDotRed_101ly_534",c5="_envDotGray_101ly_538",u5="_depList_101ly_542",d5="_depItem_101ly_548",f5="_depBlocked_101ly_555",p5="_depDone_101ly_559",m5="_timeline_101ly_563",h5="_timelineRow_101ly_569",g5="_timelineKey_101ly_576",v5="_timelineValue_101ly_582",y5="_timelineDelta_101ly_586",b5="_reviewNotes_101ly_597",_5="_overviewDescription_101ly_608",x5="_waitingMessage_101ly_614",S5="_errorMessage_101ly_618",T5="_attemptSelector_101ly_622",k5="_attemptLabel_101ly_638",w5="_attemptButton_101ly_642",N5="_attemptActive_101ly_659",j5="_attemptStatus_101ly_665",C5="_emptyCta_101ly_671",E5="_ctaTitle_101ly_683",A5="_ctaDescription_101ly_689",D5="_ctaButton_101ly_696",R5="_ctaCreateForm_101ly_731",M5="_ctaCreateInput_101ly_737",O5="_ctaCreateOk_101ly_768",I5="_ctaLink_101ly_803",B5="_workspaceHeader_101ly_817",L5="_workspaceName_101ly_842",U5="_workspaceMeta_101ly_855",z5="_metaRow_101ly_863",P5="_metaLabel_101ly_876",V5="_metaValue_101ly_891",H5="_archiveButton_101ly_901",G5="_repoLink_101ly_931",$5="_metaToggle_101ly_941",q5="_metaToggleArrow_101ly_962",F5="_metaToggleArrowOpen_101ly_967",Z5="_progressBarContainer_101ly_971",K5="_progressBar_101ly_971",Y5="_progressFill_101ly_987",J5="_progressLabel_101ly_994",W5="_metaTimestamps_101ly_1001",X5="_metaTimestamp_101ly_1001",U={panelContainer:gL,emptyState:vL,fadeIn:yL,workspaceSummary:bL,workspaceSummaryTitle:_L,workspaceSummarySubtitle:xL,header:SL,headerInfo:TL,killButton:kL,headerTitle:wL,headerActions:NL,taskStatusBadge:jL,taskBranch:CL,taskBlockedBadge:EL,btnPrimary:AL,btnDanger:DL,btnGhost:RL,rejectInput:ML,tabBar:OL,tab:IL,active:BL,eventScroll:LL,tabContent:UL,noContext:zL,overviewContent:PL,overviewDashboard:VL,overviewHero:HL,statusBadge:GL,statusPending:$L,statusAssigned:qL,statusInProgress:FL,statusReview:ZL,statusDone:KL,statusFailed:YL,statusWaitingInput:JL,overviewBranchPill:WL,branchLink:XL,overviewSection:QL,overviewLabel:e5,overviewValue:t5,overviewMuted:n5,overviewMarkdown:s5,envRow:a5,envDot:i5,envDotGreen:o5,envDotYellow:r5,envDotRed:l5,envDotGray:c5,depList:u5,depItem:d5,depBlocked:f5,depDone:p5,timeline:m5,timelineRow:h5,timelineKey:g5,timelineValue:v5,timelineDelta:y5,reviewNotes:b5,overviewDescription:_5,waitingMessage:x5,errorMessage:S5,attemptSelector:T5,attemptLabel:k5,attemptButton:w5,attemptActive:N5,attemptStatus:j5,emptyCta:C5,ctaTitle:E5,ctaDescription:A5,ctaButton:D5,ctaCreateForm:R5,ctaCreateInput:M5,ctaCreateOk:O5,ctaLink:I5,workspaceHeader:B5,workspaceName:L5,workspaceMeta:U5,metaRow:z5,metaLabel:P5,metaValue:V5,archiveButton:H5,repoLink:G5,metaToggle:$5,metaToggleArrow:q5,metaToggleArrowOpen:F5,progressBarContainer:Z5,progressBar:K5,progressFill:Y5,progressLabel:J5,metaTimestamps:W5,metaTimestamp:X5};function Q5(){return l.jsx("div",{className:U.emptyState,children:"Select a task or click + to create one"})}function e8(){return l.jsx("div",{className:U.emptyState,children:"Select an environment to manage its workspaces, or add a new one."})}function t8(){const{workspaces:n,environments:s}=pt(),i=xt(),o=s.length>0;return n.length>0?l.jsx(hL,{}):l.jsxs("div",{className:U.emptyCta,"data-testid":"welcome-cta",children:[l.jsx("div",{className:U.ctaTitle,children:"Welcome to Grackle"}),l.jsx("div",{className:U.ctaDescription,children:"Organize your work into workspaces and let agents tackle the tasks."}),l.jsx("button",{className:U.ctaButton,onClick:()=>i(Rb),disabled:!o,"data-testid":"welcome-create-button",children:"Create Your First Workspace"}),!o&&l.jsx("div",{className:U.ctaDescription,children:"Add an environment first before creating a workspace."})]})}const n8="_panelContainer_19poq_1",s8="_chatHeader_19poq_8",a8="_chatHeaderInfo_19poq_37",i8="_emptyState_19poq_43",o8="_emptyTitle_19poq_55",r8="_emptyDescription_19poq_61",l8="_emptyHint_19poq_67",Ya={panelContainer:n8,chatHeader:s8,chatHeaderInfo:a8,emptyState:i8,emptyTitle:o8,emptyDescription:r8,emptyHint:l8};function c8({hasLocalEnvironment:n}){return l.jsxs("div",{className:Ya.emptyState,"data-testid":"chat-empty-state",children:[l.jsx("div",{className:Ya.emptyTitle,children:"Welcome to Grackle"}),l.jsx("div",{className:Ya.emptyDescription,children:n?"Type a message below to start chatting with the System agent. It can help you plan work, create tasks, and coordinate agents.":"Add a local environment in Settings to start chatting."}),!n&&l.jsx("div",{className:Ya.emptyHint,children:"Go to Settings → Environments to add one."})]})}function u8(){const{tasks:n,sessions:s,events:i,eventsDropped:o,environments:c,loadTaskSessions:u,loadSessionEvents:d,kill:m,stopGraceful:h,taskSessions:g,sendInput:v,spawn:b,startTask:_,personas:S,provisionEnvironment:T}=pt(),{showToast:N}=un(),j=y.useRef(void 0),[w,C]=y.useState(),A=n.find(F=>F.id===ar),M=A!=null&&A.latestSessionId?s.find(F=>F.id===A.latestSessionId)??(g[ar]??[]).find(F=>F.id===A.latestSessionId):void 0;y.useEffect(()=>{u(ar)},[u]),y.useEffect(()=>{A!=null&&A.latestSessionId&&u(ar)},[A==null?void 0:A.latestSessionId,u]),y.useEffect(()=>{M&&M.id!==j.current&&(j.current=M.id,d(M.id))},[M==null?void 0:M.id,d]);const D=y.useMemo(()=>{if(!M)return[];const F=i.filter(Q=>Q.sessionId===M.id);return lm(rm(F))},[i,M==null?void 0:M.id]),E=c.find(F=>F.adapterType==="local"&&F.status==="connected"),H=M!==void 0&&M.status!=="stopped"&&M.status!=="suspended",z=(M==null?void 0:M.status)==="idle";y.useEffect(()=>{w&&M&&z&&(v(M.id,w),C(void 0))},[w,z,M==null?void 0:M.id,v]);const Z=y.useCallback((F,Q,ae,pe)=>{pe&&C(pe),_(F,Q,ae)},[_]);return l.jsxs("div",{className:Ya.panelContainer,"data-testid":"chat-page",children:[H&&l.jsxs("div",{className:Ya.chatHeader,children:[l.jsxs("span",{className:Ya.chatHeaderInfo,children:["Session: ",M.id.slice(0,8)," | ",M.runtime," | ",M.status]}),l.jsx(Ob,{label:"Stop",onClick:()=>h(M.id),variant:"danger",size:"sm","data-testid":"stop-split-button",options:[{label:"Stop",description:"Graceful shutdown",onClick:()=>h(M.id)},{label:"Kill",description:"Force kill",onClick:()=>m(M.id)}]})]}),l.jsx(am,{events:D,eventsDropped:o,emptyState:l.jsx(c8,{hasLocalEnvironment:!!E})}),E&&H&&l.jsx(Sr,{mode:"send",sessionId:M.id,environmentId:M.environmentId,personas:S,environments:c,onSendInput:v,onSpawn:b,onStartTask:_,onProvisionEnvironment:T,onShowToast:N}),E&&!H&&l.jsx(Sr,{mode:"start",taskId:ar,environmentId:E.id,personas:S,environments:c,onSendInput:v,onSpawn:b,onStartTask:Z,onProvisionEnvironment:T,onShowToast:N})]})}function d8(){const n=V4(),[s]=Sp(),i=s.get("env")??"",{sendInput:o,spawn:c,startTask:u,personas:d,environments:m,provisionEnvironment:h}=pt(),{showToast:g}=un();return l.jsxs("div",{className:U.panelContainer,children:[l.jsx(xa,{segments:n}),l.jsx("div",{className:U.emptyState,children:"Enter a prompt below to start a new session"}),l.jsx(Sr,{mode:"spawn",environmentId:i,showPersonaSelect:!0,personas:d,environments:m,onSendInput:o,onSpawn:c,onStartTask:u,onProvisionEnvironment:h,onShowToast:g})]})}function f8({sessionId:n,session:s,isActive:i,onStop:o,onKill:c}){return l.jsxs("div",{className:U.header,children:[l.jsxs("span",{children:["Session: ",n.slice(0,8),s&&` | ${s.runtime} | ${s.endReason||s.status}`,s!=null&&s.inputTokens||s!=null&&s.outputTokens||s!=null&&s.costUsd?` | ${Ib((s.inputTokens??0)+(s.outputTokens??0))} tokens · ${no(s.costUsd??0)}`:""]}),l.jsxs("span",{className:U.headerInfo,children:[s&&l.jsx("span",{children:s.prompt.length>60?s.prompt.slice(0,60)+"...":s.prompt}),i&&l.jsx(Ob,{label:"Stop",onClick:o,variant:"danger",size:"sm","data-testid":"stop-split-button",options:[{label:"Stop",description:"Graceful shutdown",onClick:o},{label:"Kill",description:"Force kill",onClick:c}]})]})]})}function p8({session:n}){const s=n&&(n.status==="stopped"||n.status==="suspended"),i=s?`Session ${n.endReason||n.status} with no events recorded.`:"Waiting for events...";return l.jsx("div",{className:s?U.errorMessage:U.waitingMessage,children:i})}function m8(){const{sessionId:n}=_a(),{events:s,eventsDropped:i,sessions:o,kill:c,stopGraceful:u,loadSessionEvents:d,sendInput:m,spawn:h,startTask:g,personas:v,environments:b,provisionEnvironment:_}=pt(),{showToast:S}=un(),T=y.useRef(void 0),N=H4(n),j=o.find(A=>A.id===n)??void 0,w=y.useMemo(()=>{const A=n?s.filter(M=>M.sessionId===n):[];return lm(rm(A))},[s,n]);if(y.useEffect(()=>{n&&n!==T.current&&(T.current=n,d(n))},[n,d]),!n)return l.jsx("div",{className:U.emptyState,children:"No session selected"});const C=(j==null?void 0:j.status)==="running"||(j==null?void 0:j.status)==="idle";return l.jsxs("div",{className:U.panelContainer,children:[l.jsx(xa,{segments:N}),l.jsx(f8,{sessionId:n,session:j,isActive:C,onStop:()=>u(n),onKill:()=>c(n)}),l.jsx(am,{events:w,eventsDropped:i,emptyState:l.jsx(p8,{session:j})}),C&&l.jsx(Sr,{mode:"send",sessionId:n,environmentId:j.environmentId,personas:v,environments:b,onSendInput:m,onSpawn:h,onStartTask:g,onProvisionEnvironment:_,onShowToast:S})]})}function h8(n){if(!n)return!1;const s=n.tagName;return!!(s==="INPUT"||s==="TEXTAREA"||s==="SELECT"||n.isContentEditable)}function Os(n,s){const i=y.useRef(s);i.current=s;const{key:o,ctrl:c=!1,shift:u=!1,suppressInInputs:d=!0,enabled:m=!0}=n;y.useEffect(()=>{if(!m)return;const h=g=>{if(d&&h8(document.activeElement??void 0))return;const v=g.ctrlKey||g.metaKey;c===v&&(u&&!g.shiftKey||g.key===o&&i.current())};return document.addEventListener("keydown",h),()=>{document.removeEventListener("keydown",h)}},[o,c,u,d,m])}function eb(n){if(!n)return"";const s=new Date(n);if(isNaN(s.getTime()))return"";const o=Date.now()-s.getTime();if(o<0)return"just now";const c=Math.floor(o/6e4);if(c<1)return"just now";if(c<60)return`${c}m ago`;const u=Math.floor(c/60);if(u<24)return`${u}h ago`;const d=Math.floor(u/24);return d<30?`${d}d ago`:s.toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"})}const Bf=100;function g8(n){try{const s=new URL(n);return s.protocol!=="http:"&&s.protocol!=="https:"?void 0:s.toString()}catch{return}}function v8(){const{workspaceId:n,environmentId:s}=_a(),i=xt(),{tasks:o,environments:c,workspaces:u,personas:d,sessions:m,archiveWorkspace:h,updateWorkspace:g,usageCache:v,loadUsage:b}=pt(),{resolvedThemeId:_}=Ax(),[S,T]=y.useState("tasks"),[N,j]=y.useState(!1),[w,C]=y.useState(null),[A,M]=y.useState(!1),D=y.useRef(void 0),E=u.find(X=>X.id===n),H=s??(E==null?void 0:E.environmentId)??"",z=G4(n,H,u,c);Os({key:"1"},()=>T("graph")),Os({key:"2"},()=>T("board")),Os({key:"3"},()=>T("tasks")),y.useEffect(()=>{const X=D.current;D.current=n,!(X===void 0||X===n)&&w!==null&&C(null)},[n,w]);const Z=m.reduce((X,B)=>X+(B.costUsd??0),0);y.useEffect(()=>{n&&b("workspace",n)},[n,b,Z]);const F=n?v[`workspace:${n}`]:void 0,Q=o.filter(X=>X.workspaceId===n),ae=Q.filter(X=>X.status==="complete").length,pe=Q.length,oe=pe>0?Math.round(ae/pe*100):0;return l.jsxs("div",{className:U.panelContainer,children:[l.jsx(xa,{segments:z}),l.jsxs("div",{className:U.workspaceHeader,children:[l.jsx("span",{className:U.workspaceName,"data-testid":"workspace-name",children:l.jsx(Kt,{value:(E==null?void 0:E.name)||"",onSave:X=>{E&&g(E.id,{name:X})},validate:X=>{const B=X.trim();if(!B)return"Name is required";if(B.length>Bf)return`Max ${Bf} characters`},maxLength:Bf,fieldId:"name",activeFieldId:w,onActivate:C,ariaLabel:"Workspace name",renderDisplay:X=>X||n||void 0,"data-testid":"edit-name"})}),l.jsx("button",{className:U.archiveButton,onClick:()=>j(!0),title:"Archive workspace","data-testid":"archive-workspace-button",children:"Archive"})]}),l.jsxs("button",{className:U.metaToggle,onClick:()=>M(!A),"aria-expanded":!A,"aria-controls":"workspace-meta-panel","data-testid":"meta-toggle",children:[l.jsx("span",{className:`${U.metaToggleArrow} ${A?"":U.metaToggleArrowOpen}`,children:"▶"}),"Details"]}),!A&&l.jsxs("div",{className:U.workspaceMeta,"data-testid":"workspace-meta",id:"workspace-meta-panel",children:[l.jsxs("div",{className:U.metaRow,children:[l.jsx("span",{className:U.metaLabel,children:"Description"}),l.jsx("div",{className:U.metaValue,children:l.jsx(op,{value:(E==null?void 0:E.description)||"",onSave:X=>{E&&g(E.id,{description:X})},fieldId:"description",activeFieldId:w,onActivate:C,renderDisplay:X=>X?l.jsx("span",{className:U.overviewMarkdown,children:l.jsx(fp,{remarkPlugins:[pp],children:X})}):void 0,placeholder:"No description",ariaLabel:"Workspace description","data-testid":"edit-description"})})]}),l.jsxs("div",{className:U.metaRow,children:[l.jsx("span",{className:U.metaLabel,children:"Repository"}),l.jsx("div",{className:U.metaValue,children:l.jsx(Kt,{value:(E==null?void 0:E.repoUrl)||"",onSave:X=>{E&&g(E.id,{repoUrl:X})},validate:X=>{const B=X.trim();if(B&&!/^https?:\/\/.+/.test(B))return"Must be a valid http(s) URL"},fieldId:"repoUrl",activeFieldId:w,onActivate:C,renderDisplay:X=>{const B=g8(X);return B?l.jsx("a",{className:U.repoLink,href:B,target:"_blank",rel:"noopener noreferrer",onClick:q=>q.stopPropagation(),children:X}):X?l.jsx("span",{children:X}):void 0},placeholder:"No repository",ariaLabel:"Workspace repository URL","data-testid":"edit-repo"})})]}),l.jsxs("div",{className:U.metaRow,children:[l.jsx("span",{className:U.metaLabel,children:"Environment"}),l.jsx("div",{className:U.metaValue,children:l.jsx(tM,{value:(E==null?void 0:E.environmentId)||"",onSave:X=>{E&&X&&g(E.id,{environmentId:X})},environments:c,fieldId:"environmentId",activeFieldId:w,onActivate:C,placeholder:"Select environment",ariaLabel:"Workspace environment","data-testid":"edit-env"})})]}),l.jsxs("div",{className:U.metaRow,children:[l.jsx("span",{className:U.metaLabel,children:"Persona"}),l.jsx("div",{className:U.metaValue,children:l.jsx(Ec,{value:(E==null?void 0:E.defaultPersonaId)||"",onSave:X=>{E&&g(E.id,{defaultPersonaId:X})},options:[{value:"",label:"(Inherit)"},...d.map(X=>({value:X.id,label:X.name}))],fieldId:"defaultPersonaId",activeFieldId:w,onActivate:C,renderDisplay:X=>{const B=d.find(q=>q.id===X);if(B)return l.jsx("span",{children:B.name})},placeholder:(E==null?void 0:E.defaultPersonaId)||"(Inherit)",ariaLabel:"Workspace default persona","data-testid":"edit-persona"})})]}),l.jsxs("div",{className:U.metaRow,children:[l.jsx("span",{className:U.metaLabel,children:"Worktrees"}),l.jsx("div",{className:U.metaValue,children:l.jsx(ZR,{checked:(E==null?void 0:E.useWorktrees)??!0,onChange:X=>{E&&g(E.id,{useWorktrees:X})},label:"Enable worktree isolation","data-testid":"worktree-toggle"})})]}),l.jsxs("div",{className:U.metaRow,children:[l.jsx("span",{className:U.metaLabel,children:"Working Dir"}),l.jsx("div",{className:U.metaValue,children:l.jsx(Kt,{value:(E==null?void 0:E.workingDirectory)||"",onSave:X=>{E&&g(E.id,{workingDirectory:X})},fieldId:"workingDirectory",activeFieldId:w,onActivate:C,placeholder:"Default (server default)",ariaLabel:"Working directory","data-testid":"edit-working-directory"})})]}),E&&l.jsxs("div",{className:U.metaTimestamps,children:[l.jsxs("span",{className:U.metaTimestamp,children:["Created ",eb(E.createdAt)]}),E.updatedAt&&E.updatedAt!==E.createdAt&&l.jsxs("span",{className:U.metaTimestamp,children:["· Updated ",eb(E.updatedAt)]})]})]}),pe>0&&l.jsxs("div",{className:U.progressBarContainer,"data-testid":"progress-bar",children:[l.jsx("div",{className:U.progressBar,children:l.jsx("div",{className:U.progressFill,style:{width:`${oe}%`}})}),l.jsxs("span",{className:U.progressLabel,children:[ae,"/",pe]})]}),F&&F.costUsd>0&&l.jsx("div",{className:U.progressBarContainer,children:l.jsxs("span",{className:U.progressLabel,children:["Usage: ",no(F.costUsd)," (",F.sessionCount," session",F.sessionCount!==1?"s":"",")"]})}),l.jsxs("div",{className:U.tabBar,role:"tablist","aria-label":"Workspace view",children:[l.jsx("button",{role:"tab","aria-selected":S==="graph",className:`${U.tab} ${S==="graph"?U.active:""}`,onClick:()=>T("graph"),children:"Graph"}),l.jsx("button",{role:"tab","aria-selected":S==="board",className:`${U.tab} ${S==="board"?U.active:""}`,onClick:()=>T("board"),"data-testid":"board-tab",children:"Board"}),l.jsx("button",{role:"tab","aria-selected":S==="tasks",className:`${U.tab} ${S==="tasks"?U.active:""}`,onClick:()=>T("tasks"),children:"Tasks"})]}),S==="tasks"&&pe>0&&l.jsxs("div",{className:U.workspaceSummary,children:[l.jsx("span",{className:U.workspaceSummaryTitle,children:`${ae}/${pe} tasks complete`}),l.jsx("span",{className:U.workspaceSummarySubtitle,children:"Select a task or click + to create one"})]}),S==="tasks"&&pe===0&&l.jsxs("div",{className:U.emptyCta,children:[l.jsx("button",{className:U.ctaButton,onClick:()=>i(ni(n,void 0,H)),children:"Create Task"}),l.jsx("div",{className:U.ctaDescription,children:"Break your work into tasks and let agents tackle them"})]}),S==="board"&&l.jsx(f4,{workspaceId:n,environmentId:H,tasks:o,sessions:m,personas:d,environments:c}),S==="graph"&&l.jsx(X2,{workspaceId:n,environmentId:H,tasks:o,resolvedThemeId:_}),l.jsx(Xa,{isOpen:N,title:"Archive Workspace?",description:"This will hide the workspace from the sidebar. Tasks will not be deleted.",confirmLabel:"Archive",onConfirm:()=>{E&&(h(E.id),i("/",{replace:!0})),j(!1)},onCancel:()=>j(!1)})]})}const y8="_container_3pgew_1",b8="_header_3pgew_8",_8="_headerTitle_3pgew_35",x8="_headerActions_3pgew_44",S8="_body_3pgew_51",T8="_btnPrimary_3pgew_63",k8="_btnGhost_3pgew_94",w8="_error_3pgew_116",pa={container:y8,header:b8,headerTitle:_8,headerActions:x8,body:S8,btnPrimary:T8,btnGhost:k8,error:w8};function N8(n){const s={};return n.name.trim()||(s.name="Name is required"),n.repoUrl.trim()&&!/^https?:\/\/.+/i.test(n.repoUrl.trim())&&(s.repoUrl="Must be a valid http(s) URL"),n.environmentId||(s.environmentId="Environment is required"),Object.keys(s).length>0?s:void 0}const j8=[{label:"Home",url:Wa},{label:"New Workspace",url:void 0}];function C8(){const[n]=Sp(),s=n.get("environment")??void 0,{environments:i,personas:o,createWorkspace:c,workspaceCreating:u}=pt(),{showToast:d}=un(),m=xt(),[h,g]=y.useState(()=>{var j;return T4(void 0,s||((j=i[0])==null?void 0:j.id))}),[v,b]=y.useState(),[_,S]=y.useState();y.useEffect(()=>{s||h.environmentId||i.length===0||g(j=>{var w;return j.environmentId?j:{...j,environmentId:((w=i[0])==null?void 0:w.id)??""}})},[i,s,h.environmentId]);const T=()=>{const j=N8(h);if(j){b(j),S(void 0);return}b(void 0),S(void 0),c(h.name.trim(),h.description,h.repoUrl.trim(),h.environmentId,h.defaultPersonaId,h.useWorktrees,h.workingDirectory,()=>{d("Workspace created","success"),m(Wa,{replace:!0})},w=>{S(w)})},N=()=>{m(s?to(s):Wa,{replace:!0})};return l.jsxs("div",{className:pa.container,children:[l.jsxs("div",{className:pa.header,children:[l.jsx("div",{className:pa.headerTitle,children:l.jsx(xa,{segments:j8})}),l.jsxs("div",{className:pa.headerActions,children:[l.jsx("button",{className:pa.btnGhost,onClick:N,disabled:u,"data-testid":"workspace-create-cancel",children:"Cancel"}),l.jsx("button",{className:pa.btnPrimary,onClick:T,disabled:u||!h.name.trim()||!h.environmentId,"data-testid":"workspace-create-save",children:u?l.jsx(dx,{size:"sm",label:"Creating"}):"Create Workspace"})]})]}),l.jsxs("div",{className:pa.body,children:[l.jsx(w4,{values:h,onChange:j=>{g(j),b(void 0),S(void 0)},environments:i,personas:o,errors:v,disabled:u,autoFocusName:!0}),_&&l.jsx("div",{className:pa.error,"data-testid":"workspace-create-submit-error",children:_})]})]})}function tb(){const{workspaceId:n,environmentId:s}=_a(),[i]=Sp(),o=n??i.get("workspace")??"",c=i.get("parent")??void 0,{tasks:u,workspaces:d,personas:m,createTask:h,updateTask:g}=pt(),{showToast:v}=un();return l.jsx(Tx,{mode:"new",workspaceId:o,parentTaskId:c,environmentId:s,tasks:u,workspaces:d,personas:m,onCreateTask:h,onUpdateTask:g,onShowToast:v})}function dc(n){if(!n)return"—";const s=new Date(n);return isNaN(s.getTime())?"—":s.toLocaleString(void 0,{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit"})}function Lf(n,s){if(!n||!s)return;const i=new Date(s).getTime()-new Date(n).getTime();if(isNaN(i)||i<0)return;const o=Math.floor(i/6e4),c=Math.floor(i%6e4/1e3);if(o===0)return`${c}s`;const u=Math.floor(o/60),d=o%60;return u===0?`${o}m ${c}s`:`${u}h ${d}m`}function nb(n){const s=n.toLowerCase();return s==="ready"||s==="running"||s==="available"||s==="connected"?U.envDotGreen:s==="provisioning"||s==="starting"||s==="pending"||s==="connecting"?U.envDotYellow:s==="error"||s==="failed"||s==="disconnected"?U.envDotRed:U.envDotGray}function E8({status:n}){const s=va(n),i=qT(n);return l.jsx("span",{className:`${U.statusBadge} ${U[i]??U.statusPending}`,children:s.label})}function A8({task:n,tasksById:s,environments:i,workspaces:o,taskSessions:c,selectedEnvId:u}){const{loadUsage:d,usageCache:m}=pt(),h=c.reduce((A,M)=>A+(M.costUsd??0),0);y.useEffect(()=>{d("task",n.id),n.childTaskIds.length>0&&d("task_tree",n.id)},[n.id,n.childTaskIds.length,d,h]);const g=`task:${n.id}`,v=g in m?m[g]:void 0,b=`task_tree:${n.id}`,_=n.childTaskIds.length>0&&b in m?m[b]:void 0,S=c.length>0?c[c.length-1]:void 0,T=(S==null?void 0:S.environmentId)??"",N=T?i.find(A=>A.id===T):void 0,j=o.find(A=>A.id===n.workspaceId),w=i.find(A=>A.id===u),C=n.branch&&(j!=null&&j.repoUrl)?`${j.repoUrl.replace(/\/$/,"")}/tree/${encodeURIComponent(n.branch)}`:void 0;return l.jsxs("div",{className:U.overviewDashboard,children:[l.jsxs("div",{className:U.overviewHero,children:[l.jsx(E8,{status:n.status}),n.branch&&l.jsx("span",{className:U.overviewBranchPill,children:C?l.jsxs("a",{href:C,target:"_blank",rel:"noreferrer noopener",className:U.branchLink,children:["🔗"," ",n.branch]}):l.jsxs("span",{children:["🔗"," ",n.branch]})})]}),typeof n.description=="string"&&n.description&&l.jsxs("div",{className:U.overviewSection,children:[l.jsx("div",{className:U.overviewLabel,children:"Description"}),l.jsx("div",{className:U.overviewMarkdown,children:l.jsx(fp,{remarkPlugins:[pp],children:n.description})})]}),n.workpad&&l.jsx(aI,{workpad:n.workpad}),l.jsxs("div",{className:U.overviewSection,children:[l.jsx("div",{className:U.overviewLabel,children:"Environment"}),T&&N?l.jsxs("div",{className:U.envRow,"data-testid":"task-overview-environment",children:[l.jsx("span",{className:`${U.envDot} ${nb(N.status)}`,title:N.status,"aria-label":`Status: ${N.status}`,role:"img"}),l.jsx("span",{className:U.overviewValue,children:N.displayName})]}):w?l.jsxs("div",{className:U.envRow,"data-testid":"task-overview-environment",children:[l.jsx("span",{className:`${U.envDot} ${nb(w.status)}`,title:w.status,"aria-label":`Status: ${w.status}`,role:"img"}),l.jsx("span",{className:U.overviewValue,children:w.displayName}),l.jsx("span",{className:U.overviewMuted,children:"(workspace default)"})]}):l.jsx("div",{className:U.overviewMuted,children:"Set in workspace settings"})]}),l.jsxs("div",{className:U.overviewSection,"data-testid":"task-overview-dependencies",children:[l.jsx("div",{className:U.overviewLabel,children:"Dependencies"}),n.dependsOn.length===0?l.jsx("div",{className:U.overviewMuted,children:"None"}):l.jsx("div",{className:U.depList,children:n.dependsOn.map(A=>{const M=s.get(A),D=(M==null?void 0:M.status)==="complete";return l.jsxs("div",{className:`${U.depItem} ${D?U.depDone:U.depBlocked}`,children:[l.jsx("span",{children:D?"✓":"○"}),l.jsx("span",{children:(M==null?void 0:M.title)??A})]},A)})})]}),l.jsxs("div",{className:U.overviewSection,children:[l.jsx("div",{className:U.overviewLabel,children:"Timeline"}),l.jsxs("div",{className:U.timeline,children:[n.createdAt&&l.jsxs("div",{className:U.timelineRow,children:[l.jsx("span",{className:U.timelineKey,children:"Created"}),l.jsx("span",{className:U.timelineValue,children:dc(n.createdAt)})]}),n.assignedAt&&(()=>{const A=Lf(n.createdAt,n.assignedAt);return l.jsxs("div",{className:U.timelineRow,children:[l.jsx("span",{className:U.timelineKey,children:"Assigned"}),l.jsx("span",{className:U.timelineValue,children:dc(n.assignedAt)}),A!==void 0&&l.jsx("span",{className:U.timelineDelta,children:A})]})})(),n.startedAt&&(()=>{const A=Lf(n.assignedAt??n.createdAt,n.startedAt);return l.jsxs("div",{className:U.timelineRow,children:[l.jsx("span",{className:U.timelineKey,children:"Started"}),l.jsx("span",{className:U.timelineValue,children:dc(n.startedAt)}),A!==void 0&&l.jsx("span",{className:U.timelineDelta,children:A})]})})(),n.completedAt&&(()=>{const A=Lf(n.startedAt,n.completedAt);return l.jsxs("div",{className:U.timelineRow,children:[l.jsx("span",{className:U.timelineKey,children:"Completed"}),l.jsx("span",{className:U.timelineValue,children:dc(n.completedAt)}),A!==void 0&&l.jsx("span",{className:U.timelineDelta,children:A})]})})(),!n.createdAt&&!n.assignedAt&&!n.startedAt&&!n.completedAt&&l.jsx("div",{className:U.overviewMuted,children:"No timing data"})]})]}),v&&v.costUsd>0&&l.jsxs("div",{className:U.overviewSection,children:[l.jsx("div",{className:U.overviewLabel,children:"Usage"}),l.jsxs("div",{className:U.timeline,children:[l.jsxs("div",{className:U.timelineRow,children:[l.jsx("span",{className:U.timelineKey,children:"Cost"}),l.jsx("span",{className:U.timelineValue,children:no(v.costUsd)}),l.jsxs("span",{className:U.timelineDelta,children:[v.sessionCount," session",v.sessionCount!==1?"s":""]})]}),_&&_.costUsd>v.costUsd&&l.jsxs("div",{className:U.timelineRow,children:[l.jsx("span",{className:U.timelineKey,children:"Total (incl. subtasks)"}),l.jsx("span",{className:U.timelineValue,children:no(_.costUsd)}),l.jsxs("span",{className:U.timelineDelta,children:[_.sessionCount," session",_.sessionCount!==1?"s":""]})]})]})]}),n.reviewNotes&&l.jsxs("div",{className:U.overviewSection,children:[l.jsx("div",{className:U.overviewLabel,children:"Review Notes"}),l.jsx("div",{className:U.reviewNotes,children:n.reviewNotes})]})]})}function D8({task:n,sessionId:s,isBlocked:i,onStart:o,onResume:c,onStop:u,onPause:d,onDelete:m,onEdit:h}){if(n.status==="not_started")return i?l.jsxs("div",{className:U.headerActions,children:[l.jsx("button",{onClick:h,className:U.btnGhost,children:"Edit"}),l.jsx("button",{onClick:m,className:U.btnDanger,children:"Delete"})]}):l.jsxs("div",{className:U.headerActions,children:[l.jsx("button",{"data-testid":"task-header-start",onClick:o,className:U.btnPrimary,children:"Start"}),l.jsx("button",{onClick:h,className:U.btnGhost,children:"Edit"}),l.jsx("button",{onClick:m,className:U.btnDanger,children:"Delete"})]});if(n.status==="working")return l.jsxs("div",{className:U.headerActions,children:[l.jsx("button",{onClick:u,className:U.btnDanger,children:"Stop"}),l.jsx("button",{onClick:d,disabled:!s,className:U.btnGhost,children:"Pause"})]});if(n.status==="paused")return l.jsxs("div",{className:U.headerActions,children:[l.jsx("button",{onClick:u,className:U.btnPrimary,children:"Stop"}),l.jsx("button",{onClick:c,className:U.btnGhost,children:"Resume"}),l.jsx("button",{onClick:m,className:U.btnDanger,children:"Delete"})]});if(n.status==="complete")return l.jsx("div",{className:U.headerActions,children:l.jsx("button",{onClick:m,className:U.btnDanger,children:"Delete"})});if(n.status==="failed")return l.jsxs("div",{className:U.headerActions,children:[l.jsx("button",{onClick:o,className:U.btnPrimary,children:"Retry"}),l.jsx("button",{onClick:m,className:U.btnDanger,children:"Delete"})]})}function R8({taskSessions:n,selectedSessionId:s,onSelect:i}){if(!(n.length<2))return l.jsxs("div",{className:U.attemptSelector,"data-testid":"attempt-selector",children:[l.jsx("span",{className:U.attemptLabel,children:"Attempts:"}),n.map((o,c)=>{const u=o.id===s,d=o.status==="stopped"&&o.endReason==="completed"?"✓":o.status==="stopped"?"✗":o.status==="running"||o.status==="idle"?"●":"";return l.jsxs("button",{className:`${U.attemptButton} ${u?U.attemptActive:""}`,onClick:()=>i(o.id),title:`Attempt #${c+1} — ${o.status}`,"aria-label":`Attempt #${c+1}, ${o.status}`,"aria-pressed":u,"data-testid":`attempt-${c+1}`,children:["#",c+1,d&&l.jsx("span",{className:U.attemptStatus,children:d})]},o.id)})]})}function ma(){const{taskId:n,workspaceId:s,environmentId:i}=_a(),o=Bt(),c=xt(),{showToast:u}=un(),{events:d,eventsDropped:m,tasks:h,sessions:g,environments:v,findings:b,loadSessionEvents:_,loadFindings:S,kill:T,startTask:N,stopTask:j,resumeTask:w,deleteTask:C,createTask:A,updateTask:M,workspaces:D,taskSessions:E,loadTaskSessions:H,sendInput:z,spawn:Z,personas:F,provisionEnvironment:Q}=pt(),ae=y.useRef(void 0),pe=y.useRef(void 0),oe=y.useRef(void 0),X=y.useRef(void 0),B=y.useRef(void 0),q=o.pathname.endsWith("/stream")?"stream":o.pathname.endsWith("/findings")?"findings":"overview",te=o.pathname.endsWith("/edit"),[re,de]=y.useState(q),[$e,we]=y.useState(!1),[Se,Oe]=y.useState(void 0),[le,fe]=y.useState(""),[me,Ce]=y.useState(te),Lt=y.useRef(q),St=y.useRef(te),I=h.find(De=>De.id===n),je=(I==null?void 0:I.workspaceId)||void 0,jt=D.find(De=>De.id===je);y.useEffect(()=>{q!==Lt.current&&(Lt.current=q,q!==re&&de(q))},[q,re]),y.useEffect(()=>{te!==St.current&&(St.current=te,te!==me&&Ce(te))},[te,me]),y.useEffect(()=>{if(le===""){if(jt!=null&&jt.environmentId)fe(jt.environmentId);else if(v.length>0){const De=v.find(Je=>Je.status==="connected");fe((De==null?void 0:De.id)??v[0].id)}}},[le,jt==null?void 0:jt.environmentId,v]);const Ot=I?E[I.id]??[]:[];let it;Se&&Ot.some(De=>De.id===Se)?it=Se:it=(I==null?void 0:I.latestSessionId)||void 0;const Jn=()=>{we(!0)},Ls=()=>{if(!I)return;C(I.id),we(!1);const De=i??(jt==null?void 0:jt.environmentId);c(I.workspaceId&&De?Qi(I.workspaceId,De):"/",{replace:!0})};y.useEffect(()=>{(I==null?void 0:I.id)!==pe.current&&(pe.current=I==null?void 0:I.id,Oe(void 0),fe(""),Ce(te))},[I==null?void 0:I.id,te]),y.useEffect(()=>{if(!(I!=null&&I.id))return;const De=I.id!==X.current,Je=I.latestSessionId!==B.current;(De||Je)&&(X.current=I.id,B.current=I.latestSessionId,H(I.id))},[I==null?void 0:I.id,I==null?void 0:I.latestSessionId,H]),y.useEffect(()=>{if((I==null?void 0:I.status)!==oe.current){const De=oe.current===void 0;oe.current=I==null?void 0:I.status;const Je=(I==null?void 0:I.status)==="not_started"?"overview":(I==null?void 0:I.status)==="working"||(I==null?void 0:I.status)==="paused"?"stream":(I==null?void 0:I.status)==="complete"?"findings":void 0;Je&&Je!==re&&!(De&&q!=="overview")&&de(Je)}},[I==null?void 0:I.status,re,q]);const Sn=y.useMemo(()=>new Map(h.map(De=>[De.id,De])),[h]),zn=y.useMemo(()=>{const De=it?d.filter(Je=>Je.sessionId===it):[];return lm(rm(De))},[d,it]),Wn=I?I.dependsOn.some(De=>{const Je=Sn.get(De);return Je!==void 0&&Je.status!=="complete"}):!1,Us=y.useMemo(()=>$4(n,i,D,v,Sn),[n,i,D,v,Sn]);y.useEffect(()=>{it&&it!==ae.current&&(ae.current=it,_(it))},[it,_]),y.useEffect(()=>{re==="findings"&&je&&S(je)},[re,je,S]);const Pn=De=>{de(De),c(rs(n,De==="overview"?void 0:De,s,i))};return Os({key:"1"},()=>Pn("overview")),Os({key:"2"},()=>Pn("stream")),Os({key:"3"},()=>Pn("findings")),l.jsxs("div",{className:U.panelContainer,children:[l.jsx(xa,{segments:Us}),l.jsxs("div",{className:U.header,children:[l.jsxs("span",{className:U.headerTitle,children:[l.jsx("span",{"data-testid":"task-title",children:(I==null?void 0:I.title)||n}),I&&l.jsx("span",{className:U.taskStatusBadge,"data-testid":"task-status",children:I.status}),(I==null?void 0:I.branch)&&l.jsx("span",{className:U.taskBranch,children:I.branch}),Wn&&l.jsx("span",{className:U.taskBlockedBadge,children:"blocked"})]}),I&&l.jsx(D8,{task:I,sessionId:it,isBlocked:Wn,onStart:()=>N(I.id,void 0,le),onResume:()=>w(I.id),onStop:()=>j(I.id),onPause:()=>it&&T(it),onDelete:Jn,onEdit:()=>Ce(!0)})]}),l.jsxs("div",{className:U.tabBar,role:"tablist","aria-label":"Task view",children:[l.jsx("button",{role:"tab","aria-selected":re==="overview",className:`${U.tab} ${re==="overview"?U.active:""}`,onClick:()=>Pn("overview"),children:"Overview"}),l.jsx("button",{role:"tab","aria-selected":re==="stream",className:`${U.tab} ${re==="stream"?U.active:""}`,onClick:()=>Pn("stream"),children:"Stream"}),l.jsx("button",{role:"tab","aria-selected":re==="findings",className:`${U.tab} ${re==="findings"?U.active:""}`,onClick:()=>Pn("findings"),children:"Findings"})]}),l.jsxs(ls,{mode:"wait",children:[re==="overview"&&l.jsx(Mt.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.15},className:U.overviewContent,"data-testid":"task-overview",children:me&&I?l.jsx(Tx,{mode:"edit",taskId:I.id,workspaceId:je,environmentId:i,tasks:h,workspaces:D,personas:F,onCreateTask:A,onUpdateTask:M,onEditDone:()=>{te?c(rs(I.id,void 0,s,i),{replace:!0}):Ce(!1)},onShowToast:u}):I?l.jsx(A8,{task:I,tasksById:Sn,environments:v,workspaces:D,taskSessions:Ot,selectedEnvId:le}):l.jsx("div",{className:U.waitingMessage,children:"No additional details"})},"overview"),re==="stream"&&l.jsxs(Mt.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.15},style:{display:"flex",flexDirection:"column",flex:1,overflow:"hidden"},children:[l.jsx(R8,{taskSessions:Ot,selectedSessionId:it,onSelect:De=>Oe(De)}),l.jsx(am,{events:zn,eventsDropped:m,emptyState:!it&&I?Wn?l.jsx("div",{className:U.emptyCta,"data-testid":"stream-blocked-message",children:l.jsx("div",{className:U.ctaDescription,children:"This task is blocked by incomplete dependencies"})}):l.jsxs("div",{className:U.emptyCta,children:[l.jsx("button",{"data-testid":"stream-start-cta",className:U.ctaButton,onClick:()=>N(I.id,void 0,le),children:"Start Task"}),l.jsx("div",{className:U.ctaDescription,children:"Click to begin agent execution"})]}):it&&zn.length===0?l.jsx("div",{className:U.waitingMessage,children:"Waiting for events..."}):void 0})]},"stream"),re==="findings"&&l.jsx(Mt.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.15},className:U.tabContent,children:je?l.jsx(g6,{findings:b.filter(De=>De.workspaceId===je)}):l.jsx("div",{className:U.noContext,children:"Navigate to a task within a workspace to view findings"})},"findings")]}),(()=>{if(!I||I.status!=="working"&&I.status!=="paused")return;const De=it?g.find(Je=>Je.id===it):void 0;if(!(!De||De.status==="stopped"))return l.jsx(Sr,{mode:"send",sessionId:De.id,environmentId:De.environmentId,personas:F,environments:v,onSendInput:z,onSpawn:Z,onStartTask:N,onProvisionEnvironment:Q,onShowToast:u})})(),I&&l.jsx(Xa,{isOpen:$e,title:"Delete Task?",description:`"${I.title}" will be permanently removed.`,onConfirm:Ls,onCancel:()=>we(!1)})]})}function M8(){const{environments:n,addEnvironment:s,updateEnvironment:i,listCodespaces:o,codespaces:c,codespaceError:u,codespaceListError:d,codespaceCreating:m,createCodespace:h}=pt(),{showToast:g}=un();return l.jsx(kx,{mode:"new",environments:n,onAddEnvironment:s,onUpdateEnvironment:i,onListCodespaces:o,codespaces:c,codespaceError:u,codespaceListError:d,codespaceCreating:m,onCreateCodespace:h,onShowToast:g})}function O8(){const{environmentId:n}=_a(),{environments:s,addEnvironment:i,updateEnvironment:o,listCodespaces:c,codespaces:u,codespaceError:d,codespaceListError:m,codespaceCreating:h,createCodespace:g}=pt(),{showToast:v}=un();return l.jsx(kx,{mode:"edit",environmentId:n,environments:s,onAddEnvironment:i,onUpdateEnvironment:o,onListCodespaces:c,codespaces:u,codespaceError:d,codespaceListError:m,codespaceCreating:h,onCreateCodespace:g,onShowToast:v})}const I8="_layout_11u79_1",B8="_content_11u79_8",L8="_tabPanel_11u79_14",xr={layout:I8,content:B8,tabPanel:L8};function U8(){const n=P4();return l.jsxs("div",{className:xr.layout,children:[l.jsx(xa,{segments:n}),l.jsx("div",{className:xr.content,children:l.jsx(ti,{})})]})}const z8="_container_13sb6_1",P8="_envHeader_13sb6_6",V8="_envTitleRow_13sb6_10",H8="_statusDot_13sb6_16",G8="_envName_13sb6_21",$8="_statusBadge_13sb6_27",q8="_envMeta_13sb6_33",F8="_metaTag_13sb6_39",Z8="_actions_13sb6_51",K8="_provisionMessage_13sb6_59",Y8="_errorMessage_13sb6_64",J8="_section_13sb6_69",W8="_sectionHeader_13sb6_73",X8="_cardList_13sb6_121",Q8="_card_13sb6_121",eU="_cardHeader_13sb6_138",tU="_cardName_13sb6_144",nU="_cardActions_13sb6_149",sU="_cardDescription_13sb6_154",aU="_cardMeta_13sb6_160",iU="_repoLink_13sb6_166",oU="_empty_13sb6_174",rU="_btnPrimary_13sb6_180",lU="_btnOutline_13sb6_214",cU="_btnSmall_13sb6_241",uU="_btnDanger_13sb6_267",He={container:z8,envHeader:P8,envTitleRow:V8,statusDot:H8,envName:G8,statusBadge:$8,envMeta:q8,metaTag:F8,actions:Z8,provisionMessage:K8,errorMessage:Y8,section:J8,sectionHeader:W8,cardList:X8,card:Q8,cardHeader:eU,cardName:tU,cardActions:nU,cardDescription:sU,cardMeta:aU,repoLink:iU,empty:oU,btnPrimary:rU,btnOutline:lU,btnSmall:cU,btnDanger:uU},dU={connected:"var(--accent-green)",sleeping:"var(--accent-yellow)",error:"var(--accent-red)",disconnected:"var(--text-tertiary)",connecting:"var(--accent-blue)"};function fU(){const{environmentId:n}=_a(),s=xt(),{environments:i,workspaces:o,sessions:c,provisionStatus:u,provisionEnvironment:d,stopEnvironment:m,removeEnvironment:h,archiveWorkspace:g}=pt(),[v,b]=y.useState(!1),[_,S]=y.useState(!1),[T,N]=y.useState(void 0),j=i.find(ae=>ae.id===n);if(!n||!j)return l.jsx(Yn,{to:eo,replace:!0});const w=o.filter(ae=>ae.environmentId===j.id),C=c.filter(ae=>ae.environmentId===j.id),A=C.reduce((ae,pe)=>ae+(pe.costUsd??0),0),M=dU[j.status]||"var(--text-tertiary)",D=j.status==="connected",E=j.status==="connecting",H=j.status==="disconnected"||j.status==="error",z=j.id in u?u[j.id]:void 0,Z=()=>{h(j.id),b(!1),s(eo,{replace:!0})},F=()=>{S(!1),d(j.id,!0)},Q=ae=>{g(ae),N(void 0)};return l.jsxs("div",{className:He.container,children:[l.jsx(Xa,{isOpen:v,title:"Delete Environment?",description:`"${j.displayName||j.id}" will be permanently removed along with all its data.`,onConfirm:Z,onCancel:()=>b(!1)}),l.jsx(Xa,{isOpen:_,title:"Reprovision Environment?",description:"This will kill any active session and force a fresh provision cycle. The environment will be temporarily disconnected.",confirmLabel:"Reprovision",onConfirm:F,onCancel:()=>S(!1)}),l.jsxs("div",{className:He.envHeader,children:[l.jsxs("div",{className:He.envTitleRow,children:[l.jsx("span",{className:He.statusDot,style:{color:M},children:"●"}),l.jsx("h2",{className:He.envName,children:j.displayName||j.id}),l.jsx("span",{className:He.statusBadge,style:{color:M},children:j.status})]}),l.jsxs("div",{className:He.envMeta,children:[l.jsxs("span",{className:He.metaTag,children:["Adapter: ",j.adapterType]}),C.length>0&&l.jsxs("span",{className:He.metaTag,children:[C.length," session",C.length!==1?"s":""]}),A>0&&l.jsxs("span",{className:He.metaTag,children:["Cost: ",no(A)]})]})]}),l.jsxs("div",{className:He.actions,children:[D&&l.jsxs(l.Fragment,{children:[l.jsx("button",{className:He.btnPrimary,onClick:()=>s(Ab(j.id)),children:"New Chat"}),l.jsx("button",{className:He.btnOutline,onClick:()=>m(j.id),children:"Stop"}),l.jsx("button",{className:He.btnOutline,onClick:()=>S(!0),disabled:z!==void 0,"data-testid":"env-reprovision-btn",children:"Reprovision"})]}),H&&l.jsx("button",{className:He.btnPrimary,onClick:()=>d(j.id),children:j.status==="error"?"Retry":"Connect"}),E&&z!==void 0&&l.jsx("span",{className:He.provisionMessage,children:z.message}),j.status==="error"&&(z==null?void 0:z.stage)==="error"&&l.jsx("span",{className:He.errorMessage,children:z.message}),l.jsx("button",{className:He.btnOutline,onClick:()=>s(G2(j.id)),"data-testid":"env-edit-btn",children:"Edit Config"}),l.jsx("button",{className:He.btnDanger,onClick:()=>b(!0),children:"Delete"})]}),l.jsxs("div",{className:He.section,children:[l.jsxs("div",{className:He.sectionHeader,children:[l.jsx("h3",{children:"Workspaces"}),l.jsx("button",{className:He.btnPrimary,onClick:()=>s(`${Rb}?environment=${encodeURIComponent(j.id)}`),"data-testid":"workspace-create-button",children:"+ New Workspace"})]}),w.length===0&&l.jsx("p",{className:He.empty,children:"No workspaces yet. Create one to get started."}),l.jsx("div",{className:He.cardList,children:w.map(ae=>l.jsx(pU,{workspace:ae,confirmArchiveId:T,onOpen:()=>s(Qi(ae.id,j.id)),onArchive:()=>N(ae.id),onConfirmArchive:()=>Q(ae.id),onCancelArchive:()=>N(void 0)},ae.id))})]})]})}function pU({workspace:n,confirmArchiveId:s,onOpen:i,onArchive:o,onConfirmArchive:c,onCancelArchive:u}){const d=s===n.id,m=n.repoUrl&&/^https?:\/\//.test(n.repoUrl);return l.jsxs("div",{className:He.card,"data-testid":"workspace-card",children:[l.jsxs("div",{className:He.cardHeader,children:[l.jsx("strong",{className:He.cardName,children:n.name}),l.jsxs("div",{className:He.cardActions,children:[l.jsx("button",{className:He.btnSmall,onClick:i,children:"Open"}),d?l.jsxs(l.Fragment,{children:[l.jsx("button",{className:He.btnDanger,onClick:c,children:"Confirm"}),l.jsx("button",{className:He.btnSmall,onClick:u,children:"Cancel"})]}):l.jsx("button",{className:He.btnSmall,onClick:o,children:"Archive"})]})]}),n.description&&l.jsx("p",{className:He.cardDescription,children:n.description}),n.repoUrl&&l.jsx("div",{className:He.cardMeta,children:m?l.jsx("a",{href:n.repoUrl,target:"_blank",rel:"noopener noreferrer",className:He.repoLink,children:n.repoUrl}):l.jsx("span",{children:n.repoUrl})})]})}const mU={credentials:"Credentials",personas:"Personas",appearance:"Appearance",about:"About",shortcuts:"Shortcuts"};function hU(){const s=Bt().pathname.replace(/^\/settings\/?/,"").split("/")[0],i=mU[s],o=z4(i);return l.jsxs("div",{className:xr.layout,children:[l.jsx(xa,{segments:o}),l.jsx("div",{className:xr.content,children:l.jsx("div",{className:xr.tabPanel,children:l.jsx(ti,{})},s)})]})}function gU(){const{tokens:n,setToken:s,deleteToken:i,credentialProviders:o,updateCredentialProviders:c}=pt(),{showToast:u}=un();return l.jsxs(l.Fragment,{children:[l.jsx(oI,{credentialProviders:o,onUpdateCredentialProviders:c}),l.jsx(eO,{tokens:n,onSetToken:s,onDeleteToken:i,onShowToast:u})]})}function vU(){const{personas:n,deletePersona:s,appDefaultPersonaId:i,setAppDefaultPersonaId:o}=pt(),{showToast:c}=un(),u=xt();return l.jsx(bI,{personas:n,appDefaultPersonaId:i,onDeletePersona:async d=>{try{await s(d)}catch(m){throw console.error("Failed to delete persona",{personaId:d,error:m}),c("Failed to delete persona","error"),m}},onSetAppDefaultPersonaId:async d=>{try{await o(d)}catch(m){console.error("Failed to set app default persona ID",{personaId:d,error:m}),c("Failed to set app default persona","error")}},onNavigateToNew:()=>u(q2),onNavigateToPersona:d=>u(Db(d))})}const yU="_container_1ooin_1",bU="_form_1ooin_7",_U="_formActions_1ooin_75",xU="_editableSection_1ooin_82",SU="_defaultBadge_1ooin_93",TU="_typeToggle_1ooin_107",kU="_scriptEditor_1ooin_121",wU="_optional_1ooin_128",Zn={container:yU,form:bU,formActions:_U,editableSection:xU,defaultBadge:SU,typeToggle:TU,scriptEditor:kU,optional:wU},sb=[{value:"claude-code",label:"claude-code"},{value:"codex",label:"codex"},{value:"copilot",label:"copilot"},{value:"goose",label:"goose"},{value:"stub",label:"stub"},{value:"claude-code-acp",label:"claude-code-acp (experimental)"},{value:"codex-acp",label:"codex-acp (experimental)"},{value:"copilot-acp",label:"copilot-acp (experimental)"}],ab=[{value:"genaiscript",label:"genaiscript"}],NU="0";function ib(){const{personaId:n}=_a(),s=xt(),{showToast:i}=un(),{personas:o,createPersona:c,updatePersona:u,deletePersona:d,appDefaultPersonaId:m,setAppDefaultPersonaId:h}=pt(),g=n===void 0,v=g?void 0:o.find(_=>_.id===n);if(!g&&o.length>0&&!v)return l.jsx(Yn,{to:rf,replace:!0});const b=[{label:"Settings",url:Xi},{label:"Personas",url:rf},{label:g?"New Persona":(v==null?void 0:v.name)??"Persona",url:void 0}];return l.jsxs("div",{className:Zn.container,children:[l.jsx(xa,{segments:b}),l.jsx(jU,{existing:v,isNew:g,appDefaultPersonaId:m,onCreatePersona:c,onUpdatePersona:u,onDeletePersona:d,onSetAppDefaultPersonaId:h,onDone:()=>{s(rf)},showToast:i})]})}function jU({existing:n,isNew:s,appDefaultPersonaId:i,onCreatePersona:o,onUpdatePersona:c,onDeletePersona:u,onSetAppDefaultPersonaId:d,onDone:m,showToast:h}){const g=xt(),[v,b]=y.useState((n==null?void 0:n.name)??""),[_,S]=y.useState((n==null?void 0:n.description)??""),[T,N]=y.useState((n==null?void 0:n.systemPrompt)??""),[j,w]=y.useState((n==null?void 0:n.runtime)??"claude-code"),[C,A]=y.useState((n==null?void 0:n.model)??"sonnet"),[M,D]=y.useState((n==null?void 0:n.maxTurns)??0),[E,H]=y.useState((n==null?void 0:n.type)==="script"?"script":"agent"),[z,Z]=y.useState((n==null?void 0:n.script)??""),[F,Q]=y.useState((n==null?void 0:n.allowedMcpTools)??[]),[ae,pe]=y.useState(!1),[oe,X]=y.useState(null),[B,q]=y.useState(!!s);y.useEffect(()=>{if(!s&&n&&!B){q(!0),b(n.name),S(n.description),N(n.systemPrompt);const I=n.type==="script"?"script":"agent";w(I==="script"?n.runtime||"genaiscript":n.runtime),A(n.model),D(n.maxTurns),H(I),Z(n.script||""),Q(n.allowedMcpTools)}},[s,n,B]);const te=I=>{H(I),I==="script"?w("genaiscript"):j==="genaiscript"&&w("claude-code")},re=!s&&n===void 0,de=v.trim().length>0&&!re&&T.trim().length>0&&(E==="script"?z.trim().length>0:!!j&&!!C),$e=s&&de,we=!s&&i===(n==null?void 0:n.id),Se=!s&&n&&!we&&E==="agent"&&!!j&&!!C,Oe=(I,je)=>{if(!I.trim())return`${je} is required`},le=I=>{if(I.preventDefault(),!(re||!de)){if(n){c(n.id,v,_,T,j,C,M,E,z).then(()=>{h("Persona updated","success"),m()},()=>{h("Failed to save persona","error")});return}o(v,_,T,j,C,M,E,z,F).then(je=>{h("Persona created","success"),g(Db(je.id),{replace:!0})},()=>{h("Failed to save persona","error")})}},fe=()=>{n&&u(n.id).then(()=>{h("Persona deleted","success"),m()},()=>{h("Failed to delete persona","error")})},me=async(I,je,jt,Ot)=>I().then(()=>{je(),h(jt,"success")},()=>{h(Ot,"error")}),Ce=(I,je)=>{if(!n)return;const jt=I==="type"?String(je):E,Ot=I==="runtime"?String(je):I==="type"?String(je)==="script"?"genaiscript":j==="genaiscript"?"claude-code":j:j,it=I==="model"?String(je):C,Jn=I==="maxTurns"?Number(je):M,Ls=I==="systemPrompt"?String(je):T,Sn=I==="script"?String(je):z;me(()=>c(n.id,I==="name"?String(je):v,I==="description"?String(je):_,Ls,Ot,it,Jn,jt,Sn),()=>{if(I==="type"){const zn=String(je)==="script"?"script":"agent";H(zn),w(Ot)}I==="runtime"&&w(String(je)),I==="name"&&b(String(je)),I==="description"&&S(String(je)),I==="systemPrompt"&&N(String(je)),I==="model"&&A(String(je)),I==="maxTurns"&&D(Number(je)),I==="script"&&Z(String(je))},"Persona updated","Failed to update persona").catch(()=>{})},Lt=I=>{le(I)},St=()=>{n&&d(n.id).then(()=>{h("Set as app default","success")},()=>{h("Failed to set app default","error")})};return l.jsxs(l.Fragment,{children:[re?l.jsxs("div",{className:Zn.form,children:[l.jsx("h3",{children:"Edit Persona"}),l.jsx("p",{children:"Loading persona..."})]}):s?l.jsxs("form",{onSubmit:Lt,className:Zn.form,children:[l.jsx("h3",{children:"Create Persona"}),l.jsxs("div",{className:Zn.typeToggle,"data-testid":"persona-type-toggle",children:[l.jsxs("label",{children:[l.jsx("input",{type:"radio",name:"personaType",value:"agent",checked:E==="agent",onChange:()=>te("agent")}),"Agent"]}),l.jsxs("label",{children:[l.jsx("input",{type:"radio",name:"personaType",value:"script",checked:E==="script",onChange:()=>te("script")}),"Script"]})]}),l.jsxs("label",{children:["Name",l.jsx("input",{type:"text",value:v,onChange:I=>b(I.target.value),placeholder:E==="script"?"e.g. Nightly Report":"e.g. Frontend Engineer",required:!0,"data-testid":"persona-detail-name"})]}),l.jsxs("label",{children:["Description",l.jsx("input",{type:"text",value:_,onChange:I=>S(I.target.value),placeholder:"Brief description...","data-testid":"persona-detail-description"})]}),l.jsxs("label",{children:["Runtime",l.jsx("select",{value:j,onChange:I=>w(I.target.value),"data-testid":"persona-runtime-select",children:(E==="script"?ab:sb).map(I=>l.jsx("option",{value:I.value,children:I.label},I.value))})]}),E==="agent"&&l.jsxs(l.Fragment,{children:[l.jsxs("label",{children:["Model",l.jsx("input",{type:"text",value:C,onChange:I=>A(I.target.value),placeholder:"e.g. sonnet","data-testid":"persona-detail-model"})]}),l.jsxs("label",{children:["Max Turns",l.jsx("input",{type:"number",value:M,onChange:I=>D(parseInt(I.target.value,10)||0),min:0,"data-testid":"persona-detail-max-turns"})]}),l.jsxs("label",{children:["System Prompt",l.jsx("textarea",{value:T,onChange:I=>N(I.target.value),placeholder:"You are a senior frontend engineer...",rows:10,required:!0,"data-testid":"persona-detail-prompt"})]})]}),E==="script"&&l.jsxs(l.Fragment,{children:[l.jsxs("label",{children:["Model ",l.jsx("span",{className:Zn.optional,children:"(optional)"}),l.jsx("input",{type:"text",value:C,onChange:I=>A(I.target.value),placeholder:"e.g. sonnet (leave empty for script-only)","data-testid":"persona-detail-model"})]}),l.jsxs("label",{children:["System Prompt",l.jsx("textarea",{value:T,onChange:I=>N(I.target.value),placeholder:"Context for the script...",rows:4,required:!0,"data-testid":"persona-detail-prompt"})]}),l.jsxs("label",{children:["Script",l.jsx("textarea",{value:z,onChange:I=>Z(I.target.value),placeholder:`script({ model: "openai:gpt-4o" });
490
-
491
- const grackle = await host.mcpServer({
492
- id: "grackle",
493
- url: env.vars.GRACKLE_MCP_URL,
494
- });
495
-
496
- $\`Summarize the current tasks.\`;`,rows:20,className:Zn.scriptEditor,required:!0,"data-testid":"persona-script-editor"})]})]}),E==="agent"&&l.jsxs("div",{children:[l.jsx("label",{children:"Allowed MCP Tools"}),l.jsx(qy,{selectedTools:F,onChange:Q})]}),l.jsxs("div",{className:Zn.formActions,children:[l.jsx(Ds,{type:"submit",variant:"primary",size:"md",disabled:!$e,"data-testid":"persona-detail-save",children:"Create"}),l.jsx(Ds,{type:"button",variant:"outline",size:"md",onClick:m,"data-testid":"persona-detail-cancel",children:"Cancel"})]})]}):n?l.jsxs("div",{className:Zn.form,children:[l.jsx("h3",{children:"Edit Persona"}),l.jsxs("div",{className:Zn.formActions,children:[l.jsx(Ds,{type:"button",variant:"outline",size:"md",onClick:m,"data-testid":"persona-detail-cancel",children:"Back to Personas"}),Se&&l.jsx(Ds,{type:"button",variant:"ghost",size:"md",onClick:St,"data-testid":"persona-detail-set-default",children:"Set as App Default"}),we&&l.jsx("span",{className:Zn.defaultBadge,children:"App Default"}),l.jsx(Ds,{type:"button",variant:"danger",size:"md",onClick:()=>pe(!0),"data-testid":"persona-detail-delete",children:"Delete"})]}),l.jsxs("div",{className:Zn.editableSection,children:[l.jsxs("label",{children:["Name",l.jsx(Kt,{value:v,onSave:I=>{Ce("name",I)},validate:I=>Oe(I,"Name"),fieldId:"persona-name",activeFieldId:oe,onActivate:X,ariaLabel:"Persona name","data-testid":"persona-detail-name"})]}),l.jsxs("label",{children:["Description",l.jsx(Kt,{value:_,onSave:I=>{Ce("description",I)},fieldId:"persona-description",activeFieldId:oe,onActivate:X,placeholder:"Brief description...",ariaLabel:"Persona description","data-testid":"persona-detail-description"})]}),l.jsxs("label",{children:["Type",l.jsx(Ec,{value:E,onSave:I=>{Ce("type",I)},options:[{value:"agent",label:"Agent"},{value:"script",label:"Script"}],fieldId:"persona-type",activeFieldId:oe,onActivate:X,ariaLabel:"Persona type","data-testid":"persona-type-toggle"})]}),l.jsxs("label",{children:["Runtime",l.jsx(Ec,{value:j,onSave:I=>{Ce("runtime",I)},options:E==="script"?ab:sb,fieldId:"persona-runtime",activeFieldId:oe,onActivate:X,ariaLabel:"Persona runtime","data-testid":"persona-runtime"})]}),l.jsxs("label",{children:["Model",E==="script"?" (optional)":"",l.jsx(Kt,{value:C,onSave:I=>{Ce("model",I)},validate:E==="agent"?I=>Oe(I,"Model"):void 0,fieldId:"persona-model",activeFieldId:oe,onActivate:X,placeholder:E==="script"?"e.g. sonnet (leave empty for script-only)":"e.g. sonnet",ariaLabel:"Persona model","data-testid":"persona-detail-model"})]}),l.jsxs("label",{children:["Max Turns",l.jsx(Kt,{value:String(M),onSave:I=>{Ce("maxTurns",parseInt(I,10)||0)},validate:I=>/^\d+$/.test(I.trim())?void 0:"Max Turns must be a non-negative integer",fieldId:"persona-max-turns",activeFieldId:oe,onActivate:X,placeholder:NU,ariaLabel:"Persona max turns","data-testid":"persona-detail-max-turns"})]}),l.jsxs("label",{children:["System Prompt",l.jsx(op,{value:T,onSave:I=>{Ce("systemPrompt",I)},validate:I=>Oe(I,"System Prompt"),fieldId:"persona-system-prompt",activeFieldId:oe,onActivate:X,placeholder:E==="script"?"Context for the script...":"You are a senior frontend engineer...",ariaLabel:"Persona system prompt","data-testid":"persona-detail-prompt"})]}),E==="script"&&l.jsxs("label",{children:["Script",l.jsx(op,{value:z,onSave:I=>{Ce("script",I)},validate:I=>Oe(I,"Script"),fieldId:"persona-script",activeFieldId:oe,onActivate:X,placeholder:`script({ model: "openai:gpt-4o" });
497
-
498
- const grackle = await host.mcpServer({
499
- id: "grackle",
500
- url: env.vars.GRACKLE_MCP_URL,
501
- });
502
-
503
- $\`Summarize the current tasks.\`;`,ariaLabel:"Persona script","data-testid":"persona-script-editor"})]}),E==="agent"&&l.jsxs("div",{children:[l.jsx("label",{children:"Allowed MCP Tools"}),l.jsx(qy,{selectedTools:F,onChange:I=>{Q(I),me(()=>c(n.id,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,I),()=>{},"MCP tools updated","Failed to update MCP tools").catch(()=>{})}})]})]}),!Se&&!we&&l.jsx("p",{style:{fontSize:"var(--font-size-xs)",color:"var(--text-tertiary)",marginTop:"var(--space-xs)"},children:"Only agent personas with a runtime and model can be set as app default."})]}):null,l.jsx(Xa,{isOpen:ae,title:"Delete Persona?",description:`"${n==null?void 0:n.name}" will be permanently removed.`,confirmLabel:"Delete",onConfirm:fe,onCancel:()=>pe(!1)})]})}function CU(){const{themeId:n,resolvedThemeId:s,setTheme:i,preferSystem:o,setPreferSystem:c}=Ax();return l.jsx(tO,{themeId:n,resolvedThemeId:s,onSetTheme:i,preferSystem:o,onSetPreferSystem:c})}function EU(){const[n,s]=y.useState(void 0);return y.useEffect(()=>{let i=!1;return ke.getVersionStatus({}).then(o=>{i||s({currentVersion:o.currentVersion,latestVersion:o.latestVersion,updateAvailable:o.updateAvailable,isDocker:o.isDocker})},()=>{}),()=>{i=!0}},[]),n}function AU(){const{connected:n,environments:s,sessions:i}=pt(),o=EU();return l.jsxs(l.Fragment,{children:[o&&l.jsx(a6,{currentVersion:o.currentVersion,latestVersion:o.latestVersion,updateAvailable:o.updateAvailable,isDocker:o.isDocker}),l.jsx(nO,{connected:n,environments:s,sessions:i})]})}function DU(){return l.jsx(XO,{})}const ob=ni();function RU(){const n=xt();return Os({key:"?"},()=>{n(F2)}),Os({key:"n"},()=>{n(ob)}),Os({key:"N"},()=>{n(ob)}),l.jsx(l.Fragment,{})}function Gc(n){const s=O4();y.useLayoutEffect(()=>(s(n),()=>{s(void 0)}),[n,s])}function MU(){const{workspaces:n,tasks:s}=pt(),i=y.useMemo(()=>l.jsx(O3,{workspaces:n,tasks:s}),[n,s]);return Gc(i),l.jsx(ti,{})}function OU(){const{environments:n}=pt(),s=y.useMemo(()=>l.jsx(t3,{environments:n}),[n]);return Gc(s),l.jsx(ti,{})}function IU(){const n=y.useMemo(()=>l.jsx(PI,{}),[]);return Gc(n),l.jsx(ti,{})}function BU(){const{knowledge:n,workspaces:s}=pt(),i=y.useCallback(m=>{n.search(m)},[n]),o=y.useCallback(()=>{n.clearSearch()},[n]),c=y.useCallback(m=>{n.selectNode(m)},[n]),u=y.useCallback(m=>{n.loadRecent(m||void 0)},[n]),d=y.useMemo(()=>l.jsx(mM,{nodes:n.graphData.nodes,workspaces:s,loading:n.loading,searchQuery:n.searchQuery,onSearch:i,onClearSearch:o,onSelectNode:c,onWorkspaceChange:u}),[n,s,i,o,c,u]);return Gc(d),l.jsx(ti,{})}const LU="_wizard_1260s_1",UU="_container_1260s_10",zU="_stepContent_1260s_19",PU="_logoArea_1260s_28",VU="_logoImage_1260s_32",HU="_heading_1260s_41",GU="_tagline_1260s_49",$U="_subtitle_1260s_56",qU="_featureList_1260s_64",FU="_runtimeGrid_1260s_89",ZU="_runtimeCard_1260s_101",KU="_runtimeName_1260s_133",YU="_runtimeDescription_1260s_139",JU="_buttonRow_1260s_144",WU="_primaryButton_1260s_151",XU="_ghostButton_1260s_185",QU="_dots_1260s_213",e7="_dot_1260s_213",rt={wizard:LU,container:UU,stepContent:zU,logoArea:PU,logoImage:VU,heading:HU,tagline:GU,subtitle:$U,featureList:qU,runtimeGrid:FU,runtimeCard:ZU,runtimeName:KU,runtimeDescription:YU,buttonRow:JU,primaryButton:WU,ghostButton:XU,dots:QU,dot:e7};function t7({onNext:n}){return l.jsxs("div",{className:rt.stepContent,"data-testid":"setup-welcome",children:[l.jsx("div",{className:rt.logoArea,children:l.jsx("img",{src:"/grackle-logo.png",alt:"Grackle",className:rt.logoImage})}),l.jsx("h1",{className:rt.heading,children:"Welcome to Grackle"}),l.jsx("p",{className:rt.tagline,children:"Multi-agent orchestration for software teams"}),l.jsx("button",{type:"button",className:rt.primaryButton,onClick:n,"data-testid":"setup-get-started",children:"Get Started"})]})}function n7({onNext:n,onBack:s}){return l.jsxs("div",{className:rt.stepContent,"data-testid":"setup-about",children:[l.jsx("h2",{className:rt.heading,children:"What is Grackle?"}),l.jsxs("ul",{className:rt.featureList,children:[l.jsx("li",{children:"Run Claude, Copilot, and Codex agents side by side"}),l.jsx("li",{children:"Provision and control dev environments — SSH, Codespaces, or local"}),l.jsx("li",{children:"Organize work into workspaces with agent-executable tasks"}),l.jsx("li",{children:"Customize agent behavior with personas, tools, and MCP servers"}),l.jsx("li",{children:"Live-stream agent sessions with full terminal replay"})]}),l.jsxs("div",{className:rt.buttonRow,children:[l.jsx("button",{type:"button",className:rt.ghostButton,onClick:s,children:"Back"}),l.jsx("button",{type:"button",className:rt.primaryButton,onClick:n,"data-testid":"setup-about-next",children:"Next"})]})]})}const s7=[{id:"claude-code",name:"Claude Code",description:"Anthropic's agentic coding tool"},{id:"copilot",name:"Copilot Coding Agent",description:"GitHub's AI pair programmer"},{id:"codex",name:"Codex CLI",description:"OpenAI's coding agent"},{id:"goose",name:"Goose",description:"Block's open-source AI coding agent"}];function a7({currentRuntime:n,onFinish:s,onBack:i,finishDisabled:o}){const[c,u]=y.useState(n||"claude-code");return y.useEffect(()=>{n&&u(n)},[n]),l.jsxs("div",{className:rt.stepContent,"data-testid":"setup-runtime",children:[l.jsx("h2",{className:rt.heading,children:"Choose Your Runtime"}),l.jsx("p",{className:rt.subtitle,children:"Select the primary agent runtime for your workspace. You can change this later."}),l.jsx("div",{className:rt.runtimeGrid,children:s7.map(d=>l.jsxs("button",{type:"button",className:rt.runtimeCard,"data-selected":c===d.id,"aria-pressed":c===d.id,"data-testid":`runtime-card-${d.id}`,onClick:()=>u(d.id),children:[l.jsx("span",{className:rt.runtimeName,children:d.name}),l.jsx("span",{className:rt.runtimeDescription,children:d.description})]},d.id))}),l.jsxs("div",{className:rt.buttonRow,children:[l.jsx("button",{type:"button",className:rt.ghostButton,onClick:i,children:"Back"}),l.jsx("button",{type:"button",className:rt.primaryButton,onClick:()=>{s(c)},disabled:o,"data-testid":"setup-finish",children:"Finish"})]})]})}const i7=3,rb={"claude-code":"sonnet",copilot:"gpt-4o",codex:"o3",goose:""};function o7(){const{personas:n,updatePersona:s,completeOnboarding:i,onboardingCompleted:o}=pt(),{showToast:c}=un(),u=xt(),[d,m]=y.useState(0),[h,g]=y.useState(!1),v=n.find(_=>_.id==="claude-code"),b=y.useCallback(_=>{g(!0);const S=[];if(v&&_!==v.runtime){const N=rb[_]??"sonnet";S.push(s(v.id,void 0,void 0,void 0,_,N))}const T=n.find(N=>N.id===a0);if(T&&_!==T.runtime){const N=rb[_]??"sonnet";S.push(s(a0,void 0,void 0,void 0,_,N))}Promise.all(S).then(()=>i()).then(()=>{u("/",{replace:!0})},()=>{c("Failed to update runtime -- please try again","error"),g(!1)})},[v,n,s,i,u,c]);return o===!0?l.jsx(Yn,{to:"/",replace:!0}):l.jsx("div",{className:rt.wizard,"data-testid":"setup-wizard",children:l.jsxs("div",{className:rt.container,children:[l.jsx(ls,{mode:"wait",children:l.jsxs(Mt.div,{initial:{opacity:0,x:40},animate:{opacity:1,x:0},exit:{opacity:0,x:-40},transition:{duration:.2,ease:"easeInOut"},children:[d===0&&l.jsx(t7,{onNext:()=>m(1)}),d===1&&l.jsx(n7,{onNext:()=>m(2),onBack:()=>m(0)}),d===2&&l.jsx(a7,{currentRuntime:(v==null?void 0:v.runtime)??"claude-code",onFinish:b,onBack:()=>m(1),finishDisabled:!v||h})]},d)}),l.jsx("div",{className:rt.dots,children:Array.from({length:i7},(_,S)=>l.jsx("span",{className:rt.dot,"data-active":S===d},S))})]})})}const r7="_root_zndgp_1",l7="_body_zndgp_7",c7="_main_zndgp_19",u7="_sidebarWrapper_zndgp_26",d7="_overlay_zndgp_51",hr={root:r7,body:l7,main:c7,sidebarWrapper:u7,overlay:d7},f7=y.lazy(()=>jT(()=>import("./KnowledgePage-D40LOPEE.js"),__vite__mapDeps([0,1,2,3,4])).then(n=>({default:n.KnowledgePage}))),zx=typeof window<"u"&&new URLSearchParams(window.location.search).has("mock");function p7(){const{connected:n,environments:s,sessions:i,tasks:o}=pt(),{toasts:c,dismissToast:u}=un(),d=Bt(),m=M4(),h=m!==void 0,[g,v]=y.useState(!1),b=y.useCallback(()=>v(_=>!_),[]);return y.useEffect(()=>{v(!1)},[d.pathname]),y.useEffect(()=>{if(!g)return;const _=S=>{S.key==="Escape"&&v(!1)};return document.addEventListener("keydown",_),()=>{document.removeEventListener("keydown",_)}},[g]),l.jsxs(l.Fragment,{children:[l.jsx(kM,{connected:n,environments:s,sessions:i,onToggleSidebar:h?b:void 0,sidebarOpen:g}),l.jsx(DM,{}),l.jsxs("div",{className:hr.body,children:[h&&l.jsx("div",{className:hr.sidebarWrapper,"data-sidebar-open":g,children:l.jsx(LM,{content:m})}),h&&g&&l.jsx("div",{className:hr.overlay,"data-testid":"drawer-overlay",onClick:()=>v(!1)}),l.jsxs("div",{className:hr.main,children:[l.jsx(ti,{}),l.jsx(qM,{sessions:i,tasks:o,environments:s})]})]}),l.jsx(Z3,{toasts:c,onDismiss:u}),l.jsx(RU,{})]})}function m7(){const{lastSpawnedId:n,environments:s,tasks:i,connected:o,onboardingCompleted:c}=pt(),{showToast:u}=un();EB(s,u),MB(i,u);const d=xt(),m=Bt();return y.useEffect(()=>{n&&!m.pathname.includes("/tasks/")&&d(Eb(n),{replace:!0})},[n,d,m.pathname]),o&&c===!1?l.jsx(Yn,{to:"/setup",replace:!0}):l.jsx(R4,{children:l.jsxs("div",{className:hr.root,children:[zx&&l.jsx(xw,{}),l.jsx(p7,{})]})})}function Uf(){const{workspaceId:n}=_a(),{workspaces:s}=pt(),i=Bt(),o=s.find(h=>h.id===n);if(!(o!=null&&o.environmentId))return s.length===0?void 0:l.jsx(Yn,{to:"/environments",replace:!0});const c=encodeURIComponent(n),u=`/workspaces/${c}`,d=i.pathname.startsWith(u)?i.pathname.slice(u.length):"",m=`/environments/${encodeURIComponent(o.environmentId)}/workspaces/${c}${d}${i.search}${i.hash}`;return l.jsx(Yn,{to:m,replace:!0})}function h7(){return l.jsxs(r2,{children:[l.jsx(Ne,{path:"setup",element:l.jsx(o7,{})}),l.jsxs(Ne,{element:l.jsx(m7,{}),children:[l.jsx(Ne,{index:!0,element:l.jsx(t8,{})}),l.jsx(Ne,{path:"chat",element:l.jsx(u8,{})}),l.jsx(Ne,{path:"sessions/new",element:l.jsx(d8,{})}),l.jsx(Ne,{path:"sessions/:sessionId",element:l.jsx(m8,{})}),l.jsx(Ne,{element:l.jsx(BU,{}),children:l.jsx(Ne,{path:"knowledge",element:l.jsx(y.Suspense,{fallback:l.jsx(fx,{}),children:l.jsx(f7,{})})})}),l.jsxs(Ne,{element:l.jsx(MU,{}),children:[l.jsx(Ne,{path:"tasks",element:l.jsx(Q5,{})}),l.jsx(Ne,{path:"tasks/new",element:l.jsx(tb,{})}),l.jsx(Ne,{path:"tasks/:taskId",element:l.jsx(ma,{})}),l.jsx(Ne,{path:"tasks/:taskId/edit",element:l.jsx(ma,{})}),l.jsx(Ne,{path:"tasks/:taskId/stream",element:l.jsx(ma,{})}),l.jsx(Ne,{path:"tasks/:taskId/findings",element:l.jsx(ma,{})})]}),l.jsxs(Ne,{element:l.jsx(OU,{}),children:[l.jsx(Ne,{path:"workspaces",element:l.jsx(Yn,{to:"/environments",replace:!0})}),l.jsx(Ne,{path:"workspaces/new",element:l.jsx(C8,{})}),l.jsx(Ne,{path:"workspaces/:workspaceId",element:l.jsx(Uf,{})}),l.jsx(Ne,{path:"workspaces/:workspaceId/tasks/:taskId",element:l.jsx(Uf,{})}),l.jsx(Ne,{path:"workspaces/:workspaceId/tasks/:taskId/*",element:l.jsx(Uf,{})}),l.jsx(Ne,{path:"environments/:environmentId/workspaces/:workspaceId",element:l.jsx(v8,{})}),l.jsx(Ne,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/new",element:l.jsx(tb,{})}),l.jsx(Ne,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/:taskId",element:l.jsx(ma,{})}),l.jsx(Ne,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/edit",element:l.jsx(ma,{})}),l.jsx(Ne,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/stream",element:l.jsx(ma,{})}),l.jsx(Ne,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/findings",element:l.jsx(ma,{})}),l.jsxs(Ne,{path:"environments",element:l.jsx(U8,{}),children:[l.jsx(Ne,{index:!0,element:l.jsx(e8,{})}),l.jsx(Ne,{path:"new",element:l.jsx(M8,{})}),l.jsx(Ne,{path:":environmentId",element:l.jsx(fU,{})}),l.jsx(Ne,{path:":environmentId/edit",element:l.jsx(O8,{})})]})]}),l.jsx(Ne,{element:l.jsx(IU,{}),children:l.jsxs(Ne,{path:"settings",element:l.jsx(hU,{}),children:[l.jsx(Ne,{index:!0,element:l.jsx(Yn,{to:"credentials",replace:!0})}),l.jsx(Ne,{path:"environments",element:l.jsx(Yn,{to:"/environments",replace:!0})}),l.jsx(Ne,{path:"credentials",element:l.jsx(gU,{})}),l.jsx(Ne,{path:"tokens",element:l.jsx(Yn,{to:"../credentials",replace:!0})}),l.jsx(Ne,{path:"personas",element:l.jsx(vU,{})}),l.jsx(Ne,{path:"personas/new",element:l.jsx(ib,{})}),l.jsx(Ne,{path:"personas/:personaId",element:l.jsx(ib,{})}),l.jsx(Ne,{path:"appearance",element:l.jsx(CU,{})}),l.jsx(Ne,{path:"shortcuts",element:l.jsx(DU,{})}),l.jsx(Ne,{path:"about",element:l.jsx(AU,{})})]})}),l.jsx(Ne,{path:"*",element:l.jsx(Yn,{to:"/",replace:!0})})]})]})}const g7=1e4;function v7(){const{onboardingCompleted:n}=pt(),[s,i]=y.useState(!1);y.useEffect(()=>{if(n!==void 0)return;const c=setTimeout(()=>i(!0),g7);return()=>clearTimeout(c)},[n]);const o=n===void 0&&!s;return l.jsx(ls,{mode:"wait",children:o?l.jsx(Mt.div,{initial:{opacity:1},exit:{opacity:0},transition:{duration:.25},children:l.jsx(fx,{})},"splash"):l.jsx(Mt.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.25},style:{minHeight:"100vh"},children:l.jsx(R2,{basename:"/".replace(/\/$/,""),children:l.jsx(h7,{})})},"app")})}function y7(){const n=zx?aB:CB;return l.jsx(D4,{children:l.jsx(j4,{children:l.jsx(n,{children:l.jsx(v7,{})})})})}kT.createRoot(document.getElementById("root")).render(l.jsx(y.StrictMode,{children:l.jsx(y7,{})}));export{xa as B,Mb as K,pt as a,Eb as s,rs as t,xt as u};