@grackle-ai/web 0.82.2 → 0.83.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{KnowledgePage-BaXd6ySf.js → KnowledgePage-BWBPbY0I.js} +1 -1
- package/dist/assets/grpc-DU5jMhZD.js +2 -0
- package/dist/assets/index-CqI2R3WB.js +502 -0
- package/dist/index.html +2 -2
- package/package.json +2 -2
- package/dist/assets/grpc-_MkPbpJw.js +0 -2
- package/dist/assets/index-DrYWMHO8.js +0 -502
|
@@ -1,502 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/KnowledgePage-BaXd6ySf.js","assets/markdown-gcy1Jmzi.js","assets/dagview-BA5TtMAQ.js","assets/grpc-_MkPbpJw.js","assets/KnowledgePage-DMqJ4jlP.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as FS,a as y,j as l,v as KS,b as YS,t as Jl,i as JS,f as WS,M as lp,c as cp}from"./markdown-gcy1Jmzi.js";import{r as XS,d as Xv,H as Qv,P as e0,i as QS,B as eT,a as tT,C as nT,M as sT}from"./dagview-BA5TtMAQ.js";import{c as aT,a as iT,G as oT,e as rT,w as lT,t as cT,p as Wl,b as uT,C as up,f as dT,M as fT,R as nr,A as ib,D as ob,W as pT,O as mT,d as hT,S as t0}from"./grpc-_MkPbpJw.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 f of u.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&o(f)}).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 Wd={exports:{}},sr={},Xd={exports:{}},Qd={};/**
|
|
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 n0;function gT(){return n0||(n0=1,(function(n){function s(O,G){var X=O.length;O.push(G);e:for(;0<X;){var fe=X-1>>>1,he=O[fe];if(0<c(he,G))O[fe]=G,O[X]=he,X=fe;else break e}}function i(O){return O.length===0?null:O[0]}function o(O){if(O.length===0)return null;var G=O[0],X=O.pop();if(X!==G){O[0]=X;e:for(var fe=0,he=O.length,ze=he>>>1;fe<ze;){var je=2*(fe+1)-1,we=O[je],Ae=je+1,ce=O[Ae];if(0>c(we,X))Ae<he&&0>c(ce,we)?(O[fe]=ce,O[Ae]=X,fe=Ae):(O[fe]=we,O[je]=X,fe=je);else if(Ae<he&&0>c(ce,X))O[fe]=ce,O[Ae]=X,fe=Ae;else break e}}return G}function c(O,G){var X=O.sortIndex-G.sortIndex;return X!==0?X:O.id-G.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 f=Date,m=f.now();n.unstable_now=function(){return f.now()-m}}var h=[],g=[],v=1,b=null,_=3,S=!1,T=!1,j=!1,N=!1,k=typeof setTimeout=="function"?setTimeout:null,E=typeof clearTimeout=="function"?clearTimeout:null,A=typeof setImmediate<"u"?setImmediate:null;function R(O){for(var G=i(g);G!==null;){if(G.callback===null)o(g);else if(G.startTime<=O)o(g),G.sortIndex=G.expirationTime,s(h,G);else break;G=i(g)}}function C(O){if(j=!1,R(O),!T)if(i(h)!==null)T=!0,U||(U=!0,se());else{var G=i(g);G!==null&&oe(C,G.startTime-O)}}var U=!1,V=-1,I=5,F=-1;function ee(){return N?!0:!(n.unstable_now()-F<I)}function re(){if(N=!1,U){var O=n.unstable_now();F=O;var G=!0;try{e:{T=!1,j&&(j=!1,E(V),V=-1),S=!0;var X=_;try{t:{for(R(O),b=i(h);b!==null&&!(b.expirationTime>O&&ee());){var fe=b.callback;if(typeof fe=="function"){b.callback=null,_=b.priorityLevel;var he=fe(b.expirationTime<=O);if(O=n.unstable_now(),typeof he=="function"){b.callback=he,R(O),G=!0;break t}b===i(h)&&o(h),R(O)}else o(h);b=i(h)}if(b!==null)G=!0;else{var ze=i(g);ze!==null&&oe(C,ze.startTime-O),G=!1}}break e}finally{b=null,_=X,S=!1}G=void 0}}finally{G?se():U=!1}}}var se;if(typeof A=="function")se=function(){A(re)};else if(typeof MessageChannel<"u"){var ue=new MessageChannel,Z=ue.port2;ue.port1.onmessage=re,se=function(){Z.postMessage(null)}}else se=function(){k(re,0)};function oe(O,G){V=k(function(){O(n.unstable_now())},G)}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(O){O.callback=null},n.unstable_forceFrameRate=function(O){0>O||125<O?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):I=0<O?Math.floor(1e3/O):5},n.unstable_getCurrentPriorityLevel=function(){return _},n.unstable_next=function(O){switch(_){case 1:case 2:case 3:var G=3;break;default:G=_}var X=_;_=G;try{return O()}finally{_=X}},n.unstable_requestPaint=function(){N=!0},n.unstable_runWithPriority=function(O,G){switch(O){case 1:case 2:case 3:case 4:case 5:break;default:O=3}var X=_;_=O;try{return G()}finally{_=X}},n.unstable_scheduleCallback=function(O,G,X){var fe=n.unstable_now();switch(typeof X=="object"&&X!==null?(X=X.delay,X=typeof X=="number"&&0<X?fe+X:fe):X=fe,O){case 1:var he=-1;break;case 2:he=250;break;case 5:he=1073741823;break;case 4:he=1e4;break;default:he=5e3}return he=X+he,O={id:v++,callback:G,priorityLevel:O,startTime:X,expirationTime:he,sortIndex:-1},X>fe?(O.sortIndex=X,s(g,O),i(h)===null&&O===i(g)&&(j?(E(V),V=-1):j=!0,oe(C,X-fe))):(O.sortIndex=he,s(h,O),T||S||(T=!0,U||(U=!0,se()))),O},n.unstable_shouldYield=ee,n.unstable_wrapCallback=function(O){var G=_;return function(){var X=_;_=G;try{return O.apply(this,arguments)}finally{_=X}}}})(Qd)),Qd}var s0;function vT(){return s0||(s0=1,Xd.exports=gT()),Xd.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 a0;function yT(){if(a0)return sr;a0=1;var n=vT(),s=FS(),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 f(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 d=a.return;if(d===null)break;var p=d.alternate;if(p===null){if(r=d.return,r!==null){a=r;continue}break}if(d.child===p.child){for(p=d.child;p;){if(p===a)return h(d),e;if(p===r)return h(d),t;p=p.sibling}throw Error(o(188))}if(a.return!==r.return)a=d,r=p;else{for(var x=!1,w=d.child;w;){if(w===a){x=!0,a=d,r=p;break}if(w===r){x=!0,r=d,a=p;break}w=w.sibling}if(!x){for(w=p.child;w;){if(w===a){x=!0,a=p,r=d;break}if(w===r){x=!0,r=p,a=d;break}w=w.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"),j=Symbol.for("react.fragment"),N=Symbol.for("react.strict_mode"),k=Symbol.for("react.profiler"),E=Symbol.for("react.consumer"),A=Symbol.for("react.context"),R=Symbol.for("react.forward_ref"),C=Symbol.for("react.suspense"),U=Symbol.for("react.suspense_list"),V=Symbol.for("react.memo"),I=Symbol.for("react.lazy"),F=Symbol.for("react.activity"),ee=Symbol.for("react.memo_cache_sentinel"),re=Symbol.iterator;function se(e){return e===null||typeof e!="object"?null:(e=re&&e[re]||e["@@iterator"],typeof e=="function"?e:null)}var ue=Symbol.for("react.client.reference");function Z(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===ue?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case j:return"Fragment";case k:return"Profiler";case N:return"StrictMode";case C:return"Suspense";case U:return"SuspenseList";case F:return"Activity"}if(typeof e=="object")switch(e.$$typeof){case T:return"Portal";case A:return e.displayName||"Context";case E:return(e._context.displayName||"Context")+".Consumer";case R:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case V:return t=e.displayName||null,t!==null?t:Z(e.type)||"Memo";case I:t=e._payload,e=e._init;try{return Z(e(t))}catch{}}return null}var oe=Array.isArray,O=s.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,G=i.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,X={pending:!1,data:null,method:null,action:null},fe=[],he=-1;function ze(e){return{current:e}}function je(e){0>he||(e.current=fe[he],fe[he]=null,he--)}function we(e,t){he++,fe[he]=e.current,e.current=t}var Ae=ze(null),ce=ze(null),pe=ze(null),me=ze(null);function Re(e,t){switch(we(pe,t),we(ce,e),we(Ae,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?xv(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=xv(t),e=Sv(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}je(Ae),we(Ae,e)}function Lt(){je(Ae),je(ce),je(pe)}function Q(e){e.memoizedState!==null&&we(me,e);var t=Ae.current,a=Sv(t,e.type);t!==a&&(we(ce,e),we(Ae,a))}function W(e){ce.current===e&&(je(Ae),je(ce)),me.current===e&&(je(me),Xo._currentValue=X)}var Te,un;function Fe(e){if(Te===void 0)try{throw Error()}catch(a){var t=a.stack.trim().match(/\n( *(at )?)/);Te=t&&t[1]||"",un=-1<a.stack.indexOf(`
|
|
19
|
-
at`)?" (<anonymous>)":-1<a.stack.indexOf("@")?"@unknown:0:0":""}return`
|
|
20
|
-
`+Te+e+un}var Kn=!1;function Yn(e,t){if(!e||Kn)return"";Kn=!0;var a=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var r={DetermineComponentFrameRoot:function(){try{if(t){var J=function(){throw Error()};if(Object.defineProperty(J.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(J,[])}catch($){var q=$}Reflect.construct(e,[],J)}else{try{J.call()}catch($){q=$}e.call(J.prototype)}}else{try{throw Error()}catch($){q=$}(J=e())&&typeof J.catch=="function"&&J.catch(function(){})}}catch($){if($&&q&&typeof $.stack=="string")return[$.stack,q.stack]}return[null,null]}};r.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var d=Object.getOwnPropertyDescriptor(r.DetermineComponentFrameRoot,"name");d&&d.configurable&&Object.defineProperty(r.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var p=r.DetermineComponentFrameRoot(),x=p[0],w=p[1];if(x&&w){var D=x.split(`
|
|
21
|
-
`),P=w.split(`
|
|
22
|
-
`);for(d=r=0;r<D.length&&!D[r].includes("DetermineComponentFrameRoot");)r++;for(;d<P.length&&!P[d].includes("DetermineComponentFrameRoot");)d++;if(r===D.length||d===P.length)for(r=D.length-1,d=P.length-1;1<=r&&0<=d&&D[r]!==P[d];)d--;for(;1<=r&&0<=d;r--,d--)if(D[r]!==P[d]){if(r!==1||d!==1)do if(r--,d--,0>d||D[r]!==P[d]){var K=`
|
|
23
|
-
`+D[r].replace(" at new "," at ");return e.displayName&&K.includes("<anonymous>")&&(K=K.replace("<anonymous>",e.displayName)),K}while(1<=r&&0<=d);break}}}finally{Kn=!1,Error.prepareStackTrace=a}return(a=e?e.displayName||e.name:"")?Fe(a):""}function zn(e,t){switch(e.tag){case 26:case 27:case 5:return Fe(e.type);case 16:return Fe("Lazy");case 13:return e.child!==t&&t!==null?Fe("Suspense Fallback"):Fe("Suspense");case 19:return Fe("SuspenseList");case 0:case 15:return Yn(e.type,!1);case 11:return Yn(e.type.render,!1);case 1:return Yn(e.type,!0);case 31:return Fe("Activity");default:return""}}function Jn(e){try{var t="",a=null;do t+=zn(e,a),a=e,e=e.return;while(e);return t}catch(r){return`
|
|
24
|
-
Error generating stack: `+r.message+`
|
|
25
|
-
`+r.stack}}var Tn=Object.prototype.hasOwnProperty,Bs=n.unstable_scheduleCallback,dn=n.unstable_cancelCallback,Me=n.unstable_shouldYield,Rt=n.unstable_requestPaint,Kt=n.unstable_now,lo=n.unstable_getCurrentPriorityLevel,co=n.unstable_ImmediatePriority,uo=n.unstable_UserBlockingPriority,_a=n.unstable_NormalPriority,Or=n.unstable_LowPriority,fo=n.unstable_IdlePriority,Ir=n.log,Lr=n.unstable_setDisableYieldValue,Us=null,Yt=null;function Pn(e){if(typeof Ir=="function"&&Lr(e),Yt&&typeof Yt.setStrictMode=="function")try{Yt.setStrictMode(Us,e)}catch{}}var Jt=Math.clz32?Math.clz32:H,Br=Math.log,Vc=Math.LN2;function H(e){return e>>>=0,e===0?32:31-(Br(e)/Vc|0)|0}var te=256,ie=262144,le=4194304;function de(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 He(e,t,a){var r=e.pendingLanes;if(r===0)return 0;var d=0,p=e.suspendedLanes,x=e.pingedLanes;e=e.warmLanes;var w=r&134217727;return w!==0?(r=w&~p,r!==0?d=de(r):(x&=w,x!==0?d=de(x):a||(a=w&~e,a!==0&&(d=de(a))))):(w=r&~p,w!==0?d=de(w):x!==0?d=de(x):a||(a=r&~e,a!==0&&(d=de(a)))),d===0?0:t!==0&&t!==d&&(t&p)===0&&(p=d&-d,a=t&-t,p>=a||p===32&&(a&4194048)!==0)?t:d}function be(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Oe(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 Ke(){var e=le;return le<<=1,(le&62914560)===0&&(le=4194304),e}function nt(e){for(var t=[],a=0;31>a;a++)t.push(e);return t}function qe(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function zt(e,t,a,r,d,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 w=e.entanglements,D=e.expirationTimes,P=e.hiddenUpdates;for(a=x&~a;0<a;){var K=31-Jt(a),J=1<<K;w[K]=0,D[K]=-1;var q=P[K];if(q!==null)for(P[K]=null,K=0;K<q.length;K++){var $=q[K];$!==null&&($.lane&=-536870913)}a&=~J}r!==0&&Pt(e,r,0),p!==0&&d===0&&e.tag!==0&&(e.suspendedLanes|=p&~(x&~t))}function Pt(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 St(e,t){var a=e.entangledLanes|=t;for(e=e.entanglements;a;){var r=31-Jt(a),d=1<<r;d&t|e[r]&t&&(e[r]|=t),a&=~d}}function ls(e,t){var a=t&-t;return a=(a&42)!==0?1:Vn(a),(a&(e.suspendedLanes|t))!==0?0:a}function Vn(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 xa(e){return e&=-e,2<e?8<e?(e&134217727)!==0?32:268435456:8:2}function om(){var e=G.p;return e!==0?e:(e=window.event,e===void 0?32:$v(e.type))}function rm(e,t){var a=G.p;try{return G.p=e,t()}finally{G.p=a}}var zs=Math.random().toString(36).slice(2),Vt="__reactFiber$"+zs,nn="__reactProps$"+zs,si="__reactContainer$"+zs,Hc="__reactEvents$"+zs,Lx="__reactListeners$"+zs,Bx="__reactHandles$"+zs,lm="__reactResources$"+zs,po="__reactMarker$"+zs;function qc(e){delete e[Vt],delete e[nn],delete e[Hc],delete e[Lx],delete e[Bx]}function ai(e){var t=e[Vt];if(t)return t;for(var a=e.parentNode;a;){if(t=a[si]||a[Vt]){if(a=t.alternate,t.child!==null||a!==null&&a.child!==null)for(e=Ev(e);e!==null;){if(a=e[Vt])return a;e=Ev(e)}return t}e=a,a=e.parentNode}return null}function ii(e){if(e=e[Vt]||e[si]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function mo(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(o(33))}function oi(e){var t=e[lm];return t||(t=e[lm]={hoistableStyles:new Map,hoistableScripts:new Map}),t}function Bt(e){e[po]=!0}var cm=new Set,um={};function Sa(e,t){ri(e,t),ri(e+"Capture",t)}function ri(e,t){for(um[e]=t,e=0;e<t.length;e++)cm.add(t[e])}var Ux=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]*$"),dm={},fm={};function zx(e){return Tn.call(fm,e)?!0:Tn.call(dm,e)?!1:Ux.test(e)?fm[e]=!0:(dm[e]=!0,!1)}function Ur(e,t,a){if(zx(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 zr(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 cs(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 kn(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function pm(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Px(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 d=r.get,p=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return d.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 Gc(e){if(!e._valueTracker){var t=pm(e)?"checked":"value";e._valueTracker=Px(e,t,""+e[t])}}function mm(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var a=t.getValue(),r="";return e&&(r=pm(e)?e.checked?"true":"false":e.value),e=r,e!==a?(t.setValue(e),!0):!1}function Pr(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 Vx=/[\n"\\]/g;function wn(e){return e.replace(Vx,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function $c(e,t,a,r,d,p,x,w){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=""+kn(t)):e.value!==""+kn(t)&&(e.value=""+kn(t)):x!=="submit"&&x!=="reset"||e.removeAttribute("value"),t!=null?Zc(e,x,kn(t)):a!=null?Zc(e,x,kn(a)):r!=null&&e.removeAttribute("value"),d==null&&p!=null&&(e.defaultChecked=!!p),d!=null&&(e.checked=d&&typeof d!="function"&&typeof d!="symbol"),w!=null&&typeof w!="function"&&typeof w!="symbol"&&typeof w!="boolean"?e.name=""+kn(w):e.removeAttribute("name")}function hm(e,t,a,r,d,p,x,w){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)){Gc(e);return}a=a!=null?""+kn(a):"",t=t!=null?""+kn(t):a,w||t===e.value||(e.value=t),e.defaultValue=t}r=r??d,r=typeof r!="function"&&typeof r!="symbol"&&!!r,e.checked=w?e.checked:!!r,e.defaultChecked=!!r,x!=null&&typeof x!="function"&&typeof x!="symbol"&&typeof x!="boolean"&&(e.name=x),Gc(e)}function Zc(e,t,a){t==="number"&&Pr(e.ownerDocument)===e||e.defaultValue===""+a||(e.defaultValue=""+a)}function li(e,t,a,r){if(e=e.options,t){t={};for(var d=0;d<a.length;d++)t["$"+a[d]]=!0;for(a=0;a<e.length;a++)d=t.hasOwnProperty("$"+e[a].value),e[a].selected!==d&&(e[a].selected=d),d&&r&&(e[a].defaultSelected=!0)}else{for(a=""+kn(a),t=null,d=0;d<e.length;d++){if(e[d].value===a){e[d].selected=!0,r&&(e[d].defaultSelected=!0);return}t!==null||e[d].disabled||(t=e[d])}t!==null&&(t.selected=!0)}}function gm(e,t,a){if(t!=null&&(t=""+kn(t),t!==e.value&&(e.value=t),a==null)){e.defaultValue!==t&&(e.defaultValue=t);return}e.defaultValue=a!=null?""+kn(a):""}function vm(e,t,a,r){if(t==null){if(r!=null){if(a!=null)throw Error(o(92));if(oe(r)){if(1<r.length)throw Error(o(93));r=r[0]}a=r}a==null&&(a=""),t=a}a=kn(t),e.defaultValue=a,r=e.textContent,r===a&&r!==""&&r!==null&&(e.value=r),Gc(e)}function ci(e,t){if(t){var a=e.firstChild;if(a&&a===e.lastChild&&a.nodeType===3){a.nodeValue=t;return}}e.textContent=t}var Hx=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 ym(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||Hx.has(t)?t==="float"?e.cssFloat=a:e[t]=(""+a).trim():e[t]=a+"px"}function bm(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 d in t)r=t[d],t.hasOwnProperty(d)&&a[d]!==r&&ym(e,d,r)}else for(var p in t)t.hasOwnProperty(p)&&ym(e,p,t[p])}function Fc(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 qx=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"]]),Gx=/^[\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 Vr(e){return Gx.test(""+e)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":e}function us(){}var Kc=null;function Yc(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var ui=null,di=null;function _m(e){var t=ii(e);if(t&&(e=t.stateNode)){var a=e[nn]||null;e:switch(e=t.stateNode,t.type){case"input":if($c(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="'+wn(""+t)+'"][type="radio"]'),t=0;t<a.length;t++){var r=a[t];if(r!==e&&r.form===e.form){var d=r[nn]||null;if(!d)throw Error(o(90));$c(r,d.value,d.defaultValue,d.defaultValue,d.checked,d.defaultChecked,d.type,d.name)}}for(t=0;t<a.length;t++)r=a[t],r.form===e.form&&mm(r)}break e;case"textarea":gm(e,a.value,a.defaultValue);break e;case"select":t=a.value,t!=null&&li(e,!!a.multiple,t,!1)}}}var Jc=!1;function xm(e,t,a){if(Jc)return e(t,a);Jc=!0;try{var r=e(t);return r}finally{if(Jc=!1,(ui!==null||di!==null)&&(Cl(),ui&&(t=ui,e=di,di=ui=null,_m(t),e)))for(t=0;t<e.length;t++)_m(e[t])}}function ho(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 ds=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Wc=!1;if(ds)try{var go={};Object.defineProperty(go,"passive",{get:function(){Wc=!0}}),window.addEventListener("test",go,go),window.removeEventListener("test",go,go)}catch{Wc=!1}var Ps=null,Xc=null,Hr=null;function Sm(){if(Hr)return Hr;var e,t=Xc,a=t.length,r,d="value"in Ps?Ps.value:Ps.textContent,p=d.length;for(e=0;e<a&&t[e]===d[e];e++);var x=a-e;for(r=1;r<=x&&t[a-r]===d[p-r];r++);return Hr=d.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 Gr(){return!0}function Tm(){return!1}function sn(e){function t(a,r,d,p,x){this._reactName=a,this._targetInst=d,this.type=r,this.nativeEvent=p,this.target=x,this.currentTarget=null;for(var w in e)e.hasOwnProperty(w)&&(a=e[w],this[w]=a?a(p):p[w]);return this.isDefaultPrevented=(p.defaultPrevented!=null?p.defaultPrevented:p.returnValue===!1)?Gr:Tm,this.isPropagationStopped=Tm,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=Gr)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():typeof a.cancelBubble!="unknown"&&(a.cancelBubble=!0),this.isPropagationStopped=Gr)},persist:function(){},isPersistent:Gr}),t}var Ta={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},$r=sn(Ta),vo=b({},Ta,{view:0,detail:0}),$x=sn(vo),Qc,eu,yo,Zr=b({},vo,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:nu,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!==yo&&(yo&&e.type==="mousemove"?(Qc=e.screenX-yo.screenX,eu=e.screenY-yo.screenY):eu=Qc=0,yo=e),Qc)},movementY:function(e){return"movementY"in e?e.movementY:eu}}),km=sn(Zr),Zx=b({},Zr,{dataTransfer:0}),Fx=sn(Zx),Kx=b({},vo,{relatedTarget:0}),tu=sn(Kx),Yx=b({},Ta,{animationName:0,elapsedTime:0,pseudoElement:0}),Jx=sn(Yx),Wx=b({},Ta,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),Xx=sn(Wx),Qx=b({},Ta,{data:0}),wm=sn(Qx),e1={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},t1={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"},n1={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function s1(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=n1[e])?!!t[e]:!1}function nu(){return s1}var a1=b({},vo,{key:function(e){if(e.key){var t=e1[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"?t1[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:nu,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}}),i1=sn(a1),o1=b({},Zr,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Nm=sn(o1),r1=b({},vo,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:nu}),l1=sn(r1),c1=b({},Ta,{propertyName:0,elapsedTime:0,pseudoElement:0}),u1=sn(c1),d1=b({},Zr,{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}),f1=sn(d1),p1=b({},Ta,{newState:0,oldState:0}),m1=sn(p1),h1=[9,13,27,32],su=ds&&"CompositionEvent"in window,bo=null;ds&&"documentMode"in document&&(bo=document.documentMode);var g1=ds&&"TextEvent"in window&&!bo,jm=ds&&(!su||bo&&8<bo&&11>=bo),Cm=" ",Em=!1;function Am(e,t){switch(e){case"keyup":return h1.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Dm(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var fi=!1;function v1(e,t){switch(e){case"compositionend":return Dm(t);case"keypress":return t.which!==32?null:(Em=!0,Cm);case"textInput":return e=t.data,e===Cm&&Em?null:e;default:return null}}function y1(e,t){if(fi)return e==="compositionend"||!su&&Am(e,t)?(e=Sm(),Hr=Xc=Ps=null,fi=!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 jm&&t.locale!=="ko"?null:t.data;default:return null}}var b1={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 Rm(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t==="input"?!!b1[e.type]:t==="textarea"}function Mm(e,t,a,r){ui?di?di.push(r):di=[r]:ui=r,t=Il(t,"onChange"),0<t.length&&(a=new $r("onChange","change",null,a,r),e.push({event:a,listeners:t}))}var _o=null,xo=null;function _1(e){hv(e,0)}function Fr(e){var t=mo(e);if(mm(t))return e}function Om(e,t){if(e==="change")return t}var Im=!1;if(ds){var au;if(ds){var iu="oninput"in document;if(!iu){var Lm=document.createElement("div");Lm.setAttribute("oninput","return;"),iu=typeof Lm.oninput=="function"}au=iu}else au=!1;Im=au&&(!document.documentMode||9<document.documentMode)}function Bm(){_o&&(_o.detachEvent("onpropertychange",Um),xo=_o=null)}function Um(e){if(e.propertyName==="value"&&Fr(xo)){var t=[];Mm(t,xo,e,Yc(e)),xm(_1,t)}}function x1(e,t,a){e==="focusin"?(Bm(),_o=t,xo=a,_o.attachEvent("onpropertychange",Um)):e==="focusout"&&Bm()}function S1(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return Fr(xo)}function T1(e,t){if(e==="click")return Fr(t)}function k1(e,t){if(e==="input"||e==="change")return Fr(t)}function w1(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var fn=typeof Object.is=="function"?Object.is:w1;function So(e,t){if(fn(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 d=a[r];if(!Tn.call(t,d)||!fn(e[d],t[d]))return!1}return!0}function zm(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Pm(e,t){var a=zm(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=zm(a)}}function Vm(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Vm(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Hm(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Pr(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=Pr(e.document)}return t}function ou(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 N1=ds&&"documentMode"in document&&11>=document.documentMode,pi=null,ru=null,To=null,lu=!1;function qm(e,t,a){var r=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;lu||pi==null||pi!==Pr(r)||(r=pi,"selectionStart"in r&&ou(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}),To&&So(To,r)||(To=r,r=Il(ru,"onSelect"),0<r.length&&(t=new $r("onSelect","select",null,t,a),e.push({event:t,listeners:r}),t.target=pi)))}function ka(e,t){var a={};return a[e.toLowerCase()]=t.toLowerCase(),a["Webkit"+e]="webkit"+t,a["Moz"+e]="moz"+t,a}var mi={animationend:ka("Animation","AnimationEnd"),animationiteration:ka("Animation","AnimationIteration"),animationstart:ka("Animation","AnimationStart"),transitionrun:ka("Transition","TransitionRun"),transitionstart:ka("Transition","TransitionStart"),transitioncancel:ka("Transition","TransitionCancel"),transitionend:ka("Transition","TransitionEnd")},cu={},Gm={};ds&&(Gm=document.createElement("div").style,"AnimationEvent"in window||(delete mi.animationend.animation,delete mi.animationiteration.animation,delete mi.animationstart.animation),"TransitionEvent"in window||delete mi.transitionend.transition);function wa(e){if(cu[e])return cu[e];if(!mi[e])return e;var t=mi[e],a;for(a in t)if(t.hasOwnProperty(a)&&a in Gm)return cu[e]=t[a];return e}var $m=wa("animationend"),Zm=wa("animationiteration"),Fm=wa("animationstart"),j1=wa("transitionrun"),C1=wa("transitionstart"),E1=wa("transitioncancel"),Km=wa("transitionend"),Ym=new Map,uu="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(" ");uu.push("scrollEnd");function Hn(e,t){Ym.set(e,t),Sa(t,[e])}var Kr=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)},Nn=[],hi=0,du=0;function Yr(){for(var e=hi,t=du=hi=0;t<e;){var a=Nn[t];Nn[t++]=null;var r=Nn[t];Nn[t++]=null;var d=Nn[t];Nn[t++]=null;var p=Nn[t];if(Nn[t++]=null,r!==null&&d!==null){var x=r.pending;x===null?d.next=d:(d.next=x.next,x.next=d),r.pending=d}p!==0&&Jm(a,d,p)}}function Jr(e,t,a,r){Nn[hi++]=e,Nn[hi++]=t,Nn[hi++]=a,Nn[hi++]=r,du|=r,e.lanes|=r,e=e.alternate,e!==null&&(e.lanes|=r)}function fu(e,t,a,r){return Jr(e,t,a,r),Wr(e)}function Na(e,t){return Jr(e,null,null,t),Wr(e)}function Jm(e,t,a){e.lanes|=a;var r=e.alternate;r!==null&&(r.lanes|=a);for(var d=!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||(d=!0)),e=p,p=p.return;return e.tag===3?(p=e.stateNode,d&&t!==null&&(d=31-Jt(a),e=p.hiddenUpdates,r=e[d],r===null?e[d]=[t]:r.push(t),t.lane=a|536870912),p):null}function Wr(e){if(50<$o)throw $o=0,xd=null,Error(o(185));for(var t=e.return;t!==null;)e=t,t=e.return;return e.tag===3?e.stateNode:null}var gi={};function A1(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 pn(e,t,a,r){return new A1(e,t,a,r)}function pu(e){return e=e.prototype,!(!e||!e.isReactComponent)}function fs(e,t){var a=e.alternate;return a===null?(a=pn(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 Wm(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 Xr(e,t,a,r,d,p){var x=0;if(r=e,typeof e=="function")pu(e)&&(x=1);else if(typeof e=="string")x=IS(e,a,Ae.current)?26:e==="html"||e==="head"||e==="body"?27:5;else e:switch(e){case F:return e=pn(31,a,t,d),e.elementType=F,e.lanes=p,e;case j:return ja(a.children,d,p,t);case N:x=8,d|=24;break;case k:return e=pn(12,a,t,d|2),e.elementType=k,e.lanes=p,e;case C:return e=pn(13,a,t,d),e.elementType=C,e.lanes=p,e;case U:return e=pn(19,a,t,d),e.elementType=U,e.lanes=p,e;default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case A:x=10;break e;case E:x=9;break e;case R:x=11;break e;case V:x=14;break e;case I:x=16,r=null;break e}x=29,a=Error(o(130,e===null?"null":typeof e,"")),r=null}return t=pn(x,a,t,d),t.elementType=e,t.type=r,t.lanes=p,t}function ja(e,t,a,r){return e=pn(7,e,r,t),e.lanes=a,e}function mu(e,t,a){return e=pn(6,e,null,t),e.lanes=a,e}function Xm(e){var t=pn(18,null,null,0);return t.stateNode=e,t}function hu(e,t,a){return t=pn(4,e.children!==null?e.children:[],e.key,t),t.lanes=a,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var Qm=new WeakMap;function jn(e,t){if(typeof e=="object"&&e!==null){var a=Qm.get(e);return a!==void 0?a:(t={value:e,source:t,stack:Jn(t)},Qm.set(e,t),t)}return{value:e,source:t,stack:Jn(t)}}var vi=[],yi=0,Qr=null,ko=0,Cn=[],En=0,Vs=null,Wn=1,Xn="";function ps(e,t){vi[yi++]=ko,vi[yi++]=Qr,Qr=e,ko=t}function eh(e,t,a){Cn[En++]=Wn,Cn[En++]=Xn,Cn[En++]=Vs,Vs=e;var r=Wn;e=Xn;var d=32-Jt(r)-1;r&=~(1<<d),a+=1;var p=32-Jt(t)+d;if(30<p){var x=d-d%5;p=(r&(1<<x)-1).toString(32),r>>=x,d-=x,Wn=1<<32-Jt(t)+d|a<<d|r,Xn=p+e}else Wn=1<<p|a<<d|r,Xn=e}function gu(e){e.return!==null&&(ps(e,1),eh(e,1,0))}function vu(e){for(;e===Qr;)Qr=vi[--yi],vi[yi]=null,ko=vi[--yi],vi[yi]=null;for(;e===Vs;)Vs=Cn[--En],Cn[En]=null,Xn=Cn[--En],Cn[En]=null,Wn=Cn[--En],Cn[En]=null}function th(e,t){Cn[En++]=Wn,Cn[En++]=Xn,Cn[En++]=Vs,Wn=t.id,Xn=t.overflow,Vs=e}var Ht=null,lt=null,Ge=!1,Hs=null,An=!1,yu=Error(o(519));function qs(e){var t=Error(o(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw wo(jn(t,e)),yu}function nh(e){var t=e.stateNode,a=e.type,r=e.memoizedProps;switch(t[Vt]=e,t[nn]=r,a){case"dialog":Ue("cancel",t),Ue("close",t);break;case"iframe":case"object":case"embed":Ue("load",t);break;case"video":case"audio":for(a=0;a<Fo.length;a++)Ue(Fo[a],t);break;case"source":Ue("error",t);break;case"img":case"image":case"link":Ue("error",t),Ue("load",t);break;case"details":Ue("toggle",t);break;case"input":Ue("invalid",t),hm(t,r.value,r.defaultValue,r.checked,r.defaultChecked,r.type,r.name,!0);break;case"select":Ue("invalid",t);break;case"textarea":Ue("invalid",t),vm(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||bv(t.textContent,a)?(r.popover!=null&&(Ue("beforetoggle",t),Ue("toggle",t)),r.onScroll!=null&&Ue("scroll",t),r.onScrollEnd!=null&&Ue("scrollend",t),r.onClick!=null&&(t.onclick=us),t=!0):t=!1,t||qs(e,!0)}function sh(e){for(Ht=e.return;Ht;)switch(Ht.tag){case 5:case 31:case 13:An=!1;return;case 27:case 3:An=!0;return;default:Ht=Ht.return}}function bi(e){if(e!==Ht)return!1;if(!Ge)return sh(e),Ge=!0,!1;var t=e.tag,a;if((a=t!==3&&t!==27)&&((a=t===5)&&(a=e.type,a=!(a!=="form"&&a!=="button")||Ld(e.type,e.memoizedProps)),a=!a),a&<&&qs(e),sh(e),t===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(o(317));lt=Cv(e)}else if(t===31){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(o(317));lt=Cv(e)}else t===27?(t=lt,sa(e.type)?(e=Vd,Vd=null,lt=e):lt=t):lt=Ht?Rn(e.stateNode.nextSibling):null;return!0}function Ca(){lt=Ht=null,Ge=!1}function bu(){var e=Hs;return e!==null&&(ln===null?ln=e:ln.push.apply(ln,e),Hs=null),e}function wo(e){Hs===null?Hs=[e]:Hs.push(e)}var _u=ze(null),Ea=null,ms=null;function Gs(e,t,a){we(_u,t._currentValue),t._currentValue=a}function hs(e){e._currentValue=_u.current,je(_u)}function xu(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 Su(e,t,a,r){var d=e.child;for(d!==null&&(d.return=e);d!==null;){var p=d.dependencies;if(p!==null){var x=d.child;p=p.firstContext;e:for(;p!==null;){var w=p;p=d;for(var D=0;D<t.length;D++)if(w.context===t[D]){p.lanes|=a,w=p.alternate,w!==null&&(w.lanes|=a),xu(p.return,a,e),r||(x=null);break e}p=w.next}}else if(d.tag===18){if(x=d.return,x===null)throw Error(o(341));x.lanes|=a,p=x.alternate,p!==null&&(p.lanes|=a),xu(x,a,e),x=null}else x=d.child;if(x!==null)x.return=d;else for(x=d;x!==null;){if(x===e){x=null;break}if(d=x.sibling,d!==null){d.return=x.return,x=d;break}x=x.return}d=x}}function _i(e,t,a,r){e=null;for(var d=t,p=!1;d!==null;){if(!p){if((d.flags&524288)!==0)p=!0;else if((d.flags&262144)!==0)break}if(d.tag===10){var x=d.alternate;if(x===null)throw Error(o(387));if(x=x.memoizedProps,x!==null){var w=d.type;fn(d.pendingProps.value,x.value)||(e!==null?e.push(w):e=[w])}}else if(d===me.current){if(x=d.alternate,x===null)throw Error(o(387));x.memoizedState.memoizedState!==d.memoizedState.memoizedState&&(e!==null?e.push(Xo):e=[Xo])}d=d.return}e!==null&&Su(t,e,a,r),t.flags|=262144}function el(e){for(e=e.firstContext;e!==null;){if(!fn(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function Aa(e){Ea=e,ms=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function qt(e){return ah(Ea,e)}function tl(e,t){return Ea===null&&Aa(e),ah(e,t)}function ah(e,t){var a=t._currentValue;if(t={context:t,memoizedValue:a,next:null},ms===null){if(e===null)throw Error(o(308));ms=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else ms=ms.next=t;return a}var D1=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()})}},R1=n.unstable_scheduleCallback,M1=n.unstable_NormalPriority,Nt={$$typeof:A,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Tu(){return{controller:new D1,data:new Map,refCount:0}}function No(e){e.refCount--,e.refCount===0&&R1(M1,function(){e.controller.abort()})}var jo=null,ku=0,xi=0,Si=null;function O1(e,t){if(jo===null){var a=jo=[];ku=0,xi=jd(),Si={status:"pending",value:void 0,then:function(r){a.push(r)}}}return ku++,t.then(ih,ih),t}function ih(){if(--ku===0&&jo!==null){Si!==null&&(Si.status="fulfilled");var e=jo;jo=null,xi=0,Si=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function I1(e,t){var a=[],r={status:"pending",value:null,reason:null,then:function(d){a.push(d)}};return e.then(function(){r.status="fulfilled",r.value=t;for(var d=0;d<a.length;d++)(0,a[d])(t)},function(d){for(r.status="rejected",r.reason=d,d=0;d<a.length;d++)(0,a[d])(void 0)}),r}var oh=O.S;O.S=function(e,t){qg=Kt(),typeof t=="object"&&t!==null&&typeof t.then=="function"&&O1(e,t),oh!==null&&oh(e,t)};var Da=ze(null);function wu(){var e=Da.current;return e!==null?e:ot.pooledCache}function nl(e,t){t===null?we(Da,Da.current):we(Da,t.pool)}function rh(){var e=wu();return e===null?null:{parent:Nt._currentValue,pool:e}}var Ti=Error(o(460)),Nu=Error(o(474)),sl=Error(o(542)),al={then:function(){}};function lh(e){return e=e.status,e==="fulfilled"||e==="rejected"}function ch(e,t,a){switch(a=e[a],a===void 0?e.push(t):a!==t&&(t.then(us,us),t=a),t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,dh(e),e;default:if(typeof t.status=="string")t.then(us,us);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 d=t;d.status="fulfilled",d.value=r}},function(r){if(t.status==="pending"){var d=t;d.status="rejected",d.reason=r}})}switch(t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,dh(e),e}throw Ma=t,Ti}}function Ra(e){try{var t=e._init;return t(e._payload)}catch(a){throw a!==null&&typeof a=="object"&&typeof a.then=="function"?(Ma=a,Ti):a}}var Ma=null;function uh(){if(Ma===null)throw Error(o(459));var e=Ma;return Ma=null,e}function dh(e){if(e===Ti||e===sl)throw Error(o(483))}var ki=null,Co=0;function il(e){var t=Co;return Co+=1,ki===null&&(ki=[]),ch(ki,e,t)}function Eo(e,t){t=t.props.ref,e.ref=t!==void 0?t:null}function ol(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 fh(e){function t(L,M){if(e){var z=L.deletions;z===null?(L.deletions=[M],L.flags|=16):z.push(M)}}function a(L,M){if(!e)return null;for(;M!==null;)t(L,M),M=M.sibling;return null}function r(L){for(var M=new Map;L!==null;)L.key!==null?M.set(L.key,L):M.set(L.index,L),L=L.sibling;return M}function d(L,M){return L=fs(L,M),L.index=0,L.sibling=null,L}function p(L,M,z){return L.index=z,e?(z=L.alternate,z!==null?(z=z.index,z<M?(L.flags|=67108866,M):z):(L.flags|=67108866,M)):(L.flags|=1048576,M)}function x(L){return e&&L.alternate===null&&(L.flags|=67108866),L}function w(L,M,z,Y){return M===null||M.tag!==6?(M=mu(z,L.mode,Y),M.return=L,M):(M=d(M,z),M.return=L,M)}function D(L,M,z,Y){var _e=z.type;return _e===j?K(L,M,z.props.children,Y,z.key):M!==null&&(M.elementType===_e||typeof _e=="object"&&_e!==null&&_e.$$typeof===I&&Ra(_e)===M.type)?(M=d(M,z.props),Eo(M,z),M.return=L,M):(M=Xr(z.type,z.key,z.props,null,L.mode,Y),Eo(M,z),M.return=L,M)}function P(L,M,z,Y){return M===null||M.tag!==4||M.stateNode.containerInfo!==z.containerInfo||M.stateNode.implementation!==z.implementation?(M=hu(z,L.mode,Y),M.return=L,M):(M=d(M,z.children||[]),M.return=L,M)}function K(L,M,z,Y,_e){return M===null||M.tag!==7?(M=ja(z,L.mode,Y,_e),M.return=L,M):(M=d(M,z),M.return=L,M)}function J(L,M,z){if(typeof M=="string"&&M!==""||typeof M=="number"||typeof M=="bigint")return M=mu(""+M,L.mode,z),M.return=L,M;if(typeof M=="object"&&M!==null){switch(M.$$typeof){case S:return z=Xr(M.type,M.key,M.props,null,L.mode,z),Eo(z,M),z.return=L,z;case T:return M=hu(M,L.mode,z),M.return=L,M;case I:return M=Ra(M),J(L,M,z)}if(oe(M)||se(M))return M=ja(M,L.mode,z,null),M.return=L,M;if(typeof M.then=="function")return J(L,il(M),z);if(M.$$typeof===A)return J(L,tl(L,M),z);ol(L,M)}return null}function q(L,M,z,Y){var _e=M!==null?M.key:null;if(typeof z=="string"&&z!==""||typeof z=="number"||typeof z=="bigint")return _e!==null?null:w(L,M,""+z,Y);if(typeof z=="object"&&z!==null){switch(z.$$typeof){case S:return z.key===_e?D(L,M,z,Y):null;case T:return z.key===_e?P(L,M,z,Y):null;case I:return z=Ra(z),q(L,M,z,Y)}if(oe(z)||se(z))return _e!==null?null:K(L,M,z,Y,null);if(typeof z.then=="function")return q(L,M,il(z),Y);if(z.$$typeof===A)return q(L,M,tl(L,z),Y);ol(L,z)}return null}function $(L,M,z,Y,_e){if(typeof Y=="string"&&Y!==""||typeof Y=="number"||typeof Y=="bigint")return L=L.get(z)||null,w(M,L,""+Y,_e);if(typeof Y=="object"&&Y!==null){switch(Y.$$typeof){case S:return L=L.get(Y.key===null?z:Y.key)||null,D(M,L,Y,_e);case T:return L=L.get(Y.key===null?z:Y.key)||null,P(M,L,Y,_e);case I:return Y=Ra(Y),$(L,M,z,Y,_e)}if(oe(Y)||se(Y))return L=L.get(z)||null,K(M,L,Y,_e,null);if(typeof Y.then=="function")return $(L,M,z,il(Y),_e);if(Y.$$typeof===A)return $(L,M,z,tl(M,Y),_e);ol(M,Y)}return null}function ve(L,M,z,Y){for(var _e=null,Ye=null,ye=M,Ie=M=0,Ve=null;ye!==null&&Ie<z.length;Ie++){ye.index>Ie?(Ve=ye,ye=null):Ve=ye.sibling;var Je=q(L,ye,z[Ie],Y);if(Je===null){ye===null&&(ye=Ve);break}e&&ye&&Je.alternate===null&&t(L,ye),M=p(Je,M,Ie),Ye===null?_e=Je:Ye.sibling=Je,Ye=Je,ye=Ve}if(Ie===z.length)return a(L,ye),Ge&&ps(L,Ie),_e;if(ye===null){for(;Ie<z.length;Ie++)ye=J(L,z[Ie],Y),ye!==null&&(M=p(ye,M,Ie),Ye===null?_e=ye:Ye.sibling=ye,Ye=ye);return Ge&&ps(L,Ie),_e}for(ye=r(ye);Ie<z.length;Ie++)Ve=$(ye,L,Ie,z[Ie],Y),Ve!==null&&(e&&Ve.alternate!==null&&ye.delete(Ve.key===null?Ie:Ve.key),M=p(Ve,M,Ie),Ye===null?_e=Ve:Ye.sibling=Ve,Ye=Ve);return e&&ye.forEach(function(la){return t(L,la)}),Ge&&ps(L,Ie),_e}function Se(L,M,z,Y){if(z==null)throw Error(o(151));for(var _e=null,Ye=null,ye=M,Ie=M=0,Ve=null,Je=z.next();ye!==null&&!Je.done;Ie++,Je=z.next()){ye.index>Ie?(Ve=ye,ye=null):Ve=ye.sibling;var la=q(L,ye,Je.value,Y);if(la===null){ye===null&&(ye=Ve);break}e&&ye&&la.alternate===null&&t(L,ye),M=p(la,M,Ie),Ye===null?_e=la:Ye.sibling=la,Ye=la,ye=Ve}if(Je.done)return a(L,ye),Ge&&ps(L,Ie),_e;if(ye===null){for(;!Je.done;Ie++,Je=z.next())Je=J(L,Je.value,Y),Je!==null&&(M=p(Je,M,Ie),Ye===null?_e=Je:Ye.sibling=Je,Ye=Je);return Ge&&ps(L,Ie),_e}for(ye=r(ye);!Je.done;Ie++,Je=z.next())Je=$(ye,L,Ie,Je.value,Y),Je!==null&&(e&&Je.alternate!==null&&ye.delete(Je.key===null?Ie:Je.key),M=p(Je,M,Ie),Ye===null?_e=Je:Ye.sibling=Je,Ye=Je);return e&&ye.forEach(function(ZS){return t(L,ZS)}),Ge&&ps(L,Ie),_e}function it(L,M,z,Y){if(typeof z=="object"&&z!==null&&z.type===j&&z.key===null&&(z=z.props.children),typeof z=="object"&&z!==null){switch(z.$$typeof){case S:e:{for(var _e=z.key;M!==null;){if(M.key===_e){if(_e=z.type,_e===j){if(M.tag===7){a(L,M.sibling),Y=d(M,z.props.children),Y.return=L,L=Y;break e}}else if(M.elementType===_e||typeof _e=="object"&&_e!==null&&_e.$$typeof===I&&Ra(_e)===M.type){a(L,M.sibling),Y=d(M,z.props),Eo(Y,z),Y.return=L,L=Y;break e}a(L,M);break}else t(L,M);M=M.sibling}z.type===j?(Y=ja(z.props.children,L.mode,Y,z.key),Y.return=L,L=Y):(Y=Xr(z.type,z.key,z.props,null,L.mode,Y),Eo(Y,z),Y.return=L,L=Y)}return x(L);case T:e:{for(_e=z.key;M!==null;){if(M.key===_e)if(M.tag===4&&M.stateNode.containerInfo===z.containerInfo&&M.stateNode.implementation===z.implementation){a(L,M.sibling),Y=d(M,z.children||[]),Y.return=L,L=Y;break e}else{a(L,M);break}else t(L,M);M=M.sibling}Y=hu(z,L.mode,Y),Y.return=L,L=Y}return x(L);case I:return z=Ra(z),it(L,M,z,Y)}if(oe(z))return ve(L,M,z,Y);if(se(z)){if(_e=se(z),typeof _e!="function")throw Error(o(150));return z=_e.call(z),Se(L,M,z,Y)}if(typeof z.then=="function")return it(L,M,il(z),Y);if(z.$$typeof===A)return it(L,M,tl(L,z),Y);ol(L,z)}return typeof z=="string"&&z!==""||typeof z=="number"||typeof z=="bigint"?(z=""+z,M!==null&&M.tag===6?(a(L,M.sibling),Y=d(M,z),Y.return=L,L=Y):(a(L,M),Y=mu(z,L.mode,Y),Y.return=L,L=Y),x(L)):a(L,M)}return function(L,M,z,Y){try{Co=0;var _e=it(L,M,z,Y);return ki=null,_e}catch(ye){if(ye===Ti||ye===sl)throw ye;var Ye=pn(29,ye,null,L.mode);return Ye.lanes=Y,Ye.return=L,Ye}finally{}}}var Oa=fh(!0),ph=fh(!1),$s=!1;function ju(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Cu(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 Fs(e,t,a){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,(Xe&2)!==0){var d=r.pending;return d===null?t.next=t:(t.next=d.next,d.next=t),r.pending=t,t=Wr(e),Jm(e,null,a),t}return Jr(e,r,t,a),Wr(e)}function Ao(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,St(e,a)}}function Eu(e,t){var a=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,a===r)){var d=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?d=p=x:p=p.next=x,a=a.next}while(a!==null);p===null?d=p=t:p=p.next=t}else d=p=t;a={baseState:r.baseState,firstBaseUpdate:d,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 Au=!1;function Do(){if(Au){var e=Si;if(e!==null)throw e}}function Ro(e,t,a,r){Au=!1;var d=e.updateQueue;$s=!1;var p=d.firstBaseUpdate,x=d.lastBaseUpdate,w=d.shared.pending;if(w!==null){d.shared.pending=null;var D=w,P=D.next;D.next=null,x===null?p=P:x.next=P,x=D;var K=e.alternate;K!==null&&(K=K.updateQueue,w=K.lastBaseUpdate,w!==x&&(w===null?K.firstBaseUpdate=P:w.next=P,K.lastBaseUpdate=D))}if(p!==null){var J=d.baseState;x=0,K=P=D=null,w=p;do{var q=w.lane&-536870913,$=q!==w.lane;if($?(Pe&q)===q:(r&q)===q){q!==0&&q===xi&&(Au=!0),K!==null&&(K=K.next={lane:0,tag:w.tag,payload:w.payload,callback:null,next:null});e:{var ve=e,Se=w;q=t;var it=a;switch(Se.tag){case 1:if(ve=Se.payload,typeof ve=="function"){J=ve.call(it,J,q);break e}J=ve;break e;case 3:ve.flags=ve.flags&-65537|128;case 0:if(ve=Se.payload,q=typeof ve=="function"?ve.call(it,J,q):ve,q==null)break e;J=b({},J,q);break e;case 2:$s=!0}}q=w.callback,q!==null&&(e.flags|=64,$&&(e.flags|=8192),$=d.callbacks,$===null?d.callbacks=[q]:$.push(q))}else $={lane:q,tag:w.tag,payload:w.payload,callback:w.callback,next:null},K===null?(P=K=$,D=J):K=K.next=$,x|=q;if(w=w.next,w===null){if(w=d.shared.pending,w===null)break;$=w,w=$.next,$.next=null,d.lastBaseUpdate=$,d.shared.pending=null}}while(!0);K===null&&(D=J),d.baseState=D,d.firstBaseUpdate=P,d.lastBaseUpdate=K,p===null&&(d.shared.lanes=0),Xs|=x,e.lanes=x,e.memoizedState=J}}function mh(e,t){if(typeof e!="function")throw Error(o(191,e));e.call(t)}function hh(e,t){var a=e.callbacks;if(a!==null)for(e.callbacks=null,e=0;e<a.length;e++)mh(a[e],t)}var wi=ze(null),rl=ze(0);function gh(e,t){e=ks,we(rl,e),we(wi,t),ks=e|t.baseLanes}function Du(){we(rl,ks),we(wi,wi.current)}function Ru(){ks=rl.current,je(wi),je(rl)}var mn=ze(null),Dn=null;function Ks(e){var t=e.alternate;we(Tt,Tt.current&1),we(mn,e),Dn===null&&(t===null||wi.current!==null||t.memoizedState!==null)&&(Dn=e)}function Mu(e){we(Tt,Tt.current),we(mn,e),Dn===null&&(Dn=e)}function vh(e){e.tag===22?(we(Tt,Tt.current),we(mn,e),Dn===null&&(Dn=e)):Ys()}function Ys(){we(Tt,Tt.current),we(mn,mn.current)}function hn(e){je(mn),Dn===e&&(Dn=null),je(Tt)}var Tt=ze(0);function ll(e){for(var t=e;t!==null;){if(t.tag===13){var a=t.memoizedState;if(a!==null&&(a=a.dehydrated,a===null||zd(a)||Pd(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 gs=0,De=null,st=null,jt=null,cl=!1,Ni=!1,Ia=!1,ul=0,Mo=0,ji=null,L1=0;function yt(){throw Error(o(321))}function Ou(e,t){if(t===null)return!1;for(var a=0;a<t.length&&a<e.length;a++)if(!fn(e[a],t[a]))return!1;return!0}function Iu(e,t,a,r,d,p){return gs=p,De=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,O.H=e===null||e.memoizedState===null?eg:Ju,Ia=!1,p=a(r,d),Ia=!1,Ni&&(p=bh(t,a,r,d)),yh(e),p}function yh(e){O.H=Lo;var t=st!==null&&st.next!==null;if(gs=0,jt=st=De=null,cl=!1,Mo=0,ji=null,t)throw Error(o(300));e===null||Ct||(e=e.dependencies,e!==null&&el(e)&&(Ct=!0))}function bh(e,t,a,r){De=e;var d=0;do{if(Ni&&(ji=null),Mo=0,Ni=!1,25<=d)throw Error(o(301));if(d+=1,jt=st=null,e.updateQueue!=null){var p=e.updateQueue;p.lastEffect=null,p.events=null,p.stores=null,p.memoCache!=null&&(p.memoCache.index=0)}O.H=tg,p=t(a,r)}while(Ni);return p}function B1(){var e=O.H,t=e.useState()[0];return t=typeof t.then=="function"?Oo(t):t,e=e.useState()[0],(st!==null?st.memoizedState:null)!==e&&(De.flags|=1024),t}function Lu(){var e=ul!==0;return ul=0,e}function Bu(e,t,a){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a}function Uu(e){if(cl){for(e=e.memoizedState;e!==null;){var t=e.queue;t!==null&&(t.pending=null),e=e.next}cl=!1}gs=0,jt=st=De=null,Ni=!1,Mo=ul=0,ji=null}function Qt(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return jt===null?De.memoizedState=jt=e:jt=jt.next=e,jt}function kt(){if(st===null){var e=De.alternate;e=e!==null?e.memoizedState:null}else e=st.next;var t=jt===null?De.memoizedState:jt.next;if(t!==null)jt=t,st=e;else{if(e===null)throw De.alternate===null?Error(o(467)):Error(o(310));st=e,e={memoizedState:st.memoizedState,baseState:st.baseState,baseQueue:st.baseQueue,queue:st.queue,next:null},jt===null?De.memoizedState=jt=e:jt=jt.next=e}return jt}function dl(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Oo(e){var t=Mo;return Mo+=1,ji===null&&(ji=[]),e=ch(ji,e,t),t=De,(jt===null?t.memoizedState:jt.next)===null&&(t=t.alternate,O.H=t===null||t.memoizedState===null?eg:Ju),e}function fl(e){if(e!==null&&typeof e=="object"){if(typeof e.then=="function")return Oo(e);if(e.$$typeof===A)return qt(e)}throw Error(o(438,String(e)))}function zu(e){var t=null,a=De.updateQueue;if(a!==null&&(t=a.memoCache),t==null){var r=De.alternate;r!==null&&(r=r.updateQueue,r!==null&&(r=r.memoCache,r!=null&&(t={data:r.data.map(function(d){return d.slice()}),index:0})))}if(t==null&&(t={data:[],index:0}),a===null&&(a=dl(),De.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]=ee;return t.index++,a}function vs(e,t){return typeof t=="function"?t(e):t}function pl(e){var t=kt();return Pu(t,st,e)}function Pu(e,t,a){var r=e.queue;if(r===null)throw Error(o(311));r.lastRenderedReducer=a;var d=e.baseQueue,p=r.pending;if(p!==null){if(d!==null){var x=d.next;d.next=p.next,p.next=x}t.baseQueue=d=p,r.pending=null}if(p=e.baseState,d===null)e.memoizedState=p;else{t=d.next;var w=x=null,D=null,P=t,K=!1;do{var J=P.lane&-536870913;if(J!==P.lane?(Pe&J)===J:(gs&J)===J){var q=P.revertLane;if(q===0)D!==null&&(D=D.next={lane:0,revertLane:0,gesture:null,action:P.action,hasEagerState:P.hasEagerState,eagerState:P.eagerState,next:null}),J===xi&&(K=!0);else if((gs&q)===q){P=P.next,q===xi&&(K=!0);continue}else J={lane:0,revertLane:P.revertLane,gesture:null,action:P.action,hasEagerState:P.hasEagerState,eagerState:P.eagerState,next:null},D===null?(w=D=J,x=p):D=D.next=J,De.lanes|=q,Xs|=q;J=P.action,Ia&&a(p,J),p=P.hasEagerState?P.eagerState:a(p,J)}else q={lane:J,revertLane:P.revertLane,gesture:P.gesture,action:P.action,hasEagerState:P.hasEagerState,eagerState:P.eagerState,next:null},D===null?(w=D=q,x=p):D=D.next=q,De.lanes|=J,Xs|=J;P=P.next}while(P!==null&&P!==t);if(D===null?x=p:D.next=w,!fn(p,e.memoizedState)&&(Ct=!0,K&&(a=Si,a!==null)))throw a;e.memoizedState=p,e.baseState=x,e.baseQueue=D,r.lastRenderedState=p}return d===null&&(r.lanes=0),[e.memoizedState,r.dispatch]}function Vu(e){var t=kt(),a=t.queue;if(a===null)throw Error(o(311));a.lastRenderedReducer=e;var r=a.dispatch,d=a.pending,p=t.memoizedState;if(d!==null){a.pending=null;var x=d=d.next;do p=e(p,x.action),x=x.next;while(x!==d);fn(p,t.memoizedState)||(Ct=!0),t.memoizedState=p,t.baseQueue===null&&(t.baseState=p),a.lastRenderedState=p}return[p,r]}function _h(e,t,a){var r=De,d=kt(),p=Ge;if(p){if(a===void 0)throw Error(o(407));a=a()}else a=t();var x=!fn((st||d).memoizedState,a);if(x&&(d.memoizedState=a,Ct=!0),d=d.queue,Gu(Th.bind(null,r,d,e),[e]),d.getSnapshot!==t||x||jt!==null&&jt.memoizedState.tag&1){if(r.flags|=2048,Ci(9,{destroy:void 0},Sh.bind(null,r,d,a,t),null),ot===null)throw Error(o(349));p||(gs&127)!==0||xh(r,t,a)}return a}function xh(e,t,a){e.flags|=16384,e={getSnapshot:t,value:a},t=De.updateQueue,t===null?(t=dl(),De.updateQueue=t,t.stores=[e]):(a=t.stores,a===null?t.stores=[e]:a.push(e))}function Sh(e,t,a,r){t.value=a,t.getSnapshot=r,kh(t)&&wh(e)}function Th(e,t,a){return a(function(){kh(t)&&wh(e)})}function kh(e){var t=e.getSnapshot;e=e.value;try{var a=t();return!fn(e,a)}catch{return!0}}function wh(e){var t=Na(e,2);t!==null&&cn(t,e,2)}function Hu(e){var t=Qt();if(typeof e=="function"){var a=e;if(e=a(),Ia){Pn(!0);try{a()}finally{Pn(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:vs,lastRenderedState:e},t}function Nh(e,t,a,r){return e.baseState=a,Pu(e,st,typeof r=="function"?r:vs)}function U1(e,t,a,r,d){if(gl(e))throw Error(o(485));if(e=t.action,e!==null){var p={payload:d,action:e,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(x){p.listeners.push(x)}};O.T!==null?a(!0):p.isTransition=!1,r(p),a=t.pending,a===null?(p.next=t.pending=p,jh(t,p)):(p.next=a.next,t.pending=a.next=p)}}function jh(e,t){var a=t.action,r=t.payload,d=e.state;if(t.isTransition){var p=O.T,x={};O.T=x;try{var w=a(d,r),D=O.S;D!==null&&D(x,w),Ch(e,t,w)}catch(P){qu(e,t,P)}finally{p!==null&&x.types!==null&&(p.types=x.types),O.T=p}}else try{p=a(d,r),Ch(e,t,p)}catch(P){qu(e,t,P)}}function Ch(e,t,a){a!==null&&typeof a=="object"&&typeof a.then=="function"?a.then(function(r){Eh(e,t,r)},function(r){return qu(e,t,r)}):Eh(e,t,a)}function Eh(e,t,a){t.status="fulfilled",t.value=a,Ah(t),e.state=a,t=e.pending,t!==null&&(a=t.next,a===t?e.pending=null:(a=a.next,t.next=a,jh(e,a)))}function qu(e,t,a){var r=e.pending;if(e.pending=null,r!==null){r=r.next;do t.status="rejected",t.reason=a,Ah(t),t=t.next;while(t!==r)}e.action=null}function Ah(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function Dh(e,t){return t}function Rh(e,t){if(Ge){var a=ot.formState;if(a!==null){e:{var r=De;if(Ge){if(lt){t:{for(var d=lt,p=An;d.nodeType!==8;){if(!p){d=null;break t}if(d=Rn(d.nextSibling),d===null){d=null;break t}}p=d.data,d=p==="F!"||p==="F"?d:null}if(d){lt=Rn(d.nextSibling),r=d.data==="F!";break e}}qs(r)}r=!1}r&&(t=a[0])}}return a=Qt(),a.memoizedState=a.baseState=t,r={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Dh,lastRenderedState:t},a.queue=r,a=Wh.bind(null,De,r),r.dispatch=a,r=Hu(!1),p=Yu.bind(null,De,!1,r.queue),r=Qt(),d={state:t,dispatch:null,action:e,pending:null},r.queue=d,a=U1.bind(null,De,d,p,a),d.dispatch=a,r.memoizedState=e,[t,a,!1]}function Mh(e){var t=kt();return Oh(t,st,e)}function Oh(e,t,a){if(t=Pu(e,t,Dh)[0],e=pl(vs)[0],typeof t=="object"&&t!==null&&typeof t.then=="function")try{var r=Oo(t)}catch(x){throw x===Ti?sl:x}else r=t;t=kt();var d=t.queue,p=d.dispatch;return a!==t.memoizedState&&(De.flags|=2048,Ci(9,{destroy:void 0},z1.bind(null,d,a),null)),[r,p,e]}function z1(e,t){e.action=t}function Ih(e){var t=kt(),a=st;if(a!==null)return Oh(t,a,e);kt(),t=t.memoizedState,a=kt();var r=a.queue.dispatch;return a.memoizedState=e,[t,r,!1]}function Ci(e,t,a,r){return e={tag:e,create:a,deps:r,inst:t,next:null},t=De.updateQueue,t===null&&(t=dl(),De.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 Lh(){return kt().memoizedState}function ml(e,t,a,r){var d=Qt();De.flags|=e,d.memoizedState=Ci(1|t,{destroy:void 0},a,r===void 0?null:r)}function hl(e,t,a,r){var d=kt();r=r===void 0?null:r;var p=d.memoizedState.inst;st!==null&&r!==null&&Ou(r,st.memoizedState.deps)?d.memoizedState=Ci(t,p,a,r):(De.flags|=e,d.memoizedState=Ci(1|t,p,a,r))}function Bh(e,t){ml(8390656,8,e,t)}function Gu(e,t){hl(2048,8,e,t)}function P1(e){De.flags|=4;var t=De.updateQueue;if(t===null)t=dl(),De.updateQueue=t,t.events=[e];else{var a=t.events;a===null?t.events=[e]:a.push(e)}}function Uh(e){var t=kt().memoizedState;return P1({ref:t,nextImpl:e}),function(){if((Xe&2)!==0)throw Error(o(440));return t.impl.apply(void 0,arguments)}}function zh(e,t){return hl(4,2,e,t)}function Ph(e,t){return hl(4,4,e,t)}function Vh(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 Hh(e,t,a){a=a!=null?a.concat([e]):null,hl(4,4,Vh.bind(null,t,e),a)}function $u(){}function qh(e,t){var a=kt();t=t===void 0?null:t;var r=a.memoizedState;return t!==null&&Ou(t,r[1])?r[0]:(a.memoizedState=[e,t],e)}function Gh(e,t){var a=kt();t=t===void 0?null:t;var r=a.memoizedState;if(t!==null&&Ou(t,r[1]))return r[0];if(r=e(),Ia){Pn(!0);try{e()}finally{Pn(!1)}}return a.memoizedState=[r,t],r}function Zu(e,t,a){return a===void 0||(gs&1073741824)!==0&&(Pe&261930)===0?e.memoizedState=t:(e.memoizedState=a,e=$g(),De.lanes|=e,Xs|=e,a)}function $h(e,t,a,r){return fn(a,t)?a:wi.current!==null?(e=Zu(e,a,r),fn(e,t)||(Ct=!0),e):(gs&42)===0||(gs&1073741824)!==0&&(Pe&261930)===0?(Ct=!0,e.memoizedState=a):(e=$g(),De.lanes|=e,Xs|=e,t)}function Zh(e,t,a,r,d){var p=G.p;G.p=p!==0&&8>p?p:8;var x=O.T,w={};O.T=w,Yu(e,!1,t,a);try{var D=d(),P=O.S;if(P!==null&&P(w,D),D!==null&&typeof D=="object"&&typeof D.then=="function"){var K=I1(D,r);Io(e,t,K,yn(e))}else Io(e,t,r,yn(e))}catch(J){Io(e,t,{then:function(){},status:"rejected",reason:J},yn())}finally{G.p=p,x!==null&&w.types!==null&&(x.types=w.types),O.T=x}}function V1(){}function Fu(e,t,a,r){if(e.tag!==5)throw Error(o(476));var d=Fh(e).queue;Zh(e,d,t,X,a===null?V1:function(){return Kh(e),a(r)})}function Fh(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:X,baseState:X,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:vs,lastRenderedState:X},next:null};var a={};return t.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:vs,lastRenderedState:a},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Kh(e){var t=Fh(e);t.next===null&&(t=e.alternate.memoizedState),Io(e,t.next.queue,{},yn())}function Ku(){return qt(Xo)}function Yh(){return kt().memoizedState}function Jh(){return kt().memoizedState}function H1(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var a=yn();e=Zs(a);var r=Fs(t,e,a);r!==null&&(cn(r,t,a),Ao(r,t,a)),t={cache:Tu()},e.payload=t;return}t=t.return}}function q1(e,t,a){var r=yn();a={lane:r,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},gl(e)?Xh(t,a):(a=fu(e,t,a,r),a!==null&&(cn(a,e,r),Qh(a,t,r)))}function Wh(e,t,a){var r=yn();Io(e,t,a,r)}function Io(e,t,a,r){var d={lane:r,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(gl(e))Xh(t,d);else{var p=e.alternate;if(e.lanes===0&&(p===null||p.lanes===0)&&(p=t.lastRenderedReducer,p!==null))try{var x=t.lastRenderedState,w=p(x,a);if(d.hasEagerState=!0,d.eagerState=w,fn(w,x))return Jr(e,t,d,0),ot===null&&Yr(),!1}catch{}finally{}if(a=fu(e,t,d,r),a!==null)return cn(a,e,r),Qh(a,t,r),!0}return!1}function Yu(e,t,a,r){if(r={lane:2,revertLane:jd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},gl(e)){if(t)throw Error(o(479))}else t=fu(e,a,r,2),t!==null&&cn(t,e,2)}function gl(e){var t=e.alternate;return e===De||t!==null&&t===De}function Xh(e,t){Ni=cl=!0;var a=e.pending;a===null?t.next=t:(t.next=a.next,a.next=t),e.pending=t}function Qh(e,t,a){if((a&4194048)!==0){var r=t.lanes;r&=e.pendingLanes,a|=r,t.lanes=a,St(e,a)}}var Lo={readContext:qt,use:fl,useCallback:yt,useContext:yt,useEffect:yt,useImperativeHandle:yt,useLayoutEffect:yt,useInsertionEffect:yt,useMemo:yt,useReducer:yt,useRef:yt,useState:yt,useDebugValue:yt,useDeferredValue:yt,useTransition:yt,useSyncExternalStore:yt,useId:yt,useHostTransitionStatus:yt,useFormState:yt,useActionState:yt,useOptimistic:yt,useMemoCache:yt,useCacheRefresh:yt};Lo.useEffectEvent=yt;var eg={readContext:qt,use:fl,useCallback:function(e,t){return Qt().memoizedState=[e,t===void 0?null:t],e},useContext:qt,useEffect:Bh,useImperativeHandle:function(e,t,a){a=a!=null?a.concat([e]):null,ml(4194308,4,Vh.bind(null,t,e),a)},useLayoutEffect:function(e,t){return ml(4194308,4,e,t)},useInsertionEffect:function(e,t){ml(4,2,e,t)},useMemo:function(e,t){var a=Qt();t=t===void 0?null:t;var r=e();if(Ia){Pn(!0);try{e()}finally{Pn(!1)}}return a.memoizedState=[r,t],r},useReducer:function(e,t,a){var r=Qt();if(a!==void 0){var d=a(t);if(Ia){Pn(!0);try{a(t)}finally{Pn(!1)}}}else d=t;return r.memoizedState=r.baseState=d,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:d},r.queue=e,e=e.dispatch=q1.bind(null,De,e),[r.memoizedState,e]},useRef:function(e){var t=Qt();return e={current:e},t.memoizedState=e},useState:function(e){e=Hu(e);var t=e.queue,a=Wh.bind(null,De,t);return t.dispatch=a,[e.memoizedState,a]},useDebugValue:$u,useDeferredValue:function(e,t){var a=Qt();return Zu(a,e,t)},useTransition:function(){var e=Hu(!1);return e=Zh.bind(null,De,e.queue,!0,!1),Qt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,a){var r=De,d=Qt();if(Ge){if(a===void 0)throw Error(o(407));a=a()}else{if(a=t(),ot===null)throw Error(o(349));(Pe&127)!==0||xh(r,t,a)}d.memoizedState=a;var p={value:a,getSnapshot:t};return d.queue=p,Bh(Th.bind(null,r,p,e),[e]),r.flags|=2048,Ci(9,{destroy:void 0},Sh.bind(null,r,p,a,t),null),a},useId:function(){var e=Qt(),t=ot.identifierPrefix;if(Ge){var a=Xn,r=Wn;a=(r&~(1<<32-Jt(r)-1)).toString(32)+a,t="_"+t+"R_"+a,a=ul++,0<a&&(t+="H"+a.toString(32)),t+="_"}else a=L1++,t="_"+t+"r_"+a.toString(32)+"_";return e.memoizedState=t},useHostTransitionStatus:Ku,useFormState:Rh,useActionState:Rh,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=Yu.bind(null,De,!0,a),a.dispatch=t,[e,t]},useMemoCache:zu,useCacheRefresh:function(){return Qt().memoizedState=H1.bind(null,De)},useEffectEvent:function(e){var t=Qt(),a={impl:e};return t.memoizedState=a,function(){if((Xe&2)!==0)throw Error(o(440));return a.impl.apply(void 0,arguments)}}},Ju={readContext:qt,use:fl,useCallback:qh,useContext:qt,useEffect:Gu,useImperativeHandle:Hh,useInsertionEffect:zh,useLayoutEffect:Ph,useMemo:Gh,useReducer:pl,useRef:Lh,useState:function(){return pl(vs)},useDebugValue:$u,useDeferredValue:function(e,t){var a=kt();return $h(a,st.memoizedState,e,t)},useTransition:function(){var e=pl(vs)[0],t=kt().memoizedState;return[typeof e=="boolean"?e:Oo(e),t]},useSyncExternalStore:_h,useId:Yh,useHostTransitionStatus:Ku,useFormState:Mh,useActionState:Mh,useOptimistic:function(e,t){var a=kt();return Nh(a,st,e,t)},useMemoCache:zu,useCacheRefresh:Jh};Ju.useEffectEvent=Uh;var tg={readContext:qt,use:fl,useCallback:qh,useContext:qt,useEffect:Gu,useImperativeHandle:Hh,useInsertionEffect:zh,useLayoutEffect:Ph,useMemo:Gh,useReducer:Vu,useRef:Lh,useState:function(){return Vu(vs)},useDebugValue:$u,useDeferredValue:function(e,t){var a=kt();return st===null?Zu(a,e,t):$h(a,st.memoizedState,e,t)},useTransition:function(){var e=Vu(vs)[0],t=kt().memoizedState;return[typeof e=="boolean"?e:Oo(e),t]},useSyncExternalStore:_h,useId:Yh,useHostTransitionStatus:Ku,useFormState:Ih,useActionState:Ih,useOptimistic:function(e,t){var a=kt();return st!==null?Nh(a,st,e,t):(a.baseState=e,[e,a.queue.dispatch])},useMemoCache:zu,useCacheRefresh:Jh};tg.useEffectEvent=Uh;function Wu(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 Xu={enqueueSetState:function(e,t,a){e=e._reactInternals;var r=yn(),d=Zs(r);d.payload=t,a!=null&&(d.callback=a),t=Fs(e,d,r),t!==null&&(cn(t,e,r),Ao(t,e,r))},enqueueReplaceState:function(e,t,a){e=e._reactInternals;var r=yn(),d=Zs(r);d.tag=1,d.payload=t,a!=null&&(d.callback=a),t=Fs(e,d,r),t!==null&&(cn(t,e,r),Ao(t,e,r))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var a=yn(),r=Zs(a);r.tag=2,t!=null&&(r.callback=t),t=Fs(e,r,a),t!==null&&(cn(t,e,a),Ao(t,e,a))}};function ng(e,t,a,r,d,p,x){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(r,p,x):t.prototype&&t.prototype.isPureReactComponent?!So(a,r)||!So(d,p):!0}function sg(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&&Xu.enqueueReplaceState(t,t.state,null)}function La(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 d in e)a[d]===void 0&&(a[d]=e[d])}return a}function ag(e){Kr(e)}function ig(e){console.error(e)}function og(e){Kr(e)}function vl(e,t){try{var a=e.onUncaughtError;a(t.value,{componentStack:t.stack})}catch(r){setTimeout(function(){throw r})}}function rg(e,t,a){try{var r=e.onCaughtError;r(a.value,{componentStack:a.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(d){setTimeout(function(){throw d})}}function Qu(e,t,a){return a=Zs(a),a.tag=3,a.payload={element:null},a.callback=function(){vl(e,t)},a}function lg(e){return e=Zs(e),e.tag=3,e}function cg(e,t,a,r){var d=a.type.getDerivedStateFromError;if(typeof d=="function"){var p=r.value;e.payload=function(){return d(p)},e.callback=function(){rg(t,a,r)}}var x=a.stateNode;x!==null&&typeof x.componentDidCatch=="function"&&(e.callback=function(){rg(t,a,r),typeof d!="function"&&(Qs===null?Qs=new Set([this]):Qs.add(this));var w=r.stack;this.componentDidCatch(r.value,{componentStack:w!==null?w:""})})}function G1(e,t,a,r,d){if(a.flags|=32768,r!==null&&typeof r=="object"&&typeof r.then=="function"){if(t=a.alternate,t!==null&&_i(t,a,d,!0),a=mn.current,a!==null){switch(a.tag){case 31:case 13:return Dn===null?El():a.alternate===null&&bt===0&&(bt=3),a.flags&=-257,a.flags|=65536,a.lanes=d,r===al?a.flags|=16384:(t=a.updateQueue,t===null?a.updateQueue=new Set([r]):t.add(r),kd(e,r,d)),!1;case 22:return a.flags|=65536,r===al?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)),kd(e,r,d)),!1}throw Error(o(435,a.tag))}return kd(e,r,d),El(),!1}if(Ge)return t=mn.current,t!==null?((t.flags&65536)===0&&(t.flags|=256),t.flags|=65536,t.lanes=d,r!==yu&&(e=Error(o(422),{cause:r}),wo(jn(e,a)))):(r!==yu&&(t=Error(o(423),{cause:r}),wo(jn(t,a))),e=e.current.alternate,e.flags|=65536,d&=-d,e.lanes|=d,r=jn(r,a),d=Qu(e.stateNode,r,d),Eu(e,d),bt!==4&&(bt=2)),!1;var p=Error(o(520),{cause:r});if(p=jn(p,a),Go===null?Go=[p]:Go.push(p),bt!==4&&(bt=2),t===null)return!0;r=jn(r,a),a=t;do{switch(a.tag){case 3:return a.flags|=65536,e=d&-d,a.lanes|=e,e=Qu(a.stateNode,r,e),Eu(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"&&(Qs===null||!Qs.has(p))))return a.flags|=65536,d&=-d,a.lanes|=d,d=lg(d),cg(d,e,a,r),Eu(a,d),!1}a=a.return}while(a!==null);return!1}var ed=Error(o(461)),Ct=!1;function Gt(e,t,a,r){t.child=e===null?ph(t,null,a,r):Oa(t,e.child,a,r)}function ug(e,t,a,r,d){a=a.render;var p=t.ref;if("ref"in r){var x={};for(var w in r)w!=="ref"&&(x[w]=r[w])}else x=r;return Aa(t),r=Iu(e,t,a,x,p,d),w=Lu(),e!==null&&!Ct?(Bu(e,t,d),ys(e,t,d)):(Ge&&w&&gu(t),t.flags|=1,Gt(e,t,r,d),t.child)}function dg(e,t,a,r,d){if(e===null){var p=a.type;return typeof p=="function"&&!pu(p)&&p.defaultProps===void 0&&a.compare===null?(t.tag=15,t.type=p,fg(e,t,p,r,d)):(e=Xr(a.type,null,r,t,t.mode,d),e.ref=t.ref,e.return=t,t.child=e)}if(p=e.child,!ld(e,d)){var x=p.memoizedProps;if(a=a.compare,a=a!==null?a:So,a(x,r)&&e.ref===t.ref)return ys(e,t,d)}return t.flags|=1,e=fs(p,r),e.ref=t.ref,e.return=t,t.child=e}function fg(e,t,a,r,d){if(e!==null){var p=e.memoizedProps;if(So(p,r)&&e.ref===t.ref)if(Ct=!1,t.pendingProps=r=p,ld(e,d))(e.flags&131072)!==0&&(Ct=!0);else return t.lanes=e.lanes,ys(e,t,d)}return td(e,t,a,r,d)}function pg(e,t,a,r){var d=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,d=0;r!==null;)d=d|r.lanes|r.childLanes,r=r.sibling;r=d&~p}else r=0,t.child=null;return mg(e,t,p,a,r)}if((a&536870912)!==0)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&nl(t,p!==null?p.cachePool:null),p!==null?gh(t,p):Du(),vh(t);else return r=t.lanes=536870912,mg(e,t,p!==null?p.baseLanes|a:a,a,r)}else p!==null?(nl(t,p.cachePool),gh(t,p),Ys(),t.memoizedState=null):(e!==null&&nl(t,null),Du(),Ys());return Gt(e,t,d,a),t.child}function Bo(e,t){return e!==null&&e.tag===22||t.stateNode!==null||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function mg(e,t,a,r,d){var p=wu();return p=p===null?null:{parent:Nt._currentValue,pool:p},t.memoizedState={baseLanes:a,cachePool:p},e!==null&&nl(t,null),Du(),vh(t),e!==null&&_i(e,t,r,!0),t.childLanes=d,null}function yl(e,t){return t=_l({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function hg(e,t,a){return Oa(t,e.child,null,a),e=yl(t,t.pendingProps),e.flags|=2,hn(t),t.memoizedState=null,e}function $1(e,t,a){var r=t.pendingProps,d=(t.flags&128)!==0;if(t.flags&=-129,e===null){if(Ge){if(r.mode==="hidden")return e=yl(t,r),t.lanes=536870912,Bo(null,e);if(Mu(t),(e=lt)?(e=jv(e,An),e=e!==null&&e.data==="&"?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:Vs!==null?{id:Wn,overflow:Xn}:null,retryLane:536870912,hydrationErrors:null},a=Xm(e),a.return=t,t.child=a,Ht=t,lt=null)):e=null,e===null)throw qs(t);return t.lanes=536870912,null}return yl(t,r)}var p=e.memoizedState;if(p!==null){var x=p.dehydrated;if(Mu(t),d)if(t.flags&256)t.flags&=-257,t=hg(e,t,a);else if(t.memoizedState!==null)t.child=e.child,t.flags|=128,t=null;else throw Error(o(558));else if(Ct||_i(e,t,a,!1),d=(a&e.childLanes)!==0,Ct||d){if(r=ot,r!==null&&(x=ls(r,a),x!==0&&x!==p.retryLane))throw p.retryLane=x,Na(e,x),cn(r,e,x),ed;El(),t=hg(e,t,a)}else e=p.treeContext,lt=Rn(x.nextSibling),Ht=t,Ge=!0,Hs=null,An=!1,e!==null&&th(t,e),t=yl(t,r),t.flags|=4096;return t}return e=fs(e.child,{mode:r.mode,children:r.children}),e.ref=t.ref,t.child=e,e.return=t,e}function bl(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 td(e,t,a,r,d){return Aa(t),a=Iu(e,t,a,r,void 0,d),r=Lu(),e!==null&&!Ct?(Bu(e,t,d),ys(e,t,d)):(Ge&&r&&gu(t),t.flags|=1,Gt(e,t,a,d),t.child)}function gg(e,t,a,r,d,p){return Aa(t),t.updateQueue=null,a=bh(t,r,a,d),yh(e),r=Lu(),e!==null&&!Ct?(Bu(e,t,p),ys(e,t,p)):(Ge&&r&&gu(t),t.flags|=1,Gt(e,t,a,p),t.child)}function vg(e,t,a,r,d){if(Aa(t),t.stateNode===null){var p=gi,x=a.contextType;typeof x=="object"&&x!==null&&(p=qt(x)),p=new a(r,p),t.memoizedState=p.state!==null&&p.state!==void 0?p.state:null,p.updater=Xu,t.stateNode=p,p._reactInternals=t,p=t.stateNode,p.props=r,p.state=t.memoizedState,p.refs={},ju(t),x=a.contextType,p.context=typeof x=="object"&&x!==null?qt(x):gi,p.state=t.memoizedState,x=a.getDerivedStateFromProps,typeof x=="function"&&(Wu(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&&Xu.enqueueReplaceState(p,p.state,null),Ro(t,r,p,d),Do(),p.state=t.memoizedState),typeof p.componentDidMount=="function"&&(t.flags|=4194308),r=!0}else if(e===null){p=t.stateNode;var w=t.memoizedProps,D=La(a,w);p.props=D;var P=p.context,K=a.contextType;x=gi,typeof K=="object"&&K!==null&&(x=qt(K));var J=a.getDerivedStateFromProps;K=typeof J=="function"||typeof p.getSnapshotBeforeUpdate=="function",w=t.pendingProps!==w,K||typeof p.UNSAFE_componentWillReceiveProps!="function"&&typeof p.componentWillReceiveProps!="function"||(w||P!==x)&&sg(t,p,r,x),$s=!1;var q=t.memoizedState;p.state=q,Ro(t,r,p,d),Do(),P=t.memoizedState,w||q!==P||$s?(typeof J=="function"&&(Wu(t,a,J,r),P=t.memoizedState),(D=$s||ng(t,a,D,r,q,P,x))?(K||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=P),p.props=r,p.state=P,p.context=x,r=D):(typeof p.componentDidMount=="function"&&(t.flags|=4194308),r=!1)}else{p=t.stateNode,Cu(e,t),x=t.memoizedProps,K=La(a,x),p.props=K,J=t.pendingProps,q=p.context,P=a.contextType,D=gi,typeof P=="object"&&P!==null&&(D=qt(P)),w=a.getDerivedStateFromProps,(P=typeof w=="function"||typeof p.getSnapshotBeforeUpdate=="function")||typeof p.UNSAFE_componentWillReceiveProps!="function"&&typeof p.componentWillReceiveProps!="function"||(x!==J||q!==D)&&sg(t,p,r,D),$s=!1,q=t.memoizedState,p.state=q,Ro(t,r,p,d),Do();var $=t.memoizedState;x!==J||q!==$||$s||e!==null&&e.dependencies!==null&&el(e.dependencies)?(typeof w=="function"&&(Wu(t,a,w,r),$=t.memoizedState),(K=$s||ng(t,a,K,r,q,$,D)||e!==null&&e.dependencies!==null&&el(e.dependencies))?(P||typeof p.UNSAFE_componentWillUpdate!="function"&&typeof p.componentWillUpdate!="function"||(typeof p.componentWillUpdate=="function"&&p.componentWillUpdate(r,$,D),typeof p.UNSAFE_componentWillUpdate=="function"&&p.UNSAFE_componentWillUpdate(r,$,D)),typeof p.componentDidUpdate=="function"&&(t.flags|=4),typeof p.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof p.componentDidUpdate!="function"||x===e.memoizedProps&&q===e.memoizedState||(t.flags|=4),typeof p.getSnapshotBeforeUpdate!="function"||x===e.memoizedProps&&q===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=$),p.props=r,p.state=$,p.context=D,r=K):(typeof p.componentDidUpdate!="function"||x===e.memoizedProps&&q===e.memoizedState||(t.flags|=4),typeof p.getSnapshotBeforeUpdate!="function"||x===e.memoizedProps&&q===e.memoizedState||(t.flags|=1024),r=!1)}return p=r,bl(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=Oa(t,e.child,null,d),t.child=Oa(t,null,a,d)):Gt(e,t,a,d),t.memoizedState=p.state,e=t.child):e=ys(e,t,d),e}function yg(e,t,a,r){return Ca(),t.flags|=256,Gt(e,t,a,r),t.child}var nd={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function sd(e){return{baseLanes:e,cachePool:rh()}}function ad(e,t,a){return e=e!==null?e.childLanes&~a:0,t&&(e|=vn),e}function bg(e,t,a){var r=t.pendingProps,d=!1,p=(t.flags&128)!==0,x;if((x=p)||(x=e!==null&&e.memoizedState===null?!1:(Tt.current&2)!==0),x&&(d=!0,t.flags&=-129),x=(t.flags&32)!==0,t.flags&=-33,e===null){if(Ge){if(d?Ks(t):Ys(),(e=lt)?(e=jv(e,An),e=e!==null&&e.data!=="&"?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:Vs!==null?{id:Wn,overflow:Xn}:null,retryLane:536870912,hydrationErrors:null},a=Xm(e),a.return=t,t.child=a,Ht=t,lt=null)):e=null,e===null)throw qs(t);return Pd(e)?t.lanes=32:t.lanes=536870912,null}var w=r.children;return r=r.fallback,d?(Ys(),d=t.mode,w=_l({mode:"hidden",children:w},d),r=ja(r,d,a,null),w.return=t,r.return=t,w.sibling=r,t.child=w,r=t.child,r.memoizedState=sd(a),r.childLanes=ad(e,x,a),t.memoizedState=nd,Bo(null,r)):(Ks(t),id(t,w))}var D=e.memoizedState;if(D!==null&&(w=D.dehydrated,w!==null)){if(p)t.flags&256?(Ks(t),t.flags&=-257,t=od(e,t,a)):t.memoizedState!==null?(Ys(),t.child=e.child,t.flags|=128,t=null):(Ys(),w=r.fallback,d=t.mode,r=_l({mode:"visible",children:r.children},d),w=ja(w,d,a,null),w.flags|=2,r.return=t,w.return=t,r.sibling=w,t.child=r,Oa(t,e.child,null,a),r=t.child,r.memoizedState=sd(a),r.childLanes=ad(e,x,a),t.memoizedState=nd,t=Bo(null,r));else if(Ks(t),Pd(w)){if(x=w.nextSibling&&w.nextSibling.dataset,x)var P=x.dgst;x=P,r=Error(o(419)),r.stack="",r.digest=x,wo({value:r,source:null,stack:null}),t=od(e,t,a)}else if(Ct||_i(e,t,a,!1),x=(a&e.childLanes)!==0,Ct||x){if(x=ot,x!==null&&(r=ls(x,a),r!==0&&r!==D.retryLane))throw D.retryLane=r,Na(e,r),cn(x,e,r),ed;zd(w)||El(),t=od(e,t,a)}else zd(w)?(t.flags|=192,t.child=e.child,t=null):(e=D.treeContext,lt=Rn(w.nextSibling),Ht=t,Ge=!0,Hs=null,An=!1,e!==null&&th(t,e),t=id(t,r.children),t.flags|=4096);return t}return d?(Ys(),w=r.fallback,d=t.mode,D=e.child,P=D.sibling,r=fs(D,{mode:"hidden",children:r.children}),r.subtreeFlags=D.subtreeFlags&65011712,P!==null?w=fs(P,w):(w=ja(w,d,a,null),w.flags|=2),w.return=t,r.return=t,r.sibling=w,t.child=r,Bo(null,r),r=t.child,w=e.child.memoizedState,w===null?w=sd(a):(d=w.cachePool,d!==null?(D=Nt._currentValue,d=d.parent!==D?{parent:D,pool:D}:d):d=rh(),w={baseLanes:w.baseLanes|a,cachePool:d}),r.memoizedState=w,r.childLanes=ad(e,x,a),t.memoizedState=nd,Bo(e.child,r)):(Ks(t),a=e.child,e=a.sibling,a=fs(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 id(e,t){return t=_l({mode:"visible",children:t},e.mode),t.return=e,e.child=t}function _l(e,t){return e=pn(22,e,null,t),e.lanes=0,e}function od(e,t,a){return Oa(t,e.child,null,a),e=id(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function _g(e,t,a){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),xu(e.return,t,a)}function rd(e,t,a,r,d,p){var x=e.memoizedState;x===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:a,tailMode:d,treeForkCount:p}:(x.isBackwards=t,x.rendering=null,x.renderingStartTime=0,x.last=r,x.tail=a,x.tailMode=d,x.treeForkCount=p)}function xg(e,t,a){var r=t.pendingProps,d=r.revealOrder,p=r.tail;r=r.children;var x=Tt.current,w=(x&2)!==0;if(w?(x=x&1|2,t.flags|=128):x&=1,we(Tt,x),Gt(e,t,r,a),r=Ge?ko:0,!w&&e!==null&&(e.flags&128)!==0)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&_g(e,a,t);else if(e.tag===19)_g(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(d){case"forwards":for(a=t.child,d=null;a!==null;)e=a.alternate,e!==null&&ll(e)===null&&(d=a),a=a.sibling;a=d,a===null?(d=t.child,t.child=null):(d=a.sibling,a.sibling=null),rd(t,!1,d,a,p,r);break;case"backwards":case"unstable_legacy-backwards":for(a=null,d=t.child,t.child=null;d!==null;){if(e=d.alternate,e!==null&&ll(e)===null){t.child=d;break}e=d.sibling,d.sibling=a,a=d,d=e}rd(t,!0,a,null,p,r);break;case"together":rd(t,!1,null,null,void 0,r);break;default:t.memoizedState=null}return t.child}function ys(e,t,a){if(e!==null&&(t.dependencies=e.dependencies),Xs|=t.lanes,(a&t.childLanes)===0)if(e!==null){if(_i(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=fs(e,e.pendingProps),t.child=a,a.return=t;e.sibling!==null;)e=e.sibling,a=a.sibling=fs(e,e.pendingProps),a.return=t;a.sibling=null}return t.child}function ld(e,t){return(e.lanes&t)!==0?!0:(e=e.dependencies,!!(e!==null&&el(e)))}function Z1(e,t,a){switch(t.tag){case 3:Re(t,t.stateNode.containerInfo),Gs(t,Nt,e.memoizedState.cache),Ca();break;case 27:case 5:Q(t);break;case 4:Re(t,t.stateNode.containerInfo);break;case 10:Gs(t,t.type,t.memoizedProps.value);break;case 31:if(t.memoizedState!==null)return t.flags|=128,Mu(t),null;break;case 13:var r=t.memoizedState;if(r!==null)return r.dehydrated!==null?(Ks(t),t.flags|=128,null):(a&t.child.childLanes)!==0?bg(e,t,a):(Ks(t),e=ys(e,t,a),e!==null?e.sibling:null);Ks(t);break;case 19:var d=(e.flags&128)!==0;if(r=(a&t.childLanes)!==0,r||(_i(e,t,a,!1),r=(a&t.childLanes)!==0),d){if(r)return xg(e,t,a);t.flags|=128}if(d=t.memoizedState,d!==null&&(d.rendering=null,d.tail=null,d.lastEffect=null),we(Tt,Tt.current),r)break;return null;case 22:return t.lanes=0,pg(e,t,a,t.pendingProps);case 24:Gs(t,Nt,e.memoizedState.cache)}return ys(e,t,a)}function Sg(e,t,a){if(e!==null)if(e.memoizedProps!==t.pendingProps)Ct=!0;else{if(!ld(e,a)&&(t.flags&128)===0)return Ct=!1,Z1(e,t,a);Ct=(e.flags&131072)!==0}else Ct=!1,Ge&&(t.flags&1048576)!==0&&eh(t,ko,t.index);switch(t.lanes=0,t.tag){case 16:e:{var r=t.pendingProps;if(e=Ra(t.elementType),t.type=e,typeof e=="function")pu(e)?(r=La(e,r),t.tag=1,t=vg(null,t,e,r,a)):(t.tag=0,t=td(null,t,e,r,a));else{if(e!=null){var d=e.$$typeof;if(d===R){t.tag=11,t=ug(null,t,e,r,a);break e}else if(d===V){t.tag=14,t=dg(null,t,e,r,a);break e}}throw t=Z(e)||e,Error(o(306,t,""))}}return t;case 0:return td(e,t,t.type,t.pendingProps,a);case 1:return r=t.type,d=La(r,t.pendingProps),vg(e,t,r,d,a);case 3:e:{if(Re(t,t.stateNode.containerInfo),e===null)throw Error(o(387));r=t.pendingProps;var p=t.memoizedState;d=p.element,Cu(e,t),Ro(t,r,null,a);var x=t.memoizedState;if(r=x.cache,Gs(t,Nt,r),r!==p.cache&&Su(t,[Nt],a,!0),Do(),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=yg(e,t,r,a);break e}else if(r!==d){d=jn(Error(o(424)),t),wo(d),t=yg(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=Rn(e.firstChild),Ht=t,Ge=!0,Hs=null,An=!0,a=ph(t,null,r,a),t.child=a;a;)a.flags=a.flags&-3|4096,a=a.sibling}else{if(Ca(),r===d){t=ys(e,t,a);break e}Gt(e,t,r,a)}t=t.child}return t;case 26:return bl(e,t),e===null?(a=Mv(t.type,null,t.pendingProps,null))?t.memoizedState=a:Ge||(a=t.type,e=t.pendingProps,r=Ll(pe.current).createElement(a),r[Vt]=t,r[nn]=e,$t(r,a,e),Bt(r),t.stateNode=r):t.memoizedState=Mv(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return Q(t),e===null&&Ge&&(r=t.stateNode=Av(t.type,t.pendingProps,pe.current),Ht=t,An=!0,d=lt,sa(t.type)?(Vd=d,lt=Rn(r.firstChild)):lt=d),Gt(e,t,t.pendingProps.children,a),bl(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&Ge&&((d=r=lt)&&(r=SS(r,t.type,t.pendingProps,An),r!==null?(t.stateNode=r,Ht=t,lt=Rn(r.firstChild),An=!1,d=!0):d=!1),d||qs(t)),Q(t),d=t.type,p=t.pendingProps,x=e!==null?e.memoizedProps:null,r=p.children,Ld(d,p)?r=null:x!==null&&Ld(d,x)&&(t.flags|=32),t.memoizedState!==null&&(d=Iu(e,t,B1,null,null,a),Xo._currentValue=d),bl(e,t),Gt(e,t,r,a),t.child;case 6:return e===null&&Ge&&((e=a=lt)&&(a=TS(a,t.pendingProps,An),a!==null?(t.stateNode=a,Ht=t,lt=null,e=!0):e=!1),e||qs(t)),null;case 13:return bg(e,t,a);case 4:return Re(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Oa(t,null,r,a):Gt(e,t,r,a),t.child;case 11:return ug(e,t,t.type,t.pendingProps,a);case 7:return Gt(e,t,t.pendingProps,a),t.child;case 8:return Gt(e,t,t.pendingProps.children,a),t.child;case 12:return Gt(e,t,t.pendingProps.children,a),t.child;case 10:return r=t.pendingProps,Gs(t,t.type,r.value),Gt(e,t,r.children,a),t.child;case 9:return d=t.type._context,r=t.pendingProps.children,Aa(t),d=qt(d),r=r(d),t.flags|=1,Gt(e,t,r,a),t.child;case 14:return dg(e,t,t.type,t.pendingProps,a);case 15:return fg(e,t,t.type,t.pendingProps,a);case 19:return xg(e,t,a);case 31:return $1(e,t,a);case 22:return pg(e,t,a,t.pendingProps);case 24:return Aa(t),r=qt(Nt),e===null?(d=wu(),d===null&&(d=ot,p=Tu(),d.pooledCache=p,p.refCount++,p!==null&&(d.pooledCacheLanes|=a),d=p),t.memoizedState={parent:r,cache:d},ju(t),Gs(t,Nt,d)):((e.lanes&a)!==0&&(Cu(e,t),Ro(t,null,null,a),Do()),d=e.memoizedState,p=t.memoizedState,d.parent!==r?(d={parent:r,cache:r},t.memoizedState=d,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=d),Gs(t,Nt,r)):(r=p.cache,Gs(t,Nt,r),r!==d.cache&&Su(t,[Nt],a,!0))),Gt(e,t,t.pendingProps.children,a),t.child;case 29:throw t.pendingProps}throw Error(o(156,t.tag))}function bs(e){e.flags|=4}function cd(e,t,a,r,d){if((t=(e.mode&32)!==0)&&(t=!1),t){if(e.flags|=16777216,(d&335544128)===d)if(e.stateNode.complete)e.flags|=8192;else if(Yg())e.flags|=8192;else throw Ma=al,Nu}else e.flags&=-16777217}function Tg(e,t){if(t.type!=="stylesheet"||(t.state.loading&4)!==0)e.flags&=-16777217;else if(e.flags|=16777216,!Uv(t))if(Yg())e.flags|=8192;else throw Ma=al,Nu}function xl(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag!==22?Ke():536870912,e.lanes|=t,Ri|=t)}function Uo(e,t){if(!Ge)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 d=e.child;d!==null;)a|=d.lanes|d.childLanes,r|=d.subtreeFlags&65011712,r|=d.flags&65011712,d.return=e,d=d.sibling;else for(d=e.child;d!==null;)a|=d.lanes|d.childLanes,r|=d.subtreeFlags,r|=d.flags,d.return=e,d=d.sibling;return e.subtreeFlags|=r,e.childLanes=a,t}function F1(e,t,a){var r=t.pendingProps;switch(vu(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),hs(Nt),Lt(),a.pendingContext&&(a.context=a.pendingContext,a.pendingContext=null),(e===null||e.child===null)&&(bi(t)?bs(t):e===null||e.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,bu())),ct(t),null;case 26:var d=t.type,p=t.memoizedState;return e===null?(bs(t),p!==null?(ct(t),Tg(t,p)):(ct(t),cd(t,d,null,r,a))):p?p!==e.memoizedState?(bs(t),ct(t),Tg(t,p)):(ct(t),t.flags&=-16777217):(e=e.memoizedProps,e!==r&&bs(t),ct(t),cd(t,d,e,r,a)),null;case 27:if(W(t),a=pe.current,d=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==r&&bs(t);else{if(!r){if(t.stateNode===null)throw Error(o(166));return ct(t),null}e=Ae.current,bi(t)?nh(t):(e=Av(d,r,a),t.stateNode=e,bs(t))}return ct(t),null;case 5:if(W(t),d=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==r&&bs(t);else{if(!r){if(t.stateNode===null)throw Error(o(166));return ct(t),null}if(p=Ae.current,bi(t))nh(t);else{var x=Ll(pe.current);switch(p){case 1:p=x.createElementNS("http://www.w3.org/2000/svg",d);break;case 2:p=x.createElementNS("http://www.w3.org/1998/Math/MathML",d);break;default:switch(d){case"svg":p=x.createElementNS("http://www.w3.org/2000/svg",d);break;case"math":p=x.createElementNS("http://www.w3.org/1998/Math/MathML",d);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(d,{is:r.is}):x.createElement(d)}}p[Vt]=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($t(p,d,r),d){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}r&&bs(t)}}return ct(t),cd(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,a),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&bs(t);else{if(typeof r!="string"&&t.stateNode===null)throw Error(o(166));if(e=pe.current,bi(t)){if(e=t.stateNode,a=t.memoizedProps,r=null,d=Ht,d!==null)switch(d.tag){case 27:case 5:r=d.memoizedProps}e[Vt]=t,e=!!(e.nodeValue===a||r!==null&&r.suppressHydrationWarning===!0||bv(e.nodeValue,a)),e||qs(t,!0)}else e=Ll(e).createTextNode(r),e[Vt]=t,t.stateNode=e}return ct(t),null;case 31:if(a=t.memoizedState,e===null||e.memoizedState!==null){if(r=bi(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[Vt]=t}else Ca(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;ct(t),e=!1}else a=bu(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),e=!0;if(!e)return t.flags&256?(hn(t),t):(hn(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(d=bi(t),r!==null&&r.dehydrated!==null){if(e===null){if(!d)throw Error(o(318));if(d=t.memoizedState,d=d!==null?d.dehydrated:null,!d)throw Error(o(317));d[Vt]=t}else Ca(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;ct(t),d=!1}else d=bu(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=d),d=!0;if(!d)return t.flags&256?(hn(t),t):(hn(t),null)}return hn(t),(t.flags&128)!==0?(t.lanes=a,t):(a=r!==null,e=e!==null&&e.memoizedState!==null,a&&(r=t.child,d=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(d=r.alternate.memoizedState.cachePool.pool),p=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(p=r.memoizedState.cachePool.pool),p!==d&&(r.flags|=2048)),a!==e&&a&&(t.child.flags|=8192),xl(t,t.updateQueue),ct(t),null);case 4:return Lt(),e===null&&Dd(t.stateNode.containerInfo),ct(t),null;case 10:return hs(t.type),ct(t),null;case 19:if(je(Tt),r=t.memoizedState,r===null)return ct(t),null;if(d=(t.flags&128)!==0,p=r.rendering,p===null)if(d)Uo(r,!1);else{if(bt!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(p=ll(e),p!==null){for(t.flags|=128,Uo(r,!1),e=p.updateQueue,t.updateQueue=e,xl(t,e),t.subtreeFlags=0,e=a,a=t.child;a!==null;)Wm(a,e),a=a.sibling;return we(Tt,Tt.current&1|2),Ge&&ps(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Kt()>Nl&&(t.flags|=128,d=!0,Uo(r,!1),t.lanes=4194304)}else{if(!d)if(e=ll(p),e!==null){if(t.flags|=128,d=!0,e=e.updateQueue,t.updateQueue=e,xl(t,e),Uo(r,!0),r.tail===null&&r.tailMode==="hidden"&&!p.alternate&&!Ge)return ct(t),null}else 2*Kt()-r.renderingStartTime>Nl&&a!==536870912&&(t.flags|=128,d=!0,Uo(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=Kt(),e.sibling=null,a=Tt.current,we(Tt,d?a&1|2:a&1),Ge&&ps(t,r.treeForkCount),e):(ct(t),null);case 22:case 23:return hn(t),Ru(),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&&xl(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&&je(Da),null;case 24:return a=null,e!==null&&(a=e.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),hs(Nt),ct(t),null;case 25:return null;case 30:return null}throw Error(o(156,t.tag))}function K1(e,t){switch(vu(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return hs(Nt),Lt(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return W(t),null;case 31:if(t.memoizedState!==null){if(hn(t),t.alternate===null)throw Error(o(340));Ca()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(hn(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(o(340));Ca()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return je(Tt),null;case 4:return Lt(),null;case 10:return hs(t.type),null;case 22:case 23:return hn(t),Ru(),e!==null&&je(Da),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return hs(Nt),null;case 25:return null;default:return null}}function kg(e,t){switch(vu(t),t.tag){case 3:hs(Nt),Lt();break;case 26:case 27:case 5:W(t);break;case 4:Lt();break;case 31:t.memoizedState!==null&&hn(t);break;case 13:hn(t);break;case 19:je(Tt);break;case 10:hs(t.type);break;case 22:case 23:hn(t),Ru(),e!==null&&je(Da);break;case 24:hs(Nt)}}function zo(e,t){try{var a=t.updateQueue,r=a!==null?a.lastEffect:null;if(r!==null){var d=r.next;a=d;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!==d)}}catch(w){tt(t,t.return,w)}}function Js(e,t,a){try{var r=t.updateQueue,d=r!==null?r.lastEffect:null;if(d!==null){var p=d.next;r=p;do{if((r.tag&e)===e){var x=r.inst,w=x.destroy;if(w!==void 0){x.destroy=void 0,d=t;var D=a,P=w;try{P()}catch(K){tt(d,D,K)}}}r=r.next}while(r!==p)}}catch(K){tt(t,t.return,K)}}function wg(e){var t=e.updateQueue;if(t!==null){var a=e.stateNode;try{hh(t,a)}catch(r){tt(e,e.return,r)}}}function Ng(e,t,a){a.props=La(e.type,e.memoizedProps),a.state=e.memoizedState;try{a.componentWillUnmount()}catch(r){tt(e,t,r)}}function Po(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(d){tt(e,t,d)}}function Qn(e,t){var a=e.ref,r=e.refCleanup;if(a!==null)if(typeof r=="function")try{r()}catch(d){tt(e,t,d)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(d){tt(e,t,d)}else a.current=null}function jg(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(d){tt(e,e.return,d)}}function ud(e,t,a){try{var r=e.stateNode;gS(r,e.type,a,t),r[nn]=t}catch(d){tt(e,e.return,d)}}function Cg(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&sa(e.type)||e.tag===4}function dd(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Cg(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&&sa(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 fd(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=us));else if(r!==4&&(r===27&&sa(e.type)&&(a=e.stateNode,t=null),e=e.child,e!==null))for(fd(e,t,a),e=e.sibling;e!==null;)fd(e,t,a),e=e.sibling}function Sl(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&&sa(e.type)&&(a=e.stateNode),e=e.child,e!==null))for(Sl(e,t,a),e=e.sibling;e!==null;)Sl(e,t,a),e=e.sibling}function Eg(e){var t=e.stateNode,a=e.memoizedProps;try{for(var r=e.type,d=t.attributes;d.length;)t.removeAttributeNode(d[0]);$t(t,r,a),t[Vt]=e,t[nn]=a}catch(p){tt(e,e.return,p)}}var _s=!1,Et=!1,pd=!1,Ag=typeof WeakSet=="function"?WeakSet:Set,Ut=null;function Y1(e,t){if(e=e.containerInfo,Od=ql,e=Hm(e),ou(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 d=r.anchorOffset,p=r.focusNode;r=r.focusOffset;try{a.nodeType,p.nodeType}catch{a=null;break e}var x=0,w=-1,D=-1,P=0,K=0,J=e,q=null;t:for(;;){for(var $;J!==a||d!==0&&J.nodeType!==3||(w=x+d),J!==p||r!==0&&J.nodeType!==3||(D=x+r),J.nodeType===3&&(x+=J.nodeValue.length),($=J.firstChild)!==null;)q=J,J=$;for(;;){if(J===e)break t;if(q===a&&++P===d&&(w=x),q===p&&++K===r&&(D=x),($=J.nextSibling)!==null)break;J=q,q=J.parentNode}J=$}a=w===-1||D===-1?null:{start:w,end:D}}else a=null}a=a||{start:0,end:0}}else a=null;for(Id={focusedElem:e,selectionRange:a},ql=!1,Ut=t;Ut!==null;)if(t=Ut,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Ut=e;else for(;Ut!==null;){switch(t=Ut,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++)d=e[a],d.ref.impl=d.nextImpl;break;case 11:case 15:break;case 1:if((e&1024)!==0&&p!==null){e=void 0,a=t,d=p.memoizedProps,p=p.memoizedState,r=a.stateNode;try{var ve=La(a.type,d);e=r.getSnapshotBeforeUpdate(ve,p),r.__reactInternalSnapshotBeforeUpdate=e}catch(Se){tt(a,a.return,Se)}}break;case 3:if((e&1024)!==0){if(e=t.stateNode.containerInfo,a=e.nodeType,a===9)Ud(e);else if(a===1)switch(e.nodeName){case"HEAD":case"HTML":case"BODY":Ud(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,Ut=e;break}Ut=t.return}}function Dg(e,t,a){var r=a.flags;switch(a.tag){case 0:case 11:case 15:Ss(e,a),r&4&&zo(5,a);break;case 1:if(Ss(e,a),r&4)if(e=a.stateNode,t===null)try{e.componentDidMount()}catch(x){tt(a,a.return,x)}else{var d=La(a.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(d,t,e.__reactInternalSnapshotBeforeUpdate)}catch(x){tt(a,a.return,x)}}r&64&&wg(a),r&512&&Po(a,a.return);break;case 3:if(Ss(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{hh(e,t)}catch(x){tt(a,a.return,x)}}break;case 27:t===null&&r&4&&Eg(a);case 26:case 5:Ss(e,a),t===null&&r&4&&jg(a),r&512&&Po(a,a.return);break;case 12:Ss(e,a);break;case 31:Ss(e,a),r&4&&Og(e,a);break;case 13:Ss(e,a),r&4&&Ig(e,a),r&64&&(e=a.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(a=aS.bind(null,a),kS(e,a))));break;case 22:if(r=a.memoizedState!==null||_s,!r){t=t!==null&&t.memoizedState!==null||Et,d=_s;var p=Et;_s=r,(Et=t)&&!p?Ts(e,a,(a.subtreeFlags&8772)!==0):Ss(e,a),_s=d,Et=p}break;case 30:break;default:Ss(e,a)}}function Rg(e){var t=e.alternate;t!==null&&(e.alternate=null,Rg(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&qc(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 xs(e,t,a){for(a=a.child;a!==null;)Mg(e,t,a),a=a.sibling}function Mg(e,t,a){if(Yt&&typeof Yt.onCommitFiberUnmount=="function")try{Yt.onCommitFiberUnmount(Us,a)}catch{}switch(a.tag){case 26:Et||Qn(a,t),xs(e,t,a),a.memoizedState?a.memoizedState.count--:a.stateNode&&(a=a.stateNode,a.parentNode.removeChild(a));break;case 27:Et||Qn(a,t);var r=mt,d=an;sa(a.type)&&(mt=a.stateNode,an=!1),xs(e,t,a),Yo(a.stateNode),mt=r,an=d;break;case 5:Et||Qn(a,t);case 6:if(r=mt,d=an,mt=null,xs(e,t,a),mt=r,an=d,mt!==null)if(an)try{(mt.nodeType===9?mt.body:mt.nodeName==="HTML"?mt.ownerDocument.body:mt).removeChild(a.stateNode)}catch(p){tt(a,t,p)}else try{mt.removeChild(a.stateNode)}catch(p){tt(a,t,p)}break;case 18:mt!==null&&(an?(e=mt,wv(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,a.stateNode),Pi(e)):wv(mt,a.stateNode));break;case 4:r=mt,d=an,mt=a.stateNode.containerInfo,an=!0,xs(e,t,a),mt=r,an=d;break;case 0:case 11:case 14:case 15:Js(2,a,t),Et||Js(4,a,t),xs(e,t,a);break;case 1:Et||(Qn(a,t),r=a.stateNode,typeof r.componentWillUnmount=="function"&&Ng(a,t,r)),xs(e,t,a);break;case 21:xs(e,t,a);break;case 22:Et=(r=Et)||a.memoizedState!==null,xs(e,t,a),Et=r;break;default:xs(e,t,a)}}function Og(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{Pi(e)}catch(a){tt(t,t.return,a)}}}function Ig(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{Pi(e)}catch(a){tt(t,t.return,a)}}function J1(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return t===null&&(t=e.stateNode=new Ag),t;case 22:return e=e.stateNode,t=e._retryCache,t===null&&(t=e._retryCache=new Ag),t;default:throw Error(o(435,e.tag))}}function Tl(e,t){var a=J1(e);t.forEach(function(r){if(!a.has(r)){a.add(r);var d=iS.bind(null,e,r);r.then(d,d)}})}function on(e,t){var a=t.deletions;if(a!==null)for(var r=0;r<a.length;r++){var d=a[r],p=e,x=t,w=x;e:for(;w!==null;){switch(w.tag){case 27:if(sa(w.type)){mt=w.stateNode,an=!1;break e}break;case 5:mt=w.stateNode,an=!1;break e;case 3:case 4:mt=w.stateNode.containerInfo,an=!0;break e}w=w.return}if(mt===null)throw Error(o(160));Mg(p,x,d),mt=null,an=!1,p=d.alternate,p!==null&&(p.return=null),d.return=null}if(t.subtreeFlags&13886)for(t=t.child;t!==null;)Lg(t,e),t=t.sibling}var qn=null;function Lg(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&&(Js(3,e,e.return),zo(3,e),Js(5,e,e.return));break;case 1:on(t,e),rn(e),r&512&&(Et||a===null||Qn(a,a.return)),r&64&&_s&&(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 d=qn;if(on(t,e),rn(e),r&512&&(Et||a===null||Qn(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,d=d.ownerDocument||d;t:switch(r){case"title":p=d.getElementsByTagName("title")[0],(!p||p[po]||p[Vt]||p.namespaceURI==="http://www.w3.org/2000/svg"||p.hasAttribute("itemprop"))&&(p=d.createElement(r),d.head.insertBefore(p,d.querySelector("head > title"))),$t(p,r,a),p[Vt]=e,Bt(p),r=p;break e;case"link":var x=Lv("link","href",d).get(r+(a.href||""));if(x){for(var w=0;w<x.length;w++)if(p=x[w],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(w,1);break t}}p=d.createElement(r),$t(p,r,a),d.head.appendChild(p);break;case"meta":if(x=Lv("meta","content",d).get(r+(a.content||""))){for(w=0;w<x.length;w++)if(p=x[w],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(w,1);break t}}p=d.createElement(r),$t(p,r,a),d.head.appendChild(p);break;default:throw Error(o(468,r))}p[Vt]=e,Bt(p),r=p}e.stateNode=r}else Bv(d,e.type,e.stateNode);else e.stateNode=Iv(d,r,e.memoizedProps);else p!==r?(p===null?a.stateNode!==null&&(a=a.stateNode,a.parentNode.removeChild(a)):p.count--,r===null?Bv(d,e.type,e.stateNode):Iv(d,r,e.memoizedProps)):r===null&&e.stateNode!==null&&ud(e,e.memoizedProps,a.memoizedProps)}break;case 27:on(t,e),rn(e),r&512&&(Et||a===null||Qn(a,a.return)),a!==null&&r&4&&ud(e,e.memoizedProps,a.memoizedProps);break;case 5:if(on(t,e),rn(e),r&512&&(Et||a===null||Qn(a,a.return)),e.flags&32){d=e.stateNode;try{ci(d,"")}catch(ve){tt(e,e.return,ve)}}r&4&&e.stateNode!=null&&(d=e.memoizedProps,ud(e,d,a!==null?a.memoizedProps:d)),r&1024&&(pd=!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(ve){tt(e,e.return,ve)}}break;case 3:if(zl=null,d=qn,qn=Bl(t.containerInfo),on(t,e),qn=d,rn(e),r&4&&a!==null&&a.memoizedState.isDehydrated)try{Pi(t.containerInfo)}catch(ve){tt(e,e.return,ve)}pd&&(pd=!1,Bg(e));break;case 4:r=qn,qn=Bl(e.stateNode.containerInfo),on(t,e),rn(e),qn=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,Tl(e,r)));break;case 13:on(t,e),rn(e),e.child.flags&8192&&e.memoizedState!==null!=(a!==null&&a.memoizedState!==null)&&(wl=Kt()),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,Tl(e,r)));break;case 22:d=e.memoizedState!==null;var D=a!==null&&a.memoizedState!==null,P=_s,K=Et;if(_s=P||d,Et=K||D,on(t,e),Et=K,_s=P,rn(e),r&8192)e:for(t=e.stateNode,t._visibility=d?t._visibility&-2:t._visibility|1,d&&(a===null||D||_s||Et||Ba(e)),a=null,t=e;;){if(t.tag===5||t.tag===26){if(a===null){D=a=t;try{if(p=D.stateNode,d)x=p.style,typeof x.setProperty=="function"?x.setProperty("display","none","important"):x.display="none";else{w=D.stateNode;var J=D.memoizedProps.style,q=J!=null&&J.hasOwnProperty("display")?J.display:null;w.style.display=q==null||typeof q=="boolean"?"":(""+q).trim()}}catch(ve){tt(D,D.return,ve)}}}else if(t.tag===6){if(a===null){D=t;try{D.stateNode.nodeValue=d?"":D.memoizedProps}catch(ve){tt(D,D.return,ve)}}}else if(t.tag===18){if(a===null){D=t;try{var $=D.stateNode;d?Nv($,!0):Nv(D.stateNode,!1)}catch(ve){tt(D,D.return,ve)}}}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,Tl(e,a))));break;case 19:on(t,e),rn(e),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,Tl(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(Cg(r)){a=r;break}r=r.return}if(a==null)throw Error(o(160));switch(a.tag){case 27:var d=a.stateNode,p=dd(e);Sl(e,p,d);break;case 5:var x=a.stateNode;a.flags&32&&(ci(x,""),a.flags&=-33);var w=dd(e);Sl(e,w,x);break;case 3:case 4:var D=a.stateNode.containerInfo,P=dd(e);fd(e,P,D);break;default:throw Error(o(161))}}catch(K){tt(e,e.return,K)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function Bg(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;Bg(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),e=e.sibling}}function Ss(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)Dg(e,t.alternate,t),t=t.sibling}function Ba(e){for(e=e.child;e!==null;){var t=e;switch(t.tag){case 0:case 11:case 14:case 15:Js(4,t,t.return),Ba(t);break;case 1:Qn(t,t.return);var a=t.stateNode;typeof a.componentWillUnmount=="function"&&Ng(t,t.return,a),Ba(t);break;case 27:Yo(t.stateNode);case 26:case 5:Qn(t,t.return),Ba(t);break;case 22:t.memoizedState===null&&Ba(t);break;case 30:Ba(t);break;default:Ba(t)}e=e.sibling}}function Ts(e,t,a){for(a=a&&(t.subtreeFlags&8772)!==0,t=t.child;t!==null;){var r=t.alternate,d=e,p=t,x=p.flags;switch(p.tag){case 0:case 11:case 15:Ts(d,p,a),zo(4,p);break;case 1:if(Ts(d,p,a),r=p,d=r.stateNode,typeof d.componentDidMount=="function")try{d.componentDidMount()}catch(P){tt(r,r.return,P)}if(r=p,d=r.updateQueue,d!==null){var w=r.stateNode;try{var D=d.shared.hiddenCallbacks;if(D!==null)for(d.shared.hiddenCallbacks=null,d=0;d<D.length;d++)mh(D[d],w)}catch(P){tt(r,r.return,P)}}a&&x&64&&wg(p),Po(p,p.return);break;case 27:Eg(p);case 26:case 5:Ts(d,p,a),a&&r===null&&x&4&&jg(p),Po(p,p.return);break;case 12:Ts(d,p,a);break;case 31:Ts(d,p,a),a&&x&4&&Og(d,p);break;case 13:Ts(d,p,a),a&&x&4&&Ig(d,p);break;case 22:p.memoizedState===null&&Ts(d,p,a),Po(p,p.return);break;case 30:break;default:Ts(d,p,a)}t=t.sibling}}function md(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&&No(a))}function hd(e,t){e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&No(e))}function Gn(e,t,a,r){if(t.subtreeFlags&10256)for(t=t.child;t!==null;)Ug(e,t,a,r),t=t.sibling}function Ug(e,t,a,r){var d=t.flags;switch(t.tag){case 0:case 11:case 15:Gn(e,t,a,r),d&2048&&zo(9,t);break;case 1:Gn(e,t,a,r);break;case 3:Gn(e,t,a,r),d&2048&&(e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&No(e)));break;case 12:if(d&2048){Gn(e,t,a,r),e=t.stateNode;try{var p=t.memoizedProps,x=p.id,w=p.onPostCommit;typeof w=="function"&&w(x,t.alternate===null?"mount":"update",e.passiveEffectDuration,-0)}catch(D){tt(t,t.return,D)}}else Gn(e,t,a,r);break;case 31:Gn(e,t,a,r);break;case 13:Gn(e,t,a,r);break;case 23:break;case 22:p=t.stateNode,x=t.alternate,t.memoizedState!==null?p._visibility&2?Gn(e,t,a,r):Vo(e,t):p._visibility&2?Gn(e,t,a,r):(p._visibility|=2,Ei(e,t,a,r,(t.subtreeFlags&10256)!==0||!1)),d&2048&&md(x,t);break;case 24:Gn(e,t,a,r),d&2048&&hd(t.alternate,t);break;default:Gn(e,t,a,r)}}function Ei(e,t,a,r,d){for(d=d&&((t.subtreeFlags&10256)!==0||!1),t=t.child;t!==null;){var p=e,x=t,w=a,D=r,P=x.flags;switch(x.tag){case 0:case 11:case 15:Ei(p,x,w,D,d),zo(8,x);break;case 23:break;case 22:var K=x.stateNode;x.memoizedState!==null?K._visibility&2?Ei(p,x,w,D,d):Vo(p,x):(K._visibility|=2,Ei(p,x,w,D,d)),d&&P&2048&&md(x.alternate,x);break;case 24:Ei(p,x,w,D,d),d&&P&2048&&hd(x.alternate,x);break;default:Ei(p,x,w,D,d)}t=t.sibling}}function Vo(e,t){if(t.subtreeFlags&10256)for(t=t.child;t!==null;){var a=e,r=t,d=r.flags;switch(r.tag){case 22:Vo(a,r),d&2048&&md(r.alternate,r);break;case 24:Vo(a,r),d&2048&&hd(r.alternate,r);break;default:Vo(a,r)}t=t.sibling}}var Ho=8192;function Ai(e,t,a){if(e.subtreeFlags&Ho)for(e=e.child;e!==null;)zg(e,t,a),e=e.sibling}function zg(e,t,a){switch(e.tag){case 26:Ai(e,t,a),e.flags&Ho&&e.memoizedState!==null&&LS(a,qn,e.memoizedState,e.memoizedProps);break;case 5:Ai(e,t,a);break;case 3:case 4:var r=qn;qn=Bl(e.stateNode.containerInfo),Ai(e,t,a),qn=r;break;case 22:e.memoizedState===null&&(r=e.alternate,r!==null&&r.memoizedState!==null?(r=Ho,Ho=16777216,Ai(e,t,a),Ho=r):Ai(e,t,a));break;default:Ai(e,t,a)}}function Pg(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];Ut=r,Hg(r,e)}Pg(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)Vg(e),e=e.sibling}function Vg(e){switch(e.tag){case 0:case 11:case 15:qo(e),e.flags&2048&&Js(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,kl(e)):qo(e);break;default:qo(e)}}function kl(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];Ut=r,Hg(r,e)}Pg(e)}for(e=e.child;e!==null;){switch(t=e,t.tag){case 0:case 11:case 15:Js(8,t,t.return),kl(t);break;case 22:a=t.stateNode,a._visibility&2&&(a._visibility&=-3,kl(t));break;default:kl(t)}e=e.sibling}}function Hg(e,t){for(;Ut!==null;){var a=Ut;switch(a.tag){case 0:case 11:case 15:Js(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:No(a.memoizedState.cache)}if(r=a.child,r!==null)r.return=a,Ut=r;else e:for(a=e;Ut!==null;){r=Ut;var d=r.sibling,p=r.return;if(Rg(r),r===a){Ut=null;break e}if(d!==null){d.return=p,Ut=d;break e}Ut=p}}}var W1={getCacheForType:function(e){var t=qt(Nt),a=t.data.get(e);return a===void 0&&(a=e(),t.data.set(e,a)),a},cacheSignal:function(){return qt(Nt).controller.signal}},X1=typeof WeakMap=="function"?WeakMap:Map,Xe=0,ot=null,Be=null,Pe=0,et=0,gn=null,Ws=!1,Di=!1,gd=!1,ks=0,bt=0,Xs=0,Ua=0,vd=0,vn=0,Ri=0,Go=null,ln=null,yd=!1,wl=0,qg=0,Nl=1/0,jl=null,Qs=null,Mt=0,ea=null,Mi=null,ws=0,bd=0,_d=null,Gg=null,$o=0,xd=null;function yn(){return(Xe&2)!==0&&Pe!==0?Pe&-Pe:O.T!==null?jd():om()}function $g(){if(vn===0)if((Pe&536870912)===0||Ge){var e=ie;ie<<=1,(ie&3932160)===0&&(ie=262144),vn=e}else vn=536870912;return e=mn.current,e!==null&&(e.flags|=32),vn}function cn(e,t,a){(e===ot&&(et===2||et===9)||e.cancelPendingCommit!==null)&&(Oi(e,0),ta(e,Pe,vn,!1)),qe(e,a),((Xe&2)===0||e!==ot)&&(e===ot&&((Xe&2)===0&&(Ua|=a),bt===4&&ta(e,Pe,vn,!1)),es(e))}function Zg(e,t,a){if((Xe&6)!==0)throw Error(o(327));var r=!a&&(t&127)===0&&(t&e.expiredLanes)===0||be(e,t),d=r?tS(e,t):Td(e,t,!0),p=r;do{if(d===0){Di&&!r&&ta(e,t,0,!1);break}else{if(a=e.current.alternate,p&&!Q1(a)){d=Td(e,t,!1),p=!1;continue}if(d===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 w=e;d=Go;var D=w.current.memoizedState.isDehydrated;if(D&&(Oi(w,x).flags|=256),x=Td(w,x,!1),x!==2){if(gd&&!D){w.errorRecoveryDisabledLanes|=p,Ua|=p,d=4;break e}p=ln,ln=d,p!==null&&(ln===null?ln=p:ln.push.apply(ln,p))}d=x}if(p=!1,d!==2)continue}}if(d===1){Oi(e,0),ta(e,t,0,!0);break}e:{switch(r=e,p=d,p){case 0:case 1:throw Error(o(345));case 4:if((t&4194048)!==t)break;case 6:ta(r,t,vn,!Ws);break e;case 2:ln=null;break;case 3:case 5:break;default:throw Error(o(329))}if((t&62914560)===t&&(d=wl+300-Kt(),10<d)){if(ta(r,t,vn,!Ws),He(r,0,!0)!==0)break e;ws=t,r.timeoutHandle=Tv(Fg.bind(null,r,a,ln,jl,yd,t,vn,Ua,Ri,Ws,p,"Throttled",-0,0),d);break e}Fg(r,a,ln,jl,yd,t,vn,Ua,Ri,Ws,p,null,-0,0)}}break}while(!0);es(e)}function Fg(e,t,a,r,d,p,x,w,D,P,K,J,q,$){if(e.timeoutHandle=-1,J=t.subtreeFlags,J&8192||(J&16785408)===16785408){J={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:us},zg(t,p,J);var ve=(p&62914560)===p?wl-Kt():(p&4194048)===p?qg-Kt():0;if(ve=BS(J,ve),ve!==null){ws=p,e.cancelPendingCommit=ve(tv.bind(null,e,t,p,a,r,d,x,w,D,K,J,null,q,$)),ta(e,p,x,!P);return}}tv(e,t,p,a,r,d,x,w,D)}function Q1(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 d=a[r],p=d.getSnapshot;d=d.value;try{if(!fn(p(),d))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 ta(e,t,a,r){t&=~vd,t&=~Ua,e.suspendedLanes|=t,e.pingedLanes&=~t,r&&(e.warmLanes|=t),r=e.expirationTimes;for(var d=t;0<d;){var p=31-Jt(d),x=1<<p;r[p]=-1,d&=~x}a!==0&&Pt(e,a,t)}function Cl(){return(Xe&6)===0?(Zo(0),!1):!0}function Sd(){if(Be!==null){if(et===0)var e=Be.return;else e=Be,ms=Ea=null,Uu(e),ki=null,Co=0,e=Be;for(;e!==null;)kg(e.alternate,e),e=e.return;Be=null}}function Oi(e,t){var a=e.timeoutHandle;a!==-1&&(e.timeoutHandle=-1,bS(a)),a=e.cancelPendingCommit,a!==null&&(e.cancelPendingCommit=null,a()),ws=0,Sd(),ot=e,Be=a=fs(e.current,null),Pe=t,et=0,gn=null,Ws=!1,Di=be(e,t),gd=!1,Ri=vn=vd=Ua=Xs=bt=0,ln=Go=null,yd=!1,(t&8)!==0&&(t|=t&32);var r=e.entangledLanes;if(r!==0)for(e=e.entanglements,r&=t;0<r;){var d=31-Jt(r),p=1<<d;t|=e[d],r&=~p}return ks=t,Yr(),a}function Kg(e,t){De=null,O.H=Lo,t===Ti||t===sl?(t=uh(),et=3):t===Nu?(t=uh(),et=4):et=t===ed?8:t!==null&&typeof t=="object"&&typeof t.then=="function"?6:1,gn=t,Be===null&&(bt=1,vl(e,jn(t,e.current)))}function Yg(){var e=mn.current;return e===null?!0:(Pe&4194048)===Pe?Dn===null:(Pe&62914560)===Pe||(Pe&536870912)!==0?e===Dn:!1}function Jg(){var e=O.H;return O.H=Lo,e===null?Lo:e}function Wg(){var e=O.A;return O.A=W1,e}function El(){bt=4,Ws||(Pe&4194048)!==Pe&&mn.current!==null||(Di=!0),(Xs&134217727)===0&&(Ua&134217727)===0||ot===null||ta(ot,Pe,vn,!1)}function Td(e,t,a){var r=Xe;Xe|=2;var d=Jg(),p=Wg();(ot!==e||Pe!==t)&&(jl=null,Oi(e,t)),t=!1;var x=bt;e:do try{if(et!==0&&Be!==null){var w=Be,D=gn;switch(et){case 8:Sd(),x=6;break e;case 3:case 2:case 9:case 6:mn.current===null&&(t=!0);var P=et;if(et=0,gn=null,Ii(e,w,D,P),a&&Di){x=0;break e}break;default:P=et,et=0,gn=null,Ii(e,w,D,P)}}eS(),x=bt;break}catch(K){Kg(e,K)}while(!0);return t&&e.shellSuspendCounter++,ms=Ea=null,Xe=r,O.H=d,O.A=p,Be===null&&(ot=null,Pe=0,Yr()),x}function eS(){for(;Be!==null;)Xg(Be)}function tS(e,t){var a=Xe;Xe|=2;var r=Jg(),d=Wg();ot!==e||Pe!==t?(jl=null,Nl=Kt()+500,Oi(e,t)):Di=be(e,t);e:do try{if(et!==0&&Be!==null){t=Be;var p=gn;t:switch(et){case 1:et=0,gn=null,Ii(e,t,p,1);break;case 2:case 9:if(lh(p)){et=0,gn=null,Qg(t);break}t=function(){et!==2&&et!==9||ot!==e||(et=7),es(e)},p.then(t,t);break e;case 3:et=7;break e;case 4:et=5;break e;case 7:lh(p)?(et=0,gn=null,Qg(t)):(et=0,gn=null,Ii(e,t,p,7));break;case 5:var x=null;switch(Be.tag){case 26:x=Be.memoizedState;case 5:case 27:var w=Be;if(x?Uv(x):w.stateNode.complete){et=0,gn=null;var D=w.sibling;if(D!==null)Be=D;else{var P=w.return;P!==null?(Be=P,Al(P)):Be=null}break t}}et=0,gn=null,Ii(e,t,p,5);break;case 6:et=0,gn=null,Ii(e,t,p,6);break;case 8:Sd(),bt=6;break e;default:throw Error(o(462))}}nS();break}catch(K){Kg(e,K)}while(!0);return ms=Ea=null,O.H=r,O.A=d,Xe=a,Be!==null?0:(ot=null,Pe=0,Yr(),bt)}function nS(){for(;Be!==null&&!Me();)Xg(Be)}function Xg(e){var t=Sg(e.alternate,e,ks);e.memoizedProps=e.pendingProps,t===null?Al(e):Be=t}function Qg(e){var t=e,a=t.alternate;switch(t.tag){case 15:case 0:t=gg(a,t,t.pendingProps,t.type,void 0,Pe);break;case 11:t=gg(a,t,t.pendingProps,t.type.render,t.ref,Pe);break;case 5:Uu(t);default:kg(a,t),t=Be=Wm(t,ks),t=Sg(a,t,ks)}e.memoizedProps=e.pendingProps,t===null?Al(e):Be=t}function Ii(e,t,a,r){ms=Ea=null,Uu(t),ki=null,Co=0;var d=t.return;try{if(G1(e,d,t,a,Pe)){bt=1,vl(e,jn(a,e.current)),Be=null;return}}catch(p){if(d!==null)throw Be=d,p;bt=1,vl(e,jn(a,e.current)),Be=null;return}t.flags&32768?(Ge||r===1?e=!0:Di||(Pe&536870912)!==0?e=!1:(Ws=e=!0,(r===2||r===9||r===3||r===6)&&(r=mn.current,r!==null&&r.tag===13&&(r.flags|=16384))),ev(t,e)):Al(t)}function Al(e){var t=e;do{if((t.flags&32768)!==0){ev(t,Ws);return}e=t.return;var a=F1(t.alternate,t,ks);if(a!==null){Be=a;return}if(t=t.sibling,t!==null){Be=t;return}Be=t=e}while(t!==null);bt===0&&(bt=5)}function ev(e,t){do{var a=K1(e.alternate,e);if(a!==null){a.flags&=32767,Be=a;return}if(a=e.return,a!==null&&(a.flags|=32768,a.subtreeFlags=0,a.deletions=null),!t&&(e=e.sibling,e!==null)){Be=e;return}Be=e=a}while(e!==null);bt=6,Be=null}function tv(e,t,a,r,d,p,x,w,D){e.cancelPendingCommit=null;do Dl();while(Mt!==0);if((Xe&6)!==0)throw Error(o(327));if(t!==null){if(t===e.current)throw Error(o(177));if(p=t.lanes|t.childLanes,p|=du,zt(e,a,p,x,w,D),e===ot&&(Be=ot=null,Pe=0),Mi=t,ea=e,ws=a,bd=p,_d=d,Gg=r,(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?(e.callbackNode=null,e.callbackPriority=0,oS(_a,function(){return ov(),null})):(e.callbackNode=null,e.callbackPriority=0),r=(t.flags&13878)!==0,(t.subtreeFlags&13878)!==0||r){r=O.T,O.T=null,d=G.p,G.p=2,x=Xe,Xe|=4;try{Y1(e,t,a)}finally{Xe=x,G.p=d,O.T=r}}Mt=1,nv(),sv(),av()}}function nv(){if(Mt===1){Mt=0;var e=ea,t=Mi,a=(t.flags&13878)!==0;if((t.subtreeFlags&13878)!==0||a){a=O.T,O.T=null;var r=G.p;G.p=2;var d=Xe;Xe|=4;try{Lg(t,e);var p=Id,x=Hm(e.containerInfo),w=p.focusedElem,D=p.selectionRange;if(x!==w&&w&&w.ownerDocument&&Vm(w.ownerDocument.documentElement,w)){if(D!==null&&ou(w)){var P=D.start,K=D.end;if(K===void 0&&(K=P),"selectionStart"in w)w.selectionStart=P,w.selectionEnd=Math.min(K,w.value.length);else{var J=w.ownerDocument||document,q=J&&J.defaultView||window;if(q.getSelection){var $=q.getSelection(),ve=w.textContent.length,Se=Math.min(D.start,ve),it=D.end===void 0?Se:Math.min(D.end,ve);!$.extend&&Se>it&&(x=it,it=Se,Se=x);var L=Pm(w,Se),M=Pm(w,it);if(L&&M&&($.rangeCount!==1||$.anchorNode!==L.node||$.anchorOffset!==L.offset||$.focusNode!==M.node||$.focusOffset!==M.offset)){var z=J.createRange();z.setStart(L.node,L.offset),$.removeAllRanges(),Se>it?($.addRange(z),$.extend(M.node,M.offset)):(z.setEnd(M.node,M.offset),$.addRange(z))}}}}for(J=[],$=w;$=$.parentNode;)$.nodeType===1&&J.push({element:$,left:$.scrollLeft,top:$.scrollTop});for(typeof w.focus=="function"&&w.focus(),w=0;w<J.length;w++){var Y=J[w];Y.element.scrollLeft=Y.left,Y.element.scrollTop=Y.top}}ql=!!Od,Id=Od=null}finally{Xe=d,G.p=r,O.T=a}}e.current=t,Mt=2}}function sv(){if(Mt===2){Mt=0;var e=ea,t=Mi,a=(t.flags&8772)!==0;if((t.subtreeFlags&8772)!==0||a){a=O.T,O.T=null;var r=G.p;G.p=2;var d=Xe;Xe|=4;try{Dg(e,t.alternate,t)}finally{Xe=d,G.p=r,O.T=a}}Mt=3}}function av(){if(Mt===4||Mt===3){Mt=0,Rt();var e=ea,t=Mi,a=ws,r=Gg;(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?Mt=5:(Mt=0,Mi=ea=null,iv(e,e.pendingLanes));var d=e.pendingLanes;if(d===0&&(Qs=null),xa(a),t=t.stateNode,Yt&&typeof Yt.onCommitFiberRoot=="function")try{Yt.onCommitFiberRoot(Us,t,void 0,(t.current.flags&128)===128)}catch{}if(r!==null){t=O.T,d=G.p,G.p=2,O.T=null;try{for(var p=e.onRecoverableError,x=0;x<r.length;x++){var w=r[x];p(w.value,{componentStack:w.stack})}}finally{O.T=t,G.p=d}}(ws&3)!==0&&Dl(),es(e),d=e.pendingLanes,(a&261930)!==0&&(d&42)!==0?e===xd?$o++:($o=0,xd=e):$o=0,Zo(0)}}function iv(e,t){(e.pooledCacheLanes&=t)===0&&(t=e.pooledCache,t!=null&&(e.pooledCache=null,No(t)))}function Dl(){return nv(),sv(),av(),ov()}function ov(){if(Mt!==5)return!1;var e=ea,t=bd;bd=0;var a=xa(ws),r=O.T,d=G.p;try{G.p=32>a?32:a,O.T=null,a=_d,_d=null;var p=ea,x=ws;if(Mt=0,Mi=ea=null,ws=0,(Xe&6)!==0)throw Error(o(331));var w=Xe;if(Xe|=4,Vg(p.current),Ug(p,p.current,x,a),Xe=w,Zo(0,!1),Yt&&typeof Yt.onPostCommitFiberRoot=="function")try{Yt.onPostCommitFiberRoot(Us,p)}catch{}return!0}finally{G.p=d,O.T=r,iv(e,t)}}function rv(e,t,a){t=jn(a,t),t=Qu(e.stateNode,t,2),e=Fs(e,t,2),e!==null&&(qe(e,2),es(e))}function tt(e,t,a){if(e.tag===3)rv(e,e,a);else for(;t!==null;){if(t.tag===3){rv(t,e,a);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof r.componentDidCatch=="function"&&(Qs===null||!Qs.has(r))){e=jn(a,e),a=lg(2),r=Fs(t,a,2),r!==null&&(cg(a,r,t,e),qe(r,2),es(r));break}}t=t.return}}function kd(e,t,a){var r=e.pingCache;if(r===null){r=e.pingCache=new X1;var d=new Set;r.set(t,d)}else d=r.get(t),d===void 0&&(d=new Set,r.set(t,d));d.has(a)||(gd=!0,d.add(a),e=sS.bind(null,e,t,a),t.then(e,e))}function sS(e,t,a){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&a,e.warmLanes&=~a,ot===e&&(Pe&a)===a&&(bt===4||bt===3&&(Pe&62914560)===Pe&&300>Kt()-wl?(Xe&2)===0&&Oi(e,0):vd|=a,Ri===Pe&&(Ri=0)),es(e)}function lv(e,t){t===0&&(t=Ke()),e=Na(e,t),e!==null&&(qe(e,t),es(e))}function aS(e){var t=e.memoizedState,a=0;t!==null&&(a=t.retryLane),lv(e,a)}function iS(e,t){var a=0;switch(e.tag){case 31:case 13:var r=e.stateNode,d=e.memoizedState;d!==null&&(a=d.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),lv(e,a)}function oS(e,t){return Bs(e,t)}var Rl=null,Li=null,wd=!1,Ml=!1,Nd=!1,na=0;function es(e){e!==Li&&e.next===null&&(Li===null?Rl=Li=e:Li=Li.next=e),Ml=!0,wd||(wd=!0,lS())}function Zo(e,t){if(!Nd&&Ml){Nd=!0;do for(var a=!1,r=Rl;r!==null;){if(e!==0){var d=r.pendingLanes;if(d===0)var p=0;else{var x=r.suspendedLanes,w=r.pingedLanes;p=(1<<31-Jt(42|e)+1)-1,p&=d&~(x&~w),p=p&201326741?p&201326741|1:p?p|2:0}p!==0&&(a=!0,fv(r,p))}else p=Pe,p=He(r,r===ot?p:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),(p&3)===0||be(r,p)||(a=!0,fv(r,p));r=r.next}while(a);Nd=!1}}function rS(){cv()}function cv(){Ml=wd=!1;var e=0;na!==0&&yS()&&(e=na);for(var t=Kt(),a=null,r=Rl;r!==null;){var d=r.next,p=uv(r,t);p===0?(r.next=null,a===null?Rl=d:a.next=d,d===null&&(Li=a)):(a=r,(e!==0||(p&3)!==0)&&(Ml=!0)),r=d}Mt!==0&&Mt!==5||Zo(e),na!==0&&(na=0)}function uv(e,t){for(var a=e.suspendedLanes,r=e.pingedLanes,d=e.expirationTimes,p=e.pendingLanes&-62914561;0<p;){var x=31-Jt(p),w=1<<x,D=d[x];D===-1?((w&a)===0||(w&r)!==0)&&(d[x]=Oe(w,t)):D<=t&&(e.expiredLanes|=w),p&=~w}if(t=ot,a=Pe,a=He(e,e===t?a:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r=e.callbackNode,a===0||e===t&&(et===2||et===9)||e.cancelPendingCommit!==null)return r!==null&&r!==null&&dn(r),e.callbackNode=null,e.callbackPriority=0;if((a&3)===0||be(e,a)){if(t=a&-a,t===e.callbackPriority)return t;switch(r!==null&&dn(r),xa(a)){case 2:case 8:a=uo;break;case 32:a=_a;break;case 268435456:a=fo;break;default:a=_a}return r=dv.bind(null,e),a=Bs(a,r),e.callbackPriority=t,e.callbackNode=a,t}return r!==null&&r!==null&&dn(r),e.callbackPriority=2,e.callbackNode=null,2}function dv(e,t){if(Mt!==0&&Mt!==5)return e.callbackNode=null,e.callbackPriority=0,null;var a=e.callbackNode;if(Dl()&&e.callbackNode!==a)return null;var r=Pe;return r=He(e,e===ot?r:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r===0?null:(Zg(e,r,t),uv(e,Kt()),e.callbackNode!=null&&e.callbackNode===a?dv.bind(null,e):null)}function fv(e,t){if(Dl())return null;Zg(e,t,!0)}function lS(){_S(function(){(Xe&6)!==0?Bs(co,rS):cv()})}function jd(){if(na===0){var e=xi;e===0&&(e=te,te<<=1,(te&261888)===0&&(te=256)),na=e}return na}function pv(e){return e==null||typeof e=="symbol"||typeof e=="boolean"?null:typeof e=="function"?e:Vr(""+e)}function mv(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 cS(e,t,a,r,d){if(t==="submit"&&a&&a.stateNode===d){var p=pv((d[nn]||null).action),x=r.submitter;x&&(t=(t=x[nn]||null)?pv(t.formAction):x.getAttribute("formAction"),t!==null&&(p=t,x=null));var w=new $r("action","action",null,r,d);e.push({event:w,listeners:[{instance:null,listener:function(){if(r.defaultPrevented){if(na!==0){var D=x?mv(d,x):new FormData(d);Fu(a,{pending:!0,data:D,method:d.method,action:p},null,D)}}else typeof p=="function"&&(w.preventDefault(),D=x?mv(d,x):new FormData(d),Fu(a,{pending:!0,data:D,method:d.method,action:p},p,D))},currentTarget:d}]})}}for(var Cd=0;Cd<uu.length;Cd++){var Ed=uu[Cd],uS=Ed.toLowerCase(),dS=Ed[0].toUpperCase()+Ed.slice(1);Hn(uS,"on"+dS)}Hn($m,"onAnimationEnd"),Hn(Zm,"onAnimationIteration"),Hn(Fm,"onAnimationStart"),Hn("dblclick","onDoubleClick"),Hn("focusin","onFocus"),Hn("focusout","onBlur"),Hn(j1,"onTransitionRun"),Hn(C1,"onTransitionStart"),Hn(E1,"onTransitionCancel"),Hn(Km,"onTransitionEnd"),ri("onMouseEnter",["mouseout","mouseover"]),ri("onMouseLeave",["mouseout","mouseover"]),ri("onPointerEnter",["pointerout","pointerover"]),ri("onPointerLeave",["pointerout","pointerover"]),Sa("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),Sa("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),Sa("onBeforeInput",["compositionend","keypress","textInput","paste"]),Sa("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),Sa("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),Sa("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Fo="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(" "),fS=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(Fo));function hv(e,t){t=(t&4)!==0;for(var a=0;a<e.length;a++){var r=e[a],d=r.event;r=r.listeners;e:{var p=void 0;if(t)for(var x=r.length-1;0<=x;x--){var w=r[x],D=w.instance,P=w.currentTarget;if(w=w.listener,D!==p&&d.isPropagationStopped())break e;p=w,d.currentTarget=P;try{p(d)}catch(K){Kr(K)}d.currentTarget=null,p=D}else for(x=0;x<r.length;x++){if(w=r[x],D=w.instance,P=w.currentTarget,w=w.listener,D!==p&&d.isPropagationStopped())break e;p=w,d.currentTarget=P;try{p(d)}catch(K){Kr(K)}d.currentTarget=null,p=D}}}}function Ue(e,t){var a=t[Hc];a===void 0&&(a=t[Hc]=new Set);var r=e+"__bubble";a.has(r)||(gv(t,e,2,!1),a.add(r))}function Ad(e,t,a){var r=0;t&&(r|=4),gv(a,e,r,t)}var Ol="_reactListening"+Math.random().toString(36).slice(2);function Dd(e){if(!e[Ol]){e[Ol]=!0,cm.forEach(function(a){a!=="selectionchange"&&(fS.has(a)||Ad(a,!1,e),Ad(a,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[Ol]||(t[Ol]=!0,Ad("selectionchange",!1,t))}}function gv(e,t,a,r){switch($v(t)){case 2:var d=PS;break;case 8:d=VS;break;default:d=Zd}a=d.bind(null,t,a,e),d=void 0,!Wc||t!=="touchstart"&&t!=="touchmove"&&t!=="wheel"||(d=!0),r?d!==void 0?e.addEventListener(t,a,{capture:!0,passive:d}):e.addEventListener(t,a,!0):d!==void 0?e.addEventListener(t,a,{passive:d}):e.addEventListener(t,a,!1)}function Rd(e,t,a,r,d){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 w=r.stateNode.containerInfo;if(w===d)break;if(x===4)for(x=r.return;x!==null;){var D=x.tag;if((D===3||D===4)&&x.stateNode.containerInfo===d)return;x=x.return}for(;w!==null;){if(x=ai(w),x===null)return;if(D=x.tag,D===5||D===6||D===26||D===27){r=p=x;continue e}w=w.parentNode}}r=r.return}xm(function(){var P=p,K=Yc(a),J=[];e:{var q=Ym.get(e);if(q!==void 0){var $=$r,ve=e;switch(e){case"keypress":if(qr(a)===0)break e;case"keydown":case"keyup":$=i1;break;case"focusin":ve="focus",$=tu;break;case"focusout":ve="blur",$=tu;break;case"beforeblur":case"afterblur":$=tu;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":$=km;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":$=Fx;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":$=l1;break;case $m:case Zm:case Fm:$=Jx;break;case Km:$=u1;break;case"scroll":case"scrollend":$=$x;break;case"wheel":$=f1;break;case"copy":case"cut":case"paste":$=Xx;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":$=Nm;break;case"toggle":case"beforetoggle":$=m1}var Se=(t&4)!==0,it=!Se&&(e==="scroll"||e==="scrollend"),L=Se?q!==null?q+"Capture":null:q;Se=[];for(var M=P,z;M!==null;){var Y=M;if(z=Y.stateNode,Y=Y.tag,Y!==5&&Y!==26&&Y!==27||z===null||L===null||(Y=ho(M,L),Y!=null&&Se.push(Ko(M,Y,z))),it)break;M=M.return}0<Se.length&&(q=new $(q,ve,null,a,K),J.push({event:q,listeners:Se}))}}if((t&7)===0){e:{if(q=e==="mouseover"||e==="pointerover",$=e==="mouseout"||e==="pointerout",q&&a!==Kc&&(ve=a.relatedTarget||a.fromElement)&&(ai(ve)||ve[si]))break e;if(($||q)&&(q=K.window===K?K:(q=K.ownerDocument)?q.defaultView||q.parentWindow:window,$?(ve=a.relatedTarget||a.toElement,$=P,ve=ve?ai(ve):null,ve!==null&&(it=u(ve),Se=ve.tag,ve!==it||Se!==5&&Se!==27&&Se!==6)&&(ve=null)):($=null,ve=P),$!==ve)){if(Se=km,Y="onMouseLeave",L="onMouseEnter",M="mouse",(e==="pointerout"||e==="pointerover")&&(Se=Nm,Y="onPointerLeave",L="onPointerEnter",M="pointer"),it=$==null?q:mo($),z=ve==null?q:mo(ve),q=new Se(Y,M+"leave",$,a,K),q.target=it,q.relatedTarget=z,Y=null,ai(K)===P&&(Se=new Se(L,M+"enter",ve,a,K),Se.target=z,Se.relatedTarget=it,Y=Se),it=Y,$&&ve)t:{for(Se=pS,L=$,M=ve,z=0,Y=L;Y;Y=Se(Y))z++;Y=0;for(var _e=M;_e;_e=Se(_e))Y++;for(;0<z-Y;)L=Se(L),z--;for(;0<Y-z;)M=Se(M),Y--;for(;z--;){if(L===M||M!==null&&L===M.alternate){Se=L;break t}L=Se(L),M=Se(M)}Se=null}else Se=null;$!==null&&vv(J,q,$,Se,!1),ve!==null&&it!==null&&vv(J,it,ve,Se,!0)}}e:{if(q=P?mo(P):window,$=q.nodeName&&q.nodeName.toLowerCase(),$==="select"||$==="input"&&q.type==="file")var Ye=Om;else if(Rm(q))if(Im)Ye=k1;else{Ye=S1;var ye=x1}else $=q.nodeName,!$||$.toLowerCase()!=="input"||q.type!=="checkbox"&&q.type!=="radio"?P&&Fc(P.elementType)&&(Ye=Om):Ye=T1;if(Ye&&(Ye=Ye(e,P))){Mm(J,Ye,a,K);break e}ye&&ye(e,q,P),e==="focusout"&&P&&q.type==="number"&&P.memoizedProps.value!=null&&Zc(q,"number",q.value)}switch(ye=P?mo(P):window,e){case"focusin":(Rm(ye)||ye.contentEditable==="true")&&(pi=ye,ru=P,To=null);break;case"focusout":To=ru=pi=null;break;case"mousedown":lu=!0;break;case"contextmenu":case"mouseup":case"dragend":lu=!1,qm(J,a,K);break;case"selectionchange":if(N1)break;case"keydown":case"keyup":qm(J,a,K)}var Ie;if(su)e:{switch(e){case"compositionstart":var Ve="onCompositionStart";break e;case"compositionend":Ve="onCompositionEnd";break e;case"compositionupdate":Ve="onCompositionUpdate";break e}Ve=void 0}else fi?Am(e,a)&&(Ve="onCompositionEnd"):e==="keydown"&&a.keyCode===229&&(Ve="onCompositionStart");Ve&&(jm&&a.locale!=="ko"&&(fi||Ve!=="onCompositionStart"?Ve==="onCompositionEnd"&&fi&&(Ie=Sm()):(Ps=K,Xc="value"in Ps?Ps.value:Ps.textContent,fi=!0)),ye=Il(P,Ve),0<ye.length&&(Ve=new wm(Ve,e,null,a,K),J.push({event:Ve,listeners:ye}),Ie?Ve.data=Ie:(Ie=Dm(a),Ie!==null&&(Ve.data=Ie)))),(Ie=g1?v1(e,a):y1(e,a))&&(Ve=Il(P,"onBeforeInput"),0<Ve.length&&(ye=new wm("onBeforeInput","beforeinput",null,a,K),J.push({event:ye,listeners:Ve}),ye.data=Ie)),cS(J,e,P,a,K)}hv(J,t)})}function Ko(e,t,a){return{instance:e,listener:t,currentTarget:a}}function Il(e,t){for(var a=t+"Capture",r=[];e!==null;){var d=e,p=d.stateNode;if(d=d.tag,d!==5&&d!==26&&d!==27||p===null||(d=ho(e,a),d!=null&&r.unshift(Ko(e,d,p)),d=ho(e,t),d!=null&&r.push(Ko(e,d,p))),e.tag===3)return r;e=e.return}return[]}function pS(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function vv(e,t,a,r,d){for(var p=t._reactName,x=[];a!==null&&a!==r;){var w=a,D=w.alternate,P=w.stateNode;if(w=w.tag,D!==null&&D===r)break;w!==5&&w!==26&&w!==27||P===null||(D=P,d?(P=ho(a,p),P!=null&&x.unshift(Ko(a,P,D))):d||(P=ho(a,p),P!=null&&x.push(Ko(a,P,D)))),a=a.return}x.length!==0&&e.push({event:t,listeners:x})}var mS=/\r\n?/g,hS=/\u0000|\uFFFD/g;function yv(e){return(typeof e=="string"?e:""+e).replace(mS,`
|
|
26
|
-
`).replace(hS,"")}function bv(e,t){return t=yv(t),yv(e)===t}function at(e,t,a,r,d,p){switch(a){case"children":typeof r=="string"?t==="body"||t==="textarea"&&r===""||ci(e,r):(typeof r=="number"||typeof r=="bigint")&&t!=="body"&&ci(e,""+r);break;case"className":zr(e,"class",r);break;case"tabIndex":zr(e,"tabindex",r);break;case"dir":case"role":case"viewBox":case"width":case"height":zr(e,a,r);break;case"style":bm(e,r,p);break;case"data":if(t!=="object"){zr(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=Vr(""+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"&&at(e,t,"name",d.name,d,null),at(e,t,"formEncType",d.formEncType,d,null),at(e,t,"formMethod",d.formMethod,d,null),at(e,t,"formTarget",d.formTarget,d,null)):(at(e,t,"encType",d.encType,d,null),at(e,t,"method",d.method,d,null),at(e,t,"target",d.target,d,null)));if(r==null||typeof r=="symbol"||typeof r=="boolean"){e.removeAttribute(a);break}r=Vr(""+r),e.setAttribute(a,r);break;case"onClick":r!=null&&(e.onclick=us);break;case"onScroll":r!=null&&Ue("scroll",e);break;case"onScrollEnd":r!=null&&Ue("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(d.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=Vr(""+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":Ue("beforetoggle",e),Ue("toggle",e),Ur(e,"popover",r);break;case"xlinkActuate":cs(e,"http://www.w3.org/1999/xlink","xlink:actuate",r);break;case"xlinkArcrole":cs(e,"http://www.w3.org/1999/xlink","xlink:arcrole",r);break;case"xlinkRole":cs(e,"http://www.w3.org/1999/xlink","xlink:role",r);break;case"xlinkShow":cs(e,"http://www.w3.org/1999/xlink","xlink:show",r);break;case"xlinkTitle":cs(e,"http://www.w3.org/1999/xlink","xlink:title",r);break;case"xlinkType":cs(e,"http://www.w3.org/1999/xlink","xlink:type",r);break;case"xmlBase":cs(e,"http://www.w3.org/XML/1998/namespace","xml:base",r);break;case"xmlLang":cs(e,"http://www.w3.org/XML/1998/namespace","xml:lang",r);break;case"xmlSpace":cs(e,"http://www.w3.org/XML/1998/namespace","xml:space",r);break;case"is":Ur(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=qx.get(a)||a,Ur(e,a,r))}}function Md(e,t,a,r,d,p){switch(a){case"style":bm(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(d.children!=null)throw Error(o(60));e.innerHTML=a}}break;case"children":typeof r=="string"?ci(e,r):(typeof r=="number"||typeof r=="bigint")&&ci(e,""+r);break;case"onScroll":r!=null&&Ue("scroll",e);break;case"onScrollEnd":r!=null&&Ue("scrollend",e);break;case"onClick":r!=null&&(e.onclick=us);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!um.hasOwnProperty(a))e:{if(a[0]==="o"&&a[1]==="n"&&(d=a.endsWith("Capture"),t=a.slice(2,d?a.length-7:void 0),p=e[nn]||null,p=p!=null?p[a]:null,typeof p=="function"&&e.removeEventListener(t,p,d),typeof r=="function")){typeof p!="function"&&p!==null&&(a in e?e[a]=null:e.hasAttribute(a)&&e.removeAttribute(a)),e.addEventListener(t,r,d);break e}a in e?e[a]=r:r===!0?e.setAttribute(a,""):Ur(e,a,r)}}}function $t(e,t,a){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":Ue("error",e),Ue("load",e);var r=!1,d=!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":d=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(o(137,t));default:at(e,t,p,x,a,null)}}d&&at(e,t,"srcSet",a.srcSet,a,null),r&&at(e,t,"src",a.src,a,null);return;case"input":Ue("invalid",e);var w=p=x=d=null,D=null,P=null;for(r in a)if(a.hasOwnProperty(r)){var K=a[r];if(K!=null)switch(r){case"name":d=K;break;case"type":x=K;break;case"checked":D=K;break;case"defaultChecked":P=K;break;case"value":p=K;break;case"defaultValue":w=K;break;case"children":case"dangerouslySetInnerHTML":if(K!=null)throw Error(o(137,t));break;default:at(e,t,r,K,a,null)}}hm(e,p,w,D,P,x,d,!1);return;case"select":Ue("invalid",e),r=x=p=null;for(d in a)if(a.hasOwnProperty(d)&&(w=a[d],w!=null))switch(d){case"value":p=w;break;case"defaultValue":x=w;break;case"multiple":r=w;default:at(e,t,d,w,a,null)}t=p,a=x,e.multiple=!!r,t!=null?li(e,!!r,t,!1):a!=null&&li(e,!!r,a,!0);return;case"textarea":Ue("invalid",e),p=d=r=null;for(x in a)if(a.hasOwnProperty(x)&&(w=a[x],w!=null))switch(x){case"value":r=w;break;case"defaultValue":d=w;break;case"children":p=w;break;case"dangerouslySetInnerHTML":if(w!=null)throw Error(o(91));break;default:at(e,t,x,w,a,null)}vm(e,r,d,p);return;case"option":for(D in a)if(a.hasOwnProperty(D)&&(r=a[D],r!=null))switch(D){case"selected":e.selected=r&&typeof r!="function"&&typeof r!="symbol";break;default:at(e,t,D,r,a,null)}return;case"dialog":Ue("beforetoggle",e),Ue("toggle",e),Ue("cancel",e),Ue("close",e);break;case"iframe":case"object":Ue("load",e);break;case"video":case"audio":for(r=0;r<Fo.length;r++)Ue(Fo[r],e);break;case"image":Ue("error",e),Ue("load",e);break;case"details":Ue("toggle",e);break;case"embed":case"source":case"link":Ue("error",e),Ue("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(P in a)if(a.hasOwnProperty(P)&&(r=a[P],r!=null))switch(P){case"children":case"dangerouslySetInnerHTML":throw Error(o(137,t));default:at(e,t,P,r,a,null)}return;default:if(Fc(t)){for(K in a)a.hasOwnProperty(K)&&(r=a[K],r!==void 0&&Md(e,t,K,r,a,void 0));return}}for(w in a)a.hasOwnProperty(w)&&(r=a[w],r!=null&&at(e,t,w,r,a,null))}function gS(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 d=null,p=null,x=null,w=null,D=null,P=null,K=null;for($ in a){var J=a[$];if(a.hasOwnProperty($)&&J!=null)switch($){case"checked":break;case"value":break;case"defaultValue":D=J;default:r.hasOwnProperty($)||at(e,t,$,null,r,J)}}for(var q in r){var $=r[q];if(J=a[q],r.hasOwnProperty(q)&&($!=null||J!=null))switch(q){case"type":p=$;break;case"name":d=$;break;case"checked":P=$;break;case"defaultChecked":K=$;break;case"value":x=$;break;case"defaultValue":w=$;break;case"children":case"dangerouslySetInnerHTML":if($!=null)throw Error(o(137,t));break;default:$!==J&&at(e,t,q,$,r,J)}}$c(e,x,w,D,P,K,p,d);return;case"select":$=x=w=q=null;for(p in a)if(D=a[p],a.hasOwnProperty(p)&&D!=null)switch(p){case"value":break;case"multiple":$=D;default:r.hasOwnProperty(p)||at(e,t,p,null,r,D)}for(d in r)if(p=r[d],D=a[d],r.hasOwnProperty(d)&&(p!=null||D!=null))switch(d){case"value":q=p;break;case"defaultValue":w=p;break;case"multiple":x=p;default:p!==D&&at(e,t,d,p,r,D)}t=w,a=x,r=$,q!=null?li(e,!!a,q,!1):!!r!=!!a&&(t!=null?li(e,!!a,t,!0):li(e,!!a,a?[]:"",!1));return;case"textarea":$=q=null;for(w in a)if(d=a[w],a.hasOwnProperty(w)&&d!=null&&!r.hasOwnProperty(w))switch(w){case"value":break;case"children":break;default:at(e,t,w,null,r,d)}for(x in r)if(d=r[x],p=a[x],r.hasOwnProperty(x)&&(d!=null||p!=null))switch(x){case"value":q=d;break;case"defaultValue":$=d;break;case"children":break;case"dangerouslySetInnerHTML":if(d!=null)throw Error(o(91));break;default:d!==p&&at(e,t,x,d,r,p)}gm(e,q,$);return;case"option":for(var ve in a)if(q=a[ve],a.hasOwnProperty(ve)&&q!=null&&!r.hasOwnProperty(ve))switch(ve){case"selected":e.selected=!1;break;default:at(e,t,ve,null,r,q)}for(D in r)if(q=r[D],$=a[D],r.hasOwnProperty(D)&&q!==$&&(q!=null||$!=null))switch(D){case"selected":e.selected=q&&typeof q!="function"&&typeof q!="symbol";break;default:at(e,t,D,q,r,$)}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 Se in a)q=a[Se],a.hasOwnProperty(Se)&&q!=null&&!r.hasOwnProperty(Se)&&at(e,t,Se,null,r,q);for(P in r)if(q=r[P],$=a[P],r.hasOwnProperty(P)&&q!==$&&(q!=null||$!=null))switch(P){case"children":case"dangerouslySetInnerHTML":if(q!=null)throw Error(o(137,t));break;default:at(e,t,P,q,r,$)}return;default:if(Fc(t)){for(var it in a)q=a[it],a.hasOwnProperty(it)&&q!==void 0&&!r.hasOwnProperty(it)&&Md(e,t,it,void 0,r,q);for(K in r)q=r[K],$=a[K],!r.hasOwnProperty(K)||q===$||q===void 0&&$===void 0||Md(e,t,K,q,r,$);return}}for(var L in a)q=a[L],a.hasOwnProperty(L)&&q!=null&&!r.hasOwnProperty(L)&&at(e,t,L,null,r,q);for(J in r)q=r[J],$=a[J],!r.hasOwnProperty(J)||q===$||q==null&&$==null||at(e,t,J,q,r,$)}function _v(e){switch(e){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function vS(){if(typeof performance.getEntriesByType=="function"){for(var e=0,t=0,a=performance.getEntriesByType("resource"),r=0;r<a.length;r++){var d=a[r],p=d.transferSize,x=d.initiatorType,w=d.duration;if(p&&w&&_v(x)){for(x=0,w=d.responseEnd,r+=1;r<a.length;r++){var D=a[r],P=D.startTime;if(P>w)break;var K=D.transferSize,J=D.initiatorType;K&&_v(J)&&(D=D.responseEnd,x+=K*(D<w?1:(w-P)/(D-P)))}if(--r,t+=8*(p+x)/(d.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 Od=null,Id=null;function Ll(e){return e.nodeType===9?e:e.ownerDocument}function xv(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 Sv(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 Ld(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 Bd=null;function yS(){var e=window.event;return e&&e.type==="popstate"?e===Bd?!1:(Bd=e,!0):(Bd=null,!1)}var Tv=typeof setTimeout=="function"?setTimeout:void 0,bS=typeof clearTimeout=="function"?clearTimeout:void 0,kv=typeof Promise=="function"?Promise:void 0,_S=typeof queueMicrotask=="function"?queueMicrotask:typeof kv<"u"?function(e){return kv.resolve(null).then(e).catch(xS)}:Tv;function xS(e){setTimeout(function(){throw e})}function sa(e){return e==="head"}function wv(e,t){var a=t,r=0;do{var d=a.nextSibling;if(e.removeChild(a),d&&d.nodeType===8)if(a=d.data,a==="/$"||a==="/&"){if(r===0){e.removeChild(d),Pi(t);return}r--}else if(a==="$"||a==="$?"||a==="$~"||a==="$!"||a==="&")r++;else if(a==="html")Yo(e.ownerDocument.documentElement);else if(a==="head"){a=e.ownerDocument.head,Yo(a);for(var p=a.firstChild;p;){var x=p.nextSibling,w=p.nodeName;p[po]||w==="SCRIPT"||w==="STYLE"||w==="LINK"&&p.rel.toLowerCase()==="stylesheet"||a.removeChild(p),p=x}}else a==="body"&&Yo(e.ownerDocument.body);a=d}while(a);Pi(t)}function Nv(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 Ud(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":Ud(a),qc(a);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(a.rel.toLowerCase()==="stylesheet")continue}e.removeChild(a)}}function SS(e,t,a,r){for(;e.nodeType===1;){var d=a;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!r&&(e.nodeName!=="INPUT"||e.type!=="hidden"))break}else if(r){if(!e[po])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!==d.rel||e.getAttribute("href")!==(d.href==null||d.href===""?null:d.href)||e.getAttribute("crossorigin")!==(d.crossOrigin==null?null:d.crossOrigin)||e.getAttribute("title")!==(d.title==null?null:d.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(p=e.getAttribute("src"),(p!==(d.src==null?null:d.src)||e.getAttribute("type")!==(d.type==null?null:d.type)||e.getAttribute("crossorigin")!==(d.crossOrigin==null?null:d.crossOrigin))&&p&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else if(t==="input"&&e.type==="hidden"){var p=d.name==null?null:""+d.name;if(d.type==="hidden"&&e.getAttribute("name")===p)return e}else return e;if(e=Rn(e.nextSibling),e===null)break}return null}function TS(e,t,a){if(t==="")return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!a||(e=Rn(e.nextSibling),e===null))return null;return e}function jv(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!t||(e=Rn(e.nextSibling),e===null))return null;return e}function zd(e){return e.data==="$?"||e.data==="$~"}function Pd(e){return e.data==="$!"||e.data==="$?"&&e.ownerDocument.readyState!=="loading"}function kS(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 Rn(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 Vd=null;function Cv(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var a=e.data;if(a==="/$"||a==="/&"){if(t===0)return Rn(e.nextSibling);t--}else a!=="$"&&a!=="$!"&&a!=="$?"&&a!=="$~"&&a!=="&"||t++}e=e.nextSibling}return null}function Ev(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 Av(e,t,a){switch(t=Ll(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 Yo(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);qc(e)}var Mn=new Map,Dv=new Set;function Bl(e){return typeof e.getRootNode=="function"?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var Ns=G.d;G.d={f:wS,r:NS,D:jS,C:CS,L:ES,m:AS,X:RS,S:DS,M:MS};function wS(){var e=Ns.f(),t=Cl();return e||t}function NS(e){var t=ii(e);t!==null&&t.tag===5&&t.type==="form"?Kh(t):Ns.r(e)}var Bi=typeof document>"u"?null:document;function Rv(e,t,a){var r=Bi;if(r&&typeof t=="string"&&t){var d=wn(t);d='link[rel="'+e+'"][href="'+d+'"]',typeof a=="string"&&(d+='[crossorigin="'+a+'"]'),Dv.has(d)||(Dv.add(d),e={rel:e,crossOrigin:a,href:t},r.querySelector(d)===null&&(t=r.createElement("link"),$t(t,"link",e),Bt(t),r.head.appendChild(t)))}}function jS(e){Ns.D(e),Rv("dns-prefetch",e,null)}function CS(e,t){Ns.C(e,t),Rv("preconnect",e,t)}function ES(e,t,a){Ns.L(e,t,a);var r=Bi;if(r&&e&&t){var d='link[rel="preload"][as="'+wn(t)+'"]';t==="image"&&a&&a.imageSrcSet?(d+='[imagesrcset="'+wn(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(d+='[imagesizes="'+wn(a.imageSizes)+'"]')):d+='[href="'+wn(e)+'"]';var p=d;switch(t){case"style":p=Ui(e);break;case"script":p=zi(e)}Mn.has(p)||(e=b({rel:"preload",href:t==="image"&&a&&a.imageSrcSet?void 0:e,as:t},a),Mn.set(p,e),r.querySelector(d)!==null||t==="style"&&r.querySelector(Jo(p))||t==="script"&&r.querySelector(Wo(p))||(t=r.createElement("link"),$t(t,"link",e),Bt(t),r.head.appendChild(t)))}}function AS(e,t){Ns.m(e,t);var a=Bi;if(a&&e){var r=t&&typeof t.as=="string"?t.as:"script",d='link[rel="modulepreload"][as="'+wn(r)+'"][href="'+wn(e)+'"]',p=d;switch(r){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":p=zi(e)}if(!Mn.has(p)&&(e=b({rel:"modulepreload",href:e},t),Mn.set(p,e),a.querySelector(d)===null)){switch(r){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(Wo(p)))return}r=a.createElement("link"),$t(r,"link",e),Bt(r),a.head.appendChild(r)}}}function DS(e,t,a){Ns.S(e,t,a);var r=Bi;if(r&&e){var d=oi(r).hoistableStyles,p=Ui(e);t=t||"default";var x=d.get(p);if(!x){var w={loading:0,preload:null};if(x=r.querySelector(Jo(p)))w.loading=5;else{e=b({rel:"stylesheet",href:e,"data-precedence":t},a),(a=Mn.get(p))&&Hd(e,a);var D=x=r.createElement("link");Bt(D),$t(D,"link",e),D._p=new Promise(function(P,K){D.onload=P,D.onerror=K}),D.addEventListener("load",function(){w.loading|=1}),D.addEventListener("error",function(){w.loading|=2}),w.loading|=4,Ul(x,t,r)}x={type:"stylesheet",instance:x,count:1,state:w},d.set(p,x)}}}function RS(e,t){Ns.X(e,t);var a=Bi;if(a&&e){var r=oi(a).hoistableScripts,d=zi(e),p=r.get(d);p||(p=a.querySelector(Wo(d)),p||(e=b({src:e,async:!0},t),(t=Mn.get(d))&&qd(e,t),p=a.createElement("script"),Bt(p),$t(p,"link",e),a.head.appendChild(p)),p={type:"script",instance:p,count:1,state:null},r.set(d,p))}}function MS(e,t){Ns.M(e,t);var a=Bi;if(a&&e){var r=oi(a).hoistableScripts,d=zi(e),p=r.get(d);p||(p=a.querySelector(Wo(d)),p||(e=b({src:e,async:!0,type:"module"},t),(t=Mn.get(d))&&qd(e,t),p=a.createElement("script"),Bt(p),$t(p,"link",e),a.head.appendChild(p)),p={type:"script",instance:p,count:1,state:null},r.set(d,p))}}function Mv(e,t,a,r){var d=(d=pe.current)?Bl(d):null;if(!d)throw Error(o(446));switch(e){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(t=Ui(a.href),a=oi(d).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=Ui(a.href);var p=oi(d).hoistableStyles,x=p.get(e);if(x||(d=d.ownerDocument||d,x={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},p.set(e,x),(p=d.querySelector(Jo(e)))&&!p._p&&(x.instance=p,x.state.loading=5),Mn.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},Mn.set(e,a),p||OS(d,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=zi(a),a=oi(d).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 Ui(e){return'href="'+wn(e)+'"'}function Jo(e){return'link[rel="stylesheet"]['+e+"]"}function Ov(e){return b({},e,{"data-precedence":e.precedence,precedence:null})}function OS(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}),$t(t,"link",a),Bt(t),e.head.appendChild(t))}function zi(e){return'[src="'+wn(e)+'"]'}function Wo(e){return"script[async]"+e}function Iv(e,t,a){if(t.count++,t.instance===null)switch(t.type){case"style":var r=e.querySelector('style[data-href~="'+wn(a.href)+'"]');if(r)return t.instance=r,Bt(r),r;var d=b({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement("style"),Bt(r),$t(r,"style",d),Ul(r,a.precedence,e),t.instance=r;case"stylesheet":d=Ui(a.href);var p=e.querySelector(Jo(d));if(p)return t.state.loading|=4,t.instance=p,Bt(p),p;r=Ov(a),(d=Mn.get(d))&&Hd(r,d),p=(e.ownerDocument||e).createElement("link"),Bt(p);var x=p;return x._p=new Promise(function(w,D){x.onload=w,x.onerror=D}),$t(p,"link",r),t.state.loading|=4,Ul(p,a.precedence,e),t.instance=p;case"script":return p=zi(a.src),(d=e.querySelector(Wo(p)))?(t.instance=d,Bt(d),d):(r=a,(d=Mn.get(p))&&(r=b({},a),qd(r,d)),e=e.ownerDocument||e,d=e.createElement("script"),Bt(d),$t(d,"link",r),e.head.appendChild(d),t.instance=d);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,Ul(r,a.precedence,e));return t.instance}function Ul(e,t,a){for(var r=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),d=r.length?r[r.length-1]:null,p=d,x=0;x<r.length;x++){var w=r[x];if(w.dataset.precedence===t)p=w;else if(p!==d)break}p?p.parentNode.insertBefore(e,p.nextSibling):(t=a.nodeType===9?a.head:a,t.insertBefore(e,t.firstChild))}function Hd(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.title==null&&(e.title=t.title)}function qd(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.integrity==null&&(e.integrity=t.integrity)}var zl=null;function Lv(e,t,a){if(zl===null){var r=new Map,d=zl=new Map;d.set(a,r)}else d=zl,r=d.get(a),r||(r=new Map,d.set(a,r));if(r.has(e))return r;for(r.set(e,null),a=a.getElementsByTagName(e),d=0;d<a.length;d++){var p=a[d];if(!(p[po]||p[Vt]||e==="link"&&p.getAttribute("rel")==="stylesheet")&&p.namespaceURI!=="http://www.w3.org/2000/svg"){var x=p.getAttribute(t)||"";x=e+x;var w=r.get(x);w?w.push(p):r.set(x,[p])}}return r}function Bv(e,t,a){e=e.ownerDocument||e,e.head.insertBefore(a,t==="title"?e.querySelector("head > title"):null)}function IS(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 Uv(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function LS(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 d=Ui(r.href),p=t.querySelector(Jo(d));if(p){t=p._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Pl.bind(e),t.then(e,e)),a.state.loading|=4,a.instance=p,Bt(p);return}p=t.ownerDocument||t,r=Ov(r),(d=Mn.get(d))&&Hd(r,d),p=p.createElement("link"),Bt(p);var x=p;x._p=new Promise(function(w,D){x.onload=w,x.onerror=D}),$t(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=Pl.bind(e),t.addEventListener("load",a),t.addEventListener("error",a))}}var Gd=0;function BS(e,t){return e.stylesheets&&e.count===0&&Hl(e,e.stylesheets),0<e.count||0<e.imgCount?function(a){var r=setTimeout(function(){if(e.stylesheets&&Hl(e,e.stylesheets),e.unsuspend){var p=e.unsuspend;e.unsuspend=null,p()}},6e4+t);0<e.imgBytes&&Gd===0&&(Gd=62500*vS());var d=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&Hl(e,e.stylesheets),e.unsuspend)){var p=e.unsuspend;e.unsuspend=null,p()}},(e.imgBytes>Gd?50:800)+t);return e.unsuspend=a,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(d)}}:null}function Pl(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Hl(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Vl=null;function Hl(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Vl=new Map,t.forEach(US,e),Vl=null,Pl.call(e))}function US(e,t){if(!(t.state.loading&4)){var a=Vl.get(e);if(a)var r=a.get(null);else{a=new Map,Vl.set(e,a);for(var d=e.querySelectorAll("link[data-precedence],style[data-precedence]"),p=0;p<d.length;p++){var x=d[p];(x.nodeName==="LINK"||x.getAttribute("media")!=="not all")&&(a.set(x.dataset.precedence,x),r=x)}r&&a.set(null,r)}d=t.instance,x=d.getAttribute("data-precedence"),p=a.get(x)||r,p===r&&a.set(null,d),a.set(x,d),this.count++,r=Pl.bind(this),d.addEventListener("load",r),d.addEventListener("error",r),p?p.parentNode.insertBefore(d,p.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(d,e.firstChild)),t.state.loading|=4}}var Xo={$$typeof:A,Provider:null,Consumer:null,_currentValue:X,_currentValue2:X,_threadCount:0};function zS(e,t,a,r,d,p,x,w,D){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=nt(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=nt(0),this.hiddenUpdates=nt(null),this.identifierPrefix=r,this.onUncaughtError=d,this.onCaughtError=p,this.onRecoverableError=x,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=D,this.incompleteTransitions=new Map}function zv(e,t,a,r,d,p,x,w,D,P,K,J){return e=new zS(e,t,a,x,D,P,K,J,w),t=1,p===!0&&(t|=24),p=pn(3,null,null,t),e.current=p,p.stateNode=e,t=Tu(),t.refCount++,e.pooledCache=t,t.refCount++,p.memoizedState={element:r,isDehydrated:a,cache:t},ju(p),e}function Pv(e){return e?(e=gi,e):gi}function Vv(e,t,a,r,d,p){d=Pv(d),r.context===null?r.context=d:r.pendingContext=d,r=Zs(t),r.payload={element:a},p=p===void 0?null:p,p!==null&&(r.callback=p),a=Fs(e,r,t),a!==null&&(cn(a,e,t),Ao(a,e,t))}function Hv(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var a=e.retryLane;e.retryLane=a!==0&&a<t?a:t}}function $d(e,t){Hv(e,t),(e=e.alternate)&&Hv(e,t)}function qv(e){if(e.tag===13||e.tag===31){var t=Na(e,67108864);t!==null&&cn(t,e,67108864),$d(e,67108864)}}function Gv(e){if(e.tag===13||e.tag===31){var t=yn();t=Vn(t);var a=Na(e,t);a!==null&&cn(a,e,t),$d(e,t)}}var ql=!0;function PS(e,t,a,r){var d=O.T;O.T=null;var p=G.p;try{G.p=2,Zd(e,t,a,r)}finally{G.p=p,O.T=d}}function VS(e,t,a,r){var d=O.T;O.T=null;var p=G.p;try{G.p=8,Zd(e,t,a,r)}finally{G.p=p,O.T=d}}function Zd(e,t,a,r){if(ql){var d=Fd(r);if(d===null)Rd(e,t,r,Gl,a),Zv(e,r);else if(qS(d,e,t,a,r))r.stopPropagation();else if(Zv(e,r),t&4&&-1<HS.indexOf(e)){for(;d!==null;){var p=ii(d);if(p!==null)switch(p.tag){case 3:if(p=p.stateNode,p.current.memoizedState.isDehydrated){var x=de(p.pendingLanes);if(x!==0){var w=p;for(w.pendingLanes|=2,w.entangledLanes|=2;x;){var D=1<<31-Jt(x);w.entanglements[1]|=D,x&=~D}es(p),(Xe&6)===0&&(Nl=Kt()+500,Zo(0))}}break;case 31:case 13:w=Na(p,2),w!==null&&cn(w,p,2),Cl(),$d(p,2)}if(p=Fd(r),p===null&&Rd(e,t,r,Gl,a),p===d)break;d=p}d!==null&&r.stopPropagation()}else Rd(e,t,r,null,a)}}function Fd(e){return e=Yc(e),Kd(e)}var Gl=null;function Kd(e){if(Gl=null,e=ai(e),e!==null){var t=u(e);if(t===null)e=null;else{var a=t.tag;if(a===13){if(e=f(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 Gl=e,null}function $v(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(lo()){case co:return 2;case uo:return 8;case _a:case Or:return 32;case fo:return 268435456;default:return 32}default:return 32}}var Yd=!1,aa=null,ia=null,oa=null,Qo=new Map,er=new Map,ra=[],HS="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 Zv(e,t){switch(e){case"focusin":case"focusout":aa=null;break;case"dragenter":case"dragleave":ia=null;break;case"mouseover":case"mouseout":oa=null;break;case"pointerover":case"pointerout":Qo.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":er.delete(t.pointerId)}}function tr(e,t,a,r,d,p){return e===null||e.nativeEvent!==p?(e={blockedOn:t,domEventName:a,eventSystemFlags:r,nativeEvent:p,targetContainers:[d]},t!==null&&(t=ii(t),t!==null&&qv(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,d!==null&&t.indexOf(d)===-1&&t.push(d),e)}function qS(e,t,a,r,d){switch(t){case"focusin":return aa=tr(aa,e,t,a,r,d),!0;case"dragenter":return ia=tr(ia,e,t,a,r,d),!0;case"mouseover":return oa=tr(oa,e,t,a,r,d),!0;case"pointerover":var p=d.pointerId;return Qo.set(p,tr(Qo.get(p)||null,e,t,a,r,d)),!0;case"gotpointercapture":return p=d.pointerId,er.set(p,tr(er.get(p)||null,e,t,a,r,d)),!0}return!1}function Fv(e){var t=ai(e.target);if(t!==null){var a=u(t);if(a!==null){if(t=a.tag,t===13){if(t=f(a),t!==null){e.blockedOn=t,rm(e.priority,function(){Gv(a)});return}}else if(t===31){if(t=m(a),t!==null){e.blockedOn=t,rm(e.priority,function(){Gv(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 $l(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var a=Fd(e.nativeEvent);if(a===null){a=e.nativeEvent;var r=new a.constructor(a.type,a);Kc=r,a.target.dispatchEvent(r),Kc=null}else return t=ii(a),t!==null&&qv(t),e.blockedOn=a,!1;t.shift()}return!0}function Kv(e,t,a){$l(e)&&a.delete(t)}function GS(){Yd=!1,aa!==null&&$l(aa)&&(aa=null),ia!==null&&$l(ia)&&(ia=null),oa!==null&&$l(oa)&&(oa=null),Qo.forEach(Kv),er.forEach(Kv)}function Zl(e,t){e.blockedOn===t&&(e.blockedOn=null,Yd||(Yd=!0,n.unstable_scheduleCallback(n.unstable_NormalPriority,GS)))}var Fl=null;function Yv(e){Fl!==e&&(Fl=e,n.unstable_scheduleCallback(n.unstable_NormalPriority,function(){Fl===e&&(Fl=null);for(var t=0;t<e.length;t+=3){var a=e[t],r=e[t+1],d=e[t+2];if(typeof r!="function"){if(Kd(r||a)===null)continue;break}var p=ii(a);p!==null&&(e.splice(t,3),t-=3,Fu(p,{pending:!0,data:d,method:a.method,action:r},r,d))}}))}function Pi(e){function t(D){return Zl(D,e)}aa!==null&&Zl(aa,e),ia!==null&&Zl(ia,e),oa!==null&&Zl(oa,e),Qo.forEach(t),er.forEach(t);for(var a=0;a<ra.length;a++){var r=ra[a];r.blockedOn===e&&(r.blockedOn=null)}for(;0<ra.length&&(a=ra[0],a.blockedOn===null);)Fv(a),a.blockedOn===null&&ra.shift();if(a=(e.ownerDocument||e).$$reactFormReplay,a!=null)for(r=0;r<a.length;r+=3){var d=a[r],p=a[r+1],x=d[nn]||null;if(typeof p=="function")x||Yv(a);else if(x){var w=null;if(p&&p.hasAttribute("formAction")){if(d=p,x=p[nn]||null)w=x.formAction;else if(Kd(d)!==null)continue}else w=x.action;typeof w=="function"?a[r+1]=w:(a.splice(r,3),r-=3),Yv(a)}}}function Jv(){function e(p){p.canIntercept&&p.info==="react-transition"&&p.intercept({handler:function(){return new Promise(function(x){return d=x})},focusReset:"manual",scroll:"manual"})}function t(){d!==null&&(d(),d=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,d=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),d!==null&&(d(),d=null)}}}function Jd(e){this._internalRoot=e}Kl.prototype.render=Jd.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(o(409));var a=t.current,r=yn();Vv(a,r,e,t,null,null)},Kl.prototype.unmount=Jd.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;Vv(e.current,2,null,e,null,null),Cl(),t[si]=null}};function Kl(e){this._internalRoot=e}Kl.prototype.unstable_scheduleHydration=function(e){if(e){var t=om();e={blockedOn:null,target:e,priority:t};for(var a=0;a<ra.length&&t!==0&&t<ra[a].priority;a++);ra.splice(a,0,e),a===0&&Fv(e)}};var Wv=s.version;if(Wv!=="19.2.4")throw Error(o(527,Wv,"19.2.4"));G.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 $S={bundleType:0,version:"19.2.4",rendererPackageName:"react-dom",currentDispatcherRef:O,reconcilerVersion:"19.2.4"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var Yl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Yl.isDisabled&&Yl.supportsFiber)try{Us=Yl.inject($S),Yt=Yl}catch{}}return sr.createRoot=function(e,t){if(!c(e))throw Error(o(299));var a=!1,r="",d=ag,p=ig,x=og;return t!=null&&(t.unstable_strictMode===!0&&(a=!0),t.identifierPrefix!==void 0&&(r=t.identifierPrefix),t.onUncaughtError!==void 0&&(d=t.onUncaughtError),t.onCaughtError!==void 0&&(p=t.onCaughtError),t.onRecoverableError!==void 0&&(x=t.onRecoverableError)),t=zv(e,1,!1,null,null,a,r,null,d,p,x,Jv),e[si]=t.current,Dd(e),new Jd(t)},sr.hydrateRoot=function(e,t,a){if(!c(e))throw Error(o(299));var r=!1,d="",p=ag,x=ig,w=og,D=null;return a!=null&&(a.unstable_strictMode===!0&&(r=!0),a.identifierPrefix!==void 0&&(d=a.identifierPrefix),a.onUncaughtError!==void 0&&(p=a.onUncaughtError),a.onCaughtError!==void 0&&(x=a.onCaughtError),a.onRecoverableError!==void 0&&(w=a.onRecoverableError),a.formState!==void 0&&(D=a.formState)),t=zv(e,1,!0,t,a??null,r,d,D,p,x,w,Jv),t.context=Pv(null),a=t.current,r=yn(),r=Vn(r),d=Zs(r),d.callback=null,Fs(a,d,r),a=r,t.current.lanes=a,qe(t,a),es(t),e[si]=t.current,Dd(e),new Kl(t)},sr.version="19.2.4",sr}var i0;function bT(){if(i0)return Wd.exports;i0=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(),Wd.exports=yT(),Wd.exports}var _T=bT();const xT="modulepreload",ST=function(n){return"/"+n},o0={},TT=function(s,i,o){let c=Promise.resolve();if(i&&i.length>0){let f=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=f(i.map(g=>{if(g=ST(g),g in o0)return;o0[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":xT,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(f){const m=new Event("vite:preloadError",{cancelable:!0});if(m.payload=f,window.dispatchEvent(m),!m.defaultPrevented)throw f}return c.then(f=>{for(const m of f||[])m.status==="rejected"&&u(m.reason);return s().catch(u)})};function Ka(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function rb(n,s){return console.warn(`[ws] Malformed "${n}" message: ${s}`),!1}function kT(n){return Ka(n)&&typeof n.id=="string"&&typeof n.type=="string"&&typeof n.timestamp=="string"&&Ka(n.payload)}function wT(n){return Ka(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 NT=new Set(["off","subscription","api_key"]),Xl=new Set(["off","on"]);function jT(n){return Ka(n)&&NT.has(n.claude)&&Xl.has(n.github)&&Xl.has(n.copilot)&&Xl.has(n.codex)&&Xl.has(n.goose)}function CT(n){let s;try{s=JSON.parse(n)}catch{console.warn("[ws] Failed to parse WebSocket message as JSON");return}if(!Ka(s)||typeof s.type!="string"){console.warn("[ws] Received WebSocket message without a string 'type' field:",s);return}return typeof s.id=="string"&&typeof s.timestamp=="string"?{id:s.id,type:s.type,timestamp:s.timestamp,payload:Ka(s.payload)?s.payload:{}}:{type:s.type,payload:Ka(s.payload)?s.payload:void 0}}function lb(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 cb(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 ET=3e3,Vi=5e3,AT=4001;/**
|
|
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 r0="popstate";function l0(n){return typeof n=="object"&&n!=null&&"pathname"in n&&"search"in n&&"hash"in n&&"state"in n&&"key"in n}function DT(n={}){function s(o,c){var g;let u=(g=c.state)==null?void 0:g.masked,{pathname:f,search:m,hash:h}=u||o.location;return Lf("",{pathname:f,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:_r(c)}return MT(s,i,null,n)}function dt(n,s){if(n===!1||n===null||typeof n>"u")throw new Error(s)}function Bn(n,s){if(!n){typeof console<"u"&&console.warn(s);try{throw new Error(s)}catch{}}}function RT(){return Math.random().toString(36).substring(2,10)}function c0(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 Lf(n,s,i=null,o,c){return{pathname:typeof n=="string"?n:n.pathname,search:"",hash:"",...typeof s=="string"?ao(s):s,state:i,key:s&&s.key||o||RT(),unstable_mask:c}}function _r({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 ao(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 MT(n,s,i,o={}){let{window:c=document.defaultView,v5Compat:u=!1}=o,f=c.history,m="POP",h=null,g=v();g==null&&(g=0,f.replaceState({...f.state,idx:g},""));function v(){return(f.state||{idx:null}).idx}function b(){m="POP";let N=v(),k=N==null?null:N-g;g=N,h&&h({action:m,location:j.location,delta:k})}function _(N,k){m="PUSH";let E=l0(N)?N:Lf(j.location,N,k);g=v()+1;let A=c0(E,g),R=j.createHref(E.unstable_mask||E);try{f.pushState(A,"",R)}catch(C){if(C instanceof DOMException&&C.name==="DataCloneError")throw C;c.location.assign(R)}u&&h&&h({action:m,location:j.location,delta:1})}function S(N,k){m="REPLACE";let E=l0(N)?N:Lf(j.location,N,k);g=v();let A=c0(E,g),R=j.createHref(E.unstable_mask||E);f.replaceState(A,"",R),u&&h&&h({action:m,location:j.location,delta:0})}function T(N){return OT(N)}let j={get action(){return m},get location(){return n(c,f)},listen(N){if(h)throw new Error("A history only accepts one active listener");return c.addEventListener(r0,b),h=N,()=>{c.removeEventListener(r0,b),h=null}},createHref(N){return s(c,N)},createURL:T,encodeLocation(N){let k=T(N);return{pathname:k.pathname,search:k.search,hash:k.hash}},push:_,replace:S,go(N){return f.go(N)}};return j}function OT(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:_r(n);return o=o.replace(/ $/,"%20"),!s&&o.startsWith("//")&&(o=i+o),new URL(o,i)}function ub(n,s,i="/"){return IT(n,s,i,!1)}function IT(n,s,i,o){let c=typeof s=="string"?ao(s):s,u=Os(c.pathname||"/",i);if(u==null)return null;let f=db(n);LT(f);let m=null;for(let h=0;m==null&&h<f.length;++h){let g=pb(u);m=$T(f[h],g,o)}return m}function db(n,s=[],i=[],o="",c=!1){let u=(f,m,h=c,g)=>{let v={relativePath:g===void 0?f.path||"":g,caseSensitive:f.caseSensitive===!0,childrenIndex:m,route:f};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=ss([o,v.relativePath]),_=i.concat(v);f.children&&f.children.length>0&&(dt(f.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${b}".`),db(f.children,s,_,b,h)),!(f.path==null&&!f.index)&&s.push({path:b,score:qT(b,f.index),routesMeta:_})};return n.forEach((f,m)=>{var h;if(f.path===""||!((h=f.path)!=null&&h.includes("?")))u(f,m);else for(let g of fb(f.path))u(f,m,!0,g)}),s}function fb(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 f=fb(o.join("/")),m=[];return m.push(...f.map(h=>h===""?u:[u,h].join("/"))),c&&m.push(...f),m.map(h=>n.startsWith("/")&&h===""?"/":h)}function LT(n){n.sort((s,i)=>s.score!==i.score?i.score-s.score:GT(s.routesMeta.map(o=>o.childrenIndex),i.routesMeta.map(o=>o.childrenIndex)))}var BT=/^:[\w-]+$/,UT=3,zT=2,PT=1,VT=10,HT=-2,u0=n=>n==="*";function qT(n,s){let i=n.split("/"),o=i.length;return i.some(u0)&&(o+=HT),s&&(o+=zT),i.filter(c=>!u0(c)).reduce((c,u)=>c+(BT.test(u)?UT:u===""?PT:VT),o)}function GT(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 $T(n,s,i=!1){let{routesMeta:o}=n,c={},u="/",f=[];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=xr({path:h.relativePath,caseSensitive:h.caseSensitive,end:g},v),_=h.route;if(!b&&g&&i&&!o[o.length-1].route.index&&(b=xr({path:h.relativePath,caseSensitive:h.caseSensitive,end:!1},v)),!b)return null;Object.assign(c,b.params),f.push({params:c,pathname:ss([u,b.pathname]),pathnameBase:JT(ss([u,b.pathnameBase])),route:_}),b.pathnameBase!=="/"&&(u=ss([u,b.pathnameBase]))}return f}function xr(n,s){typeof n=="string"&&(n={path:n,caseSensitive:!1,end:!0});let[i,o]=ZT(n.path,n.caseSensitive,n.end),c=s.match(i);if(!c)return null;let u=c[0],f=u.replace(/(.)\/+$/,"$1"),m=c.slice(1);return{params:o.reduce((g,{paramName:v,isOptional:b},_)=>{if(v==="*"){let T=m[_]||"";f=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:f,pattern:n}}function ZT(n,s=!1,i=!0){Bn(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,(f,m,h,g,v)=>{if(o.push({paramName:m,isOptional:h!=null}),h){let b=v.charAt(g+f.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 pb(n){try{return n.split("/").map(s=>decodeURIComponent(s).replace(/\//g,"%2F")).join("/")}catch(s){return Bn(!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 Os(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 FT=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function KT(n,s="/"){let{pathname:i,search:o="",hash:c=""}=typeof n=="string"?ao(n):n,u;return i?(i=i.replace(/\/\/+/g,"/"),i.startsWith("/")?u=d0(i.substring(1),"/"):u=d0(i,s)):u=s,{pathname:u,search:WT(o),hash:XT(c)}}function d0(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 ef(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 YT(n){return n.filter((s,i)=>i===0||s.route.path&&s.route.path.length>0)}function dp(n){let s=YT(n);return s.map((i,o)=>o===s.length-1?i.pathname:i.pathnameBase)}function Ec(n,s,i,o=!1){let c;typeof n=="string"?c=ao(n):(c={...n},dt(!c.pathname||!c.pathname.includes("?"),ef("?","pathname","search",c)),dt(!c.pathname||!c.pathname.includes("#"),ef("#","pathname","hash",c)),dt(!c.search||!c.search.includes("#"),ef("#","search","hash",c)));let u=n===""||c.pathname==="",f=u?"/":c.pathname,m;if(f==null)m=i;else{let b=s.length-1;if(!o&&f.startsWith("..")){let _=f.split("/");for(;_[0]==="..";)_.shift(),b-=1;c.pathname=_.join("/")}m=b>=0?s[b]:"/"}let h=KT(c,m),g=f&&f!=="/"&&f.endsWith("/"),v=(u||f===".")&&i.endsWith("/");return!h.pathname.endsWith("/")&&(g||v)&&(h.pathname+="/"),h}var ss=n=>n.join("/").replace(/\/\/+/g,"/"),JT=n=>n.replace(/\/+$/,"").replace(/^\/*/,"/"),WT=n=>!n||n==="?"?"":n.startsWith("?")?n:"?"+n,XT=n=>!n||n==="#"?"":n.startsWith("#")?n:"#"+n,QT=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 ek(n){return n!=null&&typeof n.status=="number"&&typeof n.statusText=="string"&&typeof n.internal=="boolean"&&"data"in n}function tk(n){return n.map(s=>s.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var mb=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function hb(n,s){let i=n;if(typeof i!="string"||!FT.test(i))return{absoluteURL:void 0,isExternal:!1,to:i};let o=i,c=!1;if(mb)try{let u=new URL(window.location.href),f=i.startsWith("//")?new URL(u.protocol+i):new URL(i),m=Os(f.pathname,s);f.origin===u.origin&&m!=null?i=m+f.search+f.hash:c=!0}catch{Bn(!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 gb=["POST","PUT","PATCH","DELETE"];new Set(gb);var nk=["GET",...gb];new Set(nk);var io=y.createContext(null);io.displayName="DataRouter";var Ac=y.createContext(null);Ac.displayName="DataRouterState";var sk=y.createContext(!1),vb=y.createContext({isTransitioning:!1});vb.displayName="ViewTransition";var ak=y.createContext(new Map);ak.displayName="Fetchers";var ik=y.createContext(null);ik.displayName="Await";var Sn=y.createContext(null);Sn.displayName="Navigation";var Cr=y.createContext(null);Cr.displayName="Location";var Un=y.createContext({outlet:null,matches:[],isDataRoute:!1});Un.displayName="Route";var fp=y.createContext(null);fp.displayName="RouteError";var yb="REACT_ROUTER_ERROR",ok="REDIRECT",rk="ROUTE_ERROR_RESPONSE";function lk(n){if(n.startsWith(`${yb}:${ok}:{`))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 ck(n){if(n.startsWith(`${yb}:${rk}:{`))try{let s=JSON.parse(n.slice(40));if(typeof s=="object"&&s&&typeof s.status=="number"&&typeof s.statusText=="string")return new QT(s.status,s.statusText,s.data)}catch{}}function uk(n,{relative:s}={}){dt(Qa(),"useHref() may be used only in the context of a <Router> component.");let{basename:i,navigator:o}=y.useContext(Sn),{hash:c,pathname:u,search:f}=Er(n,{relative:s}),m=u;return i!=="/"&&(m=u==="/"?i:ss([i,u])),o.createHref({pathname:m,search:f,hash:c})}function Qa(){return y.useContext(Cr)!=null}function It(){return dt(Qa(),"useLocation() may be used only in the context of a <Router> component."),y.useContext(Cr).location}function At(n){dt(Qa(),"useMatch() may be used only in the context of a <Router> component.");let{pathname:s}=It();return y.useMemo(()=>xr(n,pb(s)),[s,n])}var bb="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function _b(n){y.useContext(Sn).static||y.useLayoutEffect(n)}function Dc(){let{isDataRoute:n}=y.useContext(Un);return n?wk():dk()}function dk(){dt(Qa(),"useNavigate() may be used only in the context of a <Router> component.");let n=y.useContext(io),{basename:s,navigator:i}=y.useContext(Sn),{matches:o}=y.useContext(Un),{pathname:c}=It(),u=JSON.stringify(dp(o)),f=y.useRef(!1);return _b(()=>{f.current=!0}),y.useCallback((h,g={})=>{if(Bn(f.current,bb),!f.current)return;if(typeof h=="number"){i.go(h);return}let v=Ec(h,JSON.parse(u),c,g.relative==="path");n==null&&s!=="/"&&(v.pathname=v.pathname==="/"?s:ss([s,v.pathname])),(g.replace?i.replace:i.push)(v,g.state,g)},[s,i,u,c,n])}var fk=y.createContext(null);function pk(n){let s=y.useContext(Un).outlet;return y.useMemo(()=>s&&y.createElement(fk.Provider,{value:n},s),[s,n])}function va(){let{matches:n}=y.useContext(Un),s=n[n.length-1];return s?s.params:{}}function Er(n,{relative:s}={}){let{matches:i}=y.useContext(Un),{pathname:o}=It(),c=JSON.stringify(dp(i));return y.useMemo(()=>Ec(n,JSON.parse(c),o,s==="path"),[n,c,o,s])}function mk(n,s){return xb(n,s)}function xb(n,s,i){var N;dt(Qa(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:o}=y.useContext(Sn),{matches:c}=y.useContext(Un),u=c[c.length-1],f=u?u.params:{},m=u?u.pathname:"/",h=u?u.pathnameBase:"/",g=u&&u.route;{let k=g&&g.path||"";Tb(m,!g||k.endsWith("*")||k.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${m}" (under <Route path="${k}">) 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="${k}"> to <Route path="${k==="/"?"*":`${k}/*`}">.`)}let v=It(),b;if(s){let k=typeof s=="string"?ao(s):s;dt(h==="/"||((N=k.pathname)==null?void 0:N.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 "${k.pathname}" was given in the \`location\` prop.`),b=k}else b=v;let _=b.pathname||"/",S=_;if(h!=="/"){let k=h.replace(/^\//,"").split("/");S="/"+_.replace(/^\//,"").split("/").slice(k.length).join("/")}let T=ub(n,{pathname:S});Bn(g||T!=null,`No routes matched location "${b.pathname}${b.search}${b.hash}" `),Bn(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 j=bk(T&&T.map(k=>Object.assign({},k,{params:Object.assign({},f,k.params),pathname:ss([h,o.encodeLocation?o.encodeLocation(k.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:k.pathname]),pathnameBase:k.pathnameBase==="/"?h:ss([h,o.encodeLocation?o.encodeLocation(k.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:k.pathnameBase])})),c,i);return s&&j?y.createElement(Cr.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",unstable_mask:void 0,...b},navigationType:"POP"}},j):j}function hk(){let n=kk(),s=ek(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},f=null;return console.error("Error handled by React Router default ErrorBoundary:",n),f=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,f)}var gk=y.createElement(hk,null),Sb=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=ck(n.digest);i&&(n=i)}let s=n!==void 0?y.createElement(Un.Provider,{value:this.props.routeContext},y.createElement(fp.Provider,{value:n,children:this.props.component})):this.props.children;return this.context?y.createElement(vk,{error:n},s):s}};Sb.contextType=sk;var tf=new WeakMap;function vk({children:n,error:s}){let{basename:i}=y.useContext(Sn);if(typeof s=="object"&&s&&"digest"in s&&typeof s.digest=="string"){let o=lk(s.digest);if(o){let c=tf.get(s);if(c)throw c;let u=hb(o.location,i);if(mb&&!tf.get(s))if(u.isExternal||o.reloadDocument)window.location.href=u.absoluteURL||u.to;else{const f=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(u.to,{replace:o.replace}));throw tf.set(s,f),f}return y.createElement("meta",{httpEquiv:"refresh",content:`0;url=${u.absoluteURL||u.to}`})}}return n}function yk({routeContext:n,match:s,children:i}){let o=y.useContext(io);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 bk(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 f=!1,m=-1;if(i&&o){f=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&&(f=!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:tk(o.matches),errorInfo:b})}:void 0;return c.reduceRight((v,b,_)=>{let S,T=!1,j=null,N=null;o&&(S=u&&b.route.id?u[b.route.id]:void 0,j=b.route.errorElement||gk,f&&(m<0&&_===0?(Tb("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),T=!0,N=null):m===_&&(T=!0,N=b.route.hydrateFallbackElement||null)));let k=s.concat(c.slice(0,_+1)),E=()=>{let A;return S?A=j:T?A=N:b.route.Component?A=y.createElement(b.route.Component,null):b.route.element?A=b.route.element:A=v,y.createElement(yk,{match:b,routeContext:{outlet:v,matches:k,isDataRoute:o!=null},children:A})};return o&&(b.route.ErrorBoundary||b.route.errorElement||_===0)?y.createElement(Sb,{location:o.location,revalidation:o.revalidation,component:j,error:S,children:E(),routeContext:{outlet:null,matches:k,isDataRoute:!0},onError:g}):E()},null)}function pp(n){return`${n} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function _k(n){let s=y.useContext(io);return dt(s,pp(n)),s}function xk(n){let s=y.useContext(Ac);return dt(s,pp(n)),s}function Sk(n){let s=y.useContext(Un);return dt(s,pp(n)),s}function mp(n){let s=Sk(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 Tk(){return mp("useRouteId")}function kk(){var o;let n=y.useContext(fp),s=xk("useRouteError"),i=mp("useRouteError");return n!==void 0?n:(o=s.errors)==null?void 0:o[i]}function wk(){let{router:n}=_k("useNavigate"),s=mp("useNavigate"),i=y.useRef(!1);return _b(()=>{i.current=!0}),y.useCallback(async(c,u={})=>{Bn(i.current,bb),i.current&&(typeof c=="number"?await n.navigate(c):await n.navigate(c,{fromRouteId:s,...u}))},[n,s])}var f0={};function Tb(n,s,i){!s&&!f0[n]&&(f0[n]=!0,Bn(!1,i))}y.memo(Nk);function Nk({routes:n,future:s,state:i,isStatic:o,onError:c}){return xb(n,void 0,{state:i,isStatic:o,onError:c})}function Fn({to:n,replace:s,state:i,relative:o}){dt(Qa(),"<Navigate> may be used only in the context of a <Router> component.");let{static:c}=y.useContext(Sn);Bn(!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:f}=It(),m=Dc(),h=Ec(n,dp(u),f,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 ei(n){return pk(n.context)}function Ce(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 jk({basename:n="/",children:s=null,location:i,navigationType:o="POP",navigator:c,static:u=!1,unstable_useTransitions:f}){dt(!Qa(),"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:f,future:{}}),[m,c,u,f]);typeof i=="string"&&(i=ao(i));let{pathname:g="/",search:v="",hash:b="",state:_=null,key:S="default",unstable_mask:T}=i,j=y.useMemo(()=>{let N=Os(g,m);return N==null?null:{location:{pathname:N,search:v,hash:b,state:_,key:S,unstable_mask:T},navigationType:o}},[m,g,v,b,_,S,o,T]);return Bn(j!=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.`),j==null?null:y.createElement(Sn.Provider,{value:h},y.createElement(Cr.Provider,{children:s,value:j}))}function Ck({children:n,location:s}){return mk(Bf(n),s)}function Bf(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,Bf(o.props.children,u));return}dt(o.type===Ce,`[${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 f={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&&(f.children=Bf(o.props.children,u)),i.push(f)}),i}var uc="get",dc="application/x-www-form-urlencoded";function Rc(n){return typeof HTMLElement<"u"&&n instanceof HTMLElement}function Ek(n){return Rc(n)&&n.tagName.toLowerCase()==="button"}function Ak(n){return Rc(n)&&n.tagName.toLowerCase()==="form"}function Dk(n){return Rc(n)&&n.tagName.toLowerCase()==="input"}function Rk(n){return!!(n.metaKey||n.altKey||n.ctrlKey||n.shiftKey)}function Mk(n,s){return n.button===0&&(!s||s==="_self")&&!Rk(n)}function Uf(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 Ok(n,s){let i=Uf(n);return s&&s.forEach((o,c)=>{i.has(c)||s.getAll(c).forEach(u=>{i.append(c,u)})}),i}var Ql=null;function Ik(){if(Ql===null)try{new FormData(document.createElement("form"),0),Ql=!1}catch{Ql=!0}return Ql}var Lk=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function nf(n){return n!=null&&!Lk.has(n)?(Bn(!1,`"${n}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${dc}"`),null):n}function Bk(n,s){let i,o,c,u,f;if(Ak(n)){let m=n.getAttribute("action");o=m?Os(m,s):null,i=n.getAttribute("method")||uc,c=nf(n.getAttribute("enctype"))||dc,u=new FormData(n)}else if(Ek(n)||Dk(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?Os(h,s):null,i=n.getAttribute("formmethod")||m.getAttribute("method")||uc,c=nf(n.getAttribute("formenctype"))||nf(m.getAttribute("enctype"))||dc,u=new FormData(m,n),!Ik()){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(Rc(n))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');i=uc,o=null,c=dc,f=n}return u&&c==="text/plain"&&(f=u,u=void 0),{action:o,method:i.toLowerCase(),encType:c,formData:u,body:f}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function hp(n,s){if(n===!1||n===null||typeof n>"u")throw new Error(s)}function Uk(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&&Os(c.pathname,s)==="/"?c.pathname=`${s.replace(/\/$/,"")}/_root.${o}`:c.pathname=`${c.pathname.replace(/\/$/,"")}.${o}`,c}async function zk(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 Pk(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 Vk(n,s,i){let o=await Promise.all(n.map(async c=>{let u=s.routes[c.route.id];if(u){let f=await zk(u,i);return f.links?f.links():[]}return[]}));return $k(o.flat(1).filter(Pk).filter(c=>c.rel==="stylesheet"||c.rel==="preload").map(c=>c.rel==="stylesheet"?{...c,rel:"prefetch",as:"style"}:{...c,rel:"prefetch"}))}function p0(n,s,i,o,c,u){let f=(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)=>f(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(f(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 Hk(n,s,{includeHydrateFallback:i}={}){return qk(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 qk(n){return[...new Set(n)]}function Gk(n){let s={},i=Object.keys(n).sort();for(let o of i)s[o]=n[o];return s}function $k(n,s){let i=new Set;return new Set(s),n.reduce((o,c)=>{let u=JSON.stringify(Gk(c));return i.has(u)||(i.add(u),o.push({key:u,link:c})),o},[])}function kb(){let n=y.useContext(io);return hp(n,"You must render this element inside a <DataRouterContext.Provider> element"),n}function Zk(){let n=y.useContext(Ac);return hp(n,"You must render this element inside a <DataRouterStateContext.Provider> element"),n}var gp=y.createContext(void 0);gp.displayName="FrameworkContext";function wb(){let n=y.useContext(gp);return hp(n,"You must render this element inside a <HydratedRouter> element"),n}function Fk(n,s){let i=y.useContext(gp),[o,c]=y.useState(!1),[u,f]=y.useState(!1),{onFocus:m,onBlur:h,onMouseEnter:g,onMouseLeave:v,onTouchStart:b}=s,_=y.useRef(null);y.useEffect(()=>{if(n==="render"&&f(!0),n==="viewport"){let j=k=>{k.forEach(E=>{f(E.isIntersecting)})},N=new IntersectionObserver(j,{threshold:.5});return _.current&&N.observe(_.current),()=>{N.disconnect()}}},[n]),y.useEffect(()=>{if(o){let j=setTimeout(()=>{f(!0)},100);return()=>{clearTimeout(j)}}},[o]);let S=()=>{c(!0)},T=()=>{c(!1),f(!1)};return i?n!=="intent"?[u,_,{}]:[u,_,{onFocus:ar(m,S),onBlur:ar(h,T),onMouseEnter:ar(g,S),onMouseLeave:ar(v,T),onTouchStart:ar(b,S)}]:[!1,_,{}]}function ar(n,s){return i=>{n&&n(i),i.defaultPrevented||s(i)}}function Kk({page:n,...s}){let{router:i}=kb(),o=y.useMemo(()=>ub(i.routes,n,i.basename),[i.routes,n,i.basename]);return o?y.createElement(Jk,{page:n,matches:o,...s}):null}function Yk(n){let{manifest:s,routeModules:i}=wb(),[o,c]=y.useState([]);return y.useEffect(()=>{let u=!1;return Vk(n,s,i).then(f=>{u||c(f)}),()=>{u=!0}},[n,s,i]),o}function Jk({page:n,matches:s,...i}){let o=It(),{future:c,manifest:u,routeModules:f}=wb(),{basename:m}=kb(),{loaderData:h,matches:g}=Zk(),v=y.useMemo(()=>p0(n,s,g,u,o,"data"),[n,s,g,u,o]),b=y.useMemo(()=>p0(n,s,g,u,o,"assets"),[n,s,g,u,o]),_=y.useMemo(()=>{if(n===o.pathname+o.search+o.hash)return[];let j=new Set,N=!1;if(s.forEach(E=>{var R;let A=u.routes[E.route.id];!A||!A.hasLoader||(!v.some(C=>C.route.id===E.route.id)&&E.route.id in h&&((R=f[E.route.id])!=null&&R.shouldRevalidate)||A.hasClientLoader?N=!0:j.add(E.route.id))}),j.size===0)return[];let k=Uk(n,m,c.unstable_trailingSlashAwareDataRequests,"data");return N&&j.size>0&&k.searchParams.set("_routes",s.filter(E=>j.has(E.route.id)).map(E=>E.route.id).join(",")),[k.pathname+k.search]},[m,c.unstable_trailingSlashAwareDataRequests,h,o,u,v,s,n,f]),S=y.useMemo(()=>Hk(b,u),[b,u]),T=Yk(b);return y.createElement(y.Fragment,null,_.map(j=>y.createElement("link",{key:j,rel:"prefetch",as:"fetch",href:j,...i})),S.map(j=>y.createElement("link",{key:j,rel:"modulepreload",href:j,...i})),T.map(({key:j,link:N})=>y.createElement("link",{key:j,nonce:i.nonce,...N,crossOrigin:N.crossOrigin??i.crossOrigin})))}function Wk(...n){return s=>{n.forEach(i=>{typeof i=="function"?i(s):i!=null&&(i.current=s)})}}var Xk=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{Xk&&(window.__reactRouterVersion="7.13.2")}catch{}function Qk({basename:n,children:s,unstable_useTransitions:i,window:o}){let c=y.useRef();c.current==null&&(c.current=DT({window:o,v5Compat:!0}));let u=c.current,[f,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(jk,{basename:n,children:s,location:f.location,navigationType:f.action,navigator:u,unstable_useTransitions:i})}var Nb=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,vp=y.forwardRef(function({onClick:s,discover:i="render",prefetch:o="none",relative:c,reloadDocument:u,replace:f,unstable_mask:m,state:h,target:g,to:v,preventScrollReset:b,viewTransition:_,unstable_defaultShouldRevalidate:S,...T},j){let{basename:N,navigator:k,unstable_useTransitions:E}=y.useContext(Sn),A=typeof v=="string"&&Nb.test(v),R=hb(v,N);v=R.to;let C=uk(v,{relative:c}),U=It(),V=null;if(m){let oe=Ec(m,[],U.unstable_mask?U.unstable_mask.pathname:"/",!0);N!=="/"&&(oe.pathname=oe.pathname==="/"?N:ss([N,oe.pathname])),V=k.createHref(oe)}let[I,F,ee]=Fk(o,T),re=s2(v,{replace:f,unstable_mask:m,state:h,target:g,preventScrollReset:b,relative:c,viewTransition:_,unstable_defaultShouldRevalidate:S,unstable_useTransitions:E});function se(oe){s&&s(oe),oe.defaultPrevented||re(oe)}let ue=!(R.isExternal||u),Z=y.createElement("a",{...T,...ee,href:(ue?V:void 0)||R.absoluteURL||C,onClick:ue?se:s,ref:Wk(j,F),target:g,"data-discover":!A&&i==="render"?"true":void 0});return I&&!A?y.createElement(y.Fragment,null,Z,y.createElement(Kk,{page:C})):Z});vp.displayName="Link";var e2=y.forwardRef(function({"aria-current":s="page",caseSensitive:i=!1,className:o="",end:c=!1,style:u,to:f,viewTransition:m,children:h,...g},v){let b=Er(f,{relative:g.relative}),_=It(),S=y.useContext(Ac),{navigator:T,basename:j}=y.useContext(Sn),N=S!=null&&l2(b)&&m===!0,k=T.encodeLocation?T.encodeLocation(b).pathname:b.pathname,E=_.pathname,A=S&&S.navigation&&S.navigation.location?S.navigation.location.pathname:null;i||(E=E.toLowerCase(),A=A?A.toLowerCase():null,k=k.toLowerCase()),A&&j&&(A=Os(A,j)||A);const R=k!=="/"&&k.endsWith("/")?k.length-1:k.length;let C=E===k||!c&&E.startsWith(k)&&E.charAt(R)==="/",U=A!=null&&(A===k||!c&&A.startsWith(k)&&A.charAt(k.length)==="/"),V={isActive:C,isPending:U,isTransitioning:N},I=C?s:void 0,F;typeof o=="function"?F=o(V):F=[o,C?"active":null,U?"pending":null,N?"transitioning":null].filter(Boolean).join(" ");let ee=typeof u=="function"?u(V):u;return y.createElement(vp,{...g,"aria-current":I,className:F,ref:v,style:ee,to:f,viewTransition:m},typeof h=="function"?h(V):h)});e2.displayName="NavLink";var t2=y.forwardRef(({discover:n="render",fetcherKey:s,navigate:i,reloadDocument:o,replace:c,state:u,method:f=uc,action:m,onSubmit:h,relative:g,preventScrollReset:v,viewTransition:b,unstable_defaultShouldRevalidate:_,...S},T)=>{let{unstable_useTransitions:j}=y.useContext(Sn),N=o2(),k=r2(m,{relative:g}),E=f.toLowerCase()==="get"?"get":"post",A=typeof m=="string"&&Nb.test(m),R=C=>{if(h&&h(C),C.defaultPrevented)return;C.preventDefault();let U=C.nativeEvent.submitter,V=(U==null?void 0:U.getAttribute("formmethod"))||f,I=()=>N(U||C.currentTarget,{fetcherKey:s,method:V,navigate:i,replace:c,state:u,relative:g,preventScrollReset:v,viewTransition:b,unstable_defaultShouldRevalidate:_});j&&i!==!1?y.startTransition(()=>I()):I()};return y.createElement("form",{ref:T,method:E,action:k,onSubmit:o?h:R,...S,"data-discover":!A&&n==="render"?"true":void 0})});t2.displayName="Form";function n2(n){return`${n} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function jb(n){let s=y.useContext(io);return dt(s,n2(n)),s}function s2(n,{target:s,replace:i,unstable_mask:o,state:c,preventScrollReset:u,relative:f,viewTransition:m,unstable_defaultShouldRevalidate:h,unstable_useTransitions:g}={}){let v=Dc(),b=It(),_=Er(n,{relative:f});return y.useCallback(S=>{if(Mk(S,s)){S.preventDefault();let T=i!==void 0?i:_r(b)===_r(_),j=()=>v(n,{replace:T,unstable_mask:o,state:c,preventScrollReset:u,relative:f,viewTransition:m,unstable_defaultShouldRevalidate:h});g?y.startTransition(()=>j()):j()}},[b,v,_,i,o,c,s,n,u,f,m,h,g])}function yp(n){Bn(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(Uf(n)),i=y.useRef(!1),o=It(),c=y.useMemo(()=>Ok(o.search,i.current?null:s.current),[o.search]),u=Dc(),f=y.useCallback((m,h)=>{const g=Uf(typeof m=="function"?m(new URLSearchParams(c)):m);i.current=!0,u("?"+g,h)},[u,c]);return[c,f]}var a2=0,i2=()=>`__${String(++a2)}__`;function o2(){let{router:n}=jb("useSubmit"),{basename:s}=y.useContext(Sn),i=Tk(),o=n.fetch,c=n.navigate;return y.useCallback(async(u,f={})=>{let{action:m,method:h,encType:g,formData:v,body:b}=Bk(u,s);if(f.navigate===!1){let _=f.fetcherKey||i2();await o(_,i,f.action||m,{unstable_defaultShouldRevalidate:f.unstable_defaultShouldRevalidate,preventScrollReset:f.preventScrollReset,formData:v,body:b,formMethod:f.method||h,formEncType:f.encType||g,flushSync:f.flushSync})}else await c(f.action||m,{unstable_defaultShouldRevalidate:f.unstable_defaultShouldRevalidate,preventScrollReset:f.preventScrollReset,formData:v,body:b,formMethod:f.method||h,formEncType:f.encType||g,replace:f.replace,state:f.state,fromRouteId:i,flushSync:f.flushSync,viewTransition:f.viewTransition})},[o,c,s,i])}function r2(n,{relative:s}={}){let{basename:i}=y.useContext(Sn),o=y.useContext(Un);dt(o,"useFormAction must be used inside a RouteContext");let[c]=o.matches.slice(-1),u={...Er(n||".",{relative:s})},f=It();if(n==null){u.search=f.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:ss([i,u.pathname])),_r(u)}function l2(n,{relative:s}={}){let i=y.useContext(vb);dt(i!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:o}=jb("useViewTransitionState"),c=Er(n,{relative:s});if(!i.isTransitioning)return!1;let u=Os(i.currentLocation.pathname,o)||i.currentLocation.pathname,f=Os(i.nextLocation.pathname,o)||i.nextLocation.pathname;return xr(c.pathname,f)!=null||xr(c.pathname,u)!=null}function xt(){const n=Dc();return y.useCallback((s,i)=>{typeof s=="number"?n(s):n(s,i)},[n])}function Cb(n){return`/sessions/${encodeURIComponent(n)}`}function Wi(n,s){return s?`/environments/${encodeURIComponent(s)}/workspaces/${encodeURIComponent(n)}`:`/workspaces/${encodeURIComponent(n)}`}function os(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 ti(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 Eb(n){return`/sessions/new?${new URLSearchParams({env:n}).toString()}`}const Xi="/environments",c2="/environments/new";function Qi(n){return`/environments/${encodeURIComponent(n)}`}function u2(n){return`/environments/${encodeURIComponent(n)}/edit`}const Ji="/settings",d2="/settings/credentials",sf="/settings/personas",f2="/settings/personas/new";function Ab(n){return`/settings/personas/${encodeURIComponent(n)}`}const p2="/settings/shortcuts",m2="/pair",h2="/chat",Ja="/",g2="/tasks",Db="/workspaces/new",Rb="/knowledge";function v2(n,s){const i=typeof window<"u"?`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}`:"ws://localhost:3000",o=y.useRef(void 0),[c,u]=y.useState(!1),f=y.useRef(s.onMessage);f.current=s.onMessage;const m=y.useRef(s.onConnect);m.current=s.onConnect;const h=y.useRef(s.onDisconnect);h.current=s.onDisconnect;const g=y.useCallback(v=>{var b;((b=o.current)==null?void 0:b.readyState)===WebSocket.OPEN&&o.current.send(JSON.stringify(v))},[]);return y.useEffect(()=>{let v,b;function _(){v=new WebSocket(i),o.current=v,v.onopen=()=>{u(!0),m.current(g)},v.onmessage=S=>{if(typeof S.data!="string"){console.warn("[ws] Received non-string WebSocket message; ignoring");return}const T=CT(S.data);T&&f.current(T)},v.onclose=S=>{var T;if(u(!1),o.current=void 0,(T=h.current)==null||T.call(h),clearTimeout(b),S.code===AT){window.location.href=m2;return}b=setTimeout(_,ET)},v.onerror=()=>{v.close()}}return _(),()=>{clearTimeout(b),v==null||v.close()}},[i,g]),{connected:c,send:g}}const y2=new Proxy(globalThis.fetch,{apply(n,s,i){return Reflect.apply(globalThis.fetch,s,i)}}),b2=aT({baseUrl:"/",fetch:y2}),Ne=iT(oT,b2);function _2(n){return{id:n.id,displayName:n.displayName,adapterType:n.adapterType,adapterConfig:n.adapterConfig||"{}",status:n.status,bootstrapped:n.bootstrapped}}function m0(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 x2(n){return{sessionId:n.sessionId,eventType:rT(n.type),timestamp:n.timestamp,content:n.content,raw:n.raw||void 0}}function S2(n){return{id:n.id,name:n.name,description:n.description,repoUrl:n.repoUrl,environmentId:n.environmentId,status:lT(n.status),workingDirectory:n.workingDirectory,useWorktrees:n.useWorktrees,defaultPersonaId:n.defaultPersonaId,createdAt:n.createdAt,updatedAt:n.updatedAt}}function h0(n){return{id:n.id,workspaceId:n.workspaceId??void 0,title:n.title,description:n.description,status:cT(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 T2(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 k2(n){return{name:n.name,tokenType:n.type,envVar:n.envVar,filePath:n.filePath,expiresAt:n.expiresAt}}function w2(n){return{claude:uT(n.claude),github:Wl(n.github),copilot:Wl(n.copilot),codex:Wl(n.codex),goose:Wl(n.goose)}}function N2(n){return{name:n.name,repository:n.repository,state:n.state,gitStatus:n.gitStatus}}function af(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 j2(n){return{inputTokens:n.inputTokens,outputTokens:n.outputTokens,costUsd:n.costUsd,sessionCount:n.sessionCount}}function ec(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 g0=5e3;function C2(){const[n,s]=y.useState([]),[i,o]=y.useState({}),c=y.useCallback(()=>{Ne.listEnvironments({}).then(_=>{s(_.environments.map(_2))},()=>{})},[]),u=y.useCallback(_=>{switch(_.type){case"environment.added":return!0;case"environment.removed":{const S=_.payload.environmentId;return S&&(s(T=>T.filter(j=>j.id!==S)),o(T=>{const j={...T};return delete j[S],j})),!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 rb("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(j=>{const N={...j};return delete N[T],N})},g0)}return!0}default:return!1}},[c]),f=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)=>{Ne.addEnvironment({displayName:_,adapterType:S,adapterConfig:JSON.stringify(T??{})}).catch(()=>{})},[]),h=y.useCallback((_,S)=>{Ne.updateEnvironment({id:_,displayName:S.displayName,adapterConfig:S.adapterConfig?JSON.stringify(S.adapterConfig):void 0}).catch(()=>{})},[]),g=y.useCallback((_,S)=>{(async()=>{try{const j=Ne.provisionEnvironment({id:_,force:S??!1});for await(const N of j)o(k=>({...k,[_]:{stage:N.stage,message:N.message,progress:N.progress}})),N.stage==="ready"&&setTimeout(()=>{o(k=>{const E={...k};return delete E[_],E})},g0)}catch{o(j=>{const N={...j};return delete N[_],N})}})().catch(()=>{})},[]),v=y.useCallback(_=>{Ne.stopEnvironment({id:_}).catch(()=>{})},[]),b=y.useCallback(_=>{Ne.removeEnvironment({id:_}).catch(()=>{})},[]);return{environments:n,provisionStatus:i,loadEnvironments:c,addEnvironment:m,updateEnvironment:h,provisionEnvironment:g,stopEnvironment:v,removeEnvironment:b,handleEvent:u,handleLegacyMessage:f}}const rf=new Set(["pending","running","idle"]),E2=new Set(["completed","failed","interrupted","hibernating","suspended"]),v0=["pending","running","idle"];function A2(){const[n,s]=y.useState([]),[i,o]=y.useState([]),[c,u]=y.useState(0),[f,m]=y.useState(void 0),[h,g]=y.useState({}),v=y.useCallback(()=>{Ne.listSessions({}).then(R=>{const C=R.sessions.map(m0);s(U=>{const V=new Map(U.map(I=>[I.id,I]));return C.map(I=>{const F=V.get(I.id),ee=F==null?void 0:F.status;return!ee||ee===I.status?I:E2.has(ee)&&rf.has(I.status)?{...I,status:ee,...F.endReason!==void 0?{endReason:F.endReason}:{}}:rf.has(ee)&&rf.has(I.status)&&v0.indexOf(ee)>v0.indexOf(I.status)?{...I,status:ee}:I})})},()=>{})},[]),b=y.useCallback(R=>{if(R.type!=="session_event")return!1;if(!wT(R.payload))return rb("session_event","payload is not a valid SessionEvent"),!0;const C=R.payload;let U=0;if(o(V=>{const I=[...V,C];return I.length>Vi?(U=I.length-Vi,I.slice(-Vi)):I}),U>0&&u(V=>V+U),C.eventType==="usage")try{const V=JSON.parse(C.content),I=Number(V.input_tokens)||0,F=Number(V.output_tokens)||0,ee=Number(V.cost_usd)||0;(I>0||F>0||ee>0)&&s(re=>re.map(se=>se.id===C.sessionId?{...se,inputTokens:(se.inputTokens??0)+I,outputTokens:(se.outputTokens??0)+F,costUsd:(se.costUsd??0)+ee}:se))}catch{}if(C.eventType==="status"){const V=lb(C.content),I=cb(C.content);s(F=>F.some(re=>re.id===C.sessionId)?F.map(re=>re.id===C.sessionId?{...re,status:V,...I!==void 0?{endReason:I}:{}}:re):[...F,{id:C.sessionId,environmentId:"",runtime:"",status:V,prompt:"",startedAt:C.timestamp,...I!==void 0?{endReason:I}:{}}])}return!0},[]),_=y.useCallback(R=>{var C,U,V,I,F;switch(R.type){case"sessions":{const ee=Array.isArray((C=R.payload)==null?void 0:C.sessions)?R.payload.sessions:[];return s(ee),!0}case"spawned":{const ee=(U=R.payload)==null?void 0:U.sessionId;return typeof ee=="string"&&ee&&m(ee),v(),!0}case"session_events":{const ee=Array.isArray((V=R.payload)==null?void 0:V.events)?R.payload.events:[];return ee.length>0&&o(ee),!0}case"task_sessions":{const ee=(I=R.payload)==null?void 0:I.taskId;if(typeof ee=="string"&&ee){const re=Array.isArray((F=R.payload)==null?void 0:F.sessions)?R.payload.sessions:[];g(se=>({...se,[ee]:re}))}return!0}default:return!1}},[v]),S=y.useCallback((R,C,U,V)=>{Ne.spawnAgent({environmentId:R,prompt:C,personaId:U||"",workingDirectory:V||""}).then(I=>{m(I.id),v()},()=>{})},[v]),T=y.useCallback((R,C)=>{Ne.sendInput({sessionId:R,text:C}).catch(()=>{})},[]),j=y.useCallback(R=>{Ne.killAgent({id:R,graceful:!1}).catch(()=>{})},[]),N=y.useCallback(R=>{Ne.killAgent({id:R,graceful:!0}).catch(()=>{})},[]),k=y.useCallback(R=>{Ne.getSessionEvents({id:R}).then(C=>{const U=C.events.map(x2);if(U.length>0){let V=0;o(I=>{const F=new Set;for(const se of I)se.sessionId===R&&F.add(`${se.timestamp}|${se.eventType}`);const ee=U.filter(se=>!F.has(`${se.timestamp}|${se.eventType}`)),re=[...I,...ee].sort((se,ue)=>se.sessionId!==ue.sessionId?0:se.timestamp.localeCompare(ue.timestamp));return re.length>Vi?(V=re.length-Vi,re.slice(-Vi)):re}),V>0&&u(I=>I+V)}},()=>{})},[]),E=y.useCallback(()=>{o([]),u(0)},[]),A=y.useCallback(R=>{Ne.getTaskSessions({id:R}).then(C=>{const U=C.sessions.map(m0);g(V=>({...V,[R]:U}))},()=>{})},[]);return{sessions:n,events:i,eventsDropped:c,lastSpawnedId:f,taskSessions:h,loadSessions:v,spawn:S,sendInput:T,kill:j,stopGraceful:N,loadSessionEvents:k,clearEvents:E,loadTaskSessions:A,handleMessage:b,handleLegacyMessage:_}}function D2(){const[n,s]=y.useState([]),[i,o]=y.useState(!1),c=y.useCallback(()=>{Ne.listWorkspaces({}).then(v=>{s(v.workspaces.map(S2))},()=>{})},[]),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]),f=y.useCallback(()=>{o(!1)},[]),m=y.useCallback((v,b,_,S,T,j,N,k,E)=>{o(!0),Ne.createWorkspace({name:v,description:b||"",repoUrl:_||"",environmentId:S||"",defaultPersonaId:T||void 0,useWorktrees:j??!0,workingDirectory:N||void 0}).then(()=>{o(!1),k==null||k()},A=>{o(!1);const R=A instanceof up?A.message:"Failed to create workspace";E==null||E(R)})},[]),h=y.useCallback(v=>{Ne.archiveWorkspace({id:v}).catch(()=>{})},[]),g=y.useCallback((v,b)=>{Ne.updateWorkspace({id:v,...b}).catch(()=>{})},[]);return{workspaces:n,workspaceCreating:i,loadWorkspaces:c,createWorkspace:m,archiveWorkspace:h,updateWorkspace:g,handleEvent:u,onDisconnect:f}}function R2(){const[n,s]=y.useState([]),[i,o]=y.useState(void 0),c=y.useCallback(k=>{Ne.listTasks({workspaceId:k}).then(E=>{const A=E.tasks.map(h0);s(R=>[...R.filter(C=>C.workspaceId!==k),...A])},()=>{})},[]),u=y.useCallback(()=>{Ne.listTasks({}).then(k=>{const E=k.tasks.map(h0);s(A=>{const R=new Set(E.map(C=>C.id));return[...A.filter(C=>!R.has(C.id)),...E]})},()=>{})},[]),f=y.useCallback((k,E)=>{k?c(k):E&&s(A=>{const R=A.find(C=>C.id===E);return R!=null&&R.workspaceId?c(R.workspaceId):u(),A})},[c,u]),m=y.useCallback(k=>{const E=k.payload;switch(k.type){case"task.created":{const A=typeof E.workspaceId=="string"?E.workspaceId:"";return A&&c(A),!0}case"task.started":{const A=typeof E.taskId=="string"?E.taskId:"",R=typeof E.sessionId=="string"?E.sessionId:"",C=typeof E.workspaceId=="string"?E.workspaceId:"";return o(U=>A&&U===A?void 0:U),R&&A&&s(U=>U.map(V=>V.id===A?{...V,latestSessionId:R}:V)),f(C,A),!0}case"task.completed":case"task.deleted":case"task.updated":{const A=typeof E.workspaceId=="string"?E.workspaceId:"",R=typeof E.taskId=="string"?E.taskId:"";return f(A,R),!0}default:return!1}},[c,f]),h=y.useCallback(()=>{o(void 0)},[]),g=y.useCallback(k=>{var E,A;if(k.type==="tasks"){const R=Array.isArray((E=k.payload)==null?void 0:E.tasks)?k.payload.tasks:[],C=typeof((A=k.payload)==null?void 0:A.workspaceId)=="string"&&k.payload.workspaceId?k.payload.workspaceId:"";return s(C?U=>[...U.filter(V=>V.workspaceId!==C),...R]:U=>{const V=new Set(R.map(I=>I.id));return[...U.filter(I=>!V.has(I.id)),...R]}),!0}return!1},[]),v=y.useCallback((k,E,A,R,C,U,V,I,F)=>{Ne.createTask({workspaceId:k,title:E,description:A||"",dependsOn:R||[],parentTaskId:C||"",defaultPersonaId:U||void 0,canDecompose:V??void 0}).then(()=>{I==null||I()},ee=>{const re=ee instanceof up?ee.message:"Failed to create task";F==null||F(re)})},[]),b=y.useCallback((k,E,A,R)=>{o(k),Ne.startTask({taskId:k,personaId:E||"",environmentId:A||"",notes:R||""}).catch(()=>{o(void 0)})},[]),_=y.useCallback(k=>{Ne.stopTask({id:k}).catch(()=>{})},[]),S=y.useCallback(k=>{Ne.completeTask({id:k}).catch(()=>{})},[]),T=y.useCallback(k=>{Ne.resumeTask({id:k}).catch(()=>{})},[]),j=y.useCallback((k,E,A,R,C)=>{Ne.updateTask({id:k,title:E,description:A,dependsOn:R,...C!==void 0?{defaultPersonaId:C}:{}}).catch(()=>{})},[]),N=y.useCallback(k=>{Ne.deleteTask({id:k}).catch(()=>{})},[]);return{tasks:n,taskStartingId:i,loadTasks:c,loadAllTasks:u,createTask:v,startTask:b,stopTask:_,completeTask:S,resumeTask:T,updateTask:j,deleteTask:N,handleEvent:m,onDisconnect:h,handleLegacyMessage:g}}function M2(){const[n,s]=y.useState([]),i=y.useCallback(u=>{Ne.queryFindings({workspaceId:u}).then(f=>{s(f.findings.map(T2))},()=>{})},[]),o=y.useCallback(u=>{if(u.type==="finding.posted"){const f=typeof u.payload.workspaceId=="string"?u.payload.workspaceId:"";return f&&i(f),!0}return!1},[i]),c=y.useCallback((u,f,m,h,g)=>{Ne.postFinding({workspaceId:u,title:f,content:m,category:h??"general",tags:g??[]}).catch(()=>{})},[]);return{findings:n,loadFindings:i,postFinding:c,handleEvent:o}}function O2(){const[n,s]=y.useState([]),i=y.useCallback(()=>{Ne.listTokens({}).then(f=>{s(f.tokens.map(k2))},()=>{})},[]),o=y.useCallback(f=>f.type==="token.changed"?(i(),!0):!1,[i]),c=y.useCallback((f,m,h,g,v)=>{Ne.setToken({name:f,value:m,type:h,envVar:g,filePath:v}).catch(()=>{})},[]),u=y.useCallback(f=>{Ne.deleteToken({name:f}).catch(()=>{})},[]);return{tokens:n,loadTokens:i,setToken:c,deleteToken:u,handleEvent:o}}function I2(){const[n,s]=y.useState({claude:"off",github:"off",copilot:"off",codex:"off",goose:"off"}),i=y.useCallback(()=>{Ne.getCredentialProviders({}).then(u=>{s(w2(u))},()=>{})},[]),o=y.useCallback(u=>u.type==="credential.providers_changed"?(jT(u.payload)&&s(u.payload),!0):!1,[]),c=y.useCallback(u=>{const f=[{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 f)Ne.setCredentialProvider({provider:m,value:h}).catch(()=>{})},[]);return{credentialProviders:n,loadCredentials:i,updateCredentialProviders:c,handleEvent:o}}function L2(){const[n,s]=y.useState([]),[i,o]=y.useState(""),[c,u]=y.useState(""),[f,m]=y.useState(!1),h=y.useCallback(()=>{Ne.listCodespaces({}).then(v=>{s(v.codespaces.map(N2)),u(v.error)},()=>{})},[]),g=y.useCallback((v,b)=>{m(!0),o(""),Ne.createCodespace({repo:v,machine:b??""}).then(()=>{m(!1),h()},_=>{m(!1);const S=_ instanceof up?_.message:"Failed to create codespace";o(S)})},[h]);return{codespaces:n,codespaceError:i,codespaceListError:c,codespaceCreating:f,listCodespaces:h,createCodespace:g}}function B2(){const[n,s]=y.useState([]),i=y.useCallback(()=>{Ne.listPersonas({}).then(m=>{s(m.personas.map(af))},()=>{})},[]),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,j)=>Ne.createPersona({name:m,description:h,systemPrompt:g,runtime:v||"",model:b||"",maxTurns:_||0,type:S||"agent",script:T||"",allowedMcpTools:j||[]}).then(N=>{const k=af(N);return s(E=>[...E.filter(A=>A.id!==k.id),k]),k}),[]),u=y.useCallback((m,h,g,v,b,_,S,T,j,N)=>{const k={id:m};return h!==void 0&&(k.name=h),g!==void 0&&(k.description=g),v!==void 0&&(k.systemPrompt=v),b!==void 0&&(k.runtime=b),_!==void 0&&(k.model=_),S!==void 0&&(k.maxTurns=S),T!==void 0&&(k.type=T),j!==void 0&&(k.script=j),N!==void 0&&(k.allowedMcpTools=N),Ne.updatePersona(k).then(E=>{const A=af(E);return s(R=>R.map(C=>C.id===A.id?A:C)),A})},[]),f=y.useCallback(async m=>{await Ne.deletePersona({id:m}),s(h=>h.filter(g=>g.id!==m))},[]);return{personas:n,loadPersonas:i,createPersona:c,updatePersona:u,deletePersona:f,handleEvent:o}}function U2(n){if(n)try{return JSON.parse(n)}catch{return}}function z2(){const[n,s]=y.useState(new Map),[i,o]=y.useState([]),[c,u]=y.useState(void 0),[f,m]=y.useState(void 0),[h,g]=y.useState(!1),[v,b]=y.useState(""),_=y.useRef(""),S=y.useCallback(R=>{const C=R??"";_.current=C,b(""),g(!0),Ne.listRecentKnowledgeNodes({limit:30,workspaceId:C}).then(U=>{const V=new Map,I=[];for(const F of U.nodes)V.set(F.id,ec(F));for(const F of U.edges)I.push(of(F));for(const F of I){const ee=V.get(F.source);ee&&(ee.val+=1);const re=V.get(F.target);re&&(re.val+=1)}s(V),o(I),g(!1)},()=>{g(!1)})},[]),T=y.useCallback(R=>{R.trim()&&(b(R),m(void 0),u(void 0),g(!0),Ne.searchKnowledge({query:R,limit:20,workspaceId:_.current}).then(C=>{const U=new Map,V=[];for(const I of C.results){I.node&&U.set(I.node.id,ec(I.node,I.edges.length));for(const F of I.edges)V.push(of(F))}s(U),o(V),g(!1)},()=>{g(!1)}))},[]),j=y.useCallback(()=>{S(_.current)},[S]),N=y.useCallback(R=>{m(R),Ne.getKnowledgeNode({id:R}).then(C=>{if(!C.node){u(void 0);return}u({node:ec(C.node,C.edges.length),edges:C.edges.map(U=>({fromId:U.fromId,toId:U.toId,type:U.type,metadata:U2(U.metadataJson)}))})},()=>{u(void 0)})},[]),k=y.useCallback(()=>{m(void 0),u(void 0)},[]),E=y.useCallback(R=>{Ne.expandKnowledgeNode({id:R,depth:1}).then(C=>{s(U=>{const V=new Map(U);for(const I of C.nodes)V.has(I.id)||V.set(I.id,ec(I));return V}),o(U=>{const V=new Set(U.map(F=>`${F.source}:${F.target}:${F.type}`)),I=[];for(const F of C.edges){const ee=of(F),re=`${ee.source}:${ee.target}:${ee.type}`;V.has(re)||I.push(ee)}return[...U,...I]})},()=>{})},[]),A=y.useCallback(R=>!1,[]);return{graphData:{nodes:[...n.values()],links:i},selectedNode:c,selectedId:f,loading:h,searchQuery:v,search:T,clearSearch:j,selectNode:N,clearSelection:k,expandNode:E,loadRecent:S,handleEvent:A}}function P2(n){const[s,i]=y.useState(""),[o,c]=y.useState(void 0),[u,f]=y.useState({}),{connected:m,send:h}=v2(n,{onMessage:F,onConnect:ee,onDisconnect:re}),g=C2(),v=A2(),b=D2(),_=R2(),S=M2(),T=O2(),j=I2(),N=L2(),k=B2(),E=z2(),A="default_persona_id",R="onboarding_completed",C=y.useCallback(async ue=>{const Z=await Ne.setSetting({key:A,value:ue});i(Z.value)},[]),U=y.useCallback(()=>{c(!0),Ne.setSetting({key:R,value:"true"}).catch(()=>{})},[]),V=y.useCallback((ue,Z)=>{Ne.getUsage({scope:ue,id:Z}).then(oe=>{const O=`${ue}:${Z}`;f(G=>({...G,[O]:j2(oe)}))},()=>{})},[]);function I(ue){const Z=ue.payload.key,oe=ue.payload.value;if(ue.type==="setting.changed"){Z===A&&i(oe??""),Z===R&&c(oe==="true");return}if(g.handleEvent(ue)){(ue.type==="environment.removed"||ue.type==="environment.changed")&&v.loadSessions();return}if(!b.handleEvent(ue)){if(_.handleEvent(ue)){ue.type==="task.started"&&v.loadSessions();return}S.handleEvent(ue)||T.handleEvent(ue)||j.handleEvent(ue)||k.handleEvent(ue)||E.handleEvent(ue)}}function F(ue){var Z,oe,O,G;if(kT(ue)){I(ue);return}if(!v.handleMessage(ue)&&!((Z=v.handleLegacyMessage)!=null&&Z.call(v,ue))&&!((oe=g.handleLegacyMessage)!=null&&oe.call(g,ue))&&!((O=_.handleLegacyMessage)!=null&&O.call(_,ue))&&ue.type==="error"){console.error("[ws]",(G=ue.payload)==null?void 0:G.message);return}}function ee(ue){g.loadEnvironments(),v.loadSessions(),b.loadWorkspaces(),T.loadTokens(),j.loadCredentials(),k.loadPersonas(),Ne.getSetting({key:A}).then(Z=>{i(Z.value)},()=>{}),Ne.getSetting({key:R}).then(Z=>{c(Z.value==="true")},()=>{}),_.loadAllTasks(),ue({type:"subscribe_all"})}function re(){b.onDisconnect(),_.onDisconnect()}const se=y.useCallback(()=>{g.loadEnvironments(),v.loadSessions(),b.loadWorkspaces(),T.loadTokens()},[g.loadEnvironments,v.loadSessions,b.loadWorkspaces,T.loadTokens]);return{connected:m,send:h,environments:g.environments,sessions:v.sessions,events:v.events,eventsDropped:v.eventsDropped,lastSpawnedId:v.lastSpawnedId,workspaces:b.workspaces,tasks:_.tasks,findings:S.findings,tokens:T.tokens,spawn:v.spawn,sendInput:v.sendInput,kill:v.kill,stopGraceful:v.stopGraceful,refresh:se,loadSessionEvents:v.loadSessionEvents,clearEvents:v.clearEvents,loadWorkspaces:b.loadWorkspaces,createWorkspace:b.createWorkspace,archiveWorkspace:b.archiveWorkspace,updateWorkspace:b.updateWorkspace,loadTasks:_.loadTasks,loadAllTasks:_.loadAllTasks,createTask:_.createTask,startTask:_.startTask,stopTask:_.stopTask,completeTask:_.completeTask,resumeTask:_.resumeTask,updateTask:_.updateTask,deleteTask:_.deleteTask,loadFindings:S.loadFindings,postFinding:S.postFinding,loadEnvironments:g.loadEnvironments,addEnvironment:g.addEnvironment,updateEnvironment:g.updateEnvironment,loadTokens:T.loadTokens,setToken:T.setToken,deleteToken:T.deleteToken,credentialProviders:j.credentialProviders,updateCredentialProviders:j.updateCredentialProviders,provisionStatus:g.provisionStatus,provisionEnvironment:g.provisionEnvironment,stopEnvironment:g.stopEnvironment,removeEnvironment:g.removeEnvironment,codespaces:N.codespaces,codespaceError:N.codespaceError,codespaceListError:N.codespaceListError,codespaceCreating:N.codespaceCreating,listCodespaces:N.listCodespaces,createCodespace:N.createCodespace,workspaceCreating:b.workspaceCreating,taskStartingId:_.taskStartingId,personas:k.personas,createPersona:k.createPersona,updatePersona:k.updatePersona,deletePersona:k.deletePersona,taskSessions:v.taskSessions,loadTaskSessions:v.loadTaskSessions,appDefaultPersonaId:s,setAppDefaultPersonaId:C,onboardingCompleted:o,completeOnboarding:U,usageCache:u,loadUsage:V,knowledge:E}}const bp=y.createContext(void 0);function V2({children:n}){const s=P2();return l.jsx(bp.Provider,{value:s,children:n})}function pt(){const n=y.useContext(bp);if(!n)throw new Error("useGrackle must be used within GrackleProvider");return n}const ns=[{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
|
|
38
|
-
export function verifyToken(req: Request, res: Response, next: NextFunction): void {
|
|
39
|
-
const header = req.headers.authorization;
|
|
40
|
-
if (!header?.startsWith("Bearer ")) {
|
|
41
|
-
res.status(401).json({ error: "Missing token" });
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
const decoded = jwt.verify(header.slice(7), JWT_SECRET) as JwtPayload;
|
|
45
|
-
req.user = decoded;
|
|
46
|
-
next();
|
|
47
|
-
}
|
|
48
|
-
\`\`\``,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
|
|
49
|
-
CREATE TABLE audit_log (
|
|
50
|
-
id BIGSERIAL PRIMARY KEY,
|
|
51
|
-
user_id UUID REFERENCES users(id),
|
|
52
|
-
action TEXT NOT NULL,
|
|
53
|
-
entity_type TEXT NOT NULL,
|
|
54
|
-
entity_id TEXT NOT NULL,
|
|
55
|
-
old_value JSONB,
|
|
56
|
-
new_value JSONB,
|
|
57
|
-
ip_address INET,
|
|
58
|
-
created_at TIMESTAMPTZ DEFAULT now()
|
|
59
|
-
);
|
|
60
|
-
\`\`\``,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}],ca=[{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"}],H2=new Map(ns.map(n=>[n.id,n]));function lf(n){const s=H2.get(n);if(!s)throw new Error(`MOCK_KNOWLEDGE_NODES is missing node "${n}"`);return s}const y0={"kn-auth-flow":{node:lf("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:lf("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:lf("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"}]}},q2=[{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}],G2=[{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:"claude-code",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:"claude-code",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}],$2=[{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.
|
|
61
|
-
Project: acme/alpha — Node.js + Express REST API
|
|
62
|
-
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";
|
|
63
|
-
import type { Request, Response, NextFunction } from "express";
|
|
64
|
-
|
|
65
|
-
export function requireAuth(req: Request, res: Response, next: NextFunction): void {
|
|
66
|
-
if (!req.session?.userId) {
|
|
67
|
-
res.status(401).json({ error: "Not authenticated" });
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
next();
|
|
71
|
-
}`,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) {
|
|
72
|
-
src/routes/login.ts:18: req.session.userId = user.id;
|
|
73
|
-
src/routes/login.ts:19: req.session.role = user.role;
|
|
74
|
-
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";
|
|
75
|
-
import bcrypt from "bcrypt";
|
|
76
|
-
import { db } from "../db.js";
|
|
77
|
-
|
|
78
|
-
const router = Router();
|
|
79
|
-
|
|
80
|
-
router.post("/login", async (req, res) => {
|
|
81
|
-
const { email, password } = req.body;
|
|
82
|
-
const user = await db.users.findByEmail(email);
|
|
83
|
-
if (!user || !await bcrypt.compare(password, user.passwordHash)) {
|
|
84
|
-
return res.status(401).json({ error: "Invalid credentials" });
|
|
85
|
-
}
|
|
86
|
-
req.session.userId = user.id;
|
|
87
|
-
req.session.role = user.role;
|
|
88
|
-
res.json({ ok: true });
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
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.
|
|
92
|
-
Project: acme/alpha — Node.js + Express REST API
|
|
93
|
-
Task: Implement auth middleware using JWT tokens
|
|
94
|
-
|
|
95
|
-
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
|
|
96
|
-
src/routes/login.ts
|
|
97
|
-
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
|
|
98
|
-
|
|
99
|
-
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";
|
|
100
|
-
import type { Request, Response, NextFunction } from "express";
|
|
101
|
-
|
|
102
|
-
const JWT_SECRET = process.env.JWT_SECRET || "change-me";
|
|
103
|
-
|
|
104
|
-
export interface JwtPayload {
|
|
105
|
-
userId: string;
|
|
106
|
-
role: string;
|
|
107
|
-
iat: number;
|
|
108
|
-
exp: number;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
export function verifyToken(req: Request, res: Response, next: NextFunction): void {
|
|
112
|
-
const header = req.headers.authorization;
|
|
113
|
-
if (!header?.startsWith("Bearer ")) {
|
|
114
|
-
res.status(401).json({ error: "Missing or malformed token" });
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
try {
|
|
118
|
-
const decoded = jwt.verify(header.slice(7), JWT_SECRET) as JwtPayload;
|
|
119
|
-
req.user = decoded;
|
|
120
|
-
next();
|
|
121
|
-
} catch (err) {
|
|
122
|
-
if (err instanceof jwt.TokenExpiredError) {
|
|
123
|
-
res.status(401).json({ error: "Token expired" });
|
|
124
|
-
} else {
|
|
125
|
-
res.status(403).json({ error: "Invalid token" });
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
`}}),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.
|
|
130
|
-
|
|
131
|
-
The new login flow will:
|
|
132
|
-
1. Validate credentials (unchanged)
|
|
133
|
-
2. Generate a JWT with \`userId\` and \`role\` claims
|
|
134
|
-
3. Return the token in the response body
|
|
135
|
-
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";
|
|
136
|
-
import bcrypt from "bcrypt";
|
|
137
|
-
import jwt from "jsonwebtoken";
|
|
138
|
-
import crypto from "node:crypto";
|
|
139
|
-
import { db } from "../db.js";
|
|
140
|
-
|
|
141
|
-
const JWT_SECRET = process.env.JWT_SECRET || "change-me";
|
|
142
|
-
const ACCESS_TOKEN_EXPIRY = "24h";
|
|
143
|
-
const REFRESH_TOKEN_BYTES = 48;
|
|
144
|
-
|
|
145
|
-
const router = Router();
|
|
146
|
-
|
|
147
|
-
router.post("/login", async (req, res) => {
|
|
148
|
-
const { email, password } = req.body;
|
|
149
|
-
const user = await db.users.findByEmail(email);
|
|
150
|
-
if (!user || !(await bcrypt.compare(password, user.passwordHash))) {
|
|
151
|
-
return res.status(401).json({ error: "Invalid credentials" });
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
const accessToken = jwt.sign(
|
|
155
|
-
{ userId: user.id, role: user.role },
|
|
156
|
-
JWT_SECRET,
|
|
157
|
-
{ expiresIn: ACCESS_TOKEN_EXPIRY },
|
|
158
|
-
);
|
|
159
|
-
|
|
160
|
-
const refreshToken = crypto.randomBytes(REFRESH_TOKEN_BYTES).toString("hex");
|
|
161
|
-
await db.refreshTokens.create({ userId: user.id, token: refreshToken });
|
|
162
|
-
|
|
163
|
-
res.json({ accessToken, refreshToken, expiresIn: ACCESS_TOKEN_EXPIRY });
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
export default router;
|
|
167
|
-
`}}),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
|
|
168
|
-
PASS src/routes/__tests__/protected.test.ts
|
|
169
|
-
FAIL src/middleware/__tests__/auth.test.ts
|
|
170
|
-
x should reject missing session (12ms)
|
|
171
|
-
x should allow valid session (8ms)
|
|
172
|
-
|
|
173
|
-
2 failed, 12 passed, 14 total
|
|
174
|
-
|
|
175
|
-
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.
|
|
176
|
-
|
|
177
|
-
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";
|
|
178
|
-
import jwt from "jsonwebtoken";
|
|
179
|
-
import { verifyToken } from "../auth.js";
|
|
180
|
-
import { createMockReqRes } from "../../test-utils/mock-express.js";
|
|
181
|
-
|
|
182
|
-
const SECRET = "test-secret";
|
|
183
|
-
process.env.JWT_SECRET = SECRET;
|
|
184
|
-
|
|
185
|
-
describe("verifyToken", () => {
|
|
186
|
-
it("should reject requests without Authorization header", () => {
|
|
187
|
-
const { req, res, next } = createMockReqRes();
|
|
188
|
-
verifyToken(req, res, next);
|
|
189
|
-
expect(res.status).toHaveBeenCalledWith(401);
|
|
190
|
-
});
|
|
191
|
-
|
|
192
|
-
it("should reject expired tokens", () => {
|
|
193
|
-
const token = jwt.sign({ userId: "u1", role: "user" }, SECRET, { expiresIn: "-1h" });
|
|
194
|
-
const { req, res, next } = createMockReqRes({ authorization: \`Bearer \${token}\` });
|
|
195
|
-
verifyToken(req, res, next);
|
|
196
|
-
expect(res.status).toHaveBeenCalledWith(401);
|
|
197
|
-
});
|
|
198
|
-
|
|
199
|
-
it("should accept valid tokens and attach user to request", () => {
|
|
200
|
-
const token = jwt.sign({ userId: "u1", role: "admin" }, SECRET, { expiresIn: "1h" });
|
|
201
|
-
const { req, res, next } = createMockReqRes({ authorization: \`Bearer \${token}\` });
|
|
202
|
-
verifyToken(req, res, next);
|
|
203
|
-
expect(next).toHaveBeenCalled();
|
|
204
|
-
expect(req.user).toMatchObject({ userId: "u1", role: "admin" });
|
|
205
|
-
});
|
|
206
|
-
});
|
|
207
|
-
`}}),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
|
|
208
|
-
PASS src/routes/__tests__/protected.test.ts
|
|
209
|
-
PASS src/middleware/__tests__/auth.test.ts
|
|
210
|
-
|
|
211
|
-
Test Suites: 3 passed, 3 total
|
|
212
|
-
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:
|
|
213
|
-
|
|
214
|
-
### Changes made
|
|
215
|
-
|
|
216
|
-
| File | Action |
|
|
217
|
-
|------|--------|
|
|
218
|
-
| \`src/middleware/auth.ts\` | Rewrote to verify JWT Bearer tokens |
|
|
219
|
-
| \`src/routes/login.ts\` | Now issues JWT access + refresh tokens |
|
|
220
|
-
| \`src/routes/protected.ts\` | Updated to read \`req.user\` from JWT payload |
|
|
221
|
-
| \`src/middleware/__tests__/auth.test.ts\` | Updated tests for JWT verification |
|
|
222
|
-
|
|
223
|
-
### Key decisions
|
|
224
|
-
- **Access token expiry**: 24 hours (configurable via \`JWT_SECRET\` env var)
|
|
225
|
-
- **Refresh tokens**: 48-byte random hex, stored in DB
|
|
226
|
-
- **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.
|
|
227
|
-
Project: acme/alpha — Node.js + Express REST API
|
|
228
|
-
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";
|
|
229
|
-
import bcrypt from "bcrypt";
|
|
230
|
-
import { db } from "../db.js";
|
|
231
|
-
import { validateEmail, validatePassword } from "../utils/validators.js";
|
|
232
|
-
|
|
233
|
-
const SALT_ROUNDS = 12;
|
|
234
|
-
const router = Router();
|
|
235
|
-
|
|
236
|
-
router.post("/register", async (req, res) => {
|
|
237
|
-
const { name, email, password } = req.body;
|
|
238
|
-
|
|
239
|
-
if (!name || !email || !password) {
|
|
240
|
-
return res.status(400).json({ error: "Missing required fields" });
|
|
241
|
-
}
|
|
242
|
-
if (!validateEmail(email)) {
|
|
243
|
-
return res.status(400).json({ error: "Invalid email format" });
|
|
244
|
-
}
|
|
245
|
-
if (!validatePassword(password)) {
|
|
246
|
-
return res.status(400).json({ error: "Password too weak" });
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
const existing = await db.users.findByEmail(email);
|
|
250
|
-
if (existing) {
|
|
251
|
-
return res.status(409).json({ error: "Email already registered" });
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
const passwordHash = await bcrypt.hash(password, SALT_ROUNDS);
|
|
255
|
-
const user = await db.users.create({ name, email, passwordHash });
|
|
256
|
-
res.status(201).json({ id: user.id, name: user.name, email: user.email });
|
|
257
|
-
});
|
|
258
|
-
|
|
259
|
-
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:
|
|
260
|
-
|
|
261
|
-
1. **Happy path** - valid registration
|
|
262
|
-
2. **Missing fields** - each required field missing
|
|
263
|
-
3. **Invalid email** - malformed email format
|
|
264
|
-
4. **Weak password** - password validation failure
|
|
265
|
-
5. **Duplicate email** - conflict with existing user
|
|
266
|
-
6. **SQL injection** - malicious email input
|
|
267
|
-
7. **XSS payload** - HTML in the name field
|
|
268
|
-
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
|
|
269
|
-
POST /api/register
|
|
270
|
-
✓ should register a valid user (28ms)
|
|
271
|
-
✓ should reject missing name (4ms)
|
|
272
|
-
✓ should reject missing email (3ms)
|
|
273
|
-
✓ should reject missing password (3ms)
|
|
274
|
-
✓ should reject invalid email format (5ms)
|
|
275
|
-
✓ should reject weak password (4ms)
|
|
276
|
-
✓ should reject duplicate email (12ms)
|
|
277
|
-
✓ should sanitize HTML in name field (6ms)
|
|
278
|
-
|
|
279
|
-
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.
|
|
280
|
-
Project: acme/alpha — Node.js + Express + PostgreSQL
|
|
281
|
-
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 (
|
|
282
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
283
|
-
name TEXT NOT NULL,
|
|
284
|
-
email TEXT UNIQUE NOT NULL,
|
|
285
|
-
password_hash TEXT NOT NULL,
|
|
286
|
-
role TEXT DEFAULT 'user',
|
|
287
|
-
created_at TIMESTAMPTZ DEFAULT now(),
|
|
288
|
-
updated_at TIMESTAMPTZ DEFAULT now()
|
|
289
|
-
);
|
|
290
|
-
|
|
291
|
-
CREATE TABLE sessions (
|
|
292
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
293
|
-
user_id UUID REFERENCES users(id),
|
|
294
|
-
expires_at TIMESTAMPTZ NOT NULL,
|
|
295
|
-
created_at TIMESTAMPTZ DEFAULT now()
|
|
296
|
-
);`,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
|
|
297
|
-
-- Add audit logging and user activity tracking
|
|
298
|
-
|
|
299
|
-
BEGIN;
|
|
300
|
-
|
|
301
|
-
-- 1. Add last_login_at to users
|
|
302
|
-
ALTER TABLE users ADD COLUMN last_login_at TIMESTAMPTZ;
|
|
303
|
-
|
|
304
|
-
-- 2. Index for session cleanup queries
|
|
305
|
-
CREATE INDEX CONCURRENTLY idx_sessions_expires_at ON sessions (expires_at);
|
|
306
|
-
|
|
307
|
-
-- 3. Audit log table
|
|
308
|
-
CREATE TABLE audit_log (
|
|
309
|
-
id BIGSERIAL PRIMARY KEY,
|
|
310
|
-
user_id UUID REFERENCES users(id),
|
|
311
|
-
action TEXT NOT NULL,
|
|
312
|
-
entity_type TEXT NOT NULL,
|
|
313
|
-
entity_id TEXT NOT NULL,
|
|
314
|
-
old_value JSONB,
|
|
315
|
-
new_value JSONB,
|
|
316
|
-
ip_address INET,
|
|
317
|
-
created_at TIMESTAMPTZ DEFAULT now()
|
|
318
|
-
);
|
|
319
|
-
|
|
320
|
-
CREATE INDEX idx_audit_log_user ON audit_log (user_id);
|
|
321
|
-
CREATE INDEX idx_audit_log_entity ON audit_log (entity_type, entity_id);
|
|
322
|
-
CREATE INDEX idx_audit_log_created ON audit_log (created_at);
|
|
323
|
-
|
|
324
|
-
COMMIT;
|
|
325
|
-
`}}),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
|
|
326
|
-
- ALTER TABLE users ADD COLUMN last_login_at
|
|
327
|
-
- CREATE INDEX CONCURRENTLY idx_sessions_expires_at
|
|
328
|
-
- CREATE TABLE audit_log
|
|
329
|
-
- 3 indexes on audit_log
|
|
330
|
-
|
|
331
|
-
WARNING: CREATE INDEX CONCURRENTLY cannot run inside a transaction block.
|
|
332
|
-
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.
|
|
333
|
-
Project: acme/data-pipeline — ETL pipelines for analytics
|
|
334
|
-
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
|
|
335
|
-
src/middleware/error-handler.ts
|
|
336
|
-
src/middleware/logger.ts
|
|
337
|
-
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:
|
|
338
|
-
|
|
339
|
-
- Uses an **in-memory token bucket** per client IP
|
|
340
|
-
- Supports configurable rate (requests/second) and burst size
|
|
341
|
-
- Returns \`429 Too Many Requests\` with \`Retry-After\` header
|
|
342
|
-
- Has a Redis adapter option for multi-instance deployments
|
|
343
|
-
|
|
344
|
-
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.
|
|
345
|
-
Project: acme/alpha — Node.js + Express + PostgreSQL
|
|
346
|
-
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";
|
|
347
|
-
|
|
348
|
-
const pool = new pg.Pool({
|
|
349
|
-
connectionString: process.env.DATABASE_URL,
|
|
350
|
-
max: 20,
|
|
351
|
-
idleTimeoutMillis: 30000,
|
|
352
|
-
});
|
|
353
|
-
|
|
354
|
-
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:
|
|
355
|
-
|
|
356
|
-
1. **A \`PoolManager\` class** that creates and caches per-tenant pools
|
|
357
|
-
2. **Configurable limits** per tenant (max connections, idle timeout)
|
|
358
|
-
3. **Health checks** with automatic pool eviction for unhealthy connections
|
|
359
|
-
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";
|
|
360
|
-
src/routes/users.ts:2:import { pool } from "../db/pool.js";
|
|
361
|
-
src/routes/register.ts:3:import { pool } from "../db/pool.js";
|
|
362
|
-
src/routes/admin.ts:4:import { pool } from "../db/pool.js";
|
|
363
|
-
src/services/billing.ts:2:import { pool } from "../db/pool.js";
|
|
364
|
-
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:
|
|
365
|
-
1. Create a new \`PoolManager\` abstraction
|
|
366
|
-
2. Update all consumers to use \`getPool(tenantId)\` instead of the global pool
|
|
367
|
-
3. Add middleware to extract tenant ID from the request
|
|
368
|
-
|
|
369
|
-
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"}],Z2=[{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"}],F2=[{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:""},{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:""},{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:""}],b0=[{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"}],K2=[{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:""}],Y2=[{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-5-20250929",maxTurns:50,mcpServers:"[]",createdAt:"2026-02-20T10:00:00Z",updatedAt:"2026-02-20T10:00:00Z",type:"agent",script:"",allowedMcpTools:[]},{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-5-20250929",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-5-20250929",maxTurns:30,mcpServers:"[]",createdAt:"2026-02-20T10:10:00Z",updatedAt:"2026-02-20T10:10:00Z",type:"agent",script:"",allowedMcpTools:[]},{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-5-20250929",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));
|
|
370
|
-
for (const f of files) {
|
|
371
|
-
const eslintResult = await host.exec("npx", ["eslint", "--fix", f.filename]);
|
|
372
|
-
if (eslintResult.exitCode !== 0) {
|
|
373
|
-
env.findings.push({ category: "lint", title: \`Lint issues in \${f.filename}\`, content: eslintResult.stderr });
|
|
374
|
-
}
|
|
375
|
-
const prettierResult = await host.exec("npx", ["prettier", "--write", f.filename]);
|
|
376
|
-
if (prettierResult.exitCode !== 0) {
|
|
377
|
-
env.findings.push({ category: "format", title: \`Prettier issues in \${f.filename}\`, content: prettierResult.stderr });
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
env.findings.push({ category: "summary", title: "Lint & format pass complete", content: \`Ran ESLint and Prettier on \${files.length} files\` });`,allowedMcpTools:[]}],J2={"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 _0=[{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
|
|
381
|
-
src/routes/auth.ts
|
|
382
|
-
src/routes/billing.ts
|
|
383
|
-
src/routes/admin.ts
|
|
384
|
-
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.
|
|
385
|
-
|
|
386
|
-
\`\`\`typescript
|
|
387
|
-
const router = Router();
|
|
388
|
-
router.use(authenticate);
|
|
389
|
-
router.use(validateBody);
|
|
390
|
-
|
|
391
|
-
router.get("/", listUsers);
|
|
392
|
-
router.post("/", createUser);
|
|
393
|
-
router.get("/:id", getUser);
|
|
394
|
-
router.put("/:id", updateUser);
|
|
395
|
-
router.delete("/:id", deleteUser);
|
|
396
|
-
\`\`\``}},{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
|
|
397
|
-
PASS src/routes/__tests__/auth.test.ts
|
|
398
|
-
PASS src/routes/__tests__/billing.test.ts
|
|
399
|
-
|
|
400
|
-
Test Suites: 3 passed, 3 total
|
|
401
|
-
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 (
|
|
402
|
-
id UUID PRIMARY KEY,
|
|
403
|
-
name TEXT NOT NULL,
|
|
404
|
-
email TEXT UNIQUE NOT NULL,
|
|
405
|
-
created_at TIMESTAMPTZ DEFAULT now()
|
|
406
|
-
);
|
|
407
|
-
|
|
408
|
-
CREATE TABLE sessions (
|
|
409
|
-
id UUID PRIMARY KEY,
|
|
410
|
-
user_id UUID REFERENCES users(id),
|
|
411
|
-
expires_at TIMESTAMPTZ NOT NULL
|
|
412
|
-
);`,raw:JSON.stringify({tool_use_id:"stream-b-01"})}},{delayMs:2600,event:{eventType:"text",timestamp:Ee(2600),content:`I found the tables to modify:
|
|
413
|
-
- **users**: add column \`last_login_at\`
|
|
414
|
-
- **sessions**: add index on \`expires_at\`
|
|
415
|
-
- **audit_log**: new table
|
|
416
|
-
|
|
417
|
-
This migration will add a NOT NULL column to the \`users\` table. The table has **50,000+ rows** which may lock the table briefly.
|
|
418
|
-
|
|
419
|
-
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
|
|
420
|
-
Applying 003_sessions_index.sql... done
|
|
421
|
-
Applying 004_audit_log.sql... done
|
|
422
|
-
|
|
423
|
-
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";
|
|
424
|
-
import type { Invoice, LineItem } from "../types/billing.js";
|
|
425
|
-
|
|
426
|
-
export class BillingService {
|
|
427
|
-
constructor(private stripe: StripeClient) {}
|
|
428
|
-
|
|
429
|
-
async calculateMonthlyTotal(userId: string): Promise<number> {
|
|
430
|
-
const invoices = await this.stripe.listInvoices(userId);
|
|
431
|
-
return invoices.reduce((sum, inv) => sum + inv.total, 0);
|
|
432
|
-
}
|
|
433
|
-
}`,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";
|
|
434
|
-
import type { Request, Response, NextFunction } from "express";
|
|
435
|
-
|
|
436
|
-
const JWT_SECRET = process.env.JWT_SECRET || "change-me";
|
|
437
|
-
|
|
438
|
-
export function verifyToken(req: Request, res: Response, next: NextFunction): void {
|
|
439
|
-
const header = req.headers.authorization;
|
|
440
|
-
if (!header?.startsWith("Bearer ")) {
|
|
441
|
-
res.status(401).json({ error: "Missing token" });
|
|
442
|
-
return;
|
|
443
|
-
}
|
|
444
|
-
try {
|
|
445
|
-
const decoded = jwt.verify(header.slice(7), JWT_SECRET);
|
|
446
|
-
if (decoded.exp > Date.now() / 1000) {
|
|
447
|
-
res.status(403).json({ error: "Token expired" });
|
|
448
|
-
return;
|
|
449
|
-
}
|
|
450
|
-
req.user = decoded;
|
|
451
|
-
next();
|
|
452
|
-
} catch {
|
|
453
|
-
res.status(403).json({ error: "Invalid token" });
|
|
454
|
-
}
|
|
455
|
-
}`,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
|
|
456
|
-
|
|
457
|
-
PASS src/auth.test.ts
|
|
458
|
-
✓ validates JWT token (12ms)
|
|
459
|
-
✓ rejects expired token (3ms)
|
|
460
|
-
✓ handles missing header (1ms)
|
|
461
|
-
|
|
462
|
-
Tests: 3 passed, 3 total
|
|
463
|
-
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) {
|
|
464
|
-
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"}}]}],x0=400;function W2({children:n}){const[s,i]=y.useState(q2),[o,c]=y.useState(G2),[u,f]=y.useState($2),[m,h]=y.useState(void 0),[g,v]=y.useState(Z2),[b,_]=y.useState(F2),[S,T]=y.useState(b0),[j,N]=y.useState(K2),[k,E]=y.useState({claude:"off",github:"off",copilot:"off",codex:"off",goose:"off"}),[A,R]=y.useState(Y2),[C]=y.useState(J2),[U,V]=y.useState(""),[I,F]=y.useState(ns),[ee,re]=y.useState(ca),[se,ue]=y.useState(void 0),[Z,oe]=y.useState(void 0),[O,G]=y.useState(""),X=y.useRef(void 0),fe=y.useRef(0),he=y.useRef(0),ze=y.useRef(new Set),je=y.useRef(new Map),we=y.useRef(b);we.current=b;const Ae=y.useRef(new Map),ce=y.useRef(new Map),pe=y.useCallback(H=>(fe.current+=1,`mock-${H}-${String(fe.current).padStart(3,"0")}`),[]),me=y.useCallback(()=>{const H=_0[he.current%_0.length];return he.current+=1,H},[]),Re=y.useCallback((H,te,ie)=>{const le=setTimeout(()=>{var de;ze.current.delete(le),ie&&((de=je.current.get(ie))==null||de.delete(le)),H()},te);ze.current.add(le),ie&&(je.current.has(ie)||je.current.set(ie,new Set),je.current.get(ie).add(le))},[]),Lt=y.useCallback(H=>{const te=je.current.get(H);te&&(te.forEach(ie=>{clearTimeout(ie),ze.current.delete(ie)}),je.current.delete(H))},[]),Q=y.useCallback((H,te,ie)=>{c(le=>le.map(de=>de.id===H?{...de,status:te,...ie!==void 0?{endReason:ie}:{}}:de))},[]),W=y.useCallback(H=>{f(te=>[...te,H])},[]),Te=y.useCallback((H,te,ie)=>{te.forEach((le,de)=>{Re(()=>{const He={sessionId:H,...le.event,timestamp:new Date().toISOString()};if(W(He),le.event.eventType==="status"){const be=lb(le.event.content),Oe=cb(le.event.content);Q(H,be,Oe)}de===te.length-1&&ie&&ie()},le.delayMs,H)})},[Re,W,Q]),un=y.useCallback((H,te,ie,le)=>{console.log("[MockGrackle] spawn",{environmentId:H,prompt:te,runtime:le});const de=pe("sess"),He={id:de,environmentId:H,runtime:le||"claude-code",status:"running",prompt:te,startedAt:new Date().toISOString()};c(Oe=>[...Oe,He]),h(de);const be=me();if(console.log(`[MockGrackle] Playing scenario: ${be.label}`),be.pauseForInput){const Oe=be.pauseAfterStep??be.steps.length-1,Ke=be.steps.slice(0,Oe+1),nt=Ke.length>0?Ke[Ke.length-1].delayMs:0;Te(de,Ke),Re(()=>{Q(de,"idle"),W({sessionId:de,eventType:"status",timestamp:new Date().toISOString(),content:"idle"})},nt+x0,de),be.resumeSteps&&Ae.current.set(de,be.resumeSteps)}else Te(de,be.steps)},[pe,me,Te,Re,Q,W]),Fe=y.useCallback(H=>{console.log("[MockGrackle] kill",H),Lt(H),Ae.current.delete(H),Q(H,"stopped","killed"),W({sessionId:H,eventType:"status",timestamp:new Date().toISOString(),content:"killed"}),_(te=>te.map(ie=>ie.latestSessionId===H&&ie.status==="working"?{...ie,status:"not_started"}:ie))},[Lt,Q,W]),Kn=y.useCallback(H=>{console.log("[MockGrackle] stopGraceful",H),Lt(H),Ae.current.delete(H),Q(H,"stopped","terminated"),W({sessionId:H,eventType:"status",timestamp:new Date().toISOString(),content:"terminated"}),_(te=>te.map(ie=>ie.latestSessionId===H&&ie.status==="working"?{...ie,status:"not_started"}:ie))},[Lt,Q,W]),Yn=y.useCallback(()=>{console.log("[MockGrackle] refresh")},[]),zn=y.useCallback(H=>{console.log("[MockGrackle] loadSessionEvents",H)},[]),Jn=y.useCallback(()=>{console.log("[MockGrackle] clearEvents"),f([])},[]),Tn=y.useCallback((H,te,ie,le,de,He,be,Oe,Ke)=>{console.log("[MockGrackle] createWorkspace",{name:H,description:te});const nt={id:pe("proj"),name:H,description:te||"",repoUrl:ie||"",environmentId:le||"",status:"active",workingDirectory:be||"",useWorktrees:He??!0,defaultPersonaId:de||"",createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};v(qe=>[...qe,nt]),Oe&&Oe()},[pe]),Bs=y.useCallback(H=>{console.log("[MockGrackle] archiveWorkspace",H),v(te=>te.map(ie=>ie.id===H?{...ie,status:"archived"}:ie))},[]),dn=y.useCallback(H=>{console.log("[MockGrackle] loadTasks",H)},[]),Me=y.useCallback((H,te,ie,le,de,He,be,Oe,Ke)=>{console.log("[MockGrackle] createTask",{workspaceId:H,title:te,parentTaskId:de}),_(nt=>{const zt=nt.filter(Vn=>Vn.workspaceId===H).reduce((Vn,xa)=>Math.max(Vn,xa.sortOrder),0),Pt=de?nt.find(Vn=>Vn.id===de):void 0;if(de&&!Pt)return console.warn("[MockGrackle] Parent task not found:",de),nt;if(Pt&&!Pt.canDecompose)return console.warn("[MockGrackle] Parent task does not have decomposition rights:",de),nt;const St=Pt?Pt.depth+1:0,ls={id:pe("task"),workspaceId:H,title:te,description:ie||"",status:"not_started",branch:"",latestSessionId:"",dependsOn:le||[],reviewNotes:void 0,sortOrder:zt+1,createdAt:new Date().toISOString(),parentTaskId:de||"",depth:St,childTaskIds:[],canDecompose:be??!de,defaultPersonaId:He||"",workpad:""};return[...nt,ls]}),Oe&&Oe()},[pe]),Rt=y.useCallback((H,te,ie,le)=>{var nt;console.log("[MockGrackle] startTask",{taskId:H});const de=we.current.find(qe=>qe.id===H),He=(de==null?void 0:de.title)??"",be=pe("sess"),Oe={id:be,environmentId:"env-local-01",runtime:"claude-code",status:"running",prompt:He||H,startedAt:new Date().toISOString()};c(qe=>[...qe,Oe]),_(qe=>qe.map(zt=>zt.id===H?{...zt,status:"working",latestSessionId:be,branch:`mock/${H.slice(0,8)}`}:zt));const Ke=me();if(console.log(`[MockGrackle] Playing task scenario: ${Ke.label}`),Ke.pauseForInput){const qe=Ke.pauseAfterStep??Ke.steps.length-1,zt=Ke.steps.slice(0,qe+1),Pt=zt.length>0?zt[zt.length-1].delayMs:0;if(Te(be,zt),Re(()=>{Q(be,"idle"),W({sessionId:be,eventType:"status",timestamp:new Date().toISOString(),content:"idle"})},Pt+x0,be),Ke.resumeSteps){const St=[...Ke.resumeSteps];Ae.current.set(be,St);const ls=St.reduce((Vn,xa)=>Math.max(Vn,xa.delayMs),0);ce.current.set(be,{taskId:H,delayAfterResume:ls+200})}}else{const qe=Ke.steps.length>0?Ke.steps[Ke.steps.length-1].delayMs:0;Te(be,Ke.steps);const zt=(nt=Ke.steps[Ke.steps.length-1])==null?void 0:nt.event.content;Re(()=>{zt==="completed"?_(Pt=>Pt.map(St=>St.id===H&&St.status==="working"?{...St,status:"paused"}:St)):zt==="failed"&&_(Pt=>Pt.map(St=>St.id===H&&St.status==="working"?{...St,status:"failed"}:St))},qe+100,be)}},[pe,me,Te,Re,Q,W]),Kt=y.useCallback((H,te)=>{console.log("[MockGrackle] sendInput",{sessionId:H,text:te}),W({sessionId:H,eventType:"output",timestamp:new Date().toISOString(),content:`User input: ${te}`}),Q(H,"running"),W({sessionId:H,eventType:"status",timestamp:new Date().toISOString(),content:"running"});const ie=Ae.current.get(H);if(ie)Ae.current.delete(H),Te(H,ie);else{const de=[{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"}}];Te(H,de)}const le=ce.current.get(H);le&&(ce.current.delete(H),Re(()=>{_(de=>de.map(He=>He.id===le.taskId&&He.status==="working"?{...He,status:"paused"}:He))},le.delayAfterResume,H))},[W,Q,Te,Re]),lo=y.useCallback(H=>{console.log("[MockGrackle] completeTask",H),_(te=>te.map(ie=>ie.id===H?{...ie,status:"complete"}:ie))},[]),co=y.useCallback(H=>{console.log("[MockGrackle] resumeTask",H)},[]),uo=y.useCallback((H,te,ie,le,de)=>{console.log("[MockGrackle] updateTask",{taskId:H,title:te}),_(He=>He.map(be=>be.id===H?{...be,title:te.trim()||be.title,description:ie,dependsOn:le,...de!==void 0?{defaultPersonaId:de}:{}}:be))},[]),_a=y.useCallback(H=>{console.log("[MockGrackle] deleteTask",H),_(te=>te.filter(ie=>ie.id!==H))},[]),Or=y.useCallback(H=>{console.log("[MockGrackle] loadFindings",H),T(b0.filter(te=>te.workspaceId===H))},[]),fo=y.useCallback((H,te,ie,le,de)=>{console.log("[MockGrackle] postFinding",{workspaceId:H,title:te});const He={id:pe("find"),workspaceId:H,taskId:"",sessionId:"",category:le||"general",title:te,content:ie,tags:de||[],createdAt:new Date().toISOString()};T(be=>[...be,He])},[pe]),Ir=y.useCallback(()=>{console.log("[MockGrackle] loadEnvironments")},[]),Lr=y.useCallback((H,te,ie)=>{console.log("[MockGrackle] addEnvironment",{displayName:H,adapterType:te,adapterConfig:ie})},[]),Us=y.useCallback((H,te)=>{console.log("[MockGrackle] updateEnvironment",{environmentId:H,...te}),i(ie=>ie.map(le=>le.id!==H?le:{...le,...te.displayName!==void 0?{displayName:te.displayName}:{},...te.adapterConfig!==void 0?{adapterConfig:JSON.stringify(te.adapterConfig)}:{}}))},[]),Yt=y.useCallback(()=>{console.log("[MockGrackle] loadTokens")},[]),Pn=y.useCallback((H,te,ie,le,de)=>{console.log("[MockGrackle] setToken",{name:H,tokenType:ie}),N(He=>[...He.filter(Oe=>Oe.name!==H),{name:H,tokenType:ie,envVar:le,filePath:de,expiresAt:""}])},[]),Jt=y.useCallback(H=>{console.log("[MockGrackle] deleteToken",H),N(te=>te.filter(ie=>ie.name!==H))},[]),Br=y.useCallback(H=>{console.log("[MockGrackle] updateCredentialProviders",H),E(H)},[]);y.useEffect(()=>()=>{ze.current.forEach(clearTimeout),ze.current.clear()},[]);const Vc=y.useMemo(()=>({connected:!0,send:()=>{},environments:s,sessions:o,events:u,eventsDropped:0,lastSpawnedId:m,workspaces:g,tasks:b,findings:S,tokens:j,credentialProviders:k,spawn:un,sendInput:Kt,kill:Fe,stopGraceful:Kn,refresh:Yn,loadSessionEvents:zn,clearEvents:Jn,loadWorkspaces:()=>{console.log("[MockGrackle] loadWorkspaces")},createWorkspace:Tn,archiveWorkspace:Bs,updateWorkspace:(H,te)=>{console.log("[MockGrackle] updateWorkspace",{workspaceId:H,...te}),v(ie=>ie.map(le=>le.id!==H?le:{...le,...te.name!==void 0?{name:te.name}:{},...te.description!==void 0?{description:te.description}:{},...te.repoUrl!==void 0?{repoUrl:te.repoUrl}:{},...te.environmentId!==void 0?{environmentId:te.environmentId}:{},...te.workingDirectory!==void 0?{workingDirectory:te.workingDirectory}:{},...te.useWorktrees!==void 0?{useWorktrees:te.useWorktrees}:{},...te.defaultPersonaId!==void 0?{defaultPersonaId:te.defaultPersonaId}:{},updatedAt:new Date().toISOString()}))},loadTasks:dn,loadAllTasks:()=>{console.log("[MockGrackle] loadAllTasks")},createTask:Me,startTask:Rt,stopTask:H=>{console.log("[MockGrackle] stopTask",{taskId:H}),lo(H)},completeTask:lo,resumeTask:co,updateTask:uo,deleteTask:_a,loadFindings:Or,postFinding:fo,loadEnvironments:Ir,addEnvironment:Lr,updateEnvironment:Us,loadTokens:Yt,setToken:Pn,deleteToken:Jt,updateCredentialProviders:Br,provisionStatus:{},provisionEnvironment:(H,te)=>{},stopEnvironment:()=>{},removeEnvironment:()=>{},codespaces:[],codespaceError:"",codespaceListError:"",codespaceCreating:!1,listCodespaces:()=>{},createCodespace:()=>{},workspaceCreating:!1,taskStartingId:void 0,personas:A,createPersona:async(H,te,ie,le,de,He,be,Oe,Ke)=>{console.log("[MockGrackle] createPersona",{name:H});const nt={id:`mock-persona-${Date.now()}`,name:H,description:te,systemPrompt:ie,toolConfig:"{}",runtime:le??"claude-code",model:de||"",maxTurns:He||0,mcpServers:"[]",createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),type:be||"agent",script:Oe||"",allowedMcpTools:Ke||[]};return R(qe=>[...qe,nt]),nt},updatePersona:async(H,te,ie,le,de,He,be,Oe,Ke,nt)=>{console.log("[MockGrackle] updatePersona",{personaId:H,name:te});const qe=A.find(St=>St.id===H);if(!qe)throw new Error(`Persona not found: ${H}`);const zt=new Date().toISOString(),Pt={...qe,...te!==void 0?{name:te}:{},...ie!==void 0?{description:ie}:{},...le!==void 0?{systemPrompt:le}:{},...de!==void 0?{runtime:de}:{},...He!==void 0?{model:He}:{},...be!==void 0?{maxTurns:be}:{},...Oe!==void 0?{type:Oe}:{},...Ke!==void 0?{script:Ke}:{},...nt!==void 0?{allowedMcpTools:nt}:{},updatedAt:zt};return R(St=>St.map(ls=>ls.id===H?Pt:ls)),Pt},deletePersona:async H=>{console.log("[MockGrackle] deletePersona",H),R(te=>te.filter(ie=>ie.id!==H))},taskSessions:C,loadTaskSessions:H=>{console.log("[MockGrackle] loadTaskSessions",H)},appDefaultPersonaId:U,setAppDefaultPersonaId:async H=>{console.log("[MockGrackle] setAppDefaultPersonaId",H),V(H)},onboardingCompleted:!0,completeOnboarding:()=>{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:(H,te)=>{console.log(`[MockGrackle] loadUsage(${H}, ${te})`)},knowledge:{graphData:{nodes:I,links:ee},selectedNode:se,loading:!1,selectedId:Z,searchQuery:O,search:H=>{if(console.log("[MockGrackle] knowledge.search",H),!H.trim()){G(H);return}G(H);const te=X.current,ie=te?ns.filter(be=>!be.workspaceId||be.workspaceId===te):ns,le=H.toLowerCase(),de=ie.filter(be=>{var Oe,Ke,nt;return be.label.toLowerCase().includes(le)||((Oe=be.content)==null?void 0:Oe.toLowerCase().includes(le))||((Ke=be.tags)==null?void 0:Ke.some(qe=>qe.toLowerCase().includes(le)))||((nt=be.category)==null?void 0:nt.toLowerCase().includes(le))});F(de);const He=new Set(de.map(be=>be.id));re(ca.filter(be=>He.has(be.source)&&He.has(be.target))),oe(void 0),ue(void 0)},clearSearch:()=>{console.log("[MockGrackle] knowledge.clearSearch"),G("");const H=X.current,te=H?ns.filter(le=>!le.workspaceId||le.workspaceId===H):ns;F(te);const ie=new Set(te.map(le=>le.id));re(ca.filter(le=>ie.has(le.source)&&ie.has(le.target)))},selectNode:H=>{console.log("[MockGrackle] knowledge.selectNode",H),oe(H);const te=H in y0?y0[H]:void 0;if(te)ue(te);else{const ie=ns.find(le=>le.id===H);if(ie){const le=ca.filter(de=>de.source===H||de.target===H).map(de=>({fromId:de.source,toId:de.target,type:de.type}));ue({node:ie,edges:le})}}},clearSelection:()=>{console.log("[MockGrackle] knowledge.clearSelection"),oe(void 0),ue(void 0)},expandNode:H=>{console.log("[MockGrackle] knowledge.expandNode",H),F(te=>{const ie=new Set(te.map(Oe=>Oe.id)),le=ca.filter(Oe=>Oe.source===H||Oe.target===H),de=new Set;for(const Oe of le)ie.has(Oe.source)||de.add(Oe.source),ie.has(Oe.target)||de.add(Oe.target);if(de.size===0)return te;const He=ns.filter(Oe=>de.has(Oe.id)),be=new Set([...ie,...de]);return re(Oe=>{const Ke=new Set(Oe.map(qe=>`${qe.source}|${qe.target}|${qe.type}`)),nt=ca.filter(qe=>be.has(qe.source)&&be.has(qe.target)&&!Ke.has(`${qe.source}|${qe.target}|${qe.type}`));return nt.length>0?[...Oe,...nt]:Oe}),[...te,...He]})},loadRecent:H=>{if(console.log("[MockGrackle] knowledge.loadRecent",H),X.current=H,H){const te=ns.filter(le=>!le.workspaceId||le.workspaceId===H);F(te);const ie=new Set(te.map(le=>le.id));re(ca.filter(le=>ie.has(le.source)&&ie.has(le.target)))}else F(ns),re(ca);G("")},handleEvent:()=>!1}}),[s,o,u,m,g,b,S,j,k,A,C,U,I,ee,se,Z,O,un,Kt,Fe,Kn,Yn,zn,Jn,Tn,Bs,dn,Me,Rt,lo,co,uo,_a,Or,fo,Ir,Lr,Us,Yt,Pn,Jt,Br]);return l.jsx(bp.Provider,{value:Vc,children:n})}const Mb=y.createContext(void 0),X2=4e3;function Q2({children:n}){const[s,i]=y.useState([]),o=y.useRef(0),c=y.useCallback(f=>{i(m=>m.filter(h=>h.id!==f))},[]),u=y.useCallback((f,m="info",h=X2)=>{const g=`toast-${++o.current}`;i(v=>[...v,{id:g,message:f,variant:m,duration:h}])},[]);return l.jsx(Mb.Provider,{value:{toasts:s,showToast:u,dismissToast:c},children:n})}function Ls(){const n=y.useContext(Mb);if(!n)throw new Error("useToast must be used within ToastProvider");return n}const Mc=[{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"]}],Ob=new Set(Mc.map(n=>n.id)),S0="grackle";function zf(n){return Mc.find(s=>s.id===n)}const Pf="grackle-theme",Ib="grackle-prefer-system",Lb="(prefers-color-scheme: dark)";let cr=[],fc;function cf(){fc=void 0;for(const n of cr)n()}function Vf(){return typeof window>"u"?!1:window.matchMedia(Lb).matches}function mr(){if(typeof localStorage>"u")return S0;try{const n=localStorage.getItem(Pf);if(n!==null&&Ob.has(n))return n}catch{}return S0}function yc(){if(typeof localStorage>"u")return!1;try{return localStorage.getItem(Ib)==="true"}catch{return!1}}function Hf(n){return Mc.find(s=>s.variantLightId===n||s.variantDarkId===n)}function Bb(n,s){const i=zf(n);if(i!=null&&i.variantDarkId)return s&&i.variantLightId?Vf()?i.variantDarkId:i.variantLightId:i.variantDarkId;if(i!=null&&i.hidden&&s){const o=Hf(n);if(o!=null&&o.variantLightId&&o.variantDarkId)return Vf()?o.variantDarkId:o.variantLightId}return n}function qi(n,s,i=!1){i&&document.documentElement.classList.add("no-transitions"),document.documentElement.dataset.theme=Bb(n,s),i&&(document.documentElement.offsetHeight,requestAnimationFrame(()=>{document.documentElement.classList.remove("no-transitions")}))}typeof document<"u"&&qi(mr(),yc());function ew(){return fc===void 0&&(fc={themeId:mr(),systemDark:Vf(),preferSystem:yc()}),fc}function tw(n){return cr=[...cr,n],()=>{cr=cr.filter(s=>s!==n)}}function nw(){const n=y.useSyncExternalStore(tw,ew),{themeId:s,preferSystem:i}=n,o=Bb(s,i),c=y.useCallback(f=>{if(Ob.has(f)){try{localStorage.setItem(Pf,f)}catch{}qi(f,yc(),!0),cf()}},[]),u=y.useCallback(f=>{try{localStorage.setItem(Ib,f?"true":"false")}catch{}if(f){const m=mr(),h=zf(m);if(h!=null&&h.hidden){const g=Hf(m);if(g)try{localStorage.setItem(Pf,g.id)}catch{}}}qi(mr(),f,!0),cf()},[]);return y.useEffect(()=>{qi(s,i)},[s,i]),y.useEffect(()=>{if(typeof window>"u")return;const f=window.matchMedia(Lb),m=()=>{const h=mr(),g=yc();if(g){const v=zf(h);if(v!=null&&v.variantDarkId&&v.variantLightId&&qi(h,g),v!=null&&v.hidden){const b=Hf(h);b!=null&&b.variantDarkId&&b.variantLightId&&qi(h,g)}}cf()};return f.addEventListener("change",m),()=>{f.removeEventListener("change",m)}},[]),{themeId:s,setTheme:c,resolvedThemeId:o,preferSystem:i,setPreferSystem:u}}const Ub=y.createContext(void 0);function sw({children:n}){const s=nw();return l.jsx(Ub.Provider,{value:s,children:n})}function zb(){const n=y.useContext(Ub);if(!n)throw new Error("useThemeContext must be used within ThemeProvider");return n}const aw="_container_1mq5u_1",iw="_hamburger_1mq5u_33",ow="_brand_1mq5u_49",rw="_brandLogo_1mq5u_68",lw="_info_1mq5u_75",cw="_connectionLabel_1mq5u_90",uw="_connectionDot_1mq5u_103",dw="_connected_1mq5u_106",fw="_disconnected_1mq5u_110",js={container:aw,hamburger:iw,brand:ow,brandLogo:rw,info:lw,connectionLabel:cw,connectionDot:uw,connected:dw,disconnected:fw};function pw({connected:n,environments:s,sessions:i,onToggleSidebar:o,sidebarOpen:c}){const u=xt(),f=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:js.container,children:[o&&l.jsx("button",{type:"button",className:js.hamburger,onClick:o,"aria-label":"Toggle sidebar","aria-expanded":c,children:"☰"}),l.jsxs("button",{type:"button",className:js.brand,onClick:()=>u(Ja),title:"Home",children:[l.jsx("img",{src:"/icon-192x192.png",alt:"",className:js.brandLogo,"aria-hidden":"true","data-testid":"statusbar-logo"}),"Grackle"]}),l.jsxs("div",{className:js.info,children:[l.jsxs("span",{"aria-label":n?"Connected":"Disconnected",children:[l.jsx("span",{className:`${js.connectionDot} ${n?js.connected:js.disconnected}`,"aria-hidden":"true",children:"●"})," ",l.jsx("span",{className:js.connectionLabel,"aria-hidden":"true",children:n?"Connected":"Disconnected"})]}),l.jsxs("span",{children:[m,"/",f," env",f!==1?"s":""]}),l.jsxs("span",{children:[h," active"]})]})]})}const mw="_nav_13gkc_1",hw="_tab_13gkc_35",gw="_tabIcon_13gkc_68",vw="_tabLabel_13gkc_79",yw="_tabActive_13gkc_84",ir={nav:mw,tab:hw,tabIcon:gw,tabLabel:vw,tabActive:yw},za=[{view:"dashboard",label:"Dashboard",icon:"🏠",route:Ja,testId:"sidebar-tab-dashboard"},{view:"chat",label:"Chat",icon:"💬",route:h2,testId:"sidebar-tab-chat"},{view:"tasks",label:"Tasks",icon:"📋",route:g2,testId:"sidebar-tab-tasks"},{view:"environments",label:"Environments",icon:"🖥️",route:Xi,testId:"sidebar-tab-environments"},{view:"knowledge",label:"Knowledge",icon:"🧠",route:Rb,testId:"sidebar-tab-knowledge"},{view:"settings",label:"Settings",icon:"⚙️",route:d2,testId:"sidebar-tab-settings"}];function bw(n){return n===Ja||n==="/"?"dashboard":n.startsWith("/chat")||n.startsWith("/sessions")?"chat":n.startsWith("/workspaces")||n.startsWith("/environments")?"environments":n.startsWith(Rb)?"knowledge":n.startsWith(Ji)?"settings":"tasks"}function _w(){const n=It(),s=xt(),i=y.useRef(null),o=bw(n.pathname),c=y.useCallback(f=>{s(f.route)},[s]),u=y.useCallback(f=>{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:za.findIndex(S=>S.view===o);let v=g;if(f.key==="ArrowRight"||f.key==="j"||f.key==="J")f.preventDefault(),v=(g+1)%za.length;else if(f.key==="ArrowLeft"||f.key==="k"||f.key==="K")f.preventDefault(),v=(g-1+za.length)%za.length;else if(f.key==="Home")f.preventDefault(),v=0;else if(f.key==="End")f.preventDefault(),v=za.length-1;else return;s(za[v].route),(_=m[v])==null||_.focus()},[o,s]);return l.jsx("nav",{className:ir.nav,ref:i,role:"tablist","aria-orientation":"horizontal","aria-label":"App navigation",onKeyDown:u,"data-testid":"sidebar-nav",children:za.map(f=>{const m=f.view===o;return l.jsxs("button",{role:"tab",type:"button","aria-selected":m,tabIndex:m?0:-1,className:`${ir.tab} ${m?ir.tabActive:""}`,onClick:()=>c(f),"data-testid":f.testId,title:f.label,"aria-label":f.label,children:[l.jsx("span",{className:ir.tabIcon,"aria-hidden":"true",children:f.icon}),l.jsx("span",{className:ir.tabLabel,children:f.label})]},f.view)})})}const Pb=y.createContext(void 0),Vb=y.createContext(void 0);function xw({children:n}){const[s,i]=y.useState(void 0),o=y.useCallback(c=>{i(c)},[]);return l.jsx(Vb.Provider,{value:o,children:l.jsx(Pb.Provider,{value:s,children:n})})}function Hb(){return y.useContext(Pb)}function Sw(){const n=y.useContext(Vb);if(n===void 0)throw new Error("useSidebarSetter must be used within a SidebarProvider");return n}const Tw="_container_pi6ii_1",kw="_content_pi6ii_66",T0={container:Tw,content:kw},ww=320,qb=220,Gb=600,$b="grackle-sidebar-width";function Nw(){try{const n=localStorage.getItem($b);if(n!==null){const s=Number(n);if(Number.isFinite(s)&&s>=qb&&s<=Gb)return s}}catch{}return ww}function jw(n){try{localStorage.setItem($b,String(n))}catch{}}function Cw(){const[n]=y.useState(Nw),s=y.useRef(null),i=Hb();if(y.useEffect(()=>{const o=s.current;if(!o)return;const c=new ResizeObserver(u=>{for(const f of u){const m=f.borderBoxSize[0];if(m){const h=Math.round(m.inlineSize);h>=qb&&h<=Gb&&jw(h)}}});return c.observe(o),()=>{c.disconnect()}},[]),i!==void 0)return l.jsx("div",{className:T0.container,ref:s,"data-testid":"sidebar",style:{width:n},children:l.jsx("div",{className:T0.content,children:i})})}function Oc(n){const s=Sw();y.useLayoutEffect(()=>(s(n),()=>{s(void 0)}),[n,s])}const _p=y.createContext({});function xp(n){const s=y.useRef(null);return s.current===null&&(s.current=n()),s.current}const Ic=y.createContext(null),Sp=y.createContext({transformPagePoint:n=>n,isStatic:!1,reducedMotion:"never"});class Ew 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 Aw({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(Sp);return y.useInsertionEffect(()=>{const{width:f,height:m,top:h,left:g}=c.current;if(s||!o.current||!f||!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(`
|
|
465
|
-
[data-motion-pop-id="${i}"] {
|
|
466
|
-
position: absolute !important;
|
|
467
|
-
width: ${f}px !important;
|
|
468
|
-
height: ${m}px !important;
|
|
469
|
-
top: ${h}px !important;
|
|
470
|
-
left: ${g}px !important;
|
|
471
|
-
}
|
|
472
|
-
`),()=>{document.head.removeChild(v)}},[s]),l.jsx(Ew,{isPresent:s,childRef:o,sizeRef:c,children:y.cloneElement(n,{ref:o})})}const Dw=({children:n,initial:s,isPresent:i,onExitComplete:o,custom:c,presenceAffectsLayout:u,mode:f})=>{const m=xp(Rw),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]),f==="popLayout"&&(n=l.jsx(Aw,{isPresent:i,children:n})),l.jsx(Ic.Provider,{value:v,children:n})};function Rw(){return new Map}function Zb(n=!0){const s=y.useContext(Ic);if(s===null)return[!0,null];const{isPresent:i,onExitComplete:o,register:c}=s,u=y.useId();y.useEffect(()=>{n&&c(u)},[n]);const f=y.useCallback(()=>n&&o&&o(u),[u,o,n]);return!i&&o?[!1,f]:[!0]}const tc=n=>n.key||"";function k0(n){const s=[];return y.Children.forEach(n,i=>{y.isValidElement(i)&&s.push(i)}),s}const Tp=typeof window<"u",Fb=Tp?y.useLayoutEffect:y.useEffect,rs=({children:n,custom:s,initial:i=!0,onExitComplete:o,presenceAffectsLayout:c=!0,mode:u="sync",propagate:f=!1})=>{const[m,h]=Zb(f),g=y.useMemo(()=>k0(n),[n]),v=f&&!m?[]:g.map(tc),b=y.useRef(!0),_=y.useRef(g),S=xp(()=>new Map),[T,j]=y.useState(g),[N,k]=y.useState(g);Fb(()=>{b.current=!1,_.current=g;for(let R=0;R<N.length;R++){const C=tc(N[R]);v.includes(C)?S.delete(C):S.get(C)!==!0&&S.set(C,!1)}},[N,v.length,v.join("-")]);const E=[];if(g!==T){let R=[...g];for(let C=0;C<N.length;C++){const U=N[C],V=tc(U);v.includes(V)||(R.splice(C,0,U),E.push(U))}u==="wait"&&E.length&&(R=E),k(k0(R)),j(g);return}const{forceRender:A}=y.useContext(_p);return l.jsx(l.Fragment,{children:N.map(R=>{const C=tc(R),U=f&&!m?!1:g===N||v.includes(C),V=()=>{if(S.has(C))S.set(C,!0);else return;let I=!0;S.forEach(F=>{F||(I=!1)}),I&&(A==null||A(),k(_.current),f&&(h==null||h()),o&&o())};return l.jsx(Dw,{isPresent:U,initial:!b.current||i?void 0:!1,custom:U?void 0:s,presenceAffectsLayout:c,mode:u,onExitComplete:U?void 0:V,children:R},C)})})},_n=n=>n;let Kb=_n;const Mw={useManualTiming:!1};function Ow(n){let s=new Set,i=new Set,o=!1,c=!1;const u=new WeakSet;let f={delta:0,timestamp:0,isProcessing:!1};function m(g){u.has(g)&&(h.schedule(g),n()),g(f)}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(f=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 nc=["read","resolveKeyframes","update","preRender","render","postRender"],Iw=40;function Yb(n,s){let i=!1,o=!0;const c={delta:0,timestamp:0,isProcessing:!1},u=()=>i=!0,f=nc.reduce((k,E)=>(k[E]=Ow(u),k),{}),{read:m,resolveKeyframes:h,update:g,preRender:v,render:b,postRender:_}=f,S=()=>{const k=performance.now();i=!1,c.delta=o?1e3/60:Math.max(Math.min(k-c.timestamp,Iw),1),c.timestamp=k,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:nc.reduce((k,E)=>{const A=f[E];return k[E]=(R,C=!1,U=!1)=>(i||T(),A.schedule(R,C,U)),k},{}),cancel:k=>{for(let E=0;E<nc.length;E++)f[nc[E]].cancel(k)},state:c,steps:f}}const{schedule:ft,cancel:ma,state:Zt,steps:uf}=Yb(typeof requestAnimationFrame<"u"?requestAnimationFrame:_n,!0),Jb=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"]},eo={};for(const n in w0)eo[n]={isEnabled:s=>w0[n].some(i=>!!s[i])};function Lw(n){for(const s in n)eo[s]={...eo[s],...n[s]}}const Bw=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 bc(n){return n.startsWith("while")||n.startsWith("drag")&&n!=="draggable"||n.startsWith("layout")||n.startsWith("onTap")||n.startsWith("onPan")||n.startsWith("onLayout")||Bw.has(n)}let Wb=n=>!bc(n);function Uw(n){n&&(Wb=s=>s.startsWith("on")?!bc(s):n(s))}try{Uw(require("@emotion/is-prop-valid").default)}catch{}function zw(n,s,i){const o={};for(const c in n)c==="values"&&typeof n.values=="object"||(Wb(c)||i===!0&&bc(c)||!s&&!bc(c)||n.draggable&&c.startsWith("onDrag"))&&(o[c]=n[c]);return o}function Pw(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 Sr(n){return typeof n=="string"||Array.isArray(n)}function Bc(n){return n!==null&&typeof n=="object"&&typeof n.start=="function"}const kp=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],wp=["initial",...kp];function Uc(n){return Bc(n.animate)||wp.some(s=>Sr(n[s]))}function Xb(n){return!!(Uc(n)||n.variants)}function Vw(n,s){if(Uc(n)){const{initial:i,animate:o}=n;return{initial:i===!1||Sr(i)?i:void 0,animate:Sr(o)?o:void 0}}return n.inherit!==!1?s:{}}function Hw(n){const{initial:s,animate:i}=Vw(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 qw=Symbol.for("motionComponentSymbol");function Gi(n){return n&&typeof n=="object"&&Object.prototype.hasOwnProperty.call(n,"current")}function Gw(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):Gi(i)&&(i.current=o))},[s])}const Np=n=>n.replace(/([a-z])([A-Z])/gu,"$1-$2").toLowerCase(),$w="framerAppearId",Qb="data-"+Np($w),{schedule:jp}=Yb(queueMicrotask,!1),e_=y.createContext({});function Zw(n,s,i,o,c){var u,f;const{visualElement:m}=y.useContext(Lc),h=y.useContext(Jb),g=y.useContext(Ic),v=y.useContext(Sp).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(e_);_&&!_.projection&&c&&(_.type==="html"||_.type==="svg")&&Fw(b.current,i,c,S);const T=y.useRef(!1);y.useInsertionEffect(()=>{_&&T.current&&_.update(i,g)});const j=i[Qb],N=y.useRef(!!j&&!(!((u=window.MotionHandoffIsComplete)===null||u===void 0)&&u.call(window,j))&&((f=window.MotionHasOptimisedAnimation)===null||f===void 0?void 0:f.call(window,j)));return Fb(()=>{_&&(T.current=!0,window.MotionIsMounted=!0,_.updateFeatures(),jp.render(_.render),N.current&&_.animationState&&_.animationState.animateChanges())}),y.useEffect(()=>{_&&(!N.current&&_.animationState&&_.animationState.animateChanges(),N.current&&(queueMicrotask(()=>{var k;(k=window.MotionHandoffMarkAsComplete)===null||k===void 0||k.call(window,j)}),N.current=!1))}),_}function Fw(n,s,i,o){const{layoutId:c,layout:u,drag:f,dragConstraints:m,layoutScroll:h,layoutRoot:g}=s;n.projection=new i(n.latestValues,s["data-framer-portal-id"]?void 0:t_(n.parent)),n.projection.setOptions({layoutId:c,layout:u,alwaysMeasureLayout:!!f||m&&Gi(m),visualElement:n,animationType:typeof u=="string"?u:"both",initialPromotionConfig:o,layoutScroll:h,layoutRoot:g})}function t_(n){if(n)return n.options.allowProjection!==!1?n.projection:t_(n.parent)}function Kw({preloadedFeatures:n,createVisualElement:s,useRender:i,useVisualState:o,Component:c}){var u,f;n&&Lw(n);function m(g,v){let b;const _={...y.useContext(Sp),...g,layoutId:Yw(g)},{isStatic:S}=_,T=Hw(g),j=o(g,S);if(!S&&Tp){Jw();const N=Ww(_);b=N.MeasureLayout,T.visualElement=Zw(c,j,_,s,N.ProjectionNode)}return l.jsxs(Lc.Provider,{value:T,children:[b&&T.visualElement?l.jsx(b,{visualElement:T.visualElement,..._}):null,i(c,g,Gw(j,T.visualElement,v),j,S,T.visualElement)]})}m.displayName=`motion.${typeof c=="string"?c:`create(${(f=(u=c.displayName)!==null&&u!==void 0?u:c.name)!==null&&f!==void 0?f:""})`}`;const h=y.forwardRef(m);return h[qw]=c,h}function Yw({layoutId:n}){const s=y.useContext(_p).id;return s&&n!==void 0?s+"-"+n:n}function Jw(n,s){y.useContext(Jb).strict}function Ww(n){const{drag:s,layout:i}=eo;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 Xw=["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 Cp(n){return typeof n!="string"||n.includes("-")?!1:!!(Xw.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 Ep(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),Qw=n=>!!(n&&typeof n=="object"&&n.mix&&n.toValue),eN=n=>qf(n)?n[n.length-1]||0:n,Xt=n=>!!(n&&n.getVelocity);function pc(n){const s=Xt(n)?n.get():n;return Qw(s)?s.toValue():s}function tN({scrapeMotionValuesFromProps:n,createRenderState:s,onUpdate:i},o,c,u){const f={latestValues:nN(o,c,u,n),renderState:s()};return i&&(f.onMount=m=>i({props:o,current:m,...f}),f.onUpdate=m=>i(m)),f}const n_=n=>(s,i)=>{const o=y.useContext(Lc),c=y.useContext(Ic),u=()=>tN(n,s,o,c);return i?u():xp(u)};function nN(n,s,i,o){const c={},u=o(n,{});for(const _ in u)c[_]=pc(u[_]);let{initial:f,animate:m}=n;const h=Uc(n),g=Xb(n);s&&g&&!h&&n.inherit!==!1&&(f===void 0&&(f=s.initial),m===void 0&&(m=s.animate));let v=i?i.initial===!1:!1;v=v||f===!1;const b=v?m:f;if(b&&typeof b!="boolean"&&!Bc(b)){const _=Array.isArray(b)?b:[b];for(let S=0;S<_.length;S++){const T=Ep(n,_[S]);if(T){const{transitionEnd:j,transition:N,...k}=T;for(const E in k){let A=k[E];if(Array.isArray(A)){const R=v?A.length-1:0;A=A[R]}A!==null&&(c[E]=A)}for(const E in j)c[E]=j[E]}}}return c}const oo=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],ni=new Set(oo),s_=n=>s=>typeof s=="string"&&s.startsWith(n),a_=s_("--"),sN=s_("var(--"),Ap=n=>sN(n)?aN.test(n.split("/*")[0].trim()):!1,aN=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu,i_=(n,s)=>s&&typeof n=="number"?s.transform(n):n,Is=(n,s,i)=>i>s?s:i<n?n:i,ro={test:n=>typeof n=="number",parse:parseFloat,transform:n=>n},Tr={...ro,transform:n=>Is(0,1,n)},sc={...ro,default:1},Ar=n=>({test:s=>typeof s=="string"&&s.endsWith(n)&&s.split(" ").length===1,parse:parseFloat,transform:s=>`${s}${n}`}),pa=Ar("deg"),as=Ar("%"),ke=Ar("px"),iN=Ar("vh"),oN=Ar("vw"),C0={...as,parse:n=>as.parse(n)/100,transform:n=>as.transform(n*100)},rN={borderWidth:ke,borderTopWidth:ke,borderRightWidth:ke,borderBottomWidth:ke,borderLeftWidth:ke,borderRadius:ke,radius:ke,borderTopLeftRadius:ke,borderTopRightRadius:ke,borderBottomRightRadius:ke,borderBottomLeftRadius:ke,width:ke,maxWidth:ke,height:ke,maxHeight:ke,top:ke,right:ke,bottom:ke,left:ke,padding:ke,paddingTop:ke,paddingRight:ke,paddingBottom:ke,paddingLeft:ke,margin:ke,marginTop:ke,marginRight:ke,marginBottom:ke,marginLeft:ke,backgroundPositionX:ke,backgroundPositionY:ke},lN={rotate:pa,rotateX:pa,rotateY:pa,rotateZ:pa,scale:sc,scaleX:sc,scaleY:sc,scaleZ:sc,skew:pa,skewX:pa,skewY:pa,distance:ke,translateX:ke,translateY:ke,translateZ:ke,x:ke,y:ke,z:ke,perspective:ke,transformPerspective:ke,opacity:Tr,originX:C0,originY:C0,originZ:ke},E0={...ro,transform:Math.round},Dp={...rN,...lN,zIndex:E0,size:ke,fillOpacity:Tr,strokeOpacity:Tr,numOctaves:E0},cN={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},uN=oo.length;function dN(n,s,i){let o="",c=!0;for(let u=0;u<uN;u++){const f=oo[u],m=n[f];if(m===void 0)continue;let h=!0;if(typeof m=="number"?h=m===(f.startsWith("scale")?1:0):h=parseFloat(m)===0,!h||i){const g=i_(m,Dp[f]);if(!h){c=!1;const v=cN[f]||f;o+=`${v}(${g}) `}i&&(s[f]=g)}}return o=o.trim(),i?o=i(s,c?"":o):c&&(o="none"),o}function Rp(n,s,i){const{style:o,vars:c,transformOrigin:u}=n;let f=!1,m=!1;for(const h in s){const g=s[h];if(ni.has(h)){f=!0;continue}else if(a_(h)){c[h]=g;continue}else{const v=i_(g,Dp[h]);h.startsWith("origin")?(m=!0,u[h]=v):o[h]=v}}if(s.transform||(f||i?o.transform=dN(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 fN={offset:"stroke-dashoffset",array:"stroke-dasharray"},pN={offset:"strokeDashoffset",array:"strokeDasharray"};function mN(n,s,i=1,o=0,c=!0){n.pathLength=1;const u=c?fN:pN;n[u.offset]=ke.transform(-o);const f=ke.transform(s),m=ke.transform(i);n[u.array]=`${f} ${m}`}function A0(n,s,i){return typeof n=="string"?n:ke.transform(s+i*n)}function hN(n,s,i){const o=A0(s,n.x,n.width),c=A0(i,n.y,n.height);return`${o} ${c}`}function Mp(n,{attrX:s,attrY:i,attrScale:o,originX:c,originY:u,pathLength:f,pathSpacing:m=1,pathOffset:h=0,...g},v,b){if(Rp(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=hN(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),f!==void 0&&mN(_,f,m,h,!1)}const Op=()=>({style:{},transform:{},transformOrigin:{},vars:{}}),o_=()=>({...Op(),attrs:{}}),Ip=n=>typeof n=="string"&&n.toLowerCase()==="svg";function r_(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 l_=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 c_(n,s,i,o){r_(n,s,void 0,o);for(const c in s.attrs)n.setAttribute(l_.has(c)?c:Np(c),s.attrs[c])}const _c={};function gN(n){Object.assign(_c,n)}function u_(n,{layout:s,layoutId:i}){return ni.has(n)||n.startsWith("origin")||(s||i!==void 0)&&(!!_c[n]||n==="opacity")}function Lp(n,s,i){var o;const{style:c}=n,u={};for(const f in c)(Xt(c[f])||s.style&&Xt(s.style[f])||u_(f,n)||((o=i==null?void 0:i.getValue(f))===null||o===void 0?void 0:o.liveStyle)!==void 0)&&(u[f]=c[f]);return u}function d_(n,s,i){const o=Lp(n,s,i);for(const c in n)if(Xt(n[c])||Xt(s[c])){const u=oo.indexOf(c)!==-1?"attr"+c.charAt(0).toUpperCase()+c.substring(1):c;o[u]=n[c]}return o}function vN(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"],yN={useVisualState:n_({scrapeMotionValuesFromProps:d_,createRenderState:o_,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(ni.has(m)){u=!0;break}}if(!u)return;let f=!s;if(s)for(let m=0;m<D0.length;m++){const h=D0[m];n[h]!==s[h]&&(f=!0)}f&&ft.read(()=>{vN(i,o),ft.render(()=>{Mp(o,c,Ip(i.tagName),n.transformTemplate),c_(i,o)})})}})},bN={useVisualState:n_({scrapeMotionValuesFromProps:Lp,createRenderState:Op})};function f_(n,s,i){for(const o in s)!Xt(s[o])&&!u_(o,i)&&(n[o]=s[o])}function _N({transformTemplate:n},s){return y.useMemo(()=>{const i=Op();return Rp(i,s,n),Object.assign({},i.vars,i.style)},[s])}function xN(n,s){const i=n.style||{},o={};return f_(o,i,n),Object.assign(o,_N(n,s)),o}function SN(n,s){const i={},o=xN(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 TN(n,s,i,o){const c=y.useMemo(()=>{const u=o_();return Mp(u,s,Ip(o),n.transformTemplate),{...u.attrs,style:{...u.style}}},[s]);if(n.style){const u={};f_(u,n.style,n),c.style={...u,...c.style}}return c}function kN(n=!1){return(i,o,c,{latestValues:u},f)=>{const h=(Cp(i)?TN:SN)(o,u,f,i),g=zw(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 wN(n,s){return function(o,{forwardMotionProps:c}={forwardMotionProps:!1}){const f={...Cp(o)?yN:bN,preloadedFeatures:n,useRender:kN(c),createVisualElement:s,Component:o};return Kw(f)}}function p_(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 zc(n,s,i){const o=n.getProps();return Ep(o,s,i!==void 0?i:o.custom,n)}function Bp(n,s){return n?n[s]||n.default||n:void 0}const m_=new Set(["width","height","top","left","right","bottom",...oo]);let mc;function NN(){mc=void 0}const is={now:()=>(mc===void 0&&is.set(Zt.isProcessing||Mw.useManualTiming?Zt.timestamp:performance.now()),mc),set:n=>{mc=n,queueMicrotask(NN)}};function Up(n,s){n.indexOf(s)===-1&&n.push(s)}function zp(n,s){const i=n.indexOf(s);i>-1&&n.splice(i,1)}class Pp{constructor(){this.subscriptions=[]}add(s){return Up(this.subscriptions,s),()=>zp(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 f=this.subscriptions[u];f&&f(s,i,o)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}function h_(n,s){return s?n*(1e3/s):0}const R0=30,jN=n=>!isNaN(parseFloat(n));class CN{constructor(s,i={}){this.version="11.18.2",this.canTrackVelocity=null,this.events={},this.updateAndNotify=(o,c=!0)=>{const u=is.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=is.now(),this.canTrackVelocity===null&&s!==void 0&&(this.canTrackVelocity=jN(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 Pp);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=is.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||s-this.updatedAt>R0)return 0;const i=Math.min(this.updatedAt-this.prevUpdatedAt,R0);return h_(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 kr(n,s){return new CN(n,s)}function EN(n,s,i){n.hasValue(s)?n.getValue(s).set(i):n.addValue(s,kr(i))}function AN(n,s){const i=zc(n,s);let{transitionEnd:o={},transition:c={},...u}=i||{};u={...u,...o};for(const f in u){const m=eN(u[f]);EN(n,f,m)}}function DN(n){return!!(Xt(n)&&n.add)}function Gf(n,s){const i=n.getValue("willChange");if(DN(i))return i.add(s)}function g_(n){return n.props[Qb]}function Vp(n){let s;return()=>(s===void 0&&(s=n()),s)}const RN=Vp(()=>window.ScrollTimeline!==void 0);class MN{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(RN()&&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 ON extends MN{then(s,i){return Promise.all(this.animations).then(s).catch(i)}}const Ds=n=>n*1e3,Rs=n=>n/1e3;function Hp(n){return typeof n=="function"}function M0(n,s){n.timeline=s,n.onfinish=null}const qp=n=>Array.isArray(n)&&typeof n[0]=="number",IN={linearEasing:void 0};function LN(n,s){const i=Vp(n);return()=>{var o;return(o=IN[s])!==null&&o!==void 0?o:i()}}const xc=LN(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),to=(n,s,i)=>{const o=s-n;return o===0?1:(i-n)/o},v_=(n,s,i=10)=>{let o="";const c=Math.max(Math.round(s/i),2);for(let u=0;u<c;u++)o+=n(to(0,c-1,u))+", ";return`linear(${o.substring(0,o.length-2)})`};function y_(n){return!!(typeof n=="function"&&xc()||!n||typeof n=="string"&&(n in $f||xc())||qp(n)||Array.isArray(n)&&n.every(y_))}const ur=([n,s,i,o])=>`cubic-bezier(${n}, ${s}, ${i}, ${o})`,$f={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:ur([0,.65,.55,1]),circOut:ur([.55,0,1,.45]),backIn:ur([.31,.01,.66,-.59]),backOut:ur([.33,1.53,.69,.99])};function b_(n,s){if(n)return typeof n=="function"&&xc()?v_(n,s):qp(n)?ur(n):Array.isArray(n)?n.map(i=>b_(i,s)||$f.easeOut):$f[n]}const __=(n,s,i)=>(((1-3*i+3*s)*n+(3*i-6*s))*n+3*s)*n,BN=1e-7,UN=12;function zN(n,s,i,o,c){let u,f,m=0;do f=s+(i-s)/2,u=__(f,o,c)-n,u>0?i=f:s=f;while(Math.abs(u)>BN&&++m<UN);return f}function Dr(n,s,i,o){if(n===s&&i===o)return _n;const c=u=>zN(u,0,1,n,i);return u=>u===0||u===1?u:__(c(u),s,o)}const x_=n=>s=>s<=.5?n(2*s)/2:(2-n(2*(1-s)))/2,S_=n=>s=>1-n(1-s),T_=Dr(.33,1.53,.69,.99),Gp=S_(T_),k_=x_(Gp),w_=n=>(n*=2)<1?.5*Gp(n):.5*(2-Math.pow(2,-10*(n-1))),$p=n=>1-Math.sin(Math.acos(n)),N_=S_($p),j_=x_($p),C_=n=>/^0[^.\s]+$/u.test(n);function PN(n){return typeof n=="number"?n===0:n!==null?n==="none"||n==="0"||C_(n):!0}const hr=n=>Math.round(n*1e5)/1e5,Zp=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function VN(n){return n==null}const HN=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,Fp=(n,s)=>i=>!!(typeof i=="string"&&HN.test(i)&&i.startsWith(n)||s&&!VN(i)&&Object.prototype.hasOwnProperty.call(i,s)),E_=(n,s,i)=>o=>{if(typeof o!="string")return o;const[c,u,f,m]=o.match(Zp);return{[n]:parseFloat(c),[s]:parseFloat(u),[i]:parseFloat(f),alpha:m!==void 0?parseFloat(m):1}},qN=n=>Is(0,255,n),df={...ro,transform:n=>Math.round(qN(n))},Za={test:Fp("rgb","red"),parse:E_("red","green","blue"),transform:({red:n,green:s,blue:i,alpha:o=1})=>"rgba("+df.transform(n)+", "+df.transform(s)+", "+df.transform(i)+", "+hr(Tr.transform(o))+")"};function GN(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 Zf={test:Fp("#"),parse:GN,transform:Za.transform},$i={test:Fp("hsl","hue"),parse:E_("hue","saturation","lightness"),transform:({hue:n,saturation:s,lightness:i,alpha:o=1})=>"hsla("+Math.round(n)+", "+as.transform(hr(s))+", "+as.transform(hr(i))+", "+hr(Tr.transform(o))+")"},Wt={test:n=>Za.test(n)||Zf.test(n)||$i.test(n),parse:n=>Za.test(n)?Za.parse(n):$i.test(n)?$i.parse(n):Zf.parse(n),transform:n=>typeof n=="string"?n:n.hasOwnProperty("red")?Za.transform(n):$i.transform(n)},$N=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function ZN(n){var s,i;return isNaN(n)&&typeof n=="string"&&(((s=n.match(Zp))===null||s===void 0?void 0:s.length)||0)+(((i=n.match($N))===null||i===void 0?void 0:i.length)||0)>0}const A_="number",D_="color",FN="var",KN="var(",O0="${}",YN=/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 wr(n){const s=n.toString(),i=[],o={color:[],number:[],var:[]},c=[];let u=0;const m=s.replace(YN,h=>(Wt.test(h)?(o.color.push(u),c.push(D_),i.push(Wt.parse(h))):h.startsWith(KN)?(o.var.push(u),c.push(FN),i.push(h)):(o.number.push(u),c.push(A_),i.push(parseFloat(h))),++u,O0)).split(O0);return{values:i,split:m,indexes:o,types:c}}function R_(n){return wr(n).values}function M_(n){const{split:s,types:i}=wr(n),o=s.length;return c=>{let u="";for(let f=0;f<o;f++)if(u+=s[f],c[f]!==void 0){const m=i[f];m===A_?u+=hr(c[f]):m===D_?u+=Wt.transform(c[f]):u+=c[f]}return u}}const JN=n=>typeof n=="number"?0:n;function WN(n){const s=R_(n);return M_(n)(s.map(JN))}const ha={test:ZN,parse:R_,createTransformer:M_,getAnimatableNone:WN},XN=new Set(["brightness","contrast","saturate","opacity"]);function QN(n){const[s,i]=n.slice(0,-1).split("(");if(s==="drop-shadow")return n;const[o]=i.match(Zp)||[];if(!o)return n;const c=i.replace(o,"");let u=XN.has(s)?1:0;return o!==i&&(u*=100),s+"("+u+c+")"}const ej=/\b([a-z-]*)\(.*?\)/gu,Ff={...ha,getAnimatableNone:n=>{const s=n.match(ej);return s?s.map(QN).join(" "):n}},tj={...Dp,color:Wt,backgroundColor:Wt,outlineColor:Wt,fill:Wt,stroke:Wt,borderColor:Wt,borderTopColor:Wt,borderRightColor:Wt,borderBottomColor:Wt,borderLeftColor:Wt,filter:Ff,WebkitFilter:Ff},Kp=n=>tj[n];function O_(n,s){let i=Kp(n);return i!==Ff&&(i=ha),i.getAnimatableNone?i.getAnimatableNone(s):void 0}const nj=new Set(["auto","none","0"]);function sj(n,s,i){let o=0,c;for(;o<n.length&&!c;){const u=n[o];typeof u=="string"&&!nj.has(u)&&wr(u).values.length&&(c=n[o]),o++}if(c&&i)for(const u of s)n[u]=O_(i,c)}const I0=n=>n===ro||n===ke,L0=(n,s)=>parseFloat(n.split(", ")[s]),B0=(n,s)=>(i,{transform:o})=>{if(o==="none"||!o)return 0;const c=o.match(/^matrix3d\((.+)\)$/u);if(c)return L0(c[1],s);{const u=o.match(/^matrix\((.+)\)$/u);return u?L0(u[1],n):0}},aj=new Set(["x","y","z"]),ij=oo.filter(n=>!aj.has(n));function oj(n){const s=[];return ij.forEach(i=>{const o=n.getValue(i);o!==void 0&&(s.push([i,o.get()]),o.set(i.startsWith("scale")?1:0))}),s}const no={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:B0(4,13),y:B0(5,14)};no.translateX=no.x;no.translateY=no.y;const Ya=new Set;let Kf=!1,Yf=!1;function I_(){if(Yf){const n=Array.from(Ya).filter(o=>o.needsMeasurement),s=new Set(n.map(o=>o.element)),i=new Map;s.forEach(o=>{const c=oj(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,f])=>{var m;(m=o.getValue(u))===null||m===void 0||m.set(f)})}),n.forEach(o=>o.measureEndState()),n.forEach(o=>{o.suspendedScrollY!==void 0&&window.scrollTo(0,o.suspendedScrollY)})}Yf=!1,Kf=!1,Ya.forEach(n=>n.complete()),Ya.clear()}function L_(){Ya.forEach(n=>{n.readKeyframes(),n.needsMeasurement&&(Yf=!0)})}function rj(){L_(),I_()}class Yp{constructor(s,i,o,c,u,f=!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=f}scheduleResolve(){this.isScheduled=!0,this.isAsync?(Ya.add(this),Kf||(Kf=!0,ft.read(L_),ft.resolveKeyframes(I_))):(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 f=c==null?void 0:c.get(),m=s[s.length-1];if(f!==void 0)s[0]=f;else if(o&&i){const h=o.readValue(i,m);h!=null&&(s[0]=h)}s[0]===void 0&&(s[0]=m),c&&f===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),Ya.delete(this)}cancel(){this.isComplete||(this.isScheduled=!1,Ya.delete(this))}resume(){this.isComplete||this.scheduleResolve()}}const B_=n=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(n),lj=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function cj(n){const s=lj.exec(n);if(!s)return[,];const[,i,o,c]=s;return[`--${i??o}`,c]}function U_(n,s,i=1){const[o,c]=cj(n);if(!o)return;const u=window.getComputedStyle(s).getPropertyValue(o);if(u){const f=u.trim();return B_(f)?parseFloat(f):f}return Ap(c)?U_(c,s,i+1):c}const z_=n=>s=>s.test(n),uj={test:n=>n==="auto",parse:n=>n},P_=[ro,ke,as,pa,oN,iN,uj],U0=n=>P_.find(z_(n));class V_ extends Yp{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(),Ap(g))){const v=U_(g,i.current);v!==void 0&&(s[h]=v),h===s.length-1&&(this.finalKeyframe=g)}}if(this.resolveNoneKeyframes(),!m_.has(o)||s.length!==2)return;const[c,u]=s,f=U0(c),m=U0(u);if(f!==m)if(I0(f)&&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++)PN(s[c])&&o.push(c);o.length&&sj(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=no[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 f=c.length-1,m=c[f];c[f]=no[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"&&(ha.test(n)||n==="0")&&!n.startsWith("url("));function dj(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 fj(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],f=z0(c,s),m=z0(u,s);return!f||!m?!1:dj(n)||(i==="spring"||Hp(i))&&o}const pj=n=>n!==null;function Pc(n,{repeat:s,repeatType:i="loop"},o){const c=n.filter(pj),u=s&&i!=="loop"&&s%2===1?0:c.length-1;return!u||o===void 0?c[u]:o}const mj=40;class H_{constructor({autoplay:s=!0,delay:i=0,type:o="keyframes",repeat:c=0,repeatDelay:u=0,repeatType:f="loop",...m}){this.isStopped=!1,this.hasAttemptedResolve=!1,this.createdAt=is.now(),this.options={autoplay:s,delay:i,type:o,repeat:c,repeatDelay:u,repeatType:f,...m},this.updateFinishedPromise()}calcStartTime(){return this.resolvedAt?this.resolvedAt-this.createdAt>mj?this.resolvedAt:this.createdAt:this.createdAt}get resolved(){return!this._resolved&&!this.hasAttemptedResolve&&rj(),this._resolved}onKeyframesResolved(s,i){this.resolvedAt=is.now(),this.hasAttemptedResolve=!0;const{name:o,type:c,velocity:u,delay:f,onComplete:m,onUpdate:h,isGenerator:g}=this.options;if(!g&&!fj(s,o,c,u))if(f)this.options.duration=0;else{h&&h(Pc(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 Jf=2e4;function q_(n){let s=0;const i=50;let o=n.next(s);for(;!o.done&&s<Jf;)s+=i,o=n.next(s);return s>=Jf?1/0:s}const vt=(n,s,i)=>n+(s-n)*i;function ff(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 hj({hue:n,saturation:s,lightness:i,alpha:o}){n/=360,s/=100,i/=100;let c=0,u=0,f=0;if(!s)c=u=f=i;else{const m=i<.5?i*(1+s):i+s-i*s,h=2*i-m;c=ff(h,m,n+1/3),u=ff(h,m,n),f=ff(h,m,n-1/3)}return{red:Math.round(c*255),green:Math.round(u*255),blue:Math.round(f*255),alpha:o}}function Sc(n,s){return i=>i>0?s:n}const pf=(n,s,i)=>{const o=n*n,c=i*(s*s-o)+o;return c<0?0:Math.sqrt(c)},gj=[Zf,Za,$i],vj=n=>gj.find(s=>s.test(n));function P0(n){const s=vj(n);if(!s)return!1;let i=s.parse(n);return s===$i&&(i=hj(i)),i}const V0=(n,s)=>{const i=P0(n),o=P0(s);if(!i||!o)return Sc(n,s);const c={...i};return u=>(c.red=pf(i.red,o.red,u),c.green=pf(i.green,o.green,u),c.blue=pf(i.blue,o.blue,u),c.alpha=vt(i.alpha,o.alpha,u),Za.transform(c))},yj=(n,s)=>i=>s(n(i)),Rr=(...n)=>n.reduce(yj),Wf=new Set(["none","hidden"]);function bj(n,s){return Wf.has(n)?i=>i<=0?n:s:i=>i>=1?s:n}function _j(n,s){return i=>vt(n,s,i)}function Jp(n){return typeof n=="number"?_j:typeof n=="string"?Ap(n)?Sc:Wt.test(n)?V0:Tj:Array.isArray(n)?G_:typeof n=="object"?Wt.test(n)?V0:xj:Sc}function G_(n,s){const i=[...n],o=i.length,c=n.map((u,f)=>Jp(u)(u,s[f]));return u=>{for(let f=0;f<o;f++)i[f]=c[f](u);return i}}function xj(n,s){const i={...n,...s},o={};for(const c in i)n[c]!==void 0&&s[c]!==void 0&&(o[c]=Jp(n[c])(n[c],s[c]));return c=>{for(const u in o)i[u]=o[u](c);return i}}function Sj(n,s){var i;const o=[],c={color:0,var:0,number:0};for(let u=0;u<s.values.length;u++){const f=s.types[u],m=n.indexes[f][c[f]],h=(i=n.values[m])!==null&&i!==void 0?i:0;o[u]=h,c[f]++}return o}const Tj=(n,s)=>{const i=ha.createTransformer(s),o=wr(n),c=wr(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?Wf.has(n)&&!c.values.length||Wf.has(s)&&!o.values.length?bj(n,s):Rr(G_(Sj(o,c),c.values),i):Sc(n,s)};function $_(n,s,i){return typeof n=="number"&&typeof s=="number"&&typeof i=="number"?vt(n,s,i):Jp(n)(n,s)}const kj=5;function Z_(n,s,i){const o=Math.max(s-kj,0);return h_(i-n(o),s-o)}const _t={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},mf=.001;function wj({duration:n=_t.duration,bounce:s=_t.bounce,velocity:i=_t.velocity,mass:o=_t.mass}){let c,u,f=1-s;f=Is(_t.minDamping,_t.maxDamping,f),n=Is(_t.minDuration,_t.maxDuration,Rs(n)),f<1?(c=g=>{const v=g*f,b=v*n,_=v-i,S=Xf(g,f),T=Math.exp(-b);return mf-_/S*T},u=g=>{const b=g*f*n,_=b*i+i,S=Math.pow(f,2)*Math.pow(g,2)*n,T=Math.exp(-b),j=Xf(Math.pow(g,2),f);return(-c(g)+mf>0?-1:1)*((_-S)*T)/j}):(c=g=>{const v=Math.exp(-g*n),b=(g-i)*n+1;return-mf+v*b},u=g=>{const v=Math.exp(-g*n),b=(i-g)*(n*n);return v*b});const m=5/n,h=jj(c,u,m);if(n=Ds(n),isNaN(h))return{stiffness:_t.stiffness,damping:_t.damping,duration:n};{const g=Math.pow(h,2)*o;return{stiffness:g,damping:f*2*Math.sqrt(o*g),duration:n}}}const Nj=12;function jj(n,s,i){let o=i;for(let c=1;c<Nj;c++)o=o-n(o)/s(o);return o}function Xf(n,s){return n*Math.sqrt(1-s*s)}const Cj=["duration","bounce"],Ej=["stiffness","damping","mass"];function H0(n,s){return s.some(i=>n[i]!==void 0)}function Aj(n){let s={velocity:_t.velocity,stiffness:_t.stiffness,damping:_t.damping,mass:_t.mass,isResolvedFromDuration:!1,...n};if(!H0(n,Ej)&&H0(n,Cj))if(n.visualDuration){const i=n.visualDuration,o=2*Math.PI/(i*1.2),c=o*o,u=2*Is(.05,1,1-(n.bounce||0))*Math.sqrt(c);s={...s,mass:_t.mass,stiffness:c,damping:u}}else{const i=wj(n);s={...s,...i,mass:_t.mass},s.isResolvedFromDuration=!0}return s}function F_(n=_t.visualDuration,s=_t.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],f=i.keyframes[i.keyframes.length-1],m={done:!1,value:u},{stiffness:h,damping:g,mass:v,duration:b,velocity:_,isResolvedFromDuration:S}=Aj({...i,velocity:-Rs(i.velocity||0)}),T=_||0,j=g/(2*Math.sqrt(h*v)),N=f-u,k=Rs(Math.sqrt(h/v)),E=Math.abs(N)<5;o||(o=E?_t.restSpeed.granular:_t.restSpeed.default),c||(c=E?_t.restDelta.granular:_t.restDelta.default);let A;if(j<1){const C=Xf(k,j);A=U=>{const V=Math.exp(-j*k*U);return f-V*((T+j*k*N)/C*Math.sin(C*U)+N*Math.cos(C*U))}}else if(j===1)A=C=>f-Math.exp(-k*C)*(N+(T+k*N)*C);else{const C=k*Math.sqrt(j*j-1);A=U=>{const V=Math.exp(-j*k*U),I=Math.min(C*U,300);return f-V*((T+j*k*N)*Math.sinh(I)+C*N*Math.cosh(I))/C}}const R={calculatedDuration:S&&b||null,next:C=>{const U=A(C);if(S)m.done=C>=b;else{let V=0;j<1&&(V=C===0?Ds(T):Z_(A,C,U));const I=Math.abs(V)<=o,F=Math.abs(f-U)<=c;m.done=I&&F}return m.value=m.done?f:U,m},toString:()=>{const C=Math.min(q_(R),Jf),U=v_(V=>R.next(C*V).value,C,30);return C+"ms "+U}};return R}function q0({keyframes:n,velocity:s=0,power:i=.8,timeConstant:o=325,bounceDamping:c=10,bounceStiffness:u=500,modifyTarget:f,min:m,max:h,restDelta:g=.5,restSpeed:v}){const b=n[0],_={done:!1,value:b},S=I=>m!==void 0&&I<m||h!==void 0&&I>h,T=I=>m===void 0?h:h===void 0||Math.abs(m-I)<Math.abs(h-I)?m:h;let j=i*s;const N=b+j,k=f===void 0?N:f(N);k!==N&&(j=k-b);const E=I=>-j*Math.exp(-I/o),A=I=>k+E(I),R=I=>{const F=E(I),ee=A(I);_.done=Math.abs(F)<=g,_.value=_.done?k:ee};let C,U;const V=I=>{S(_.value)&&(C=I,U=F_({keyframes:[_.value,T(_.value)],velocity:Z_(A,I,_.value),damping:c,stiffness:u,restDelta:g,restSpeed:v}))};return V(0),{calculatedDuration:null,next:I=>{let F=!1;return!U&&C===void 0&&(F=!0,R(I),V(I)),C!==void 0&&I>=C?U.next(I-C):(!F&&R(I),_)}}}const Dj=Dr(.42,0,1,1),Rj=Dr(0,0,.58,1),K_=Dr(.42,0,.58,1),Mj=n=>Array.isArray(n)&&typeof n[0]!="number",Oj={linear:_n,easeIn:Dj,easeInOut:K_,easeOut:Rj,circIn:$p,circInOut:j_,circOut:N_,backIn:Gp,backInOut:k_,backOut:T_,anticipate:w_},G0=n=>{if(qp(n)){Kb(n.length===4);const[s,i,o,c]=n;return Dr(s,i,o,c)}else if(typeof n=="string")return Oj[n];return n};function Ij(n,s,i){const o=[],c=i||$_,u=n.length-1;for(let f=0;f<u;f++){let m=c(n[f],n[f+1]);if(s){const h=Array.isArray(s)?s[f]||_n:s;m=Rr(h,m)}o.push(m)}return o}function Lj(n,s,{clamp:i=!0,ease:o,mixer:c}={}){const u=n.length;if(Kb(u===s.length),u===1)return()=>s[0];if(u===2&&s[0]===s[1])return()=>s[1];const f=n[0]===n[1];n[0]>n[u-1]&&(n=[...n].reverse(),s=[...s].reverse());const m=Ij(s,o,c),h=m.length,g=v=>{if(f&&v<n[0])return s[0];let b=0;if(h>1)for(;b<n.length-2&&!(v<n[b+1]);b++);const _=to(n[b],n[b+1],v);return m[b](_)};return i?v=>g(Is(n[0],n[u-1],v)):g}function Bj(n,s){const i=n[n.length-1];for(let o=1;o<=s;o++){const c=to(0,s,o);n.push(vt(i,1,c))}}function Uj(n){const s=[0];return Bj(s,n.length-1),s}function zj(n,s){return n.map(i=>i*s)}function Pj(n,s){return n.map(()=>s||K_).splice(0,n.length-1)}function Tc({duration:n=300,keyframes:s,times:i,ease:o="easeInOut"}){const c=Mj(o)?o.map(G0):G0(o),u={done:!1,value:s[0]},f=zj(i&&i.length===s.length?i:Uj(s),n),m=Lj(f,s,{ease:Array.isArray(c)?c:Pj(s,c)});return{calculatedDuration:n,next:h=>(u.value=m(h),u.done=h>=n,u)}}const Vj=n=>{const s=({timestamp:i})=>n(i);return{start:()=>ft.update(s,!0),stop:()=>ma(s),now:()=>Zt.isProcessing?Zt.timestamp:is.now()}},Hj={decay:q0,inertia:q0,tween:Tc,keyframes:Tc,spring:F_},qj=n=>n/100;class Wp extends H_{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,f=(c==null?void 0:c.KeyframeResolver)||Yp,m=(h,g)=>this.onKeyframesResolved(h,g);this.resolver=new f(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:f=0}=this.options,m=Hp(i)?i:Hj[i]||Tc;let h,g;m!==Tc&&typeof s[0]!="number"&&(h=Rr(qj,$_(s[0],s[1])),s=[0,100]);const v=m({...this.options,keyframes:s});u==="mirror"&&(g=m({...this.options,keyframes:[...s].reverse(),velocity:-f})),v.calculatedDuration===null&&(v.calculatedDuration=q_(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:I}=this.options;return{done:!0,value:I[I.length-1]}}const{finalKeyframe:c,generator:u,mirroredGenerator:f,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:j,onUpdate:N}=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 k=this.currentTime-_*(this.speed>=0?1:-1),E=this.speed>=0?k<0:k>v;this.currentTime=Math.max(k,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=v);let A=this.currentTime,R=u;if(S){const I=Math.min(this.currentTime,v)/b;let F=Math.floor(I),ee=I%1;!ee&&I>=1&&(ee=1),ee===1&&F--,F=Math.min(F,S+1),!!(F%2)&&(T==="reverse"?(ee=1-ee,j&&(ee-=j/b)):T==="mirror"&&(R=f)),A=Is(0,1,ee)*b}const C=E?{done:!1,value:h[0]}:R.next(A);m&&(C.value=m(C.value));let{done:U}=C;!E&&g!==null&&(U=this.speed>=0?this.currentTime>=v:this.currentTime<=0);const V=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&U);return V&&c!==void 0&&(C.value=Pc(h,this.options,c)),N&&N(C.value),V&&this.finish(),C}get duration(){const{resolved:s}=this;return s?Rs(s.calculatedDuration):0}get time(){return Rs(this.currentTime)}set time(s){s=Ds(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=Rs(this.currentTime))}play(){if(this.resolver.isScheduled||this.resolver.resume(),!this._resolved){this.pendingPlayState="running";return}if(this.isStopped)return;const{driver:s=Vj,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 Gj=new Set(["opacity","clipPath","filter","transform"]);function $j(n,s,i,{delay:o=0,duration:c=300,repeat:u=0,repeatType:f="loop",ease:m="easeInOut",times:h}={}){const g={[s]:i};h&&(g.offset=h);const v=b_(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:f==="reverse"?"alternate":"normal"})}const Zj=Vp(()=>Object.hasOwnProperty.call(Element.prototype,"animate")),kc=10,Fj=2e4;function Kj(n){return Hp(n.type)||n.type==="spring"||!y_(n.ease)}function Yj(n,s){const i=new Wp({...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<Fj;)o=i.sample(u),c.push(o.value),u+=kc;return{times:void 0,keyframes:c,duration:u-kc,ease:"linear"}}const Y_={anticipate:w_,backInOut:k_,circInOut:j_};function Jj(n){return n in Y_}class $0 extends H_{constructor(s){super(s);const{name:i,motionValue:o,element:c,keyframes:u}=this.options;this.resolver=new V_(u,(f,m)=>this.onKeyframesResolved(f,m),i,o,c),this.resolver.scheduleResolve()}initPlayback(s,i){let{duration:o=300,times:c,ease:u,type:f,motionValue:m,name:h,startTime:g}=this.options;if(!m.owner||!m.owner.current)return!1;if(typeof u=="string"&&xc()&&Jj(u)&&(u=Y_[u]),Kj(this.options)){const{onComplete:b,onUpdate:_,motionValue:S,element:T,...j}=this.options,N=Yj(s,j);s=N.keyframes,s.length===1&&(s[1]=s[0]),o=N.duration,c=N.times,u=N.ease,f="keyframes"}const v=$j(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(Pc(s,this.options,i)),b&&b(),this.cancel(),this.resolveFinishedPromise()},{animation:v,duration:o,times:c,type:f,ease:u,keyframes:s}}get duration(){const{resolved:s}=this;if(!s)return 0;const{duration:i}=s;return Rs(i)}get time(){const{resolved:s}=this;if(!s)return 0;const{animation:i}=s;return Rs(i.currentTime||0)}set time(s){const{resolved:i}=this;if(!i)return;const{animation:o}=i;o.currentTime=Ds(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 _n;const{animation:o}=i;M0(o,s)}return _n}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:f,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 Wp({...S,keyframes:o,duration:c,type:u,ease:f,times:m,isGenerator:!0}),j=Ds(this.time);g.setWithVelocity(T.sample(j-kc).value,T.sample(j).value,kc)}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:f,type:m}=s;if(!i||!i.owner||!(i.owner.current instanceof HTMLElement))return!1;const{onUpdate:h,transformTemplate:g}=i.owner.getProps();return Zj()&&o&&Gj.has(o)&&!h&&!g&&!c&&u!=="mirror"&&f!==0&&m!=="inertia"}}const Wj={type:"spring",stiffness:500,damping:25,restSpeed:10},Xj=n=>({type:"spring",stiffness:550,damping:n===0?2*Math.sqrt(550):30,restSpeed:10}),Qj={type:"keyframes",duration:.8},eC={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},tC=(n,{keyframes:s})=>s.length>2?Qj:ni.has(n)?n.startsWith("scale")?Xj(s[1]):Wj:eC;function nC({when:n,delay:s,delayChildren:i,staggerChildren:o,staggerDirection:c,repeat:u,repeatType:f,repeatDelay:m,from:h,elapsed:g,...v}){return!!Object.keys(v).length}const Xp=(n,s,i,o={},c,u)=>f=>{const m=Bp(o,n)||{},h=m.delay||o.delay||0;let{elapsed:g=0}=o;g=g-Ds(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:()=>{f(),m.onComplete&&m.onComplete()},name:n,motionValue:s,element:u?void 0:c};nC(m)||(v={...v,...tC(n,v)}),v.duration&&(v.duration=Ds(v.duration)),v.repeatDelay&&(v.repeatDelay=Ds(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 _=Pc(v.keyframes,m);if(_!==void 0)return ft.update(()=>{v.onUpdate(_),v.onComplete()}),new ON([])}return!u&&$0.supports(v)?new $0(v):new Wp(v)};function sC({protectedKeys:n,needsAnimating:s},i){const o=n.hasOwnProperty(i)&&s[i]!==!0;return s[i]=!1,o}function J_(n,s,{delay:i=0,transitionOverride:o,type:c}={}){var u;let{transition:f=n.getDefaultTransition(),transitionEnd:m,...h}=s;o&&(f=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&&sC(v,b))continue;const T={delay:i,...Bp(f||{},b)};let j=!1;if(window.MotionHandoffAnimation){const k=g_(n);if(k){const E=window.MotionHandoffAnimation(k,b,ft);E!==null&&(T.startTime=E,j=!0)}}Gf(n,b),_.start(Xp(b,_,S,n.shouldReduceMotion&&m_.has(b)?{type:!1}:T,n,j));const N=_.animation;N&&g.push(N)}return m&&Promise.all(g).then(()=>{ft.update(()=>{m&&AN(n,m)})}),g}function Qf(n,s,i={}){var o;const c=zc(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 f=c?()=>Promise.all(J_(n,c,i)):()=>Promise.resolve(),m=n.variantChildren&&n.variantChildren.size?(g=0)=>{const{delayChildren:v=0,staggerChildren:b,staggerDirection:_}=u;return aC(n,s,v+g,b,_,i)}:()=>Promise.resolve(),{when:h}=u;if(h){const[g,v]=h==="beforeChildren"?[f,m]:[m,f];return g().then(()=>v())}else return Promise.all([f(),m(i.delay)])}function aC(n,s,i=0,o=0,c=1,u){const f=[],m=(n.variantChildren.size-1)*o,h=c===1?(g=0)=>g*o:(g=0)=>m-g*o;return Array.from(n.variantChildren).sort(iC).forEach((g,v)=>{g.notify("AnimationStart",s),f.push(Qf(g,s,{...u,delay:i+h(v)}).then(()=>g.notify("AnimationComplete",s)))}),Promise.all(f)}function iC(n,s){return n.sortNodePosition(s)}function oC(n,s,i={}){n.notify("AnimationStart",s);let o;if(Array.isArray(s)){const c=s.map(u=>Qf(n,u,i));o=Promise.all(c)}else if(typeof s=="string")o=Qf(n,s,i);else{const c=typeof s=="function"?zc(n,s,i.custom):s;o=Promise.all(J_(n,c,i))}return o.then(()=>{n.notify("AnimationComplete",s)})}const rC=wp.length;function W_(n){if(!n)return;if(!n.isControllingVariants){const i=n.parent?W_(n.parent)||{}:{};return n.props.initial!==void 0&&(i.initial=n.props.initial),i}const s={};for(let i=0;i<rC;i++){const o=wp[i],c=n.props[o];(Sr(c)||c===!1)&&(s[o]=c)}return s}const lC=[...kp].reverse(),cC=kp.length;function uC(n){return s=>Promise.all(s.map(({animation:i,options:o})=>oC(n,i,o)))}function dC(n){let s=uC(n),i=Z0(),o=!0;const c=h=>(g,v)=>{var b;const _=zc(n,v,h==="exit"?(b=n.presenceContext)===null||b===void 0?void 0:b.custom:void 0);if(_){const{transition:S,transitionEnd:T,...j}=_;g={...g,...j,...T}}return g};function u(h){s=h(n)}function f(h){const{props:g}=n,v=W_(n.parent)||{},b=[],_=new Set;let S={},T=1/0;for(let N=0;N<cC;N++){const k=lC[N],E=i[k],A=g[k]!==void 0?g[k]:v[k],R=Sr(A),C=k===h?E.isActive:null;C===!1&&(T=N);let U=A===v[k]&&A!==g[k]&&R;if(U&&o&&n.manuallyAnimateOnMount&&(U=!1),E.protectedKeys={...S},!E.isActive&&C===null||!A&&!E.prevProp||Bc(A)||typeof A=="boolean")continue;const V=fC(E.prevProp,A);let I=V||k===h&&E.isActive&&!U&&R||N>T&&R,F=!1;const ee=Array.isArray(A)?A:[A];let re=ee.reduce(c(k),{});C===!1&&(re={});const{prevResolvedValues:se={}}=E,ue={...se,...re},Z=G=>{I=!0,_.has(G)&&(F=!0,_.delete(G)),E.needsAnimating[G]=!0;const X=n.getValue(G);X&&(X.liveStyle=!1)};for(const G in ue){const X=re[G],fe=se[G];if(S.hasOwnProperty(G))continue;let he=!1;qf(X)&&qf(fe)?he=!p_(X,fe):he=X!==fe,he?X!=null?Z(G):_.add(G):X!==void 0&&_.has(G)?Z(G):E.protectedKeys[G]=!0}E.prevProp=A,E.prevResolvedValues=re,E.isActive&&(S={...S,...re}),o&&n.blockInitialAnimation&&(I=!1),I&&(!(U&&V)||F)&&b.push(...ee.map(G=>({animation:G,options:{type:k}})))}if(_.size){const N={};_.forEach(k=>{const E=n.getBaseTarget(k),A=n.getValue(k);A&&(A.liveStyle=!0),N[k]=E??null}),b.push({animation:N})}let j=!!b.length;return o&&(g.initial===!1||g.initial===g.animate)&&!n.manuallyAnimateOnMount&&(j=!1),o=!1,j?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=f(h);for(const _ in i)i[_].protectedKeys={};return b}return{animateChanges:f,setActive:m,setAnimateFunction:u,getState:()=>i,reset:()=>{i=Z0(),o=!0}}}function fC(n,s){return typeof s=="string"?s!==n:Array.isArray(s)?!p_(s,n):!1}function Pa(n=!1){return{isActive:n,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function Z0(){return{animate:Pa(!0),whileInView:Pa(),whileHover:Pa(),whileTap:Pa(),whileDrag:Pa(),whileFocus:Pa(),exit:Pa()}}class ya{constructor(s){this.isMounted=!1,this.node=s}update(){}}class pC extends ya{constructor(s){super(s),s.animationState||(s.animationState=dC(s))}updateAnimationControlsSubscription(){const{animate:s}=this.node.getProps();Bc(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 mC=0;class hC extends ya{constructor(){super(...arguments),this.id=mC++}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 gC={animation:{Feature:pC},exit:{Feature:hC}},Zn={x:!1,y:!1};function X_(){return Zn.x||Zn.y}function vC(n){return n==="x"||n==="y"?Zn[n]?null:(Zn[n]=!0,()=>{Zn[n]=!1}):Zn.x||Zn.y?null:(Zn.x=Zn.y=!0,()=>{Zn.x=Zn.y=!1})}const Qp=n=>n.pointerType==="mouse"?typeof n.button!="number"||n.button<=0:n.isPrimary!==!1;function Nr(n,s,i,o={passive:!0}){return n.addEventListener(s,i,o),()=>n.removeEventListener(s,i)}function Mr(n){return{point:{x:n.pageX,y:n.pageY}}}const yC=n=>s=>Qp(s)&&n(s,Mr(s));function gr(n,s,i,o){return Nr(n,s,yC(i),o)}const F0=(n,s)=>Math.abs(n-s);function bC(n,s){const i=F0(n.x,s.x),o=F0(n.y,s.y);return Math.sqrt(i**2+o**2)}class Q_{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=gf(this.lastMoveEventInfo,this.history),_=this.startEvent!==null,S=bC(b.offset,{x:0,y:0})>=3;if(!_&&!S)return;const{point:T}=b,{timestamp:j}=Zt;this.history.push({...T,timestamp:j});const{onStart:N,onMove:k}=this.handlers;_||(N&&N(this.lastMoveEvent,b),this.startEvent=this.lastMoveEvent),k&&k(this.lastMoveEvent,b)},this.handlePointerMove=(b,_)=>{this.lastMoveEvent=b,this.lastMoveEventInfo=hf(_,this.transformPagePoint),ft.update(this.updatePoint,!0)},this.handlePointerUp=(b,_)=>{this.end();const{onEnd:S,onSessionEnd:T,resumeAnimation:j}=this.handlers;if(this.dragSnapToOrigin&&j&&j(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const N=gf(b.type==="pointercancel"?this.lastMoveEventInfo:hf(_,this.transformPagePoint),this.history);this.startEvent&&S&&S(b,N),T&&T(b,N)},!Qp(s))return;this.dragSnapToOrigin=u,this.handlers=i,this.transformPagePoint=o,this.contextWindow=c||window;const f=Mr(s),m=hf(f,this.transformPagePoint),{point:h}=m,{timestamp:g}=Zt;this.history=[{...h,timestamp:g}];const{onSessionStart:v}=i;v&&v(s,gf(m,this.history)),this.removeListeners=Rr(gr(this.contextWindow,"pointermove",this.handlePointerMove),gr(this.contextWindow,"pointerup",this.handlePointerUp),gr(this.contextWindow,"pointercancel",this.handlePointerUp))}updateHandlers(s){this.handlers=s}end(){this.removeListeners&&this.removeListeners(),ma(this.updatePoint)}}function hf(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 gf({point:n},s){return{point:n,delta:K0(n,ex(s)),offset:K0(n,_C(s)),velocity:xC(s,.1)}}function _C(n){return n[0]}function ex(n){return n[n.length-1]}function xC(n,s){if(n.length<2)return{x:0,y:0};let i=n.length-1,o=null;const c=ex(n);for(;i>=0&&(o=n[i],!(c.timestamp-o.timestamp>Ds(s)));)i--;if(!o)return{x:0,y:0};const u=Rs(c.timestamp-o.timestamp);if(u===0)return{x:0,y:0};const f={x:(c.x-o.x)/u,y:(c.y-o.y)/u};return f.x===1/0&&(f.x=0),f.y===1/0&&(f.y=0),f}const tx=1e-4,SC=1-tx,TC=1+tx,nx=.01,kC=0-nx,wC=0+nx;function xn(n){return n.max-n.min}function NC(n,s,i){return Math.abs(n-s)<=i}function Y0(n,s,i,o=.5){n.origin=o,n.originPoint=vt(s.min,s.max,n.origin),n.scale=xn(i)/xn(s),n.translate=vt(i.min,i.max,n.origin)-n.originPoint,(n.scale>=SC&&n.scale<=TC||isNaN(n.scale))&&(n.scale=1),(n.translate>=kC&&n.translate<=wC||isNaN(n.translate))&&(n.translate=0)}function vr(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+xn(s)}function jC(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+xn(s)}function yr(n,s,i){W0(n.x,s.x,i.x),W0(n.y,s.y,i.y)}function CC(n,{min:s,max:i},o){return s!==void 0&&n<s?n=o?vt(s,n,o.min):Math.max(n,s):i!==void 0&&n>i&&(n=o?vt(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 EC(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 AC(n,s){return{x:Q0(n.x,s.x),y:Q0(n.y,s.y)}}function DC(n,s){let i=.5;const o=xn(n),c=xn(s);return c>o?i=to(s.min,s.max-o,n.min):o>c&&(i=to(n.min,n.max-c,s.min)),Is(0,1,i)}function RC(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 ep=.35;function MC(n=ep){return n===!1?n=0:n===!0&&(n=ep),{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}),Zi=()=>({x:ny(),y:ny()}),sy=()=>({min:0,max:0}),wt=()=>({x:sy(),y:sy()});function Ln(n){return[n("x"),n("y")]}function sx({top:n,left:s,right:i,bottom:o}){return{x:{min:s,max:i},y:{min:n,max:o}}}function OC({x:n,y:s}){return{top:s.min,right:n.max,bottom:s.max,left:n.min}}function IC(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 vf(n){return n===void 0||n===1}function tp({scale:n,scaleX:s,scaleY:i}){return!vf(n)||!vf(s)||!vf(i)}function Ga(n){return tp(n)||ax(n)||n.z||n.rotate||n.rotateX||n.rotateY||n.skewX||n.skewY}function ax(n){return ay(n.x)||ay(n.y)}function ay(n){return n&&n!=="0%"}function wc(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=wc(n,c,o)),wc(n,i,o)+s}function np(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 ix(n,{x:s,y:i}){np(n.x,s.translate,s.scale,s.originPoint),np(n.y,i.translate,i.scale,i.originPoint)}const oy=.999999999999,ry=1.0000000000001;function LC(n,s,i,o=!1){const c=i.length;if(!c)return;s.x=s.y=1;let u,f;for(let m=0;m<c;m++){u=i[m],f=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&&Ki(n,{x:-u.scroll.offset.x,y:-u.scroll.offset.y}),f&&(s.x*=f.x.scale,s.y*=f.y.scale,ix(n,f)),o&&Ga(u.latestValues)&&Ki(n,u.latestValues))}s.x<ry&&s.x>oy&&(s.x=1),s.y<ry&&s.y>oy&&(s.y=1)}function Fi(n,s){n.min=n.min+s,n.max=n.max+s}function ly(n,s,i,o,c=.5){const u=vt(n.min,n.max,c);np(n,s,i,u,o)}function Ki(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 ox(n,s){return sx(IC(n.getBoundingClientRect(),s))}function BC(n,s,i){const o=ox(n,i),{scroll:c}=s;return c&&(Fi(o.x,c.offset.x),Fi(o.y,c.offset.y)),o}const rx=({current:n})=>n?n.ownerDocument.defaultView:null,UC=new WeakMap;class zC{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=wt(),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(Mr(v).point)},u=(v,b)=>{const{drag:_,dragPropagation:S,onDragStart:T}=this.getProps();if(_&&!S&&(this.openDragLock&&this.openDragLock(),this.openDragLock=vC(_),!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),Ln(N=>{let k=this.getAxisMotionValue(N).get()||0;if(as.test(k)){const{projection:E}=this.visualElement;if(E&&E.layout){const A=E.layout.layoutBox[N];A&&(k=xn(A)*(parseFloat(k)/100))}}this.originPoint[N]=k}),T&&ft.postRender(()=>T(v,b)),Gf(this.visualElement,"transform");const{animationState:j}=this.visualElement;j&&j.setActive("whileDrag",!0)},f=(v,b)=>{const{dragPropagation:_,dragDirectionLock:S,onDirectionLock:T,onDrag:j}=this.getProps();if(!_&&!this.openDragLock)return;const{offset:N}=b;if(S&&this.currentDirection===null){this.currentDirection=PC(N),this.currentDirection!==null&&T&&T(this.currentDirection);return}this.updateAxis("x",b.point,N),this.updateAxis("y",b.point,N),this.visualElement.render(),j&&j(v,b)},m=(v,b)=>this.stop(v,b),h=()=>Ln(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 Q_(s,{onSessionStart:c,onStart:u,onMove:f,onSessionEnd:m,resumeAnimation:h},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:g,contextWindow:rx(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||!ac(s,c,this.currentDirection))return;const u=this.getAxisMotionValue(s);let f=this.originPoint[s]+o[s];this.constraints&&this.constraints[s]&&(f=CC(f,this.constraints[s],this.elastic[s])),u.set(f)}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&&Gi(i)?this.constraints||(this.constraints=this.resolveRefConstraints()):i&&c?this.constraints=EC(c.layoutBox,i):this.constraints=!1,this.elastic=MC(o),u!==this.constraints&&c&&this.constraints&&!this.hasMutatedConstraints&&Ln(f=>{this.constraints!==!1&&this.getAxisMotionValue(f)&&(this.constraints[f]=RC(c.layoutBox[f],this.constraints[f]))})}resolveRefConstraints(){const{dragConstraints:s,onMeasureDragConstraints:i}=this.getProps();if(!s||!Gi(s))return!1;const o=s.current,{projection:c}=this.visualElement;if(!c||!c.layout)return!1;const u=BC(o,c.root,this.visualElement.getTransformPagePoint());let f=AC(c.layout.layoutBox,u);if(i){const m=i(OC(f));this.hasMutatedConstraints=!!m,m&&(f=sx(m))}return f}startAnimation(s){const{drag:i,dragMomentum:o,dragElastic:c,dragTransition:u,dragSnapToOrigin:f,onDragTransitionEnd:m}=this.getProps(),h=this.constraints||{},g=Ln(v=>{if(!ac(v,i,this.currentDirection))return;let b=h&&h[v]||{};f&&(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 Gf(this.visualElement,s),o.start(Xp(s,o,0,i,this.visualElement,!1))}stopAnimation(){Ln(s=>this.getAxisMotionValue(s).stop())}pauseAnimation(){Ln(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){Ln(i=>{const{drag:o}=this.getProps();if(!ac(i,o,this.currentDirection))return;const{projection:c}=this.visualElement,u=this.getAxisMotionValue(i);if(c&&c.layout){const{min:f,max:m}=c.layout.layoutBox[i];u.set(s[i]-vt(f,m,.5))}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:s,dragConstraints:i}=this.getProps(),{projection:o}=this.visualElement;if(!Gi(i)||!o||!this.constraints)return;this.stopAnimation();const c={x:0,y:0};Ln(f=>{const m=this.getAxisMotionValue(f);if(m&&this.constraints!==!1){const h=m.get();c[f]=DC({min:h,max:h},this.constraints[f])}});const{transformTemplate:u}=this.visualElement.getProps();this.visualElement.current.style.transform=u?u({},""):"none",o.root&&o.root.updateScroll(),o.updateLayout(),this.resolveConstraints(),Ln(f=>{if(!ac(f,s,null))return;const m=this.getAxisMotionValue(f),{min:h,max:g}=this.constraints[f];m.set(vt(h,g,c[f]))})}addListeners(){if(!this.visualElement.current)return;UC.set(this.visualElement,this);const s=this.visualElement.current,i=gr(s,"pointerdown",h=>{const{drag:g,dragListener:v=!0}=this.getProps();g&&v&&this.start(h)}),o=()=>{const{dragConstraints:h}=this.getProps();Gi(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 f=Nr(window,"resize",()=>this.scalePositionWithinConstraints()),m=c.addEventListener("didUpdate",(({delta:h,hasLayoutChanged:g})=>{this.isDragging&&g&&(Ln(v=>{const b=this.getAxisMotionValue(v);b&&(this.originPoint[v]+=h[v].translate,b.set(b.get()+h[v].translate))}),this.visualElement.render())}));return()=>{f(),i(),u(),m&&m()}}getProps(){const s=this.visualElement.getProps(),{drag:i=!1,dragDirectionLock:o=!1,dragPropagation:c=!1,dragConstraints:u=!1,dragElastic:f=ep,dragMomentum:m=!0}=s;return{...s,drag:i,dragDirectionLock:o,dragPropagation:c,dragConstraints:u,dragElastic:f,dragMomentum:m}}}function ac(n,s,i){return(s===!0||s===n)&&(i===null||i===n)}function PC(n,s=10){let i=null;return Math.abs(n.y)>s?i="y":Math.abs(n.x)>s&&(i="x"),i}class VC extends ya{constructor(s){super(s),this.removeGroupControls=_n,this.removeListeners=_n,this.controls=new zC(s)}mount(){const{dragControls:s}=this.node.getProps();s&&(this.removeGroupControls=s.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||_n}unmount(){this.removeGroupControls(),this.removeListeners()}}const cy=n=>(s,i)=>{n&&ft.postRender(()=>n(s,i))};class HC extends ya{constructor(){super(...arguments),this.removePointerDownListener=_n}onPointerDown(s){this.session=new Q_(s,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:rx(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,f)=>{delete this.session,c&&ft.postRender(()=>c(u,f))}}}mount(){this.removePointerDownListener=gr(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 hc={hasAnimatedSinceResize:!0,hasEverUpdated:!1};function uy(n,s){return s.max===s.min?0:n/(s.max-s.min)*100}const or={correct:(n,s)=>{if(!s.target)return n;if(typeof n=="string")if(ke.test(n))n=parseFloat(n);else return n;const i=uy(n,s.target.x),o=uy(n,s.target.y);return`${i}% ${o}%`}},qC={correct:(n,{treeScale:s,projectionDelta:i})=>{const o=n,c=ha.parse(n);if(c.length>5)return o;const u=ha.createTransformer(n),f=typeof c[0]!="number"?1:0,m=i.x.scale*s.x,h=i.y.scale*s.y;c[0+f]/=m,c[1+f]/=h;const g=vt(m,h,.5);return typeof c[2+f]=="number"&&(c[2+f]/=g),typeof c[3+f]=="number"&&(c[3+f]/=g),u(c)}};class GC extends y.Component{componentDidMount(){const{visualElement:s,layoutGroup:i,switchLayoutGroup:o,layoutId:c}=this.props,{projection:u}=s;gN($C),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()})),hc.hasEverUpdated=!0}getSnapshotBeforeUpdate(s){const{layoutDependency:i,visualElement:o,drag:c,isPresent:u}=this.props,f=o.projection;return f&&(f.isPresent=u,c||s.layoutDependency!==i||i===void 0?f.willUpdate():this.safeToRemove(),s.isPresent!==u&&(u?f.promote():f.relegate()||ft.postRender(()=>{const m=f.getStack();(!m||!m.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:s}=this.props.visualElement;s&&(s.root.didUpdate(),jp.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 lx(n){const[s,i]=Zb(),o=y.useContext(_p);return l.jsx(GC,{...n,layoutGroup:o,switchLayoutGroup:y.useContext(e_),isPresent:s,safeToRemove:i})}const $C={borderRadius:{...or,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:or,borderTopRightRadius:or,borderBottomLeftRadius:or,borderBottomRightRadius:or,boxShadow:qC};function ZC(n,s,i){const o=Xt(n)?n:kr(n);return o.start(Xp("",o,s,i)),o.animation}function FC(n){return n instanceof SVGElement&&n.tagName!=="svg"}const KC=(n,s)=>n.depth-s.depth;class YC{constructor(){this.children=[],this.isDirty=!1}add(s){Up(this.children,s),this.isDirty=!0}remove(s){zp(this.children,s),this.isDirty=!0}forEach(s){this.isDirty&&this.children.sort(KC),this.isDirty=!1,this.children.forEach(s)}}function JC(n,s){const i=is.now(),o=({timestamp:c})=>{const u=c-i;u>=s&&(ma(o),n(u-s))};return ft.read(o,!0),()=>ma(o)}const cx=["TopLeft","TopRight","BottomLeft","BottomRight"],WC=cx.length,dy=n=>typeof n=="string"?parseFloat(n):n,fy=n=>typeof n=="number"||ke.test(n);function XC(n,s,i,o,c,u){c?(n.opacity=vt(0,i.opacity!==void 0?i.opacity:1,QC(o)),n.opacityExit=vt(s.opacity!==void 0?s.opacity:1,0,eE(o))):u&&(n.opacity=vt(s.opacity!==void 0?s.opacity:1,i.opacity!==void 0?i.opacity:1,o));for(let f=0;f<WC;f++){const m=`border${cx[f]}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(vt(dy(h),dy(g),o),0),(as.test(g)||as.test(h))&&(n[m]+="%")):n[m]=g}(s.rotate||i.rotate)&&(n.rotate=vt(s.rotate||0,i.rotate||0,o))}function py(n,s){return n[s]!==void 0?n[s]:n.borderRadius}const QC=ux(0,.5,N_),eE=ux(.5,.95,_n);function ux(n,s,i){return o=>o<n?0:o>s?1:i(to(n,s,o))}function my(n,s){n.min=s.min,n.max=s.max}function On(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=wc(n,1/i,o),c!==void 0&&(n=wc(n,1/c,o)),n}function tE(n,s=0,i=1,o=.5,c,u=n,f=n){if(as.test(s)&&(s=parseFloat(s),s=vt(f.min,f.max,s/100)-f.min),typeof s!="number")return;let m=vt(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,f){tE(n,s[i],s[o],s[c],s.scale,u,f)}const nE=["x","scaleX","originX"],sE=["y","scaleY","originY"];function yy(n,s,i,o){vy(n.x,s,nE,i?i.x:void 0,o?o.x:void 0),vy(n.y,s,sE,i?i.y:void 0,o?o.y:void 0)}function by(n){return n.translate===0&&n.scale===1}function dx(n){return by(n.x)&&by(n.y)}function _y(n,s){return n.min===s.min&&n.max===s.max}function aE(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 fx(n,s){return xy(n.x,s.x)&&xy(n.y,s.y)}function Sy(n){return xn(n.x)/xn(n.y)}function Ty(n,s){return n.translate===s.translate&&n.scale===s.scale&&n.originPoint===s.originPoint}class iE{constructor(){this.members=[]}add(s){Up(this.members,s),s.scheduleRender()}remove(s){if(zp(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 oE(n,s,i){let o="";const c=n.x.translate/s.x,u=n.y.translate/s.y,f=(i==null?void 0:i.z)||0;if((c||u||f)&&(o=`translate3d(${c}px, ${u}px, ${f}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 $a={type:"projectionFrame",totalNodes:0,resolvedTargetDeltas:0,recalculatedProjection:0},dr=typeof window<"u"&&window.MotionDebug!==void 0,yf=["","X","Y","Z"],rE={visibility:"hidden"},ky=1e3;let lE=0;function bf(n,s,i,o){const{latestValues:c}=s;c[n]&&(i[n]=c[n],s.setStaticValue(n,0),o&&(o[n]=0))}function px(n){if(n.hasCheckedOptimisedAppear=!0,n.root===n)return;const{visualElement:s}=n.options;if(!s)return;const i=g_(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&&px(o)}function mx({attachResizeListener:n,defaultParent:s,measureScroll:i,checkIsScrollRoot:o,resetTransform:c}){return class{constructor(f={},m=s==null?void 0:s()){this.id=lE++,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,dr&&($a.totalNodes=$a.resolvedTargetDeltas=$a.recalculatedProjection=0),this.nodes.forEach(dE),this.nodes.forEach(gE),this.nodes.forEach(vE),this.nodes.forEach(fE),dr&&window.MotionDebug.record($a)},this.resolvedRelativeTargetAt=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=f,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 YC)}addEventListener(f,m){return this.eventHandlers.has(f)||this.eventHandlers.set(f,new Pp),this.eventHandlers.get(f).add(m)}notifyListeners(f,...m){const h=this.eventHandlers.get(f);h&&h.notify(...m)}hasListeners(f){return this.eventHandlers.has(f)}mount(f,m=this.root.hasTreeAnimated){if(this.instance)return;this.isSVG=FC(f),this.instance=f;const{layoutId:h,layout:g,visualElement:v}=this.options;if(v&&!v.current&&v.mount(f),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(f,()=>{this.root.updateBlockedByResize=!0,b&&b(),b=JC(_,250),hc.hasAnimatedSinceResize&&(hc.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 j=this.options.transition||v.getDefaultTransition()||SE,{onLayoutAnimationStart:N,onLayoutAnimationComplete:k}=v.getProps(),E=!this.targetLayout||!fx(this.targetLayout,T)||S,A=!_&&S;if(this.options.layoutRoot||this.resumeFrom&&this.resumeFrom.instance||A||_&&(E||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0),this.setAnimationOrigin(b,A);const R={...Bp(j,"layout"),onPlay:N,onComplete:k};(v.shouldReduceMotion||this.options.layoutRoot)&&(R.delay=0,R.type=!1),this.startAnimation(R)}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 f=this.getStack();f&&f.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,ma(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(yE),this.animationId++)}getTransformTemplate(){const{visualElement:f}=this.options;return f&&f.getProps().transformTemplate}willUpdate(f=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&px(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(),f&&this.notifyListeners("willUpdate")}update(){if(this.updateScheduled=!1,this.isUpdateBlocked()){this.unblockUpdate(),this.clearAllSnapshots(),this.nodes.forEach(wy);return}this.isUpdating||this.nodes.forEach(mE),this.isUpdating=!1,this.nodes.forEach(hE),this.nodes.forEach(cE),this.nodes.forEach(uE),this.clearAllSnapshots();const m=is.now();Zt.delta=Is(0,1e3/60,m-Zt.timestamp),Zt.timestamp=m,Zt.isProcessing=!0,uf.update.process(Zt),uf.preRender.process(Zt),uf.render.process(Zt),Zt.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,jp.read(this.scheduleUpdate))}clearAllSnapshots(){this.nodes.forEach(pE),this.sharedNodes.forEach(bE)}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 f=this.layout;this.layout=this.measure(!1),this.layoutCorrected=wt(),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,f?f.layoutBox:void 0)}updateScroll(f="measure"){let m=!!(this.options.layoutScroll&&this.instance);if(this.scroll&&this.scroll.animationId===this.root.animationId&&this.scroll.phase===f&&(m=!1),m){const h=o(this.instance);this.scroll={animationId:this.root.animationId,phase:f,isRoot:h,offset:i(this.instance),wasRoot:this.scroll?this.scroll.isRoot:h}}}resetTransform(){if(!c)return;const f=this.isLayoutDirty||this.shouldResetTransform||this.options.alwaysMeasureLayout,m=this.projectionDelta&&!dx(this.projectionDelta),h=this.getTransformTemplate(),g=h?h(this.latestValues,""):void 0,v=g!==this.prevTransformTemplateValue;f&&(m||Ga(this.latestValues)||v)&&(c(this.instance,g),this.shouldResetTransform=!1,this.scheduleRender())}measure(f=!0){const m=this.measurePageBox();let h=this.removeElementScroll(m);return f&&(h=this.removeTransform(h)),TE(h),{animationId:this.root.animationId,measuredBox:m,layoutBox:h,latestValues:{},source:this.id}}measurePageBox(){var f;const{visualElement:m}=this.options;if(!m)return wt();const h=m.measureViewportBox();if(!(((f=this.scroll)===null||f===void 0?void 0:f.wasRoot)||this.path.some(kE))){const{scroll:v}=this.root;v&&(Fi(h.x,v.offset.x),Fi(h.y,v.offset.y))}return h}removeElementScroll(f){var m;const h=wt();if(On(h,f),!((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&&On(h,f),Fi(h.x,b.offset.x),Fi(h.y,b.offset.y))}return h}applyTransform(f,m=!1){const h=wt();On(h,f);for(let g=0;g<this.path.length;g++){const v=this.path[g];!m&&v.options.layoutScroll&&v.scroll&&v!==v.root&&Ki(h,{x:-v.scroll.offset.x,y:-v.scroll.offset.y}),Ga(v.latestValues)&&Ki(h,v.latestValues)}return Ga(this.latestValues)&&Ki(h,this.latestValues),h}removeTransform(f){const m=wt();On(m,f);for(let h=0;h<this.path.length;h++){const g=this.path[h];if(!g.instance||!Ga(g.latestValues))continue;tp(g.latestValues)&&g.updateSnapshot();const v=wt(),b=g.measurePageBox();On(v,b),yy(m,g.latestValues,g.snapshot?g.snapshot.layoutBox:void 0,v)}return Ga(this.latestValues)&&yy(m,this.latestValues),m}setTargetDelta(f){this.targetDelta=f,this.root.scheduleUpdateProjection(),this.isProjectionDirty=!0}setOptions(f){this.options={...this.options,...f,crossfade:f.crossfade!==void 0?f.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(f=!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(!(f||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=wt(),this.relativeTargetOrigin=wt(),yr(this.relativeTargetOrigin,this.layout.layoutBox,S.layout.layoutBox),On(this.relativeTarget,this.relativeTargetOrigin)):this.relativeParent=this.relativeTarget=void 0}if(!(!this.relativeTarget&&!this.targetDelta)){if(this.target||(this.target=wt(),this.targetWithTransforms=wt()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target?(this.forceRelativeParentToResolveTarget(),jC(this.target,this.relativeTarget,this.relativeParent.target)):this.targetDelta?(this.resumingFrom?this.target=this.applyTransform(this.layout.layoutBox):On(this.target,this.layout.layoutBox),ix(this.target,this.targetDelta)):On(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=wt(),this.relativeTargetOrigin=wt(),yr(this.relativeTargetOrigin,this.target,S.target),On(this.relativeTarget,this.relativeTargetOrigin)):this.relativeParent=this.relativeTarget=void 0}dr&&$a.resolvedTargetDeltas++}}}getClosestProjectingParent(){if(!(!this.parent||tp(this.parent.latestValues)||ax(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 f;const m=this.getLead(),h=!!this.resumingFrom||this!==m;let g=!0;if((this.isProjectionDirty||!((f=this.parent)===null||f===void 0)&&f.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;On(this.layoutCorrected,this.layout.layoutBox);const _=this.treeScale.x,S=this.treeScale.y;LC(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=wt());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)),vr(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)),dr&&$a.recalculatedProjection++}hide(){this.isVisible=!1}show(){this.isVisible=!0}scheduleRender(f=!0){var m;if((m=this.options.visualElement)===null||m===void 0||m.scheduleRender(),f){const h=this.getStack();h&&h.scheduleRender()}this.resumingFrom&&!this.resumingFrom.instance&&(this.resumingFrom=void 0)}createProjectionDeltas(){this.prevProjectionDelta=Zi(),this.projectionDelta=Zi(),this.projectionDeltaWithTransform=Zi()}setAnimationOrigin(f,m=!1){const h=this.snapshot,g=h?h.latestValues:{},v={...this.latestValues},b=Zi();(!this.relativeParent||!this.relativeParent.options.layoutRoot)&&(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!m;const _=wt(),S=h?h.source:void 0,T=this.layout?this.layout.source:void 0,j=S!==T,N=this.getStack(),k=!N||N.members.length<=1,E=!!(j&&!k&&this.options.crossfade===!0&&!this.path.some(xE));this.animationProgress=0;let A;this.mixTargetDelta=R=>{const C=R/1e3;jy(b.x,f.x,C),jy(b.y,f.y,C),this.setTargetDelta(b),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(yr(_,this.layout.layoutBox,this.relativeParent.layout.layoutBox),_E(this.relativeTarget,this.relativeTargetOrigin,_,C),A&&aE(this.relativeTarget,A)&&(this.isProjectionDirty=!1),A||(A=wt()),On(A,this.relativeTarget)),j&&(this.animationValues=v,XC(v,g,this.latestValues,C,E,k)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=C},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(f){this.notifyListeners("animationStart"),this.currentAnimation&&this.currentAnimation.stop(),this.resumingFrom&&this.resumingFrom.currentAnimation&&this.resumingFrom.currentAnimation.stop(),this.pendingAnimation&&(ma(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=ft.update(()=>{hc.hasAnimatedSinceResize=!0,this.currentAnimation=ZC(0,ky,{...f,onUpdate:m=>{this.mixTargetDelta(m),f.onUpdate&&f.onUpdate(m)},onComplete:()=>{f.onComplete&&f.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 f=this.getStack();f&&f.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 f=this.getLead();let{targetWithTransforms:m,target:h,layout:g,latestValues:v}=f;if(!(!m||!h||!g)){if(this!==f&&this.layout&&g&&hx(this.options.animationType,this.layout.layoutBox,g.layoutBox)){h=this.target||wt();const b=xn(this.layout.layoutBox.x);h.x.min=f.target.x.min,h.x.max=h.x.min+b;const _=xn(this.layout.layoutBox.y);h.y.min=f.target.y.min,h.y.max=h.y.min+_}On(m,h),Ki(m,v),vr(this.projectionDeltaWithTransform,this.layoutCorrected,m,v)}}registerSharedNode(f,m){this.sharedNodes.has(f)||this.sharedNodes.set(f,new iE),this.sharedNodes.get(f).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 f=this.getStack();return f?f.lead===this:!0}getLead(){var f;const{layoutId:m}=this.options;return m?((f=this.getStack())===null||f===void 0?void 0:f.lead)||this:this}getPrevLead(){var f;const{layoutId:m}=this.options;return m?(f=this.getStack())===null||f===void 0?void 0:f.prevLead:void 0}getStack(){const{layoutId:f}=this.options;if(f)return this.root.sharedNodes.get(f)}promote({needsReset:f,transition:m,preserveFollowOpacity:h}={}){const g=this.getStack();g&&g.promote(this,h),f&&(this.projectionDelta=void 0,this.needsReset=!0),m&&this.setOptions({transition:m})}relegate(){const f=this.getStack();return f?f.relegate(this):!1}resetSkewAndRotation(){const{visualElement:f}=this.options;if(!f)return;let m=!1;const{latestValues:h}=f;if((h.z||h.rotate||h.rotateX||h.rotateY||h.rotateZ||h.skewX||h.skewY)&&(m=!0),!m)return;const g={};h.z&&bf("z",f,g,this.animationValues);for(let v=0;v<yf.length;v++)bf(`rotate${yf[v]}`,f,g,this.animationValues),bf(`skew${yf[v]}`,f,g,this.animationValues);f.render();for(const v in g)f.setStaticValue(v,g[v]),this.animationValues&&(this.animationValues[v]=g[v]);f.scheduleRender()}getProjectionStyles(f){var m,h;if(!this.instance||this.isSVG)return;if(!this.isVisible)return rE;const g={visibility:""},v=this.getTransformTemplate();if(this.needsReset)return this.needsReset=!1,g.opacity="",g.pointerEvents=pc(f==null?void 0:f.pointerEvents)||"",g.transform=v?v(this.latestValues,""):"none",g;const b=this.getLead();if(!this.projectionDelta||!this.layout||!b.target){const j={};return this.options.layoutId&&(j.opacity=this.latestValues.opacity!==void 0?this.latestValues.opacity:1,j.pointerEvents=pc(f==null?void 0:f.pointerEvents)||""),this.hasProjected&&!Ga(this.latestValues)&&(j.transform=v?v({},""):"none",this.hasProjected=!1),j}const _=b.animationValues||b.latestValues;this.applyTransformsToTarget(),g.transform=oE(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 j in _c){if(_[j]===void 0)continue;const{correct:N,applyTo:k}=_c[j],E=g.transform==="none"?_[j]:N(_[j],b);if(k){const A=k.length;for(let R=0;R<A;R++)g[k[R]]=E}else g[j]=E}return this.options.layoutId&&(g.pointerEvents=b===this?pc(f==null?void 0:f.pointerEvents)||"":"none"),g}clearSnapshot(){this.resumeFrom=this.snapshot=void 0}resetTree(){this.root.nodes.forEach(f=>{var m;return(m=f.currentAnimation)===null||m===void 0?void 0:m.stop()}),this.root.nodes.forEach(wy),this.root.sharedNodes.clear()}}}function cE(n){n.updateLayout()}function uE(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,f=i.source!==n.layout.source;u==="size"?Ln(b=>{const _=f?i.measuredBox[b]:i.layoutBox[b],S=xn(_);_.min=o[b].min,_.max=_.min+S}):hx(u,i.layoutBox,o)&&Ln(b=>{const _=f?i.measuredBox[b]:i.layoutBox[b],S=xn(o[b]);_.max=_.min+S,n.relativeTarget&&!n.currentAnimation&&(n.isProjectionDirty=!0,n.relativeTarget[b].max=n.relativeTarget[b].min+S)});const m=Zi();vr(m,o,i.layoutBox);const h=Zi();f?vr(h,n.applyTransform(c,!0),i.measuredBox):vr(h,o,i.layoutBox);const g=!dx(m);let v=!1;if(!n.resumeFrom){const b=n.getClosestProjectingParent();if(b&&!b.resumeFrom){const{snapshot:_,layout:S}=b;if(_&&S){const T=wt();yr(T,i.layoutBox,_.layoutBox);const j=wt();yr(j,o,S.layoutBox),fx(T,j)||(v=!0),b.options.layoutRoot&&(n.relativeTarget=j,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 dE(n){dr&&$a.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 fE(n){n.isProjectionDirty=n.isSharedProjectionDirty=n.isTransformDirty=!1}function pE(n){n.clearSnapshot()}function wy(n){n.clearMeasurements()}function mE(n){n.isLayoutDirty=!1}function hE(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 gE(n){n.resolveTargetDelta()}function vE(n){n.calcProjection()}function yE(n){n.resetSkewAndRotation()}function bE(n){n.removeLeadSnapshot()}function jy(n,s,i){n.translate=vt(s.translate,0,i),n.scale=vt(s.scale,1,i),n.origin=s.origin,n.originPoint=s.originPoint}function Cy(n,s,i,o){n.min=vt(s.min,i.min,o),n.max=vt(s.max,i.max,o)}function _E(n,s,i,o){Cy(n.x,s.x,i.x,o),Cy(n.y,s.y,i.y,o)}function xE(n){return n.animationValues&&n.animationValues.opacityExit!==void 0}const SE={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:_n;function Dy(n){n.min=Ay(n.min),n.max=Ay(n.max)}function TE(n){Dy(n.x),Dy(n.y)}function hx(n,s,i){return n==="position"||n==="preserve-aspect"&&!NC(Sy(s),Sy(i),.2)}function kE(n){var s;return n!==n.root&&((s=n.scroll)===null||s===void 0?void 0:s.wasRoot)}const wE=mx({attachResizeListener:(n,s)=>Nr(n,"resize",s),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),_f={current:void 0},gx=mx({measureScroll:n=>({x:n.scrollLeft,y:n.scrollTop}),defaultParent:()=>{if(!_f.current){const n=new wE({});n.mount(window),n.setOptions({layoutScroll:!0}),_f.current=n}return _f.current},resetTransform:(n,s)=>{n.style.transform=s!==void 0?s:"none"},checkIsScrollRoot:n=>window.getComputedStyle(n).position==="fixed"}),NE={pan:{Feature:HC},drag:{Feature:VC,ProjectionNode:gx,MeasureLayout:lx}};function jE(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 vx(n,s){const i=jE(n),o=new AbortController,c={passive:!0,...s,signal:o.signal};return[i,c,()=>o.abort()]}function Ry(n){return s=>{s.pointerType==="touch"||X_()||n(s)}}function CE(n,s,i={}){const[o,c,u]=vx(n,i),f=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",f,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,Mr(s)))}class EE extends ya{mount(){const{current:s}=this.node;s&&(this.unmount=CE(s,i=>(My(this.node,i,"Start"),o=>My(this.node,o,"End"))))}unmount(){}}class AE extends ya{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=Rr(Nr(this.node.current,"focus",()=>this.onFocus()),Nr(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}const yx=(n,s)=>s?n===s?!0:yx(n,s.parentElement):!1,DE=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function RE(n){return DE.has(n.tagName)||n.tabIndex!==-1}const fr=new WeakSet;function Oy(n){return s=>{s.key==="Enter"&&n(s)}}function xf(n,s){n.dispatchEvent(new PointerEvent("pointer"+s,{isPrimary:!0,bubbles:!0}))}const ME=(n,s)=>{const i=n.currentTarget;if(!i)return;const o=Oy(()=>{if(fr.has(i))return;xf(i,"down");const c=Oy(()=>{xf(i,"up")}),u=()=>xf(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 Qp(n)&&!X_()}function OE(n,s,i={}){const[o,c,u]=vx(n,i),f=m=>{const h=m.currentTarget;if(!Iy(m)||fr.has(h))return;fr.add(h);const g=s(m),v=(S,T)=>{window.removeEventListener("pointerup",b),window.removeEventListener("pointercancel",_),!(!Iy(S)||!fr.has(h))&&(fr.delete(h),typeof g=="function"&&g(S,{success:T}))},b=S=>{v(S,i.useGlobalTarget||yx(h,S.target))},_=S=>{v(S,!1)};window.addEventListener("pointerup",b,c),window.addEventListener("pointercancel",_,c)};return o.forEach(m=>{!RE(m)&&m.getAttribute("tabindex")===null&&(m.tabIndex=0),(i.useGlobalTarget?window:m).addEventListener("pointerdown",f,c),m.addEventListener("focus",g=>ME(g,c),c)}),u}function Ly(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,Mr(s)))}class IE extends ya{mount(){const{current:s}=this.node;s&&(this.unmount=OE(s,i=>(Ly(this.node,i,"Start"),(o,{success:c})=>Ly(this.node,o,c?"End":"Cancel")),{useGlobalTarget:this.node.props.globalTapTarget}))}unmount(){}}const sp=new WeakMap,Sf=new WeakMap,LE=n=>{const s=sp.get(n.target);s&&s(n)},BE=n=>{n.forEach(LE)};function UE({root:n,...s}){const i=n||document;Sf.has(i)||Sf.set(i,{});const o=Sf.get(i),c=JSON.stringify(s);return o[c]||(o[c]=new IntersectionObserver(BE,{root:n,...s})),o[c]}function zE(n,s,i){const o=UE(s);return sp.set(n,i),o.observe(n),()=>{sp.delete(n),o.unobserve(n)}}const PE={some:0,all:1};class VE extends ya{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,f={root:i?i.current:void 0,rootMargin:o,threshold:typeof c=="number"?c:PE[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 zE(this.node.current,f,m)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:s,prevProps:i}=this.node;["amount","margin","root"].some(HE(s,i))&&this.startObserver()}unmount(){}}function HE({viewport:n={}},{viewport:s={}}={}){return i=>n[i]!==s[i]}const qE={inView:{Feature:VE},tap:{Feature:IE},focus:{Feature:AE},hover:{Feature:EE}},GE={layout:{ProjectionNode:gx,MeasureLayout:lx}},Nc={current:null},em={current:!1};function bx(){if(em.current=!0,!!Tp)if(window.matchMedia){const n=window.matchMedia("(prefers-reduced-motion)"),s=()=>Nc.current=n.matches;n.addListener(s),s()}else Nc.current=!1}const $E=[...P_,Wt,ha],ZE=n=>$E.find(z_(n)),By=new WeakMap;function FE(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,kr(c,{owner:n}));else if(u!==c)if(n.hasValue(o)){const f=n.getValue(o);f.liveStyle===!0?f.jump(c):f.hasAnimated||f.set(c)}else{const f=n.getStaticValue(o);n.addValue(o,kr(f!==void 0?f: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 KE{scrapeMotionValuesFromProps(s,i,o){return{}}constructor({parent:s,props:i,presenceContext:o,reducedMotionConfig:c,blockInitialAnimation:u,visualState:f},m={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.values=new Map,this.KeyframeResolver=Yp,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=is.now();this.renderScheduledAt<S&&(this.renderScheduledAt=S,ft.render(this.render,!1,!0))};const{latestValues:h,renderState:g,onUpdate:v}=f;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=Uc(i),this.isVariantNode=Xb(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,By.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)),em.current||bx(),this.shouldReduceMotion=this.reducedMotionConfig==="never"?!1:this.reducedMotionConfig==="always"?!0:Nc.current,this.parent&&this.parent.children.add(this),this.update(this.props,this.presenceContext)}unmount(){By.delete(this.current),this.projection&&this.projection.unmount(),ma(this.notifyUpdate),ma(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=ni.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 f;window.MotionCheckAppearSync&&(f=window.MotionCheckAppearSync(this,s,i)),this.valueSubscriptions.set(s,()=>{c(),u(),f&&f(),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 eo){const i=eo[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):wt()}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,f=s[u];f&&(this.propEventSubscriptions[c]=this.on(c,f))}this.prevMotionValues=FE(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=kr(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"&&(B_(c)||C_(c))?c=parseFloat(c):!ZE(c)&&ha.test(i)&&(c=O_(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 f=Ep(this.props,o,(i=this.presenceContext)===null||i===void 0?void 0:i.custom);f&&(c=f[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 Pp),this.events[s].add(i)}notify(s,...i){this.events[s]&&this.events[s].notify(...i)}}class _x extends KE{constructor(){super(...arguments),this.KeyframeResolver=V_}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 YE(n){return window.getComputedStyle(n)}class JE extends _x{constructor(){super(...arguments),this.type="html",this.renderInstance=r_}readValueFromInstance(s,i){if(ni.has(i)){const o=Kp(i);return o&&o.default||0}else{const o=YE(s),c=(a_(i)?o.getPropertyValue(i):o[i])||0;return typeof c=="string"?c.trim():c}}measureInstanceViewportBox(s,{transformPagePoint:i}){return ox(s,i)}build(s,i,o){Rp(s,i,o.transformTemplate)}scrapeMotionValuesFromProps(s,i,o){return Lp(s,i,o)}}class WE extends _x{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=wt}getBaseTargetFromProps(s,i){return s[i]}readValueFromInstance(s,i){if(ni.has(i)){const o=Kp(i);return o&&o.default||0}return i=l_.has(i)?i:Np(i),s.getAttribute(i)}scrapeMotionValuesFromProps(s,i,o){return d_(s,i,o)}build(s,i,o){Mp(s,i,this.isSVGTag,o.transformTemplate)}renderInstance(s,i,o,c){c_(s,i,o,c)}mount(s){this.isSVGTag=Ip(s.tagName),super.mount(s)}}const XE=(n,s)=>Cp(n)?new WE(s):new JE(s,{allowProjection:n!==y.Fragment}),QE=wN({...gC,...qE,...NE,...GE},XE),Dt=Pw(QE);function eA(){!em.current&&bx();const[n]=y.useState(Nc.current);return n}const ap={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 ga(n){return n==="blocked"?ap.blocked:ap[tm(n)]}const tA={not_started:"statusPending",working:"statusInProgress",paused:"statusWaitingInput",complete:"statusDone",failed:"statusFailed"};function nA(n){return tA[tm(n)]??"statusPending"}const sA=["working","paused","failed","not_started","blocked","complete"],zy=["not_started","working","paused","complete","failed"],aA={pending:"not_started",assigned:"not_started",in_progress:"working",waiting_input:"paused",review:"paused",done:"complete"};function tm(n){return n in ap&&n!=="blocked"?n:aA[n]??"not_started"}const iA={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"};function oA(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,f]=s[o];u<=c[1]+1?c[1]=Math.max(c[1],f):i.push([u,f])}return i}function xx({text:n,indices:s,highlightClass:i}){if(!s||s.length===0)return l.jsx(l.Fragment,{children:n});const o=oA(s),c=[];let u=0;for(const[f,m]of o)f>u&&c.push(l.jsx("span",{children:n.slice(u,f)},`p${u}`)),c.push(l.jsx("mark",{className:i,children:n.slice(f,m+1)},`m${f}`)),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 rA(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 lA(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 sA){c.add(u);const f=i.get(u);if(f&&f.length>0){f.sort((h,g)=>h.sortOrder-g.sortOrder);const m=ga(u);o.push({status:u,label:m.label,style:m,tasks:f})}}for(const[u,f]of i)if(!c.has(u)&&f.length>0){f.sort((h,g)=>h.sortOrder-g.sortOrder);const m=ga(u);o.push({status:u,label:m.label,style:m,tasks:f})}return o}const cA="_container_z4i38_1",uA="_header_z4i38_5",dA="_headerActions_z4i38_17",fA="_searchInput_z4i38_23",pA="_searchHighlight_z4i38_56",mA="_groupToggle_z4i38_62",hA="_groupToggleActive_z4i38_89",gA="_addButton_z4i38_93",vA="_taskRow_z4i38_120",yA="_selected_z4i38_140",bA="_expandArrow_z4i38_150",_A="_expanded_z4i38_157",xA="_leafSpacer_z4i38_161",SA="_taskStatusIcon_z4i38_166",TA="_taskTitle_z4i38_170",kA="_workspaceBadge_z4i38_177",wA="_childCountBadge_z4i38_195",NA="_dependencyBadge_z4i38_208",jA="_blockedBadge_z4i38_220",CA="_addChildButton_z4i38_225",EA="_emptyState_z4i38_268",AA="_statusGroupHeader_z4i38_275",DA="_statusGroupIcon_z4i38_294",RA="_statusGroupLabel_z4i38_298",MA="_statusGroupCount_z4i38_303",Ze={container:cA,header:uA,headerActions:dA,searchInput:fA,searchHighlight:pA,groupToggle:mA,groupToggleActive:hA,addButton:gA,taskRow:vA,selected:yA,expandArrow:bA,expanded:_A,leafSpacer:xA,taskStatusIcon:SA,taskTitle:TA,workspaceBadge:kA,childCountBadge:wA,dependencyBadge:NA,blockedBadge:jA,addChildButton:CA,emptyState:EA,statusGroupHeader:AA,statusGroupIcon:DA,statusGroupLabel:RA,statusGroupCount:MA},OA=[{name:"title",weight:2},{name:"description",weight:1}],Sx=16,IA=16,Tx="grackle-task-group-by-status";function Py(){try{return localStorage.getItem(Tx)==="true"}catch{return!1}}function LA(n){try{localStorage.setItem(Tx,String(n))}catch{}}function BA({group:n,isExpanded:s,onToggle:i,selectedTaskId:o,navigate:c,titleHighlights:u,workspaceNames:f}){return l.jsxs("div",{"data-testid":`status-group-${n.status}`,children:[l.jsxs("div",{className:Ze.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:`${Ze.expandArrow} ${s?Ze.expanded:""}`,children:"▸"}),l.jsx("span",{className:Ze.statusGroupIcon,style:{color:n.style.color},children:n.style.icon}),l.jsx("span",{className:Ze.statusGroupLabel,children:n.label}),l.jsx("span",{className:Ze.statusGroupCount,children:n.tasks.length})]}),l.jsx(rs,{children:s&&l.jsx(Dt.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=ga(m.status),g=o===m.id,v=m.parentTaskId||!m.workspaceId?void 0:f.get(m.workspaceId);return l.jsxs("div",{onClick:()=>c(os(m.id)),className:`${Ze.taskRow} ${g?Ze.selected:""}`,style:{"--task-indent":`${Sx}px`},"data-task-id":m.id,children:[l.jsx("span",{className:Ze.leafSpacer}),l.jsx("span",{className:Ze.taskStatusIcon,style:{color:h.color},children:h.icon}),l.jsx("span",{className:Ze.taskTitle,title:m.title,children:l.jsx(xx,{text:m.title,indices:u.get(m.id),highlightClass:Ze.searchHighlight})}),v&&l.jsx("span",{className:Ze.workspaceBadge,title:v,children:v})]},m.id)})})})]})}function kx({node:n,depth:s,expandedTasks:i,toggleTask:o,selectedTaskId:c,navigate:u,taskStatusById:f,titleHighlights:m,workspaceNames:h}){const g=ga(n.status),v=n.dependsOn.length>0&&n.dependsOn.some(k=>f.get(k)!=="complete"),b=i.has(n.id),_=n.children.length>0,S=c===n.id,T=Sx+s*IA,N=s===0&&!n.parentTaskId&&n.workspaceId?h.get(n.workspaceId):void 0;return l.jsxs(l.Fragment,{children:[l.jsxs("div",{onClick:()=>u(os(n.id)),className:`${Ze.taskRow} ${S?Ze.selected:""}`,style:{"--task-indent":`${T}px`},"data-task-id":n.id,children:[_&&l.jsx("span",{className:`${Ze.expandArrow} ${b?Ze.expanded:""}`,role:"button",tabIndex:0,"aria-label":b?"Collapse task":"Expand task",onClick:k=>{k.stopPropagation(),o(n.id)},onKeyDown:k=>{(k.key==="Enter"||k.key===" ")&&(k.preventDefault(),k.stopPropagation(),o(n.id))},children:"▸"}),!_&&l.jsx("span",{className:Ze.leafSpacer}),l.jsx("span",{className:Ze.taskStatusIcon,style:{color:g.color},children:g.icon}),l.jsx("span",{className:Ze.taskTitle,title:n.title,children:l.jsx(xx,{text:n.title,indices:m.get(n.id),highlightClass:Ze.searchHighlight})}),N&&l.jsx("span",{className:Ze.workspaceBadge,title:N,children:N}),_&&l.jsxs("span",{className:Ze.childCountBadge,children:[n.children.filter(k=>k.status==="complete").length,"/",n.children.length]}),n.dependsOn.length>0&&l.jsx("span",{className:`${Ze.dependencyBadge} ${v?Ze.blockedBadge:""}`,title:`Depends on: ${n.dependsOn.join(", ")}`,children:v?"blocked":"dep"}),s<fT&&l.jsx("button",{onClick:k=>{k.stopPropagation(),u(ti(n.workspaceId,n.id))},title:"Add child task","aria-label":"Add child task",className:Ze.addChildButton,children:"+"})]}),l.jsx(rs,{children:_&&b&&l.jsx(Dt.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(k=>l.jsx(kx,{node:k,depth:s+1,expandedTasks:i,toggleTask:o,selectedTaskId:c,navigate:u,taskStatusById:f,titleHighlights:m,workspaceNames:h},k.id))})})]})}function UA({workspaces:n,tasks:s}){const i=xt(),[o,c]=y.useState(new Set),[u,f]=y.useState(new Set),[m,h]=y.useState(Py),[g,v]=y.useState(Py),[b,_]=y.useState(new Map),S=At("/tasks/:taskId/*"),T=(S==null?void 0:S.params.taskId)!=="new"?S==null?void 0:S.params.taskId:void 0,j=y.useMemo(()=>new Map(s.map(Z=>[Z.id,Z.status])),[s]),N=y.useMemo(()=>new Map(n.map(Z=>[Z.id,Z.name])),[n]),k=()=>{const Z=!m;LA(Z),h(Z),Z&&(v(!0),_(new Map))},E=Z=>{_(oe=>{const O=new Map(oe),G=O.has(Z)?O.get(Z):g;return O.set(Z,!G),O})},A=Z=>b.has(Z)?b.get(Z):g,R=Z=>{c(oe=>{const O=new Set(oe);return O.has(Z)?(O.delete(Z),f(G=>new Set(G).add(Z))):(O.add(Z),f(G=>{const X=new Set(G);return X.delete(Z),X})),O})};y.useEffect(()=>{const Z=new Set(s.filter(oe=>oe.parentTaskId).map(oe=>oe.parentTaskId));Z.size>0&&c(oe=>{const O=new Set(oe);for(const G of Z)u.has(G)||O.add(G);return O})},[s,u]);const[C,U]=y.useState(""),{directMatchTaskIds:V,treeMatchTaskIds:I,titleHighlights:F}=y.useMemo(()=>{if(!C.trim())return{directMatchTaskIds:null,treeMatchTaskIds:null,titleHighlights:new Map};const Z=dT(s,C,OA),oe=new Set(Z.map(fe=>fe.item.id)),O=new Map;for(const fe of Z){const he=fe.matches.find(ze=>ze.key==="title");he&&O.set(fe.item.id,he.indices)}const G=new Set(oe),X=new Map(s.map(fe=>[fe.id,fe]));for(const fe of[...oe]){let he=X.get(fe);for(;he!=null&&he.parentTaskId;)G.add(he.parentTaskId),he=X.get(he.parentTaskId)}return{directMatchTaskIds:oe,treeMatchTaskIds:G,titleHighlights:O}},[C,s]),ee=V!==null,re=ee?m?V:I:null,se=re?s.filter(Z=>re.has(Z.id)):s,ue=m?[]:rA(se);return l.jsxs("div",{className:Ze.container,children:[l.jsxs("div",{className:Ze.header,children:[l.jsx("span",{children:"Tasks"}),l.jsxs("div",{className:Ze.headerActions,children:[l.jsx("button",{className:`${Ze.groupToggle} ${m?Ze.groupToggleActive:""}`,onClick:k,"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:Ze.addButton,onClick:()=>i(ti()),"aria-label":"New task",title:"New task","data-testid":"new-task-button",children:"+"})]})]}),s.length>0&&l.jsx("input",{type:"text",value:C,onChange:Z=>U(Z.target.value),placeholder:"Filter...","aria-label":"Filter tasks",className:Ze.searchInput,"data-testid":"sidebar-search"}),m?lA(se,j).map(Z=>l.jsx(BA,{group:Z,isExpanded:A(Z.status),onToggle:()=>E(Z.status),selectedTaskId:T,navigate:i,titleHighlights:F,workspaceNames:N},Z.status)):ue.map(Z=>l.jsx(kx,{node:Z,depth:0,expandedTasks:o,toggleTask:R,selectedTaskId:T,navigate:i,taskStatusById:j,titleHighlights:F,workspaceNames:N},Z.id)),se.length===0&&!ee&&l.jsx("div",{className:Ze.emptyState,children:"No tasks yet. Click + to create one."}),se.length===0&&ee&&l.jsx("div",{className:Ze.emptyState,children:"No matching tasks"})]})}const zA="_nav_14i94_1",PA="_tab_14i94_24",VA="_tabActive_14i94_62",HA="_tabLabel_14i94_75",qA="_statusDot_14i94_81",GA="_pulse_14i94_87",$A="_addButton_14i94_99",ZA="_empty_14i94_132",ua={nav:zA,tab:PA,tabActive:VA,tabLabel:HA,statusDot:qA,pulse:GA,addButton:$A,empty:ZA},FA={connected:"var(--accent-green)",sleeping:"var(--accent-yellow)",error:"var(--accent-red)",disconnected:"var(--text-tertiary)",connecting:"var(--accent-blue)"};function KA({environments:n}){const s=xt(),i=y.useRef(null),o=At("/environments/:environmentId"),c=At("/environments/:environmentId/edit"),u=At("/environments/:environmentId/workspaces/:workspaceId"),f=At("/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)??(f==null?void 0:f.params.environmentId),h=m==="new"?void 0:m,g=y.useCallback(_=>{s(Qi(_))},[s]),v=y.useCallback(_=>{var k;const S=(k=i.current)==null?void 0:k.querySelectorAll('[role="tab"]');if(!S||S.length===0)return;const T=Array.from(S).findIndex(E=>E===document.activeElement),j=T>=0?T:n.findIndex(E=>E.id===h);let N=j;if(_.key==="ArrowDown"||_.key==="j"||_.key==="J")_.preventDefault(),N=(j+1)%S.length;else if(_.key==="ArrowUp"||_.key==="k"||_.key==="K")_.preventDefault(),N=(j-1+S.length)%S.length;else if(_.key==="Home")_.preventDefault(),N=0;else if(_.key==="End")_.preventDefault(),N=S.length-1;else return;N<n.length&&s(Qi(n[N].id)),S[N].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,j=FA[_.status]||"var(--text-tertiary)",N=_.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} ${N?ua.pulse:""}`,style:{color:j},children:"●"}),l.jsx("span",{className:ua.tabLabel,title:_.displayName||_.id,children:_.displayName||_.id})]},_.id)})}),l.jsx("button",{type:"button",className:ua.addButton,onClick:()=>s(c2),title:"Add environment","data-testid":"env-nav-add",children:"+ Add Environment"}),n.length===0&&l.jsx("div",{className:ua.empty,children:"No environments yet."})]})}const YA="_nav_1bhou_1",JA="_tab_1bhou_24",WA="_tabIcon_1bhou_62",XA="_tabActive_1bhou_68",ic={nav:YA,tab:JA,tabIcon:WA,tabActive:XA},Cs=[{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 QA(){var f;const n=It(),s=xt(),i=y.useRef(null),o=((f=Cs.find(m=>{const h=`${Ji}/${m.path}`;return n.pathname===h||n.pathname.startsWith(`${h}/`)}))==null?void 0:f.path)??Cs[0].path,c=y.useCallback(m=>{s(`${Ji}/${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(j=>j===document.activeElement),v=g>=0?g:Cs.findIndex(j=>j.path===o);let b=v;if(m.key==="ArrowDown"||m.key==="j"||m.key==="J")m.preventDefault(),b=(v+1)%Cs.length;else if(m.key==="ArrowUp"||m.key==="k"||m.key==="K")m.preventDefault(),b=(v-1+Cs.length)%Cs.length;else if(m.key==="Home")m.preventDefault(),b=0;else if(m.key==="End")m.preventDefault(),b=Cs.length-1;else return;const _=Cs[b].path;s(`${Ji}/${_}`),(T=h[b])==null||T.focus()},[o,s]);return l.jsx("nav",{className:ic.nav,ref:i,role:"tablist","aria-orientation":"vertical","aria-label":"Settings",onKeyDown:u,children:Cs.map(m=>{const h=m.path===o;return l.jsxs("button",{role:"tab",type:"button","aria-selected":h,tabIndex:h?0:-1,className:`${ic.tab} ${h?ic.tabActive:""}`,onClick:()=>c(m.path),children:[l.jsx("span",{className:ic.tabIcon,"aria-hidden":"true",children:m.icon}),m.label]},m.path)})})}const eD="_nav_1snmp_1",tD="_searchForm_1snmp_8",nD="_searchInput_1snmp_15",sD="_searchButton_1snmp_33",aD="_clearButton_1snmp_68",iD="_workspaceSelect_1snmp_85",oD="_listHeader_1snmp_99",rD="_nodeList_1snmp_108",lD="_nodeItem_1snmp_116",cD="_indicator_1snmp_129",uD="_label_1snmp_136",dD="_badge_1snmp_145",In={nav:eD,searchForm:tD,searchInput:nD,searchButton:sD,clearButton:aD,workspaceSelect:iD,listHeader:oD,nodeList:rD,nodeItem:lD,indicator:cD,label:uD,badge:dD};function fD({nodes:n,workspaces:s,loading:i,searchQuery:o,onSearch:c,onClearSearch:u,onSelectNode:f,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=>{f(T)},[f]),S=y.useCallback(T=>{g(""),m(T)},[m]);return l.jsxs("div",{className:In.nav,"data-testid":"knowledge-nav",children:[l.jsxs("form",{className:In.searchForm,onSubmit:v,children:[l.jsx("input",{className:In.searchInput,type:"text",placeholder:"Search...",value:h,onChange:T=>{g(T.target.value)},"data-testid":"knowledge-search-input"}),l.jsx("button",{type:"submit",className:In.searchButton,disabled:i,children:"Go"})]}),o&&l.jsx("button",{type:"button",className:In.clearButton,onClick:b,children:"Clear search"}),l.jsxs("select",{className:In.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:In.listHeader,children:["Nodes (",n.length,")"]}),l.jsx("ul",{className:In.nodeList,children:n.map(T=>l.jsxs("li",{className:In.nodeItem,onClick:()=>{_(T.id)},onKeyDown:j=>{(j.key==="Enter"||j.key===" ")&&(j.preventDefault(),_(T.id))},role:"button",tabIndex:0,children:[l.jsx("span",{className:In.indicator,style:{backgroundColor:T.kind==="reference"?"#4A9EFF":T.category==="decision"?"#22C55E":T.category==="concept"?"#A855F7":T.category==="snippet"?"#6B7280":"#EAB308"}}),l.jsx("span",{className:In.label,children:T.label}),l.jsx("span",{className:In.badge,children:T.kind==="reference"?T.sourceType:T.category})]},T.id))})]})}function pD(){const{workspaces:n,tasks:s}=pt(),i=y.useMemo(()=>l.jsx(UA,{workspaces:n,tasks:s}),[n,s]);return Oc(i),l.jsx(ei,{})}function mD(){const{environments:n}=pt(),s=y.useMemo(()=>l.jsx(KA,{environments:n}),[n]);return Oc(s),l.jsx(ei,{})}function hD(){const n=y.useMemo(()=>l.jsx(QA,{}),[]);return Oc(n),l.jsx(ei,{})}function gD(){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]),f=y.useMemo(()=>l.jsx(fD,{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 Oc(f),l.jsx(ei,{})}const vD="_bar_tnfsh_1",yD="_btnPrimary_tnfsh_32",bD="_statusText_tnfsh_85",_D="_statusCompleted_tnfsh_90",xD="_statusFailed_tnfsh_94",SD="_statusBlocked_tnfsh_98",TD="_hintText_tnfsh_103",ht={bar:vD,btnPrimary:yD,statusText:bD,statusCompleted:_D,statusFailed:xD,statusBlocked:SD,hintText:TD};function kD({sessions:n,tasks:s,environments:i}){const o=xt(),c=It(),u=At("/sessions/:sessionId"),f=At("/tasks/:taskId"),m=At("/tasks/:taskId/stream"),h=At("/tasks/:taskId/findings"),g=At("/tasks/:taskId/edit"),v=At("/environments/:environmentId/workspaces/:workspaceId/tasks/:taskId"),b=At("/environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/stream"),_=At("/environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/findings"),S=At("/environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/edit"),T=At("/sessions/new"),j=At("/environments/:environmentId/workspaces/:workspaceId"),N=At("/tasks/new"),k=At("/chat"),E=At("/"),A=At("/settings/*"),R=u==null?void 0:u.params.sessionId,C=(f==null?void 0:f.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),U=v??b??_??S,V=(U==null?void 0:U.params.environmentId)??(j==null?void 0:j.params.environmentId),I=c.pathname.startsWith("/environments")&&!j&&!U,F=!!k,ee=!!T,re=!!j&&!v&&!b&&!_&&!S,se=!!N;if(!!E&&!ee&&!re&&!se||!!A||(!!g||!!S)||se||I||ee)return l.jsx(l.Fragment,{});if(F)return i.find(G=>G.adapterType==="local"&&G.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(re)return l.jsx("div",{className:ht.bar,children:l.jsx("span",{className:ht.hintText,children:"Select a task or click + to create one"})});if(C){const O=s.find(fe=>fe.id===C);if(!O)return l.jsx("div",{className:ht.bar,children:l.jsx("span",{className:ht.hintText,children:"Loading..."})});const G=new Map(s.map(fe=>[fe.id,fe])),X=O.dependsOn.some(fe=>{const he=G.get(fe);return he!==void 0&&he.status!=="complete"});if(O.status==="not_started"){const fe=X?O.dependsOn.map(he=>G.get(he)).filter(he=>he&&he.status!=="complete").map(he=>he.title):[];return l.jsx("div",{className:ht.bar,children:X?l.jsxs("span",{className:ht.statusBlocked,children:["Blocked by: ",fe.join(", ")]}):l.jsx("span",{className:ht.hintText,children:"Use the buttons above to start or manage this task"})})}if(O.status==="working"||O.status==="paused"){const fe=O.latestSessionId||void 0,he=fe?n.find(je=>je.id===fe):void 0;return he&&he.status!=="stopped"?l.jsx(l.Fragment,{}):l.jsx("div",{className:ht.bar,children:l.jsx("span",{className:ht.hintText,children:"Waiting for agent..."})})}if(O.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(ti(O.workspaceId,void 0,V)),className:ht.btnPrimary,children:"+ New Task"})]});if(O.status==="failed")return l.jsx("div",{className:ht.bar,children:l.jsx("span",{className:`${ht.statusText} ${ht.statusFailed}`,children:"Task failed"})})}if(R){const O=n.find(fe=>fe.id===R),G=(O==null?void 0:O.status)==="stopped";if(O!==void 0&&!G)return l.jsx(l.Fragment,{});if(G)return l.jsxs("div",{className:ht.bar,children:[l.jsxs("span",{className:`${ht.statusText} ${ht.hintText}`,children:["Session ",O.endReason||O.status]}),l.jsx("button",{onClick:()=>o(Eb(O.environmentId)),className:ht.btnPrimary,children:"+ New Chat"})]})}return l.jsx("div",{className:ht.bar,children:l.jsx("span",{className:ht.hintText,children:"Loading..."})})}const wD="_toast_da8ll_1",ND="_success_da8ll_18",jD="_icon_da8ll_22",CD="_error_da8ll_25",ED="_warning_da8ll_32",AD="_info_da8ll_38",DD="_message_da8ll_53",RD="_close_da8ll_60",rr={toast:wD,success:ND,icon:jD,error:CD,warning:ED,info:AD,message:DD,close:RD},MD={success:"✓",error:"✕",warning:"⚠",info:"ℹ"};function OD({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(Dt.div,{className:`${rr.toast} ${rr[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:rr.icon,"aria-hidden":"true",children:MD[n.variant]}),l.jsx("span",{className:rr.message,children:n.message}),l.jsx("button",{type:"button",className:rr.close,onClick:()=>s(n.id),"aria-label":"Dismiss notification",children:"×"})]})}const ID="_container_qqse2_1",LD={container:ID};function BD(){const{toasts:n,dismissToast:s}=Ls();return l.jsx("div",{className:LD.container,"data-testid":"toast-container",children:l.jsx(rs,{children:n.map(i=>l.jsx(OD,{toast:i,onDismiss:s},i.id))})})}const UD="_callout_1jaue_1",zD="_success_1jaue_11",PD="_icon_1jaue_15",VD="_error_1jaue_18",HD="_warning_1jaue_25",qD="_info_1jaue_32",GD="_content_1jaue_48",$D="_close_1jaue_53",lr={callout:UD,success:zD,icon:PD,error:VD,warning:HD,info:qD,content:GD,close:$D},ZD={success:"✓",error:"✕",warning:"⚠",info:"ℹ"};function FD({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:[lr.callout,lr[n],o].filter(Boolean).join(" "),role:n==="error"||n==="warning"?"alert":"status",children:[l.jsx("span",{className:lr.icon,"aria-hidden":"true",children:ZD[n]}),l.jsx("span",{className:lr.content,children:s}),i&&l.jsx("button",{type:"button",className:lr.close,onClick:()=>u(!0),"aria-label":"Dismiss",children:"×"})]})})}const KD="_breadcrumbs_17or2_1",YD="_list_17or2_11",JD="_item_17or2_21",WD="_separator_17or2_28",XD="_link_17or2_34",QD="_current_17or2_57",Hi={breadcrumbs:KD,list:YD,item:JD,separator:WD,link:XD,current:QD},eR="›";function ba({segments:n}){return l.jsx("nav",{className:Hi.breadcrumbs,"aria-label":"Breadcrumb","data-testid":"breadcrumbs",children:l.jsx("ol",{className:Hi.list,children:n.map((s,i)=>{const o=i===n.length-1;return l.jsxs("li",{className:Hi.item,children:[i>0&&l.jsx("span",{className:Hi.separator,"aria-hidden":"true",children:eR}),s.url&&!o?l.jsx(vp,{className:Hi.link,to:s.url,title:s.label,children:s.label}):l.jsx("span",{className:Hi.current,"aria-current":"page",title:s.label,children:s.label})]},i)})})})}const tR="_btn_dwk2o_1",nR="_sm_dwk2o_22",sR="_md_dwk2o_28",aR="_lg_dwk2o_34",iR="_primary_dwk2o_40",oR="_danger_dwk2o_55",rR="_outline_dwk2o_70",lR="_ghost_dwk2o_80",Tf={btn:tR,sm:nR,md:sR,lg:aR,primary:iR,danger:oR,outline:rR,ghost:lR},As=y.forwardRef(function({variant:s="primary",size:i="md",className:o,children:c,...u},f){const m=[Tf.btn,Tf[s],Tf[i],o].filter(Boolean).join(" ");return l.jsx("button",{ref:f,className:m,...u,children:c})}),cR="_banner_bxqlh_1",uR="_label_bxqlh_15",dR="_text_bxqlh_25",fR="_link_bxqlh_29",oc={banner:cR,label:uR,text:dR,link:fR};function pR(){return l.jsxs("div",{className:oc.banner,"data-testid":"demo-banner",children:[l.jsx("span",{className:oc.label,children:"DEMO"}),l.jsxs("span",{className:oc.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:oc.link,children:"Install Grackle"})," ","to use it for real."]})]})}const mR="_container_og0yp_1",hR="_chevronButton_og0yp_6",gR="_mainButton_og0yp_6",vR="_sm_og0yp_34",yR="_md_og0yp_34",bR="_lg_og0yp_34",_R="_primary_og0yp_57",xR="_danger_og0yp_70",SR="_outline_og0yp_83",TR="_ghost_og0yp_92",kR="_dropdown_og0yp_100",wR="_option_og0yp_113",NR="_optionLabel_og0yp_130",jR="_optionDesc_og0yp_135",Es={container:mR,chevronButton:hR,mainButton:gR,sm:vR,md:yR,lg:bR,primary:_R,danger:xR,outline:SR,ghost:TR,dropdown:kR,option:wR,optionLabel:NR,optionDesc:jR};function wx({label:n,onClick:s,options:i,variant:o="primary",size:c="md","data-testid":u}){const[f,m]=y.useState(!1),h=y.useRef(null);y.useEffect(()=>{if(!f)return;function _(S){h.current&&S.target instanceof Node&&!h.current.contains(S.target)&&m(!1)}return document.addEventListener("mousedown",_),()=>document.removeEventListener("mousedown",_)},[f]),y.useEffect(()=>{if(!f)return;function _(S){S.key==="Escape"&&m(!1)}return document.addEventListener("keydown",_),()=>document.removeEventListener("keydown",_)},[f]);const g=Es[o]||"",v=Es[c]||"",b=()=>{f&&m(!1),s()};return l.jsxs("div",{ref:h,className:Es.container,"data-testid":u,children:[l.jsx("button",{type:"button",className:`${Es.mainButton} ${g} ${v}`,onClick:b,"data-testid":u?`${u}-main`:void 0,children:n}),l.jsx("button",{type:"button",className:`${Es.chevronButton} ${g} ${v}`,onClick:()=>m(_=>!_),"aria-label":`More options for ${n}`,"aria-haspopup":"menu","aria-expanded":f,"data-testid":u?`${u}-chevron`:void 0,children:"▾"}),f&&l.jsx("div",{className:Es.dropdown,"data-testid":u?`${u}-menu`:void 0,children:i.map((_,S)=>l.jsxs("button",{type:"button",className:Es.option,onClick:()=>{_.onClick(),m(!1)},children:[l.jsx("span",{className:Es.optionLabel,children:_.label}),_.description&&l.jsx("span",{className:Es.optionDesc,children:_.description})]},S))})]})}function ip(){ip=function(c,u){return new i(c,void 0,u)};var n=RegExp.prototype,s=new WeakMap;function i(c,u,f){var m=new RegExp(c,u);return s.set(m,f||s.get(c)),jc(m,i.prototype)}function o(c,u){var f=s.get(u);return Object.keys(f).reduce(function(m,h){var g=f[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&&jc(c,u)})(i,RegExp),i.prototype.exec=function(c){var u=n.exec.call(this,c);if(u){u.groups=o(u,this);var f=u.indices;f&&(f.groups=o(f,this))}return u},i.prototype[Symbol.replace]=function(c,u){if(typeof u=="string"){var f=s.get(this);return n[Symbol.replace].call(this,c,u.replace(/\$<([^>]+)>/g,function(h,g){var v=f[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)},ip.apply(this,arguments)}function jc(n,s){return jc=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(i,o){return i.__proto__=o,i},jc(n,s)}function Vy(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 kf(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 Vy(c,u);var f=Object.prototype.toString.call(c).slice(8,-1);return f==="Object"&&c.constructor&&(f=c.constructor.name),f==="Map"||f==="Set"?Array.from(c):f==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(f)?Vy(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.
|
|
473
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var CR=(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){KS(o,"element",i)};function i(o,c,u){var f,m;if(u&&u.tagName==="pre"&&o.tagName==="code"){var h=(o==null||(f=o.data)==null?void 0:f.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(C){for(var U,V=kf(C.properties.className);!(U=V()).done;){var I=U.value;if(I.slice(0,9)==="language-")return I.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(Jl(o),S),u.properties.className=(u.properties.className||[]).concat("language-"+S)}catch(C){if(!s.ignoreMissing||!/Unknown language/.test(C.message))throw C;g=o}else g=o;g.children=(v=1,function C(U){return U.reduce(function(V,I){if(I.type==="text"){var F=I.value,ee=(F.match(/\n/g)||"").length;if(ee===0)I.position={start:{line:v,column:1},end:{line:v,column:1}},V.push(I);else for(var re,se=F.split(`
|
|
474
|
-
`),ue=kf(se.entries());!(re=ue()).done;){var Z=re.value,oe=Z[0],O=Z[1];V.push({type:"text",value:oe===se.length-1?O:O+`
|
|
475
|
-
`,position:{start:{line:v+oe,column:1},end:{line:v+oe,column:1}}})}return v+=ee,V}if(Object.prototype.hasOwnProperty.call(I,"children")){var G=v;return I.children=C(I.children),V.push(I),I.position={start:{line:G,column:1},end:{line:v,column:1}},V}return V.push(I),V},[])})(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,j=(function(C){var U=/{([\d,-]+)}/,V=C.split(",").map(function(ee){return ee.trim()}).join();if(U.test(V)){var I=U.exec(V)[1],F=JS(I);return function(ee){return F.includes(ee+1)}}return function(){return!1}})(h),N=(function(C){var U=ip(/showLineNumbers=(\d+)/i,{lines:1});if(U.test(C)){var V=U.exec(C);return Number(V.groups.lines)}return 1})(h),k=(function(C){for(var U=new Array(C),V=0;V<C;V++)U[V]={type:"element",tagName:"span",properties:{className:[]},children:[]};return U})(g.position.end.line),E=["showlinenumbers=false",'showlinenumbers="false"',"showlinenumbers={false}"],A=function(){var C,U,V=T.value,I=V[0],F=V[1];F.properties.className=["code-line"];var ee=WS(g,function(re){return re.position.start.line<=I+1&&re.position.end.line>=I+1});F.children=ee.children,(h.toLowerCase().includes("showLineNumbers".toLowerCase())||s.showLineNumbers===!0||typeof s.showLineNumbers=="object"&&s.showLineNumbers.includes(b))&&!E.some(function(re){return h.toLowerCase().includes(re)})&&(F.properties.line=[(I+N).toString()],F.properties.className.push("line-number")),j(I)&&F.properties.className.push("highlight-line"),(b==="diff"||(C=b)!=null&&C.includes("diff-"))&&Jl(F).substring(0,1)==="-"?F.properties.className.push("deleted"):(b==="diff"||(U=b)!=null&&U.includes("diff-"))&&Jl(F).substring(0,1)==="+"&&F.properties.className.push("inserted")},R=kf(k.entries());!(T=R()).done;)A();k.length>0&&Jl(k[k.length-1]).trim()===""&&k.pop(),o.children=k}}}})(YS);function Nx(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 so(n){return n===0?"-":n<.01?`$${n.toFixed(4)}`:`$${n.toFixed(2)}`}const ER={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 AR(n){return ER[n.toLowerCase()]??"generic"}const DR="_card_1km4d_2",RR="_cardBlue_1km4d_20",MR="_cardOrange_1km4d_24",OR="_cardGreen_1km4d_28",IR="_cardPurple_1km4d_32",LR="_cardNeutral_1km4d_36",BR="_cardRed_1km4d_40",UR="_header_1km4d_44",zR="_icon_1km4d_51",PR="_toolName_1km4d_58",VR="_fileName_1km4d_65",HR="_badge_1km4d_74",qR="_spacer_1km4d_81",GR="_bodyToggle_1km4d_85",$R="_chevron_1km4d_103",ZR="_chevronExpanded_1km4d_108",FR="_pre_1km4d_112",KR="_diffAdd_1km4d_136",YR="_diffRemove_1km4d_148",JR="_diffContext_1km4d_160",WR="_diffHeader_1km4d_169",XR="_diffLine_1km4d_175",QR="_exitOk_1km4d_181",eM="_exitError_1km4d_187",tM="_exitPending_1km4d_193",nM="_inProgress_1km4d_207",sM="_metadata_1km4d_211",aM="_metadataPrefix_1km4d_218",ae={card:DR,cardBlue:RR,cardOrange:MR,cardGreen:OR,cardPurple:IR,cardNeutral:LR,cardRed:BR,header:UR,icon:zR,toolName:PR,fileName:VR,badge:HR,spacer:qR,bodyToggle:GR,chevron:$R,chevronExpanded:ZR,pre:FR,diffAdd:KR,diffRemove:YR,diffContext:JR,diffHeader:WR,diffLine:XR,exitOk:QR,exitError:eM,exitPending:tM,inProgress:nM,metadata:sM,metadataPrefix:aM};function iM(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 oM(n){const s=n.split(/[/\\]/);return s[s.length-1]||n}const wf=5;function Hy({tool:n,args:s,result:i,isError:o,writeVariant:c}){const[u,f]=y.useState(!1),m=iM(s),h=oM(m),g=i===void 0,v=o?ae.cardRed:c?ae.cardGreen:ae.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(`
|
|
476
|
-
`))??[],j=T.length>wf,N=u?T:T.slice(0,wf);return l.jsxs("div",{className:`${ae.card} ${v} ${g?ae.inProgress:""}`,"data-testid":S,children:[l.jsxs("div",{className:ae.header,children:[l.jsx("span",{className:ae.icon,children:_}),l.jsx("span",{className:ae.toolName,style:{color:b},children:n}),h&&l.jsx("span",{className:ae.fileName,title:m,children:h}),!g&&T.length>0&&l.jsxs(l.Fragment,{children:[l.jsx("span",{className:ae.spacer}),l.jsxs("span",{className:ae.badge,children:[T.length," lines"]})]})]}),o&&i&&l.jsx("pre",{className:ae.pre,"data-testid":"tool-card-error",children:i}),!o&&!g&&T.length>0&&l.jsxs(l.Fragment,{children:[l.jsx("pre",{className:ae.pre,"data-testid":"tool-card-content",children:N.map((k,E)=>l.jsxs("span",{className:ae.diffLine,children:[l.jsx("span",{style:{color:"var(--text-tertiary)",userSelect:"none",marginRight:"var(--space-sm)",display:"inline-block",width:"3ch",textAlign:"right"},children:E+1}),k]},E))}),j&&l.jsxs("button",{type:"button",className:ae.bodyToggle,onClick:()=>{f(k=>!k)},"aria-expanded":u,"data-testid":"tool-card-toggle",children:[l.jsx("span",{className:`${ae.chevron} ${u?ae.chevronExpanded:""}`,children:"▸"}),u?"collapse":`${T.length-wf} more lines`]})]})]})}function rM(n){const s=n.split(`
|
|
477
|
-
`),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 lM(n,s){const i=n.split(`
|
|
478
|
-
`),o=s.split(`
|
|
479
|
-
`),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 cM(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 uM(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 dM(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 fM(n){const s=n.split(/[/\\]/);return s[s.length-1]||n}function pM(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=rM(o);if(c.length>0)return c}}const i=dM(n);if(i)return lM(i.oldStr,i.newStr)}const Nf=5;function mM({tool:n,args:s,result:i,isError:o,detailedResult:c}){const[u,f]=y.useState(!1),m=uM(s),h=fM(m),g=i===void 0,v=pM(s,c),b=v?cM(v):null,_=((v==null?void 0:v.length)??0)>Nf,S=u?v:v==null?void 0:v.slice(0,Nf);return l.jsxs("div",{className:`${ae.card} ${o?ae.cardRed:ae.cardOrange} ${g?ae.inProgress:""}`,"data-testid":"tool-card-file-edit",children:[l.jsxs("div",{className:ae.header,children:[l.jsx("span",{className:ae.icon,children:"✏️"}),l.jsx("span",{className:ae.toolName,style:{color:"var(--accent-yellow)"},children:n}),h&&l.jsx("span",{className:ae.fileName,title:m,children:h}),b&&l.jsxs(l.Fragment,{children:[l.jsx("span",{className:ae.spacer}),l.jsxs("span",{className:ae.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]})]})]})]}),o&&i&&l.jsx("pre",{className:ae.pre,"data-testid":"tool-card-error",children:i}),!o&&S&&S.length>0&&l.jsxs(l.Fragment,{children:[l.jsx("pre",{className:ae.pre,"data-testid":"tool-card-diff",children:S.map((T,j)=>{let N=ae.diffContext;return T.type==="add"&&(N=ae.diffAdd),T.type==="remove"&&(N=ae.diffRemove),T.type==="header"&&(N=ae.diffHeader),l.jsx("span",{className:`${ae.diffLine} ${N}`,children:T.content},j)})}),_&&l.jsxs("button",{type:"button",className:ae.bodyToggle,onClick:()=>{f(T=>!T)},"aria-expanded":u,"data-testid":"tool-card-toggle",children:[l.jsx("span",{className:`${ae.chevron} ${u?ae.chevronExpanded:""}`,children:"▸"}),u?"collapse":`${((v==null?void 0:v.length)??0)-Nf} more lines`]})]}),!o&&!v&&!g&&i&&l.jsx("pre",{className:ae.pre,"data-testid":"tool-card-content",children:i})]})}const hM=/^\[exit (\d+)\]\s*/;function gM(n){const s=hM.exec(n);return s?{exitCode:Number(s[1]),output:n.slice(s[0].length)}:{exitCode:void 0,output:n}}function vM(n){if(n==null||typeof n!="object")return"";const s=n;return typeof s.command=="string"?s.command:""}function yM(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 jf=3;function bM({tool:n,args:s,result:i,isError:o}){const[c,u]=y.useState(!1),f=vM(s),m=yM(f),h=i===void 0,g=i?gM(i):null,v=(g==null?void 0:g.output.split(`
|
|
480
|
-
`))??[],b=v.length>jf,_=c?v:v.slice(0,jf),S=g==null?void 0:g.exitCode,T=o||S!==void 0&&S!==0;return l.jsxs("div",{className:`${ae.card} ${T?ae.cardRed:ae.cardNeutral}`,"data-testid":"tool-card-shell",children:[l.jsxs("div",{className:ae.header,children:[l.jsx("span",{className:ae.icon,style:{color:"var(--text-secondary)",fontFamily:"var(--font-mono)",fontWeight:"bold"},children:"$"}),l.jsx("span",{className:ae.fileName,style:{flex:1,color:"var(--text-primary)"},title:f!==m?f:void 0,"data-testid":"tool-card-command",children:m}),S!==void 0&&l.jsxs("span",{className:S===0?ae.exitOk:ae.exitError,"data-testid":"tool-card-exit-code",children:[S===0?"✓":"✗"," exit ",S]}),h&&l.jsx("span",{className:ae.exitPending,"data-testid":"tool-card-pending",children:"●"})]}),!h&&g&&g.output.length>0&&l.jsxs(l.Fragment,{children:[l.jsx("pre",{className:ae.pre,"data-testid":"tool-card-output",children:_.join(`
|
|
481
|
-
`)}),b&&l.jsxs("button",{type:"button",className:ae.bodyToggle,onClick:()=>{u(j=>!j)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[l.jsx("span",{className:`${ae.chevron} ${c?ae.chevronExpanded:""}`,children:"▸"}),c?"collapse":`${v.length-jf} more lines`]})]})]})}function _M(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 Cf=5;function xM({tool:n,args:s,result:i,isError:o}){const[c,u]=y.useState(!1),{pattern:f,path:m}=_M(s),h=i===void 0,g=(i==null?void 0:i.split(`
|
|
482
|
-
`).filter(_=>_.length>0))??[],v=g.length>Cf,b=c?g:g.slice(0,Cf);return l.jsxs("div",{className:`${ae.card} ${o?ae.cardRed:ae.cardPurple} ${h?ae.inProgress:""}`,"data-testid":"tool-card-search",children:[l.jsxs("div",{className:ae.header,children:[l.jsx("span",{className:ae.icon,children:"🔍"}),l.jsx("span",{className:ae.toolName,style:{color:"var(--accent-purple, #a78bfa)"},children:n}),f&&l.jsxs("span",{className:ae.fileName,"data-testid":"tool-card-pattern",children:['"',f,'"']}),m&&l.jsxs("span",{className:ae.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:ae.spacer}),l.jsxs("span",{className:ae.badge,"data-testid":"tool-card-match-count",children:[g.length," ",g.length===1?"match":"matches"]})]})]}),o&&i&&l.jsx("pre",{className:ae.pre,"data-testid":"tool-card-error",children:i}),!o&&!h&&b.length>0&&l.jsxs(l.Fragment,{children:[l.jsx("pre",{className:ae.pre,"data-testid":"tool-card-results",children:b.join(`
|
|
483
|
-
`)}),v&&l.jsxs("button",{type:"button",className:ae.bodyToggle,onClick:()=>{u(_=>!_)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[l.jsx("span",{className:`${ae.chevron} ${c?ae.chevronExpanded:""}`,children:"▸"}),c?"collapse":`${g.length-Cf} more matches`]})]})]})}const SM="_progressBar_14f5c_1",TM="_progressFill_14f5c_9",kM="_activeTask_14f5c_16",wM="_activeIcon_14f5c_27",NM="_todoPulse_14f5c_1",jM="_activeText_14f5c_34",CM="_checklist_14f5c_48",EM="_item_14f5c_55",AM="_itemIcon_14f5c_65",DM="_itemText_14f5c_73",RM="_pending_14f5c_78",MM="_in_progress_14f5c_85",OM="_completed_14f5c_97",IM="_emptyMessage_14f5c_108",$n={progressBar:SM,progressFill:TM,activeTask:kM,activeIcon:wM,todoPulse:NM,activeText:jM,checklist:CM,item:EM,itemIcon:AM,itemText:DM,pending:RM,in_progress:MM,completed:OM,emptyMessage:IM},LM=/^[-*]\s*\[([ xX~!/])\]\s*(.+)$/;function BM(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:qy(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:qy(i.status)})):typeof s.content=="string"?UM(s.content):[]}function qy(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 UM(n){const s=n.split(`
|
|
484
|
-
`),i=[];for(const o of s){const c=LM.exec(o.trim());if(c){const u=c[1],f=c[2].trim();let m="pending";u==="x"||u==="X"?m="completed":(u==="~"||u==="/"||u==="!")&&(m="in_progress"),i.push({content:f,status:m})}}return i}function zM(n){switch(n){case"completed":return"✓";case"in_progress":return"●";default:return"○"}}function PM({args:n}){const s=BM(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:`${ae.card} ${ae.cardBlue}`,"data-testid":"tool-card-todo",children:[l.jsxs("div",{className:ae.header,children:[l.jsx("span",{className:ae.icon,children:"☑"}),l.jsx("span",{className:ae.toolName,style:{color:"var(--accent-blue)"},children:c?"Todos cleared":"Todos"}),!c&&l.jsxs(l.Fragment,{children:[l.jsx("span",{className:ae.spacer}),l.jsxs("span",{className:ae.badge,"data-testid":"tool-card-todo-progress",children:[i,"/",s.length]})]})]}),!c&&l.jsx("div",{className:$n.progressBar,"data-testid":"tool-card-todo-bar",children:l.jsx("div",{className:$n.progressFill,style:{width:`${i/s.length*100}%`}})}),o&&l.jsxs("div",{className:$n.activeTask,"data-testid":"tool-card-todo-active",children:[l.jsx("span",{className:$n.activeIcon,children:"●"}),l.jsx("span",{className:$n.activeText,children:o.activeForm||o.content})]}),!c&&l.jsx("div",{className:$n.checklist,"data-testid":"tool-card-todo-list",children:s.map((u,f)=>l.jsxs("div",{className:`${$n.item} ${$n[u.status]}`,"data-testid":"tool-card-todo-item",children:[l.jsx("span",{className:$n.itemIcon,children:zM(u.status)}),l.jsx("span",{className:$n.itemText,children:u.content})]},f))}),c&&l.jsx("div",{className:$n.emptyMessage,children:"All items completed and cleared."})]})}function VM(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 HM({tool:n,args:s}){const i=VM(n,s);return l.jsxs("div",{className:ae.metadata,"data-testid":"tool-card-metadata",children:[l.jsx("span",{className:ae.metadataPrefix,children:"↳"}),i]})}function qM(n){const s=/^mcp__(.+?)__(.+)$/.exec(n);return s?{display:`${s[1]} / ${s[2]}`,isMcp:!0}:{display:n,isMcp:!1}}function GM(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 Ef=5;function $M({tool:n,args:s,result:i,isError:o}){const[c,u]=y.useState(!1),{display:f}=qM(n),m=GM(s),h=i===void 0,g=(i==null?void 0:i.split(`
|
|
485
|
-
`))??[],v=g.length>Ef,b=c?i:g.slice(0,Ef).join(`
|
|
486
|
-
`);let _="";if(s!=null)try{_=JSON.stringify(s,null,2)}catch{_=String(s)}return l.jsxs("div",{className:`${ae.card} ${o?ae.cardRed:ae.cardBlue} ${h?ae.inProgress:""}`,"data-testid":"tool-card-generic",children:[l.jsxs("div",{className:ae.header,children:[l.jsx("span",{className:ae.icon,children:"⚙"}),l.jsx("span",{className:ae.toolName,style:{color:"var(--accent-blue)"},children:f}),m&&l.jsx("span",{className:ae.fileName,children:m})]}),h&&_&&l.jsx("pre",{className:ae.pre,"data-testid":"tool-card-args",children:_}),o&&i&&l.jsx("pre",{className:ae.pre,"data-testid":"tool-card-error",children:i}),!o&&!h&&i&&l.jsxs(l.Fragment,{children:[l.jsx("pre",{className:ae.pre,"data-testid":"tool-card-result",children:b}),v&&l.jsxs("button",{type:"button",className:ae.bodyToggle,onClick:()=>{u(S=>!S)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[l.jsx("span",{className:`${ae.chevron} ${c?ae.chevronExpanded:""}`,children:"▸"}),c?"collapse":`${g.length-Ef} more lines`]})]})]})}function Af(n){switch(AR(n.tool)){case"file-read":return l.jsx(Hy,{...n});case"file-edit":return l.jsx(mM,{...n});case"file-write":return l.jsx(Hy,{...n,writeVariant:!0});case"shell":return l.jsx(bM,{...n});case"search":return l.jsx(xM,{...n});case"todo":return l.jsx(PM,{...n});case"metadata":return l.jsx(HM,{...n});default:return l.jsx($M,{...n})}}const ZM="_systemContextEvent_18fue_1",FM="_systemContextHeader_18fue_7",KM="_systemContextBadge_18fue_28",YM="_systemContextToggle_18fue_37",JM="_systemContextPre_18fue_43",WM="_systemContextEllipsis_18fue_54",XM="_systemEvent_18fue_58",QM="_systemTimestamp_18fue_65",e3="_textEvent_18fue_69",t3="_errorEvent_18fue_155",n3="_statusEvent_18fue_163",s3="_userInputEvent_18fue_172",a3="_userInputContent_18fue_178",i3="_signalEvent_18fue_195",o3="_signalBadge_18fue_206",r3="_signalContent_18fue_215",l3="_usageEvent_18fue_220",c3="_usageBadge_18fue_227",u3="_defaultEvent_18fue_236",Ot={systemContextEvent:ZM,systemContextHeader:FM,systemContextBadge:KM,systemContextToggle:YM,systemContextPre:JM,systemContextEllipsis:WM,systemEvent:XM,systemTimestamp:QM,textEvent:e3,errorEvent:t3,statusEvent:n3,userInputEvent:s3,userInputContent:a3,signalEvent:i3,signalBadge:o3,signalContent:r3,usageEvent:l3,usageBadge:c3,defaultEvent:u3},Gy=3;function d3({content:n}){const[s,i]=y.useState(!1),o=n.split(`
|
|
487
|
-
`),c=o.length>Gy,u=s?n:o.slice(0,Gy).join(`
|
|
488
|
-
`);return l.jsxs("div",{className:Ot.systemContextEvent,"data-testid":"system-context-event",children:[l.jsxs("button",{type:"button",className:Ot.systemContextHeader,onClick:()=>{i(f=>!f)},"aria-expanded":s,children:[l.jsx("span",{className:Ot.systemContextBadge,children:"SYSTEM PROMPT"}),c&&l.jsx("span",{className:Ot.systemContextToggle,"aria-hidden":"true",children:s?"▾":"▸"})]}),l.jsxs("pre",{className:Ot.systemContextPre,children:[u,!s&&c&&l.jsx("span",{className:Ot.systemContextEllipsis,children:"…"})]})]})}function f3({time:n,content:s}){return l.jsxs("div",{className:Ot.systemEvent,children:[l.jsxs("span",{className:Ot.systemTimestamp,children:["[",n,"]"]})," ",s]})}function p3({content:n}){return l.jsx("div",{className:Ot.textEvent,children:l.jsx(lp,{remarkPlugins:[cp],rehypePlugins:[CR],children:n})})}function m3({content:n}){return l.jsxs("div",{className:Ot.errorEvent,children:["Error: ",n]})}function h3({content:n}){return l.jsxs("div",{className:Ot.statusEvent,children:["--- ",n," ---"]})}function g3({content:n}){return l.jsx("div",{className:Ot.userInputEvent,children:l.jsx("span",{className:Ot.userInputContent,children:n})})}function v3({content:n}){return l.jsxs("div",{className:Ot.signalEvent,"data-testid":"signal-event",children:[l.jsx("span",{className:Ot.signalBadge,children:"SIGNAL"}),l.jsx("span",{className:Ot.signalContent,children:n})]})}function y3({content:n}){let s=n;try{const i=JSON.parse(n),o=Number(i.input_tokens)||0,c=Number(i.output_tokens)||0,u=Nx(o+c),f=so(Number(i.cost_usd)||0);s=`${u} tokens · ${f}`}catch{}return l.jsx("div",{className:Ot.usageEvent,"data-testid":"usage-event",children:l.jsx("span",{className:Ot.usageBadge,children:s})})}function b3({content:n}){return l.jsx("div",{className:Ot.defaultEvent,children:n})}function _3({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(d3,{content:n.content})}catch{}return l.jsx(f3,{time:i,content:n.content})}case"text":case"output":return l.jsx(p3,{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(Af,{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(Af,{tool:s.tool,args:s.args,result:c,isError:o,detailedResult:s.detailedResult}):l.jsx(Af,{tool:"Tool output",args:void 0,result:c,isError:o})}case"error":return l.jsx(m3,{content:n.content});case"status":return l.jsx(h3,{content:n.content});case"user_input":return l.jsx(g3,{content:n.content});case"signal":return l.jsx(v3,{content:n.content});case"usage":return l.jsx(y3,{content:n.content});default:return l.jsx(b3,{content:n.content})}}const x3="_overlay_cmicx_1",S3="_dialog_cmicx_11",T3="_title_cmicx_30",k3="_description_cmicx_38",w3="_actions_cmicx_45",N3="_cancelButton_cmicx_52",j3="_confirmButton_cmicx_79",Va={overlay:x3,dialog:S3,title:T3,description:k3,actions:w3,cancelButton:N3,confirmButton:j3};function Wa({isOpen:n,title:s,description:i,confirmLabel:o="Delete",onConfirm:c,onCancel:u}){const f=y.useId(),m=y.useId();return l.jsx(rs,{children:n&&l.jsx(Dt.div,{className:Va.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":f,"aria-describedby":i?m:void 0,children:l.jsxs(Dt.div,{className:Va.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:f,className:Va.title,children:s}),i&&l.jsx("p",{id:m,className:Va.description,children:i}),l.jsxs("div",{className:Va.actions,children:[l.jsx("button",{type:"button",className:Va.cancelButton,onClick:u,autoFocus:!0,children:"Cancel"}),l.jsx("button",{type:"button",className:Va.confirmButton,onClick:c,children:o})]})]})})})}const C3="_spinner_1uyt1_1",E3="_spin_1uyt1_1",A3="_sm_1uyt1_14",D3="_md_1uyt1_20",R3="_lg_1uyt1_26",M3="_xl_1uyt1_32",$y={spinner:C3,spin:E3,sm:A3,md:D3,lg:R3,xl:M3};function jx({size:n="md",className:s,label:i="Loading",liveRegion:o=!1}){return l.jsx("span",{className:`${$y.spinner} ${$y[n]} ${s??""}`,role:o?"status":void 0,"aria-label":i,"aria-hidden":o?void 0:!0})}const O3="_splash_1bn1g_1",I3="_logo_1bn1g_11",Zy={splash:O3,logo:I3};function Cx(){return l.jsxs("div",{className:Zy.splash,"data-testid":"splash-screen",children:[l.jsx("img",{src:"/grackle-logo.png",alt:"Grackle",className:Zy.logo}),l.jsx(jx,{size:"xl",label:"Loading Grackle",liveRegion:!0})]})}function L3(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 f of o)c.set(f.id,f);const u=new Set;for(const f of n){u.add(f.id);const m=c.get(f.id);if(m&&m.status!==f.status&&f.status!=="sleeping"){if(f.status==="connecting"){s("Provisioning environment…","info");continue}f.status==="connected"?s("Environment connected","success"):f.status==="error"?s("Environment provision failed","error"):f.status==="disconnected"&&(m.status==="connected"?s("Environment disconnected","warning"):s("Environment stopped","info"))}}for(const f of o)u.has(f.id)||s("Environment removed","info")},[n,s])}const B3={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 U3(n){return B3[n]}function z3(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 f=o.get(u.id);if(!f||f.status===u.status)continue;const m=U3(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 P3(n,s){const i=y.useRef(void 0);y.useEffect(()=>{const o=i.current;i.current=n;const c=z3(o,n);for(const u of c)s(u.message,u.variant)},[n,s])}function V3(n,s,i){const o=n.filter(h=>h.status==="running"||h.status==="idle"||h.status==="waiting").length,c=Ex(s),u=s.filter(h=>op(h,c)).length,f=s.filter(h=>h.status==="paused"||h.status==="failed"||op(h,c)).length,m=i.filter(h=>h.status==="disconnected"||h.status==="error").length;return{activeSessions:o,blockedTasks:u,attentionTasks:f,unhealthyEnvironments:m}}function Ex(n){const s=new Map;for(const i of n)s.set(i.id,i.status);return s}function op(n,s){return n.dependsOn.some(i=>s.get(i)!=="complete")}function H3(n,s){var f;const i=new Map;for(const m of s)i.set(m.id,m);const o=Ex(n),c=[];for(const m of n){const h=m.workspaceId?((f=i.get(m.workspaceId))==null?void 0:f.name)??"Unknown":"Unknown";m.status==="failed"?c.push({task:m,reason:"failed",workspaceName:h}):op(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 q3(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 G3(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 $3="_dashboard_16pzm_1",Z3="_kpiStrip_16pzm_11",F3="_kpiCard_16pzm_23",K3="_kpiValue_16pzm_68",Y3="_kpiLabel_16pzm_76",J3="_bodyGrid_16pzm_84",W3="_section_16pzm_96",X3="_sectionHeader_16pzm_109",Q3="_sectionIcon_16pzm_118",e6="_sectionTitle_16pzm_123",t6="_sectionCount_16pzm_131",n6="_sectionBody_16pzm_138",s6="_emptyHint_16pzm_143",a6="_sessionRow_16pzm_150",i6="_sessionPrompt_16pzm_177",o6="_sessionEnv_16pzm_186",r6="_sessionRuntime_16pzm_192",l6="_sessionStatus_16pzm_198",c6="_statusDot_16pzm_207",u6="_attentionRow_16pzm_233",d6="_attentionTitle_16pzm_259",f6="_attentionMeta_16pzm_267",p6="_reasonBadge_16pzm_274",m6="_bottomGrid_16pzm_301",h6="_envRow_16pzm_312",g6="_envName_16pzm_323",v6="_envStatusBadge_16pzm_333",y6="_workspaceRow_16pzm_369",b6="_workspaceTop_16pzm_395",_6="_workspaceName_16pzm_401",x6="_workspaceCounts_16pzm_407",S6="_progressBar_16pzm_415",T6="_progressFill_16pzm_422",xe={dashboard:$3,kpiStrip:Z3,kpiCard:F3,kpiValue:K3,kpiLabel:Y3,bodyGrid:J3,section:W3,sectionHeader:X3,sectionIcon:Q3,sectionTitle:e6,sectionCount:t6,sectionBody:n6,emptyHint:s6,sessionRow:a6,sessionPrompt:i6,sessionEnv:o6,sessionRuntime:r6,sessionStatus:l6,statusDot:c6,attentionRow:u6,attentionTitle:d6,attentionMeta:f6,reasonBadge:p6,bottomGrid:m6,envRow:h6,envName:g6,envStatusBadge:v6,workspaceRow:y6,workspaceTop:b6,workspaceName:_6,workspaceCounts:x6,progressBar:S6,progressFill:T6},k6={hidden:{opacity:0,y:12},visible:n=>({opacity:1,y:0,transition:{delay:n*.06,duration:.3,ease:"easeOut"}})},rc={hidden:{opacity:0,y:16},visible:n=>({opacity:1,y:0,transition:{delay:.15+n*.08,duration:.35,ease:"easeOut"}})};function w6(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 lc({value:n,label:s,accent:i,index:o,testId:c}){return l.jsxs(Dt.div,{className:xe.kpiCard,"data-accent":i,"data-testid":c,variants:k6,initial:"hidden",animate:"visible",custom:o,children:[l.jsx("span",{className:xe.kpiValue,children:n}),l.jsx("span",{className:xe.kpiLabel,children:s})]})}function N6(){const{workspaces:n,tasks:s,sessions:i,environments:o,loadTasks:c}=pt(),u=xt(),f=y.useRef(new Set);y.useEffect(()=>{for(const b of n)f.current.has(b.id)||(f.current.add(b.id),c(b.id))},[n,c]);const m=y.useMemo(()=>V3(i,s,o),[i,s,o]),h=y.useMemo(()=>q3(i,o),[i,o]),g=y.useMemo(()=>H3(s,n),[s,n]),v=y.useMemo(()=>G3(n,s),[n,s,o]);return l.jsxs("div",{className:xe.dashboard,"data-testid":"dashboard",children:[l.jsxs("div",{className:xe.kpiStrip,"data-testid":"dashboard-kpi-strip",children:[l.jsx(lc,{value:m.activeSessions,label:"Active Sessions",accent:"green",index:0,testId:"kpi-active-sessions"}),l.jsx(lc,{value:m.blockedTasks,label:"Blocked Tasks",accent:"yellow",index:1,testId:"kpi-blocked-tasks"}),l.jsx(lc,{value:m.attentionTasks,label:"Needs Attention",accent:"red",index:2,testId:"kpi-attention-tasks"}),l.jsx(lc,{value:m.unhealthyEnvironments,label:"Unhealthy Envs",accent:"blue",index:3,testId:"kpi-unhealthy-envs"})]}),l.jsxs("div",{className:xe.bodyGrid,children:[l.jsxs(Dt.div,{className:xe.section,variants:rc,initial:"hidden",animate:"visible",custom:0,"data-testid":"dashboard-active-sessions",children:[l.jsxs("div",{className:xe.sectionHeader,children:[l.jsx("span",{className:xe.sectionIcon,"aria-hidden":"true",children:"●"}),l.jsx("span",{className:xe.sectionTitle,children:"Active Sessions"}),l.jsx("span",{className:xe.sectionCount,children:h.length})]}),l.jsx("div",{className:xe.sectionBody,children:h.length===0?l.jsx("div",{className:xe.emptyHint,children:"No active sessions"}):h.map(({session:b,environmentName:_})=>l.jsxs("button",{type:"button",className:xe.sessionRow,onClick:()=>u(Cb(b.id)),"data-testid":"session-row",children:[l.jsx("span",{className:xe.sessionPrompt,title:b.prompt,children:b.prompt||"—"}),l.jsx("span",{className:xe.sessionEnv,children:_}),l.jsx("span",{className:xe.sessionRuntime,children:b.runtime}),l.jsxs("span",{className:xe.sessionStatus,children:[l.jsx("span",{className:xe.statusDot,"data-status":b.status}),b.status]})]},b.id))})]}),l.jsxs(Dt.div,{className:xe.section,variants:rc,initial:"hidden",animate:"visible",custom:1,"data-testid":"dashboard-needs-attention",children:[l.jsxs("div",{className:xe.sectionHeader,children:[l.jsx("span",{className:xe.sectionIcon,"aria-hidden":"true",children:"⚑"}),l.jsx("span",{className:xe.sectionTitle,children:"Needs Attention"}),l.jsx("span",{className:xe.sectionCount,children:g.length})]}),l.jsx("div",{className:xe.sectionBody,children:g.length===0?l.jsx("div",{className:xe.emptyHint,children:"All clear"}):g.map(({task:b,reason:_,workspaceName:S})=>l.jsxs("button",{type:"button",className:xe.attentionRow,onClick:()=>u(os(b.id)),"data-testid":"attention-row",children:[l.jsxs("div",{className:xe.attentionTitle,children:[l.jsx("span",{className:xe.reasonBadge,"data-reason":_,children:_}),b.title]}),l.jsx("div",{className:xe.attentionMeta,children:l.jsx("span",{children:S})})]},b.id))})]})]}),l.jsxs("div",{className:xe.bottomGrid,children:[l.jsxs(Dt.div,{className:xe.section,variants:rc,initial:"hidden",animate:"visible",custom:2,"data-testid":"dashboard-env-health",children:[l.jsxs("div",{className:xe.sectionHeader,children:[l.jsx("span",{className:xe.sectionIcon,"aria-hidden":"true",children:"◈"}),l.jsx("span",{className:xe.sectionTitle,children:"Environment Health"}),l.jsx("span",{className:xe.sectionCount,children:o.length})]}),l.jsx("div",{className:xe.sectionBody,children:o.length===0?l.jsx("div",{className:xe.emptyHint,children:"No environments configured"}):o.map(b=>l.jsxs("div",{className:xe.envRow,"data-testid":"dashboard-env-row",children:[l.jsx("span",{className:xe.envName,children:b.displayName}),l.jsx("span",{className:xe.envStatusBadge,"data-status":b.status,children:b.status})]},b.id))})]}),l.jsxs(Dt.div,{className:xe.section,variants:rc,initial:"hidden",animate:"visible",custom:3,"data-testid":"dashboard-workspace-snapshot",children:[l.jsxs("div",{className:xe.sectionHeader,children:[l.jsx("span",{className:xe.sectionIcon,"aria-hidden":"true",children:"▦"}),l.jsx("span",{className:xe.sectionTitle,children:"Workspaces"}),l.jsx("span",{className:xe.sectionCount,children:n.length})]}),l.jsx("div",{className:xe.sectionBody,children:v.length===0?l.jsx("div",{className:xe.emptyHint,children:"No workspaces yet"}):v.map(({workspace:b,totalTasks:_,completedTasks:S,workingTasks:T,failedTasks:j})=>{const N=_>0?Math.round(S/_*100):0;return l.jsxs("button",{type:"button",className:xe.workspaceRow,onClick:()=>u(Wi(b.id,b.environmentId)),"data-testid":"workspace-row",children:[l.jsxs("div",{className:xe.workspaceTop,children:[l.jsx("span",{className:xe.workspaceName,children:b.name}),l.jsxs("span",{className:xe.workspaceCounts,"aria-label":w6(S,_,T,j),children:[S,"/",_,T>0&&l.jsxs("span",{style:{color:"var(--accent-green)"},"aria-hidden":"true",children:["▸",T]}),j>0&&l.jsxs("span",{style:{color:"var(--accent-red)"},"aria-hidden":"true",children:["✗",j]})]})]}),_>0&&l.jsx("div",{className:xe.progressBar,children:l.jsx("div",{className:xe.progressFill,style:{width:`${N}%`}})})]},b.id)})})]})]})]})}const j6="_panelContainer_1h5qd_1",C6="_emptyState_1h5qd_8",E6="_fadeIn_1h5qd_1",A6="_workspaceSummary_1h5qd_17",D6="_workspaceSummaryTitle_1h5qd_28",R6="_workspaceSummarySubtitle_1h5qd_32",M6="_header_1h5qd_36",O6="_headerInfo_1h5qd_71",I6="_killButton_1h5qd_77",L6="_headerTitle_1h5qd_106",B6="_headerActions_1h5qd_121",U6="_taskStatusBadge_1h5qd_128",z6="_taskBranch_1h5qd_137",P6="_taskBlockedBadge_1h5qd_143",V6="_btnPrimary_1h5qd_151",H6="_btnDanger_1h5qd_182",q6="_btnGhost_1h5qd_221",G6="_rejectInput_1h5qd_247",$6="_tabBar_1h5qd_277",Z6="_tab_1h5qd_277",F6="_active_1h5qd_303",K6="_eventScroll_1h5qd_308",Y6="_tabContent_1h5qd_314",J6="_noContext_1h5qd_319",W6="_overviewContent_1h5qd_325",X6="_overviewDashboard_1h5qd_334",Q6="_overviewHero_1h5qd_340",eO="_statusBadge_1h5qd_347",tO="_statusPending_1h5qd_359",nO="_statusAssigned_1h5qd_364",sO="_statusInProgress_1h5qd_369",aO="_statusReview_1h5qd_374",iO="_statusDone_1h5qd_379",oO="_statusFailed_1h5qd_384",rO="_statusWaitingInput_1h5qd_389",lO="_overviewBranchPill_1h5qd_394",cO="_branchLink_1h5qd_409",uO="_overviewSection_1h5qd_420",dO="_overviewLabel_1h5qd_426",fO="_overviewValue_1h5qd_433",pO="_overviewMuted_1h5qd_438",mO="_overviewMarkdown_1h5qd_444",hO="_envRow_1h5qd_513",gO="_envDot_1h5qd_519",vO="_envDotGreen_1h5qd_526",yO="_envDotYellow_1h5qd_530",bO="_envDotRed_1h5qd_534",_O="_envDotGray_1h5qd_538",xO="_depList_1h5qd_542",SO="_depItem_1h5qd_548",TO="_depBlocked_1h5qd_555",kO="_depDone_1h5qd_559",wO="_timeline_1h5qd_563",NO="_timelineRow_1h5qd_569",jO="_timelineKey_1h5qd_576",CO="_timelineValue_1h5qd_582",EO="_timelineDelta_1h5qd_586",AO="_reviewNotes_1h5qd_597",DO="_overviewDescription_1h5qd_608",RO="_waitingMessage_1h5qd_614",MO="_errorMessage_1h5qd_618",OO="_eventOverflowWarning_1h5qd_622",IO="_attemptSelector_1h5qd_636",LO="_attemptLabel_1h5qd_652",BO="_attemptButton_1h5qd_656",UO="_attemptActive_1h5qd_673",zO="_attemptStatus_1h5qd_679",PO="_emptyCta_1h5qd_685",VO="_ctaTitle_1h5qd_697",HO="_ctaDescription_1h5qd_703",qO="_ctaButton_1h5qd_710",GO="_ctaCreateForm_1h5qd_745",$O="_ctaCreateInput_1h5qd_751",ZO="_ctaCreateOk_1h5qd_782",FO="_ctaLink_1h5qd_817",KO="_workspaceHeader_1h5qd_831",YO="_workspaceName_1h5qd_856",JO="_workspaceMeta_1h5qd_869",WO="_metaRow_1h5qd_877",XO="_metaLabel_1h5qd_890",QO="_metaValue_1h5qd_905",eI="_archiveButton_1h5qd_915",tI="_repoLink_1h5qd_945",nI="_metaToggle_1h5qd_955",sI="_metaToggleArrow_1h5qd_976",aI="_metaToggleArrowOpen_1h5qd_981",iI="_progressBarContainer_1h5qd_985",oI="_progressBar_1h5qd_985",rI="_progressFill_1h5qd_1001",lI="_progressLabel_1h5qd_1008",cI="_metaTimestamps_1h5qd_1015",uI="_metaTimestamp_1h5qd_1015",B={panelContainer:j6,emptyState:C6,fadeIn:E6,workspaceSummary:A6,workspaceSummaryTitle:D6,workspaceSummarySubtitle:R6,header:M6,headerInfo:O6,killButton:I6,headerTitle:L6,headerActions:B6,taskStatusBadge:U6,taskBranch:z6,taskBlockedBadge:P6,btnPrimary:V6,btnDanger:H6,btnGhost:q6,rejectInput:G6,tabBar:$6,tab:Z6,active:F6,eventScroll:K6,tabContent:Y6,noContext:J6,overviewContent:W6,overviewDashboard:X6,overviewHero:Q6,statusBadge:eO,statusPending:tO,statusAssigned:nO,statusInProgress:sO,statusReview:aO,statusDone:iO,statusFailed:oO,statusWaitingInput:rO,overviewBranchPill:lO,branchLink:cO,overviewSection:uO,overviewLabel:dO,overviewValue:fO,overviewMuted:pO,overviewMarkdown:mO,envRow:hO,envDot:gO,envDotGreen:vO,envDotYellow:yO,envDotRed:bO,envDotGray:_O,depList:xO,depItem:SO,depBlocked:TO,depDone:kO,timeline:wO,timelineRow:NO,timelineKey:jO,timelineValue:CO,timelineDelta:EO,reviewNotes:AO,overviewDescription:DO,waitingMessage:RO,errorMessage:MO,eventOverflowWarning:OO,attemptSelector:IO,attemptLabel:LO,attemptButton:BO,attemptActive:UO,attemptStatus:zO,emptyCta:PO,ctaTitle:VO,ctaDescription:HO,ctaButton:qO,ctaCreateForm:GO,ctaCreateInput:$O,ctaCreateOk:ZO,ctaLink:FO,workspaceHeader:KO,workspaceName:YO,workspaceMeta:JO,metaRow:WO,metaLabel:XO,metaValue:QO,archiveButton:eI,repoLink:tI,metaToggle:nI,metaToggleArrow:sI,metaToggleArrowOpen:aI,progressBarContainer:iI,progressBar:oI,progressFill:rI,progressLabel:lI,metaTimestamps:cI,metaTimestamp:uI};function dI(){return l.jsx("div",{className:B.emptyState,children:"Select a task or click + to create one"})}function fI(){return l.jsx("div",{className:B.emptyState,children:"Select an environment to manage its workspaces, or add a new one."})}function pI(){const{workspaces:n,environments:s}=pt(),i=xt(),o=s.length>0;return n.length>0?l.jsx(N6,{}):l.jsxs("div",{className:B.emptyCta,"data-testid":"welcome-cta",children:[l.jsx("div",{className:B.ctaTitle,children:"Welcome to Grackle"}),l.jsx("div",{className:B.ctaDescription,children:"Organize your work into workspaces and let agents tackle the tasks."}),l.jsx("button",{className:B.ctaButton,onClick:()=>i(Db),disabled:!o,"data-testid":"welcome-create-button",children:"Create Your First Workspace"}),!o&&l.jsx("div",{className:B.ctaDescription,children:"Add an environment first before creating a workspace."})]})}const Ax=50;function mI(n,s,i,o,c=Ax){return o?n<c:s-n-i<c}function hI(n,s){const i=s-n;return i>0?i:0}function gI({scrollRef:n,contentLength:s,isReversed:i}){const[o,c]=y.useState(!0),u=y.useRef(0),f=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 _=mI(g.scrollTop,g.scrollHeight,g.clientHeight,i,Ax);_!==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||f.current||(f.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=hI(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 vI="_wrapper_p24zt_1",yI="_scrollContainer_p24zt_9",bI="_toolbar_p24zt_15",_I="_directionToggle_p24zt_22",xI="_scrollToAnchor_p24zt_60",SI="_scrollToAnchorBottom_p24zt_84",TI="_scrollToAnchorTop_p24zt_88",Ha={wrapper:vI,scrollContainer:yI,toolbar:bI,directionToggle:_I,scrollToAnchor:xI,scrollToAnchorBottom:SI,scrollToAnchorTop:TI},Dx="grackle-stream-direction";function kI(){try{return localStorage.getItem(Dx)==="reversed"}catch{return!1}}function wI({eventsDropped:n}){return n<=0?l.jsx(l.Fragment,{}):l.jsxs("div",{className:B.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 nm({events:n,eventsDropped:s,emptyState:i}){const o=y.useRef(null),[c,u]=y.useState(kI),f=eA(),m=y.useMemo(()=>c?[...n].reverse():n,[n,c]),{isAtAnchor:h,scrollToAnchor:g}=gI({scrollRef:o,contentLength:n.length,isReversed:c}),v=()=>{const S=!c;u(S);try{localStorage.setItem(Dx,S?"reversed":"default")}catch{}},b=f?0:.2,_=c?-8:8;return l.jsxs("div",{className:Ha.wrapper,children:[l.jsx("div",{className:Ha.toolbar,children:l.jsx("button",{className:Ha.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:Ha.scrollContainer,"data-testid":"event-stream-scroll",children:[n.length===0&&i,l.jsx(wI,{eventsDropped:s}),l.jsx(rs,{initial:!1,children:m.map((S,T)=>{const j=c?n.length-1-T:T;return l.jsx(Dt.div,{initial:{opacity:0,y:_},animate:{opacity:1,y:0},transition:{duration:b,ease:"easeOut"},children:l.jsx(_3,{event:S,toolUseCtx:S.toolUseCtx})},`${S.sessionId}-${S.timestamp}-${j}`)})})]}),l.jsx(rs,{children:!h&&l.jsxs(Dt.button,{className:`${Ha.scrollToAnchor} ${c?Ha.scrollToAnchorTop:Ha.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"]})})]})}const NI="_bar_1xhb4_1",jI="_input_1xhb4_32",CI="_select_1xhb4_67",EI="_btnPrimary_1xhb4_103",AI="_btnGhost_1xhb4_173",DI="_badge_1xhb4_195",RI="_disconnectHint_1xhb4_205",bn={bar:NI,input:jI,select:CI,btnPrimary:EI,btnGhost:AI,badge:DI,disconnectHint:RI};function MI(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 OI({environmentId:n,onReconnect:s}){return l.jsxs(l.Fragment,{children:[l.jsx("span",{className:bn.disconnectHint,"data-testid":"env-disconnect-hint",children:"Environment unavailable"}),l.jsx("button",{type:"button",onClick:()=>s(n),className:bn.btnGhost,"data-testid":"reconnect-btn",title:"Reconnect the environment to resume messaging",children:"Reconnect"})]})}function jr({mode:n,sessionId:s,environmentId:i,taskId:o,showPersonaSelect:c,personas:u,environments:f,onSendInput:m,onSpawn:h,onStartTask:g,onProvisionEnvironment:v}){const{showToast:b}=Ls(),[_,S]=y.useState(""),[T,j]=y.useState(""),N=MI(i,f),k=E=>{if(E.preventDefault(),!!_.trim())if(n==="send"){if(!s||N)return;m(s,_),S("")}else if(n==="spawn"){if(!i)return;h(i,_,T),b("Session started","success"),S(""),j("")}else{if(!o)return;g(o,void 0,i,_),S("")}};return n==="spawn"?l.jsxs("form",{onSubmit:k,className:bn.bar,children:[l.jsx("span",{className:bn.badge,children:"new chat"}),l.jsx("input",{type:"text",value:_,onChange:E=>S(E.target.value),placeholder:"Enter prompt...",autoFocus:!0,className:bn.input}),c&&l.jsxs("select",{value:T,onChange:E=>j(E.target.value),className:bn.select,children:[l.jsx("option",{value:"",children:"(Default)"}),u.map(E=>l.jsx("option",{value:E.id,children:E.name},E.id))]}),l.jsx("button",{type:"submit",disabled:!_.trim()||!i,className:bn.btnPrimary,children:"Go"})]}):n==="start"?l.jsxs("form",{onSubmit:k,className:bn.bar,children:[l.jsx("input",{type:"text",value:_,onChange:E=>S(E.target.value),placeholder:"Type a message...",autoFocus:!0,className:bn.input}),l.jsx("button",{type:"submit",disabled:!_.trim(),className:bn.btnPrimary,children:"Send"})]}):l.jsxs("form",{onSubmit:k,className:bn.bar,children:[N&&i&&l.jsx(OI,{environmentId:i,onReconnect:v}),l.jsx("input",{type:"text",value:_,onChange:E=>S(E.target.value),placeholder:"Type a message...",autoFocus:!N,disabled:N,className:bn.input}),l.jsx("span",{title:N?"Environment is unavailable — reconnect first":void 0,children:l.jsx("button",{type:"submit",disabled:!_.trim()||N,className:bn.btnPrimary,children:"Send"})})]})}function sm(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 am(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 f=s.get(u);if(!(!f||typeof f.id!="string"))try{const m=JSON.parse(u.content);i.set(f.id,{tool:m.tool,args:m.args})}catch{}}const o=new Set;return n.map(u=>{if(u.eventType!=="tool_result")return u;const f=s.get(u);if(!f||typeof f.tool_use_id!="string")return u;const m=i.get(f.tool_use_id);if(!m)return u;o.add(f.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 f=s.get(u);return f&&typeof f.id=="string"?!o.has(f.id):!0})}const II="_panelContainer_19poq_1",LI="_chatHeader_19poq_8",BI="_chatHeaderInfo_19poq_37",UI="_emptyState_19poq_43",zI="_emptyTitle_19poq_55",PI="_emptyDescription_19poq_61",VI="_emptyHint_19poq_67",Fa={panelContainer:II,chatHeader:LI,chatHeaderInfo:BI,emptyState:UI,emptyTitle:zI,emptyDescription:PI,emptyHint:VI};function HI({hasLocalEnvironment:n}){return l.jsxs("div",{className:Fa.emptyState,"data-testid":"chat-empty-state",children:[l.jsx("div",{className:Fa.emptyTitle,children:"Welcome to Grackle"}),l.jsx("div",{className:Fa.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:Fa.emptyHint,children:"Go to Settings → Environments to add one."})]})}function qI(){const{tasks:n,sessions:s,events:i,eventsDropped:o,environments:c,loadTaskSessions:u,loadSessionEvents:f,kill:m,stopGraceful:h,taskSessions:g,sendInput:v,spawn:b,startTask:_,personas:S,provisionEnvironment:T}=pt(),j=y.useRef(void 0),[N,k]=y.useState(),E=n.find(F=>F.id===nr),A=E!=null&&E.latestSessionId?s.find(F=>F.id===E.latestSessionId)??(g[nr]??[]).find(F=>F.id===E.latestSessionId):void 0;y.useEffect(()=>{u(nr)},[u]),y.useEffect(()=>{E!=null&&E.latestSessionId&&u(nr)},[E==null?void 0:E.latestSessionId,u]),y.useEffect(()=>{A&&A.id!==j.current&&(j.current=A.id,f(A.id))},[A==null?void 0:A.id,f]);const R=y.useMemo(()=>{if(!A)return[];const F=i.filter(ee=>ee.sessionId===A.id);return am(sm(F))},[i,A==null?void 0:A.id]),C=c.find(F=>F.adapterType==="local"&&F.status==="connected"),U=A!==void 0&&A.status!=="stopped"&&A.status!=="suspended",V=(A==null?void 0:A.status)==="idle";y.useEffect(()=>{N&&A&&V&&(v(A.id,N),k(void 0))},[N,V,A==null?void 0:A.id,v]);const I=y.useCallback((F,ee,re,se)=>{se&&k(se),_(F,ee,re)},[_]);return l.jsxs("div",{className:Fa.panelContainer,"data-testid":"chat-page",children:[U&&l.jsxs("div",{className:Fa.chatHeader,children:[l.jsxs("span",{className:Fa.chatHeaderInfo,children:["Session: ",A.id.slice(0,8)," | ",A.runtime," | ",A.status]}),l.jsx(wx,{label:"Stop",onClick:()=>h(A.id),variant:"danger",size:"sm","data-testid":"stop-split-button",options:[{label:"Stop",description:"Graceful shutdown",onClick:()=>h(A.id)},{label:"Kill",description:"Force kill",onClick:()=>m(A.id)}]})]}),l.jsx(nm,{events:R,eventsDropped:o,emptyState:l.jsx(HI,{hasLocalEnvironment:!!C})}),C&&U&&l.jsx(jr,{mode:"send",sessionId:A.id,environmentId:A.environmentId,personas:S,environments:c,onSendInput:v,onSpawn:b,onStartTask:_,onProvisionEnvironment:T}),C&&!U&&l.jsx(jr,{mode:"start",taskId:nr,environmentId:C.id,personas:S,environments:c,onSendInput:v,onSpawn:b,onStartTask:I,onProvisionEnvironment:T})]})}function GI(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 Xa={label:"Home",url:Ja};function $I(n){return n?[Xa,{label:"Settings",url:Ji},{label:n,url:void 0}]:[Xa,{label:"Settings",url:void 0}]}const Rx={label:"Environments",url:Xi};function ZI(){return[Xa,{label:"Environments",url:void 0}]}function FI(){return[Xa,{label:"New Chat",url:void 0}]}function KI(n){return[Xa,{label:`Session ${n.slice(0,8)}`,url:void 0}]}function YI(n,s,i,o){const c=i.find(f=>f.id===n),u=o.find(f=>f.id===s);return[Xa,Rx,{label:(u==null?void 0:u.displayName)??"Environment",url:Qi(s)},{label:(c==null?void 0:c.name)??"Workspace",url:void 0}]}function JI(n,s,i,o,c){const u=GI(n,c),f=c.get(n),m=f==null?void 0:f.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=[Xa];v&&g&&(b.push(Rx),b.push({label:v.displayName,url:Qi(g)})),h&&g&&b.push({label:h.name,url:Wi(h.id,g)});for(let S=0;S<u.length-1;S++)b.push({label:u[S].title,url:os(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 WI(){const n=FI(),[s]=yp(),i=s.get("env")??"",{sendInput:o,spawn:c,startTask:u,personas:f,environments:m,provisionEnvironment:h}=pt();return l.jsxs("div",{className:B.panelContainer,children:[l.jsx(ba,{segments:n}),l.jsx("div",{className:B.emptyState,children:"Enter a prompt below to start a new session"}),l.jsx(jr,{mode:"spawn",environmentId:i,showPersonaSelect:!0,personas:f,environments:m,onSendInput:o,onSpawn:c,onStartTask:u,onProvisionEnvironment:h})]})}function XI({sessionId:n,session:s,isActive:i,onStop:o,onKill:c}){return l.jsxs("div",{className:B.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?` | ${Nx((s.inputTokens??0)+(s.outputTokens??0))} tokens · ${so(s.costUsd??0)}`:""]}),l.jsxs("span",{className:B.headerInfo,children:[s&&l.jsx("span",{children:s.prompt.length>60?s.prompt.slice(0,60)+"...":s.prompt}),i&&l.jsx(wx,{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 QI({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?B.errorMessage:B.waitingMessage,children:i})}function e5(){const{sessionId:n}=va(),{events:s,eventsDropped:i,sessions:o,kill:c,stopGraceful:u,loadSessionEvents:f,sendInput:m,spawn:h,startTask:g,personas:v,environments:b,provisionEnvironment:_}=pt(),S=y.useRef(void 0),T=KI(n),j=o.find(E=>E.id===n)??void 0,N=y.useMemo(()=>{const E=n?s.filter(A=>A.sessionId===n):[];return am(sm(E))},[s,n]);if(y.useEffect(()=>{n&&n!==S.current&&(S.current=n,f(n))},[n,f]),!n)return l.jsx("div",{className:B.emptyState,children:"No session selected"});const k=(j==null?void 0:j.status)==="running"||(j==null?void 0:j.status)==="idle";return l.jsxs("div",{className:B.panelContainer,children:[l.jsx(ba,{segments:T}),l.jsx(XI,{sessionId:n,session:j,isActive:k,onStop:()=>u(n),onKill:()=>c(n)}),l.jsx(nm,{events:N,eventsDropped:i,emptyState:l.jsx(QI,{session:j})}),k&&l.jsx(jr,{mode:"send",sessionId:n,environmentId:j.environmentId,personas:v,environments:b,onSendInput:m,onSpawn:h,onStartTask:g,onProvisionEnvironment:_})]})}function t5(n){if(!n)return!1;const s=n.tagName;return!!(s==="INPUT"||s==="TEXTAREA"||s==="SELECT"||n.isContentEditable)}function Ms(n,s){const i=y.useRef(s);i.current=s;const{key:o,ctrl:c=!1,shift:u=!1,suppressInInputs:f=!0,enabled:m=!0}=n;y.useEffect(()=>{if(!m)return;const h=g=>{if(f&&t5(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,f,m])}const Fy=220,Ky=70,n5=40,s5=60,a5="hierarchy",i5="dependency";function o5(n){return y.useMemo(()=>{if(n.length===0)return{nodes:[],edges:[]};const s=new Xv.graphlib.Graph({multigraph:!0});s.setDefaultEdgeLabel(()=>({})),s.setGraph({rankdir:"TB",nodesep:n5,ranksep:s5});const i=new Map(n.map(f=>[f.id,f])),o=new Map;for(const f of n)if(f.parentTaskId&&i.has(f.parentTaskId)){const m=o.get(f.parentTaskId)||[];m.push(f),o.set(f.parentTaskId,m)}for(const f of n)s.setNode(f.id,{width:Fy,height:Ky});const c=[];for(const f of n){if(f.parentTaskId&&i.has(f.parentTaskId)){const m=`hierarchy-${f.parentTaskId}-${f.id}`;s.setEdge(f.parentTaskId,f.id,{},m),c.push({id:m,source:f.parentTaskId,target:f.id,type:"smoothstep",data:{edgeType:a5},style:{stroke:"var(--accent-green)",strokeWidth:2},animated:!1})}for(const m of f.dependsOn)if(i.has(m)){const h=`dependency-${m}-${f.id}`;s.setEdge(m,f.id,{},h),c.push({id:h,source:m,target:f.id,type:"smoothstep",data:{edgeType:i5},style:{stroke:"var(--text-tertiary)",strokeWidth:1.5,strokeDasharray:"6 3"},animated:!1})}}return Xv.layout(s),{nodes:n.map(f=>{const m=s.node(f.id),h=o.get(f.id)||[];return{id:f.id,type:"task",position:{x:m.x-Fy/2,y:m.y-Ky/2},data:{task:f,childCount:h.length,doneChildCount:h.filter(g=>g.status==="complete").length,hasDependencies:f.dependsOn.length>0}}}),edges:c}},[n])}const r5="_dagContainer_js4w6_1",l5="_taskNode_js4w6_26",c5="_taskNodeBorder_js4w6_54",u5="_taskNodeContent_js4w6_60",d5="_taskNodeHeader_js4w6_70",f5="_taskNodeIcon_js4w6_77",p5="_taskNodeTitle_js4w6_82",m5="_taskNodeBadges_js4w6_90",h5="_childBadge_js4w6_95",g5="_depBadge_js4w6_107",v5="_handle_js4w6_119",y5="_emptyCta_js4w6_126",b5="_ctaDescription_js4w6_137",_5="_ctaButton_js4w6_144",tn={dagContainer:r5,taskNode:l5,taskNodeBorder:c5,taskNodeContent:u5,taskNodeHeader:d5,taskNodeIcon:f5,taskNodeTitle:p5,taskNodeBadges:m5,childBadge:h5,depBadge:g5,handle:v5,emptyCta:y5,ctaDescription:b5,ctaButton:_5};function x5({data:n}){const{task:s,childCount:i,doneChildCount:o,hasDependencies:c}=n,u=ga(s.status);return l.jsxs("div",{className:tn.taskNode,"data-task-id":s.id,"data-task-title":s.title,children:[l.jsx(Qv,{type:"target",position:e0.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(Qv,{type:"source",position:e0.Bottom,className:tn.handle})]})}const S5=iA,T5={task:x5};function k5({workspaceId:n,environmentId:s,tasks:i}){const o=xt(),{resolvedThemeId:c}=zb(),u=y.useMemo(()=>i.filter(b=>b.workspaceId===n),[i,n]),{nodes:f,edges:m}=o5(u),h=y.useMemo(()=>{const b=getComputedStyle(document.documentElement),_={};for(const[S,T]of Object.entries(S5))_[S]=b.getPropertyValue(T).trim()||"#6b7a8d";return _},[c]),g=y.useCallback((b,_)=>{o(os(_.id,void 0,n,s))},[o,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:()=>o(ti(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:f,edges:m,nodeTypes:T5,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)"}})]})})}function w5({tasks:n,taskStatusById:s,sessionStatusByTaskId:i}){const o=new Map;for(const u of n)if(u.parentTaskId){const f=o.get(u.parentTaskId);f?f.push(u):o.set(u.parentTaskId,[u])}const c=new Map(zy.map(u=>[u,[]]));for(const u of n){const f=tm(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(f==="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(f);S?S.push(_):c.get("not_started").push(_)}for(const u of c.values())u.sort((f,m)=>f.task.sortOrder-m.task.sortOrder);return zy.map(u=>{const f=ga(u);return{status:u,label:f.label,style:f,tasks:c.get(u)??[]}})}const N5="_boardContainer_1c4y1_1",j5="_column_1c4y1_17",C5="_columnHeader_1c4y1_34",E5="_columnIcon_1c4y1_47",A5="_columnLabel_1c4y1_52",D5="_columnCount_1c4y1_57",R5="_cardList_1c4y1_67",M5="_emptyPlaceholder_1c4y1_76",O5="_card_1c4y1_67",I5="_cardHeader_1c4y1_107",L5="_cardStatusIcon_1c4y1_113",B5="_cardTitle_1c4y1_119",U5="_cardBadges_1c4y1_127",z5="_badge_1c4y1_134",P5="_blockedBadge_1c4y1_146",V5="_childBadge_1c4y1_151",H5="_depBadge_1c4y1_155",q5="_parentBadge_1c4y1_159",G5="_pausedSubBadge_1c4y1_166",$5="_personaBadge_1c4y1_170",Z5="_envBadge_1c4y1_174",F5="_emptyCta_1c4y1_178",K5="_ctaButton_1c4y1_188",Y5="_ctaDescription_1c4y1_204",Qe={boardContainer:N5,column:j5,columnHeader:C5,columnIcon:E5,columnLabel:A5,columnCount:D5,cardList:R5,emptyPlaceholder:M5,card:O5,cardHeader:I5,cardStatusIcon:L5,cardTitle:B5,cardBadges:U5,badge:z5,blockedBadge:P5,childBadge:V5,depBadge:H5,parentBadge:q5,pausedSubBadge:G5,personaBadge:$5,envBadge:Z5,emptyCta:F5,ctaButton:K5,ctaDescription:Y5};function J5({workspaceId:n,environmentId:s,tasks:i,sessions:o,personas:c,environments:u}){const f=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(E=>[E.id,E])),S=new Map(c.map(E=>[E.id,E])),T=new Map(u.map(E=>[E.id,E])),j=new Map,N=new Map,k=new Map;for(const E of m)if(E.latestSessionId){const A=_.get(E.latestSessionId);if(A){if(j.set(E.id,A.endReason||A.status),A.personaId){const R=S.get(A.personaId);R&&N.set(E.id,R.name)}if(A.environmentId){const R=T.get(A.environmentId);R&&k.set(E.id,R.displayName)}}}return{sessionStatusByTaskId:j,personaNameByTaskId:N,environmentNameByTaskId:k}},[m,o,c,u]),b=y.useMemo(()=>w5({tasks:m,taskStatusById:h,sessionStatusByTaskId:v.sessionStatusByTaskId}),[m,h,v]);return m.length===0?l.jsxs("div",{className:Qe.emptyCta,"data-testid":"board-empty-cta",children:[l.jsx("button",{className:Qe.ctaButton,onClick:()=>f(ti(n,void 0,s)),children:"Create Task"}),l.jsx("div",{className:Qe.ctaDescription,children:"Break your work into tasks and let agents tackle them"})]}):l.jsx("div",{className:Qe.boardContainer,"data-testid":"board-container",children:b.map(_=>l.jsxs("section",{className:Qe.column,"data-testid":`board-column-${_.status}`,"aria-label":`${_.label}, ${_.tasks.length} ${_.tasks.length===1?"task":"tasks"}`,children:[l.jsxs("div",{className:Qe.columnHeader,children:[l.jsx("span",{className:Qe.columnIcon,style:{color:_.style.color},children:_.style.icon}),l.jsx("span",{className:Qe.columnLabel,children:_.label}),l.jsx("span",{className:Qe.columnCount,"data-testid":`board-count-${_.status}`,children:_.tasks.length})]}),l.jsx("div",{className:Qe.cardList,children:_.tasks.length===0?l.jsx("div",{className:Qe.emptyPlaceholder,children:"No tasks"}):l.jsx(rs,{mode:"popLayout",children:_.tasks.map(S=>l.jsx(Dt.div,{layout:!0,initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.15},children:l.jsx(W5,{boardTask:S,tasksById:g,personaName:v.personaNameByTaskId.get(S.task.id),envName:v.environmentNameByTaskId.get(S.task.id),onClick:()=>f(os(S.task.id,void 0,n,s))})},S.task.id))})})]},_.status))})}function W5({boardTask:n,tasksById:s,personaName:i,envName:o,onClick:c}){const{task:u,isBlocked:f,childCount:m,doneChildCount:h,pausedSubBadge:g}=n,v=ga(u.status),b=u.parentTaskId?s.get(u.parentTaskId):void 0;return l.jsxs("div",{className:Qe.card,tabIndex:0,role:"button","data-testid":`board-card-${u.id}`,onClick:c,onKeyDown:_=>{(_.key==="Enter"||_.key===" ")&&(_.preventDefault(),c())},children:[l.jsxs("div",{className:Qe.cardHeader,children:[l.jsx("span",{className:Qe.cardStatusIcon,style:{color:v.color},children:v.icon}),l.jsx("span",{className:Qe.cardTitle,children:u.title})]}),l.jsxs("div",{className:Qe.cardBadges,children:[b&&l.jsx("span",{className:`${Qe.badge} ${Qe.parentBadge}`,title:b.title,children:b.title}),m>0&&l.jsxs("span",{className:`${Qe.badge} ${Qe.childBadge}`,children:[h,"/",m]}),f&&l.jsx("span",{className:`${Qe.badge} ${Qe.blockedBadge}`,children:"blocked"}),u.dependsOn.length>0&&!f&&l.jsx("span",{className:`${Qe.badge} ${Qe.depBadge}`,children:"dep"}),g&&l.jsx("span",{className:`${Qe.badge} ${Qe.pausedSubBadge}`,children:g}),i&&l.jsx("span",{className:`${Qe.badge} ${Qe.personaBadge}`,children:i}),o&&l.jsx("span",{className:`${Qe.badge} ${Qe.envBadge}`,children:o})]})]})}function im(n){const{value:s,onSave:i,validate:o,fieldId:c,activeFieldId:u,onActivate:f,enterToSave:m=!0,trimOnSave:h=!0}=n,[g,v]=y.useState(""),[b,_]=y.useState(""),S=y.useRef(!1),T=u===c,j=y.useCallback(V=>{v(V),_("")},[]),N=y.useCallback(()=>{_("")},[]),k=y.useCallback(()=>{S.current=!1,f==null||f(null),v(""),_("")},[f]),E=y.useCallback(()=>{const V=h?g.trim():g;if(o){const F=o(g);if(F){_(F);return}}const I=h?s.trim():s;if(V===I){k();return}i(V),k()},[g,s,h,o,i,k]),A=y.useCallback(()=>{S.current=!0,f==null||f(c),v(s),_("")},[c,s,f]),R=y.useCallback(V=>{if(S.current){S.current=!1;return}V.relatedTarget instanceof HTMLElement&&V.relatedTarget.dataset.editAction===c||E()},[c,E]),C=y.useCallback(V=>{V.key==="Escape"?k():V.key==="Enter"&&m&&E()},[k,m,E]),U=(()=>{if(!T)return!1;const V=h?s.trim():s;return(h?g.trim():g)!==V})();return y.useEffect(()=>{!T&&(g!==""||b!=="")&&(v(""),_(""))},[T,g,b]),{isEditing:T,draft:g,error:b,isDirty:U,startEdit:A,cancelEdit:k,save:E,setDraft:j,clearError:N,handleBlur:R,handleKeyDown:C,ignoreInitialBlurRef:S}}const X5="_editFieldWrapper_yuzty_1",Q5="_editInput_yuzty_10",e4="_editTextarea_yuzty_42",t4="_editSelect_yuzty_78",n4="_editError_yuzty_111",s4="_editInputInvalid_yuzty_118",a4="_editHint_yuzty_123",i4="_unsavedDot_yuzty_132",o4="_metaValueClickable_yuzty_140",r4="_editButton_yuzty_159",l4="_metaPlaceholder_yuzty_175",c4="_worktreeToggle_yuzty_180",We={editFieldWrapper:X5,editInput:Q5,editTextarea:e4,editSelect:t4,editError:n4,editInputInvalid:s4,editHint:a4,unsavedDot:i4,metaValueClickable:o4,editButton:r4,metaPlaceholder:l4,worktreeToggle:c4};function Ft(n){const{value:s,onSave:i,validate:o,mode:c="edit",fieldId:u="text",activeFieldId:f,onActivate:m,onChange:h,renderDisplay:g,placeholder:v,maxLength:b,ariaLabel:_,"data-testid":S}=n,T=y.useRef(null),j=im({value:s,onSave:i,validate:o,fieldId:u,activeFieldId:f,onActivate:m,enterToSave:!0,trimOnSave:!0});if(y.useEffect(()=>{if(j.isEditing){const k=window.setTimeout(()=>{var E;(E=T.current)==null||E.focus()},0);return()=>window.clearTimeout(k)}},[j.isEditing]),c==="create"){const k=A=>{h==null||h(A.target.value)},E=o==null?void 0:o(s);return l.jsxs("div",{className:We.editFieldWrapper,children:[l.jsx("input",{className:`${We.editInput} ${E?We.editInputInvalid:""}`,value:s,onChange:k,maxLength:b,placeholder:v,"aria-label":_,"data-testid":S?`${S}-input`:void 0}),E&&l.jsx("span",{className:We.editError,"data-testid":"edit-error",children:E})]})}if(j.isEditing)return l.jsxs("div",{className:We.editFieldWrapper,children:[l.jsx("input",{ref:T,className:`${We.editInput} ${j.error?We.editInputInvalid:""}`,value:j.draft,onChange:k=>j.setDraft(k.target.value),onBlur:j.handleBlur,onKeyDown:j.handleKeyDown,maxLength:b,placeholder:v,"aria-label":_,"data-testid":S?`${S}-input`:void 0}),j.isDirty&&l.jsx("span",{className:We.unsavedDot,title:"Unsaved changes"}),j.error&&l.jsx("span",{className:We.editError,"data-testid":"edit-error",children:j.error}),l.jsx("span",{className:We.editHint,children:"Enter to save · Esc to cancel"})]});const N=g==null?void 0:g(s);return l.jsxs("span",{role:"button",tabIndex:0,className:We.metaValueClickable,onClick:()=>j.startEdit(),onKeyDown:k=>{(k.key==="Enter"||k.key===" ")&&(k.preventDefault(),j.startEdit())},title:"Click to edit","aria-label":_,"data-testid":S?`${S}-button`:void 0,children:[N!==void 0?N:s?l.jsx("span",{children:s}):l.jsx("span",{className:We.metaPlaceholder,children:v||"None"}),l.jsx("span",{className:We.editButton,"aria-hidden":"true",children:"✏️"})]})}function rp(n){const{value:s,onSave:i,validate:o,mode:c="edit",fieldId:u="textarea",activeFieldId:f,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:f,onActivate:m,enterToSave:!1,trimOnSave:!1});if(y.useEffect(()=>{if(T.isEditing){const N=window.setTimeout(()=>{var k;(k=S.current)==null||k.focus()},0);return()=>window.clearTimeout(N)}},[T.isEditing]),c==="create"){const N=E=>{h==null||h(E.target.value)},k=o==null?void 0:o(s);return l.jsxs("div",{className:We.editFieldWrapper,children:[l.jsx("textarea",{className:`${We.editTextarea} ${k?We.editInputInvalid:""}`,value:s,onChange:N,placeholder:v,"aria-label":b,"data-testid":_?`${_}-input`:void 0}),k&&l.jsx("span",{className:We.editError,"data-testid":"edit-error",children:k})]})}if(T.isEditing)return l.jsxs("div",{className:We.editFieldWrapper,children:[l.jsx("textarea",{ref:S,className:`${We.editTextarea} ${T.error?We.editInputInvalid:""}`,value:T.draft,onChange:N=>T.setDraft(N.target.value),onBlur:T.handleBlur,onKeyDown:T.handleKeyDown,title:b,"aria-label":b,"data-testid":_?`${_}-input`:void 0}),T.isDirty&&l.jsx("span",{className:We.unsavedDot,title:"Unsaved changes"}),T.error&&l.jsx("span",{className:We.editError,"data-testid":"edit-error",children:T.error}),l.jsx("span",{className:We.editHint,children:"Tab to save · Esc to cancel"})]});const j=g==null?void 0:g(s);return l.jsxs("span",{role:"button",tabIndex:0,className:We.metaValueClickable,onClick:()=>T.startEdit(),onKeyDown:N=>{(N.key==="Enter"||N.key===" ")&&(N.preventDefault(),T.startEdit())},title:"Click to edit","aria-label":b,"data-testid":_?`${_}-button`:void 0,children:[j!==void 0?j:s?l.jsx("span",{children:s}):l.jsx("span",{className:We.metaPlaceholder,children:v||"None"}),l.jsx("span",{className:We.editButton,"aria-hidden":"true",children:"✏️"})]})}function Cc(n){var A;const{value:s,onSave:i,mode:o="edit",options:c,fieldId:u="select",activeFieldId:f,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:f,onActivate:m,enterToSave:!1,trimOnSave:!1});y.useEffect(()=>{if(T.isEditing){const R=window.setTimeout(()=>{var C;(C=S.current)==null||C.focus()},0);return()=>window.clearTimeout(R)}},[T.isEditing]);const j=y.useCallback(R=>{const C=R.target.value;T.ignoreInitialBlurRef.current=!1,C!==s&&i(C),T.cancelEdit()},[s,i,T]),N=y.useCallback(R=>{if(T.ignoreInitialBlurRef.current){T.ignoreInitialBlurRef.current=!1;return}R.relatedTarget instanceof HTMLElement&&R.relatedTarget.dataset.editAction===u||T.cancelEdit()},[u,T]);if(o==="create")return l.jsx("select",{className:We.editSelect,value:s,onChange:R=>h==null?void 0:h(R.target.value),"aria-label":b,"data-testid":_?`${_}-select`:void 0,children:c.map(R=>l.jsx("option",{value:R.value,children:R.label},R.value))});if(T.isEditing)return l.jsx("select",{ref:S,className:We.editSelect,value:T.draft,onChange:j,onBlur:N,title:b,"aria-label":b,"data-testid":_?`${_}-select`:void 0,children:c.map(R=>l.jsx("option",{value:R.value,children:R.label},R.value))});const k=g==null?void 0:g(s),E=(A=c.find(R=>R.value===s))==null?void 0:A.label;return l.jsxs("button",{type:"button",className:We.metaValueClickable,onClick:()=>T.startEdit(),title:"Click to change","aria-label":b,"data-testid":_?`${_}-button`:void 0,children:[k!==void 0?k:E?l.jsx("span",{children:E}):l.jsx("span",{className:We.metaPlaceholder,children:v||"None"}),l.jsx("span",{className:We.editButton,"aria-hidden":"true",children:"✏️"})]})}function u4(n){const{checked:s,onChange:i,label:o,ariaLabel:c,"data-testid":u}=n;return l.jsxs("label",{className:We.worktreeToggle,"data-testid":u,children:[l.jsx("input",{type:"checkbox",checked:s,onChange:f=>i(f.target.checked),"aria-label":c}),l.jsx("span",{children:o})]})}const d4="_envRow_1e1r5_1",f4="_envDot_1e1r5_7",p4="_envDotGreen_1e1r5_14",m4="_envDotYellow_1e1r5_18",h4="_envDotRed_1e1r5_22",g4="_envDotGray_1e1r5_26",Yi={envRow:d4,envDot:f4,envDotGreen:p4,envDotYellow:m4,envDotRed:h4,envDotGray:g4};function v4(n){const s=n.toLowerCase();return s==="ready"||s==="running"||s==="available"||s==="connected"?Yi.envDotGreen:s==="provisioning"||s==="starting"||s==="pending"||s==="connecting"?Yi.envDotYellow:s==="error"||s==="failed"||s==="disconnected"?Yi.envDotRed:Yi.envDotGray}function y4(n){const{value:s,onSave:i,environments:o,allowNone:c=!1,fieldId:u="environment",activeFieldId:f,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:Yi.envRow,children:[l.jsx("span",{className:`${Yi.envDot} ${v4(b.status)}`}),b.displayName]})};return l.jsx(Cc,{value:s,onSave:i,options:_,fieldId:u,activeFieldId:f,onActivate:m,renderDisplay:S,placeholder:h,ariaLabel:g,"data-testid":v})}function Yy(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 f=Math.floor(u/24);return f<30?`${f}d ago`:s.toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"})}const Df=100;function b4(n){try{const s=new URL(n);return s.protocol!=="http:"&&s.protocol!=="https:"?void 0:s.toString()}catch{return}}function _4(){const{workspaceId:n,environmentId:s}=va(),i=xt(),{tasks:o,environments:c,workspaces:u,personas:f,sessions:m,archiveWorkspace:h,updateWorkspace:g,usageCache:v,loadUsage:b}=pt(),[_,S]=y.useState("tasks"),[T,j]=y.useState(!1),[N,k]=y.useState(null),[E,A]=y.useState(!1),R=y.useRef(void 0),C=u.find(Z=>Z.id===n),U=s??(C==null?void 0:C.environmentId)??"",V=YI(n,U,u,c);Ms({key:"1"},()=>S("graph")),Ms({key:"2"},()=>S("board")),Ms({key:"3"},()=>S("tasks")),y.useEffect(()=>{const Z=R.current;R.current=n,!(Z===void 0||Z===n)&&N!==null&&k(null)},[n,N]);const I=m.reduce((Z,oe)=>Z+(oe.costUsd??0),0);y.useEffect(()=>{n&&b("workspace",n)},[n,b,I]);const F=n?v[`workspace:${n}`]:void 0,ee=o.filter(Z=>Z.workspaceId===n),re=ee.filter(Z=>Z.status==="complete").length,se=ee.length,ue=se>0?Math.round(re/se*100):0;return l.jsxs("div",{className:B.panelContainer,children:[l.jsx(ba,{segments:V}),l.jsxs("div",{className:B.workspaceHeader,children:[l.jsx("span",{className:B.workspaceName,"data-testid":"workspace-name",children:l.jsx(Ft,{value:(C==null?void 0:C.name)||"",onSave:Z=>{C&&g(C.id,{name:Z})},validate:Z=>{const oe=Z.trim();if(!oe)return"Name is required";if(oe.length>Df)return`Max ${Df} characters`},maxLength:Df,fieldId:"name",activeFieldId:N,onActivate:k,ariaLabel:"Workspace name",renderDisplay:Z=>Z||n||void 0,"data-testid":"edit-name"})}),l.jsx("button",{className:B.archiveButton,onClick:()=>j(!0),title:"Archive workspace","data-testid":"archive-workspace-button",children:"Archive"})]}),l.jsxs("button",{className:B.metaToggle,onClick:()=>A(!E),"aria-expanded":!E,"aria-controls":"workspace-meta-panel","data-testid":"meta-toggle",children:[l.jsx("span",{className:`${B.metaToggleArrow} ${E?"":B.metaToggleArrowOpen}`,children:"▶"}),"Details"]}),!E&&l.jsxs("div",{className:B.workspaceMeta,"data-testid":"workspace-meta",id:"workspace-meta-panel",children:[l.jsxs("div",{className:B.metaRow,children:[l.jsx("span",{className:B.metaLabel,children:"Description"}),l.jsx("div",{className:B.metaValue,children:l.jsx(rp,{value:(C==null?void 0:C.description)||"",onSave:Z=>{C&&g(C.id,{description:Z})},fieldId:"description",activeFieldId:N,onActivate:k,renderDisplay:Z=>Z?l.jsx("span",{className:B.overviewMarkdown,children:l.jsx(lp,{remarkPlugins:[cp],children:Z})}):void 0,placeholder:"No description",ariaLabel:"Workspace description","data-testid":"edit-description"})})]}),l.jsxs("div",{className:B.metaRow,children:[l.jsx("span",{className:B.metaLabel,children:"Repository"}),l.jsx("div",{className:B.metaValue,children:l.jsx(Ft,{value:(C==null?void 0:C.repoUrl)||"",onSave:Z=>{C&&g(C.id,{repoUrl:Z})},validate:Z=>{const oe=Z.trim();if(oe&&!/^https?:\/\/.+/.test(oe))return"Must be a valid http(s) URL"},fieldId:"repoUrl",activeFieldId:N,onActivate:k,renderDisplay:Z=>{const oe=b4(Z);return oe?l.jsx("a",{className:B.repoLink,href:oe,target:"_blank",rel:"noopener noreferrer",onClick:O=>O.stopPropagation(),children:Z}):Z?l.jsx("span",{children:Z}):void 0},placeholder:"No repository",ariaLabel:"Workspace repository URL","data-testid":"edit-repo"})})]}),l.jsxs("div",{className:B.metaRow,children:[l.jsx("span",{className:B.metaLabel,children:"Environment"}),l.jsx("div",{className:B.metaValue,children:l.jsx(y4,{value:(C==null?void 0:C.environmentId)||"",onSave:Z=>{C&&Z&&g(C.id,{environmentId:Z})},environments:c,fieldId:"environmentId",activeFieldId:N,onActivate:k,placeholder:"Select environment",ariaLabel:"Workspace environment","data-testid":"edit-env"})})]}),l.jsxs("div",{className:B.metaRow,children:[l.jsx("span",{className:B.metaLabel,children:"Persona"}),l.jsx("div",{className:B.metaValue,children:l.jsx(Cc,{value:(C==null?void 0:C.defaultPersonaId)||"",onSave:Z=>{C&&g(C.id,{defaultPersonaId:Z})},options:[{value:"",label:"(Inherit)"},...f.map(Z=>({value:Z.id,label:Z.name}))],fieldId:"defaultPersonaId",activeFieldId:N,onActivate:k,renderDisplay:Z=>{const oe=f.find(O=>O.id===Z);if(oe)return l.jsx("span",{children:oe.name})},placeholder:(C==null?void 0:C.defaultPersonaId)||"(Inherit)",ariaLabel:"Workspace default persona","data-testid":"edit-persona"})})]}),l.jsxs("div",{className:B.metaRow,children:[l.jsx("span",{className:B.metaLabel,children:"Worktrees"}),l.jsx("div",{className:B.metaValue,children:l.jsx(u4,{checked:(C==null?void 0:C.useWorktrees)??!0,onChange:Z=>{C&&g(C.id,{useWorktrees:Z})},label:"Enable worktree isolation","data-testid":"worktree-toggle"})})]}),l.jsxs("div",{className:B.metaRow,children:[l.jsx("span",{className:B.metaLabel,children:"Working Dir"}),l.jsx("div",{className:B.metaValue,children:l.jsx(Ft,{value:(C==null?void 0:C.workingDirectory)||"",onSave:Z=>{C&&g(C.id,{workingDirectory:Z})},fieldId:"workingDirectory",activeFieldId:N,onActivate:k,placeholder:"Default (server default)",ariaLabel:"Working directory","data-testid":"edit-working-directory"})})]}),C&&l.jsxs("div",{className:B.metaTimestamps,children:[l.jsxs("span",{className:B.metaTimestamp,children:["Created ",Yy(C.createdAt)]}),C.updatedAt&&C.updatedAt!==C.createdAt&&l.jsxs("span",{className:B.metaTimestamp,children:["· Updated ",Yy(C.updatedAt)]})]})]}),se>0&&l.jsxs("div",{className:B.progressBarContainer,"data-testid":"progress-bar",children:[l.jsx("div",{className:B.progressBar,children:l.jsx("div",{className:B.progressFill,style:{width:`${ue}%`}})}),l.jsxs("span",{className:B.progressLabel,children:[re,"/",se]})]}),F&&F.costUsd>0&&l.jsx("div",{className:B.progressBarContainer,children:l.jsxs("span",{className:B.progressLabel,children:["Usage: ",so(F.costUsd)," (",F.sessionCount," session",F.sessionCount!==1?"s":"",")"]})}),l.jsxs("div",{className:B.tabBar,role:"tablist","aria-label":"Workspace view",children:[l.jsx("button",{role:"tab","aria-selected":_==="graph",className:`${B.tab} ${_==="graph"?B.active:""}`,onClick:()=>S("graph"),children:"Graph"}),l.jsx("button",{role:"tab","aria-selected":_==="board",className:`${B.tab} ${_==="board"?B.active:""}`,onClick:()=>S("board"),"data-testid":"board-tab",children:"Board"}),l.jsx("button",{role:"tab","aria-selected":_==="tasks",className:`${B.tab} ${_==="tasks"?B.active:""}`,onClick:()=>S("tasks"),children:"Tasks"})]}),_==="tasks"&&se>0&&l.jsxs("div",{className:B.workspaceSummary,children:[l.jsx("span",{className:B.workspaceSummaryTitle,children:`${re}/${se} tasks complete`}),l.jsx("span",{className:B.workspaceSummarySubtitle,children:"Select a task or click + to create one"})]}),_==="tasks"&&se===0&&l.jsxs("div",{className:B.emptyCta,children:[l.jsx("button",{className:B.ctaButton,onClick:()=>i(ti(n,void 0,U)),children:"Create Task"}),l.jsx("div",{className:B.ctaDescription,children:"Break your work into tasks and let agents tackle them"})]}),_==="board"&&l.jsx(J5,{workspaceId:n,environmentId:U,tasks:o,sessions:m,personas:f,environments:c}),_==="graph"&&l.jsx(k5,{workspaceId:n,environmentId:U,tasks:o}),l.jsx(Wa,{isOpen:T,title:"Archive Workspace?",description:"This will hide the workspace from the sidebar. Tasks will not be deleted.",confirmLabel:"Archive",onConfirm:()=>{C&&(h(C.id),i("/",{replace:!0})),j(!1)},onCancel:()=>j(!1)})]})}const x4="_formContent_ymnez_1",S4="_section_ymnez_13",T4="_label_ymnez_19",k4="_titleInput_ymnez_26",w4="_descriptionTextarea_ymnez_58",N4="_selectField_ymnez_94",j4="_checkboxRow_ymnez_128",C4="_checkboxLabel_ymnez_141",E4="_fieldError_ymnez_146",ut={formContent:x4,section:S4,label:T4,titleInput:k4,descriptionTextarea:w4,selectField:N4,checkboxRow:j4,checkboxLabel:C4,fieldError:E4};function A4(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 D4=100;function R4({values:n,onChange:s,environments:i,personas:o,errors:c,disabled:u,autoFocusName:f}){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:D4,autoFocus:f,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 M4="_container_cddyd_1",O4="_header_cddyd_8",I4="_headerTitle_cddyd_35",L4="_badge_cddyd_44",B4="_headerActions_cddyd_54",U4="_body_cddyd_61",z4="_formContent_cddyd_73",P4="_section_cddyd_85",V4="_label_cddyd_91",H4="_titleInput_cddyd_98",q4="_descriptionTextarea_cddyd_131",G4="_parentContext_cddyd_167",$4="_parentLabel_cddyd_175",Z4="_parentName_cddyd_182",F4="_personaSelect_cddyd_186",K4="_depList_cddyd_220",Y4="_depItem_cddyd_226",J4="_depItemSelected_cddyd_248",W4="_noDeps_cddyd_252",X4="_btnPrimary_cddyd_258",Q4="_btnGhost_cddyd_289",Le={container:M4,header:O4,headerTitle:I4,badge:L4,headerActions:B4,body:U4,formContent:z4,section:P4,label:V4,titleInput:H4,descriptionTextarea:q4,parentContext:G4,parentLabel:$4,parentName:Z4,personaSelect:F4,depList:K4,depItem:Y4,depItemSelected:J4,noDeps:W4,btnPrimary:X4,btnGhost:Q4};function eL(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 tL=[{label:"Home",url:Ja},{label:"New Workspace",url:void 0}];function nL(){const[n]=yp(),s=n.get("environment")??void 0,{environments:i,personas:o,createWorkspace:c,workspaceCreating:u}=pt(),{showToast:f}=Ls(),m=xt(),[h,g]=y.useState(()=>{var N;return A4(void 0,s||((N=i[0])==null?void 0:N.id))}),[v,b]=y.useState(),[_,S]=y.useState();y.useEffect(()=>{s||h.environmentId||i.length===0||g(N=>{var k;return N.environmentId?N:{...N,environmentId:((k=i[0])==null?void 0:k.id)??""}})},[i,s,h.environmentId]);const T=()=>{const N=eL(h);if(N){b(N),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,()=>{f("Workspace created","success"),m(Ja,{replace:!0})},k=>{S(k)})},j=()=>{m(s?Qi(s):Ja,{replace:!0})};return l.jsxs("div",{className:Le.container,children:[l.jsxs("div",{className:Le.header,children:[l.jsx("div",{className:Le.headerTitle,children:l.jsx(ba,{segments:tL})}),l.jsxs("div",{className:Le.headerActions,children:[l.jsx("button",{className:Le.btnGhost,onClick:j,disabled:u,"data-testid":"workspace-create-cancel",children:"Cancel"}),l.jsx("button",{className:Le.btnPrimary,onClick:T,disabled:u||!h.name.trim()||!h.environmentId,"data-testid":"workspace-create-save",children:u?l.jsx(jx,{size:"sm",label:"Creating"}):"Create Workspace"})]})]}),l.jsxs("div",{className:Le.body,children:[l.jsx(R4,{values:h,onChange:N=>{g(N),b(void 0),S(void 0)},environments:i,personas:o,errors:v,disabled:u,autoFocusName:!0}),_&&l.jsx("div",{className:Le.error,"data-testid":"workspace-create-submit-error",children:_})]})]})}function Mx({mode:n,taskId:s,workspaceId:i,parentTaskId:o,environmentId:c,tasks:u,workspaces:f,personas:m,onCreateTask:h,onUpdateTask:g,onEditDone:v}){const{showToast:b}=Ls(),_=xt(),S=n==="edit",T=S&&s?u.find(me=>me.id===s):void 0,j=S?(T==null?void 0:T.workspaceId)??"":i??"",[N,k]=y.useState(j),E=j||N,A=f.find(me=>me.id===E),R=c??(A==null?void 0:A.environmentId),C=!S&&!i,U=S?(T==null?void 0:T.parentTaskId)??"":o??"",V=U?u.find(me=>me.id===U):void 0,[I,F]=y.useState((T==null?void 0:T.title)??""),[ee,re]=y.useState((T==null?void 0:T.description)??""),[se,ue]=y.useState((T==null?void 0:T.dependsOn)??[]),[Z,oe]=y.useState((T==null?void 0:T.defaultPersonaId)??""),[O,G]=y.useState((T==null?void 0:T.canDecompose)??!1),[X,fe]=y.useState(!1),he=y.useRef(!1);y.useEffect(()=>{S&&T&&!he.current&&(he.current=!0,F(T.title),re(T.description),ue(T.dependsOn),oe(T.defaultPersonaId),G(T.canDecompose))},[S,T]);const ze=u.filter(me=>me.workspaceId===E&&(!S||me.id!==s)&&me.id!==U),je=I.trim().length>0&&(!S||T!==void 0)&&E.length>0,we=me=>{ue(Re=>Re.includes(me)?Re.filter(Lt=>Lt!==me):[...Re,me])},Ae=()=>{!je||X||S&&T===void 0||(S&&s?(g(s,I.trim(),ee,se,Z),b("Task updated","success"),v?v():_(os(s,void 0,E,R),{replace:!0})):(fe(!0),h(E,I.trim(),ee,se.length>0?se:void 0,U||void 0,Z,O,()=>{b("Task created","success"),_(i?Wi(i,R):"/tasks",{replace:!0})},me=>{b(me,"error"),fe(!1)})))},ce=()=>{if(v){v();return}_(S&&s?os(s,void 0,E,R):i?Wi(i,R):"/tasks")},pe=S?"edit task":U?"child task":"new task";return l.jsxs("div",{className:Le.container,children:[l.jsxs("div",{className:Le.header,children:[l.jsxs("div",{className:Le.headerTitle,children:[l.jsx("span",{className:Le.badge,children:pe}),V&&l.jsxs("span",{className:Le.parentContext,children:[l.jsx("span",{className:Le.parentLabel,children:"Child of"}),l.jsx("span",{className:Le.parentName,children:V.title})]})]}),l.jsxs("div",{className:Le.headerActions,children:[l.jsx("button",{onClick:Ae,disabled:!je||X,className:Le.btnPrimary,"data-testid":"task-edit-save",children:X?"Creating…":S?"Save Changes":"Create"}),l.jsx("button",{onClick:ce,className:Le.btnGhost,children:"Cancel"})]})]}),l.jsx("div",{className:Le.body,children:l.jsxs("div",{className:Le.formContent,children:[C&&l.jsxs("div",{className:Le.section,children:[l.jsx("label",{className:Le.label,htmlFor:"task-edit-workspace",children:"Workspace"}),l.jsxs("select",{id:"task-edit-workspace",value:N,onChange:me=>k(me.target.value),className:Le.personaSelect,"data-testid":"task-edit-workspace",children:[l.jsx("option",{value:"",children:"Select a workspace..."}),f.map(me=>l.jsx("option",{value:me.id,children:me.name},me.id))]})]}),l.jsxs("div",{className:Le.section,children:[l.jsx("label",{className:Le.label,htmlFor:"task-edit-title",children:"Title"}),l.jsx("input",{id:"task-edit-title",type:"text",value:I,onChange:me=>F(me.target.value),placeholder:"Task title...",autoFocus:!0,className:Le.titleInput,"data-testid":"task-edit-title",onKeyDown:me=>{me.key==="Enter"&&je&&Ae()}})]}),l.jsxs("div",{className:Le.section,children:[l.jsx("label",{className:Le.label,htmlFor:"task-edit-description",children:"Description"}),l.jsx("textarea",{id:"task-edit-description",value:ee,onChange:me=>re(me.target.value),placeholder:"Describe the task... (markdown supported)",className:Le.descriptionTextarea,"data-testid":"task-edit-description",rows:8})]}),l.jsxs("div",{className:Le.section,children:[l.jsx("label",{className:Le.label,htmlFor:"task-edit-persona",children:"Default Persona"}),l.jsxs("select",{id:"task-edit-persona",value:Z,onChange:me=>oe(me.target.value),className:Le.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:Le.section,children:l.jsxs("label",{className:Le.depItem,"data-testid":"task-edit-can-decompose",children:[l.jsx("input",{type:"checkbox",checked:O,onChange:me=>G(me.target.checked)}),"Can spawn subtasks"]})}),l.jsxs("div",{className:Le.section,children:[l.jsx("div",{className:Le.label,children:"Dependencies"}),ze.length===0?l.jsx("div",{className:Le.noDeps,children:"No other tasks in this workspace"}):l.jsx("div",{className:Le.depList,children:ze.map(me=>{const Re=se.includes(me.id);return l.jsxs("label",{className:`${Le.depItem} ${Re?Le.depItemSelected:""}`,"data-testid":`dep-option-${me.id}`,children:[l.jsx("input",{type:"checkbox",checked:Re,onChange:()=>we(me.id)}),me.title,l.jsxs("span",{style:{opacity:.5,fontSize:"11px",marginLeft:"4px"},children:["(",me.status,")"]})]},me.id)})})]})]})})]})}function Jy(){const{workspaceId:n,environmentId:s}=va(),[i]=yp(),o=n??i.get("workspace")??"",c=i.get("parent")??void 0,{tasks:u,workspaces:f,personas:m,createTask:h,updateTask:g}=pt();return l.jsx(Mx,{mode:"new",workspaceId:o,parentTaskId:c,environmentId:s,tasks:u,workspaces:f,personas:m,onCreateTask:h,onUpdateTask:g})}const sL="_container_1pqxm_1",aL="_emptyState_1pqxm_8",iL="_card_1pqxm_14",oL="_cardHeader_1pqxm_34",rL="_categoryBadge_1pqxm_46",lL="_findingTitle_1pqxm_54",cL="_findingDate_1pqxm_60",uL="_findingContent_1pqxm_72",dL="_tags_1pqxm_78",fL="_tag_1pqxm_78",ts={container:sL,emptyState:aL,card:iL,cardHeader:oL,categoryBadge:rL,findingTitle:lL,findingDate:cL,findingContent:uL,tags:dL,tag:fL};function pL(n){const s=new Date(n),i=new Date,o=i.getTime()-s.getTime(),c=Math.floor(o/1e3),u=Math.floor(c/60),f=Math.floor(u/60),m=Math.floor(f/24);if(c<60)return"just now";if(u<60)return`${u}m ago`;if(f<24)return`${f}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 Wy={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 mL({findings:n}){return n.length===0?l.jsx("div",{className:ts.emptyState,children:"No findings yet. Agents will post discoveries here."}):l.jsx("div",{className:ts.container,children:n.map((s,i)=>{const o=Wy[s.category]||Wy.general;return l.jsxs(Dt.div,{className:ts.card,initial:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{delay:i*.05,duration:.2},children:[l.jsxs("div",{className:ts.cardHeader,children:[l.jsx("span",{className:ts.categoryBadge,style:{background:o.bg,color:o.text},children:s.category}),l.jsx("span",{className:ts.findingTitle,children:s.title}),l.jsx("span",{className:ts.findingDate,title:s.createdAt,children:pL(s.createdAt)})]}),l.jsx("div",{className:ts.findingContent,children:s.content.length>300?s.content.slice(0,300)+"...":s.content}),s.tags.length>0&&l.jsx("div",{className:ts.tags,children:s.tags.map(c=>l.jsx("span",{className:ts.tag,style:{color:o.text,textShadow:`0 0 8px ${o.text}`},children:c},c))})]},s.id)})})}const hL="_workpadSection_y8nj9_1",gL="_workpadLabel_y8nj9_9",vL="_workpadStatus_y8nj9_17",yL="_workpadSummary_y8nj9_23",bL="_workpadExtra_y8nj9_29",da={workpadSection:hL,workpadLabel:gL,workpadStatus:vL,workpadSummary:yL,workpadExtra:bL};function _L({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)})]})}function cc(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 Rf(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),f=o%60;return u===0?`${o}m ${c}s`:`${u}h ${f}m`}function Xy(n){const s=n.toLowerCase();return s==="ready"||s==="running"||s==="available"||s==="connected"?B.envDotGreen:s==="provisioning"||s==="starting"||s==="pending"||s==="connecting"?B.envDotYellow:s==="error"||s==="failed"||s==="disconnected"?B.envDotRed:B.envDotGray}function xL({status:n}){const s=ga(n),i=nA(n);return l.jsx("span",{className:`${B.statusBadge} ${B[i]??B.statusPending}`,children:s.label})}function SL({task:n,tasksById:s,environments:i,workspaces:o,taskSessions:c,selectedEnvId:u}){const{loadUsage:f,usageCache:m}=pt(),h=c.reduce((A,R)=>A+(R.costUsd??0),0);y.useEffect(()=>{f("task",n.id),n.childTaskIds.length>0&&f("task_tree",n.id)},[n.id,n.childTaskIds.length,f,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)??"",j=T?i.find(A=>A.id===T):void 0,N=o.find(A=>A.id===n.workspaceId),k=i.find(A=>A.id===u),E=n.branch&&(N!=null&&N.repoUrl)?`${N.repoUrl.replace(/\/$/,"")}/tree/${encodeURIComponent(n.branch)}`:void 0;return l.jsxs("div",{className:B.overviewDashboard,children:[l.jsxs("div",{className:B.overviewHero,children:[l.jsx(xL,{status:n.status}),n.branch&&l.jsx("span",{className:B.overviewBranchPill,children:E?l.jsxs("a",{href:E,target:"_blank",rel:"noreferrer noopener",className:B.branchLink,children:["🔗"," ",n.branch]}):l.jsxs("span",{children:["🔗"," ",n.branch]})})]}),typeof n.description=="string"&&n.description&&l.jsxs("div",{className:B.overviewSection,children:[l.jsx("div",{className:B.overviewLabel,children:"Description"}),l.jsx("div",{className:B.overviewMarkdown,children:l.jsx(lp,{remarkPlugins:[cp],children:n.description})})]}),n.workpad&&l.jsx(_L,{workpad:n.workpad}),l.jsxs("div",{className:B.overviewSection,children:[l.jsx("div",{className:B.overviewLabel,children:"Environment"}),T&&j?l.jsxs("div",{className:B.envRow,"data-testid":"task-overview-environment",children:[l.jsx("span",{className:`${B.envDot} ${Xy(j.status)}`,title:j.status,"aria-label":`Status: ${j.status}`,role:"img"}),l.jsx("span",{className:B.overviewValue,children:j.displayName})]}):k?l.jsxs("div",{className:B.envRow,"data-testid":"task-overview-environment",children:[l.jsx("span",{className:`${B.envDot} ${Xy(k.status)}`,title:k.status,"aria-label":`Status: ${k.status}`,role:"img"}),l.jsx("span",{className:B.overviewValue,children:k.displayName}),l.jsx("span",{className:B.overviewMuted,children:"(workspace default)"})]}):l.jsx("div",{className:B.overviewMuted,children:"Set in workspace settings"})]}),l.jsxs("div",{className:B.overviewSection,"data-testid":"task-overview-dependencies",children:[l.jsx("div",{className:B.overviewLabel,children:"Dependencies"}),n.dependsOn.length===0?l.jsx("div",{className:B.overviewMuted,children:"None"}):l.jsx("div",{className:B.depList,children:n.dependsOn.map(A=>{const R=s.get(A),C=(R==null?void 0:R.status)==="complete";return l.jsxs("div",{className:`${B.depItem} ${C?B.depDone:B.depBlocked}`,children:[l.jsx("span",{children:C?"✓":"○"}),l.jsx("span",{children:(R==null?void 0:R.title)??A})]},A)})})]}),l.jsxs("div",{className:B.overviewSection,children:[l.jsx("div",{className:B.overviewLabel,children:"Timeline"}),l.jsxs("div",{className:B.timeline,children:[n.createdAt&&l.jsxs("div",{className:B.timelineRow,children:[l.jsx("span",{className:B.timelineKey,children:"Created"}),l.jsx("span",{className:B.timelineValue,children:cc(n.createdAt)})]}),n.assignedAt&&(()=>{const A=Rf(n.createdAt,n.assignedAt);return l.jsxs("div",{className:B.timelineRow,children:[l.jsx("span",{className:B.timelineKey,children:"Assigned"}),l.jsx("span",{className:B.timelineValue,children:cc(n.assignedAt)}),A!==void 0&&l.jsx("span",{className:B.timelineDelta,children:A})]})})(),n.startedAt&&(()=>{const A=Rf(n.assignedAt??n.createdAt,n.startedAt);return l.jsxs("div",{className:B.timelineRow,children:[l.jsx("span",{className:B.timelineKey,children:"Started"}),l.jsx("span",{className:B.timelineValue,children:cc(n.startedAt)}),A!==void 0&&l.jsx("span",{className:B.timelineDelta,children:A})]})})(),n.completedAt&&(()=>{const A=Rf(n.startedAt,n.completedAt);return l.jsxs("div",{className:B.timelineRow,children:[l.jsx("span",{className:B.timelineKey,children:"Completed"}),l.jsx("span",{className:B.timelineValue,children:cc(n.completedAt)}),A!==void 0&&l.jsx("span",{className:B.timelineDelta,children:A})]})})(),!n.createdAt&&!n.assignedAt&&!n.startedAt&&!n.completedAt&&l.jsx("div",{className:B.overviewMuted,children:"No timing data"})]})]}),v&&v.costUsd>0&&l.jsxs("div",{className:B.overviewSection,children:[l.jsx("div",{className:B.overviewLabel,children:"Usage"}),l.jsxs("div",{className:B.timeline,children:[l.jsxs("div",{className:B.timelineRow,children:[l.jsx("span",{className:B.timelineKey,children:"Cost"}),l.jsx("span",{className:B.timelineValue,children:so(v.costUsd)}),l.jsxs("span",{className:B.timelineDelta,children:[v.sessionCount," session",v.sessionCount!==1?"s":""]})]}),_&&_.costUsd>v.costUsd&&l.jsxs("div",{className:B.timelineRow,children:[l.jsx("span",{className:B.timelineKey,children:"Total (incl. subtasks)"}),l.jsx("span",{className:B.timelineValue,children:so(_.costUsd)}),l.jsxs("span",{className:B.timelineDelta,children:[_.sessionCount," session",_.sessionCount!==1?"s":""]})]})]})]}),n.reviewNotes&&l.jsxs("div",{className:B.overviewSection,children:[l.jsx("div",{className:B.overviewLabel,children:"Review Notes"}),l.jsx("div",{className:B.reviewNotes,children:n.reviewNotes})]})]})}function TL({task:n,sessionId:s,isBlocked:i,onStart:o,onResume:c,onStop:u,onPause:f,onDelete:m,onEdit:h}){if(n.status==="not_started")return i?l.jsxs("div",{className:B.headerActions,children:[l.jsx("button",{onClick:h,className:B.btnGhost,children:"Edit"}),l.jsx("button",{onClick:m,className:B.btnDanger,children:"Delete"})]}):l.jsxs("div",{className:B.headerActions,children:[l.jsx("button",{"data-testid":"task-header-start",onClick:o,className:B.btnPrimary,children:"Start"}),l.jsx("button",{onClick:h,className:B.btnGhost,children:"Edit"}),l.jsx("button",{onClick:m,className:B.btnDanger,children:"Delete"})]});if(n.status==="working")return l.jsxs("div",{className:B.headerActions,children:[l.jsx("button",{onClick:u,className:B.btnDanger,children:"Stop"}),l.jsx("button",{onClick:f,disabled:!s,className:B.btnGhost,children:"Pause"})]});if(n.status==="paused")return l.jsxs("div",{className:B.headerActions,children:[l.jsx("button",{onClick:u,className:B.btnPrimary,children:"Stop"}),l.jsx("button",{onClick:c,className:B.btnGhost,children:"Resume"}),l.jsx("button",{onClick:m,className:B.btnDanger,children:"Delete"})]});if(n.status==="complete")return l.jsx("div",{className:B.headerActions,children:l.jsx("button",{onClick:m,className:B.btnDanger,children:"Delete"})});if(n.status==="failed")return l.jsxs("div",{className:B.headerActions,children:[l.jsx("button",{onClick:o,className:B.btnPrimary,children:"Retry"}),l.jsx("button",{onClick:m,className:B.btnDanger,children:"Delete"})]})}function kL({taskSessions:n,selectedSessionId:s,onSelect:i}){if(!(n.length<2))return l.jsxs("div",{className:B.attemptSelector,"data-testid":"attempt-selector",children:[l.jsx("span",{className:B.attemptLabel,children:"Attempts:"}),n.map((o,c)=>{const u=o.id===s,f=o.status==="stopped"&&o.endReason==="completed"?"✓":o.status==="stopped"?"✗":o.status==="running"||o.status==="idle"?"●":"";return l.jsxs("button",{className:`${B.attemptButton} ${u?B.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,f&&l.jsx("span",{className:B.attemptStatus,children:f})]},o.id)})]})}function fa(){const{taskId:n,workspaceId:s,environmentId:i}=va(),o=It(),c=xt(),{events:u,eventsDropped:f,tasks:m,sessions:h,environments:g,findings:v,loadSessionEvents:b,loadFindings:_,kill:S,startTask:T,stopTask:j,resumeTask:N,deleteTask:k,createTask:E,updateTask:A,workspaces:R,taskSessions:C,loadTaskSessions:U,sendInput:V,spawn:I,personas:F,provisionEnvironment:ee}=pt(),re=y.useRef(void 0),se=y.useRef(void 0),ue=y.useRef(void 0),Z=y.useRef(void 0),oe=y.useRef(void 0),O=o.pathname.endsWith("/stream")?"stream":o.pathname.endsWith("/findings")?"findings":"overview",G=o.pathname.endsWith("/edit"),[X,fe]=y.useState(O),[he,ze]=y.useState(!1),[je,we]=y.useState(void 0),[Ae,ce]=y.useState(""),[pe,me]=y.useState(G),Re=y.useRef(O),Lt=y.useRef(G),Q=m.find(Me=>Me.id===n),W=(Q==null?void 0:Q.workspaceId)||void 0,Te=R.find(Me=>Me.id===W);y.useEffect(()=>{O!==Re.current&&(Re.current=O,O!==X&&fe(O))},[O,X]),y.useEffect(()=>{G!==Lt.current&&(Lt.current=G,G!==pe&&me(G))},[G,pe]),y.useEffect(()=>{if(Ae===""){if(Te!=null&&Te.environmentId)ce(Te.environmentId);else if(g.length>0){const Me=g.find(Rt=>Rt.status==="connected");ce((Me==null?void 0:Me.id)??g[0].id)}}},[Ae,Te==null?void 0:Te.environmentId,g]);const un=Q?C[Q.id]??[]:[];let Fe;je&&un.some(Me=>Me.id===je)?Fe=je:Fe=(Q==null?void 0:Q.latestSessionId)||void 0;const Kn=()=>{ze(!0)},Yn=()=>{if(!Q)return;k(Q.id),ze(!1);const Me=i??(Te==null?void 0:Te.environmentId);c(Q.workspaceId&&Me?Wi(Q.workspaceId,Me):"/",{replace:!0})};y.useEffect(()=>{(Q==null?void 0:Q.id)!==se.current&&(se.current=Q==null?void 0:Q.id,we(void 0),ce(""),me(G))},[Q==null?void 0:Q.id,G]),y.useEffect(()=>{if(!(Q!=null&&Q.id))return;const Me=Q.id!==Z.current,Rt=Q.latestSessionId!==oe.current;(Me||Rt)&&(Z.current=Q.id,oe.current=Q.latestSessionId,U(Q.id))},[Q==null?void 0:Q.id,Q==null?void 0:Q.latestSessionId,U]),y.useEffect(()=>{if((Q==null?void 0:Q.status)!==ue.current){const Me=ue.current===void 0;ue.current=Q==null?void 0:Q.status;const Rt=(Q==null?void 0:Q.status)==="not_started"?"overview":(Q==null?void 0:Q.status)==="working"||(Q==null?void 0:Q.status)==="paused"?"stream":(Q==null?void 0:Q.status)==="complete"?"findings":void 0;Rt&&Rt!==X&&!(Me&&O!=="overview")&&fe(Rt)}},[Q==null?void 0:Q.status,X,O]);const zn=y.useMemo(()=>new Map(m.map(Me=>[Me.id,Me])),[m]),Jn=y.useMemo(()=>{const Me=Fe?u.filter(Rt=>Rt.sessionId===Fe):[];return am(sm(Me))},[u,Fe]),Tn=Q?Q.dependsOn.some(Me=>{const Rt=zn.get(Me);return Rt!==void 0&&Rt.status!=="complete"}):!1,Bs=y.useMemo(()=>JI(n,i,R,g,zn),[n,i,R,g,zn]);y.useEffect(()=>{Fe&&Fe!==re.current&&(re.current=Fe,b(Fe))},[Fe,b]),y.useEffect(()=>{X==="findings"&&W&&_(W)},[X,W,_]);const dn=Me=>{fe(Me),c(os(n,Me==="overview"?void 0:Me,s,i))};return Ms({key:"1"},()=>dn("overview")),Ms({key:"2"},()=>dn("stream")),Ms({key:"3"},()=>dn("findings")),l.jsxs("div",{className:B.panelContainer,children:[l.jsx(ba,{segments:Bs}),l.jsxs("div",{className:B.header,children:[l.jsxs("span",{className:B.headerTitle,children:[l.jsx("span",{"data-testid":"task-title",children:(Q==null?void 0:Q.title)||n}),Q&&l.jsx("span",{className:B.taskStatusBadge,"data-testid":"task-status",children:Q.status}),(Q==null?void 0:Q.branch)&&l.jsx("span",{className:B.taskBranch,children:Q.branch}),Tn&&l.jsx("span",{className:B.taskBlockedBadge,children:"blocked"})]}),Q&&l.jsx(TL,{task:Q,sessionId:Fe,isBlocked:Tn,onStart:()=>T(Q.id,void 0,Ae),onResume:()=>N(Q.id),onStop:()=>j(Q.id),onPause:()=>Fe&&S(Fe),onDelete:Kn,onEdit:()=>me(!0)})]}),l.jsxs("div",{className:B.tabBar,role:"tablist","aria-label":"Task view",children:[l.jsx("button",{role:"tab","aria-selected":X==="overview",className:`${B.tab} ${X==="overview"?B.active:""}`,onClick:()=>dn("overview"),children:"Overview"}),l.jsx("button",{role:"tab","aria-selected":X==="stream",className:`${B.tab} ${X==="stream"?B.active:""}`,onClick:()=>dn("stream"),children:"Stream"}),l.jsx("button",{role:"tab","aria-selected":X==="findings",className:`${B.tab} ${X==="findings"?B.active:""}`,onClick:()=>dn("findings"),children:"Findings"})]}),l.jsxs(rs,{mode:"wait",children:[X==="overview"&&l.jsx(Dt.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.15},className:B.overviewContent,"data-testid":"task-overview",children:pe&&Q?l.jsx(Mx,{mode:"edit",taskId:Q.id,workspaceId:W,environmentId:i,tasks:m,workspaces:R,personas:F,onCreateTask:E,onUpdateTask:A,onEditDone:()=>{G?c(os(Q.id,void 0,s,i),{replace:!0}):me(!1)}}):Q?l.jsx(SL,{task:Q,tasksById:zn,environments:g,workspaces:R,taskSessions:un,selectedEnvId:Ae}):l.jsx("div",{className:B.waitingMessage,children:"No additional details"})},"overview"),X==="stream"&&l.jsxs(Dt.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(kL,{taskSessions:un,selectedSessionId:Fe,onSelect:Me=>we(Me)}),l.jsx(nm,{events:Jn,eventsDropped:f,emptyState:!Fe&&Q?Tn?l.jsx("div",{className:B.emptyCta,"data-testid":"stream-blocked-message",children:l.jsx("div",{className:B.ctaDescription,children:"This task is blocked by incomplete dependencies"})}):l.jsxs("div",{className:B.emptyCta,children:[l.jsx("button",{"data-testid":"stream-start-cta",className:B.ctaButton,onClick:()=>T(Q.id,void 0,Ae),children:"Start Task"}),l.jsx("div",{className:B.ctaDescription,children:"Click to begin agent execution"})]}):Fe&&Jn.length===0?l.jsx("div",{className:B.waitingMessage,children:"Waiting for events..."}):void 0})]},"stream"),X==="findings"&&l.jsx(Dt.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.15},className:B.tabContent,children:W?l.jsx(mL,{findings:v.filter(Me=>Me.workspaceId===W)}):l.jsx("div",{className:B.noContext,children:"Navigate to a task within a workspace to view findings"})},"findings")]}),(()=>{if(!Q||Q.status!=="working"&&Q.status!=="paused")return;const Me=Fe?h.find(Rt=>Rt.id===Fe):void 0;if(!(!Me||Me.status==="stopped"))return l.jsx(jr,{mode:"send",sessionId:Me.id,environmentId:Me.environmentId,personas:F,environments:g,onSendInput:V,onSpawn:I,onStartTask:T,onProvisionEnvironment:ee})})(),Q&&l.jsx(Wa,{isOpen:he,title:"Delete Task?",description:`"${Q.title}" will be permanently removed.`,onConfirm:Yn,onCancel:()=>ze(!1)})]})}const wL="_container_legrg_1",NL="_header_legrg_8",jL="_headerTitle_legrg_35",CL="_badge_legrg_44",EL="_headerActions_legrg_54",AL="_body_legrg_61",DL="_formContent_legrg_73",RL="_section_legrg_85",ML="_label_legrg_91",OL="_nameInput_legrg_98",IL="_fieldInput_legrg_131",LL="_adapterSelect_legrg_164",BL="_readOnlyValue_legrg_198",UL="_codespaceSection_legrg_204",zL="_codespaceActions_legrg_210",PL="_creatingHint_legrg_216",VL="_errorHint_legrg_222",HL="_btnPrimary_legrg_235",qL="_btnGhost_legrg_266",ne={container:wL,header:NL,headerTitle:jL,badge:CL,headerActions:EL,body:AL,formContent:DL,section:RL,label:ML,nameInput:OL,fieldInput:IL,adapterSelect:LL,readOnlyValue:BL,codespaceSection:UL,codespaceActions:zL,creatingHint:PL,errorHint:VL,btnPrimary:HL,btnGhost:qL},gc=1,vc=65535;function Mf(n){if(!n.trim())return!0;const s=Number(n);return Number.isInteger(s)&&s>=gc&&s<=vc}function Of(n){try{const s=JSON.parse(n);if(typeof s=="object"&&s!==null&&!Array.isArray(s))return s}catch{}return{}}function GL({codespaceName:n,onCodespaceNameChange:s,envName:i,onEnvNameChange:o,codespaces:c,codespaceError:u,codespaceListError:f,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:j=>_(j.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:j=>T(j.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"}),!f&&l.jsxs("select",{value:n,onChange:j=>{j.target.value==="__create__"?(v("create"),s("")):(s(j.target.value),j.target.value&&!i.trim()&&o(j.target.value))},disabled:m,className:ne.adapterSelect,"data-testid":"env-codespace-select",children:[l.jsx("option",{value:"",children:"Select a codespace..."}),c.map(j=>l.jsxs("option",{value:j.name,children:[j.name," (",j.repository,") — ",j.state]},j.name)),l.jsx("option",{value:"__create__",children:"Create new from repo..."})]}),m&&l.jsx("span",{className:ne.creatingHint,children:"Creating codespace..."}),f&&l.jsxs(l.Fragment,{children:[l.jsx("span",{className:ne.errorHint,children:f}),l.jsx("input",{type:"text",value:n,onChange:j=>s(j.target.value),placeholder:"Or enter codespace name manually...",className:ne.fieldInput,"data-testid":"env-codespace-manual"})]}),u&&!f&&l.jsx("span",{className:ne.errorHint,children:u})]})})}function Ox({mode:n,environmentId:s,environments:i,onAddEnvironment:o,onUpdateEnvironment:c,onListCodespaces:u,codespaces:f,codespaceError:m,codespaceListError:h,codespaceCreating:g,onCreateCodespace:v}){const{showToast:b}=Ls(),_=xt(),S=n==="edit",T=S&&s?i.find(ce=>ce.id===s):void 0,[j,N]=y.useState(""),[k,E]=y.useState("local"),[A,R]=y.useState(""),[C,U]=y.useState(""),[V,I]=y.useState(""),[F,ee]=y.useState(""),[re,se]=y.useState(""),[ue,Z]=y.useState(""),[oe,O]=y.useState(""),[G,X]=y.useState(null),fe=y.useCallback(()=>{const ce={};if(k==="local"){if(A.trim()&&(ce.host=A.trim()),C.trim()){const pe=Number(C);Number.isInteger(pe)&&(ce.port=pe)}}else if(k==="ssh"){if(ce.host=A.trim(),V.trim()&&(ce.user=V.trim()),C.trim()){const pe=Number(C);Number.isInteger(pe)&&(ce.sshPort=pe)}F.trim()&&(ce.identityFile=F.trim())}else k==="docker"?(re.trim()&&(ce.image=re.trim()),ue.trim()&&(ce.repo=ue.trim())):k==="codespace"&&(ce.codespaceName=oe.trim());return ce},[k,A,C,V,F,re,ue,oe]),he=()=>!(!j.trim()||k==="ssh"&&!A.trim()||k==="codespace"&&!oe.trim()||(k==="local"||k==="ssh")&&!Mf(C)),ze=()=>{he()&&(o(j.trim(),k,fe()),b("Environment added successfully","success"),_(Xi,{replace:!0}))},je=()=>{_(s?Qi(s):Xi)},we=y.useCallback((ce,pe)=>{if(!T||!s)return;const me=Of(T.adapterConfig),Re=pe.trim();Re?me[ce]=Re:delete me[ce],c(s,{adapterConfig:me})},[T,s,c]),Ae=y.useCallback((ce,pe)=>{if(!T||!s)return;const me=Of(T.adapterConfig);if(pe.trim()){const Re=Number(pe);Number.isInteger(Re)&&Re>=gc&&Re<=vc&&(me[ce]=Re)}else delete me[ce];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:je,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 ce=Of(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:je,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(Ft,{value:T.displayName,onSave:pe=>{s&&c(s,{displayName:pe})},validate:pe=>pe.trim()===""?"Name cannot be empty":void 0,mode:"edit",fieldId:"name",activeFieldId:G,onActivate:X,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(Ft,{value:String(ce.host??""),onSave:pe=>we("host",pe),mode:"edit",fieldId:"host",activeFieldId:G,onActivate:X,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(Ft,{value:String(ce.port??""),onSave:pe=>Ae("port",pe),validate:pe=>Mf(pe)?void 0:"Port must be 1-65535",mode:"edit",fieldId:"port",activeFieldId:G,onActivate:X,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(Ft,{value:String(ce.host??""),onSave:pe=>we("host",pe),validate:pe=>pe.trim()===""?"Host is required":void 0,mode:"edit",fieldId:"host",activeFieldId:G,onActivate:X,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(Ft,{value:String(ce.user??""),onSave:pe=>we("user",pe),mode:"edit",fieldId:"user",activeFieldId:G,onActivate:X,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(Ft,{value:String(ce.sshPort??""),onSave:pe=>Ae("sshPort",pe),validate:pe=>Mf(pe)?void 0:"Port must be 1-65535",mode:"edit",fieldId:"sshPort",activeFieldId:G,onActivate:X,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(Ft,{value:String(ce.identityFile??""),onSave:pe=>we("identityFile",pe),mode:"edit",fieldId:"identityFile",activeFieldId:G,onActivate:X,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(Ft,{value:String(ce.image??""),onSave:pe=>we("image",pe),mode:"edit",fieldId:"image",activeFieldId:G,onActivate:X,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(Ft,{value:String(ce.repo??""),onSave:pe=>we("repo",pe),mode:"edit",fieldId:"repo",activeFieldId:G,onActivate:X,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(Ft,{value:String(ce.codespaceName??""),onSave:pe=>we("codespaceName",pe),validate:pe=>pe.trim()===""?"Codespace name is required":void 0,mode:"edit",fieldId:"codespaceName",activeFieldId:G,onActivate:X,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:ze,disabled:!he(),className:ne.btnPrimary,"data-testid":"env-create-submit",children:"Create"}),l.jsx("button",{onClick:je,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:j,onChange:ce=>N(ce.target.value),placeholder:"Environment name...",autoFocus:!0,className:ne.nameInput,"data-testid":"env-create-name",onKeyDown:ce=>{ce.key==="Enter"&&he()&&ze()}})]}),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:k,onChange:ce=>{E(ce.target.value),ce.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"})]})]}),k==="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:ce=>R(ce.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:gc,max:vc,value:C,onChange:ce=>U(ce.target.value),placeholder:"Port (optional)...",className:ne.fieldInput,"data-testid":"env-create-port"})]})]}),k==="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:ce=>R(ce.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:V,onChange:ce=>I(ce.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:gc,max:vc,value:C,onChange:ce=>U(ce.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:F,onChange:ce=>ee(ce.target.value),placeholder:"Identity file (optional)...",className:ne.fieldInput,"data-testid":"env-create-identity"})]})]}),k==="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:re,onChange:ce=>se(ce.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:ue,onChange:ce=>Z(ce.target.value),placeholder:"Repo (optional)...",className:ne.fieldInput,"data-testid":"env-create-repo"})]})]}),k==="codespace"&&l.jsx(GL,{codespaceName:oe,onCodespaceNameChange:O,envName:j,onEnvNameChange:N,codespaces:f,codespaceError:m,codespaceListError:h,codespaceCreating:g,onCreateCodespace:v})]})})]})}function $L(){const{environments:n,addEnvironment:s,updateEnvironment:i,listCodespaces:o,codespaces:c,codespaceError:u,codespaceListError:f,codespaceCreating:m,createCodespace:h}=pt();return l.jsx(Ox,{mode:"new",environments:n,onAddEnvironment:s,onUpdateEnvironment:i,onListCodespaces:o,codespaces:c,codespaceError:u,codespaceListError:f,codespaceCreating:m,onCreateCodespace:h})}function ZL(){const{environmentId:n}=va(),{environments:s,addEnvironment:i,updateEnvironment:o,listCodespaces:c,codespaces:u,codespaceError:f,codespaceListError:m,codespaceCreating:h,createCodespace:g}=pt();return l.jsx(Ox,{mode:"edit",environmentId:n,environments:s,onAddEnvironment:i,onUpdateEnvironment:o,onListCodespaces:c,codespaces:u,codespaceError:f,codespaceListError:m,codespaceCreating:h,onCreateCodespace:g})}const FL="_layout_11u79_1",KL="_content_11u79_8",YL="_tabPanel_11u79_14",br={layout:FL,content:KL,tabPanel:YL};function JL(){const n=ZI();return l.jsxs("div",{className:br.layout,children:[l.jsx(ba,{segments:n}),l.jsx("div",{className:br.content,children:l.jsx(ei,{})})]})}const WL="_container_13sb6_1",XL="_envHeader_13sb6_6",QL="_envTitleRow_13sb6_10",eB="_statusDot_13sb6_16",tB="_envName_13sb6_21",nB="_statusBadge_13sb6_27",sB="_envMeta_13sb6_33",aB="_metaTag_13sb6_39",iB="_actions_13sb6_51",oB="_provisionMessage_13sb6_59",rB="_errorMessage_13sb6_64",lB="_section_13sb6_69",cB="_sectionHeader_13sb6_73",uB="_cardList_13sb6_121",dB="_card_13sb6_121",fB="_cardHeader_13sb6_138",pB="_cardName_13sb6_144",mB="_cardActions_13sb6_149",hB="_cardDescription_13sb6_154",gB="_cardMeta_13sb6_160",vB="_repoLink_13sb6_166",yB="_empty_13sb6_174",bB="_btnPrimary_13sb6_180",_B="_btnOutline_13sb6_214",xB="_btnSmall_13sb6_241",SB="_btnDanger_13sb6_267",$e={container:WL,envHeader:XL,envTitleRow:QL,statusDot:eB,envName:tB,statusBadge:nB,envMeta:sB,metaTag:aB,actions:iB,provisionMessage:oB,errorMessage:rB,section:lB,sectionHeader:cB,cardList:uB,card:dB,cardHeader:fB,cardName:pB,cardActions:mB,cardDescription:hB,cardMeta:gB,repoLink:vB,empty:yB,btnPrimary:bB,btnOutline:_B,btnSmall:xB,btnDanger:SB},TB={connected:"var(--accent-green)",sleeping:"var(--accent-yellow)",error:"var(--accent-red)",disconnected:"var(--text-tertiary)",connecting:"var(--accent-blue)"};function kB(){const{environmentId:n}=va(),s=xt(),{environments:i,workspaces:o,sessions:c,provisionStatus:u,provisionEnvironment:f,stopEnvironment:m,removeEnvironment:h,archiveWorkspace:g}=pt(),[v,b]=y.useState(!1),[_,S]=y.useState(!1),[T,j]=y.useState(void 0),N=i.find(se=>se.id===n);if(!n||!N)return l.jsx(Fn,{to:Xi,replace:!0});const k=o.filter(se=>se.environmentId===N.id),E=c.filter(se=>se.environmentId===N.id),A=E.reduce((se,ue)=>se+(ue.costUsd??0),0),R=TB[N.status]||"var(--text-tertiary)",C=N.status==="connected",U=N.status==="connecting",V=N.status==="disconnected"||N.status==="error",I=N.id in u?u[N.id]:void 0,F=()=>{h(N.id),b(!1),s(Xi,{replace:!0})},ee=()=>{S(!1),f(N.id,!0)},re=se=>{g(se),j(void 0)};return l.jsxs("div",{className:$e.container,children:[l.jsx(Wa,{isOpen:v,title:"Delete Environment?",description:`"${N.displayName||N.id}" will be permanently removed along with all its data.`,onConfirm:F,onCancel:()=>b(!1)}),l.jsx(Wa,{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:ee,onCancel:()=>S(!1)}),l.jsxs("div",{className:$e.envHeader,children:[l.jsxs("div",{className:$e.envTitleRow,children:[l.jsx("span",{className:$e.statusDot,style:{color:R},children:"●"}),l.jsx("h2",{className:$e.envName,children:N.displayName||N.id}),l.jsx("span",{className:$e.statusBadge,style:{color:R},children:N.status})]}),l.jsxs("div",{className:$e.envMeta,children:[l.jsxs("span",{className:$e.metaTag,children:["Adapter: ",N.adapterType]}),E.length>0&&l.jsxs("span",{className:$e.metaTag,children:[E.length," session",E.length!==1?"s":""]}),A>0&&l.jsxs("span",{className:$e.metaTag,children:["Cost: ",so(A)]})]})]}),l.jsxs("div",{className:$e.actions,children:[C&&l.jsxs(l.Fragment,{children:[l.jsx("button",{className:$e.btnPrimary,onClick:()=>s(Eb(N.id)),children:"New Chat"}),l.jsx("button",{className:$e.btnOutline,onClick:()=>m(N.id),children:"Stop"}),l.jsx("button",{className:$e.btnOutline,onClick:()=>S(!0),disabled:I!==void 0,"data-testid":"env-reprovision-btn",children:"Reprovision"})]}),V&&l.jsx("button",{className:$e.btnPrimary,onClick:()=>f(N.id),children:N.status==="error"?"Retry":"Connect"}),U&&I!==void 0&&l.jsx("span",{className:$e.provisionMessage,children:I.message}),N.status==="error"&&(I==null?void 0:I.stage)==="error"&&l.jsx("span",{className:$e.errorMessage,children:I.message}),l.jsx("button",{className:$e.btnOutline,onClick:()=>s(u2(N.id)),"data-testid":"env-edit-btn",children:"Edit Config"}),l.jsx("button",{className:$e.btnDanger,onClick:()=>b(!0),children:"Delete"})]}),l.jsxs("div",{className:$e.section,children:[l.jsxs("div",{className:$e.sectionHeader,children:[l.jsx("h3",{children:"Workspaces"}),l.jsx("button",{className:$e.btnPrimary,onClick:()=>s(`${Db}?environment=${encodeURIComponent(N.id)}`),"data-testid":"workspace-create-button",children:"+ New Workspace"})]}),k.length===0&&l.jsx("p",{className:$e.empty,children:"No workspaces yet. Create one to get started."}),l.jsx("div",{className:$e.cardList,children:k.map(se=>l.jsx(wB,{workspace:se,confirmArchiveId:T,onOpen:()=>s(Wi(se.id,N.id)),onArchive:()=>j(se.id),onConfirmArchive:()=>re(se.id),onCancelArchive:()=>j(void 0)},se.id))})]})]})}function wB({workspace:n,confirmArchiveId:s,onOpen:i,onArchive:o,onConfirmArchive:c,onCancelArchive:u}){const f=s===n.id,m=n.repoUrl&&/^https?:\/\//.test(n.repoUrl);return l.jsxs("div",{className:$e.card,"data-testid":"workspace-card",children:[l.jsxs("div",{className:$e.cardHeader,children:[l.jsx("strong",{className:$e.cardName,children:n.name}),l.jsxs("div",{className:$e.cardActions,children:[l.jsx("button",{className:$e.btnSmall,onClick:i,children:"Open"}),f?l.jsxs(l.Fragment,{children:[l.jsx("button",{className:$e.btnDanger,onClick:c,children:"Confirm"}),l.jsx("button",{className:$e.btnSmall,onClick:u,children:"Cancel"})]}):l.jsx("button",{className:$e.btnSmall,onClick:o,children:"Archive"})]})]}),n.description&&l.jsx("p",{className:$e.cardDescription,children:n.description}),n.repoUrl&&l.jsx("div",{className:$e.cardMeta,children:m?l.jsx("a",{href:n.repoUrl,target:"_blank",rel:"noopener noreferrer",className:$e.repoLink,children:n.repoUrl}):l.jsx("span",{children:n.repoUrl})})]})}const NB={credentials:"Credentials",personas:"Personas",appearance:"Appearance",about:"About",shortcuts:"Shortcuts"};function jB(){const s=It().pathname.replace(/^\/settings\/?/,"").split("/")[0],i=NB[s],o=$I(i);return l.jsxs("div",{className:br.layout,children:[l.jsx(ba,{segments:o}),l.jsx("div",{className:br.content,children:l.jsx("div",{className:br.tabPanel,children:l.jsx(ei,{})},s)})]})}const CB="_section_1ingb_14",EB="_sectionTitle_1ingb_26",AB="_sectionDescription_1ingb_35",DB="_tokenList_1ingb_48",RB="_tokenRow_1ingb_55",MB="_tokenBadge_1ingb_68",OB="_tokenName_1ingb_83",IB="_tokenTarget_1ingb_90",LB="_deleteButton_1ingb_99",BB="_addForm_1ingb_113",UB="_formRow_1ingb_119",zB="_input_1ingb_125",PB="_select_1ingb_155",VB="_addButton_1ingb_187",HB="_emptyStateInfo_1ingb_221",qB="_themeOptions_1ingb_229",GB="_themeOption_1ingb_229",$B="_themeOptionSelected_1ingb_254",ZB="_themeOptionHeader_1ingb_259",FB="_themeOptionLabel_1ingb_266",KB="_themeOptionDesc_1ingb_273",YB="_variantToggle_1ingb_279",JB="_variantButton_1ingb_286",WB="_variantActive_1ingb_305",XB="_themeSwatches_1ingb_311",QB="_themeSwatch_1ingb_311",e8="_systemToggle_1ingb_325",t8="_systemToggleHint_1ingb_341",n8="_themeActive_1ingb_348",s8="_aboutGrid_1ingb_354",a8="_aboutItem_1ingb_360",i8="_aboutLabel_1ingb_373",o8="_aboutValue_1ingb_379",r8="_aboutDot_1ingb_387",l8="_aboutDotConnected_1ingb_394",c8="_aboutDotDisconnected_1ingb_398",ge={section:CB,sectionTitle:EB,sectionDescription:AB,tokenList:DB,tokenRow:RB,tokenBadge:MB,tokenName:OB,tokenTarget:IB,deleteButton:LB,addForm:BB,formRow:UB,input:zB,select:PB,addButton:VB,emptyStateInfo:HB,themeOptions:qB,themeOption:GB,themeOptionSelected:$B,themeOptionHeader:ZB,themeOptionLabel:FB,themeOptionDesc:KB,variantToggle:YB,variantButton:JB,variantActive:WB,themeSwatches:XB,themeSwatch:QB,systemToggle:e8,systemToggleHint:t8,themeActive:n8,aboutGrid:s8,aboutItem:a8,aboutLabel:i8,aboutValue:o8,aboutDot:r8,aboutDotConnected:l8,aboutDotDisconnected:c8},u8=[{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 d8({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:ge.section,children:[l.jsx("h3",{className:ge.sectionTitle,children:"Credential Providers"}),l.jsx("p",{className:ge.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:ge.tokenList,children:u8.map(o=>l.jsxs("div",{className:ge.tokenRow,children:[l.jsx("span",{className:ge.tokenName,children:o.label}),l.jsx("span",{className:ge.tokenTarget,children:o.description}),l.jsx("select",{className:ge.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 f8=[{value:"env_var",label:"Environment Variable"},{value:"file",label:"File"}];function p8({tokens:n,onSetToken:s,onDeleteToken:i}){const{showToast:o}=Ls(),[c,u]=y.useState(""),[f,m]=y.useState(""),[h,g]=y.useState("env_var"),[v,b]=y.useState(""),[_,S]=y.useState(null),T=k=>{if(k.preventDefault(),!c||!f)return;const E=h==="env_var"?v||c.toUpperCase()+"_TOKEN":"";s(c,f,h,E,h==="file"?v:""),o("Token saved successfully","success"),u(""),m(""),b("")},j=k=>{S(k)},N=()=>{_&&(i(_),o("Token deleted","info")),S(null)};return l.jsxs(l.Fragment,{children:[l.jsx(Wa,{isOpen:_!==null,title:"Delete Token?",description:_?`"${_}" will be permanently removed.`:void 0,onConfirm:N,onCancel:()=>S(null)}),l.jsxs("section",{className:ge.section,children:[l.jsx("h3",{className:ge.sectionTitle,children:"Tokens"}),l.jsx("p",{className:ge.sectionDescription,children:"API tokens are auto-pushed to environments when set or updated. Values are write-only."}),n.length===0?l.jsx("div",{className:ge.emptyStateInfo,children:"Add your first API token to enable service integrations."}):l.jsx("div",{className:ge.tokenList,children:n.map(k=>l.jsxs("div",{className:ge.tokenRow,children:[l.jsx("span",{className:ge.tokenBadge,children:k.tokenType}),l.jsx("span",{className:ge.tokenName,children:k.name}),l.jsx("span",{className:ge.tokenTarget,children:k.tokenType==="env_var"?k.envVar:k.filePath}),l.jsx("button",{className:ge.deleteButton,onClick:()=>j(k.name),title:`Delete ${k.name}`,children:"×"})]},k.name))}),l.jsxs("form",{className:ge.addForm,onSubmit:T,children:[l.jsxs("div",{className:ge.formRow,children:[l.jsx("input",{className:ge.input,type:"text",placeholder:"Token name",value:c,onChange:k=>u(k.target.value)}),l.jsx("input",{className:ge.input,type:"password",placeholder:"Value",value:f,onChange:k=>m(k.target.value)})]}),l.jsxs("div",{className:ge.formRow,children:[l.jsx("select",{className:ge.select,value:h,onChange:k=>g(k.target.value),children:f8.map(k=>l.jsx("option",{value:k.value,children:k.label},k.value))}),l.jsx("input",{className:ge.input,type:"text",placeholder:h==="env_var"?"Env var name (e.g. API_TOKEN)":"File path (e.g. /home/user/.token)",value:v,onChange:k=>b(k.target.value)}),l.jsx("button",{className:ge.addButton,type:"submit",children:"Add Token"})]})]})]})]})}function m8(){const{tokens:n,setToken:s,deleteToken:i,credentialProviders:o,updateCredentialProviders:c}=pt();return l.jsxs(l.Fragment,{children:[l.jsx(d8,{credentialProviders:o,onUpdateCredentialProviders:c}),l.jsx(p8,{tokens:n,onSetToken:s,onDeleteToken:i})]})}const h8="_container_10efq_1",g8="_header_10efq_7",v8="_form_10efq_19",y8="_formActions_10efq_87",b8="_editableSection_10efq_94",_8="_list_10efq_105",x8="_card_10efq_111",S8="_cardHeader_10efq_125",T8="_cardTitle_10efq_135",k8="_defaultBadge_10efq_141",w8="_cardActions_10efq_155",N8="_description_10efq_160",j8="_meta_10efq_166",C8="_empty_10efq_212",E8="_typeToggle_10efq_348",A8="_typeBadge_10efq_362",D8="_scriptEditor_10efq_376",R8="_optional_10efq_383",gt={container:h8,header:g8,form:v8,formActions:y8,editableSection:b8,list:_8,card:x8,cardHeader:S8,cardTitle:T8,defaultBadge:k8,cardActions:w8,description:N8,meta:j8,empty:C8,typeToggle:E8,typeBadge:A8,scriptEditor:D8,optional:R8};function M8({personas:n,appDefaultPersonaId:s,onDeletePersona:i,onSetAppDefaultPersonaId:o,onNavigateToNew:c,onNavigateToPersona:u}){const[f,m]=y.useState(null),h=f?n.find(v=>v.id===f):void 0,g=async v=>{await i(v),m(null)};return l.jsxs("div",{className:gt.container,children:[l.jsxs("div",{className:gt.header,children:[l.jsx("h2",{children:"Personas"}),l.jsx(As,{variant:"primary",size:"md",onClick:c,"data-testid":"persona-new-button",children:"+ New Persona"})]}),n.length===0?l.jsx("p",{className:gt.empty,children:"No personas yet. Create one to get started."}):l.jsx("div",{className:gt.list,children:n.map(v=>{const b=s===v.id,_=v.type==="script";return l.jsxs("div",{className:gt.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:gt.cardHeader,children:[l.jsxs("span",{className:gt.cardTitle,children:[l.jsx("strong",{children:v.name}),l.jsx("span",{className:gt.typeBadge,"data-testid":`persona-type-badge-${v.id}`,children:_?"Script":"Agent"}),b&&l.jsx("span",{className:gt.defaultBadge,"data-testid":`persona-default-badge-${v.id}`,children:"App Default"})]}),l.jsxs("div",{className:gt.cardActions,onClick:S=>S.stopPropagation(),children:[!b&&l.jsx(As,{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(As,{variant:"ghost",size:"sm",onClick:()=>u(v.id),children:"Edit"}),l.jsx(As,{variant:"ghost",size:"sm",onClick:()=>m(v.id),"data-testid":`persona-delete-${v.id}`,children:"Delete"})]})]}),v.description&&l.jsx("p",{className:gt.description,children:v.description}),l.jsxs("div",{className:gt.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(Wa,{isOpen:f!==null,title:"Delete Persona?",description:`"${(h==null?void 0:h.name)??""}" will be permanently removed.`,confirmLabel:"Delete",onConfirm:()=>{f&&g(f).catch(()=>{})},onCancel:()=>m(null)})]})}function O8(){const{personas:n,deletePersona:s,appDefaultPersonaId:i,setAppDefaultPersonaId:o}=pt(),{showToast:c}=Ls(),u=xt();return l.jsx(M8,{personas:n,appDefaultPersonaId:i,onDeletePersona:async f=>{try{await s(f)}catch(m){throw console.error("Failed to delete persona",{personaId:f,error:m}),c("Failed to delete persona","error"),m}},onSetAppDefaultPersonaId:async f=>{try{await o(f)}catch(m){console.error("Failed to set app default persona ID",{personaId:f,error:m}),c("Failed to set app default persona","error")}},onNavigateToNew:()=>u(f2),onNavigateToPersona:f=>u(Ab(f))})}const I8="_container_uy08i_1",L8="_header_uy08i_7",B8="_count_uy08i_13",U8="_presets_uy08i_18",z8="_presetButton_uy08i_24",P8="_filterInput_uy08i_41",V8="_groups_uy08i_53",H8="_group_uy08i_53",q8="_groupHeader_uy08i_68",G8="_groupName_uy08i_77",$8="_groupCount_uy08i_81",Z8="_toolList_uy08i_87",F8="_toolItem_uy08i_95",K8="_toolName_uy08i_103",en={container:I8,header:L8,count:B8,presets:U8,presetButton:z8,filterInput:P8,groups:V8,group:H8,groupHeader:q8,groupName:G8,groupCount:$8,toolList:Z8,toolItem:F8,toolName:K8},Y8=(()=>{const n=new Map;for(const s of ib){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()}))})(),J8=[{name:"default",label:"Default",tools:ob},{name:"worker",label:"Worker",tools:pT},{name:"orchestrator",label:"Orchestrator",tools:mT},{name:"admin",label:"Admin",tools:hT}];function Qy({selectedTools:n,onChange:s,disabled:i}){const[o,c]=y.useState(""),u=y.useMemo(()=>new Set(n),[n]),f=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 (${ob.length} tools)`:`${n.length} of ${ib.size} tools selected`})}),l.jsxs("div",{className:en.presets,"data-testid":"mcp-tool-presets",children:[J8.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:Y8.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:()=>f(T),disabled:i,"data-testid":`tool-${T}`}),l.jsx("span",{className:en.toolName,children:T})]},T))})]},v)})})]})}const eb=[{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)"}],tb=[{value:"genaiscript",label:"genaiscript"}],W8="0";function nb(){const{personaId:n}=va(),s=xt(),{showToast:i}=Ls(),{personas:o,createPersona:c,updatePersona:u,deletePersona:f,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(Fn,{to:sf,replace:!0});const b=[{label:"Settings",url:Ji},{label:"Personas",url:sf},{label:g?"New Persona":(v==null?void 0:v.name)??"Persona",url:void 0}];return l.jsxs("div",{className:gt.container,children:[l.jsx(ba,{segments:b}),l.jsx(X8,{existing:v,isNew:g,appDefaultPersonaId:m,onCreatePersona:c,onUpdatePersona:u,onDeletePersona:f,onSetAppDefaultPersonaId:h,onDone:()=>{s(sf)},showToast:i})]})}function X8({existing:n,isNew:s,appDefaultPersonaId:i,onCreatePersona:o,onUpdatePersona:c,onDeletePersona:u,onSetAppDefaultPersonaId:f,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,j]=y.useState((n==null?void 0:n.systemPrompt)??""),[N,k]=y.useState((n==null?void 0:n.runtime)??"claude-code"),[E,A]=y.useState((n==null?void 0:n.model)??"sonnet"),[R,C]=y.useState((n==null?void 0:n.maxTurns)??0),[U,V]=y.useState((n==null?void 0:n.type)==="script"?"script":"agent"),[I,F]=y.useState((n==null?void 0:n.script)??""),[ee,re]=y.useState((n==null?void 0:n.allowedMcpTools)??[]),[se,ue]=y.useState(!1),[Z,oe]=y.useState(null),[O,G]=y.useState(!!s);y.useEffect(()=>{if(!s&&n&&!O){G(!0),b(n.name),S(n.description),j(n.systemPrompt);const W=n.type==="script"?"script":"agent";k(W==="script"?n.runtime||"genaiscript":n.runtime),A(n.model),C(n.maxTurns),V(W),F(n.script||""),re(n.allowedMcpTools)}},[s,n,O]);const X=W=>{V(W),W==="script"?k("genaiscript"):N==="genaiscript"&&k("claude-code")},fe=!s&&n===void 0,he=v.trim().length>0&&!fe&&T.trim().length>0&&(U==="script"?I.trim().length>0:!!N&&!!E),ze=s&&he,je=!s&&i===(n==null?void 0:n.id),we=!s&&n&&!je&&U==="agent"&&!!N&&!!E,Ae=(W,Te)=>{if(!W.trim())return`${Te} is required`},ce=W=>{if(W.preventDefault(),!(fe||!he)){if(n){c(n.id,v,_,T,N,E,R,U,I).then(()=>{h("Persona updated","success"),m()},()=>{h("Failed to save persona","error")});return}o(v,_,T,N,E,R,U,I,ee).then(Te=>{h("Persona created","success"),g(Ab(Te.id),{replace:!0})},()=>{h("Failed to save persona","error")})}},pe=()=>{n&&u(n.id).then(()=>{h("Persona deleted","success"),m()},()=>{h("Failed to delete persona","error")})},me=async(W,Te,un,Fe)=>W().then(()=>{Te(),h(un,"success")},()=>{h(Fe,"error")}),Re=(W,Te)=>{if(!n)return;const un=W==="type"?String(Te):U,Fe=W==="runtime"?String(Te):W==="type"?String(Te)==="script"?"genaiscript":N==="genaiscript"?"claude-code":N:N,Kn=W==="model"?String(Te):E,Yn=W==="maxTurns"?Number(Te):R,zn=W==="systemPrompt"?String(Te):T,Jn=W==="script"?String(Te):I;me(()=>c(n.id,W==="name"?String(Te):v,W==="description"?String(Te):_,zn,Fe,Kn,Yn,un,Jn),()=>{if(W==="type"){const Tn=String(Te)==="script"?"script":"agent";V(Tn),k(Fe)}W==="runtime"&&k(String(Te)),W==="name"&&b(String(Te)),W==="description"&&S(String(Te)),W==="systemPrompt"&&j(String(Te)),W==="model"&&A(String(Te)),W==="maxTurns"&&C(Number(Te)),W==="script"&&F(String(Te))},"Persona updated","Failed to update persona").catch(()=>{})},Lt=W=>{ce(W)},Q=()=>{n&&f(n.id).then(()=>{h("Set as app default","success")},()=>{h("Failed to set app default","error")})};return l.jsxs(l.Fragment,{children:[fe?l.jsxs("div",{className:gt.form,children:[l.jsx("h3",{children:"Edit Persona"}),l.jsx("p",{children:"Loading persona..."})]}):s?l.jsxs("form",{onSubmit:Lt,className:gt.form,children:[l.jsx("h3",{children:"Create Persona"}),l.jsxs("div",{className:gt.typeToggle,"data-testid":"persona-type-toggle",children:[l.jsxs("label",{children:[l.jsx("input",{type:"radio",name:"personaType",value:"agent",checked:U==="agent",onChange:()=>X("agent")}),"Agent"]}),l.jsxs("label",{children:[l.jsx("input",{type:"radio",name:"personaType",value:"script",checked:U==="script",onChange:()=>X("script")}),"Script"]})]}),l.jsxs("label",{children:["Name",l.jsx("input",{type:"text",value:v,onChange:W=>b(W.target.value),placeholder:U==="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:W=>S(W.target.value),placeholder:"Brief description...","data-testid":"persona-detail-description"})]}),l.jsxs("label",{children:["Runtime",l.jsx("select",{value:N,onChange:W=>k(W.target.value),"data-testid":"persona-runtime-select",children:(U==="script"?tb:eb).map(W=>l.jsx("option",{value:W.value,children:W.label},W.value))})]}),U==="agent"&&l.jsxs(l.Fragment,{children:[l.jsxs("label",{children:["Model",l.jsx("input",{type:"text",value:E,onChange:W=>A(W.target.value),placeholder:"e.g. sonnet","data-testid":"persona-detail-model"})]}),l.jsxs("label",{children:["Max Turns",l.jsx("input",{type:"number",value:R,onChange:W=>C(parseInt(W.target.value,10)||0),min:0,"data-testid":"persona-detail-max-turns"})]}),l.jsxs("label",{children:["System Prompt",l.jsx("textarea",{value:T,onChange:W=>j(W.target.value),placeholder:"You are a senior frontend engineer...",rows:10,required:!0,"data-testid":"persona-detail-prompt"})]})]}),U==="script"&&l.jsxs(l.Fragment,{children:[l.jsxs("label",{children:["Model ",l.jsx("span",{className:gt.optional,children:"(optional)"}),l.jsx("input",{type:"text",value:E,onChange:W=>A(W.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:W=>j(W.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:I,onChange:W=>F(W.target.value),placeholder:`script({ model: "openai:gpt-4o" });
|
|
489
|
-
|
|
490
|
-
const grackle = await host.mcpServer({
|
|
491
|
-
id: "grackle",
|
|
492
|
-
url: env.vars.GRACKLE_MCP_URL,
|
|
493
|
-
});
|
|
494
|
-
|
|
495
|
-
$\`Summarize the current tasks.\`;`,rows:20,className:gt.scriptEditor,required:!0,"data-testid":"persona-script-editor"})]})]}),U==="agent"&&l.jsxs("div",{children:[l.jsx("label",{children:"Allowed MCP Tools"}),l.jsx(Qy,{selectedTools:ee,onChange:re})]}),l.jsxs("div",{className:gt.formActions,children:[l.jsx(As,{type:"submit",variant:"primary",size:"md",disabled:!ze,"data-testid":"persona-detail-save",children:"Create"}),l.jsx(As,{type:"button",variant:"outline",size:"md",onClick:m,"data-testid":"persona-detail-cancel",children:"Cancel"})]})]}):n?l.jsxs("div",{className:gt.form,children:[l.jsx("h3",{children:"Edit Persona"}),l.jsxs("div",{className:gt.formActions,children:[l.jsx(As,{type:"button",variant:"outline",size:"md",onClick:m,"data-testid":"persona-detail-cancel",children:"Back to Personas"}),we&&l.jsx(As,{type:"button",variant:"ghost",size:"md",onClick:Q,"data-testid":"persona-detail-set-default",children:"Set as App Default"}),je&&l.jsx("span",{className:gt.defaultBadge,children:"App Default"}),l.jsx(As,{type:"button",variant:"danger",size:"md",onClick:()=>ue(!0),"data-testid":"persona-detail-delete",children:"Delete"})]}),l.jsxs("div",{className:gt.editableSection,children:[l.jsxs("label",{children:["Name",l.jsx(Ft,{value:v,onSave:W=>{Re("name",W)},validate:W=>Ae(W,"Name"),fieldId:"persona-name",activeFieldId:Z,onActivate:oe,ariaLabel:"Persona name","data-testid":"persona-detail-name"})]}),l.jsxs("label",{children:["Description",l.jsx(Ft,{value:_,onSave:W=>{Re("description",W)},fieldId:"persona-description",activeFieldId:Z,onActivate:oe,placeholder:"Brief description...",ariaLabel:"Persona description","data-testid":"persona-detail-description"})]}),l.jsxs("label",{children:["Type",l.jsx(Cc,{value:U,onSave:W=>{Re("type",W)},options:[{value:"agent",label:"Agent"},{value:"script",label:"Script"}],fieldId:"persona-type",activeFieldId:Z,onActivate:oe,ariaLabel:"Persona type","data-testid":"persona-type-toggle"})]}),l.jsxs("label",{children:["Runtime",l.jsx(Cc,{value:N,onSave:W=>{Re("runtime",W)},options:U==="script"?tb:eb,fieldId:"persona-runtime",activeFieldId:Z,onActivate:oe,ariaLabel:"Persona runtime","data-testid":"persona-runtime"})]}),l.jsxs("label",{children:["Model",U==="script"?" (optional)":"",l.jsx(Ft,{value:E,onSave:W=>{Re("model",W)},validate:U==="agent"?W=>Ae(W,"Model"):void 0,fieldId:"persona-model",activeFieldId:Z,onActivate:oe,placeholder:U==="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(Ft,{value:String(R),onSave:W=>{Re("maxTurns",parseInt(W,10)||0)},validate:W=>/^\d+$/.test(W.trim())?void 0:"Max Turns must be a non-negative integer",fieldId:"persona-max-turns",activeFieldId:Z,onActivate:oe,placeholder:W8,ariaLabel:"Persona max turns","data-testid":"persona-detail-max-turns"})]}),l.jsxs("label",{children:["System Prompt",l.jsx(rp,{value:T,onSave:W=>{Re("systemPrompt",W)},validate:W=>Ae(W,"System Prompt"),fieldId:"persona-system-prompt",activeFieldId:Z,onActivate:oe,placeholder:U==="script"?"Context for the script...":"You are a senior frontend engineer...",ariaLabel:"Persona system prompt","data-testid":"persona-detail-prompt"})]}),U==="script"&&l.jsxs("label",{children:["Script",l.jsx(rp,{value:I,onSave:W=>{Re("script",W)},validate:W=>Ae(W,"Script"),fieldId:"persona-script",activeFieldId:Z,onActivate:oe,placeholder:`script({ model: "openai:gpt-4o" });
|
|
496
|
-
|
|
497
|
-
const grackle = await host.mcpServer({
|
|
498
|
-
id: "grackle",
|
|
499
|
-
url: env.vars.GRACKLE_MCP_URL,
|
|
500
|
-
});
|
|
501
|
-
|
|
502
|
-
$\`Summarize the current tasks.\`;`,ariaLabel:"Persona script","data-testid":"persona-script-editor"})]}),U==="agent"&&l.jsxs("div",{children:[l.jsx("label",{children:"Allowed MCP Tools"}),l.jsx(Qy,{selectedTools:ee,onChange:W=>{re(W);const Te=W.length===0?["__clear__"]:W;me(()=>c(n.id,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,Te),()=>{},"MCP tools updated","Failed to update MCP tools").catch(()=>{})}})]})]}),!we&&!je&&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(Wa,{isOpen:se,title:"Delete Persona?",description:`"${n==null?void 0:n.name}" will be permanently removed.`,confirmLabel:"Delete",onConfirm:pe,onCancel:()=>ue(!1)})]})}function Q8(){const{themeId:n,resolvedThemeId:s,setTheme:i,preferSystem:o,setPreferSystem:c}=zb();return l.jsxs("section",{className:ge.section,children:[l.jsx("h3",{className:ge.sectionTitle,children:"Appearance"}),l.jsx("p",{className:ge.sectionDescription,children:"Choose how Grackle looks across the app."}),l.jsx("div",{className:ge.themeOptions,children:Mc.filter(u=>!u.hidden).map(u=>{const f=!!(u.variantLightId&&u.variantDarkId),m=f?n===u.id||n===u.variantLightId||n===u.variantDarkId:n===u.id,h=f&&s===u.variantLightId;return l.jsxs("button",{type:"button",className:`${ge.themeOption} ${m?ge.themeOptionSelected:""}`,"aria-pressed":m,onClick:()=>i(u.id),children:[l.jsxs("span",{className:ge.themeOptionHeader,children:[l.jsxs("span",{children:[l.jsx("span",{className:ge.themeOptionLabel,children:u.label}),l.jsx("span",{className:ge.themeOptionDesc,children:u.description})]}),f&&l.jsxs("span",{className:ge.variantToggle,children:[l.jsx("span",{role:"button",tabIndex:0,className:`${ge.variantButton} ${m&&h?ge.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:`${ge.variantButton} ${m&&!h?ge.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:ge.themeSwatches,children:u.swatches.map((g,v)=>l.jsx("span",{className:ge.themeSwatch,style:{background:g}},v))})]},u.id)})}),l.jsxs("label",{className:ge.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:ge.systemToggleHint,children:"Automatically switches between light and dark variants when available."}),l.jsxs("p",{className:ge.themeActive,children:["Active theme: ",l.jsx("strong",{children:s})]})]})}function eU(){return l.jsx(Q8,{})}function tU({connected:n,environments:s,sessions:i}){const o=s.filter(f=>f.status==="connected").length,c=s.length,u=i.filter(f=>["running","idle"].includes(f.status)).length;return l.jsxs("section",{className:ge.section,"data-testid":"about-panel",children:[l.jsx("h3",{className:ge.sectionTitle,children:"About"}),l.jsx("p",{className:ge.sectionDescription,children:"Connection status and application information."}),l.jsxs("div",{className:ge.aboutGrid,children:[l.jsxs("div",{className:ge.aboutItem,children:[l.jsx("span",{className:ge.aboutLabel,children:"Connection"}),l.jsxs("span",{className:ge.aboutValue,children:[l.jsx("span",{className:`${ge.aboutDot} ${n?ge.aboutDotConnected:ge.aboutDotDisconnected}`}),n?"Connected":"Disconnected"]})]}),l.jsxs("div",{className:ge.aboutItem,children:[l.jsx("span",{className:ge.aboutLabel,children:"Environments"}),l.jsxs("span",{className:ge.aboutValue,children:[o,"/",c," connected"]})]}),l.jsxs("div",{className:ge.aboutItem,children:[l.jsx("span",{className:ge.aboutLabel,children:"Active Sessions"}),l.jsx("span",{className:ge.aboutValue,children:u})]}),l.jsxs("div",{className:ge.aboutItem,children:[l.jsx("span",{className:ge.aboutLabel,children:"Version"}),l.jsx("span",{className:ge.aboutValue,children:"0.82.1"})]})]})]})}function nU({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(FD,{variant:"info",dismissible:!0,children:[l.jsxs("strong",{children:["Grackle v",s]})," is available (you have v",n,")."," ","Run: ",l.jsx("code",{children:c})]})})}function sU(){const[n,s]=y.useState(void 0);return y.useEffect(()=>{let i=!1;return Ne.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=sU();return l.jsxs(l.Fragment,{children:[o&&l.jsx(nU,{currentVersion:o.currentVersion,latestVersion:o.latestVersion,updateAvailable:o.updateAvailable,isDocker:o.isDocker}),l.jsx(tU,{connected:n,environments:s,sessions:i})]})}const iU="_group_1iprv_1",oU="_groupTitle_1iprv_8",rU="_shortcutList_1iprv_17",lU="_shortcutRow_1iprv_23",cU="_keys_1iprv_36",uU="_kbd_1iprv_43",dU="_description_1iprv_60",qa={group:iU,groupTitle:oU,shortcutList:rU,shortcutRow:lU,keys:cU,kbd:uU,description:dU},fU=[{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 pU(){return l.jsxs("section",{className:ge.section,"data-testid":"keyboard-shortcuts-panel",children:[l.jsx("h3",{className:ge.sectionTitle,children:"Keyboard Shortcuts"}),l.jsx("p",{className:ge.sectionDescription,children:"Keyboard shortcuts for navigating and interacting with Grackle. Global shortcuts are suppressed while typing in text fields."}),fU.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))]})}function mU(){return l.jsx(pU,{})}const sb=ti();function hU(){const n=xt();return Ms({key:"?"},()=>{n(p2)}),Ms({key:"n"},()=>{n(sb)}),Ms({key:"N"},()=>{n(sb)}),l.jsx(l.Fragment,{})}const gU="_wizard_1260s_1",vU="_container_1260s_10",yU="_stepContent_1260s_19",bU="_logoArea_1260s_28",_U="_logoImage_1260s_32",xU="_heading_1260s_41",SU="_tagline_1260s_49",TU="_subtitle_1260s_56",kU="_featureList_1260s_64",wU="_runtimeGrid_1260s_89",NU="_runtimeCard_1260s_101",jU="_runtimeName_1260s_133",CU="_runtimeDescription_1260s_139",EU="_buttonRow_1260s_144",AU="_primaryButton_1260s_151",DU="_ghostButton_1260s_185",RU="_dots_1260s_213",MU="_dot_1260s_213",rt={wizard:gU,container:vU,stepContent:yU,logoArea:bU,logoImage:_U,heading:xU,tagline:SU,subtitle:TU,featureList:kU,runtimeGrid:wU,runtimeCard:NU,runtimeName:jU,runtimeDescription:CU,buttonRow:EU,primaryButton:AU,ghostButton:DU,dots:RU,dot:MU};function OU({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 IU({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 LU=[{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 BU({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:LU.map(f=>l.jsxs("button",{type:"button",className:rt.runtimeCard,"data-selected":c===f.id,"aria-pressed":c===f.id,"data-testid":`runtime-card-${f.id}`,onClick:()=>u(f.id),children:[l.jsx("span",{className:rt.runtimeName,children:f.name}),l.jsx("span",{className:rt.runtimeDescription,children:f.description})]},f.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 UU=3,ab={"claude-code":"sonnet",copilot:"gpt-4o",codex:"o3",goose:""};function zU(){const{personas:n,updatePersona:s,completeOnboarding:i,onboardingCompleted:o}=pt(),c=xt(),[u,f]=y.useState(0),m=n.find(g=>g.id==="claude-code"),h=y.useCallback(g=>{if(m&&g!==m.runtime){const b=ab[g]??"sonnet";s(m.id,void 0,void 0,void 0,g,b).catch(()=>{})}const v=n.find(b=>b.id===t0);if(v&&g!==v.runtime){const b=ab[g]??"sonnet";s(t0,void 0,void 0,void 0,g,b).catch(()=>{})}i(),c("/",{replace:!0})},[m,n,s,i,c]);return o===!0?l.jsx(Fn,{to:"/",replace:!0}):l.jsx("div",{className:rt.wizard,"data-testid":"setup-wizard",children:l.jsxs("div",{className:rt.container,children:[l.jsx(rs,{mode:"wait",children:l.jsxs(Dt.div,{initial:{opacity:0,x:40},animate:{opacity:1,x:0},exit:{opacity:0,x:-40},transition:{duration:.2,ease:"easeInOut"},children:[u===0&&l.jsx(OU,{onNext:()=>f(1)}),u===1&&l.jsx(IU,{onNext:()=>f(2),onBack:()=>f(0)}),u===2&&l.jsx(BU,{currentRuntime:(m==null?void 0:m.runtime)??"claude-code",onFinish:h,onBack:()=>f(1),finishDisabled:!m})]},u)}),l.jsx("div",{className:rt.dots,children:Array.from({length:UU},(g,v)=>l.jsx("span",{className:rt.dot,"data-active":v===u},v))})]})})}const PU="_root_zndgp_1",VU="_body_zndgp_7",HU="_main_zndgp_19",qU="_sidebarWrapper_zndgp_26",GU="_overlay_zndgp_51",pr={root:PU,body:VU,main:HU,sidebarWrapper:qU,overlay:GU},$U=y.lazy(()=>TT(()=>import("./KnowledgePage-BaXd6ySf.js"),__vite__mapDeps([0,1,2,3,4])).then(n=>({default:n.KnowledgePage}))),Ix=typeof window<"u"&&new URLSearchParams(window.location.search).has("mock");function ZU(){const{connected:n,environments:s,sessions:i,tasks:o}=pt(),c=It(),f=Hb()!==void 0,[m,h]=y.useState(!1),g=y.useCallback(()=>h(v=>!v),[]);return y.useEffect(()=>{h(!1)},[c.pathname]),y.useEffect(()=>{if(!m)return;const v=b=>{b.key==="Escape"&&h(!1)};return document.addEventListener("keydown",v),()=>{document.removeEventListener("keydown",v)}},[m]),l.jsxs(l.Fragment,{children:[l.jsx(pw,{connected:n,environments:s,sessions:i,onToggleSidebar:f?g:void 0,sidebarOpen:m}),l.jsx(_w,{}),l.jsxs("div",{className:pr.body,children:[f&&l.jsx("div",{className:pr.sidebarWrapper,"data-sidebar-open":m,children:l.jsx(Cw,{})}),f&&m&&l.jsx("div",{className:pr.overlay,"data-testid":"drawer-overlay",onClick:()=>h(!1)}),l.jsxs("div",{className:pr.main,children:[l.jsx(ei,{}),l.jsx(kD,{sessions:i,tasks:o,environments:s})]})]}),l.jsx(BD,{}),l.jsx(hU,{})]})}function FU(){const{lastSpawnedId:n,environments:s,tasks:i,connected:o,onboardingCompleted:c}=pt(),{showToast:u}=Ls();L3(s,u),P3(i,u);const f=xt(),m=It();return y.useEffect(()=>{n&&!m.pathname.includes("/tasks/")&&f(Cb(n),{replace:!0})},[n,f,m.pathname]),o&&c===!1?l.jsx(Fn,{to:"/setup",replace:!0}):l.jsx(xw,{children:l.jsxs("div",{className:pr.root,children:[Ix&&l.jsx(pR,{}),l.jsx(ZU,{})]})})}function If(){const{workspaceId:n}=va(),{workspaces:s}=pt(),i=It(),o=s.find(h=>h.id===n);if(!(o!=null&&o.environmentId))return s.length===0?void 0:l.jsx(Fn,{to:"/environments",replace:!0});const c=encodeURIComponent(n),u=`/workspaces/${c}`,f=i.pathname.startsWith(u)?i.pathname.slice(u.length):"",m=`/environments/${encodeURIComponent(o.environmentId)}/workspaces/${c}${f}${i.search}${i.hash}`;return l.jsx(Fn,{to:m,replace:!0})}function KU(){return l.jsxs(Ck,{children:[l.jsx(Ce,{path:"setup",element:l.jsx(zU,{})}),l.jsxs(Ce,{element:l.jsx(FU,{}),children:[l.jsx(Ce,{index:!0,element:l.jsx(pI,{})}),l.jsx(Ce,{path:"chat",element:l.jsx(qI,{})}),l.jsx(Ce,{path:"sessions/new",element:l.jsx(WI,{})}),l.jsx(Ce,{path:"sessions/:sessionId",element:l.jsx(e5,{})}),l.jsx(Ce,{element:l.jsx(gD,{}),children:l.jsx(Ce,{path:"knowledge",element:l.jsx(y.Suspense,{fallback:l.jsx(Cx,{}),children:l.jsx($U,{})})})}),l.jsxs(Ce,{element:l.jsx(pD,{}),children:[l.jsx(Ce,{path:"tasks",element:l.jsx(dI,{})}),l.jsx(Ce,{path:"tasks/new",element:l.jsx(Jy,{})}),l.jsx(Ce,{path:"tasks/:taskId",element:l.jsx(fa,{})}),l.jsx(Ce,{path:"tasks/:taskId/edit",element:l.jsx(fa,{})}),l.jsx(Ce,{path:"tasks/:taskId/stream",element:l.jsx(fa,{})}),l.jsx(Ce,{path:"tasks/:taskId/findings",element:l.jsx(fa,{})})]}),l.jsxs(Ce,{element:l.jsx(mD,{}),children:[l.jsx(Ce,{path:"workspaces",element:l.jsx(Fn,{to:"/environments",replace:!0})}),l.jsx(Ce,{path:"workspaces/new",element:l.jsx(nL,{})}),l.jsx(Ce,{path:"workspaces/:workspaceId",element:l.jsx(If,{})}),l.jsx(Ce,{path:"workspaces/:workspaceId/tasks/:taskId",element:l.jsx(If,{})}),l.jsx(Ce,{path:"workspaces/:workspaceId/tasks/:taskId/*",element:l.jsx(If,{})}),l.jsx(Ce,{path:"environments/:environmentId/workspaces/:workspaceId",element:l.jsx(_4,{})}),l.jsx(Ce,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/new",element:l.jsx(Jy,{})}),l.jsx(Ce,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/:taskId",element:l.jsx(fa,{})}),l.jsx(Ce,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/edit",element:l.jsx(fa,{})}),l.jsx(Ce,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/stream",element:l.jsx(fa,{})}),l.jsx(Ce,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/findings",element:l.jsx(fa,{})}),l.jsxs(Ce,{path:"environments",element:l.jsx(JL,{}),children:[l.jsx(Ce,{index:!0,element:l.jsx(fI,{})}),l.jsx(Ce,{path:"new",element:l.jsx($L,{})}),l.jsx(Ce,{path:":environmentId",element:l.jsx(kB,{})}),l.jsx(Ce,{path:":environmentId/edit",element:l.jsx(ZL,{})})]})]}),l.jsx(Ce,{element:l.jsx(hD,{}),children:l.jsxs(Ce,{path:"settings",element:l.jsx(jB,{}),children:[l.jsx(Ce,{index:!0,element:l.jsx(Fn,{to:"credentials",replace:!0})}),l.jsx(Ce,{path:"environments",element:l.jsx(Fn,{to:"/environments",replace:!0})}),l.jsx(Ce,{path:"credentials",element:l.jsx(m8,{})}),l.jsx(Ce,{path:"tokens",element:l.jsx(Fn,{to:"../credentials",replace:!0})}),l.jsx(Ce,{path:"personas",element:l.jsx(O8,{})}),l.jsx(Ce,{path:"personas/new",element:l.jsx(nb,{})}),l.jsx(Ce,{path:"personas/:personaId",element:l.jsx(nb,{})}),l.jsx(Ce,{path:"appearance",element:l.jsx(eU,{})}),l.jsx(Ce,{path:"shortcuts",element:l.jsx(mU,{})}),l.jsx(Ce,{path:"about",element:l.jsx(aU,{})})]})}),l.jsx(Ce,{path:"*",element:l.jsx(Fn,{to:"/",replace:!0})})]})]})}const YU=1e4;function JU(){const{onboardingCompleted:n}=pt(),[s,i]=y.useState(!1);y.useEffect(()=>{if(n!==void 0)return;const c=setTimeout(()=>i(!0),YU);return()=>clearTimeout(c)},[n]);const o=n===void 0&&!s;return l.jsx(rs,{mode:"wait",children:o?l.jsx(Dt.div,{initial:{opacity:1},exit:{opacity:0},transition:{duration:.25},children:l.jsx(Cx,{})},"splash"):l.jsx(Dt.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.25},style:{minHeight:"100vh"},children:l.jsx(Qk,{basename:"/".replace(/\/$/,""),children:l.jsx(KU,{})})},"app")})}function WU(){const n=Ix?W2:V2;return l.jsx(sw,{children:l.jsx(Q2,{children:l.jsx(n,{children:l.jsx(JU,{})})})})}_T.createRoot(document.getElementById("root")).render(l.jsx(y.StrictMode,{children:l.jsx(WU,{})}));export{ba as B,Rb as K,pt as a,Cb as s,os as t,xt as u};
|