https://github.com/gnuboard/g7/issues/122 제보자의 추가 지적 2건(빌드가 게시본을 지움 / CLI 최초 게시 후 웹 재생성 불가)에 대응하고, 같은 근본 원인을 공유하는 결함을 전수조사로 함께 고친다. - 빌드가 자기 산출물만 교체한다: 루트 vite `emptyOutDir: false` 기본값 true 는 폴백 없는 코어 3번들과 배달된 immutable URL 의 게시본을 함께 지웠다 - 게시 트리 권한을 웹이 이어받는다: 병합 전 프리플라이트 + 부모 그룹 상속·g+w 종전 소유권 정상화는 root 축만 덮어 비-root CLI 계정은 무방비였다 - 갱신 → 생성 → 완전성 확인을 한 묶음으로: 기록 바이트 대조, .old 원자 스왑, rename 일시 거부 재시도, 프론트 JSON 파싱 검증 - 실패를 억제하고 기록한다: 버전 한정 실패 마커 + 사유별 대시보드 알림 + ext-static:status 점검 커맨드 - 파생: catch-all 제외 목록을 에셋 화이트리스트 합집합에서 파생(mjs·webp·otf 누락), 번들 디스크 쓰기 fail-soft·빈 번들 503, 활성 디렉토리 prune 회피
231 lines
782 KiB
JavaScript
231 lines
782 KiB
JavaScript
var Tk=Object.defineProperty;var kk=(Xt,ea,ta)=>ea in Xt?Tk(Xt,ea,{enumerable:!0,configurable:!0,writable:!0,value:ta}):Xt[ea]=ta;var M=(Xt,ea,ta)=>kk(Xt,typeof ea!="symbol"?ea+"":ea,ta);(function(Xt){"use strict";function ea(s,e){for(var n=0;n<e.length;n++){const r=e[n];if(typeof r!="string"&&!Array.isArray(r)){for(const i in r)if(i!=="default"&&!(i in s)){const l=Object.getOwnPropertyDescriptor(r,i);l&&Object.defineProperty(s,i,l.get?l:{enumerable:!0,get:()=>r[i]})}}}return Object.freeze(Object.defineProperty(s,Symbol.toStringTag,{value:"Module"}))}function ta(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var gd={exports:{}},We={};var Eg;function Ow(){if(Eg)return We;Eg=1;var s=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),l=Symbol.for("react.consumer"),c=Symbol.for("react.context"),d=Symbol.for("react.forward_ref"),f=Symbol.for("react.suspense"),h=Symbol.for("react.memo"),m=Symbol.for("react.lazy"),y=Symbol.for("react.activity"),S=Symbol.iterator;function v(H){return H===null||typeof H!="object"?null:(H=S&&H[S]||H["@@iterator"],typeof H=="function"?H:null)}var _={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},x=Object.assign,A={};function L(H,T,ce){this.props=H,this.context=T,this.refs=A,this.updater=ce||_}L.prototype.isReactComponent={},L.prototype.setState=function(H,T){if(typeof H!="object"&&typeof H!="function"&&H!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,H,T,"setState")},L.prototype.forceUpdate=function(H){this.updater.enqueueForceUpdate(this,H,"forceUpdate")};function $(){}$.prototype=L.prototype;function k(H,T,ce){this.props=H,this.context=T,this.refs=A,this.updater=ce||_}var O=k.prototype=new $;O.constructor=k,x(O,L.prototype),O.isPureReactComponent=!0;var P=Array.isArray;function G(){}var B={H:null,A:null,T:null,S:null},W=Object.prototype.hasOwnProperty;function pe(H,T,ce){var de=ce.ref;return{$$typeof:s,type:H,key:T,ref:de!==void 0?de:null,props:ce}}function Se(H,T){return pe(H.type,T,H.props)}function we(H){return typeof H=="object"&&H!==null&&H.$$typeof===s}function Ue(H){var T={"=":"=0",":":"=2"};return"$"+H.replace(/[=:]/g,function(ce){return T[ce]})}var Fe=/\/+/g;function qe(H,T){return typeof H=="object"&&H!==null&&H.key!=null?Ue(""+H.key):T.toString(36)}function wt(H){switch(H.status){case"fulfilled":return H.value;case"rejected":throw H.reason;default:switch(typeof H.status=="string"?H.then(G,G):(H.status="pending",H.then(function(T){H.status==="pending"&&(H.status="fulfilled",H.value=T)},function(T){H.status==="pending"&&(H.status="rejected",H.reason=T)})),H.status){case"fulfilled":return H.value;case"rejected":throw H.reason}}throw H}function J(H,T,ce,de,be){var ie=typeof H;(ie==="undefined"||ie==="boolean")&&(H=null);var xe=!1;if(H===null)xe=!0;else switch(ie){case"bigint":case"string":case"number":xe=!0;break;case"object":switch(H.$$typeof){case s:case e:xe=!0;break;case m:return xe=H._init,J(xe(H._payload),T,ce,de,be)}}if(xe)return be=be(H),xe=de===""?"."+qe(H,0):de,P(be)?(ce="",xe!=null&&(ce=xe.replace(Fe,"$&/")+"/"),J(be,T,ce,"",function(Me){return Me})):be!=null&&(we(be)&&(be=Se(be,ce+(be.key==null||H&&H.key===be.key?"":(""+be.key).replace(Fe,"$&/")+"/")+xe)),T.push(be)),1;xe=0;var _e=de===""?".":de+":";if(P(H))for(var Te=0;Te<H.length;Te++)de=H[Te],ie=_e+qe(de,Te),xe+=J(de,T,ce,ie,be);else if(Te=v(H),typeof Te=="function")for(H=Te.call(H),Te=0;!(de=H.next()).done;)de=de.value,ie=_e+qe(de,Te++),xe+=J(de,T,ce,ie,be);else if(ie==="object"){if(typeof H.then=="function")return J(wt(H),T,ce,de,be);throw T=String(H),Error("Objects are not valid as a React child (found: "+(T==="[object Object]"?"object with keys {"+Object.keys(H).join(", ")+"}":T)+"). If you meant to render a collection of children, use an array instead.")}return xe}function fe(H,T,ce){if(H==null)return H;var de=[],be=0;return J(H,de,"","",function(ie){return T.call(ce,ie,be++)}),de}function Le(H){if(H._status===-1){var T=H._result;T=T(),T.then(function(ce){(H._status===0||H._status===-1)&&(H._status=1,H._result=ce)},function(ce){(H._status===0||H._status===-1)&&(H._status=2,H._result=ce)}),H._status===-1&&(H._status=0,H._result=T)}if(H._status===1)return H._result.default;throw H._result}var Z=typeof reportError=="function"?reportError:function(H){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var T=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof H=="object"&&H!==null&&typeof H.message=="string"?String(H.message):String(H),error:H});if(!window.dispatchEvent(T))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",H);return}console.error(H)},ge={map:fe,forEach:function(H,T,ce){fe(H,function(){T.apply(this,arguments)},ce)},count:function(H){var T=0;return fe(H,function(){T++}),T},toArray:function(H){return fe(H,function(T){return T})||[]},only:function(H){if(!we(H))throw Error("React.Children.only expected to receive a single React element child.");return H}};return We.Activity=y,We.Children=ge,We.Component=L,We.Fragment=n,We.Profiler=i,We.PureComponent=k,We.StrictMode=r,We.Suspense=f,We.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=B,We.__COMPILER_RUNTIME={__proto__:null,c:function(H){return B.H.useMemoCache(H)}},We.cache=function(H){return function(){return H.apply(null,arguments)}},We.cacheSignal=function(){return null},We.cloneElement=function(H,T,ce){if(H==null)throw Error("The argument must be a React element, but you passed "+H+".");var de=x({},H.props),be=H.key;if(T!=null)for(ie in T.key!==void 0&&(be=""+T.key),T)!W.call(T,ie)||ie==="key"||ie==="__self"||ie==="__source"||ie==="ref"&&T.ref===void 0||(de[ie]=T[ie]);var ie=arguments.length-2;if(ie===1)de.children=ce;else if(1<ie){for(var xe=Array(ie),_e=0;_e<ie;_e++)xe[_e]=arguments[_e+2];de.children=xe}return pe(H.type,be,de)},We.createContext=function(H){return H={$$typeof:c,_currentValue:H,_currentValue2:H,_threadCount:0,Provider:null,Consumer:null},H.Provider=H,H.Consumer={$$typeof:l,_context:H},H},We.createElement=function(H,T,ce){var de,be={},ie=null;if(T!=null)for(de in T.key!==void 0&&(ie=""+T.key),T)W.call(T,de)&&de!=="key"&&de!=="__self"&&de!=="__source"&&(be[de]=T[de]);var xe=arguments.length-2;if(xe===1)be.children=ce;else if(1<xe){for(var _e=Array(xe),Te=0;Te<xe;Te++)_e[Te]=arguments[Te+2];be.children=_e}if(H&&H.defaultProps)for(de in xe=H.defaultProps,xe)be[de]===void 0&&(be[de]=xe[de]);return pe(H,ie,be)},We.createRef=function(){return{current:null}},We.forwardRef=function(H){return{$$typeof:d,render:H}},We.isValidElement=we,We.lazy=function(H){return{$$typeof:m,_payload:{_status:-1,_result:H},_init:Le}},We.memo=function(H,T){return{$$typeof:h,type:H,compare:T===void 0?null:T}},We.startTransition=function(H){var T=B.T,ce={};B.T=ce;try{var de=H(),be=B.S;be!==null&&be(ce,de),typeof de=="object"&&de!==null&&typeof de.then=="function"&&de.then(G,Z)}catch(ie){Z(ie)}finally{T!==null&&ce.types!==null&&(T.types=ce.types),B.T=T}},We.unstable_useCacheRefresh=function(){return B.H.useCacheRefresh()},We.use=function(H){return B.H.use(H)},We.useActionState=function(H,T,ce){return B.H.useActionState(H,T,ce)},We.useCallback=function(H,T){return B.H.useCallback(H,T)},We.useContext=function(H){return B.H.useContext(H)},We.useDebugValue=function(){},We.useDeferredValue=function(H,T){return B.H.useDeferredValue(H,T)},We.useEffect=function(H,T){return B.H.useEffect(H,T)},We.useEffectEvent=function(H){return B.H.useEffectEvent(H)},We.useId=function(){return B.H.useId()},We.useImperativeHandle=function(H,T,ce){return B.H.useImperativeHandle(H,T,ce)},We.useInsertionEffect=function(H,T){return B.H.useInsertionEffect(H,T)},We.useLayoutEffect=function(H,T){return B.H.useLayoutEffect(H,T)},We.useMemo=function(H,T){return B.H.useMemo(H,T)},We.useOptimistic=function(H,T){return B.H.useOptimistic(H,T)},We.useReducer=function(H,T,ce){return B.H.useReducer(H,T,ce)},We.useRef=function(H){return B.H.useRef(H)},We.useState=function(H){return B.H.useState(H)},We.useSyncExternalStore=function(H,T,ce){return B.H.useSyncExternalStore(H,T,ce)},We.useTransition=function(){return B.H.useTransition()},We.version="19.2.6",We}var _g;function md(){return _g||(_g=1,gd.exports=Ow()),gd.exports}var N=md();const Ye=ta(N);var yd={exports:{}},oo={},bd={exports:{}},vd={};var Ag;function Lw(){return Ag||(Ag=1,(function(s){function e(J,fe){var Le=J.length;J.push(fe);e:for(;0<Le;){var Z=Le-1>>>1,ge=J[Z];if(0<i(ge,fe))J[Z]=fe,J[Le]=ge,Le=Z;else break e}}function n(J){return J.length===0?null:J[0]}function r(J){if(J.length===0)return null;var fe=J[0],Le=J.pop();if(Le!==fe){J[0]=Le;e:for(var Z=0,ge=J.length,H=ge>>>1;Z<H;){var T=2*(Z+1)-1,ce=J[T],de=T+1,be=J[de];if(0>i(ce,Le))de<ge&&0>i(be,ce)?(J[Z]=be,J[de]=Le,Z=de):(J[Z]=ce,J[T]=Le,Z=T);else if(de<ge&&0>i(be,Le))J[Z]=be,J[de]=Le,Z=de;else break e}}return fe}function i(J,fe){var Le=J.sortIndex-fe.sortIndex;return Le!==0?Le:J.id-fe.id}if(s.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var l=performance;s.unstable_now=function(){return l.now()}}else{var c=Date,d=c.now();s.unstable_now=function(){return c.now()-d}}var f=[],h=[],m=1,y=null,S=3,v=!1,_=!1,x=!1,A=!1,L=typeof setTimeout=="function"?setTimeout:null,$=typeof clearTimeout=="function"?clearTimeout:null,k=typeof setImmediate<"u"?setImmediate:null;function O(J){for(var fe=n(h);fe!==null;){if(fe.callback===null)r(h);else if(fe.startTime<=J)r(h),fe.sortIndex=fe.expirationTime,e(f,fe);else break;fe=n(h)}}function P(J){if(x=!1,O(J),!_)if(n(f)!==null)_=!0,G||(G=!0,Ue());else{var fe=n(h);fe!==null&&wt(P,fe.startTime-J)}}var G=!1,B=-1,W=5,pe=-1;function Se(){return A?!0:!(s.unstable_now()-pe<W)}function we(){if(A=!1,G){var J=s.unstable_now();pe=J;var fe=!0;try{e:{_=!1,x&&(x=!1,$(B),B=-1),v=!0;var Le=S;try{t:{for(O(J),y=n(f);y!==null&&!(y.expirationTime>J&&Se());){var Z=y.callback;if(typeof Z=="function"){y.callback=null,S=y.priorityLevel;var ge=Z(y.expirationTime<=J);if(J=s.unstable_now(),typeof ge=="function"){y.callback=ge,O(J),fe=!0;break t}y===n(f)&&r(f),O(J)}else r(f);y=n(f)}if(y!==null)fe=!0;else{var H=n(h);H!==null&&wt(P,H.startTime-J),fe=!1}}break e}finally{y=null,S=Le,v=!1}fe=void 0}}finally{fe?Ue():G=!1}}}var Ue;if(typeof k=="function")Ue=function(){k(we)};else if(typeof MessageChannel<"u"){var Fe=new MessageChannel,qe=Fe.port2;Fe.port1.onmessage=we,Ue=function(){qe.postMessage(null)}}else Ue=function(){L(we,0)};function wt(J,fe){B=L(function(){J(s.unstable_now())},fe)}s.unstable_IdlePriority=5,s.unstable_ImmediatePriority=1,s.unstable_LowPriority=4,s.unstable_NormalPriority=3,s.unstable_Profiling=null,s.unstable_UserBlockingPriority=2,s.unstable_cancelCallback=function(J){J.callback=null},s.unstable_forceFrameRate=function(J){0>J||125<J?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):W=0<J?Math.floor(1e3/J):5},s.unstable_getCurrentPriorityLevel=function(){return S},s.unstable_next=function(J){switch(S){case 1:case 2:case 3:var fe=3;break;default:fe=S}var Le=S;S=fe;try{return J()}finally{S=Le}},s.unstable_requestPaint=function(){A=!0},s.unstable_runWithPriority=function(J,fe){switch(J){case 1:case 2:case 3:case 4:case 5:break;default:J=3}var Le=S;S=J;try{return fe()}finally{S=Le}},s.unstable_scheduleCallback=function(J,fe,Le){var Z=s.unstable_now();switch(typeof Le=="object"&&Le!==null?(Le=Le.delay,Le=typeof Le=="number"&&0<Le?Z+Le:Z):Le=Z,J){case 1:var ge=-1;break;case 2:ge=250;break;case 5:ge=1073741823;break;case 4:ge=1e4;break;default:ge=5e3}return ge=Le+ge,J={id:m++,callback:fe,priorityLevel:J,startTime:Le,expirationTime:ge,sortIndex:-1},Le>Z?(J.sortIndex=Le,e(h,J),n(f)===null&&J===n(h)&&(x?($(B),B=-1):x=!0,wt(P,Le-Z))):(J.sortIndex=ge,e(f,J),_||v||(_=!0,G||(G=!0,Ue()))),J},s.unstable_shouldYield=Se,s.unstable_wrapCallback=function(J){var fe=S;return function(){var Le=S;S=fe;try{return J.apply(this,arguments)}finally{S=Le}}}})(vd)),vd}var xg;function $w(){return xg||(xg=1,bd.exports=Lw()),bd.exports}var Sd={exports:{}},Cn={};var Tg;function Mw(){if(Tg)return Cn;Tg=1;var s=md();function e(f){var h="https://react.dev/errors/"+f;if(1<arguments.length){h+="?args[]="+encodeURIComponent(arguments[1]);for(var m=2;m<arguments.length;m++)h+="&args[]="+encodeURIComponent(arguments[m])}return"Minified React error #"+f+"; visit "+h+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function n(){}var r={d:{f:n,r:function(){throw Error(e(522))},D:n,C:n,L:n,m:n,X:n,S:n,M:n},p:0,findDOMNode:null},i=Symbol.for("react.portal");function l(f,h,m){var y=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:i,key:y==null?null:""+y,children:f,containerInfo:h,implementation:m}}var c=s.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function d(f,h){if(f==="font")return"";if(typeof h=="string")return h==="use-credentials"?h:""}return Cn.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=r,Cn.createPortal=function(f,h){var m=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!h||h.nodeType!==1&&h.nodeType!==9&&h.nodeType!==11)throw Error(e(299));return l(f,h,null,m)},Cn.flushSync=function(f){var h=c.T,m=r.p;try{if(c.T=null,r.p=2,f)return f()}finally{c.T=h,r.p=m,r.d.f()}},Cn.preconnect=function(f,h){typeof f=="string"&&(h?(h=h.crossOrigin,h=typeof h=="string"?h==="use-credentials"?h:"":void 0):h=null,r.d.C(f,h))},Cn.prefetchDNS=function(f){typeof f=="string"&&r.d.D(f)},Cn.preinit=function(f,h){if(typeof f=="string"&&h&&typeof h.as=="string"){var m=h.as,y=d(m,h.crossOrigin),S=typeof h.integrity=="string"?h.integrity:void 0,v=typeof h.fetchPriority=="string"?h.fetchPriority:void 0;m==="style"?r.d.S(f,typeof h.precedence=="string"?h.precedence:void 0,{crossOrigin:y,integrity:S,fetchPriority:v}):m==="script"&&r.d.X(f,{crossOrigin:y,integrity:S,fetchPriority:v,nonce:typeof h.nonce=="string"?h.nonce:void 0})}},Cn.preinitModule=function(f,h){if(typeof f=="string")if(typeof h=="object"&&h!==null){if(h.as==null||h.as==="script"){var m=d(h.as,h.crossOrigin);r.d.M(f,{crossOrigin:m,integrity:typeof h.integrity=="string"?h.integrity:void 0,nonce:typeof h.nonce=="string"?h.nonce:void 0})}}else h==null&&r.d.M(f)},Cn.preload=function(f,h){if(typeof f=="string"&&typeof h=="object"&&h!==null&&typeof h.as=="string"){var m=h.as,y=d(m,h.crossOrigin);r.d.L(f,m,{crossOrigin:y,integrity:typeof h.integrity=="string"?h.integrity:void 0,nonce:typeof h.nonce=="string"?h.nonce:void 0,type:typeof h.type=="string"?h.type:void 0,fetchPriority:typeof h.fetchPriority=="string"?h.fetchPriority:void 0,referrerPolicy:typeof h.referrerPolicy=="string"?h.referrerPolicy:void 0,imageSrcSet:typeof h.imageSrcSet=="string"?h.imageSrcSet:void 0,imageSizes:typeof h.imageSizes=="string"?h.imageSizes:void 0,media:typeof h.media=="string"?h.media:void 0})}},Cn.preloadModule=function(f,h){if(typeof f=="string")if(h){var m=d(h.as,h.crossOrigin);r.d.m(f,{as:typeof h.as=="string"&&h.as!=="script"?h.as:void 0,crossOrigin:m,integrity:typeof h.integrity=="string"?h.integrity:void 0})}else r.d.m(f)},Cn.requestFormReset=function(f){r.d.r(f)},Cn.unstable_batchedUpdates=function(f,h){return f(h)},Cn.useFormState=function(f,h,m){return c.H.useFormState(f,h,m)},Cn.useFormStatus=function(){return c.H.useHostTransitionStatus()},Cn.version="19.2.6",Cn}var kg;function Rg(){if(kg)return Sd.exports;kg=1;function s(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(s)}catch(e){console.error(e)}}return s(),Sd.exports=Mw(),Sd.exports}var Dg;function Nw(){if(Dg)return oo;Dg=1;var s=$w(),e=md(),n=Rg();function r(t){var a="https://react.dev/errors/"+t;if(1<arguments.length){a+="?args[]="+encodeURIComponent(arguments[1]);for(var o=2;o<arguments.length;o++)a+="&args[]="+encodeURIComponent(arguments[o])}return"Minified React error #"+t+"; visit "+a+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function i(t){return!(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)}function l(t){var a=t,o=t;if(t.alternate)for(;a.return;)a=a.return;else{t=a;do a=t,(a.flags&4098)!==0&&(o=a.return),t=a.return;while(t)}return a.tag===3?o:null}function c(t){if(t.tag===13){var a=t.memoizedState;if(a===null&&(t=t.alternate,t!==null&&(a=t.memoizedState)),a!==null)return a.dehydrated}return null}function d(t){if(t.tag===31){var a=t.memoizedState;if(a===null&&(t=t.alternate,t!==null&&(a=t.memoizedState)),a!==null)return a.dehydrated}return null}function f(t){if(l(t)!==t)throw Error(r(188))}function h(t){var a=t.alternate;if(!a){if(a=l(t),a===null)throw Error(r(188));return a!==t?null:t}for(var o=t,u=a;;){var p=o.return;if(p===null)break;var g=p.alternate;if(g===null){if(u=p.return,u!==null){o=u;continue}break}if(p.child===g.child){for(g=p.child;g;){if(g===o)return f(p),t;if(g===u)return f(p),a;g=g.sibling}throw Error(r(188))}if(o.return!==u.return)o=p,u=g;else{for(var w=!1,R=p.child;R;){if(R===o){w=!0,o=p,u=g;break}if(R===u){w=!0,u=p,o=g;break}R=R.sibling}if(!w){for(R=g.child;R;){if(R===o){w=!0,o=g,u=p;break}if(R===u){w=!0,u=g,o=p;break}R=R.sibling}if(!w)throw Error(r(189))}}if(o.alternate!==u)throw Error(r(190))}if(o.tag!==3)throw Error(r(188));return o.stateNode.current===o?t:a}function m(t){var a=t.tag;if(a===5||a===26||a===27||a===6)return t;for(t=t.child;t!==null;){if(a=m(t),a!==null)return a;t=t.sibling}return null}var y=Object.assign,S=Symbol.for("react.element"),v=Symbol.for("react.transitional.element"),_=Symbol.for("react.portal"),x=Symbol.for("react.fragment"),A=Symbol.for("react.strict_mode"),L=Symbol.for("react.profiler"),$=Symbol.for("react.consumer"),k=Symbol.for("react.context"),O=Symbol.for("react.forward_ref"),P=Symbol.for("react.suspense"),G=Symbol.for("react.suspense_list"),B=Symbol.for("react.memo"),W=Symbol.for("react.lazy"),pe=Symbol.for("react.activity"),Se=Symbol.for("react.memo_cache_sentinel"),we=Symbol.iterator;function Ue(t){return t===null||typeof t!="object"?null:(t=we&&t[we]||t["@@iterator"],typeof t=="function"?t:null)}var Fe=Symbol.for("react.client.reference");function qe(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===Fe?null:t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case x:return"Fragment";case L:return"Profiler";case A:return"StrictMode";case P:return"Suspense";case G:return"SuspenseList";case pe:return"Activity"}if(typeof t=="object")switch(t.$$typeof){case _:return"Portal";case k:return t.displayName||"Context";case $:return(t._context.displayName||"Context")+".Consumer";case O:var a=t.render;return t=t.displayName,t||(t=a.displayName||a.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case B:return a=t.displayName||null,a!==null?a:qe(t.type)||"Memo";case W:a=t._payload,t=t._init;try{return qe(t(a))}catch{}}return null}var wt=Array.isArray,J=e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,fe=n.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Le={pending:!1,data:null,method:null,action:null},Z=[],ge=-1;function H(t){return{current:t}}function T(t){0>ge||(t.current=Z[ge],Z[ge]=null,ge--)}function ce(t,a){ge++,Z[ge]=t.current,t.current=a}var de=H(null),be=H(null),ie=H(null),xe=H(null);function _e(t,a){switch(ce(ie,a),ce(be,t),ce(de,null),a.nodeType){case 9:case 11:t=(t=a.documentElement)&&(t=t.namespaceURI)?JS(t):0;break;default:if(t=a.tagName,a=a.namespaceURI)a=JS(a),t=QS(a,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}T(de),ce(de,t)}function Te(){T(de),T(be),T(ie)}function Me(t){t.memoizedState!==null&&ce(xe,t);var a=de.current,o=QS(a,t.type);a!==o&&(ce(be,t),ce(de,o))}function pt(t){be.current===t&&(T(de),T(be)),xe.current===t&&(T(xe),Ul._currentValue=Le)}var Ct,Ot;function ht(t){if(Ct===void 0)try{throw Error()}catch(o){var a=o.stack.trim().match(/\n( *(at )?)/);Ct=a&&a[1]||"",Ot=-1<o.stack.indexOf(`
|
||
at`)?" (<anonymous>)":-1<o.stack.indexOf("@")?"@unknown:0:0":""}return`
|
||
`+Ct+t+Ot}var rn=!1;function Kt(t,a){if(!t||rn)return"";rn=!0;var o=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var u={DetermineComponentFrameRoot:function(){try{if(a){var le=function(){throw Error()};if(Object.defineProperty(le.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(le,[])}catch(te){var Q=te}Reflect.construct(t,[],le)}else{try{le.call()}catch(te){Q=te}t.call(le.prototype)}}else{try{throw Error()}catch(te){Q=te}(le=t())&&typeof le.catch=="function"&&le.catch(function(){})}}catch(te){if(te&&Q&&typeof te.stack=="string")return[te.stack,Q.stack]}return[null,null]}};u.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var p=Object.getOwnPropertyDescriptor(u.DetermineComponentFrameRoot,"name");p&&p.configurable&&Object.defineProperty(u.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var g=u.DetermineComponentFrameRoot(),w=g[0],R=g[1];if(w&&R){var z=w.split(`
|
||
`),X=R.split(`
|
||
`);for(p=u=0;u<z.length&&!z[u].includes("DetermineComponentFrameRoot");)u++;for(;p<X.length&&!X[p].includes("DetermineComponentFrameRoot");)p++;if(u===z.length||p===X.length)for(u=z.length-1,p=X.length-1;1<=u&&0<=p&&z[u]!==X[p];)p--;for(;1<=u&&0<=p;u--,p--)if(z[u]!==X[p]){if(u!==1||p!==1)do if(u--,p--,0>p||z[u]!==X[p]){var re=`
|
||
`+z[u].replace(" at new "," at ");return t.displayName&&re.includes("<anonymous>")&&(re=re.replace("<anonymous>",t.displayName)),re}while(1<=u&&0<=p);break}}}finally{rn=!1,Error.prepareStackTrace=o}return(o=t?t.displayName||t.name:"")?ht(o):""}function It(t,a){switch(t.tag){case 26:case 27:case 5:return ht(t.type);case 16:return ht("Lazy");case 13:return t.child!==a&&a!==null?ht("Suspense Fallback"):ht("Suspense");case 19:return ht("SuspenseList");case 0:case 15:return Kt(t.type,!1);case 11:return Kt(t.type.render,!1);case 1:return Kt(t.type,!0);case 31:return ht("Activity");default:return""}}function Fr(t){try{var a="",o=null;do a+=It(t,o),o=t,t=t.return;while(t);return a}catch(u){return`
|
||
Error generating stack: `+u.message+`
|
||
`+u.stack}}var hn=Object.prototype.hasOwnProperty,an=s.unstable_scheduleCallback,pn=s.unstable_cancelCallback,Wn=s.unstable_shouldYield,Vr=s.unstable_requestPaint,qt=s.unstable_now,ki=s.unstable_getCurrentPriorityLevel,la=s.unstable_ImmediatePriority,gn=s.unstable_UserBlockingPriority,Dn=s.unstable_NormalPriority,nt=s.unstable_LowPriority,In=s.unstable_IdlePriority,mn=s.log,ca=s.unstable_setDisableYieldValue,lr=null,sn=null;function _n(t){if(typeof mn=="function"&&ca(t),sn&&typeof sn.setStrictMode=="function")try{sn.setStrictMode(lr,t)}catch{}}var on=Math.clz32?Math.clz32:ue,F=Math.log,se=Math.LN2;function ue(t){return t>>>=0,t===0?32:31-(F(t)/se|0)|0}var ee=256,ve=262144,he=4194304;function Ee(t){var a=t&42;if(a!==0)return a;switch(t&-t){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 t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function Ae(t,a,o){var u=t.pendingLanes;if(u===0)return 0;var p=0,g=t.suspendedLanes,w=t.pingedLanes;t=t.warmLanes;var R=u&134217727;return R!==0?(u=R&~g,u!==0?p=Ee(u):(w&=R,w!==0?p=Ee(w):o||(o=R&~t,o!==0&&(p=Ee(o))))):(R=u&~g,R!==0?p=Ee(R):w!==0?p=Ee(w):o||(o=u&~t,o!==0&&(p=Ee(o)))),p===0?0:a!==0&&a!==p&&(a&g)===0&&(g=p&-p,o=a&-a,g>=o||g===32&&(o&4194048)!==0)?a:p}function Ve(t,a){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&a)===0}function ke(t,a){switch(t){case 1:case 2:case 4:case 8:case 64:return a+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 a+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 Ne(){var t=he;return he<<=1,(he&62914560)===0&&(he=4194304),t}function Re(t){for(var a=[],o=0;31>o;o++)a.push(t);return a}function et(t,a){t.pendingLanes|=a,a!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function He(t,a,o,u,p,g){var w=t.pendingLanes;t.pendingLanes=o,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=o,t.entangledLanes&=o,t.errorRecoveryDisabledLanes&=o,t.shellSuspendCounter=0;var R=t.entanglements,z=t.expirationTimes,X=t.hiddenUpdates;for(o=w&~o;0<o;){var re=31-on(o),le=1<<re;R[re]=0,z[re]=-1;var Q=X[re];if(Q!==null)for(X[re]=null,re=0;re<Q.length;re++){var te=Q[re];te!==null&&(te.lane&=-536870913)}o&=~le}u!==0&&Ge(t,u,0),g!==0&&p===0&&t.tag!==0&&(t.suspendedLanes|=g&~(w&~a))}function Ge(t,a,o){t.pendingLanes|=a,t.suspendedLanes&=~a;var u=31-on(a);t.entangledLanes|=a,t.entanglements[u]=t.entanglements[u]|1073741824|o&261930}function Ce(t,a){var o=t.entangledLanes|=a;for(t=t.entanglements;o;){var u=31-on(o),p=1<<u;p&a|t[u]&a&&(t[u]|=a),o&=~p}}function je(t,a){var o=a&-a;return o=(o&42)!==0?1:tt(o),(o&(t.suspendedLanes|a))!==0?0:o}function tt(t){switch(t){case 2:t=1;break;case 8:t=4;break;case 32:t=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:t=128;break;case 268435456:t=134217728;break;default:t=0}return t}function At(t){return t&=-t,2<t?8<t?(t&134217727)!==0?32:268435456:8:2}function Mt(){var t=fe.p;return t!==0?t:(t=window.event,t===void 0?32:ww(t.type))}function On(t,a){var o=fe.p;try{return fe.p=t,a()}finally{fe.p=o}}var jt=Math.random().toString(36).slice(2),Ht="__reactFiber$"+jt,An="__reactProps$"+jt,za="__reactContainer$"+jt,Ko="__reactEvents$"+jt,ih="__reactListeners$"+jt,qc="__reactHandles$"+jt,Kr="__reactResources$"+jt,Ri="__reactMarker$"+jt;function Wo(t){delete t[Ht],delete t[An],delete t[Ko],delete t[ih],delete t[qc]}function Ua(t){var a=t[Ht];if(a)return a;for(var o=t.parentNode;o;){if(a=o[za]||o[Ht]){if(o=a.alternate,a.child!==null||o!==null&&o.child!==null)for(t=iw(t);t!==null;){if(o=t[Ht])return o;t=iw(t)}return a}t=o,o=t.parentNode}return null}function Wr(t){if(t=t[Ht]||t[za]){var a=t.tag;if(a===5||a===6||a===13||a===31||a===26||a===27||a===3)return t}return null}function ua(t){var a=t.tag;if(a===5||a===26||a===27||a===6)return t.stateNode;throw Error(r(33))}function Pa(t){var a=t[Kr];return a||(a=t[Kr]={hoistableStyles:new Map,hoistableScripts:new Map}),a}function Jt(t){t[Ri]=!0}var Gc=new Set,Fc={};function Rr(t,a){Ba(t,a),Ba(t+"Capture",a)}function Ba(t,a){for(Fc[t]=a,t=0;t<a.length;t++)Gc.add(a[t])}var sh=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]*$"),Vc={},Kc={};function oh(t){return hn.call(Kc,t)?!0:hn.call(Vc,t)?!1:sh.test(t)?Kc[t]=!0:(Vc[t]=!0,!1)}function jn(t,a,o){if(oh(a))if(o===null)t.removeAttribute(a);else{switch(typeof o){case"undefined":case"function":case"symbol":t.removeAttribute(a);return;case"boolean":var u=a.toLowerCase().slice(0,5);if(u!=="data-"&&u!=="aria-"){t.removeAttribute(a);return}}t.setAttribute(a,""+o)}}function Di(t,a,o){if(o===null)t.removeAttribute(a);else{switch(typeof o){case"undefined":case"function":case"symbol":case"boolean":t.removeAttribute(a);return}t.setAttribute(a,""+o)}}function yn(t,a,o,u){if(u===null)t.removeAttribute(o);else{switch(typeof u){case"undefined":case"function":case"symbol":case"boolean":t.removeAttribute(o);return}t.setAttributeNS(a,o,""+u)}}function xn(t){switch(typeof t){case"bigint":case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function Wc(t){var a=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(a==="checkbox"||a==="radio")}function lh(t,a,o){var u=Object.getOwnPropertyDescriptor(t.constructor.prototype,a);if(!t.hasOwnProperty(a)&&typeof u<"u"&&typeof u.get=="function"&&typeof u.set=="function"){var p=u.get,g=u.set;return Object.defineProperty(t,a,{configurable:!0,get:function(){return p.call(this)},set:function(w){o=""+w,g.call(this,w)}}),Object.defineProperty(t,a,{enumerable:u.enumerable}),{getValue:function(){return o},setValue:function(w){o=""+w},stopTracking:function(){t._valueTracker=null,delete t[a]}}}}function Yo(t){if(!t._valueTracker){var a=Wc(t)?"checked":"value";t._valueTracker=lh(t,a,""+t[a])}}function Yc(t){if(!t)return!1;var a=t._valueTracker;if(!a)return!0;var o=a.getValue(),u="";return t&&(u=Wc(t)?t.checked?"true":"false":t.value),t=u,t!==o?(a.setValue(t),!0):!1}function qa(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var ch=/[\n"\\]/g;function Hn(t){return t.replace(ch,function(a){return"\\"+a.charCodeAt(0).toString(16)+" "})}function Ts(t,a,o,u,p,g,w,R){t.name="",w!=null&&typeof w!="function"&&typeof w!="symbol"&&typeof w!="boolean"?t.type=w:t.removeAttribute("type"),a!=null?w==="number"?(a===0&&t.value===""||t.value!=a)&&(t.value=""+xn(a)):t.value!==""+xn(a)&&(t.value=""+xn(a)):w!=="submit"&&w!=="reset"||t.removeAttribute("value"),a!=null?da(t,w,xn(a)):o!=null?da(t,w,xn(o)):u!=null&&t.removeAttribute("value"),p==null&&g!=null&&(t.defaultChecked=!!g),p!=null&&(t.checked=p&&typeof p!="function"&&typeof p!="symbol"),R!=null&&typeof R!="function"&&typeof R!="symbol"&&typeof R!="boolean"?t.name=""+xn(R):t.removeAttribute("name")}function Oi(t,a,o,u,p,g,w,R){if(g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"&&(t.type=g),a!=null||o!=null){if(!(g!=="submit"&&g!=="reset"||a!=null)){Yo(t);return}o=o!=null?""+xn(o):"",a=a!=null?""+xn(a):o,R||a===t.value||(t.value=a),t.defaultValue=a}u=u??p,u=typeof u!="function"&&typeof u!="symbol"&&!!u,t.checked=R?t.checked:!!u,t.defaultChecked=!!u,w!=null&&typeof w!="function"&&typeof w!="symbol"&&typeof w!="boolean"&&(t.name=w),Yo(t)}function da(t,a,o){a==="number"&&qa(t.ownerDocument)===t||t.defaultValue===""+o||(t.defaultValue=""+o)}function Ga(t,a,o,u){if(t=t.options,a){a={};for(var p=0;p<o.length;p++)a["$"+o[p]]=!0;for(o=0;o<t.length;o++)p=a.hasOwnProperty("$"+t[o].value),t[o].selected!==p&&(t[o].selected=p),p&&u&&(t[o].defaultSelected=!0)}else{for(o=""+xn(o),a=null,p=0;p<t.length;p++){if(t[p].value===o){t[p].selected=!0,u&&(t[p].defaultSelected=!0);return}a!==null||t[p].disabled||(a=t[p])}a!==null&&(a.selected=!0)}}function Fa(t,a,o){if(a!=null&&(a=""+xn(a),a!==t.value&&(t.value=a),o==null)){t.defaultValue!==a&&(t.defaultValue=a);return}t.defaultValue=o!=null?""+xn(o):""}function Xc(t,a,o,u){if(a==null){if(u!=null){if(o!=null)throw Error(r(92));if(wt(u)){if(1<u.length)throw Error(r(93));u=u[0]}o=u}o==null&&(o=""),a=o}o=xn(a),t.defaultValue=o,u=t.textContent,u===o&&u!==""&&u!==null&&(t.value=u),Yo(t)}function Va(t,a){if(a){var o=t.firstChild;if(o&&o===t.lastChild&&o.nodeType===3){o.nodeValue=a;return}}t.textContent=a}var uh=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 Jc(t,a,o){var u=a.indexOf("--")===0;o==null||typeof o=="boolean"||o===""?u?t.setProperty(a,""):a==="float"?t.cssFloat="":t[a]="":u?t.setProperty(a,o):typeof o!="number"||o===0||uh.has(a)?a==="float"?t.cssFloat=o:t[a]=(""+o).trim():t[a]=o+"px"}function Qc(t,a,o){if(a!=null&&typeof a!="object")throw Error(r(62));if(t=t.style,o!=null){for(var u in o)!o.hasOwnProperty(u)||a!=null&&a.hasOwnProperty(u)||(u.indexOf("--")===0?t.setProperty(u,""):u==="float"?t.cssFloat="":t[u]="");for(var p in a)u=a[p],a.hasOwnProperty(p)&&o[p]!==u&&Jc(t,p,u)}else for(var g in a)a.hasOwnProperty(g)&&Jc(t,g,a[g])}function Xo(t){if(t.indexOf("-")===-1)return!1;switch(t){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 dh=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"]]),Jo=/^[\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 cr(t){return Jo.test(""+t)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":t}function Dr(){}var Qo=null;function Zo(t){return t=t.target||t.srcElement||window,t.correspondingUseElement&&(t=t.correspondingUseElement),t.nodeType===3?t.parentNode:t}var Ka=null,fa=null;function Zc(t){var a=Wr(t);if(a&&(t=a.stateNode)){var o=t[An]||null;e:switch(t=a.stateNode,a.type){case"input":if(Ts(t,o.value,o.defaultValue,o.defaultValue,o.checked,o.defaultChecked,o.type,o.name),a=o.name,o.type==="radio"&&a!=null){for(o=t;o.parentNode;)o=o.parentNode;for(o=o.querySelectorAll('input[name="'+Hn(""+a)+'"][type="radio"]'),a=0;a<o.length;a++){var u=o[a];if(u!==t&&u.form===t.form){var p=u[An]||null;if(!p)throw Error(r(90));Ts(u,p.value,p.defaultValue,p.defaultValue,p.checked,p.defaultChecked,p.type,p.name)}}for(a=0;a<o.length;a++)u=o[a],u.form===t.form&&Yc(u)}break e;case"textarea":Fa(t,o.value,o.defaultValue);break e;case"select":a=o.value,a!=null&&Ga(t,!!o.multiple,a,!1)}}}var ks=!1;function eu(t,a,o){if(ks)return t(a,o);ks=!0;try{var u=t(a);return u}finally{if(ks=!1,(Ka!==null||fa!==null)&&(Ku(),Ka&&(a=Ka,t=fa,fa=Ka=null,Zc(a),t)))for(a=0;a<t.length;a++)Zc(t[a])}}function Li(t,a){var o=t.stateNode;if(o===null)return null;var u=o[An]||null;if(u===null)return null;o=u[a];e:switch(a){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(u=!u.disabled)||(t=t.type,u=!(t==="button"||t==="input"||t==="select"||t==="textarea")),t=!u;break e;default:t=!1}if(t)return null;if(o&&typeof o!="function")throw Error(r(231,a,typeof o));return o}var Or=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),el=!1;if(Or)try{var $i={};Object.defineProperty($i,"passive",{get:function(){el=!0}}),window.addEventListener("test",$i,$i),window.removeEventListener("test",$i,$i)}catch{el=!1}var Yr=null,tl=null,Rs=null;function tu(){if(Rs)return Rs;var t,a=tl,o=a.length,u,p="value"in Yr?Yr.value:Yr.textContent,g=p.length;for(t=0;t<o&&a[t]===p[t];t++);var w=o-t;for(u=1;u<=w&&a[o-u]===p[g-u];u++);return Rs=p.slice(t,1<u?1-u:void 0)}function Mi(t){var a=t.keyCode;return"charCode"in t?(t=t.charCode,t===0&&a===13&&(t=13)):t=a,t===10&&(t=13),32<=t||t===13?t:0}function nl(){return!0}function nu(){return!1}function ze(t){function a(o,u,p,g,w){this._reactName=o,this._targetInst=p,this.type=u,this.nativeEvent=g,this.target=w,this.currentTarget=null;for(var R in t)t.hasOwnProperty(R)&&(o=t[R],this[R]=o?o(g):g[R]);return this.isDefaultPrevented=(g.defaultPrevented!=null?g.defaultPrevented:g.returnValue===!1)?nl:nu,this.isPropagationStopped=nu,this}return y(a.prototype,{preventDefault:function(){this.defaultPrevented=!0;var o=this.nativeEvent;o&&(o.preventDefault?o.preventDefault():typeof o.returnValue!="unknown"&&(o.returnValue=!1),this.isDefaultPrevented=nl)},stopPropagation:function(){var o=this.nativeEvent;o&&(o.stopPropagation?o.stopPropagation():typeof o.cancelBubble!="unknown"&&(o.cancelBubble=!0),this.isPropagationStopped=nl)},persist:function(){},isPersistent:nl}),a}var Lr={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(t){return t.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},ha=ze(Lr),Ni=y({},Lr,{view:0,detail:0}),fh=ze(Ni),Ds,rl,Ii,Os=y({},Ni,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:il,button:0,buttons:0,relatedTarget:function(t){return t.relatedTarget===void 0?t.fromElement===t.srcElement?t.toElement:t.fromElement:t.relatedTarget},movementX:function(t){return"movementX"in t?t.movementX:(t!==Ii&&(Ii&&t.type==="mousemove"?(Ds=t.screenX-Ii.screenX,rl=t.screenY-Ii.screenY):rl=Ds=0,Ii=t),Ds)},movementY:function(t){return"movementY"in t?t.movementY:rl}}),ru=ze(Os),hh=y({},Os,{dataTransfer:0}),hb=ze(hh),ph=y({},Ni,{relatedTarget:0}),al=ze(ph),pb=y({},Lr,{animationName:0,elapsedTime:0,pseudoElement:0}),gh=ze(pb),mh=y({},Lr,{clipboardData:function(t){return"clipboardData"in t?t.clipboardData:window.clipboardData}}),au=ze(mh),yh=y({},Lr,{data:0}),iu=ze(yh),bh={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},vh={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"},Sh={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function su(t){var a=this.nativeEvent;return a.getModifierState?a.getModifierState(t):(t=Sh[t])?!!a[t]:!1}function il(){return su}var wh=y({},Ni,{key:function(t){if(t.key){var a=bh[t.key]||t.key;if(a!=="Unidentified")return a}return t.type==="keypress"?(t=Mi(t),t===13?"Enter":String.fromCharCode(t)):t.type==="keydown"||t.type==="keyup"?vh[t.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:il,charCode:function(t){return t.type==="keypress"?Mi(t):0},keyCode:function(t){return t.type==="keydown"||t.type==="keyup"?t.keyCode:0},which:function(t){return t.type==="keypress"?Mi(t):t.type==="keydown"||t.type==="keyup"?t.keyCode:0}}),Ch=ze(wh),Eh=y({},Os,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),ou=ze(Eh),_h=y({},Ni,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:il}),Ah=ze(_h),ln=y({},Lr,{propertyName:0,elapsedTime:0,pseudoElement:0}),Ls=ze(ln),xh=y({},Os,{deltaX:function(t){return"deltaX"in t?t.deltaX:"wheelDeltaX"in t?-t.wheelDeltaX:0},deltaY:function(t){return"deltaY"in t?t.deltaY:"wheelDeltaY"in t?-t.wheelDeltaY:"wheelDelta"in t?-t.wheelDelta:0},deltaZ:0,deltaMode:0}),E=ze(xh),b=y({},Lr,{newState:0,oldState:0}),C=ze(b),D=[9,13,27,32],I=Or&&"CompositionEvent"in window,ne=null;Or&&"documentMode"in document&&(ne=document.documentMode);var me=Or&&"TextEvent"in window&&!ne,$e=Or&&(!I||ne&&8<ne&&11>=ne),Ke=" ",ct=!1;function gt(t,a){switch(t){case"keyup":return D.indexOf(a.keyCode)!==-1;case"keydown":return a.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function zt(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var $r=!1;function Th(t,a){switch(t){case"compositionend":return zt(a);case"keypress":return a.which!==32?null:(ct=!0,Ke);case"textInput":return t=a.data,t===Ke&&ct?null:t;default:return null}}function lu(t,a){if($r)return t==="compositionend"||!I&>(t,a)?(t=tu(),Rs=tl=Yr=null,$r=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(a.ctrlKey||a.altKey||a.metaKey)||a.ctrlKey&&a.altKey){if(a.char&&1<a.char.length)return a.char;if(a.which)return String.fromCharCode(a.which)}return null;case"compositionend":return $e&&a.locale!=="ko"?null:a.data;default:return null}}var kh={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 sl(t){var a=t&&t.nodeName&&t.nodeName.toLowerCase();return a==="input"?!!kh[t.type]:a==="textarea"}function cu(t,a,o,u){Ka?fa?fa.push(u):fa=[u]:Ka=u,a=ed(a,"onChange"),0<a.length&&(o=new ha("onChange","change",null,o,u),t.push({event:o,listeners:a}))}var Wa=null,ji=null;function Rh(t){FS(t,0)}function Hi(t){var a=ua(t);if(Yc(a))return t}function ol(t,a){if(t==="change")return a}var ll=!1;if(Or){var zi;if(Or){var Ui="oninput"in document;if(!Ui){var cl=document.createElement("div");cl.setAttribute("oninput","return;"),Ui=typeof cl.oninput=="function"}zi=Ui}else zi=!1;ll=zi&&(!document.documentMode||9<document.documentMode)}function uu(){Wa&&(Wa.detachEvent("onpropertychange",du),ji=Wa=null)}function du(t){if(t.propertyName==="value"&&Hi(ji)){var a=[];cu(a,ji,t,Zo(t)),eu(Rh,a)}}function Dh(t,a,o){t==="focusin"?(uu(),Wa=a,ji=o,Wa.attachEvent("onpropertychange",du)):t==="focusout"&&uu()}function Oh(t){if(t==="selectionchange"||t==="keyup"||t==="keydown")return Hi(ji)}function fu(t,a){if(t==="click")return Hi(a)}function aT(t,a){if(t==="input"||t==="change")return Hi(a)}function iT(t,a){return t===a&&(t!==0||1/t===1/a)||t!==t&&a!==a}var Yn=typeof Object.is=="function"?Object.is:iT;function ul(t,a){if(Yn(t,a))return!0;if(typeof t!="object"||t===null||typeof a!="object"||a===null)return!1;var o=Object.keys(t),u=Object.keys(a);if(o.length!==u.length)return!1;for(u=0;u<o.length;u++){var p=o[u];if(!hn.call(a,p)||!Yn(t[p],a[p]))return!1}return!0}function gb(t){for(;t&&t.firstChild;)t=t.firstChild;return t}function mb(t,a){var o=gb(t);t=0;for(var u;o;){if(o.nodeType===3){if(u=t+o.textContent.length,t<=a&&u>=a)return{node:o,offset:a-t};t=u}e:{for(;o;){if(o.nextSibling){o=o.nextSibling;break e}o=o.parentNode}o=void 0}o=gb(o)}}function yb(t,a){return t&&a?t===a?!0:t&&t.nodeType===3?!1:a&&a.nodeType===3?yb(t,a.parentNode):"contains"in t?t.contains(a):t.compareDocumentPosition?!!(t.compareDocumentPosition(a)&16):!1:!1}function bb(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var a=qa(t.document);a instanceof t.HTMLIFrameElement;){try{var o=typeof a.contentWindow.location.href=="string"}catch{o=!1}if(o)t=a.contentWindow;else break;a=qa(t.document)}return a}function Lh(t){var a=t&&t.nodeName&&t.nodeName.toLowerCase();return a&&(a==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||a==="textarea"||t.contentEditable==="true")}var sT=Or&&"documentMode"in document&&11>=document.documentMode,$s=null,$h=null,dl=null,Mh=!1;function vb(t,a,o){var u=o.window===o?o.document:o.nodeType===9?o:o.ownerDocument;Mh||$s==null||$s!==qa(u)||(u=$s,"selectionStart"in u&&Lh(u)?u={start:u.selectionStart,end:u.selectionEnd}:(u=(u.ownerDocument&&u.ownerDocument.defaultView||window).getSelection(),u={anchorNode:u.anchorNode,anchorOffset:u.anchorOffset,focusNode:u.focusNode,focusOffset:u.focusOffset}),dl&&ul(dl,u)||(dl=u,u=ed($h,"onSelect"),0<u.length&&(a=new ha("onSelect","select",null,a,o),t.push({event:a,listeners:u}),a.target=$s)))}function Pi(t,a){var o={};return o[t.toLowerCase()]=a.toLowerCase(),o["Webkit"+t]="webkit"+a,o["Moz"+t]="moz"+a,o}var Ms={animationend:Pi("Animation","AnimationEnd"),animationiteration:Pi("Animation","AnimationIteration"),animationstart:Pi("Animation","AnimationStart"),transitionrun:Pi("Transition","TransitionRun"),transitionstart:Pi("Transition","TransitionStart"),transitioncancel:Pi("Transition","TransitionCancel"),transitionend:Pi("Transition","TransitionEnd")},Nh={},Sb={};Or&&(Sb=document.createElement("div").style,"AnimationEvent"in window||(delete Ms.animationend.animation,delete Ms.animationiteration.animation,delete Ms.animationstart.animation),"TransitionEvent"in window||delete Ms.transitionend.transition);function Bi(t){if(Nh[t])return Nh[t];if(!Ms[t])return t;var a=Ms[t],o;for(o in a)if(a.hasOwnProperty(o)&&o in Sb)return Nh[t]=a[o];return t}var wb=Bi("animationend"),Cb=Bi("animationiteration"),Eb=Bi("animationstart"),oT=Bi("transitionrun"),lT=Bi("transitionstart"),cT=Bi("transitioncancel"),_b=Bi("transitionend"),Ab=new Map,Ih="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(" ");Ih.push("scrollEnd");function Mr(t,a){Ab.set(t,a),Rr(a,[t])}var hu=typeof reportError=="function"?reportError:function(t){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var a=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof t=="object"&&t!==null&&typeof t.message=="string"?String(t.message):String(t),error:t});if(!window.dispatchEvent(a))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",t);return}console.error(t)},ur=[],Ns=0,jh=0;function pu(){for(var t=Ns,a=jh=Ns=0;a<t;){var o=ur[a];ur[a++]=null;var u=ur[a];ur[a++]=null;var p=ur[a];ur[a++]=null;var g=ur[a];if(ur[a++]=null,u!==null&&p!==null){var w=u.pending;w===null?p.next=p:(p.next=w.next,w.next=p),u.pending=p}g!==0&&xb(o,p,g)}}function gu(t,a,o,u){ur[Ns++]=t,ur[Ns++]=a,ur[Ns++]=o,ur[Ns++]=u,jh|=u,t.lanes|=u,t=t.alternate,t!==null&&(t.lanes|=u)}function Hh(t,a,o,u){return gu(t,a,o,u),mu(t)}function qi(t,a){return gu(t,null,null,a),mu(t)}function xb(t,a,o){t.lanes|=o;var u=t.alternate;u!==null&&(u.lanes|=o);for(var p=!1,g=t.return;g!==null;)g.childLanes|=o,u=g.alternate,u!==null&&(u.childLanes|=o),g.tag===22&&(t=g.stateNode,t===null||t._visibility&1||(p=!0)),t=g,g=g.return;return t.tag===3?(g=t.stateNode,p&&a!==null&&(p=31-on(o),t=g.hiddenUpdates,u=t[p],u===null?t[p]=[a]:u.push(a),a.lane=o|536870912),g):null}function mu(t){if(50<$l)throw $l=0,Kp=null,Error(r(185));for(var a=t.return;a!==null;)t=a,a=t.return;return t.tag===3?t.stateNode:null}var Is={};function uT(t,a,o,u){this.tag=t,this.key=o,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=a,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=u,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Xn(t,a,o,u){return new uT(t,a,o,u)}function zh(t){return t=t.prototype,!(!t||!t.isReactComponent)}function pa(t,a){var o=t.alternate;return o===null?(o=Xn(t.tag,a,t.key,t.mode),o.elementType=t.elementType,o.type=t.type,o.stateNode=t.stateNode,o.alternate=t,t.alternate=o):(o.pendingProps=a,o.type=t.type,o.flags=0,o.subtreeFlags=0,o.deletions=null),o.flags=t.flags&65011712,o.childLanes=t.childLanes,o.lanes=t.lanes,o.child=t.child,o.memoizedProps=t.memoizedProps,o.memoizedState=t.memoizedState,o.updateQueue=t.updateQueue,a=t.dependencies,o.dependencies=a===null?null:{lanes:a.lanes,firstContext:a.firstContext},o.sibling=t.sibling,o.index=t.index,o.ref=t.ref,o.refCleanup=t.refCleanup,o}function Tb(t,a){t.flags&=65011714;var o=t.alternate;return o===null?(t.childLanes=0,t.lanes=a,t.child=null,t.subtreeFlags=0,t.memoizedProps=null,t.memoizedState=null,t.updateQueue=null,t.dependencies=null,t.stateNode=null):(t.childLanes=o.childLanes,t.lanes=o.lanes,t.child=o.child,t.subtreeFlags=0,t.deletions=null,t.memoizedProps=o.memoizedProps,t.memoizedState=o.memoizedState,t.updateQueue=o.updateQueue,t.type=o.type,a=o.dependencies,t.dependencies=a===null?null:{lanes:a.lanes,firstContext:a.firstContext}),t}function yu(t,a,o,u,p,g){var w=0;if(u=t,typeof t=="function")zh(t)&&(w=1);else if(typeof t=="string")w=gk(t,o,de.current)?26:t==="html"||t==="head"||t==="body"?27:5;else e:switch(t){case pe:return t=Xn(31,o,a,p),t.elementType=pe,t.lanes=g,t;case x:return Gi(o.children,p,g,a);case A:w=8,p|=24;break;case L:return t=Xn(12,o,a,p|2),t.elementType=L,t.lanes=g,t;case P:return t=Xn(13,o,a,p),t.elementType=P,t.lanes=g,t;case G:return t=Xn(19,o,a,p),t.elementType=G,t.lanes=g,t;default:if(typeof t=="object"&&t!==null)switch(t.$$typeof){case k:w=10;break e;case $:w=9;break e;case O:w=11;break e;case B:w=14;break e;case W:w=16,u=null;break e}w=29,o=Error(r(130,t===null?"null":typeof t,"")),u=null}return a=Xn(w,o,a,p),a.elementType=t,a.type=u,a.lanes=g,a}function Gi(t,a,o,u){return t=Xn(7,t,u,a),t.lanes=o,t}function Uh(t,a,o){return t=Xn(6,t,null,a),t.lanes=o,t}function kb(t){var a=Xn(18,null,null,0);return a.stateNode=t,a}function Ph(t,a,o){return a=Xn(4,t.children!==null?t.children:[],t.key,a),a.lanes=o,a.stateNode={containerInfo:t.containerInfo,pendingChildren:null,implementation:t.implementation},a}var Rb=new WeakMap;function dr(t,a){if(typeof t=="object"&&t!==null){var o=Rb.get(t);return o!==void 0?o:(a={value:t,source:a,stack:Fr(a)},Rb.set(t,a),a)}return{value:t,source:a,stack:Fr(a)}}var js=[],Hs=0,bu=null,fl=0,fr=[],hr=0,Ya=null,Xr=1,Jr="";function ga(t,a){js[Hs++]=fl,js[Hs++]=bu,bu=t,fl=a}function Db(t,a,o){fr[hr++]=Xr,fr[hr++]=Jr,fr[hr++]=Ya,Ya=t;var u=Xr;t=Jr;var p=32-on(u)-1;u&=~(1<<p),o+=1;var g=32-on(a)+p;if(30<g){var w=p-p%5;g=(u&(1<<w)-1).toString(32),u>>=w,p-=w,Xr=1<<32-on(a)+p|o<<p|u,Jr=g+t}else Xr=1<<g|o<<p|u,Jr=t}function Bh(t){t.return!==null&&(ga(t,1),Db(t,1,0))}function qh(t){for(;t===bu;)bu=js[--Hs],js[Hs]=null,fl=js[--Hs],js[Hs]=null;for(;t===Ya;)Ya=fr[--hr],fr[hr]=null,Jr=fr[--hr],fr[hr]=null,Xr=fr[--hr],fr[hr]=null}function Ob(t,a){fr[hr++]=Xr,fr[hr++]=Jr,fr[hr++]=Ya,Xr=a.id,Jr=a.overflow,Ya=t}var bn=null,Lt=null,ut=!1,Xa=null,pr=!1,Gh=Error(r(519));function Ja(t){var a=Error(r(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw hl(dr(a,t)),Gh}function Lb(t){var a=t.stateNode,o=t.type,u=t.memoizedProps;switch(a[Ht]=t,a[An]=u,o){case"dialog":at("cancel",a),at("close",a);break;case"iframe":case"object":case"embed":at("load",a);break;case"video":case"audio":for(o=0;o<Nl.length;o++)at(Nl[o],a);break;case"source":at("error",a);break;case"img":case"image":case"link":at("error",a),at("load",a);break;case"details":at("toggle",a);break;case"input":at("invalid",a),Oi(a,u.value,u.defaultValue,u.checked,u.defaultChecked,u.type,u.name,!0);break;case"select":at("invalid",a);break;case"textarea":at("invalid",a),Xc(a,u.value,u.defaultValue,u.children)}o=u.children,typeof o!="string"&&typeof o!="number"&&typeof o!="bigint"||a.textContent===""+o||u.suppressHydrationWarning===!0||YS(a.textContent,o)?(u.popover!=null&&(at("beforetoggle",a),at("toggle",a)),u.onScroll!=null&&at("scroll",a),u.onScrollEnd!=null&&at("scrollend",a),u.onClick!=null&&(a.onclick=Dr),a=!0):a=!1,a||Ja(t,!0)}function $b(t){for(bn=t.return;bn;)switch(bn.tag){case 5:case 31:case 13:pr=!1;return;case 27:case 3:pr=!0;return;default:bn=bn.return}}function zs(t){if(t!==bn)return!1;if(!ut)return $b(t),ut=!0,!1;var a=t.tag,o;if((o=a!==3&&a!==27)&&((o=a===5)&&(o=t.type,o=!(o!=="form"&&o!=="button")||lg(t.type,t.memoizedProps)),o=!o),o&&Lt&&Ja(t),$b(t),a===13){if(t=t.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(r(317));Lt=aw(t)}else if(a===31){if(t=t.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(r(317));Lt=aw(t)}else a===27?(a=Lt,di(t.type)?(t=hg,hg=null,Lt=t):Lt=a):Lt=bn?mr(t.stateNode.nextSibling):null;return!0}function Fi(){Lt=bn=null,ut=!1}function Fh(){var t=Xa;return t!==null&&(Bn===null?Bn=t:Bn.push.apply(Bn,t),Xa=null),t}function hl(t){Xa===null?Xa=[t]:Xa.push(t)}var Vh=H(null),Vi=null,ma=null;function Qa(t,a,o){ce(Vh,a._currentValue),a._currentValue=o}function ya(t){t._currentValue=Vh.current,T(Vh)}function Kh(t,a,o){for(;t!==null;){var u=t.alternate;if((t.childLanes&a)!==a?(t.childLanes|=a,u!==null&&(u.childLanes|=a)):u!==null&&(u.childLanes&a)!==a&&(u.childLanes|=a),t===o)break;t=t.return}}function Wh(t,a,o,u){var p=t.child;for(p!==null&&(p.return=t);p!==null;){var g=p.dependencies;if(g!==null){var w=p.child;g=g.firstContext;e:for(;g!==null;){var R=g;g=p;for(var z=0;z<a.length;z++)if(R.context===a[z]){g.lanes|=o,R=g.alternate,R!==null&&(R.lanes|=o),Kh(g.return,o,t),u||(w=null);break e}g=R.next}}else if(p.tag===18){if(w=p.return,w===null)throw Error(r(341));w.lanes|=o,g=w.alternate,g!==null&&(g.lanes|=o),Kh(w,o,t),w=null}else w=p.child;if(w!==null)w.return=p;else for(w=p;w!==null;){if(w===t){w=null;break}if(p=w.sibling,p!==null){p.return=w.return,w=p;break}w=w.return}p=w}}function Us(t,a,o,u){t=null;for(var p=a,g=!1;p!==null;){if(!g){if((p.flags&524288)!==0)g=!0;else if((p.flags&262144)!==0)break}if(p.tag===10){var w=p.alternate;if(w===null)throw Error(r(387));if(w=w.memoizedProps,w!==null){var R=p.type;Yn(p.pendingProps.value,w.value)||(t!==null?t.push(R):t=[R])}}else if(p===xe.current){if(w=p.alternate,w===null)throw Error(r(387));w.memoizedState.memoizedState!==p.memoizedState.memoizedState&&(t!==null?t.push(Ul):t=[Ul])}p=p.return}t!==null&&Wh(a,t,o,u),a.flags|=262144}function vu(t){for(t=t.firstContext;t!==null;){if(!Yn(t.context._currentValue,t.memoizedValue))return!0;t=t.next}return!1}function Ki(t){Vi=t,ma=null,t=t.dependencies,t!==null&&(t.firstContext=null)}function vn(t){return Mb(Vi,t)}function Su(t,a){return Vi===null&&Ki(t),Mb(t,a)}function Mb(t,a){var o=a._currentValue;if(a={context:a,memoizedValue:o,next:null},ma===null){if(t===null)throw Error(r(308));ma=a,t.dependencies={lanes:0,firstContext:a},t.flags|=524288}else ma=ma.next=a;return o}var dT=typeof AbortController<"u"?AbortController:function(){var t=[],a=this.signal={aborted:!1,addEventListener:function(o,u){t.push(u)}};this.abort=function(){a.aborted=!0,t.forEach(function(o){return o()})}},fT=s.unstable_scheduleCallback,hT=s.unstable_NormalPriority,Qt={$$typeof:k,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Yh(){return{controller:new dT,data:new Map,refCount:0}}function pl(t){t.refCount--,t.refCount===0&&fT(hT,function(){t.controller.abort()})}var gl=null,Xh=0,Ps=0,Bs=null;function pT(t,a){if(gl===null){var o=gl=[];Xh=0,Ps=Zp(),Bs={status:"pending",value:void 0,then:function(u){o.push(u)}}}return Xh++,a.then(Nb,Nb),a}function Nb(){if(--Xh===0&&gl!==null){Bs!==null&&(Bs.status="fulfilled");var t=gl;gl=null,Ps=0,Bs=null;for(var a=0;a<t.length;a++)(0,t[a])()}}function gT(t,a){var o=[],u={status:"pending",value:null,reason:null,then:function(p){o.push(p)}};return t.then(function(){u.status="fulfilled",u.value=a;for(var p=0;p<o.length;p++)(0,o[p])(a)},function(p){for(u.status="rejected",u.reason=p,p=0;p<o.length;p++)(0,o[p])(void 0)}),u}var Ib=J.S;J.S=function(t,a){vS=qt(),typeof a=="object"&&a!==null&&typeof a.then=="function"&&pT(t,a),Ib!==null&&Ib(t,a)};var Wi=H(null);function Jh(){var t=Wi.current;return t!==null?t:Dt.pooledCache}function wu(t,a){a===null?ce(Wi,Wi.current):ce(Wi,a.pool)}function jb(){var t=Jh();return t===null?null:{parent:Qt._currentValue,pool:t}}var qs=Error(r(460)),Qh=Error(r(474)),Cu=Error(r(542)),Eu={then:function(){}};function Hb(t){return t=t.status,t==="fulfilled"||t==="rejected"}function zb(t,a,o){switch(o=t[o],o===void 0?t.push(a):o!==a&&(a.then(Dr,Dr),a=o),a.status){case"fulfilled":return a.value;case"rejected":throw t=a.reason,Pb(t),t;default:if(typeof a.status=="string")a.then(Dr,Dr);else{if(t=Dt,t!==null&&100<t.shellSuspendCounter)throw Error(r(482));t=a,t.status="pending",t.then(function(u){if(a.status==="pending"){var p=a;p.status="fulfilled",p.value=u}},function(u){if(a.status==="pending"){var p=a;p.status="rejected",p.reason=u}})}switch(a.status){case"fulfilled":return a.value;case"rejected":throw t=a.reason,Pb(t),t}throw Xi=a,qs}}function Yi(t){try{var a=t._init;return a(t._payload)}catch(o){throw o!==null&&typeof o=="object"&&typeof o.then=="function"?(Xi=o,qs):o}}var Xi=null;function Ub(){if(Xi===null)throw Error(r(459));var t=Xi;return Xi=null,t}function Pb(t){if(t===qs||t===Cu)throw Error(r(483))}var Gs=null,ml=0;function _u(t){var a=ml;return ml+=1,Gs===null&&(Gs=[]),zb(Gs,t,a)}function yl(t,a){a=a.props.ref,t.ref=a!==void 0?a:null}function Au(t,a){throw a.$$typeof===S?Error(r(525)):(t=Object.prototype.toString.call(a),Error(r(31,t==="[object Object]"?"object with keys {"+Object.keys(a).join(", ")+"}":t)))}function Bb(t){function a(V,q){if(t){var Y=V.deletions;Y===null?(V.deletions=[q],V.flags|=16):Y.push(q)}}function o(V,q){if(!t)return null;for(;q!==null;)a(V,q),q=q.sibling;return null}function u(V){for(var q=new Map;V!==null;)V.key!==null?q.set(V.key,V):q.set(V.index,V),V=V.sibling;return q}function p(V,q){return V=pa(V,q),V.index=0,V.sibling=null,V}function g(V,q,Y){return V.index=Y,t?(Y=V.alternate,Y!==null?(Y=Y.index,Y<q?(V.flags|=67108866,q):Y):(V.flags|=67108866,q)):(V.flags|=1048576,q)}function w(V){return t&&V.alternate===null&&(V.flags|=67108866),V}function R(V,q,Y,oe){return q===null||q.tag!==6?(q=Uh(Y,V.mode,oe),q.return=V,q):(q=p(q,Y),q.return=V,q)}function z(V,q,Y,oe){var Pe=Y.type;return Pe===x?re(V,q,Y.props.children,oe,Y.key):q!==null&&(q.elementType===Pe||typeof Pe=="object"&&Pe!==null&&Pe.$$typeof===W&&Yi(Pe)===q.type)?(q=p(q,Y.props),yl(q,Y),q.return=V,q):(q=yu(Y.type,Y.key,Y.props,null,V.mode,oe),yl(q,Y),q.return=V,q)}function X(V,q,Y,oe){return q===null||q.tag!==4||q.stateNode.containerInfo!==Y.containerInfo||q.stateNode.implementation!==Y.implementation?(q=Ph(Y,V.mode,oe),q.return=V,q):(q=p(q,Y.children||[]),q.return=V,q)}function re(V,q,Y,oe,Pe){return q===null||q.tag!==7?(q=Gi(Y,V.mode,oe,Pe),q.return=V,q):(q=p(q,Y),q.return=V,q)}function le(V,q,Y){if(typeof q=="string"&&q!==""||typeof q=="number"||typeof q=="bigint")return q=Uh(""+q,V.mode,Y),q.return=V,q;if(typeof q=="object"&&q!==null){switch(q.$$typeof){case v:return Y=yu(q.type,q.key,q.props,null,V.mode,Y),yl(Y,q),Y.return=V,Y;case _:return q=Ph(q,V.mode,Y),q.return=V,q;case W:return q=Yi(q),le(V,q,Y)}if(wt(q)||Ue(q))return q=Gi(q,V.mode,Y,null),q.return=V,q;if(typeof q.then=="function")return le(V,_u(q),Y);if(q.$$typeof===k)return le(V,Su(V,q),Y);Au(V,q)}return null}function Q(V,q,Y,oe){var Pe=q!==null?q.key:null;if(typeof Y=="string"&&Y!==""||typeof Y=="number"||typeof Y=="bigint")return Pe!==null?null:R(V,q,""+Y,oe);if(typeof Y=="object"&&Y!==null){switch(Y.$$typeof){case v:return Y.key===Pe?z(V,q,Y,oe):null;case _:return Y.key===Pe?X(V,q,Y,oe):null;case W:return Y=Yi(Y),Q(V,q,Y,oe)}if(wt(Y)||Ue(Y))return Pe!==null?null:re(V,q,Y,oe,null);if(typeof Y.then=="function")return Q(V,q,_u(Y),oe);if(Y.$$typeof===k)return Q(V,q,Su(V,Y),oe);Au(V,Y)}return null}function te(V,q,Y,oe,Pe){if(typeof oe=="string"&&oe!==""||typeof oe=="number"||typeof oe=="bigint")return V=V.get(Y)||null,R(q,V,""+oe,Pe);if(typeof oe=="object"&&oe!==null){switch(oe.$$typeof){case v:return V=V.get(oe.key===null?Y:oe.key)||null,z(q,V,oe,Pe);case _:return V=V.get(oe.key===null?Y:oe.key)||null,X(q,V,oe,Pe);case W:return oe=Yi(oe),te(V,q,Y,oe,Pe)}if(wt(oe)||Ue(oe))return V=V.get(Y)||null,re(q,V,oe,Pe,null);if(typeof oe.then=="function")return te(V,q,Y,_u(oe),Pe);if(oe.$$typeof===k)return te(V,q,Y,Su(q,oe),Pe);Au(q,oe)}return null}function De(V,q,Y,oe){for(var Pe=null,mt=null,Ie=q,Qe=q=0,ot=null;Ie!==null&&Qe<Y.length;Qe++){Ie.index>Qe?(ot=Ie,Ie=null):ot=Ie.sibling;var yt=Q(V,Ie,Y[Qe],oe);if(yt===null){Ie===null&&(Ie=ot);break}t&&Ie&&yt.alternate===null&&a(V,Ie),q=g(yt,q,Qe),mt===null?Pe=yt:mt.sibling=yt,mt=yt,Ie=ot}if(Qe===Y.length)return o(V,Ie),ut&&ga(V,Qe),Pe;if(Ie===null){for(;Qe<Y.length;Qe++)Ie=le(V,Y[Qe],oe),Ie!==null&&(q=g(Ie,q,Qe),mt===null?Pe=Ie:mt.sibling=Ie,mt=Ie);return ut&&ga(V,Qe),Pe}for(Ie=u(Ie);Qe<Y.length;Qe++)ot=te(Ie,V,Qe,Y[Qe],oe),ot!==null&&(t&&ot.alternate!==null&&Ie.delete(ot.key===null?Qe:ot.key),q=g(ot,q,Qe),mt===null?Pe=ot:mt.sibling=ot,mt=ot);return t&&Ie.forEach(function(mi){return a(V,mi)}),ut&&ga(V,Qe),Pe}function Be(V,q,Y,oe){if(Y==null)throw Error(r(151));for(var Pe=null,mt=null,Ie=q,Qe=q=0,ot=null,yt=Y.next();Ie!==null&&!yt.done;Qe++,yt=Y.next()){Ie.index>Qe?(ot=Ie,Ie=null):ot=Ie.sibling;var mi=Q(V,Ie,yt.value,oe);if(mi===null){Ie===null&&(Ie=ot);break}t&&Ie&&mi.alternate===null&&a(V,Ie),q=g(mi,q,Qe),mt===null?Pe=mi:mt.sibling=mi,mt=mi,Ie=ot}if(yt.done)return o(V,Ie),ut&&ga(V,Qe),Pe;if(Ie===null){for(;!yt.done;Qe++,yt=Y.next())yt=le(V,yt.value,oe),yt!==null&&(q=g(yt,q,Qe),mt===null?Pe=yt:mt.sibling=yt,mt=yt);return ut&&ga(V,Qe),Pe}for(Ie=u(Ie);!yt.done;Qe++,yt=Y.next())yt=te(Ie,V,Qe,yt.value,oe),yt!==null&&(t&&yt.alternate!==null&&Ie.delete(yt.key===null?Qe:yt.key),q=g(yt,q,Qe),mt===null?Pe=yt:mt.sibling=yt,mt=yt);return t&&Ie.forEach(function(xk){return a(V,xk)}),ut&&ga(V,Qe),Pe}function kt(V,q,Y,oe){if(typeof Y=="object"&&Y!==null&&Y.type===x&&Y.key===null&&(Y=Y.props.children),typeof Y=="object"&&Y!==null){switch(Y.$$typeof){case v:e:{for(var Pe=Y.key;q!==null;){if(q.key===Pe){if(Pe=Y.type,Pe===x){if(q.tag===7){o(V,q.sibling),oe=p(q,Y.props.children),oe.return=V,V=oe;break e}}else if(q.elementType===Pe||typeof Pe=="object"&&Pe!==null&&Pe.$$typeof===W&&Yi(Pe)===q.type){o(V,q.sibling),oe=p(q,Y.props),yl(oe,Y),oe.return=V,V=oe;break e}o(V,q);break}else a(V,q);q=q.sibling}Y.type===x?(oe=Gi(Y.props.children,V.mode,oe,Y.key),oe.return=V,V=oe):(oe=yu(Y.type,Y.key,Y.props,null,V.mode,oe),yl(oe,Y),oe.return=V,V=oe)}return w(V);case _:e:{for(Pe=Y.key;q!==null;){if(q.key===Pe)if(q.tag===4&&q.stateNode.containerInfo===Y.containerInfo&&q.stateNode.implementation===Y.implementation){o(V,q.sibling),oe=p(q,Y.children||[]),oe.return=V,V=oe;break e}else{o(V,q);break}else a(V,q);q=q.sibling}oe=Ph(Y,V.mode,oe),oe.return=V,V=oe}return w(V);case W:return Y=Yi(Y),kt(V,q,Y,oe)}if(wt(Y))return De(V,q,Y,oe);if(Ue(Y)){if(Pe=Ue(Y),typeof Pe!="function")throw Error(r(150));return Y=Pe.call(Y),Be(V,q,Y,oe)}if(typeof Y.then=="function")return kt(V,q,_u(Y),oe);if(Y.$$typeof===k)return kt(V,q,Su(V,Y),oe);Au(V,Y)}return typeof Y=="string"&&Y!==""||typeof Y=="number"||typeof Y=="bigint"?(Y=""+Y,q!==null&&q.tag===6?(o(V,q.sibling),oe=p(q,Y),oe.return=V,V=oe):(o(V,q),oe=Uh(Y,V.mode,oe),oe.return=V,V=oe),w(V)):o(V,q)}return function(V,q,Y,oe){try{ml=0;var Pe=kt(V,q,Y,oe);return Gs=null,Pe}catch(Ie){if(Ie===qs||Ie===Cu)throw Ie;var mt=Xn(29,Ie,null,V.mode);return mt.lanes=oe,mt.return=V,mt}}}var Ji=Bb(!0),qb=Bb(!1),Za=!1;function Zh(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function ep(t,a){t=t.updateQueue,a.updateQueue===t&&(a.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function ei(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function ti(t,a,o){var u=t.updateQueue;if(u===null)return null;if(u=u.shared,(vt&2)!==0){var p=u.pending;return p===null?a.next=a:(a.next=p.next,p.next=a),u.pending=a,a=mu(t),xb(t,null,o),a}return gu(t,u,a,o),mu(t)}function bl(t,a,o){if(a=a.updateQueue,a!==null&&(a=a.shared,(o&4194048)!==0)){var u=a.lanes;u&=t.pendingLanes,o|=u,a.lanes=o,Ce(t,o)}}function tp(t,a){var o=t.updateQueue,u=t.alternate;if(u!==null&&(u=u.updateQueue,o===u)){var p=null,g=null;if(o=o.firstBaseUpdate,o!==null){do{var w={lane:o.lane,tag:o.tag,payload:o.payload,callback:null,next:null};g===null?p=g=w:g=g.next=w,o=o.next}while(o!==null);g===null?p=g=a:g=g.next=a}else p=g=a;o={baseState:u.baseState,firstBaseUpdate:p,lastBaseUpdate:g,shared:u.shared,callbacks:u.callbacks},t.updateQueue=o;return}t=o.lastBaseUpdate,t===null?o.firstBaseUpdate=a:t.next=a,o.lastBaseUpdate=a}var np=!1;function vl(){if(np){var t=Bs;if(t!==null)throw t}}function Sl(t,a,o,u){np=!1;var p=t.updateQueue;Za=!1;var g=p.firstBaseUpdate,w=p.lastBaseUpdate,R=p.shared.pending;if(R!==null){p.shared.pending=null;var z=R,X=z.next;z.next=null,w===null?g=X:w.next=X,w=z;var re=t.alternate;re!==null&&(re=re.updateQueue,R=re.lastBaseUpdate,R!==w&&(R===null?re.firstBaseUpdate=X:R.next=X,re.lastBaseUpdate=z))}if(g!==null){var le=p.baseState;w=0,re=X=z=null,R=g;do{var Q=R.lane&-536870913,te=Q!==R.lane;if(te?(st&Q)===Q:(u&Q)===Q){Q!==0&&Q===Ps&&(np=!0),re!==null&&(re=re.next={lane:0,tag:R.tag,payload:R.payload,callback:null,next:null});e:{var De=t,Be=R;Q=a;var kt=o;switch(Be.tag){case 1:if(De=Be.payload,typeof De=="function"){le=De.call(kt,le,Q);break e}le=De;break e;case 3:De.flags=De.flags&-65537|128;case 0:if(De=Be.payload,Q=typeof De=="function"?De.call(kt,le,Q):De,Q==null)break e;le=y({},le,Q);break e;case 2:Za=!0}}Q=R.callback,Q!==null&&(t.flags|=64,te&&(t.flags|=8192),te=p.callbacks,te===null?p.callbacks=[Q]:te.push(Q))}else te={lane:Q,tag:R.tag,payload:R.payload,callback:R.callback,next:null},re===null?(X=re=te,z=le):re=re.next=te,w|=Q;if(R=R.next,R===null){if(R=p.shared.pending,R===null)break;te=R,R=te.next,te.next=null,p.lastBaseUpdate=te,p.shared.pending=null}}while(!0);re===null&&(z=le),p.baseState=z,p.firstBaseUpdate=X,p.lastBaseUpdate=re,g===null&&(p.shared.lanes=0),si|=w,t.lanes=w,t.memoizedState=le}}function Gb(t,a){if(typeof t!="function")throw Error(r(191,t));t.call(a)}function Fb(t,a){var o=t.callbacks;if(o!==null)for(t.callbacks=null,t=0;t<o.length;t++)Gb(o[t],a)}var Fs=H(null),xu=H(0);function Vb(t,a){t=xa,ce(xu,t),ce(Fs,a),xa=t|a.baseLanes}function rp(){ce(xu,xa),ce(Fs,Fs.current)}function ap(){xa=xu.current,T(Fs),T(xu)}var Jn=H(null),gr=null;function ni(t){var a=t.alternate;ce(Wt,Wt.current&1),ce(Jn,t),gr===null&&(a===null||Fs.current!==null||a.memoizedState!==null)&&(gr=t)}function ip(t){ce(Wt,Wt.current),ce(Jn,t),gr===null&&(gr=t)}function Kb(t){t.tag===22?(ce(Wt,Wt.current),ce(Jn,t),gr===null&&(gr=t)):ri()}function ri(){ce(Wt,Wt.current),ce(Jn,Jn.current)}function Qn(t){T(Jn),gr===t&&(gr=null),T(Wt)}var Wt=H(0);function Tu(t){for(var a=t;a!==null;){if(a.tag===13){var o=a.memoizedState;if(o!==null&&(o=o.dehydrated,o===null||dg(o)||fg(o)))return a}else if(a.tag===19&&(a.memoizedProps.revealOrder==="forwards"||a.memoizedProps.revealOrder==="backwards"||a.memoizedProps.revealOrder==="unstable_legacy-backwards"||a.memoizedProps.revealOrder==="together")){if((a.flags&128)!==0)return a}else if(a.child!==null){a.child.return=a,a=a.child;continue}if(a===t)break;for(;a.sibling===null;){if(a.return===null||a.return===t)return null;a=a.return}a.sibling.return=a.return,a=a.sibling}return null}var ba=0,Xe=null,xt=null,Zt=null,ku=!1,Vs=!1,Qi=!1,Ru=0,wl=0,Ks=null,mT=0;function Gt(){throw Error(r(321))}function sp(t,a){if(a===null)return!1;for(var o=0;o<a.length&&o<t.length;o++)if(!Yn(t[o],a[o]))return!1;return!0}function op(t,a,o,u,p,g){return ba=g,Xe=a,a.memoizedState=null,a.updateQueue=null,a.lanes=0,J.H=t===null||t.memoizedState===null?Dv:Cp,Qi=!1,g=o(u,p),Qi=!1,Vs&&(g=Yb(a,o,u,p)),Wb(t),g}function Wb(t){J.H=_l;var a=xt!==null&&xt.next!==null;if(ba=0,Zt=xt=Xe=null,ku=!1,wl=0,Ks=null,a)throw Error(r(300));t===null||en||(t=t.dependencies,t!==null&&vu(t)&&(en=!0))}function Yb(t,a,o,u){Xe=t;var p=0;do{if(Vs&&(Ks=null),wl=0,Vs=!1,25<=p)throw Error(r(301));if(p+=1,Zt=xt=null,t.updateQueue!=null){var g=t.updateQueue;g.lastEffect=null,g.events=null,g.stores=null,g.memoCache!=null&&(g.memoCache.index=0)}J.H=Ov,g=a(o,u)}while(Vs);return g}function yT(){var t=J.H,a=t.useState()[0];return a=typeof a.then=="function"?Cl(a):a,t=t.useState()[0],(xt!==null?xt.memoizedState:null)!==t&&(Xe.flags|=1024),a}function lp(){var t=Ru!==0;return Ru=0,t}function cp(t,a,o){a.updateQueue=t.updateQueue,a.flags&=-2053,t.lanes&=~o}function up(t){if(ku){for(t=t.memoizedState;t!==null;){var a=t.queue;a!==null&&(a.pending=null),t=t.next}ku=!1}ba=0,Zt=xt=Xe=null,Vs=!1,wl=Ru=0,Ks=null}function Ln(){var t={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Zt===null?Xe.memoizedState=Zt=t:Zt=Zt.next=t,Zt}function Yt(){if(xt===null){var t=Xe.alternate;t=t!==null?t.memoizedState:null}else t=xt.next;var a=Zt===null?Xe.memoizedState:Zt.next;if(a!==null)Zt=a,xt=t;else{if(t===null)throw Xe.alternate===null?Error(r(467)):Error(r(310));xt=t,t={memoizedState:xt.memoizedState,baseState:xt.baseState,baseQueue:xt.baseQueue,queue:xt.queue,next:null},Zt===null?Xe.memoizedState=Zt=t:Zt=Zt.next=t}return Zt}function Du(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Cl(t){var a=wl;return wl+=1,Ks===null&&(Ks=[]),t=zb(Ks,t,a),a=Xe,(Zt===null?a.memoizedState:Zt.next)===null&&(a=a.alternate,J.H=a===null||a.memoizedState===null?Dv:Cp),t}function Ou(t){if(t!==null&&typeof t=="object"){if(typeof t.then=="function")return Cl(t);if(t.$$typeof===k)return vn(t)}throw Error(r(438,String(t)))}function dp(t){var a=null,o=Xe.updateQueue;if(o!==null&&(a=o.memoCache),a==null){var u=Xe.alternate;u!==null&&(u=u.updateQueue,u!==null&&(u=u.memoCache,u!=null&&(a={data:u.data.map(function(p){return p.slice()}),index:0})))}if(a==null&&(a={data:[],index:0}),o===null&&(o=Du(),Xe.updateQueue=o),o.memoCache=a,o=a.data[a.index],o===void 0)for(o=a.data[a.index]=Array(t),u=0;u<t;u++)o[u]=Se;return a.index++,o}function va(t,a){return typeof a=="function"?a(t):a}function Lu(t){var a=Yt();return fp(a,xt,t)}function fp(t,a,o){var u=t.queue;if(u===null)throw Error(r(311));u.lastRenderedReducer=o;var p=t.baseQueue,g=u.pending;if(g!==null){if(p!==null){var w=p.next;p.next=g.next,g.next=w}a.baseQueue=p=g,u.pending=null}if(g=t.baseState,p===null)t.memoizedState=g;else{a=p.next;var R=w=null,z=null,X=a,re=!1;do{var le=X.lane&-536870913;if(le!==X.lane?(st&le)===le:(ba&le)===le){var Q=X.revertLane;if(Q===0)z!==null&&(z=z.next={lane:0,revertLane:0,gesture:null,action:X.action,hasEagerState:X.hasEagerState,eagerState:X.eagerState,next:null}),le===Ps&&(re=!0);else if((ba&Q)===Q){X=X.next,Q===Ps&&(re=!0);continue}else le={lane:0,revertLane:X.revertLane,gesture:null,action:X.action,hasEagerState:X.hasEagerState,eagerState:X.eagerState,next:null},z===null?(R=z=le,w=g):z=z.next=le,Xe.lanes|=Q,si|=Q;le=X.action,Qi&&o(g,le),g=X.hasEagerState?X.eagerState:o(g,le)}else Q={lane:le,revertLane:X.revertLane,gesture:X.gesture,action:X.action,hasEagerState:X.hasEagerState,eagerState:X.eagerState,next:null},z===null?(R=z=Q,w=g):z=z.next=Q,Xe.lanes|=le,si|=le;X=X.next}while(X!==null&&X!==a);if(z===null?w=g:z.next=R,!Yn(g,t.memoizedState)&&(en=!0,re&&(o=Bs,o!==null)))throw o;t.memoizedState=g,t.baseState=w,t.baseQueue=z,u.lastRenderedState=g}return p===null&&(u.lanes=0),[t.memoizedState,u.dispatch]}function hp(t){var a=Yt(),o=a.queue;if(o===null)throw Error(r(311));o.lastRenderedReducer=t;var u=o.dispatch,p=o.pending,g=a.memoizedState;if(p!==null){o.pending=null;var w=p=p.next;do g=t(g,w.action),w=w.next;while(w!==p);Yn(g,a.memoizedState)||(en=!0),a.memoizedState=g,a.baseQueue===null&&(a.baseState=g),o.lastRenderedState=g}return[g,u]}function Xb(t,a,o){var u=Xe,p=Yt(),g=ut;if(g){if(o===void 0)throw Error(r(407));o=o()}else o=a();var w=!Yn((xt||p).memoizedState,o);if(w&&(p.memoizedState=o,en=!0),p=p.queue,mp(Zb.bind(null,u,p,t),[t]),p.getSnapshot!==a||w||Zt!==null&&Zt.memoizedState.tag&1){if(u.flags|=2048,Ws(9,{destroy:void 0},Qb.bind(null,u,p,o,a),null),Dt===null)throw Error(r(349));g||(ba&127)!==0||Jb(u,a,o)}return o}function Jb(t,a,o){t.flags|=16384,t={getSnapshot:a,value:o},a=Xe.updateQueue,a===null?(a=Du(),Xe.updateQueue=a,a.stores=[t]):(o=a.stores,o===null?a.stores=[t]:o.push(t))}function Qb(t,a,o,u){a.value=o,a.getSnapshot=u,ev(a)&&tv(t)}function Zb(t,a,o){return o(function(){ev(a)&&tv(t)})}function ev(t){var a=t.getSnapshot;t=t.value;try{var o=a();return!Yn(t,o)}catch{return!0}}function tv(t){var a=qi(t,2);a!==null&&qn(a,t,2)}function pp(t){var a=Ln();if(typeof t=="function"){var o=t;if(t=o(),Qi){_n(!0);try{o()}finally{_n(!1)}}}return a.memoizedState=a.baseState=t,a.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:va,lastRenderedState:t},a}function nv(t,a,o,u){return t.baseState=o,fp(t,xt,typeof u=="function"?u:va)}function bT(t,a,o,u,p){if(Nu(t))throw Error(r(485));if(t=a.action,t!==null){var g={payload:p,action:t,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(w){g.listeners.push(w)}};J.T!==null?o(!0):g.isTransition=!1,u(g),o=a.pending,o===null?(g.next=a.pending=g,rv(a,g)):(g.next=o.next,a.pending=o.next=g)}}function rv(t,a){var o=a.action,u=a.payload,p=t.state;if(a.isTransition){var g=J.T,w={};J.T=w;try{var R=o(p,u),z=J.S;z!==null&&z(w,R),av(t,a,R)}catch(X){gp(t,a,X)}finally{g!==null&&w.types!==null&&(g.types=w.types),J.T=g}}else try{g=o(p,u),av(t,a,g)}catch(X){gp(t,a,X)}}function av(t,a,o){o!==null&&typeof o=="object"&&typeof o.then=="function"?o.then(function(u){iv(t,a,u)},function(u){return gp(t,a,u)}):iv(t,a,o)}function iv(t,a,o){a.status="fulfilled",a.value=o,sv(a),t.state=o,a=t.pending,a!==null&&(o=a.next,o===a?t.pending=null:(o=o.next,a.next=o,rv(t,o)))}function gp(t,a,o){var u=t.pending;if(t.pending=null,u!==null){u=u.next;do a.status="rejected",a.reason=o,sv(a),a=a.next;while(a!==u)}t.action=null}function sv(t){t=t.listeners;for(var a=0;a<t.length;a++)(0,t[a])()}function ov(t,a){return a}function lv(t,a){if(ut){var o=Dt.formState;if(o!==null){e:{var u=Xe;if(ut){if(Lt){t:{for(var p=Lt,g=pr;p.nodeType!==8;){if(!g){p=null;break t}if(p=mr(p.nextSibling),p===null){p=null;break t}}g=p.data,p=g==="F!"||g==="F"?p:null}if(p){Lt=mr(p.nextSibling),u=p.data==="F!";break e}}Ja(u)}u=!1}u&&(a=o[0])}}return o=Ln(),o.memoizedState=o.baseState=a,u={pending:null,lanes:0,dispatch:null,lastRenderedReducer:ov,lastRenderedState:a},o.queue=u,o=Tv.bind(null,Xe,u),u.dispatch=o,u=pp(!1),g=wp.bind(null,Xe,!1,u.queue),u=Ln(),p={state:a,dispatch:null,action:t,pending:null},u.queue=p,o=bT.bind(null,Xe,p,g,o),p.dispatch=o,u.memoizedState=t,[a,o,!1]}function cv(t){var a=Yt();return uv(a,xt,t)}function uv(t,a,o){if(a=fp(t,a,ov)[0],t=Lu(va)[0],typeof a=="object"&&a!==null&&typeof a.then=="function")try{var u=Cl(a)}catch(w){throw w===qs?Cu:w}else u=a;a=Yt();var p=a.queue,g=p.dispatch;return o!==a.memoizedState&&(Xe.flags|=2048,Ws(9,{destroy:void 0},vT.bind(null,p,o),null)),[u,g,t]}function vT(t,a){t.action=a}function dv(t){var a=Yt(),o=xt;if(o!==null)return uv(a,o,t);Yt(),a=a.memoizedState,o=Yt();var u=o.queue.dispatch;return o.memoizedState=t,[a,u,!1]}function Ws(t,a,o,u){return t={tag:t,create:o,deps:u,inst:a,next:null},a=Xe.updateQueue,a===null&&(a=Du(),Xe.updateQueue=a),o=a.lastEffect,o===null?a.lastEffect=t.next=t:(u=o.next,o.next=t,t.next=u,a.lastEffect=t),t}function fv(){return Yt().memoizedState}function $u(t,a,o,u){var p=Ln();Xe.flags|=t,p.memoizedState=Ws(1|a,{destroy:void 0},o,u===void 0?null:u)}function Mu(t,a,o,u){var p=Yt();u=u===void 0?null:u;var g=p.memoizedState.inst;xt!==null&&u!==null&&sp(u,xt.memoizedState.deps)?p.memoizedState=Ws(a,g,o,u):(Xe.flags|=t,p.memoizedState=Ws(1|a,g,o,u))}function hv(t,a){$u(8390656,8,t,a)}function mp(t,a){Mu(2048,8,t,a)}function ST(t){Xe.flags|=4;var a=Xe.updateQueue;if(a===null)a=Du(),Xe.updateQueue=a,a.events=[t];else{var o=a.events;o===null?a.events=[t]:o.push(t)}}function pv(t){var a=Yt().memoizedState;return ST({ref:a,nextImpl:t}),function(){if((vt&2)!==0)throw Error(r(440));return a.impl.apply(void 0,arguments)}}function gv(t,a){return Mu(4,2,t,a)}function mv(t,a){return Mu(4,4,t,a)}function yv(t,a){if(typeof a=="function"){t=t();var o=a(t);return function(){typeof o=="function"?o():a(null)}}if(a!=null)return t=t(),a.current=t,function(){a.current=null}}function bv(t,a,o){o=o!=null?o.concat([t]):null,Mu(4,4,yv.bind(null,a,t),o)}function yp(){}function vv(t,a){var o=Yt();a=a===void 0?null:a;var u=o.memoizedState;return a!==null&&sp(a,u[1])?u[0]:(o.memoizedState=[t,a],t)}function Sv(t,a){var o=Yt();a=a===void 0?null:a;var u=o.memoizedState;if(a!==null&&sp(a,u[1]))return u[0];if(u=t(),Qi){_n(!0);try{t()}finally{_n(!1)}}return o.memoizedState=[u,a],u}function bp(t,a,o){return o===void 0||(ba&1073741824)!==0&&(st&261930)===0?t.memoizedState=a:(t.memoizedState=o,t=wS(),Xe.lanes|=t,si|=t,o)}function wv(t,a,o,u){return Yn(o,a)?o:Fs.current!==null?(t=bp(t,o,u),Yn(t,a)||(en=!0),t):(ba&42)===0||(ba&1073741824)!==0&&(st&261930)===0?(en=!0,t.memoizedState=o):(t=wS(),Xe.lanes|=t,si|=t,a)}function Cv(t,a,o,u,p){var g=fe.p;fe.p=g!==0&&8>g?g:8;var w=J.T,R={};J.T=R,wp(t,!1,a,o);try{var z=p(),X=J.S;if(X!==null&&X(R,z),z!==null&&typeof z=="object"&&typeof z.then=="function"){var re=gT(z,u);El(t,a,re,tr(t))}else El(t,a,u,tr(t))}catch(le){El(t,a,{then:function(){},status:"rejected",reason:le},tr())}finally{fe.p=g,w!==null&&R.types!==null&&(w.types=R.types),J.T=w}}function wT(){}function vp(t,a,o,u){if(t.tag!==5)throw Error(r(476));var p=Ev(t).queue;Cv(t,p,a,Le,o===null?wT:function(){return _v(t),o(u)})}function Ev(t){var a=t.memoizedState;if(a!==null)return a;a={memoizedState:Le,baseState:Le,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:va,lastRenderedState:Le},next:null};var o={};return a.next={memoizedState:o,baseState:o,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:va,lastRenderedState:o},next:null},t.memoizedState=a,t=t.alternate,t!==null&&(t.memoizedState=a),a}function _v(t){var a=Ev(t);a.next===null&&(a=t.alternate.memoizedState),El(t,a.next.queue,{},tr())}function Sp(){return vn(Ul)}function Av(){return Yt().memoizedState}function xv(){return Yt().memoizedState}function CT(t){for(var a=t.return;a!==null;){switch(a.tag){case 24:case 3:var o=tr();t=ei(o);var u=ti(a,t,o);u!==null&&(qn(u,a,o),bl(u,a,o)),a={cache:Yh()},t.payload=a;return}a=a.return}}function ET(t,a,o){var u=tr();o={lane:u,revertLane:0,gesture:null,action:o,hasEagerState:!1,eagerState:null,next:null},Nu(t)?kv(a,o):(o=Hh(t,a,o,u),o!==null&&(qn(o,t,u),Rv(o,a,u)))}function Tv(t,a,o){var u=tr();El(t,a,o,u)}function El(t,a,o,u){var p={lane:u,revertLane:0,gesture:null,action:o,hasEagerState:!1,eagerState:null,next:null};if(Nu(t))kv(a,p);else{var g=t.alternate;if(t.lanes===0&&(g===null||g.lanes===0)&&(g=a.lastRenderedReducer,g!==null))try{var w=a.lastRenderedState,R=g(w,o);if(p.hasEagerState=!0,p.eagerState=R,Yn(R,w))return gu(t,a,p,0),Dt===null&&pu(),!1}catch{}if(o=Hh(t,a,p,u),o!==null)return qn(o,t,u),Rv(o,a,u),!0}return!1}function wp(t,a,o,u){if(u={lane:2,revertLane:Zp(),gesture:null,action:u,hasEagerState:!1,eagerState:null,next:null},Nu(t)){if(a)throw Error(r(479))}else a=Hh(t,o,u,2),a!==null&&qn(a,t,2)}function Nu(t){var a=t.alternate;return t===Xe||a!==null&&a===Xe}function kv(t,a){Vs=ku=!0;var o=t.pending;o===null?a.next=a:(a.next=o.next,o.next=a),t.pending=a}function Rv(t,a,o){if((o&4194048)!==0){var u=a.lanes;u&=t.pendingLanes,o|=u,a.lanes=o,Ce(t,o)}}var _l={readContext:vn,use:Ou,useCallback:Gt,useContext:Gt,useEffect:Gt,useImperativeHandle:Gt,useLayoutEffect:Gt,useInsertionEffect:Gt,useMemo:Gt,useReducer:Gt,useRef:Gt,useState:Gt,useDebugValue:Gt,useDeferredValue:Gt,useTransition:Gt,useSyncExternalStore:Gt,useId:Gt,useHostTransitionStatus:Gt,useFormState:Gt,useActionState:Gt,useOptimistic:Gt,useMemoCache:Gt,useCacheRefresh:Gt};_l.useEffectEvent=Gt;var Dv={readContext:vn,use:Ou,useCallback:function(t,a){return Ln().memoizedState=[t,a===void 0?null:a],t},useContext:vn,useEffect:hv,useImperativeHandle:function(t,a,o){o=o!=null?o.concat([t]):null,$u(4194308,4,yv.bind(null,a,t),o)},useLayoutEffect:function(t,a){return $u(4194308,4,t,a)},useInsertionEffect:function(t,a){$u(4,2,t,a)},useMemo:function(t,a){var o=Ln();a=a===void 0?null:a;var u=t();if(Qi){_n(!0);try{t()}finally{_n(!1)}}return o.memoizedState=[u,a],u},useReducer:function(t,a,o){var u=Ln();if(o!==void 0){var p=o(a);if(Qi){_n(!0);try{o(a)}finally{_n(!1)}}}else p=a;return u.memoizedState=u.baseState=p,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:p},u.queue=t,t=t.dispatch=ET.bind(null,Xe,t),[u.memoizedState,t]},useRef:function(t){var a=Ln();return t={current:t},a.memoizedState=t},useState:function(t){t=pp(t);var a=t.queue,o=Tv.bind(null,Xe,a);return a.dispatch=o,[t.memoizedState,o]},useDebugValue:yp,useDeferredValue:function(t,a){var o=Ln();return bp(o,t,a)},useTransition:function(){var t=pp(!1);return t=Cv.bind(null,Xe,t.queue,!0,!1),Ln().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,a,o){var u=Xe,p=Ln();if(ut){if(o===void 0)throw Error(r(407));o=o()}else{if(o=a(),Dt===null)throw Error(r(349));(st&127)!==0||Jb(u,a,o)}p.memoizedState=o;var g={value:o,getSnapshot:a};return p.queue=g,hv(Zb.bind(null,u,g,t),[t]),u.flags|=2048,Ws(9,{destroy:void 0},Qb.bind(null,u,g,o,a),null),o},useId:function(){var t=Ln(),a=Dt.identifierPrefix;if(ut){var o=Jr,u=Xr;o=(u&~(1<<32-on(u)-1)).toString(32)+o,a="_"+a+"R_"+o,o=Ru++,0<o&&(a+="H"+o.toString(32)),a+="_"}else o=mT++,a="_"+a+"r_"+o.toString(32)+"_";return t.memoizedState=a},useHostTransitionStatus:Sp,useFormState:lv,useActionState:lv,useOptimistic:function(t){var a=Ln();a.memoizedState=a.baseState=t;var o={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return a.queue=o,a=wp.bind(null,Xe,!0,o),o.dispatch=a,[t,a]},useMemoCache:dp,useCacheRefresh:function(){return Ln().memoizedState=CT.bind(null,Xe)},useEffectEvent:function(t){var a=Ln(),o={impl:t};return a.memoizedState=o,function(){if((vt&2)!==0)throw Error(r(440));return o.impl.apply(void 0,arguments)}}},Cp={readContext:vn,use:Ou,useCallback:vv,useContext:vn,useEffect:mp,useImperativeHandle:bv,useInsertionEffect:gv,useLayoutEffect:mv,useMemo:Sv,useReducer:Lu,useRef:fv,useState:function(){return Lu(va)},useDebugValue:yp,useDeferredValue:function(t,a){var o=Yt();return wv(o,xt.memoizedState,t,a)},useTransition:function(){var t=Lu(va)[0],a=Yt().memoizedState;return[typeof t=="boolean"?t:Cl(t),a]},useSyncExternalStore:Xb,useId:Av,useHostTransitionStatus:Sp,useFormState:cv,useActionState:cv,useOptimistic:function(t,a){var o=Yt();return nv(o,xt,t,a)},useMemoCache:dp,useCacheRefresh:xv};Cp.useEffectEvent=pv;var Ov={readContext:vn,use:Ou,useCallback:vv,useContext:vn,useEffect:mp,useImperativeHandle:bv,useInsertionEffect:gv,useLayoutEffect:mv,useMemo:Sv,useReducer:hp,useRef:fv,useState:function(){return hp(va)},useDebugValue:yp,useDeferredValue:function(t,a){var o=Yt();return xt===null?bp(o,t,a):wv(o,xt.memoizedState,t,a)},useTransition:function(){var t=hp(va)[0],a=Yt().memoizedState;return[typeof t=="boolean"?t:Cl(t),a]},useSyncExternalStore:Xb,useId:Av,useHostTransitionStatus:Sp,useFormState:dv,useActionState:dv,useOptimistic:function(t,a){var o=Yt();return xt!==null?nv(o,xt,t,a):(o.baseState=t,[t,o.queue.dispatch])},useMemoCache:dp,useCacheRefresh:xv};Ov.useEffectEvent=pv;function Ep(t,a,o,u){a=t.memoizedState,o=o(u,a),o=o==null?a:y({},a,o),t.memoizedState=o,t.lanes===0&&(t.updateQueue.baseState=o)}var _p={enqueueSetState:function(t,a,o){t=t._reactInternals;var u=tr(),p=ei(u);p.payload=a,o!=null&&(p.callback=o),a=ti(t,p,u),a!==null&&(qn(a,t,u),bl(a,t,u))},enqueueReplaceState:function(t,a,o){t=t._reactInternals;var u=tr(),p=ei(u);p.tag=1,p.payload=a,o!=null&&(p.callback=o),a=ti(t,p,u),a!==null&&(qn(a,t,u),bl(a,t,u))},enqueueForceUpdate:function(t,a){t=t._reactInternals;var o=tr(),u=ei(o);u.tag=2,a!=null&&(u.callback=a),a=ti(t,u,o),a!==null&&(qn(a,t,o),bl(a,t,o))}};function Lv(t,a,o,u,p,g,w){return t=t.stateNode,typeof t.shouldComponentUpdate=="function"?t.shouldComponentUpdate(u,g,w):a.prototype&&a.prototype.isPureReactComponent?!ul(o,u)||!ul(p,g):!0}function $v(t,a,o,u){t=a.state,typeof a.componentWillReceiveProps=="function"&&a.componentWillReceiveProps(o,u),typeof a.UNSAFE_componentWillReceiveProps=="function"&&a.UNSAFE_componentWillReceiveProps(o,u),a.state!==t&&_p.enqueueReplaceState(a,a.state,null)}function Zi(t,a){var o=a;if("ref"in a){o={};for(var u in a)u!=="ref"&&(o[u]=a[u])}if(t=t.defaultProps){o===a&&(o=y({},o));for(var p in t)o[p]===void 0&&(o[p]=t[p])}return o}function Mv(t){hu(t)}function Nv(t){console.error(t)}function Iv(t){hu(t)}function Iu(t,a){try{var o=t.onUncaughtError;o(a.value,{componentStack:a.stack})}catch(u){setTimeout(function(){throw u})}}function jv(t,a,o){try{var u=t.onCaughtError;u(o.value,{componentStack:o.stack,errorBoundary:a.tag===1?a.stateNode:null})}catch(p){setTimeout(function(){throw p})}}function Ap(t,a,o){return o=ei(o),o.tag=3,o.payload={element:null},o.callback=function(){Iu(t,a)},o}function Hv(t){return t=ei(t),t.tag=3,t}function zv(t,a,o,u){var p=o.type.getDerivedStateFromError;if(typeof p=="function"){var g=u.value;t.payload=function(){return p(g)},t.callback=function(){jv(a,o,u)}}var w=o.stateNode;w!==null&&typeof w.componentDidCatch=="function"&&(t.callback=function(){jv(a,o,u),typeof p!="function"&&(oi===null?oi=new Set([this]):oi.add(this));var R=u.stack;this.componentDidCatch(u.value,{componentStack:R!==null?R:""})})}function _T(t,a,o,u,p){if(o.flags|=32768,u!==null&&typeof u=="object"&&typeof u.then=="function"){if(a=o.alternate,a!==null&&Us(a,o,p,!0),o=Jn.current,o!==null){switch(o.tag){case 31:case 13:return gr===null?Wu():o.alternate===null&&Ft===0&&(Ft=3),o.flags&=-257,o.flags|=65536,o.lanes=p,u===Eu?o.flags|=16384:(a=o.updateQueue,a===null?o.updateQueue=new Set([u]):a.add(u),Xp(t,u,p)),!1;case 22:return o.flags|=65536,u===Eu?o.flags|=16384:(a=o.updateQueue,a===null?(a={transitions:null,markerInstances:null,retryQueue:new Set([u])},o.updateQueue=a):(o=a.retryQueue,o===null?a.retryQueue=new Set([u]):o.add(u)),Xp(t,u,p)),!1}throw Error(r(435,o.tag))}return Xp(t,u,p),Wu(),!1}if(ut)return a=Jn.current,a!==null?((a.flags&65536)===0&&(a.flags|=256),a.flags|=65536,a.lanes=p,u!==Gh&&(t=Error(r(422),{cause:u}),hl(dr(t,o)))):(u!==Gh&&(a=Error(r(423),{cause:u}),hl(dr(a,o))),t=t.current.alternate,t.flags|=65536,p&=-p,t.lanes|=p,u=dr(u,o),p=Ap(t.stateNode,u,p),tp(t,p),Ft!==4&&(Ft=2)),!1;var g=Error(r(520),{cause:u});if(g=dr(g,o),Ll===null?Ll=[g]:Ll.push(g),Ft!==4&&(Ft=2),a===null)return!0;u=dr(u,o),o=a;do{switch(o.tag){case 3:return o.flags|=65536,t=p&-p,o.lanes|=t,t=Ap(o.stateNode,u,t),tp(o,t),!1;case 1:if(a=o.type,g=o.stateNode,(o.flags&128)===0&&(typeof a.getDerivedStateFromError=="function"||g!==null&&typeof g.componentDidCatch=="function"&&(oi===null||!oi.has(g))))return o.flags|=65536,p&=-p,o.lanes|=p,p=Hv(p),zv(p,t,o,u),tp(o,p),!1}o=o.return}while(o!==null);return!1}var xp=Error(r(461)),en=!1;function Sn(t,a,o,u){a.child=t===null?qb(a,null,o,u):Ji(a,t.child,o,u)}function Uv(t,a,o,u,p){o=o.render;var g=a.ref;if("ref"in u){var w={};for(var R in u)R!=="ref"&&(w[R]=u[R])}else w=u;return Ki(a),u=op(t,a,o,w,g,p),R=lp(),t!==null&&!en?(cp(t,a,p),Sa(t,a,p)):(ut&&R&&Bh(a),a.flags|=1,Sn(t,a,u,p),a.child)}function Pv(t,a,o,u,p){if(t===null){var g=o.type;return typeof g=="function"&&!zh(g)&&g.defaultProps===void 0&&o.compare===null?(a.tag=15,a.type=g,Bv(t,a,g,u,p)):(t=yu(o.type,null,u,a,a.mode,p),t.ref=a.ref,t.return=a,a.child=t)}if(g=t.child,!Mp(t,p)){var w=g.memoizedProps;if(o=o.compare,o=o!==null?o:ul,o(w,u)&&t.ref===a.ref)return Sa(t,a,p)}return a.flags|=1,t=pa(g,u),t.ref=a.ref,t.return=a,a.child=t}function Bv(t,a,o,u,p){if(t!==null){var g=t.memoizedProps;if(ul(g,u)&&t.ref===a.ref)if(en=!1,a.pendingProps=u=g,Mp(t,p))(t.flags&131072)!==0&&(en=!0);else return a.lanes=t.lanes,Sa(t,a,p)}return Tp(t,a,o,u,p)}function qv(t,a,o,u){var p=u.children,g=t!==null?t.memoizedState:null;if(t===null&&a.stateNode===null&&(a.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),u.mode==="hidden"){if((a.flags&128)!==0){if(g=g!==null?g.baseLanes|o:o,t!==null){for(u=a.child=t.child,p=0;u!==null;)p=p|u.lanes|u.childLanes,u=u.sibling;u=p&~g}else u=0,a.child=null;return Gv(t,a,g,o,u)}if((o&536870912)!==0)a.memoizedState={baseLanes:0,cachePool:null},t!==null&&wu(a,g!==null?g.cachePool:null),g!==null?Vb(a,g):rp(),Kb(a);else return u=a.lanes=536870912,Gv(t,a,g!==null?g.baseLanes|o:o,o,u)}else g!==null?(wu(a,g.cachePool),Vb(a,g),ri(),a.memoizedState=null):(t!==null&&wu(a,null),rp(),ri());return Sn(t,a,p,o),a.child}function Al(t,a){return t!==null&&t.tag===22||a.stateNode!==null||(a.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),a.sibling}function Gv(t,a,o,u,p){var g=Jh();return g=g===null?null:{parent:Qt._currentValue,pool:g},a.memoizedState={baseLanes:o,cachePool:g},t!==null&&wu(a,null),rp(),Kb(a),t!==null&&Us(t,a,u,!0),a.childLanes=p,null}function ju(t,a){return a=zu({mode:a.mode,children:a.children},t.mode),a.ref=t.ref,t.child=a,a.return=t,a}function Fv(t,a,o){return Ji(a,t.child,null,o),t=ju(a,a.pendingProps),t.flags|=2,Qn(a),a.memoizedState=null,t}function AT(t,a,o){var u=a.pendingProps,p=(a.flags&128)!==0;if(a.flags&=-129,t===null){if(ut){if(u.mode==="hidden")return t=ju(a,u),a.lanes=536870912,Al(null,t);if(ip(a),(t=Lt)?(t=rw(t,pr),t=t!==null&&t.data==="&"?t:null,t!==null&&(a.memoizedState={dehydrated:t,treeContext:Ya!==null?{id:Xr,overflow:Jr}:null,retryLane:536870912,hydrationErrors:null},o=kb(t),o.return=a,a.child=o,bn=a,Lt=null)):t=null,t===null)throw Ja(a);return a.lanes=536870912,null}return ju(a,u)}var g=t.memoizedState;if(g!==null){var w=g.dehydrated;if(ip(a),p)if(a.flags&256)a.flags&=-257,a=Fv(t,a,o);else if(a.memoizedState!==null)a.child=t.child,a.flags|=128,a=null;else throw Error(r(558));else if(en||Us(t,a,o,!1),p=(o&t.childLanes)!==0,en||p){if(u=Dt,u!==null&&(w=je(u,o),w!==0&&w!==g.retryLane))throw g.retryLane=w,qi(t,w),qn(u,t,w),xp;Wu(),a=Fv(t,a,o)}else t=g.treeContext,Lt=mr(w.nextSibling),bn=a,ut=!0,Xa=null,pr=!1,t!==null&&Ob(a,t),a=ju(a,u),a.flags|=4096;return a}return t=pa(t.child,{mode:u.mode,children:u.children}),t.ref=a.ref,a.child=t,t.return=a,t}function Hu(t,a){var o=a.ref;if(o===null)t!==null&&t.ref!==null&&(a.flags|=4194816);else{if(typeof o!="function"&&typeof o!="object")throw Error(r(284));(t===null||t.ref!==o)&&(a.flags|=4194816)}}function Tp(t,a,o,u,p){return Ki(a),o=op(t,a,o,u,void 0,p),u=lp(),t!==null&&!en?(cp(t,a,p),Sa(t,a,p)):(ut&&u&&Bh(a),a.flags|=1,Sn(t,a,o,p),a.child)}function Vv(t,a,o,u,p,g){return Ki(a),a.updateQueue=null,o=Yb(a,u,o,p),Wb(t),u=lp(),t!==null&&!en?(cp(t,a,g),Sa(t,a,g)):(ut&&u&&Bh(a),a.flags|=1,Sn(t,a,o,g),a.child)}function Kv(t,a,o,u,p){if(Ki(a),a.stateNode===null){var g=Is,w=o.contextType;typeof w=="object"&&w!==null&&(g=vn(w)),g=new o(u,g),a.memoizedState=g.state!==null&&g.state!==void 0?g.state:null,g.updater=_p,a.stateNode=g,g._reactInternals=a,g=a.stateNode,g.props=u,g.state=a.memoizedState,g.refs={},Zh(a),w=o.contextType,g.context=typeof w=="object"&&w!==null?vn(w):Is,g.state=a.memoizedState,w=o.getDerivedStateFromProps,typeof w=="function"&&(Ep(a,o,w,u),g.state=a.memoizedState),typeof o.getDerivedStateFromProps=="function"||typeof g.getSnapshotBeforeUpdate=="function"||typeof g.UNSAFE_componentWillMount!="function"&&typeof g.componentWillMount!="function"||(w=g.state,typeof g.componentWillMount=="function"&&g.componentWillMount(),typeof g.UNSAFE_componentWillMount=="function"&&g.UNSAFE_componentWillMount(),w!==g.state&&_p.enqueueReplaceState(g,g.state,null),Sl(a,u,g,p),vl(),g.state=a.memoizedState),typeof g.componentDidMount=="function"&&(a.flags|=4194308),u=!0}else if(t===null){g=a.stateNode;var R=a.memoizedProps,z=Zi(o,R);g.props=z;var X=g.context,re=o.contextType;w=Is,typeof re=="object"&&re!==null&&(w=vn(re));var le=o.getDerivedStateFromProps;re=typeof le=="function"||typeof g.getSnapshotBeforeUpdate=="function",R=a.pendingProps!==R,re||typeof g.UNSAFE_componentWillReceiveProps!="function"&&typeof g.componentWillReceiveProps!="function"||(R||X!==w)&&$v(a,g,u,w),Za=!1;var Q=a.memoizedState;g.state=Q,Sl(a,u,g,p),vl(),X=a.memoizedState,R||Q!==X||Za?(typeof le=="function"&&(Ep(a,o,le,u),X=a.memoizedState),(z=Za||Lv(a,o,z,u,Q,X,w))?(re||typeof g.UNSAFE_componentWillMount!="function"&&typeof g.componentWillMount!="function"||(typeof g.componentWillMount=="function"&&g.componentWillMount(),typeof g.UNSAFE_componentWillMount=="function"&&g.UNSAFE_componentWillMount()),typeof g.componentDidMount=="function"&&(a.flags|=4194308)):(typeof g.componentDidMount=="function"&&(a.flags|=4194308),a.memoizedProps=u,a.memoizedState=X),g.props=u,g.state=X,g.context=w,u=z):(typeof g.componentDidMount=="function"&&(a.flags|=4194308),u=!1)}else{g=a.stateNode,ep(t,a),w=a.memoizedProps,re=Zi(o,w),g.props=re,le=a.pendingProps,Q=g.context,X=o.contextType,z=Is,typeof X=="object"&&X!==null&&(z=vn(X)),R=o.getDerivedStateFromProps,(X=typeof R=="function"||typeof g.getSnapshotBeforeUpdate=="function")||typeof g.UNSAFE_componentWillReceiveProps!="function"&&typeof g.componentWillReceiveProps!="function"||(w!==le||Q!==z)&&$v(a,g,u,z),Za=!1,Q=a.memoizedState,g.state=Q,Sl(a,u,g,p),vl();var te=a.memoizedState;w!==le||Q!==te||Za||t!==null&&t.dependencies!==null&&vu(t.dependencies)?(typeof R=="function"&&(Ep(a,o,R,u),te=a.memoizedState),(re=Za||Lv(a,o,re,u,Q,te,z)||t!==null&&t.dependencies!==null&&vu(t.dependencies))?(X||typeof g.UNSAFE_componentWillUpdate!="function"&&typeof g.componentWillUpdate!="function"||(typeof g.componentWillUpdate=="function"&&g.componentWillUpdate(u,te,z),typeof g.UNSAFE_componentWillUpdate=="function"&&g.UNSAFE_componentWillUpdate(u,te,z)),typeof g.componentDidUpdate=="function"&&(a.flags|=4),typeof g.getSnapshotBeforeUpdate=="function"&&(a.flags|=1024)):(typeof g.componentDidUpdate!="function"||w===t.memoizedProps&&Q===t.memoizedState||(a.flags|=4),typeof g.getSnapshotBeforeUpdate!="function"||w===t.memoizedProps&&Q===t.memoizedState||(a.flags|=1024),a.memoizedProps=u,a.memoizedState=te),g.props=u,g.state=te,g.context=z,u=re):(typeof g.componentDidUpdate!="function"||w===t.memoizedProps&&Q===t.memoizedState||(a.flags|=4),typeof g.getSnapshotBeforeUpdate!="function"||w===t.memoizedProps&&Q===t.memoizedState||(a.flags|=1024),u=!1)}return g=u,Hu(t,a),u=(a.flags&128)!==0,g||u?(g=a.stateNode,o=u&&typeof o.getDerivedStateFromError!="function"?null:g.render(),a.flags|=1,t!==null&&u?(a.child=Ji(a,t.child,null,p),a.child=Ji(a,null,o,p)):Sn(t,a,o,p),a.memoizedState=g.state,t=a.child):t=Sa(t,a,p),t}function Wv(t,a,o,u){return Fi(),a.flags|=256,Sn(t,a,o,u),a.child}var kp={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Rp(t){return{baseLanes:t,cachePool:jb()}}function Dp(t,a,o){return t=t!==null?t.childLanes&~o:0,a&&(t|=er),t}function Yv(t,a,o){var u=a.pendingProps,p=!1,g=(a.flags&128)!==0,w;if((w=g)||(w=t!==null&&t.memoizedState===null?!1:(Wt.current&2)!==0),w&&(p=!0,a.flags&=-129),w=(a.flags&32)!==0,a.flags&=-33,t===null){if(ut){if(p?ni(a):ri(),(t=Lt)?(t=rw(t,pr),t=t!==null&&t.data!=="&"?t:null,t!==null&&(a.memoizedState={dehydrated:t,treeContext:Ya!==null?{id:Xr,overflow:Jr}:null,retryLane:536870912,hydrationErrors:null},o=kb(t),o.return=a,a.child=o,bn=a,Lt=null)):t=null,t===null)throw Ja(a);return fg(t)?a.lanes=32:a.lanes=536870912,null}var R=u.children;return u=u.fallback,p?(ri(),p=a.mode,R=zu({mode:"hidden",children:R},p),u=Gi(u,p,o,null),R.return=a,u.return=a,R.sibling=u,a.child=R,u=a.child,u.memoizedState=Rp(o),u.childLanes=Dp(t,w,o),a.memoizedState=kp,Al(null,u)):(ni(a),Op(a,R))}var z=t.memoizedState;if(z!==null&&(R=z.dehydrated,R!==null)){if(g)a.flags&256?(ni(a),a.flags&=-257,a=Lp(t,a,o)):a.memoizedState!==null?(ri(),a.child=t.child,a.flags|=128,a=null):(ri(),R=u.fallback,p=a.mode,u=zu({mode:"visible",children:u.children},p),R=Gi(R,p,o,null),R.flags|=2,u.return=a,R.return=a,u.sibling=R,a.child=u,Ji(a,t.child,null,o),u=a.child,u.memoizedState=Rp(o),u.childLanes=Dp(t,w,o),a.memoizedState=kp,a=Al(null,u));else if(ni(a),fg(R)){if(w=R.nextSibling&&R.nextSibling.dataset,w)var X=w.dgst;w=X,u=Error(r(419)),u.stack="",u.digest=w,hl({value:u,source:null,stack:null}),a=Lp(t,a,o)}else if(en||Us(t,a,o,!1),w=(o&t.childLanes)!==0,en||w){if(w=Dt,w!==null&&(u=je(w,o),u!==0&&u!==z.retryLane))throw z.retryLane=u,qi(t,u),qn(w,t,u),xp;dg(R)||Wu(),a=Lp(t,a,o)}else dg(R)?(a.flags|=192,a.child=t.child,a=null):(t=z.treeContext,Lt=mr(R.nextSibling),bn=a,ut=!0,Xa=null,pr=!1,t!==null&&Ob(a,t),a=Op(a,u.children),a.flags|=4096);return a}return p?(ri(),R=u.fallback,p=a.mode,z=t.child,X=z.sibling,u=pa(z,{mode:"hidden",children:u.children}),u.subtreeFlags=z.subtreeFlags&65011712,X!==null?R=pa(X,R):(R=Gi(R,p,o,null),R.flags|=2),R.return=a,u.return=a,u.sibling=R,a.child=u,Al(null,u),u=a.child,R=t.child.memoizedState,R===null?R=Rp(o):(p=R.cachePool,p!==null?(z=Qt._currentValue,p=p.parent!==z?{parent:z,pool:z}:p):p=jb(),R={baseLanes:R.baseLanes|o,cachePool:p}),u.memoizedState=R,u.childLanes=Dp(t,w,o),a.memoizedState=kp,Al(t.child,u)):(ni(a),o=t.child,t=o.sibling,o=pa(o,{mode:"visible",children:u.children}),o.return=a,o.sibling=null,t!==null&&(w=a.deletions,w===null?(a.deletions=[t],a.flags|=16):w.push(t)),a.child=o,a.memoizedState=null,o)}function Op(t,a){return a=zu({mode:"visible",children:a},t.mode),a.return=t,t.child=a}function zu(t,a){return t=Xn(22,t,null,a),t.lanes=0,t}function Lp(t,a,o){return Ji(a,t.child,null,o),t=Op(a,a.pendingProps.children),t.flags|=2,a.memoizedState=null,t}function Xv(t,a,o){t.lanes|=a;var u=t.alternate;u!==null&&(u.lanes|=a),Kh(t.return,a,o)}function $p(t,a,o,u,p,g){var w=t.memoizedState;w===null?t.memoizedState={isBackwards:a,rendering:null,renderingStartTime:0,last:u,tail:o,tailMode:p,treeForkCount:g}:(w.isBackwards=a,w.rendering=null,w.renderingStartTime=0,w.last=u,w.tail=o,w.tailMode=p,w.treeForkCount=g)}function Jv(t,a,o){var u=a.pendingProps,p=u.revealOrder,g=u.tail;u=u.children;var w=Wt.current,R=(w&2)!==0;if(R?(w=w&1|2,a.flags|=128):w&=1,ce(Wt,w),Sn(t,a,u,o),u=ut?fl:0,!R&&t!==null&&(t.flags&128)!==0)e:for(t=a.child;t!==null;){if(t.tag===13)t.memoizedState!==null&&Xv(t,o,a);else if(t.tag===19)Xv(t,o,a);else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===a)break e;for(;t.sibling===null;){if(t.return===null||t.return===a)break e;t=t.return}t.sibling.return=t.return,t=t.sibling}switch(p){case"forwards":for(o=a.child,p=null;o!==null;)t=o.alternate,t!==null&&Tu(t)===null&&(p=o),o=o.sibling;o=p,o===null?(p=a.child,a.child=null):(p=o.sibling,o.sibling=null),$p(a,!1,p,o,g,u);break;case"backwards":case"unstable_legacy-backwards":for(o=null,p=a.child,a.child=null;p!==null;){if(t=p.alternate,t!==null&&Tu(t)===null){a.child=p;break}t=p.sibling,p.sibling=o,o=p,p=t}$p(a,!0,o,null,g,u);break;case"together":$p(a,!1,null,null,void 0,u);break;default:a.memoizedState=null}return a.child}function Sa(t,a,o){if(t!==null&&(a.dependencies=t.dependencies),si|=a.lanes,(o&a.childLanes)===0)if(t!==null){if(Us(t,a,o,!1),(o&a.childLanes)===0)return null}else return null;if(t!==null&&a.child!==t.child)throw Error(r(153));if(a.child!==null){for(t=a.child,o=pa(t,t.pendingProps),a.child=o,o.return=a;t.sibling!==null;)t=t.sibling,o=o.sibling=pa(t,t.pendingProps),o.return=a;o.sibling=null}return a.child}function Mp(t,a){return(t.lanes&a)!==0?!0:(t=t.dependencies,!!(t!==null&&vu(t)))}function xT(t,a,o){switch(a.tag){case 3:_e(a,a.stateNode.containerInfo),Qa(a,Qt,t.memoizedState.cache),Fi();break;case 27:case 5:Me(a);break;case 4:_e(a,a.stateNode.containerInfo);break;case 10:Qa(a,a.type,a.memoizedProps.value);break;case 31:if(a.memoizedState!==null)return a.flags|=128,ip(a),null;break;case 13:var u=a.memoizedState;if(u!==null)return u.dehydrated!==null?(ni(a),a.flags|=128,null):(o&a.child.childLanes)!==0?Yv(t,a,o):(ni(a),t=Sa(t,a,o),t!==null?t.sibling:null);ni(a);break;case 19:var p=(t.flags&128)!==0;if(u=(o&a.childLanes)!==0,u||(Us(t,a,o,!1),u=(o&a.childLanes)!==0),p){if(u)return Jv(t,a,o);a.flags|=128}if(p=a.memoizedState,p!==null&&(p.rendering=null,p.tail=null,p.lastEffect=null),ce(Wt,Wt.current),u)break;return null;case 22:return a.lanes=0,qv(t,a,o,a.pendingProps);case 24:Qa(a,Qt,t.memoizedState.cache)}return Sa(t,a,o)}function Qv(t,a,o){if(t!==null)if(t.memoizedProps!==a.pendingProps)en=!0;else{if(!Mp(t,o)&&(a.flags&128)===0)return en=!1,xT(t,a,o);en=(t.flags&131072)!==0}else en=!1,ut&&(a.flags&1048576)!==0&&Db(a,fl,a.index);switch(a.lanes=0,a.tag){case 16:e:{var u=a.pendingProps;if(t=Yi(a.elementType),a.type=t,typeof t=="function")zh(t)?(u=Zi(t,u),a.tag=1,a=Kv(null,a,t,u,o)):(a.tag=0,a=Tp(null,a,t,u,o));else{if(t!=null){var p=t.$$typeof;if(p===O){a.tag=11,a=Uv(null,a,t,u,o);break e}else if(p===B){a.tag=14,a=Pv(null,a,t,u,o);break e}}throw a=qe(t)||t,Error(r(306,a,""))}}return a;case 0:return Tp(t,a,a.type,a.pendingProps,o);case 1:return u=a.type,p=Zi(u,a.pendingProps),Kv(t,a,u,p,o);case 3:e:{if(_e(a,a.stateNode.containerInfo),t===null)throw Error(r(387));u=a.pendingProps;var g=a.memoizedState;p=g.element,ep(t,a),Sl(a,u,null,o);var w=a.memoizedState;if(u=w.cache,Qa(a,Qt,u),u!==g.cache&&Wh(a,[Qt],o,!0),vl(),u=w.element,g.isDehydrated)if(g={element:u,isDehydrated:!1,cache:w.cache},a.updateQueue.baseState=g,a.memoizedState=g,a.flags&256){a=Wv(t,a,u,o);break e}else if(u!==p){p=dr(Error(r(424)),a),hl(p),a=Wv(t,a,u,o);break e}else for(t=a.stateNode.containerInfo,t.nodeType===9?t=t.body:t=t.nodeName==="HTML"?t.ownerDocument.body:t,Lt=mr(t.firstChild),bn=a,ut=!0,Xa=null,pr=!0,o=qb(a,null,u,o),a.child=o;o;)o.flags=o.flags&-3|4096,o=o.sibling;else{if(Fi(),u===p){a=Sa(t,a,o);break e}Sn(t,a,u,o)}a=a.child}return a;case 26:return Hu(t,a),t===null?(o=cw(a.type,null,a.pendingProps,null))?a.memoizedState=o:ut||(o=a.type,t=a.pendingProps,u=td(ie.current).createElement(o),u[Ht]=a,u[An]=t,wn(u,o,t),Jt(u),a.stateNode=u):a.memoizedState=cw(a.type,t.memoizedProps,a.pendingProps,t.memoizedState),null;case 27:return Me(a),t===null&&ut&&(u=a.stateNode=sw(a.type,a.pendingProps,ie.current),bn=a,pr=!0,p=Lt,di(a.type)?(hg=p,Lt=mr(u.firstChild)):Lt=p),Sn(t,a,a.pendingProps.children,o),Hu(t,a),t===null&&(a.flags|=4194304),a.child;case 5:return t===null&&ut&&((p=u=Lt)&&(u=nk(u,a.type,a.pendingProps,pr),u!==null?(a.stateNode=u,bn=a,Lt=mr(u.firstChild),pr=!1,p=!0):p=!1),p||Ja(a)),Me(a),p=a.type,g=a.pendingProps,w=t!==null?t.memoizedProps:null,u=g.children,lg(p,g)?u=null:w!==null&&lg(p,w)&&(a.flags|=32),a.memoizedState!==null&&(p=op(t,a,yT,null,null,o),Ul._currentValue=p),Hu(t,a),Sn(t,a,u,o),a.child;case 6:return t===null&&ut&&((t=o=Lt)&&(o=rk(o,a.pendingProps,pr),o!==null?(a.stateNode=o,bn=a,Lt=null,t=!0):t=!1),t||Ja(a)),null;case 13:return Yv(t,a,o);case 4:return _e(a,a.stateNode.containerInfo),u=a.pendingProps,t===null?a.child=Ji(a,null,u,o):Sn(t,a,u,o),a.child;case 11:return Uv(t,a,a.type,a.pendingProps,o);case 7:return Sn(t,a,a.pendingProps,o),a.child;case 8:return Sn(t,a,a.pendingProps.children,o),a.child;case 12:return Sn(t,a,a.pendingProps.children,o),a.child;case 10:return u=a.pendingProps,Qa(a,a.type,u.value),Sn(t,a,u.children,o),a.child;case 9:return p=a.type._context,u=a.pendingProps.children,Ki(a),p=vn(p),u=u(p),a.flags|=1,Sn(t,a,u,o),a.child;case 14:return Pv(t,a,a.type,a.pendingProps,o);case 15:return Bv(t,a,a.type,a.pendingProps,o);case 19:return Jv(t,a,o);case 31:return AT(t,a,o);case 22:return qv(t,a,o,a.pendingProps);case 24:return Ki(a),u=vn(Qt),t===null?(p=Jh(),p===null&&(p=Dt,g=Yh(),p.pooledCache=g,g.refCount++,g!==null&&(p.pooledCacheLanes|=o),p=g),a.memoizedState={parent:u,cache:p},Zh(a),Qa(a,Qt,p)):((t.lanes&o)!==0&&(ep(t,a),Sl(a,null,null,o),vl()),p=t.memoizedState,g=a.memoizedState,p.parent!==u?(p={parent:u,cache:u},a.memoizedState=p,a.lanes===0&&(a.memoizedState=a.updateQueue.baseState=p),Qa(a,Qt,u)):(u=g.cache,Qa(a,Qt,u),u!==p.cache&&Wh(a,[Qt],o,!0))),Sn(t,a,a.pendingProps.children,o),a.child;case 29:throw a.pendingProps}throw Error(r(156,a.tag))}function wa(t){t.flags|=4}function Np(t,a,o,u,p){if((a=(t.mode&32)!==0)&&(a=!1),a){if(t.flags|=16777216,(p&335544128)===p)if(t.stateNode.complete)t.flags|=8192;else if(AS())t.flags|=8192;else throw Xi=Eu,Qh}else t.flags&=-16777217}function Zv(t,a){if(a.type!=="stylesheet"||(a.state.loading&4)!==0)t.flags&=-16777217;else if(t.flags|=16777216,!pw(a))if(AS())t.flags|=8192;else throw Xi=Eu,Qh}function Uu(t,a){a!==null&&(t.flags|=4),t.flags&16384&&(a=t.tag!==22?Ne():536870912,t.lanes|=a,Qs|=a)}function xl(t,a){if(!ut)switch(t.tailMode){case"hidden":a=t.tail;for(var o=null;a!==null;)a.alternate!==null&&(o=a),a=a.sibling;o===null?t.tail=null:o.sibling=null;break;case"collapsed":o=t.tail;for(var u=null;o!==null;)o.alternate!==null&&(u=o),o=o.sibling;u===null?a||t.tail===null?t.tail=null:t.tail.sibling=null:u.sibling=null}}function $t(t){var a=t.alternate!==null&&t.alternate.child===t.child,o=0,u=0;if(a)for(var p=t.child;p!==null;)o|=p.lanes|p.childLanes,u|=p.subtreeFlags&65011712,u|=p.flags&65011712,p.return=t,p=p.sibling;else for(p=t.child;p!==null;)o|=p.lanes|p.childLanes,u|=p.subtreeFlags,u|=p.flags,p.return=t,p=p.sibling;return t.subtreeFlags|=u,t.childLanes=o,a}function TT(t,a,o){var u=a.pendingProps;switch(qh(a),a.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return $t(a),null;case 1:return $t(a),null;case 3:return o=a.stateNode,u=null,t!==null&&(u=t.memoizedState.cache),a.memoizedState.cache!==u&&(a.flags|=2048),ya(Qt),Te(),o.pendingContext&&(o.context=o.pendingContext,o.pendingContext=null),(t===null||t.child===null)&&(zs(a)?wa(a):t===null||t.memoizedState.isDehydrated&&(a.flags&256)===0||(a.flags|=1024,Fh())),$t(a),null;case 26:var p=a.type,g=a.memoizedState;return t===null?(wa(a),g!==null?($t(a),Zv(a,g)):($t(a),Np(a,p,null,u,o))):g?g!==t.memoizedState?(wa(a),$t(a),Zv(a,g)):($t(a),a.flags&=-16777217):(t=t.memoizedProps,t!==u&&wa(a),$t(a),Np(a,p,t,u,o)),null;case 27:if(pt(a),o=ie.current,p=a.type,t!==null&&a.stateNode!=null)t.memoizedProps!==u&&wa(a);else{if(!u){if(a.stateNode===null)throw Error(r(166));return $t(a),null}t=de.current,zs(a)?Lb(a):(t=sw(p,u,o),a.stateNode=t,wa(a))}return $t(a),null;case 5:if(pt(a),p=a.type,t!==null&&a.stateNode!=null)t.memoizedProps!==u&&wa(a);else{if(!u){if(a.stateNode===null)throw Error(r(166));return $t(a),null}if(g=de.current,zs(a))Lb(a);else{var w=td(ie.current);switch(g){case 1:g=w.createElementNS("http://www.w3.org/2000/svg",p);break;case 2:g=w.createElementNS("http://www.w3.org/1998/Math/MathML",p);break;default:switch(p){case"svg":g=w.createElementNS("http://www.w3.org/2000/svg",p);break;case"math":g=w.createElementNS("http://www.w3.org/1998/Math/MathML",p);break;case"script":g=w.createElement("div"),g.innerHTML="<script><\/script>",g=g.removeChild(g.firstChild);break;case"select":g=typeof u.is=="string"?w.createElement("select",{is:u.is}):w.createElement("select"),u.multiple?g.multiple=!0:u.size&&(g.size=u.size);break;default:g=typeof u.is=="string"?w.createElement(p,{is:u.is}):w.createElement(p)}}g[Ht]=a,g[An]=u;e:for(w=a.child;w!==null;){if(w.tag===5||w.tag===6)g.appendChild(w.stateNode);else if(w.tag!==4&&w.tag!==27&&w.child!==null){w.child.return=w,w=w.child;continue}if(w===a)break e;for(;w.sibling===null;){if(w.return===null||w.return===a)break e;w=w.return}w.sibling.return=w.return,w=w.sibling}a.stateNode=g;e:switch(wn(g,p,u),p){case"button":case"input":case"select":case"textarea":u=!!u.autoFocus;break e;case"img":u=!0;break e;default:u=!1}u&&wa(a)}}return $t(a),Np(a,a.type,t===null?null:t.memoizedProps,a.pendingProps,o),null;case 6:if(t&&a.stateNode!=null)t.memoizedProps!==u&&wa(a);else{if(typeof u!="string"&&a.stateNode===null)throw Error(r(166));if(t=ie.current,zs(a)){if(t=a.stateNode,o=a.memoizedProps,u=null,p=bn,p!==null)switch(p.tag){case 27:case 5:u=p.memoizedProps}t[Ht]=a,t=!!(t.nodeValue===o||u!==null&&u.suppressHydrationWarning===!0||YS(t.nodeValue,o)),t||Ja(a,!0)}else t=td(t).createTextNode(u),t[Ht]=a,a.stateNode=t}return $t(a),null;case 31:if(o=a.memoizedState,t===null||t.memoizedState!==null){if(u=zs(a),o!==null){if(t===null){if(!u)throw Error(r(318));if(t=a.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(r(557));t[Ht]=a}else Fi(),(a.flags&128)===0&&(a.memoizedState=null),a.flags|=4;$t(a),t=!1}else o=Fh(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=o),t=!0;if(!t)return a.flags&256?(Qn(a),a):(Qn(a),null);if((a.flags&128)!==0)throw Error(r(558))}return $t(a),null;case 13:if(u=a.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(p=zs(a),u!==null&&u.dehydrated!==null){if(t===null){if(!p)throw Error(r(318));if(p=a.memoizedState,p=p!==null?p.dehydrated:null,!p)throw Error(r(317));p[Ht]=a}else Fi(),(a.flags&128)===0&&(a.memoizedState=null),a.flags|=4;$t(a),p=!1}else p=Fh(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=p),p=!0;if(!p)return a.flags&256?(Qn(a),a):(Qn(a),null)}return Qn(a),(a.flags&128)!==0?(a.lanes=o,a):(o=u!==null,t=t!==null&&t.memoizedState!==null,o&&(u=a.child,p=null,u.alternate!==null&&u.alternate.memoizedState!==null&&u.alternate.memoizedState.cachePool!==null&&(p=u.alternate.memoizedState.cachePool.pool),g=null,u.memoizedState!==null&&u.memoizedState.cachePool!==null&&(g=u.memoizedState.cachePool.pool),g!==p&&(u.flags|=2048)),o!==t&&o&&(a.child.flags|=8192),Uu(a,a.updateQueue),$t(a),null);case 4:return Te(),t===null&&rg(a.stateNode.containerInfo),$t(a),null;case 10:return ya(a.type),$t(a),null;case 19:if(T(Wt),u=a.memoizedState,u===null)return $t(a),null;if(p=(a.flags&128)!==0,g=u.rendering,g===null)if(p)xl(u,!1);else{if(Ft!==0||t!==null&&(t.flags&128)!==0)for(t=a.child;t!==null;){if(g=Tu(t),g!==null){for(a.flags|=128,xl(u,!1),t=g.updateQueue,a.updateQueue=t,Uu(a,t),a.subtreeFlags=0,t=o,o=a.child;o!==null;)Tb(o,t),o=o.sibling;return ce(Wt,Wt.current&1|2),ut&&ga(a,u.treeForkCount),a.child}t=t.sibling}u.tail!==null&&qt()>Fu&&(a.flags|=128,p=!0,xl(u,!1),a.lanes=4194304)}else{if(!p)if(t=Tu(g),t!==null){if(a.flags|=128,p=!0,t=t.updateQueue,a.updateQueue=t,Uu(a,t),xl(u,!0),u.tail===null&&u.tailMode==="hidden"&&!g.alternate&&!ut)return $t(a),null}else 2*qt()-u.renderingStartTime>Fu&&o!==536870912&&(a.flags|=128,p=!0,xl(u,!1),a.lanes=4194304);u.isBackwards?(g.sibling=a.child,a.child=g):(t=u.last,t!==null?t.sibling=g:a.child=g,u.last=g)}return u.tail!==null?(t=u.tail,u.rendering=t,u.tail=t.sibling,u.renderingStartTime=qt(),t.sibling=null,o=Wt.current,ce(Wt,p?o&1|2:o&1),ut&&ga(a,u.treeForkCount),t):($t(a),null);case 22:case 23:return Qn(a),ap(),u=a.memoizedState!==null,t!==null?t.memoizedState!==null!==u&&(a.flags|=8192):u&&(a.flags|=8192),u?(o&536870912)!==0&&(a.flags&128)===0&&($t(a),a.subtreeFlags&6&&(a.flags|=8192)):$t(a),o=a.updateQueue,o!==null&&Uu(a,o.retryQueue),o=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(o=t.memoizedState.cachePool.pool),u=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(u=a.memoizedState.cachePool.pool),u!==o&&(a.flags|=2048),t!==null&&T(Wi),null;case 24:return o=null,t!==null&&(o=t.memoizedState.cache),a.memoizedState.cache!==o&&(a.flags|=2048),ya(Qt),$t(a),null;case 25:return null;case 30:return null}throw Error(r(156,a.tag))}function kT(t,a){switch(qh(a),a.tag){case 1:return t=a.flags,t&65536?(a.flags=t&-65537|128,a):null;case 3:return ya(Qt),Te(),t=a.flags,(t&65536)!==0&&(t&128)===0?(a.flags=t&-65537|128,a):null;case 26:case 27:case 5:return pt(a),null;case 31:if(a.memoizedState!==null){if(Qn(a),a.alternate===null)throw Error(r(340));Fi()}return t=a.flags,t&65536?(a.flags=t&-65537|128,a):null;case 13:if(Qn(a),t=a.memoizedState,t!==null&&t.dehydrated!==null){if(a.alternate===null)throw Error(r(340));Fi()}return t=a.flags,t&65536?(a.flags=t&-65537|128,a):null;case 19:return T(Wt),null;case 4:return Te(),null;case 10:return ya(a.type),null;case 22:case 23:return Qn(a),ap(),t!==null&&T(Wi),t=a.flags,t&65536?(a.flags=t&-65537|128,a):null;case 24:return ya(Qt),null;case 25:return null;default:return null}}function eS(t,a){switch(qh(a),a.tag){case 3:ya(Qt),Te();break;case 26:case 27:case 5:pt(a);break;case 4:Te();break;case 31:a.memoizedState!==null&&Qn(a);break;case 13:Qn(a);break;case 19:T(Wt);break;case 10:ya(a.type);break;case 22:case 23:Qn(a),ap(),t!==null&&T(Wi);break;case 24:ya(Qt)}}function Tl(t,a){try{var o=a.updateQueue,u=o!==null?o.lastEffect:null;if(u!==null){var p=u.next;o=p;do{if((o.tag&t)===t){u=void 0;var g=o.create,w=o.inst;u=g(),w.destroy=u}o=o.next}while(o!==p)}}catch(R){_t(a,a.return,R)}}function ai(t,a,o){try{var u=a.updateQueue,p=u!==null?u.lastEffect:null;if(p!==null){var g=p.next;u=g;do{if((u.tag&t)===t){var w=u.inst,R=w.destroy;if(R!==void 0){w.destroy=void 0,p=a;var z=o,X=R;try{X()}catch(re){_t(p,z,re)}}}u=u.next}while(u!==g)}}catch(re){_t(a,a.return,re)}}function tS(t){var a=t.updateQueue;if(a!==null){var o=t.stateNode;try{Fb(a,o)}catch(u){_t(t,t.return,u)}}}function nS(t,a,o){o.props=Zi(t.type,t.memoizedProps),o.state=t.memoizedState;try{o.componentWillUnmount()}catch(u){_t(t,a,u)}}function kl(t,a){try{var o=t.ref;if(o!==null){switch(t.tag){case 26:case 27:case 5:var u=t.stateNode;break;case 30:u=t.stateNode;break;default:u=t.stateNode}typeof o=="function"?t.refCleanup=o(u):o.current=u}}catch(p){_t(t,a,p)}}function Qr(t,a){var o=t.ref,u=t.refCleanup;if(o!==null)if(typeof u=="function")try{u()}catch(p){_t(t,a,p)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof o=="function")try{o(null)}catch(p){_t(t,a,p)}else o.current=null}function rS(t){var a=t.type,o=t.memoizedProps,u=t.stateNode;try{e:switch(a){case"button":case"input":case"select":case"textarea":o.autoFocus&&u.focus();break e;case"img":o.src?u.src=o.src:o.srcSet&&(u.srcset=o.srcSet)}}catch(p){_t(t,t.return,p)}}function Ip(t,a,o){try{var u=t.stateNode;XT(u,t.type,o,a),u[An]=a}catch(p){_t(t,t.return,p)}}function aS(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&di(t.type)||t.tag===4}function jp(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||aS(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&di(t.type)||t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function Hp(t,a,o){var u=t.tag;if(u===5||u===6)t=t.stateNode,a?(o.nodeType===9?o.body:o.nodeName==="HTML"?o.ownerDocument.body:o).insertBefore(t,a):(a=o.nodeType===9?o.body:o.nodeName==="HTML"?o.ownerDocument.body:o,a.appendChild(t),o=o._reactRootContainer,o!=null||a.onclick!==null||(a.onclick=Dr));else if(u!==4&&(u===27&&di(t.type)&&(o=t.stateNode,a=null),t=t.child,t!==null))for(Hp(t,a,o),t=t.sibling;t!==null;)Hp(t,a,o),t=t.sibling}function Pu(t,a,o){var u=t.tag;if(u===5||u===6)t=t.stateNode,a?o.insertBefore(t,a):o.appendChild(t);else if(u!==4&&(u===27&&di(t.type)&&(o=t.stateNode),t=t.child,t!==null))for(Pu(t,a,o),t=t.sibling;t!==null;)Pu(t,a,o),t=t.sibling}function iS(t){var a=t.stateNode,o=t.memoizedProps;try{for(var u=t.type,p=a.attributes;p.length;)a.removeAttributeNode(p[0]);wn(a,u,o),a[Ht]=t,a[An]=o}catch(g){_t(t,t.return,g)}}var Ca=!1,tn=!1,zp=!1,sS=typeof WeakSet=="function"?WeakSet:Set,fn=null;function RT(t,a){if(t=t.containerInfo,sg=ld,t=bb(t),Lh(t)){if("selectionStart"in t)var o={start:t.selectionStart,end:t.selectionEnd};else e:{o=(o=t.ownerDocument)&&o.defaultView||window;var u=o.getSelection&&o.getSelection();if(u&&u.rangeCount!==0){o=u.anchorNode;var p=u.anchorOffset,g=u.focusNode;u=u.focusOffset;try{o.nodeType,g.nodeType}catch{o=null;break e}var w=0,R=-1,z=-1,X=0,re=0,le=t,Q=null;t:for(;;){for(var te;le!==o||p!==0&&le.nodeType!==3||(R=w+p),le!==g||u!==0&&le.nodeType!==3||(z=w+u),le.nodeType===3&&(w+=le.nodeValue.length),(te=le.firstChild)!==null;)Q=le,le=te;for(;;){if(le===t)break t;if(Q===o&&++X===p&&(R=w),Q===g&&++re===u&&(z=w),(te=le.nextSibling)!==null)break;le=Q,Q=le.parentNode}le=te}o=R===-1||z===-1?null:{start:R,end:z}}else o=null}o=o||{start:0,end:0}}else o=null;for(og={focusedElem:t,selectionRange:o},ld=!1,fn=a;fn!==null;)if(a=fn,t=a.child,(a.subtreeFlags&1028)!==0&&t!==null)t.return=a,fn=t;else for(;fn!==null;){switch(a=fn,g=a.alternate,t=a.flags,a.tag){case 0:if((t&4)!==0&&(t=a.updateQueue,t=t!==null?t.events:null,t!==null))for(o=0;o<t.length;o++)p=t[o],p.ref.impl=p.nextImpl;break;case 11:case 15:break;case 1:if((t&1024)!==0&&g!==null){t=void 0,o=a,p=g.memoizedProps,g=g.memoizedState,u=o.stateNode;try{var De=Zi(o.type,p);t=u.getSnapshotBeforeUpdate(De,g),u.__reactInternalSnapshotBeforeUpdate=t}catch(Be){_t(o,o.return,Be)}}break;case 3:if((t&1024)!==0){if(t=a.stateNode.containerInfo,o=t.nodeType,o===9)ug(t);else if(o===1)switch(t.nodeName){case"HEAD":case"HTML":case"BODY":ug(t);break;default:t.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((t&1024)!==0)throw Error(r(163))}if(t=a.sibling,t!==null){t.return=a.return,fn=t;break}fn=a.return}}function oS(t,a,o){var u=o.flags;switch(o.tag){case 0:case 11:case 15:_a(t,o),u&4&&Tl(5,o);break;case 1:if(_a(t,o),u&4)if(t=o.stateNode,a===null)try{t.componentDidMount()}catch(w){_t(o,o.return,w)}else{var p=Zi(o.type,a.memoizedProps);a=a.memoizedState;try{t.componentDidUpdate(p,a,t.__reactInternalSnapshotBeforeUpdate)}catch(w){_t(o,o.return,w)}}u&64&&tS(o),u&512&&kl(o,o.return);break;case 3:if(_a(t,o),u&64&&(t=o.updateQueue,t!==null)){if(a=null,o.child!==null)switch(o.child.tag){case 27:case 5:a=o.child.stateNode;break;case 1:a=o.child.stateNode}try{Fb(t,a)}catch(w){_t(o,o.return,w)}}break;case 27:a===null&&u&4&&iS(o);case 26:case 5:_a(t,o),a===null&&u&4&&rS(o),u&512&&kl(o,o.return);break;case 12:_a(t,o);break;case 31:_a(t,o),u&4&&uS(t,o);break;case 13:_a(t,o),u&4&&dS(t,o),u&64&&(t=o.memoizedState,t!==null&&(t=t.dehydrated,t!==null&&(o=HT.bind(null,o),ak(t,o))));break;case 22:if(u=o.memoizedState!==null||Ca,!u){a=a!==null&&a.memoizedState!==null||tn,p=Ca;var g=tn;Ca=u,(tn=a)&&!g?Aa(t,o,(o.subtreeFlags&8772)!==0):_a(t,o),Ca=p,tn=g}break;case 30:break;default:_a(t,o)}}function lS(t){var a=t.alternate;a!==null&&(t.alternate=null,lS(a)),t.child=null,t.deletions=null,t.sibling=null,t.tag===5&&(a=t.stateNode,a!==null&&Wo(a)),t.stateNode=null,t.return=null,t.dependencies=null,t.memoizedProps=null,t.memoizedState=null,t.pendingProps=null,t.stateNode=null,t.updateQueue=null}var Nt=null,zn=!1;function Ea(t,a,o){for(o=o.child;o!==null;)cS(t,a,o),o=o.sibling}function cS(t,a,o){if(sn&&typeof sn.onCommitFiberUnmount=="function")try{sn.onCommitFiberUnmount(lr,o)}catch{}switch(o.tag){case 26:tn||Qr(o,a),Ea(t,a,o),o.memoizedState?o.memoizedState.count--:o.stateNode&&(o=o.stateNode,o.parentNode.removeChild(o));break;case 27:tn||Qr(o,a);var u=Nt,p=zn;di(o.type)&&(Nt=o.stateNode,zn=!1),Ea(t,a,o),jl(o.stateNode),Nt=u,zn=p;break;case 5:tn||Qr(o,a);case 6:if(u=Nt,p=zn,Nt=null,Ea(t,a,o),Nt=u,zn=p,Nt!==null)if(zn)try{(Nt.nodeType===9?Nt.body:Nt.nodeName==="HTML"?Nt.ownerDocument.body:Nt).removeChild(o.stateNode)}catch(g){_t(o,a,g)}else try{Nt.removeChild(o.stateNode)}catch(g){_t(o,a,g)}break;case 18:Nt!==null&&(zn?(t=Nt,tw(t.nodeType===9?t.body:t.nodeName==="HTML"?t.ownerDocument.body:t,o.stateNode),so(t)):tw(Nt,o.stateNode));break;case 4:u=Nt,p=zn,Nt=o.stateNode.containerInfo,zn=!0,Ea(t,a,o),Nt=u,zn=p;break;case 0:case 11:case 14:case 15:ai(2,o,a),tn||ai(4,o,a),Ea(t,a,o);break;case 1:tn||(Qr(o,a),u=o.stateNode,typeof u.componentWillUnmount=="function"&&nS(o,a,u)),Ea(t,a,o);break;case 21:Ea(t,a,o);break;case 22:tn=(u=tn)||o.memoizedState!==null,Ea(t,a,o),tn=u;break;default:Ea(t,a,o)}}function uS(t,a){if(a.memoizedState===null&&(t=a.alternate,t!==null&&(t=t.memoizedState,t!==null))){t=t.dehydrated;try{so(t)}catch(o){_t(a,a.return,o)}}}function dS(t,a){if(a.memoizedState===null&&(t=a.alternate,t!==null&&(t=t.memoizedState,t!==null&&(t=t.dehydrated,t!==null))))try{so(t)}catch(o){_t(a,a.return,o)}}function DT(t){switch(t.tag){case 31:case 13:case 19:var a=t.stateNode;return a===null&&(a=t.stateNode=new sS),a;case 22:return t=t.stateNode,a=t._retryCache,a===null&&(a=t._retryCache=new sS),a;default:throw Error(r(435,t.tag))}}function Bu(t,a){var o=DT(t);a.forEach(function(u){if(!o.has(u)){o.add(u);var p=zT.bind(null,t,u);u.then(p,p)}})}function Un(t,a){var o=a.deletions;if(o!==null)for(var u=0;u<o.length;u++){var p=o[u],g=t,w=a,R=w;e:for(;R!==null;){switch(R.tag){case 27:if(di(R.type)){Nt=R.stateNode,zn=!1;break e}break;case 5:Nt=R.stateNode,zn=!1;break e;case 3:case 4:Nt=R.stateNode.containerInfo,zn=!0;break e}R=R.return}if(Nt===null)throw Error(r(160));cS(g,w,p),Nt=null,zn=!1,g=p.alternate,g!==null&&(g.return=null),p.return=null}if(a.subtreeFlags&13886)for(a=a.child;a!==null;)fS(a,t),a=a.sibling}var Nr=null;function fS(t,a){var o=t.alternate,u=t.flags;switch(t.tag){case 0:case 11:case 14:case 15:Un(a,t),Pn(t),u&4&&(ai(3,t,t.return),Tl(3,t),ai(5,t,t.return));break;case 1:Un(a,t),Pn(t),u&512&&(tn||o===null||Qr(o,o.return)),u&64&&Ca&&(t=t.updateQueue,t!==null&&(u=t.callbacks,u!==null&&(o=t.shared.hiddenCallbacks,t.shared.hiddenCallbacks=o===null?u:o.concat(u))));break;case 26:var p=Nr;if(Un(a,t),Pn(t),u&512&&(tn||o===null||Qr(o,o.return)),u&4){var g=o!==null?o.memoizedState:null;if(u=t.memoizedState,o===null)if(u===null)if(t.stateNode===null){e:{u=t.type,o=t.memoizedProps,p=p.ownerDocument||p;t:switch(u){case"title":g=p.getElementsByTagName("title")[0],(!g||g[Ri]||g[Ht]||g.namespaceURI==="http://www.w3.org/2000/svg"||g.hasAttribute("itemprop"))&&(g=p.createElement(u),p.head.insertBefore(g,p.querySelector("head > title"))),wn(g,u,o),g[Ht]=t,Jt(g),u=g;break e;case"link":var w=fw("link","href",p).get(u+(o.href||""));if(w){for(var R=0;R<w.length;R++)if(g=w[R],g.getAttribute("href")===(o.href==null||o.href===""?null:o.href)&&g.getAttribute("rel")===(o.rel==null?null:o.rel)&&g.getAttribute("title")===(o.title==null?null:o.title)&&g.getAttribute("crossorigin")===(o.crossOrigin==null?null:o.crossOrigin)){w.splice(R,1);break t}}g=p.createElement(u),wn(g,u,o),p.head.appendChild(g);break;case"meta":if(w=fw("meta","content",p).get(u+(o.content||""))){for(R=0;R<w.length;R++)if(g=w[R],g.getAttribute("content")===(o.content==null?null:""+o.content)&&g.getAttribute("name")===(o.name==null?null:o.name)&&g.getAttribute("property")===(o.property==null?null:o.property)&&g.getAttribute("http-equiv")===(o.httpEquiv==null?null:o.httpEquiv)&&g.getAttribute("charset")===(o.charSet==null?null:o.charSet)){w.splice(R,1);break t}}g=p.createElement(u),wn(g,u,o),p.head.appendChild(g);break;default:throw Error(r(468,u))}g[Ht]=t,Jt(g),u=g}t.stateNode=u}else hw(p,t.type,t.stateNode);else t.stateNode=dw(p,u,t.memoizedProps);else g!==u?(g===null?o.stateNode!==null&&(o=o.stateNode,o.parentNode.removeChild(o)):g.count--,u===null?hw(p,t.type,t.stateNode):dw(p,u,t.memoizedProps)):u===null&&t.stateNode!==null&&Ip(t,t.memoizedProps,o.memoizedProps)}break;case 27:Un(a,t),Pn(t),u&512&&(tn||o===null||Qr(o,o.return)),o!==null&&u&4&&Ip(t,t.memoizedProps,o.memoizedProps);break;case 5:if(Un(a,t),Pn(t),u&512&&(tn||o===null||Qr(o,o.return)),t.flags&32){p=t.stateNode;try{Va(p,"")}catch(De){_t(t,t.return,De)}}u&4&&t.stateNode!=null&&(p=t.memoizedProps,Ip(t,p,o!==null?o.memoizedProps:p)),u&1024&&(zp=!0);break;case 6:if(Un(a,t),Pn(t),u&4){if(t.stateNode===null)throw Error(r(162));u=t.memoizedProps,o=t.stateNode;try{o.nodeValue=u}catch(De){_t(t,t.return,De)}}break;case 3:if(ad=null,p=Nr,Nr=nd(a.containerInfo),Un(a,t),Nr=p,Pn(t),u&4&&o!==null&&o.memoizedState.isDehydrated)try{so(a.containerInfo)}catch(De){_t(t,t.return,De)}zp&&(zp=!1,hS(t));break;case 4:u=Nr,Nr=nd(t.stateNode.containerInfo),Un(a,t),Pn(t),Nr=u;break;case 12:Un(a,t),Pn(t);break;case 31:Un(a,t),Pn(t),u&4&&(u=t.updateQueue,u!==null&&(t.updateQueue=null,Bu(t,u)));break;case 13:Un(a,t),Pn(t),t.child.flags&8192&&t.memoizedState!==null!=(o!==null&&o.memoizedState!==null)&&(Gu=qt()),u&4&&(u=t.updateQueue,u!==null&&(t.updateQueue=null,Bu(t,u)));break;case 22:p=t.memoizedState!==null;var z=o!==null&&o.memoizedState!==null,X=Ca,re=tn;if(Ca=X||p,tn=re||z,Un(a,t),tn=re,Ca=X,Pn(t),u&8192)e:for(a=t.stateNode,a._visibility=p?a._visibility&-2:a._visibility|1,p&&(o===null||z||Ca||tn||es(t)),o=null,a=t;;){if(a.tag===5||a.tag===26){if(o===null){z=o=a;try{if(g=z.stateNode,p)w=g.style,typeof w.setProperty=="function"?w.setProperty("display","none","important"):w.display="none";else{R=z.stateNode;var le=z.memoizedProps.style,Q=le!=null&&le.hasOwnProperty("display")?le.display:null;R.style.display=Q==null||typeof Q=="boolean"?"":(""+Q).trim()}}catch(De){_t(z,z.return,De)}}}else if(a.tag===6){if(o===null){z=a;try{z.stateNode.nodeValue=p?"":z.memoizedProps}catch(De){_t(z,z.return,De)}}}else if(a.tag===18){if(o===null){z=a;try{var te=z.stateNode;p?nw(te,!0):nw(z.stateNode,!1)}catch(De){_t(z,z.return,De)}}}else if((a.tag!==22&&a.tag!==23||a.memoizedState===null||a===t)&&a.child!==null){a.child.return=a,a=a.child;continue}if(a===t)break e;for(;a.sibling===null;){if(a.return===null||a.return===t)break e;o===a&&(o=null),a=a.return}o===a&&(o=null),a.sibling.return=a.return,a=a.sibling}u&4&&(u=t.updateQueue,u!==null&&(o=u.retryQueue,o!==null&&(u.retryQueue=null,Bu(t,o))));break;case 19:Un(a,t),Pn(t),u&4&&(u=t.updateQueue,u!==null&&(t.updateQueue=null,Bu(t,u)));break;case 30:break;case 21:break;default:Un(a,t),Pn(t)}}function Pn(t){var a=t.flags;if(a&2){try{for(var o,u=t.return;u!==null;){if(aS(u)){o=u;break}u=u.return}if(o==null)throw Error(r(160));switch(o.tag){case 27:var p=o.stateNode,g=jp(t);Pu(t,g,p);break;case 5:var w=o.stateNode;o.flags&32&&(Va(w,""),o.flags&=-33);var R=jp(t);Pu(t,R,w);break;case 3:case 4:var z=o.stateNode.containerInfo,X=jp(t);Hp(t,X,z);break;default:throw Error(r(161))}}catch(re){_t(t,t.return,re)}t.flags&=-3}a&4096&&(t.flags&=-4097)}function hS(t){if(t.subtreeFlags&1024)for(t=t.child;t!==null;){var a=t;hS(a),a.tag===5&&a.flags&1024&&a.stateNode.reset(),t=t.sibling}}function _a(t,a){if(a.subtreeFlags&8772)for(a=a.child;a!==null;)oS(t,a.alternate,a),a=a.sibling}function es(t){for(t=t.child;t!==null;){var a=t;switch(a.tag){case 0:case 11:case 14:case 15:ai(4,a,a.return),es(a);break;case 1:Qr(a,a.return);var o=a.stateNode;typeof o.componentWillUnmount=="function"&&nS(a,a.return,o),es(a);break;case 27:jl(a.stateNode);case 26:case 5:Qr(a,a.return),es(a);break;case 22:a.memoizedState===null&&es(a);break;case 30:es(a);break;default:es(a)}t=t.sibling}}function Aa(t,a,o){for(o=o&&(a.subtreeFlags&8772)!==0,a=a.child;a!==null;){var u=a.alternate,p=t,g=a,w=g.flags;switch(g.tag){case 0:case 11:case 15:Aa(p,g,o),Tl(4,g);break;case 1:if(Aa(p,g,o),u=g,p=u.stateNode,typeof p.componentDidMount=="function")try{p.componentDidMount()}catch(X){_t(u,u.return,X)}if(u=g,p=u.updateQueue,p!==null){var R=u.stateNode;try{var z=p.shared.hiddenCallbacks;if(z!==null)for(p.shared.hiddenCallbacks=null,p=0;p<z.length;p++)Gb(z[p],R)}catch(X){_t(u,u.return,X)}}o&&w&64&&tS(g),kl(g,g.return);break;case 27:iS(g);case 26:case 5:Aa(p,g,o),o&&u===null&&w&4&&rS(g),kl(g,g.return);break;case 12:Aa(p,g,o);break;case 31:Aa(p,g,o),o&&w&4&&uS(p,g);break;case 13:Aa(p,g,o),o&&w&4&&dS(p,g);break;case 22:g.memoizedState===null&&Aa(p,g,o),kl(g,g.return);break;case 30:break;default:Aa(p,g,o)}a=a.sibling}}function Up(t,a){var o=null;t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(o=t.memoizedState.cachePool.pool),t=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(t=a.memoizedState.cachePool.pool),t!==o&&(t!=null&&t.refCount++,o!=null&&pl(o))}function Pp(t,a){t=null,a.alternate!==null&&(t=a.alternate.memoizedState.cache),a=a.memoizedState.cache,a!==t&&(a.refCount++,t!=null&&pl(t))}function Ir(t,a,o,u){if(a.subtreeFlags&10256)for(a=a.child;a!==null;)pS(t,a,o,u),a=a.sibling}function pS(t,a,o,u){var p=a.flags;switch(a.tag){case 0:case 11:case 15:Ir(t,a,o,u),p&2048&&Tl(9,a);break;case 1:Ir(t,a,o,u);break;case 3:Ir(t,a,o,u),p&2048&&(t=null,a.alternate!==null&&(t=a.alternate.memoizedState.cache),a=a.memoizedState.cache,a!==t&&(a.refCount++,t!=null&&pl(t)));break;case 12:if(p&2048){Ir(t,a,o,u),t=a.stateNode;try{var g=a.memoizedProps,w=g.id,R=g.onPostCommit;typeof R=="function"&&R(w,a.alternate===null?"mount":"update",t.passiveEffectDuration,-0)}catch(z){_t(a,a.return,z)}}else Ir(t,a,o,u);break;case 31:Ir(t,a,o,u);break;case 13:Ir(t,a,o,u);break;case 23:break;case 22:g=a.stateNode,w=a.alternate,a.memoizedState!==null?g._visibility&2?Ir(t,a,o,u):Rl(t,a):g._visibility&2?Ir(t,a,o,u):(g._visibility|=2,Ys(t,a,o,u,(a.subtreeFlags&10256)!==0||!1)),p&2048&&Up(w,a);break;case 24:Ir(t,a,o,u),p&2048&&Pp(a.alternate,a);break;default:Ir(t,a,o,u)}}function Ys(t,a,o,u,p){for(p=p&&((a.subtreeFlags&10256)!==0||!1),a=a.child;a!==null;){var g=t,w=a,R=o,z=u,X=w.flags;switch(w.tag){case 0:case 11:case 15:Ys(g,w,R,z,p),Tl(8,w);break;case 23:break;case 22:var re=w.stateNode;w.memoizedState!==null?re._visibility&2?Ys(g,w,R,z,p):Rl(g,w):(re._visibility|=2,Ys(g,w,R,z,p)),p&&X&2048&&Up(w.alternate,w);break;case 24:Ys(g,w,R,z,p),p&&X&2048&&Pp(w.alternate,w);break;default:Ys(g,w,R,z,p)}a=a.sibling}}function Rl(t,a){if(a.subtreeFlags&10256)for(a=a.child;a!==null;){var o=t,u=a,p=u.flags;switch(u.tag){case 22:Rl(o,u),p&2048&&Up(u.alternate,u);break;case 24:Rl(o,u),p&2048&&Pp(u.alternate,u);break;default:Rl(o,u)}a=a.sibling}}var Dl=8192;function Xs(t,a,o){if(t.subtreeFlags&Dl)for(t=t.child;t!==null;)gS(t,a,o),t=t.sibling}function gS(t,a,o){switch(t.tag){case 26:Xs(t,a,o),t.flags&Dl&&t.memoizedState!==null&&mk(o,Nr,t.memoizedState,t.memoizedProps);break;case 5:Xs(t,a,o);break;case 3:case 4:var u=Nr;Nr=nd(t.stateNode.containerInfo),Xs(t,a,o),Nr=u;break;case 22:t.memoizedState===null&&(u=t.alternate,u!==null&&u.memoizedState!==null?(u=Dl,Dl=16777216,Xs(t,a,o),Dl=u):Xs(t,a,o));break;default:Xs(t,a,o)}}function mS(t){var a=t.alternate;if(a!==null&&(t=a.child,t!==null)){a.child=null;do a=t.sibling,t.sibling=null,t=a;while(t!==null)}}function Ol(t){var a=t.deletions;if((t.flags&16)!==0){if(a!==null)for(var o=0;o<a.length;o++){var u=a[o];fn=u,bS(u,t)}mS(t)}if(t.subtreeFlags&10256)for(t=t.child;t!==null;)yS(t),t=t.sibling}function yS(t){switch(t.tag){case 0:case 11:case 15:Ol(t),t.flags&2048&&ai(9,t,t.return);break;case 3:Ol(t);break;case 12:Ol(t);break;case 22:var a=t.stateNode;t.memoizedState!==null&&a._visibility&2&&(t.return===null||t.return.tag!==13)?(a._visibility&=-3,qu(t)):Ol(t);break;default:Ol(t)}}function qu(t){var a=t.deletions;if((t.flags&16)!==0){if(a!==null)for(var o=0;o<a.length;o++){var u=a[o];fn=u,bS(u,t)}mS(t)}for(t=t.child;t!==null;){switch(a=t,a.tag){case 0:case 11:case 15:ai(8,a,a.return),qu(a);break;case 22:o=a.stateNode,o._visibility&2&&(o._visibility&=-3,qu(a));break;default:qu(a)}t=t.sibling}}function bS(t,a){for(;fn!==null;){var o=fn;switch(o.tag){case 0:case 11:case 15:ai(8,o,a);break;case 23:case 22:if(o.memoizedState!==null&&o.memoizedState.cachePool!==null){var u=o.memoizedState.cachePool.pool;u!=null&&u.refCount++}break;case 24:pl(o.memoizedState.cache)}if(u=o.child,u!==null)u.return=o,fn=u;else e:for(o=t;fn!==null;){u=fn;var p=u.sibling,g=u.return;if(lS(u),u===o){fn=null;break e}if(p!==null){p.return=g,fn=p;break e}fn=g}}}var OT={getCacheForType:function(t){var a=vn(Qt),o=a.data.get(t);return o===void 0&&(o=t(),a.data.set(t,o)),o},cacheSignal:function(){return vn(Qt).controller.signal}},LT=typeof WeakMap=="function"?WeakMap:Map,vt=0,Dt=null,rt=null,st=0,Et=0,Zn=null,ii=!1,Js=!1,Bp=!1,xa=0,Ft=0,si=0,ts=0,qp=0,er=0,Qs=0,Ll=null,Bn=null,Gp=!1,Gu=0,vS=0,Fu=1/0,Vu=null,oi=null,cn=0,li=null,Zs=null,Ta=0,Fp=0,Vp=null,SS=null,$l=0,Kp=null;function tr(){return(vt&2)!==0&&st!==0?st&-st:J.T!==null?Zp():Mt()}function wS(){if(er===0)if((st&536870912)===0||ut){var t=ve;ve<<=1,(ve&3932160)===0&&(ve=262144),er=t}else er=536870912;return t=Jn.current,t!==null&&(t.flags|=32),er}function qn(t,a,o){(t===Dt&&(Et===2||Et===9)||t.cancelPendingCommit!==null)&&(eo(t,0),ci(t,st,er,!1)),et(t,o),((vt&2)===0||t!==Dt)&&(t===Dt&&((vt&2)===0&&(ts|=o),Ft===4&&ci(t,st,er,!1)),Zr(t))}function CS(t,a,o){if((vt&6)!==0)throw Error(r(327));var u=!o&&(a&127)===0&&(a&t.expiredLanes)===0||Ve(t,a),p=u?NT(t,a):Yp(t,a,!0),g=u;do{if(p===0){Js&&!u&&ci(t,a,0,!1);break}else{if(o=t.current.alternate,g&&!$T(o)){p=Yp(t,a,!1),g=!1;continue}if(p===2){if(g=a,t.errorRecoveryDisabledLanes&g)var w=0;else w=t.pendingLanes&-536870913,w=w!==0?w:w&536870912?536870912:0;if(w!==0){a=w;e:{var R=t;p=Ll;var z=R.current.memoizedState.isDehydrated;if(z&&(eo(R,w).flags|=256),w=Yp(R,w,!1),w!==2){if(Bp&&!z){R.errorRecoveryDisabledLanes|=g,ts|=g,p=4;break e}g=Bn,Bn=p,g!==null&&(Bn===null?Bn=g:Bn.push.apply(Bn,g))}p=w}if(g=!1,p!==2)continue}}if(p===1){eo(t,0),ci(t,a,0,!0);break}e:{switch(u=t,g=p,g){case 0:case 1:throw Error(r(345));case 4:if((a&4194048)!==a)break;case 6:ci(u,a,er,!ii);break e;case 2:Bn=null;break;case 3:case 5:break;default:throw Error(r(329))}if((a&62914560)===a&&(p=Gu+300-qt(),10<p)){if(ci(u,a,er,!ii),Ae(u,0,!0)!==0)break e;Ta=a,u.timeoutHandle=ZS(ES.bind(null,u,o,Bn,Vu,Gp,a,er,ts,Qs,ii,g,"Throttled",-0,0),p);break e}ES(u,o,Bn,Vu,Gp,a,er,ts,Qs,ii,g,null,-0,0)}}break}while(!0);Zr(t)}function ES(t,a,o,u,p,g,w,R,z,X,re,le,Q,te){if(t.timeoutHandle=-1,le=a.subtreeFlags,le&8192||(le&16785408)===16785408){le={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:Dr},gS(a,g,le);var De=(g&62914560)===g?Gu-qt():(g&4194048)===g?vS-qt():0;if(De=yk(le,De),De!==null){Ta=g,t.cancelPendingCommit=De(OS.bind(null,t,a,g,o,u,p,w,R,z,re,le,null,Q,te)),ci(t,g,w,!X);return}}OS(t,a,g,o,u,p,w,R,z)}function $T(t){for(var a=t;;){var o=a.tag;if((o===0||o===11||o===15)&&a.flags&16384&&(o=a.updateQueue,o!==null&&(o=o.stores,o!==null)))for(var u=0;u<o.length;u++){var p=o[u],g=p.getSnapshot;p=p.value;try{if(!Yn(g(),p))return!1}catch{return!1}}if(o=a.child,a.subtreeFlags&16384&&o!==null)o.return=a,a=o;else{if(a===t)break;for(;a.sibling===null;){if(a.return===null||a.return===t)return!0;a=a.return}a.sibling.return=a.return,a=a.sibling}}return!0}function ci(t,a,o,u){a&=~qp,a&=~ts,t.suspendedLanes|=a,t.pingedLanes&=~a,u&&(t.warmLanes|=a),u=t.expirationTimes;for(var p=a;0<p;){var g=31-on(p),w=1<<g;u[g]=-1,p&=~w}o!==0&&Ge(t,o,a)}function Ku(){return(vt&6)===0?(Ml(0),!1):!0}function Wp(){if(rt!==null){if(Et===0)var t=rt.return;else t=rt,ma=Vi=null,up(t),Gs=null,ml=0,t=rt;for(;t!==null;)eS(t.alternate,t),t=t.return;rt=null}}function eo(t,a){var o=t.timeoutHandle;o!==-1&&(t.timeoutHandle=-1,ZT(o)),o=t.cancelPendingCommit,o!==null&&(t.cancelPendingCommit=null,o()),Ta=0,Wp(),Dt=t,rt=o=pa(t.current,null),st=a,Et=0,Zn=null,ii=!1,Js=Ve(t,a),Bp=!1,Qs=er=qp=ts=si=Ft=0,Bn=Ll=null,Gp=!1,(a&8)!==0&&(a|=a&32);var u=t.entangledLanes;if(u!==0)for(t=t.entanglements,u&=a;0<u;){var p=31-on(u),g=1<<p;a|=t[p],u&=~g}return xa=a,pu(),o}function _S(t,a){Xe=null,J.H=_l,a===qs||a===Cu?(a=Ub(),Et=3):a===Qh?(a=Ub(),Et=4):Et=a===xp?8:a!==null&&typeof a=="object"&&typeof a.then=="function"?6:1,Zn=a,rt===null&&(Ft=1,Iu(t,dr(a,t.current)))}function AS(){var t=Jn.current;return t===null?!0:(st&4194048)===st?gr===null:(st&62914560)===st||(st&536870912)!==0?t===gr:!1}function xS(){var t=J.H;return J.H=_l,t===null?_l:t}function TS(){var t=J.A;return J.A=OT,t}function Wu(){Ft=4,ii||(st&4194048)!==st&&Jn.current!==null||(Js=!0),(si&134217727)===0&&(ts&134217727)===0||Dt===null||ci(Dt,st,er,!1)}function Yp(t,a,o){var u=vt;vt|=2;var p=xS(),g=TS();(Dt!==t||st!==a)&&(Vu=null,eo(t,a)),a=!1;var w=Ft;e:do try{if(Et!==0&&rt!==null){var R=rt,z=Zn;switch(Et){case 8:Wp(),w=6;break e;case 3:case 2:case 9:case 6:Jn.current===null&&(a=!0);var X=Et;if(Et=0,Zn=null,to(t,R,z,X),o&&Js){w=0;break e}break;default:X=Et,Et=0,Zn=null,to(t,R,z,X)}}MT(),w=Ft;break}catch(re){_S(t,re)}while(!0);return a&&t.shellSuspendCounter++,ma=Vi=null,vt=u,J.H=p,J.A=g,rt===null&&(Dt=null,st=0,pu()),w}function MT(){for(;rt!==null;)kS(rt)}function NT(t,a){var o=vt;vt|=2;var u=xS(),p=TS();Dt!==t||st!==a?(Vu=null,Fu=qt()+500,eo(t,a)):Js=Ve(t,a);e:do try{if(Et!==0&&rt!==null){a=rt;var g=Zn;t:switch(Et){case 1:Et=0,Zn=null,to(t,a,g,1);break;case 2:case 9:if(Hb(g)){Et=0,Zn=null,RS(a);break}a=function(){Et!==2&&Et!==9||Dt!==t||(Et=7),Zr(t)},g.then(a,a);break e;case 3:Et=7;break e;case 4:Et=5;break e;case 7:Hb(g)?(Et=0,Zn=null,RS(a)):(Et=0,Zn=null,to(t,a,g,7));break;case 5:var w=null;switch(rt.tag){case 26:w=rt.memoizedState;case 5:case 27:var R=rt;if(w?pw(w):R.stateNode.complete){Et=0,Zn=null;var z=R.sibling;if(z!==null)rt=z;else{var X=R.return;X!==null?(rt=X,Yu(X)):rt=null}break t}}Et=0,Zn=null,to(t,a,g,5);break;case 6:Et=0,Zn=null,to(t,a,g,6);break;case 8:Wp(),Ft=6;break e;default:throw Error(r(462))}}IT();break}catch(re){_S(t,re)}while(!0);return ma=Vi=null,J.H=u,J.A=p,vt=o,rt!==null?0:(Dt=null,st=0,pu(),Ft)}function IT(){for(;rt!==null&&!Wn();)kS(rt)}function kS(t){var a=Qv(t.alternate,t,xa);t.memoizedProps=t.pendingProps,a===null?Yu(t):rt=a}function RS(t){var a=t,o=a.alternate;switch(a.tag){case 15:case 0:a=Vv(o,a,a.pendingProps,a.type,void 0,st);break;case 11:a=Vv(o,a,a.pendingProps,a.type.render,a.ref,st);break;case 5:up(a);default:eS(o,a),a=rt=Tb(a,xa),a=Qv(o,a,xa)}t.memoizedProps=t.pendingProps,a===null?Yu(t):rt=a}function to(t,a,o,u){ma=Vi=null,up(a),Gs=null,ml=0;var p=a.return;try{if(_T(t,p,a,o,st)){Ft=1,Iu(t,dr(o,t.current)),rt=null;return}}catch(g){if(p!==null)throw rt=p,g;Ft=1,Iu(t,dr(o,t.current)),rt=null;return}a.flags&32768?(ut||u===1?t=!0:Js||(st&536870912)!==0?t=!1:(ii=t=!0,(u===2||u===9||u===3||u===6)&&(u=Jn.current,u!==null&&u.tag===13&&(u.flags|=16384))),DS(a,t)):Yu(a)}function Yu(t){var a=t;do{if((a.flags&32768)!==0){DS(a,ii);return}t=a.return;var o=TT(a.alternate,a,xa);if(o!==null){rt=o;return}if(a=a.sibling,a!==null){rt=a;return}rt=a=t}while(a!==null);Ft===0&&(Ft=5)}function DS(t,a){do{var o=kT(t.alternate,t);if(o!==null){o.flags&=32767,rt=o;return}if(o=t.return,o!==null&&(o.flags|=32768,o.subtreeFlags=0,o.deletions=null),!a&&(t=t.sibling,t!==null)){rt=t;return}rt=t=o}while(t!==null);Ft=6,rt=null}function OS(t,a,o,u,p,g,w,R,z){t.cancelPendingCommit=null;do Xu();while(cn!==0);if((vt&6)!==0)throw Error(r(327));if(a!==null){if(a===t.current)throw Error(r(177));if(g=a.lanes|a.childLanes,g|=jh,He(t,o,g,w,R,z),t===Dt&&(rt=Dt=null,st=0),Zs=a,li=t,Ta=o,Fp=g,Vp=p,SS=u,(a.subtreeFlags&10256)!==0||(a.flags&10256)!==0?(t.callbackNode=null,t.callbackPriority=0,UT(Dn,function(){return IS(),null})):(t.callbackNode=null,t.callbackPriority=0),u=(a.flags&13878)!==0,(a.subtreeFlags&13878)!==0||u){u=J.T,J.T=null,p=fe.p,fe.p=2,w=vt,vt|=4;try{RT(t,a,o)}finally{vt=w,fe.p=p,J.T=u}}cn=1,LS(),$S(),MS()}}function LS(){if(cn===1){cn=0;var t=li,a=Zs,o=(a.flags&13878)!==0;if((a.subtreeFlags&13878)!==0||o){o=J.T,J.T=null;var u=fe.p;fe.p=2;var p=vt;vt|=4;try{fS(a,t);var g=og,w=bb(t.containerInfo),R=g.focusedElem,z=g.selectionRange;if(w!==R&&R&&R.ownerDocument&&yb(R.ownerDocument.documentElement,R)){if(z!==null&&Lh(R)){var X=z.start,re=z.end;if(re===void 0&&(re=X),"selectionStart"in R)R.selectionStart=X,R.selectionEnd=Math.min(re,R.value.length);else{var le=R.ownerDocument||document,Q=le&&le.defaultView||window;if(Q.getSelection){var te=Q.getSelection(),De=R.textContent.length,Be=Math.min(z.start,De),kt=z.end===void 0?Be:Math.min(z.end,De);!te.extend&&Be>kt&&(w=kt,kt=Be,Be=w);var V=mb(R,Be),q=mb(R,kt);if(V&&q&&(te.rangeCount!==1||te.anchorNode!==V.node||te.anchorOffset!==V.offset||te.focusNode!==q.node||te.focusOffset!==q.offset)){var Y=le.createRange();Y.setStart(V.node,V.offset),te.removeAllRanges(),Be>kt?(te.addRange(Y),te.extend(q.node,q.offset)):(Y.setEnd(q.node,q.offset),te.addRange(Y))}}}}for(le=[],te=R;te=te.parentNode;)te.nodeType===1&&le.push({element:te,left:te.scrollLeft,top:te.scrollTop});for(typeof R.focus=="function"&&R.focus(),R=0;R<le.length;R++){var oe=le[R];oe.element.scrollLeft=oe.left,oe.element.scrollTop=oe.top}}ld=!!sg,og=sg=null}finally{vt=p,fe.p=u,J.T=o}}t.current=a,cn=2}}function $S(){if(cn===2){cn=0;var t=li,a=Zs,o=(a.flags&8772)!==0;if((a.subtreeFlags&8772)!==0||o){o=J.T,J.T=null;var u=fe.p;fe.p=2;var p=vt;vt|=4;try{oS(t,a.alternate,a)}finally{vt=p,fe.p=u,J.T=o}}cn=3}}function MS(){if(cn===4||cn===3){cn=0,Vr();var t=li,a=Zs,o=Ta,u=SS;(a.subtreeFlags&10256)!==0||(a.flags&10256)!==0?cn=5:(cn=0,Zs=li=null,NS(t,t.pendingLanes));var p=t.pendingLanes;if(p===0&&(oi=null),At(o),a=a.stateNode,sn&&typeof sn.onCommitFiberRoot=="function")try{sn.onCommitFiberRoot(lr,a,void 0,(a.current.flags&128)===128)}catch{}if(u!==null){a=J.T,p=fe.p,fe.p=2,J.T=null;try{for(var g=t.onRecoverableError,w=0;w<u.length;w++){var R=u[w];g(R.value,{componentStack:R.stack})}}finally{J.T=a,fe.p=p}}(Ta&3)!==0&&Xu(),Zr(t),p=t.pendingLanes,(o&261930)!==0&&(p&42)!==0?t===Kp?$l++:($l=0,Kp=t):$l=0,Ml(0)}}function NS(t,a){(t.pooledCacheLanes&=a)===0&&(a=t.pooledCache,a!=null&&(t.pooledCache=null,pl(a)))}function Xu(){return LS(),$S(),MS(),IS()}function IS(){if(cn!==5)return!1;var t=li,a=Fp;Fp=0;var o=At(Ta),u=J.T,p=fe.p;try{fe.p=32>o?32:o,J.T=null,o=Vp,Vp=null;var g=li,w=Ta;if(cn=0,Zs=li=null,Ta=0,(vt&6)!==0)throw Error(r(331));var R=vt;if(vt|=4,yS(g.current),pS(g,g.current,w,o),vt=R,Ml(0,!1),sn&&typeof sn.onPostCommitFiberRoot=="function")try{sn.onPostCommitFiberRoot(lr,g)}catch{}return!0}finally{fe.p=p,J.T=u,NS(t,a)}}function jS(t,a,o){a=dr(o,a),a=Ap(t.stateNode,a,2),t=ti(t,a,2),t!==null&&(et(t,2),Zr(t))}function _t(t,a,o){if(t.tag===3)jS(t,t,o);else for(;a!==null;){if(a.tag===3){jS(a,t,o);break}else if(a.tag===1){var u=a.stateNode;if(typeof a.type.getDerivedStateFromError=="function"||typeof u.componentDidCatch=="function"&&(oi===null||!oi.has(u))){t=dr(o,t),o=Hv(2),u=ti(a,o,2),u!==null&&(zv(o,u,a,t),et(u,2),Zr(u));break}}a=a.return}}function Xp(t,a,o){var u=t.pingCache;if(u===null){u=t.pingCache=new LT;var p=new Set;u.set(a,p)}else p=u.get(a),p===void 0&&(p=new Set,u.set(a,p));p.has(o)||(Bp=!0,p.add(o),t=jT.bind(null,t,a,o),a.then(t,t))}function jT(t,a,o){var u=t.pingCache;u!==null&&u.delete(a),t.pingedLanes|=t.suspendedLanes&o,t.warmLanes&=~o,Dt===t&&(st&o)===o&&(Ft===4||Ft===3&&(st&62914560)===st&&300>qt()-Gu?(vt&2)===0&&eo(t,0):qp|=o,Qs===st&&(Qs=0)),Zr(t)}function HS(t,a){a===0&&(a=Ne()),t=qi(t,a),t!==null&&(et(t,a),Zr(t))}function HT(t){var a=t.memoizedState,o=0;a!==null&&(o=a.retryLane),HS(t,o)}function zT(t,a){var o=0;switch(t.tag){case 31:case 13:var u=t.stateNode,p=t.memoizedState;p!==null&&(o=p.retryLane);break;case 19:u=t.stateNode;break;case 22:u=t.stateNode._retryCache;break;default:throw Error(r(314))}u!==null&&u.delete(a),HS(t,o)}function UT(t,a){return an(t,a)}var Ju=null,no=null,Jp=!1,Qu=!1,Qp=!1,ui=0;function Zr(t){t!==no&&t.next===null&&(no===null?Ju=no=t:no=no.next=t),Qu=!0,Jp||(Jp=!0,BT())}function Ml(t,a){if(!Qp&&Qu){Qp=!0;do for(var o=!1,u=Ju;u!==null;){if(t!==0){var p=u.pendingLanes;if(p===0)var g=0;else{var w=u.suspendedLanes,R=u.pingedLanes;g=(1<<31-on(42|t)+1)-1,g&=p&~(w&~R),g=g&201326741?g&201326741|1:g?g|2:0}g!==0&&(o=!0,BS(u,g))}else g=st,g=Ae(u,u===Dt?g:0,u.cancelPendingCommit!==null||u.timeoutHandle!==-1),(g&3)===0||Ve(u,g)||(o=!0,BS(u,g));u=u.next}while(o);Qp=!1}}function PT(){zS()}function zS(){Qu=Jp=!1;var t=0;ui!==0&&QT()&&(t=ui);for(var a=qt(),o=null,u=Ju;u!==null;){var p=u.next,g=US(u,a);g===0?(u.next=null,o===null?Ju=p:o.next=p,p===null&&(no=o)):(o=u,(t!==0||(g&3)!==0)&&(Qu=!0)),u=p}cn!==0&&cn!==5||Ml(t),ui!==0&&(ui=0)}function US(t,a){for(var o=t.suspendedLanes,u=t.pingedLanes,p=t.expirationTimes,g=t.pendingLanes&-62914561;0<g;){var w=31-on(g),R=1<<w,z=p[w];z===-1?((R&o)===0||(R&u)!==0)&&(p[w]=ke(R,a)):z<=a&&(t.expiredLanes|=R),g&=~R}if(a=Dt,o=st,o=Ae(t,t===a?o:0,t.cancelPendingCommit!==null||t.timeoutHandle!==-1),u=t.callbackNode,o===0||t===a&&(Et===2||Et===9)||t.cancelPendingCommit!==null)return u!==null&&u!==null&&pn(u),t.callbackNode=null,t.callbackPriority=0;if((o&3)===0||Ve(t,o)){if(a=o&-o,a===t.callbackPriority)return a;switch(u!==null&&pn(u),At(o)){case 2:case 8:o=gn;break;case 32:o=Dn;break;case 268435456:o=In;break;default:o=Dn}return u=PS.bind(null,t),o=an(o,u),t.callbackPriority=a,t.callbackNode=o,a}return u!==null&&u!==null&&pn(u),t.callbackPriority=2,t.callbackNode=null,2}function PS(t,a){if(cn!==0&&cn!==5)return t.callbackNode=null,t.callbackPriority=0,null;var o=t.callbackNode;if(Xu()&&t.callbackNode!==o)return null;var u=st;return u=Ae(t,t===Dt?u:0,t.cancelPendingCommit!==null||t.timeoutHandle!==-1),u===0?null:(CS(t,u,a),US(t,qt()),t.callbackNode!=null&&t.callbackNode===o?PS.bind(null,t):null)}function BS(t,a){if(Xu())return null;CS(t,a,!0)}function BT(){ek(function(){(vt&6)!==0?an(la,PT):zS()})}function Zp(){if(ui===0){var t=Ps;t===0&&(t=ee,ee<<=1,(ee&261888)===0&&(ee=256)),ui=t}return ui}function qS(t){return t==null||typeof t=="symbol"||typeof t=="boolean"?null:typeof t=="function"?t:cr(""+t)}function GS(t,a){var o=a.ownerDocument.createElement("input");return o.name=a.name,o.value=a.value,t.id&&o.setAttribute("form",t.id),a.parentNode.insertBefore(o,a),t=new FormData(t),o.parentNode.removeChild(o),t}function qT(t,a,o,u,p){if(a==="submit"&&o&&o.stateNode===p){var g=qS((p[An]||null).action),w=u.submitter;w&&(a=(a=w[An]||null)?qS(a.formAction):w.getAttribute("formAction"),a!==null&&(g=a,w=null));var R=new ha("action","action",null,u,p);t.push({event:R,listeners:[{instance:null,listener:function(){if(u.defaultPrevented){if(ui!==0){var z=w?GS(p,w):new FormData(p);vp(o,{pending:!0,data:z,method:p.method,action:g},null,z)}}else typeof g=="function"&&(R.preventDefault(),z=w?GS(p,w):new FormData(p),vp(o,{pending:!0,data:z,method:p.method,action:g},g,z))},currentTarget:p}]})}}for(var eg=0;eg<Ih.length;eg++){var tg=Ih[eg],GT=tg.toLowerCase(),FT=tg[0].toUpperCase()+tg.slice(1);Mr(GT,"on"+FT)}Mr(wb,"onAnimationEnd"),Mr(Cb,"onAnimationIteration"),Mr(Eb,"onAnimationStart"),Mr("dblclick","onDoubleClick"),Mr("focusin","onFocus"),Mr("focusout","onBlur"),Mr(oT,"onTransitionRun"),Mr(lT,"onTransitionStart"),Mr(cT,"onTransitionCancel"),Mr(_b,"onTransitionEnd"),Ba("onMouseEnter",["mouseout","mouseover"]),Ba("onMouseLeave",["mouseout","mouseover"]),Ba("onPointerEnter",["pointerout","pointerover"]),Ba("onPointerLeave",["pointerout","pointerover"]),Rr("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),Rr("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),Rr("onBeforeInput",["compositionend","keypress","textInput","paste"]),Rr("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),Rr("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),Rr("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Nl="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(" "),VT=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(Nl));function FS(t,a){a=(a&4)!==0;for(var o=0;o<t.length;o++){var u=t[o],p=u.event;u=u.listeners;e:{var g=void 0;if(a)for(var w=u.length-1;0<=w;w--){var R=u[w],z=R.instance,X=R.currentTarget;if(R=R.listener,z!==g&&p.isPropagationStopped())break e;g=R,p.currentTarget=X;try{g(p)}catch(re){hu(re)}p.currentTarget=null,g=z}else for(w=0;w<u.length;w++){if(R=u[w],z=R.instance,X=R.currentTarget,R=R.listener,z!==g&&p.isPropagationStopped())break e;g=R,p.currentTarget=X;try{g(p)}catch(re){hu(re)}p.currentTarget=null,g=z}}}}function at(t,a){var o=a[Ko];o===void 0&&(o=a[Ko]=new Set);var u=t+"__bubble";o.has(u)||(VS(a,t,2,!1),o.add(u))}function ng(t,a,o){var u=0;a&&(u|=4),VS(o,t,u,a)}var Zu="_reactListening"+Math.random().toString(36).slice(2);function rg(t){if(!t[Zu]){t[Zu]=!0,Gc.forEach(function(o){o!=="selectionchange"&&(VT.has(o)||ng(o,!1,t),ng(o,!0,t))});var a=t.nodeType===9?t:t.ownerDocument;a===null||a[Zu]||(a[Zu]=!0,ng("selectionchange",!1,a))}}function VS(t,a,o,u){switch(ww(a)){case 2:var p=Sk;break;case 8:p=wk;break;default:p=bg}o=p.bind(null,a,o,t),p=void 0,!el||a!=="touchstart"&&a!=="touchmove"&&a!=="wheel"||(p=!0),u?p!==void 0?t.addEventListener(a,o,{capture:!0,passive:p}):t.addEventListener(a,o,!0):p!==void 0?t.addEventListener(a,o,{passive:p}):t.addEventListener(a,o,!1)}function ag(t,a,o,u,p){var g=u;if((a&1)===0&&(a&2)===0&&u!==null)e:for(;;){if(u===null)return;var w=u.tag;if(w===3||w===4){var R=u.stateNode.containerInfo;if(R===p)break;if(w===4)for(w=u.return;w!==null;){var z=w.tag;if((z===3||z===4)&&w.stateNode.containerInfo===p)return;w=w.return}for(;R!==null;){if(w=Ua(R),w===null)return;if(z=w.tag,z===5||z===6||z===26||z===27){u=g=w;continue e}R=R.parentNode}}u=u.return}eu(function(){var X=g,re=Zo(o),le=[];e:{var Q=Ab.get(t);if(Q!==void 0){var te=ha,De=t;switch(t){case"keypress":if(Mi(o)===0)break e;case"keydown":case"keyup":te=Ch;break;case"focusin":De="focus",te=al;break;case"focusout":De="blur",te=al;break;case"beforeblur":case"afterblur":te=al;break;case"click":if(o.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":te=ru;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":te=hb;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":te=Ah;break;case wb:case Cb:case Eb:te=gh;break;case _b:te=Ls;break;case"scroll":case"scrollend":te=fh;break;case"wheel":te=E;break;case"copy":case"cut":case"paste":te=au;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":te=ou;break;case"toggle":case"beforetoggle":te=C}var Be=(a&4)!==0,kt=!Be&&(t==="scroll"||t==="scrollend"),V=Be?Q!==null?Q+"Capture":null:Q;Be=[];for(var q=X,Y;q!==null;){var oe=q;if(Y=oe.stateNode,oe=oe.tag,oe!==5&&oe!==26&&oe!==27||Y===null||V===null||(oe=Li(q,V),oe!=null&&Be.push(Il(q,oe,Y))),kt)break;q=q.return}0<Be.length&&(Q=new te(Q,De,null,o,re),le.push({event:Q,listeners:Be}))}}if((a&7)===0){e:{if(Q=t==="mouseover"||t==="pointerover",te=t==="mouseout"||t==="pointerout",Q&&o!==Qo&&(De=o.relatedTarget||o.fromElement)&&(Ua(De)||De[za]))break e;if((te||Q)&&(Q=re.window===re?re:(Q=re.ownerDocument)?Q.defaultView||Q.parentWindow:window,te?(De=o.relatedTarget||o.toElement,te=X,De=De?Ua(De):null,De!==null&&(kt=l(De),Be=De.tag,De!==kt||Be!==5&&Be!==27&&Be!==6)&&(De=null)):(te=null,De=X),te!==De)){if(Be=ru,oe="onMouseLeave",V="onMouseEnter",q="mouse",(t==="pointerout"||t==="pointerover")&&(Be=ou,oe="onPointerLeave",V="onPointerEnter",q="pointer"),kt=te==null?Q:ua(te),Y=De==null?Q:ua(De),Q=new Be(oe,q+"leave",te,o,re),Q.target=kt,Q.relatedTarget=Y,oe=null,Ua(re)===X&&(Be=new Be(V,q+"enter",De,o,re),Be.target=Y,Be.relatedTarget=kt,oe=Be),kt=oe,te&&De)t:{for(Be=KT,V=te,q=De,Y=0,oe=V;oe;oe=Be(oe))Y++;oe=0;for(var Pe=q;Pe;Pe=Be(Pe))oe++;for(;0<Y-oe;)V=Be(V),Y--;for(;0<oe-Y;)q=Be(q),oe--;for(;Y--;){if(V===q||q!==null&&V===q.alternate){Be=V;break t}V=Be(V),q=Be(q)}Be=null}else Be=null;te!==null&&KS(le,Q,te,Be,!1),De!==null&&kt!==null&&KS(le,kt,De,Be,!0)}}e:{if(Q=X?ua(X):window,te=Q.nodeName&&Q.nodeName.toLowerCase(),te==="select"||te==="input"&&Q.type==="file")var mt=ol;else if(sl(Q))if(ll)mt=aT;else{mt=Oh;var Ie=Dh}else te=Q.nodeName,!te||te.toLowerCase()!=="input"||Q.type!=="checkbox"&&Q.type!=="radio"?X&&Xo(X.elementType)&&(mt=ol):mt=fu;if(mt&&(mt=mt(t,X))){cu(le,mt,o,re);break e}Ie&&Ie(t,Q,X),t==="focusout"&&X&&Q.type==="number"&&X.memoizedProps.value!=null&&da(Q,"number",Q.value)}switch(Ie=X?ua(X):window,t){case"focusin":(sl(Ie)||Ie.contentEditable==="true")&&($s=Ie,$h=X,dl=null);break;case"focusout":dl=$h=$s=null;break;case"mousedown":Mh=!0;break;case"contextmenu":case"mouseup":case"dragend":Mh=!1,vb(le,o,re);break;case"selectionchange":if(sT)break;case"keydown":case"keyup":vb(le,o,re)}var Qe;if(I)e:{switch(t){case"compositionstart":var ot="onCompositionStart";break e;case"compositionend":ot="onCompositionEnd";break e;case"compositionupdate":ot="onCompositionUpdate";break e}ot=void 0}else $r?gt(t,o)&&(ot="onCompositionEnd"):t==="keydown"&&o.keyCode===229&&(ot="onCompositionStart");ot&&($e&&o.locale!=="ko"&&($r||ot!=="onCompositionStart"?ot==="onCompositionEnd"&&$r&&(Qe=tu()):(Yr=re,tl="value"in Yr?Yr.value:Yr.textContent,$r=!0)),Ie=ed(X,ot),0<Ie.length&&(ot=new iu(ot,t,null,o,re),le.push({event:ot,listeners:Ie}),Qe?ot.data=Qe:(Qe=zt(o),Qe!==null&&(ot.data=Qe)))),(Qe=me?Th(t,o):lu(t,o))&&(ot=ed(X,"onBeforeInput"),0<ot.length&&(Ie=new iu("onBeforeInput","beforeinput",null,o,re),le.push({event:Ie,listeners:ot}),Ie.data=Qe)),qT(le,t,X,o,re)}FS(le,a)})}function Il(t,a,o){return{instance:t,listener:a,currentTarget:o}}function ed(t,a){for(var o=a+"Capture",u=[];t!==null;){var p=t,g=p.stateNode;if(p=p.tag,p!==5&&p!==26&&p!==27||g===null||(p=Li(t,o),p!=null&&u.unshift(Il(t,p,g)),p=Li(t,a),p!=null&&u.push(Il(t,p,g))),t.tag===3)return u;t=t.return}return[]}function KT(t){if(t===null)return null;do t=t.return;while(t&&t.tag!==5&&t.tag!==27);return t||null}function KS(t,a,o,u,p){for(var g=a._reactName,w=[];o!==null&&o!==u;){var R=o,z=R.alternate,X=R.stateNode;if(R=R.tag,z!==null&&z===u)break;R!==5&&R!==26&&R!==27||X===null||(z=X,p?(X=Li(o,g),X!=null&&w.unshift(Il(o,X,z))):p||(X=Li(o,g),X!=null&&w.push(Il(o,X,z)))),o=o.return}w.length!==0&&t.push({event:a,listeners:w})}var WT=/\r\n?/g,YT=/\u0000|\uFFFD/g;function WS(t){return(typeof t=="string"?t:""+t).replace(WT,`
|
||
`).replace(YT,"")}function YS(t,a){return a=WS(a),WS(t)===a}function Tt(t,a,o,u,p,g){switch(o){case"children":typeof u=="string"?a==="body"||a==="textarea"&&u===""||Va(t,u):(typeof u=="number"||typeof u=="bigint")&&a!=="body"&&Va(t,""+u);break;case"className":Di(t,"class",u);break;case"tabIndex":Di(t,"tabindex",u);break;case"dir":case"role":case"viewBox":case"width":case"height":Di(t,o,u);break;case"style":Qc(t,u,g);break;case"data":if(a!=="object"){Di(t,"data",u);break}case"src":case"href":if(u===""&&(a!=="a"||o!=="href")){t.removeAttribute(o);break}if(u==null||typeof u=="function"||typeof u=="symbol"||typeof u=="boolean"){t.removeAttribute(o);break}u=cr(""+u),t.setAttribute(o,u);break;case"action":case"formAction":if(typeof u=="function"){t.setAttribute(o,"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 g=="function"&&(o==="formAction"?(a!=="input"&&Tt(t,a,"name",p.name,p,null),Tt(t,a,"formEncType",p.formEncType,p,null),Tt(t,a,"formMethod",p.formMethod,p,null),Tt(t,a,"formTarget",p.formTarget,p,null)):(Tt(t,a,"encType",p.encType,p,null),Tt(t,a,"method",p.method,p,null),Tt(t,a,"target",p.target,p,null)));if(u==null||typeof u=="symbol"||typeof u=="boolean"){t.removeAttribute(o);break}u=cr(""+u),t.setAttribute(o,u);break;case"onClick":u!=null&&(t.onclick=Dr);break;case"onScroll":u!=null&&at("scroll",t);break;case"onScrollEnd":u!=null&&at("scrollend",t);break;case"dangerouslySetInnerHTML":if(u!=null){if(typeof u!="object"||!("__html"in u))throw Error(r(61));if(o=u.__html,o!=null){if(p.children!=null)throw Error(r(60));t.innerHTML=o}}break;case"multiple":t.multiple=u&&typeof u!="function"&&typeof u!="symbol";break;case"muted":t.muted=u&&typeof u!="function"&&typeof u!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(u==null||typeof u=="function"||typeof u=="boolean"||typeof u=="symbol"){t.removeAttribute("xlink:href");break}o=cr(""+u),t.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":u!=null&&typeof u!="function"&&typeof u!="symbol"?t.setAttribute(o,""+u):t.removeAttribute(o);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":u&&typeof u!="function"&&typeof u!="symbol"?t.setAttribute(o,""):t.removeAttribute(o);break;case"capture":case"download":u===!0?t.setAttribute(o,""):u!==!1&&u!=null&&typeof u!="function"&&typeof u!="symbol"?t.setAttribute(o,u):t.removeAttribute(o);break;case"cols":case"rows":case"size":case"span":u!=null&&typeof u!="function"&&typeof u!="symbol"&&!isNaN(u)&&1<=u?t.setAttribute(o,u):t.removeAttribute(o);break;case"rowSpan":case"start":u==null||typeof u=="function"||typeof u=="symbol"||isNaN(u)?t.removeAttribute(o):t.setAttribute(o,u);break;case"popover":at("beforetoggle",t),at("toggle",t),jn(t,"popover",u);break;case"xlinkActuate":yn(t,"http://www.w3.org/1999/xlink","xlink:actuate",u);break;case"xlinkArcrole":yn(t,"http://www.w3.org/1999/xlink","xlink:arcrole",u);break;case"xlinkRole":yn(t,"http://www.w3.org/1999/xlink","xlink:role",u);break;case"xlinkShow":yn(t,"http://www.w3.org/1999/xlink","xlink:show",u);break;case"xlinkTitle":yn(t,"http://www.w3.org/1999/xlink","xlink:title",u);break;case"xlinkType":yn(t,"http://www.w3.org/1999/xlink","xlink:type",u);break;case"xmlBase":yn(t,"http://www.w3.org/XML/1998/namespace","xml:base",u);break;case"xmlLang":yn(t,"http://www.w3.org/XML/1998/namespace","xml:lang",u);break;case"xmlSpace":yn(t,"http://www.w3.org/XML/1998/namespace","xml:space",u);break;case"is":jn(t,"is",u);break;case"innerText":case"textContent":break;default:(!(2<o.length)||o[0]!=="o"&&o[0]!=="O"||o[1]!=="n"&&o[1]!=="N")&&(o=dh.get(o)||o,jn(t,o,u))}}function ig(t,a,o,u,p,g){switch(o){case"style":Qc(t,u,g);break;case"dangerouslySetInnerHTML":if(u!=null){if(typeof u!="object"||!("__html"in u))throw Error(r(61));if(o=u.__html,o!=null){if(p.children!=null)throw Error(r(60));t.innerHTML=o}}break;case"children":typeof u=="string"?Va(t,u):(typeof u=="number"||typeof u=="bigint")&&Va(t,""+u);break;case"onScroll":u!=null&&at("scroll",t);break;case"onScrollEnd":u!=null&&at("scrollend",t);break;case"onClick":u!=null&&(t.onclick=Dr);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!Fc.hasOwnProperty(o))e:{if(o[0]==="o"&&o[1]==="n"&&(p=o.endsWith("Capture"),a=o.slice(2,p?o.length-7:void 0),g=t[An]||null,g=g!=null?g[o]:null,typeof g=="function"&&t.removeEventListener(a,g,p),typeof u=="function")){typeof g!="function"&&g!==null&&(o in t?t[o]=null:t.hasAttribute(o)&&t.removeAttribute(o)),t.addEventListener(a,u,p);break e}o in t?t[o]=u:u===!0?t.setAttribute(o,""):jn(t,o,u)}}}function wn(t,a,o){switch(a){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":at("error",t),at("load",t);var u=!1,p=!1,g;for(g in o)if(o.hasOwnProperty(g)){var w=o[g];if(w!=null)switch(g){case"src":u=!0;break;case"srcSet":p=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(r(137,a));default:Tt(t,a,g,w,o,null)}}p&&Tt(t,a,"srcSet",o.srcSet,o,null),u&&Tt(t,a,"src",o.src,o,null);return;case"input":at("invalid",t);var R=g=w=p=null,z=null,X=null;for(u in o)if(o.hasOwnProperty(u)){var re=o[u];if(re!=null)switch(u){case"name":p=re;break;case"type":w=re;break;case"checked":z=re;break;case"defaultChecked":X=re;break;case"value":g=re;break;case"defaultValue":R=re;break;case"children":case"dangerouslySetInnerHTML":if(re!=null)throw Error(r(137,a));break;default:Tt(t,a,u,re,o,null)}}Oi(t,g,R,z,X,w,p,!1);return;case"select":at("invalid",t),u=w=g=null;for(p in o)if(o.hasOwnProperty(p)&&(R=o[p],R!=null))switch(p){case"value":g=R;break;case"defaultValue":w=R;break;case"multiple":u=R;default:Tt(t,a,p,R,o,null)}a=g,o=w,t.multiple=!!u,a!=null?Ga(t,!!u,a,!1):o!=null&&Ga(t,!!u,o,!0);return;case"textarea":at("invalid",t),g=p=u=null;for(w in o)if(o.hasOwnProperty(w)&&(R=o[w],R!=null))switch(w){case"value":u=R;break;case"defaultValue":p=R;break;case"children":g=R;break;case"dangerouslySetInnerHTML":if(R!=null)throw Error(r(91));break;default:Tt(t,a,w,R,o,null)}Xc(t,u,p,g);return;case"option":for(z in o)o.hasOwnProperty(z)&&(u=o[z],u!=null)&&(z==="selected"?t.selected=u&&typeof u!="function"&&typeof u!="symbol":Tt(t,a,z,u,o,null));return;case"dialog":at("beforetoggle",t),at("toggle",t),at("cancel",t),at("close",t);break;case"iframe":case"object":at("load",t);break;case"video":case"audio":for(u=0;u<Nl.length;u++)at(Nl[u],t);break;case"image":at("error",t),at("load",t);break;case"details":at("toggle",t);break;case"embed":case"source":case"link":at("error",t),at("load",t);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(X in o)if(o.hasOwnProperty(X)&&(u=o[X],u!=null))switch(X){case"children":case"dangerouslySetInnerHTML":throw Error(r(137,a));default:Tt(t,a,X,u,o,null)}return;default:if(Xo(a)){for(re in o)o.hasOwnProperty(re)&&(u=o[re],u!==void 0&&ig(t,a,re,u,o,void 0));return}}for(R in o)o.hasOwnProperty(R)&&(u=o[R],u!=null&&Tt(t,a,R,u,o,null))}function XT(t,a,o,u){switch(a){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var p=null,g=null,w=null,R=null,z=null,X=null,re=null;for(te in o){var le=o[te];if(o.hasOwnProperty(te)&&le!=null)switch(te){case"checked":break;case"value":break;case"defaultValue":z=le;default:u.hasOwnProperty(te)||Tt(t,a,te,null,u,le)}}for(var Q in u){var te=u[Q];if(le=o[Q],u.hasOwnProperty(Q)&&(te!=null||le!=null))switch(Q){case"type":g=te;break;case"name":p=te;break;case"checked":X=te;break;case"defaultChecked":re=te;break;case"value":w=te;break;case"defaultValue":R=te;break;case"children":case"dangerouslySetInnerHTML":if(te!=null)throw Error(r(137,a));break;default:te!==le&&Tt(t,a,Q,te,u,le)}}Ts(t,w,R,z,X,re,g,p);return;case"select":te=w=R=Q=null;for(g in o)if(z=o[g],o.hasOwnProperty(g)&&z!=null)switch(g){case"value":break;case"multiple":te=z;default:u.hasOwnProperty(g)||Tt(t,a,g,null,u,z)}for(p in u)if(g=u[p],z=o[p],u.hasOwnProperty(p)&&(g!=null||z!=null))switch(p){case"value":Q=g;break;case"defaultValue":R=g;break;case"multiple":w=g;default:g!==z&&Tt(t,a,p,g,u,z)}a=R,o=w,u=te,Q!=null?Ga(t,!!o,Q,!1):!!u!=!!o&&(a!=null?Ga(t,!!o,a,!0):Ga(t,!!o,o?[]:"",!1));return;case"textarea":te=Q=null;for(R in o)if(p=o[R],o.hasOwnProperty(R)&&p!=null&&!u.hasOwnProperty(R))switch(R){case"value":break;case"children":break;default:Tt(t,a,R,null,u,p)}for(w in u)if(p=u[w],g=o[w],u.hasOwnProperty(w)&&(p!=null||g!=null))switch(w){case"value":Q=p;break;case"defaultValue":te=p;break;case"children":break;case"dangerouslySetInnerHTML":if(p!=null)throw Error(r(91));break;default:p!==g&&Tt(t,a,w,p,u,g)}Fa(t,Q,te);return;case"option":for(var De in o)Q=o[De],o.hasOwnProperty(De)&&Q!=null&&!u.hasOwnProperty(De)&&(De==="selected"?t.selected=!1:Tt(t,a,De,null,u,Q));for(z in u)Q=u[z],te=o[z],u.hasOwnProperty(z)&&Q!==te&&(Q!=null||te!=null)&&(z==="selected"?t.selected=Q&&typeof Q!="function"&&typeof Q!="symbol":Tt(t,a,z,Q,u,te));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 Be in o)Q=o[Be],o.hasOwnProperty(Be)&&Q!=null&&!u.hasOwnProperty(Be)&&Tt(t,a,Be,null,u,Q);for(X in u)if(Q=u[X],te=o[X],u.hasOwnProperty(X)&&Q!==te&&(Q!=null||te!=null))switch(X){case"children":case"dangerouslySetInnerHTML":if(Q!=null)throw Error(r(137,a));break;default:Tt(t,a,X,Q,u,te)}return;default:if(Xo(a)){for(var kt in o)Q=o[kt],o.hasOwnProperty(kt)&&Q!==void 0&&!u.hasOwnProperty(kt)&&ig(t,a,kt,void 0,u,Q);for(re in u)Q=u[re],te=o[re],!u.hasOwnProperty(re)||Q===te||Q===void 0&&te===void 0||ig(t,a,re,Q,u,te);return}}for(var V in o)Q=o[V],o.hasOwnProperty(V)&&Q!=null&&!u.hasOwnProperty(V)&&Tt(t,a,V,null,u,Q);for(le in u)Q=u[le],te=o[le],!u.hasOwnProperty(le)||Q===te||Q==null&&te==null||Tt(t,a,le,Q,u,te)}function XS(t){switch(t){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function JT(){if(typeof performance.getEntriesByType=="function"){for(var t=0,a=0,o=performance.getEntriesByType("resource"),u=0;u<o.length;u++){var p=o[u],g=p.transferSize,w=p.initiatorType,R=p.duration;if(g&&R&&XS(w)){for(w=0,R=p.responseEnd,u+=1;u<o.length;u++){var z=o[u],X=z.startTime;if(X>R)break;var re=z.transferSize,le=z.initiatorType;re&&XS(le)&&(z=z.responseEnd,w+=re*(z<R?1:(R-X)/(z-X)))}if(--u,a+=8*(g+w)/(p.duration/1e3),t++,10<t)break}}if(0<t)return a/t/1e6}return navigator.connection&&(t=navigator.connection.downlink,typeof t=="number")?t:5}var sg=null,og=null;function td(t){return t.nodeType===9?t:t.ownerDocument}function JS(t){switch(t){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function QS(t,a){if(t===0)switch(a){case"svg":return 1;case"math":return 2;default:return 0}return t===1&&a==="foreignObject"?0:t}function lg(t,a){return t==="textarea"||t==="noscript"||typeof a.children=="string"||typeof a.children=="number"||typeof a.children=="bigint"||typeof a.dangerouslySetInnerHTML=="object"&&a.dangerouslySetInnerHTML!==null&&a.dangerouslySetInnerHTML.__html!=null}var cg=null;function QT(){var t=window.event;return t&&t.type==="popstate"?t===cg?!1:(cg=t,!0):(cg=null,!1)}var ZS=typeof setTimeout=="function"?setTimeout:void 0,ZT=typeof clearTimeout=="function"?clearTimeout:void 0,ew=typeof Promise=="function"?Promise:void 0,ek=typeof queueMicrotask=="function"?queueMicrotask:typeof ew<"u"?function(t){return ew.resolve(null).then(t).catch(tk)}:ZS;function tk(t){setTimeout(function(){throw t})}function di(t){return t==="head"}function tw(t,a){var o=a,u=0;do{var p=o.nextSibling;if(t.removeChild(o),p&&p.nodeType===8)if(o=p.data,o==="/$"||o==="/&"){if(u===0){t.removeChild(p),so(a);return}u--}else if(o==="$"||o==="$?"||o==="$~"||o==="$!"||o==="&")u++;else if(o==="html")jl(t.ownerDocument.documentElement);else if(o==="head"){o=t.ownerDocument.head,jl(o);for(var g=o.firstChild;g;){var w=g.nextSibling,R=g.nodeName;g[Ri]||R==="SCRIPT"||R==="STYLE"||R==="LINK"&&g.rel.toLowerCase()==="stylesheet"||o.removeChild(g),g=w}}else o==="body"&&jl(t.ownerDocument.body);o=p}while(o);so(a)}function nw(t,a){var o=t;t=0;do{var u=o.nextSibling;if(o.nodeType===1?a?(o._stashedDisplay=o.style.display,o.style.display="none"):(o.style.display=o._stashedDisplay||"",o.getAttribute("style")===""&&o.removeAttribute("style")):o.nodeType===3&&(a?(o._stashedText=o.nodeValue,o.nodeValue=""):o.nodeValue=o._stashedText||""),u&&u.nodeType===8)if(o=u.data,o==="/$"){if(t===0)break;t--}else o!=="$"&&o!=="$?"&&o!=="$~"&&o!=="$!"||t++;o=u}while(o)}function ug(t){var a=t.firstChild;for(a&&a.nodeType===10&&(a=a.nextSibling);a;){var o=a;switch(a=a.nextSibling,o.nodeName){case"HTML":case"HEAD":case"BODY":ug(o),Wo(o);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(o.rel.toLowerCase()==="stylesheet")continue}t.removeChild(o)}}function nk(t,a,o,u){for(;t.nodeType===1;){var p=o;if(t.nodeName.toLowerCase()!==a.toLowerCase()){if(!u&&(t.nodeName!=="INPUT"||t.type!=="hidden"))break}else if(u){if(!t[Ri])switch(a){case"meta":if(!t.hasAttribute("itemprop"))break;return t;case"link":if(g=t.getAttribute("rel"),g==="stylesheet"&&t.hasAttribute("data-precedence"))break;if(g!==p.rel||t.getAttribute("href")!==(p.href==null||p.href===""?null:p.href)||t.getAttribute("crossorigin")!==(p.crossOrigin==null?null:p.crossOrigin)||t.getAttribute("title")!==(p.title==null?null:p.title))break;return t;case"style":if(t.hasAttribute("data-precedence"))break;return t;case"script":if(g=t.getAttribute("src"),(g!==(p.src==null?null:p.src)||t.getAttribute("type")!==(p.type==null?null:p.type)||t.getAttribute("crossorigin")!==(p.crossOrigin==null?null:p.crossOrigin))&&g&&t.hasAttribute("async")&&!t.hasAttribute("itemprop"))break;return t;default:return t}}else if(a==="input"&&t.type==="hidden"){var g=p.name==null?null:""+p.name;if(p.type==="hidden"&&t.getAttribute("name")===g)return t}else return t;if(t=mr(t.nextSibling),t===null)break}return null}function rk(t,a,o){if(a==="")return null;for(;t.nodeType!==3;)if((t.nodeType!==1||t.nodeName!=="INPUT"||t.type!=="hidden")&&!o||(t=mr(t.nextSibling),t===null))return null;return t}function rw(t,a){for(;t.nodeType!==8;)if((t.nodeType!==1||t.nodeName!=="INPUT"||t.type!=="hidden")&&!a||(t=mr(t.nextSibling),t===null))return null;return t}function dg(t){return t.data==="$?"||t.data==="$~"}function fg(t){return t.data==="$!"||t.data==="$?"&&t.ownerDocument.readyState!=="loading"}function ak(t,a){var o=t.ownerDocument;if(t.data==="$~")t._reactRetry=a;else if(t.data!=="$?"||o.readyState!=="loading")a();else{var u=function(){a(),o.removeEventListener("DOMContentLoaded",u)};o.addEventListener("DOMContentLoaded",u),t._reactRetry=u}}function mr(t){for(;t!=null;t=t.nextSibling){var a=t.nodeType;if(a===1||a===3)break;if(a===8){if(a=t.data,a==="$"||a==="$!"||a==="$?"||a==="$~"||a==="&"||a==="F!"||a==="F")break;if(a==="/$"||a==="/&")return null}}return t}var hg=null;function aw(t){t=t.nextSibling;for(var a=0;t;){if(t.nodeType===8){var o=t.data;if(o==="/$"||o==="/&"){if(a===0)return mr(t.nextSibling);a--}else o!=="$"&&o!=="$!"&&o!=="$?"&&o!=="$~"&&o!=="&"||a++}t=t.nextSibling}return null}function iw(t){t=t.previousSibling;for(var a=0;t;){if(t.nodeType===8){var o=t.data;if(o==="$"||o==="$!"||o==="$?"||o==="$~"||o==="&"){if(a===0)return t;a--}else o!=="/$"&&o!=="/&"||a++}t=t.previousSibling}return null}function sw(t,a,o){switch(a=td(o),t){case"html":if(t=a.documentElement,!t)throw Error(r(452));return t;case"head":if(t=a.head,!t)throw Error(r(453));return t;case"body":if(t=a.body,!t)throw Error(r(454));return t;default:throw Error(r(451))}}function jl(t){for(var a=t.attributes;a.length;)t.removeAttributeNode(a[0]);Wo(t)}var yr=new Map,ow=new Set;function nd(t){return typeof t.getRootNode=="function"?t.getRootNode():t.nodeType===9?t:t.ownerDocument}var ka=fe.d;fe.d={f:ik,r:sk,D:ok,C:lk,L:ck,m:uk,X:fk,S:dk,M:hk};function ik(){var t=ka.f(),a=Ku();return t||a}function sk(t){var a=Wr(t);a!==null&&a.tag===5&&a.type==="form"?_v(a):ka.r(t)}var ro=typeof document>"u"?null:document;function lw(t,a,o){var u=ro;if(u&&typeof a=="string"&&a){var p=Hn(a);p='link[rel="'+t+'"][href="'+p+'"]',typeof o=="string"&&(p+='[crossorigin="'+o+'"]'),ow.has(p)||(ow.add(p),t={rel:t,crossOrigin:o,href:a},u.querySelector(p)===null&&(a=u.createElement("link"),wn(a,"link",t),Jt(a),u.head.appendChild(a)))}}function ok(t){ka.D(t),lw("dns-prefetch",t,null)}function lk(t,a){ka.C(t,a),lw("preconnect",t,a)}function ck(t,a,o){ka.L(t,a,o);var u=ro;if(u&&t&&a){var p='link[rel="preload"][as="'+Hn(a)+'"]';a==="image"&&o&&o.imageSrcSet?(p+='[imagesrcset="'+Hn(o.imageSrcSet)+'"]',typeof o.imageSizes=="string"&&(p+='[imagesizes="'+Hn(o.imageSizes)+'"]')):p+='[href="'+Hn(t)+'"]';var g=p;switch(a){case"style":g=ao(t);break;case"script":g=io(t)}yr.has(g)||(t=y({rel:"preload",href:a==="image"&&o&&o.imageSrcSet?void 0:t,as:a},o),yr.set(g,t),u.querySelector(p)!==null||a==="style"&&u.querySelector(Hl(g))||a==="script"&&u.querySelector(zl(g))||(a=u.createElement("link"),wn(a,"link",t),Jt(a),u.head.appendChild(a)))}}function uk(t,a){ka.m(t,a);var o=ro;if(o&&t){var u=a&&typeof a.as=="string"?a.as:"script",p='link[rel="modulepreload"][as="'+Hn(u)+'"][href="'+Hn(t)+'"]',g=p;switch(u){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":g=io(t)}if(!yr.has(g)&&(t=y({rel:"modulepreload",href:t},a),yr.set(g,t),o.querySelector(p)===null)){switch(u){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(o.querySelector(zl(g)))return}u=o.createElement("link"),wn(u,"link",t),Jt(u),o.head.appendChild(u)}}}function dk(t,a,o){ka.S(t,a,o);var u=ro;if(u&&t){var p=Pa(u).hoistableStyles,g=ao(t);a=a||"default";var w=p.get(g);if(!w){var R={loading:0,preload:null};if(w=u.querySelector(Hl(g)))R.loading=5;else{t=y({rel:"stylesheet",href:t,"data-precedence":a},o),(o=yr.get(g))&&pg(t,o);var z=w=u.createElement("link");Jt(z),wn(z,"link",t),z._p=new Promise(function(X,re){z.onload=X,z.onerror=re}),z.addEventListener("load",function(){R.loading|=1}),z.addEventListener("error",function(){R.loading|=2}),R.loading|=4,rd(w,a,u)}w={type:"stylesheet",instance:w,count:1,state:R},p.set(g,w)}}}function fk(t,a){ka.X(t,a);var o=ro;if(o&&t){var u=Pa(o).hoistableScripts,p=io(t),g=u.get(p);g||(g=o.querySelector(zl(p)),g||(t=y({src:t,async:!0},a),(a=yr.get(p))&&gg(t,a),g=o.createElement("script"),Jt(g),wn(g,"link",t),o.head.appendChild(g)),g={type:"script",instance:g,count:1,state:null},u.set(p,g))}}function hk(t,a){ka.M(t,a);var o=ro;if(o&&t){var u=Pa(o).hoistableScripts,p=io(t),g=u.get(p);g||(g=o.querySelector(zl(p)),g||(t=y({src:t,async:!0,type:"module"},a),(a=yr.get(p))&&gg(t,a),g=o.createElement("script"),Jt(g),wn(g,"link",t),o.head.appendChild(g)),g={type:"script",instance:g,count:1,state:null},u.set(p,g))}}function cw(t,a,o,u){var p=(p=ie.current)?nd(p):null;if(!p)throw Error(r(446));switch(t){case"meta":case"title":return null;case"style":return typeof o.precedence=="string"&&typeof o.href=="string"?(a=ao(o.href),o=Pa(p).hoistableStyles,u=o.get(a),u||(u={type:"style",instance:null,count:0,state:null},o.set(a,u)),u):{type:"void",instance:null,count:0,state:null};case"link":if(o.rel==="stylesheet"&&typeof o.href=="string"&&typeof o.precedence=="string"){t=ao(o.href);var g=Pa(p).hoistableStyles,w=g.get(t);if(w||(p=p.ownerDocument||p,w={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},g.set(t,w),(g=p.querySelector(Hl(t)))&&!g._p&&(w.instance=g,w.state.loading=5),yr.has(t)||(o={rel:"preload",as:"style",href:o.href,crossOrigin:o.crossOrigin,integrity:o.integrity,media:o.media,hrefLang:o.hrefLang,referrerPolicy:o.referrerPolicy},yr.set(t,o),g||pk(p,t,o,w.state))),a&&u===null)throw Error(r(528,""));return w}if(a&&u!==null)throw Error(r(529,""));return null;case"script":return a=o.async,o=o.src,typeof o=="string"&&a&&typeof a!="function"&&typeof a!="symbol"?(a=io(o),o=Pa(p).hoistableScripts,u=o.get(a),u||(u={type:"script",instance:null,count:0,state:null},o.set(a,u)),u):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,t))}}function ao(t){return'href="'+Hn(t)+'"'}function Hl(t){return'link[rel="stylesheet"]['+t+"]"}function uw(t){return y({},t,{"data-precedence":t.precedence,precedence:null})}function pk(t,a,o,u){t.querySelector('link[rel="preload"][as="style"]['+a+"]")?u.loading=1:(a=t.createElement("link"),u.preload=a,a.addEventListener("load",function(){return u.loading|=1}),a.addEventListener("error",function(){return u.loading|=2}),wn(a,"link",o),Jt(a),t.head.appendChild(a))}function io(t){return'[src="'+Hn(t)+'"]'}function zl(t){return"script[async]"+t}function dw(t,a,o){if(a.count++,a.instance===null)switch(a.type){case"style":var u=t.querySelector('style[data-href~="'+Hn(o.href)+'"]');if(u)return a.instance=u,Jt(u),u;var p=y({},o,{"data-href":o.href,"data-precedence":o.precedence,href:null,precedence:null});return u=(t.ownerDocument||t).createElement("style"),Jt(u),wn(u,"style",p),rd(u,o.precedence,t),a.instance=u;case"stylesheet":p=ao(o.href);var g=t.querySelector(Hl(p));if(g)return a.state.loading|=4,a.instance=g,Jt(g),g;u=uw(o),(p=yr.get(p))&&pg(u,p),g=(t.ownerDocument||t).createElement("link"),Jt(g);var w=g;return w._p=new Promise(function(R,z){w.onload=R,w.onerror=z}),wn(g,"link",u),a.state.loading|=4,rd(g,o.precedence,t),a.instance=g;case"script":return g=io(o.src),(p=t.querySelector(zl(g)))?(a.instance=p,Jt(p),p):(u=o,(p=yr.get(g))&&(u=y({},o),gg(u,p)),t=t.ownerDocument||t,p=t.createElement("script"),Jt(p),wn(p,"link",u),t.head.appendChild(p),a.instance=p);case"void":return null;default:throw Error(r(443,a.type))}else a.type==="stylesheet"&&(a.state.loading&4)===0&&(u=a.instance,a.state.loading|=4,rd(u,o.precedence,t));return a.instance}function rd(t,a,o){for(var u=o.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),p=u.length?u[u.length-1]:null,g=p,w=0;w<u.length;w++){var R=u[w];if(R.dataset.precedence===a)g=R;else if(g!==p)break}g?g.parentNode.insertBefore(t,g.nextSibling):(a=o.nodeType===9?o.head:o,a.insertBefore(t,a.firstChild))}function pg(t,a){t.crossOrigin==null&&(t.crossOrigin=a.crossOrigin),t.referrerPolicy==null&&(t.referrerPolicy=a.referrerPolicy),t.title==null&&(t.title=a.title)}function gg(t,a){t.crossOrigin==null&&(t.crossOrigin=a.crossOrigin),t.referrerPolicy==null&&(t.referrerPolicy=a.referrerPolicy),t.integrity==null&&(t.integrity=a.integrity)}var ad=null;function fw(t,a,o){if(ad===null){var u=new Map,p=ad=new Map;p.set(o,u)}else p=ad,u=p.get(o),u||(u=new Map,p.set(o,u));if(u.has(t))return u;for(u.set(t,null),o=o.getElementsByTagName(t),p=0;p<o.length;p++){var g=o[p];if(!(g[Ri]||g[Ht]||t==="link"&&g.getAttribute("rel")==="stylesheet")&&g.namespaceURI!=="http://www.w3.org/2000/svg"){var w=g.getAttribute(a)||"";w=t+w;var R=u.get(w);R?R.push(g):u.set(w,[g])}}return u}function hw(t,a,o){t=t.ownerDocument||t,t.head.insertBefore(o,a==="title"?t.querySelector("head > title"):null)}function gk(t,a,o){if(o===1||a.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof a.precedence!="string"||typeof a.href!="string"||a.href==="")break;return!0;case"link":if(typeof a.rel!="string"||typeof a.href!="string"||a.href===""||a.onLoad||a.onError)break;return a.rel==="stylesheet"?(t=a.disabled,typeof a.precedence=="string"&&t==null):!0;case"script":if(a.async&&typeof a.async!="function"&&typeof a.async!="symbol"&&!a.onLoad&&!a.onError&&a.src&&typeof a.src=="string")return!0}return!1}function pw(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function mk(t,a,o,u){if(o.type==="stylesheet"&&(typeof u.media!="string"||matchMedia(u.media).matches!==!1)&&(o.state.loading&4)===0){if(o.instance===null){var p=ao(u.href),g=a.querySelector(Hl(p));if(g){a=g._p,a!==null&&typeof a=="object"&&typeof a.then=="function"&&(t.count++,t=id.bind(t),a.then(t,t)),o.state.loading|=4,o.instance=g,Jt(g);return}g=a.ownerDocument||a,u=uw(u),(p=yr.get(p))&&pg(u,p),g=g.createElement("link"),Jt(g);var w=g;w._p=new Promise(function(R,z){w.onload=R,w.onerror=z}),wn(g,"link",u),o.instance=g}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(o,a),(a=o.state.preload)&&(o.state.loading&3)===0&&(t.count++,o=id.bind(t),a.addEventListener("load",o),a.addEventListener("error",o))}}var mg=0;function yk(t,a){return t.stylesheets&&t.count===0&&od(t,t.stylesheets),0<t.count||0<t.imgCount?function(o){var u=setTimeout(function(){if(t.stylesheets&&od(t,t.stylesheets),t.unsuspend){var g=t.unsuspend;t.unsuspend=null,g()}},6e4+a);0<t.imgBytes&&mg===0&&(mg=62500*JT());var p=setTimeout(function(){if(t.waitingForImages=!1,t.count===0&&(t.stylesheets&&od(t,t.stylesheets),t.unsuspend)){var g=t.unsuspend;t.unsuspend=null,g()}},(t.imgBytes>mg?50:800)+a);return t.unsuspend=o,function(){t.unsuspend=null,clearTimeout(u),clearTimeout(p)}}:null}function id(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)od(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var sd=null;function od(t,a){t.stylesheets=null,t.unsuspend!==null&&(t.count++,sd=new Map,a.forEach(bk,t),sd=null,id.call(t))}function bk(t,a){if(!(a.state.loading&4)){var o=sd.get(t);if(o)var u=o.get(null);else{o=new Map,sd.set(t,o);for(var p=t.querySelectorAll("link[data-precedence],style[data-precedence]"),g=0;g<p.length;g++){var w=p[g];(w.nodeName==="LINK"||w.getAttribute("media")!=="not all")&&(o.set(w.dataset.precedence,w),u=w)}u&&o.set(null,u)}p=a.instance,w=p.getAttribute("data-precedence"),g=o.get(w)||u,g===u&&o.set(null,p),o.set(w,p),this.count++,u=id.bind(this),p.addEventListener("load",u),p.addEventListener("error",u),g?g.parentNode.insertBefore(p,g.nextSibling):(t=t.nodeType===9?t.head:t,t.insertBefore(p,t.firstChild)),a.state.loading|=4}}var Ul={$$typeof:k,Provider:null,Consumer:null,_currentValue:Le,_currentValue2:Le,_threadCount:0};function vk(t,a,o,u,p,g,w,R,z){this.tag=1,this.containerInfo=t,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=Re(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Re(0),this.hiddenUpdates=Re(null),this.identifierPrefix=u,this.onUncaughtError=p,this.onCaughtError=g,this.onRecoverableError=w,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=z,this.incompleteTransitions=new Map}function gw(t,a,o,u,p,g,w,R,z,X,re,le){return t=new vk(t,a,o,w,z,X,re,le,R),a=1,g===!0&&(a|=24),g=Xn(3,null,null,a),t.current=g,g.stateNode=t,a=Yh(),a.refCount++,t.pooledCache=a,a.refCount++,g.memoizedState={element:u,isDehydrated:o,cache:a},Zh(g),t}function mw(t){return t?(t=Is,t):Is}function yw(t,a,o,u,p,g){p=mw(p),u.context===null?u.context=p:u.pendingContext=p,u=ei(a),u.payload={element:o},g=g===void 0?null:g,g!==null&&(u.callback=g),o=ti(t,u,a),o!==null&&(qn(o,t,a),bl(o,t,a))}function bw(t,a){if(t=t.memoizedState,t!==null&&t.dehydrated!==null){var o=t.retryLane;t.retryLane=o!==0&&o<a?o:a}}function yg(t,a){bw(t,a),(t=t.alternate)&&bw(t,a)}function vw(t){if(t.tag===13||t.tag===31){var a=qi(t,67108864);a!==null&&qn(a,t,67108864),yg(t,67108864)}}function Sw(t){if(t.tag===13||t.tag===31){var a=tr();a=tt(a);var o=qi(t,a);o!==null&&qn(o,t,a),yg(t,a)}}var ld=!0;function Sk(t,a,o,u){var p=J.T;J.T=null;var g=fe.p;try{fe.p=2,bg(t,a,o,u)}finally{fe.p=g,J.T=p}}function wk(t,a,o,u){var p=J.T;J.T=null;var g=fe.p;try{fe.p=8,bg(t,a,o,u)}finally{fe.p=g,J.T=p}}function bg(t,a,o,u){if(ld){var p=vg(u);if(p===null)ag(t,a,u,cd,o),Cw(t,u);else if(Ek(p,t,a,o,u))u.stopPropagation();else if(Cw(t,u),a&4&&-1<Ck.indexOf(t)){for(;p!==null;){var g=Wr(p);if(g!==null)switch(g.tag){case 3:if(g=g.stateNode,g.current.memoizedState.isDehydrated){var w=Ee(g.pendingLanes);if(w!==0){var R=g;for(R.pendingLanes|=2,R.entangledLanes|=2;w;){var z=1<<31-on(w);R.entanglements[1]|=z,w&=~z}Zr(g),(vt&6)===0&&(Fu=qt()+500,Ml(0))}}break;case 31:case 13:R=qi(g,2),R!==null&&qn(R,g,2),Ku(),yg(g,2)}if(g=vg(u),g===null&&ag(t,a,u,cd,o),g===p)break;p=g}p!==null&&u.stopPropagation()}else ag(t,a,u,null,o)}}function vg(t){return t=Zo(t),Sg(t)}var cd=null;function Sg(t){if(cd=null,t=Ua(t),t!==null){var a=l(t);if(a===null)t=null;else{var o=a.tag;if(o===13){if(t=c(a),t!==null)return t;t=null}else if(o===31){if(t=d(a),t!==null)return t;t=null}else if(o===3){if(a.stateNode.current.memoizedState.isDehydrated)return a.tag===3?a.stateNode.containerInfo:null;t=null}else a!==t&&(t=null)}}return cd=t,null}function ww(t){switch(t){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(ki()){case la:return 2;case gn:return 8;case Dn:case nt:return 32;case In:return 268435456;default:return 32}default:return 32}}var wg=!1,fi=null,hi=null,pi=null,Pl=new Map,Bl=new Map,gi=[],Ck="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 Cw(t,a){switch(t){case"focusin":case"focusout":fi=null;break;case"dragenter":case"dragleave":hi=null;break;case"mouseover":case"mouseout":pi=null;break;case"pointerover":case"pointerout":Pl.delete(a.pointerId);break;case"gotpointercapture":case"lostpointercapture":Bl.delete(a.pointerId)}}function ql(t,a,o,u,p,g){return t===null||t.nativeEvent!==g?(t={blockedOn:a,domEventName:o,eventSystemFlags:u,nativeEvent:g,targetContainers:[p]},a!==null&&(a=Wr(a),a!==null&&vw(a)),t):(t.eventSystemFlags|=u,a=t.targetContainers,p!==null&&a.indexOf(p)===-1&&a.push(p),t)}function Ek(t,a,o,u,p){switch(a){case"focusin":return fi=ql(fi,t,a,o,u,p),!0;case"dragenter":return hi=ql(hi,t,a,o,u,p),!0;case"mouseover":return pi=ql(pi,t,a,o,u,p),!0;case"pointerover":var g=p.pointerId;return Pl.set(g,ql(Pl.get(g)||null,t,a,o,u,p)),!0;case"gotpointercapture":return g=p.pointerId,Bl.set(g,ql(Bl.get(g)||null,t,a,o,u,p)),!0}return!1}function Ew(t){var a=Ua(t.target);if(a!==null){var o=l(a);if(o!==null){if(a=o.tag,a===13){if(a=c(o),a!==null){t.blockedOn=a,On(t.priority,function(){Sw(o)});return}}else if(a===31){if(a=d(o),a!==null){t.blockedOn=a,On(t.priority,function(){Sw(o)});return}}else if(a===3&&o.stateNode.current.memoizedState.isDehydrated){t.blockedOn=o.tag===3?o.stateNode.containerInfo:null;return}}}t.blockedOn=null}function ud(t){if(t.blockedOn!==null)return!1;for(var a=t.targetContainers;0<a.length;){var o=vg(t.nativeEvent);if(o===null){o=t.nativeEvent;var u=new o.constructor(o.type,o);Qo=u,o.target.dispatchEvent(u),Qo=null}else return a=Wr(o),a!==null&&vw(a),t.blockedOn=o,!1;a.shift()}return!0}function _w(t,a,o){ud(t)&&o.delete(a)}function _k(){wg=!1,fi!==null&&ud(fi)&&(fi=null),hi!==null&&ud(hi)&&(hi=null),pi!==null&&ud(pi)&&(pi=null),Pl.forEach(_w),Bl.forEach(_w)}function dd(t,a){t.blockedOn===a&&(t.blockedOn=null,wg||(wg=!0,s.unstable_scheduleCallback(s.unstable_NormalPriority,_k)))}var fd=null;function Aw(t){fd!==t&&(fd=t,s.unstable_scheduleCallback(s.unstable_NormalPriority,function(){fd===t&&(fd=null);for(var a=0;a<t.length;a+=3){var o=t[a],u=t[a+1],p=t[a+2];if(typeof u!="function"){if(Sg(u||o)===null)continue;break}var g=Wr(o);g!==null&&(t.splice(a,3),a-=3,vp(g,{pending:!0,data:p,method:o.method,action:u},u,p))}}))}function so(t){function a(z){return dd(z,t)}fi!==null&&dd(fi,t),hi!==null&&dd(hi,t),pi!==null&&dd(pi,t),Pl.forEach(a),Bl.forEach(a);for(var o=0;o<gi.length;o++){var u=gi[o];u.blockedOn===t&&(u.blockedOn=null)}for(;0<gi.length&&(o=gi[0],o.blockedOn===null);)Ew(o),o.blockedOn===null&&gi.shift();if(o=(t.ownerDocument||t).$$reactFormReplay,o!=null)for(u=0;u<o.length;u+=3){var p=o[u],g=o[u+1],w=p[An]||null;if(typeof g=="function")w||Aw(o);else if(w){var R=null;if(g&&g.hasAttribute("formAction")){if(p=g,w=g[An]||null)R=w.formAction;else if(Sg(p)!==null)continue}else R=w.action;typeof R=="function"?o[u+1]=R:(o.splice(u,3),u-=3),Aw(o)}}}function xw(){function t(g){g.canIntercept&&g.info==="react-transition"&&g.intercept({handler:function(){return new Promise(function(w){return p=w})},focusReset:"manual",scroll:"manual"})}function a(){p!==null&&(p(),p=null),u||setTimeout(o,20)}function o(){if(!u&&!navigation.transition){var g=navigation.currentEntry;g&&g.url!=null&&navigation.navigate(g.url,{state:g.getState(),info:"react-transition",history:"replace"})}}if(typeof navigation=="object"){var u=!1,p=null;return navigation.addEventListener("navigate",t),navigation.addEventListener("navigatesuccess",a),navigation.addEventListener("navigateerror",a),setTimeout(o,100),function(){u=!0,navigation.removeEventListener("navigate",t),navigation.removeEventListener("navigatesuccess",a),navigation.removeEventListener("navigateerror",a),p!==null&&(p(),p=null)}}}function Cg(t){this._internalRoot=t}hd.prototype.render=Cg.prototype.render=function(t){var a=this._internalRoot;if(a===null)throw Error(r(409));var o=a.current,u=tr();yw(o,u,t,a,null,null)},hd.prototype.unmount=Cg.prototype.unmount=function(){var t=this._internalRoot;if(t!==null){this._internalRoot=null;var a=t.containerInfo;yw(t.current,2,null,t,null,null),Ku(),a[za]=null}};function hd(t){this._internalRoot=t}hd.prototype.unstable_scheduleHydration=function(t){if(t){var a=Mt();t={blockedOn:null,target:t,priority:a};for(var o=0;o<gi.length&&a!==0&&a<gi[o].priority;o++);gi.splice(o,0,t),o===0&&Ew(t)}};var Tw=e.version;if(Tw!=="19.2.6")throw Error(r(527,Tw,"19.2.6"));fe.findDOMNode=function(t){var a=t._reactInternals;if(a===void 0)throw typeof t.render=="function"?Error(r(188)):(t=Object.keys(t).join(","),Error(r(268,t)));return t=h(a),t=t!==null?m(t):null,t=t===null?null:t.stateNode,t};var Ak={bundleType:0,version:"19.2.6",rendererPackageName:"react-dom",currentDispatcherRef:J,reconcilerVersion:"19.2.6"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var pd=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!pd.isDisabled&&pd.supportsFiber)try{lr=pd.inject(Ak),sn=pd}catch{}}return oo.createRoot=function(t,a){if(!i(t))throw Error(r(299));var o=!1,u="",p=Mv,g=Nv,w=Iv;return a!=null&&(a.unstable_strictMode===!0&&(o=!0),a.identifierPrefix!==void 0&&(u=a.identifierPrefix),a.onUncaughtError!==void 0&&(p=a.onUncaughtError),a.onCaughtError!==void 0&&(g=a.onCaughtError),a.onRecoverableError!==void 0&&(w=a.onRecoverableError)),a=gw(t,1,!1,null,null,o,u,null,p,g,w,xw),t[za]=a.current,rg(t),new Cg(a)},oo.hydrateRoot=function(t,a,o){if(!i(t))throw Error(r(299));var u=!1,p="",g=Mv,w=Nv,R=Iv,z=null;return o!=null&&(o.unstable_strictMode===!0&&(u=!0),o.identifierPrefix!==void 0&&(p=o.identifierPrefix),o.onUncaughtError!==void 0&&(g=o.onUncaughtError),o.onCaughtError!==void 0&&(w=o.onCaughtError),o.onRecoverableError!==void 0&&(R=o.onRecoverableError),o.formState!==void 0&&(z=o.formState)),a=gw(t,1,!0,a,o??null,u,p,z,g,w,R,xw),a.context=mw(null),o=a.current,u=tr(),u=tt(u),p=ei(u),p.callback=null,ti(o,p,u),o=u,a.current.lanes=o,et(a,o),Zr(a),t[za]=a.current,rg(t),new hd(a)},oo.version="19.2.6",oo}var Og;function Iw(){if(Og)return yd.exports;Og=1;function s(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(s)}catch(e){console.error(e)}}return s(),yd.exports=Nw(),yd.exports}var wd=Iw();const Cd=ta(wd),lo=[],jw=50;let Ed=!1;function Lg(){try{return window.G7Core?.devTools}catch{return}}function ns(s,e,n){const r=Lg();if(Ed&&r?.isEnabled?.()){r.trackLog?.(s,e,n);return}Ed||(s==="error"||s==="warn")&&lo.length<jw&&lo.push({level:s,prefix:e,args:n,timestamp:Date.now()})}function _d(){Ed=!0;const s=Lg();if(!s?.isEnabled?.()){lo.length=0;return}for(const e of lo)s.trackLog?.(e.level,e.prefix,e.args);lo.length=0}const Ai=class Ai{constructor(){M(this,"debug");M(this,"prefix","[TemplateEngine]");this.debug=!1}static getInstance(){return Ai.instance||(Ai.instance=new Ai),Ai.instance}setDebug(e){this.debug=e}isDebugEnabled(){return this.debug}log(...e){this.debug&&console.log(this.prefix,...e),ns("log","TemplateEngine",e)}error(...e){this.debug&&console.error(this.prefix,...e),ns("error","TemplateEngine",e)}warn(...e){this.debug&&console.warn(this.prefix,...e),ns("warn","TemplateEngine",e)}};M(Ai,"instance");let co=Ai;function dt(s){const e=`[${s}]`,n=co.getInstance();return{log:(...r)=>{n.isDebugEnabled()&&console.log(e,...r),ns("log",s,r)},warn:(...r)=>{n.isDebugEnabled()&&console.warn(e,...r),ns("warn",s,r)},error:(...r)=>{n.isDebugEnabled()&&console.error(e,...r),ns("error",s,r)}}}co.getInstance();const $g="extension",rs="extensionless",Mg="file";function Hw(){const s=globalThis?.G7Config;if(globalThis?.__g7AssetUrlMode===rs)return rs;const n=s?.assetUrlMode;return n===rs||n===$g?n:s?.settings?.general?.asset_url_mode===rs?rs:$g}function Ad(){return Hw()===rs}function zw(s,e,n){return xd("templates",s,e,n)}function Uw(s,e){const n=e.replace(/^\/+/,"").replace(/\/+$/,""),r=encodeURIComponent(s),i=uo(`templates/${s}/assets/${n}`);return i!==null?i:`/api/templates/assets/${r}/${n}`}function Pw(s,e,n){return xd("modules",s,e,n)}function Bw(s,e,n){return xd("plugins",s,e,n)}function xd(s,e,n,r){const i=n.replace(/^\/+/,""),l=encodeURIComponent(e);if(!Ad())return`/api/${s}/assets/${l}/${i}${Fw(r)}`;let c=`${Mg}=${encodeURIComponent(i)}`;return r!=null&&r!==""&&(c+=`&v=${r}`),`/api/${s}/assets/${l}?${c}`}function jr(s,e,n,r){const i=s.replace(/\/+$/,""),l=e.replace(/^\.+/,""),c=Ad()?i:`${i}.${l}`,d=[];return r&&d.push(r.replace(/^[?&]+/,"")),n!=null&&n!==""&&d.push(`v=${n}`),d.length>0?`${c}?${d.join("&")}`:c}function Ng(){const s=globalThis?.G7Config?.staticBase;return typeof s=="string"&&s!==""?s.replace(/\/+$/,""):null}function qw(){const s=Ng();if(!s)return null;const e=s.match(/\/(\d+)$/);return e?Number(e[1]):null}function uo(s,e){const n=Ng();if(!n)return null;const r=s.replace(/^\/+/,"");return e!==void 0&&e>0&&e!==qw()?`${n.replace(/\/\d+$/,"")}/${e}/${r}`:`${n}/${r}`}function Td(s){if(!s)return null;const e=globalThis?.location?.origin,r=(e&&s.startsWith(e)?s.slice(e.length):s).match(/^\/build\/ext\/(\d+)\/(.+)$/);if(!r)return null;const i=r[1],l=r[2].split("?")[0],c=l.match(/^(templates|modules|plugins)\/([^/]+)\/assets\/(.+)$/);if(c){const[,h,m,y]=c;return`/api/${h}/assets/${m}/${y}?v=${i}`}const d=l.match(/^bundles\/(modules|plugins)\.(js|css)$/);if(d)return`/api/${d[1]}/bundle.${d[2]}?v=${i}`;const f=l.match(/^templates\/([^/]+)\/(routes\.json|components\.json|lang\/([a-zA-Z-]+)\.json)$/);if(f){const[,h,m]=f,y=m.replace(/\.json$/,"");return`/api/templates/${h}/${y}.json?v=${i}`}return null}function Tn(s){if(!s||!Ad())return s;const e=globalThis?.location?.origin,n=e&&s.startsWith(e)?s.slice(e.length):s;if(!n.startsWith("/api/"))return s;const[r,i]=Gw(n),l=r.match(/^\/api\/(modules|plugins)\/bundle\.(js|css)$/);if(l)return Ig(`/api/${l[1]}/bundle/${l[2]}`,i);const c=r.match(/^\/api\/(templates|modules|plugins)\/assets\/([^/]+)\/(.+)$/);if(c){const[,f,h,m]=c,y=`${Mg}=${encodeURIComponent(decodeURIComponent(m))}`;return`/api/${f}/assets/${h}?${y}${i?`&${i}`:""}`}const d=r.match(/^(\/api\/.+)\.(json|js|css)$/);return d?Ig(d[1],i):s}function Gw(s){const e=s.indexOf("?");return e===-1?[s,""]:[s.slice(0,e),s.slice(e+1)]}function Ig(s,e){return e?`${s}?${e}`:s}function Fw(s){return s==null||s===""?"":`?v=${s}`}const na=dt("networkResilience"),kd=2,Rd=300,Dd=2e3,Vw=15e3;function Od(s){return s?.name==="AbortError"}function jg(s){return Od(s)?!1:s instanceof TypeError}let Gl=!1,Hg=!1;function Fl(){return Gl}function Kw(){typeof window>"u"||Hg||(Hg=!0,window.addEventListener("pagehide",()=>{Gl=!0}),window.addEventListener("pageshow",s=>{s.persisted&&(Gl=!1)}),window.addEventListener("beforeunload",()=>{Gl=!0}))}function Ld(s,e,n){const r=Math.min(e*Math.pow(2,s),n),i=r*.25*(Math.random()*2-1);return Math.max(0,Math.round(r+i))}function $d(s){return new Promise(e=>setTimeout(e,s))}async function Vl(s,e={}){const{retries:n=kd,baseDelayMs:r=Rd,maxDelayMs:i=Dd,timeoutMs:l=Vw,label:c=s,init:d}=e,f=n+1;let h;for(let m=0;m<f;m++){let y=!1,S;const v=l>0?new AbortController:null;try{const _={...d};if(v){const A=d?.signal;A&&(A.aborted?v.abort():A.addEventListener("abort",()=>v.abort(),{once:!0})),_.signal=v.signal,S=setTimeout(()=>{y=!0,v.abort()},l)}return await fetch(s,_)}catch(_){if(h=_,Od(_)&&!y||!(y||jg(_)))throw _;if(Fl())throw na.warn(`Document unloading, aborting retries: ${c}`),_;if(m===f-1)throw na.warn(`All ${f} attempts failed: ${c}`,_),_;const L=Ld(m,r,i);na.warn(`Network failure (attempt ${m+1}/${f}), retrying in ${L}ms: ${c}`),await $d(L)}finally{S!==void 0&&clearTimeout(S)}}throw h}async function ra(s,e={},n={}){const{retries:r=kd,baseDelayMs:i=Rd,maxDelayMs:l=Dd,label:c=s}=n,d=r+1;for(let f=0;f<d;f++)try{await Ww(s,e);return}catch(h){if(e.id&&document.getElementById(e.id)?.remove(),Fl())throw na.warn(`Document unloading, aborting script retries: ${c}`),h;if(f===d-1)throw na.warn(`All ${d} script attempts failed: ${c}`),h;const y=Ld(f,i,l);na.warn(`Script load failed (attempt ${f+1}/${d}), retrying in ${y}ms: ${c}`),await $d(y)}}function Ww(s,e){return new Promise((n,r)=>{const i=document.createElement("script");i.src=s,i.async=!1;for(const[l,c]of Object.entries(e))l==="id"?i.id=c:i.setAttribute(l,c);i.onload=()=>n(),i.onerror=()=>r(new Error(`Failed to load script: ${s}`)),document.head.appendChild(i)})}async function yi(s,e={},n={}){const{retries:r=kd,baseDelayMs:i=Rd,maxDelayMs:l=Dd,label:c=s}=n,d=r+1;for(let f=0;f<d;f++){let h=null;try{h=Yw(s,e),await Xw(h);return}catch(m){if(h?.remove(),e.id&&document.getElementById(e.id)?.remove(),Fl())throw na.warn(`Document unloading, aborting stylesheet retries: ${c}`),m;if(f===d-1)throw na.warn(`All ${d} stylesheet attempts failed: ${c}`),m;const S=Ld(f,i,l);na.warn(`Stylesheet load failed (attempt ${f+1}/${d}), retrying in ${S}ms: ${c}`),await $d(S)}}}function Yw(s,e){const n=document.createElement("link");n.rel="stylesheet",n.href=s;for(const[r,i]of Object.entries(e))r==="id"?n.id=i:n.setAttribute(r,i);return document.head.appendChild(n),n}function Xw(s){return new Promise((e,n)=>{s.onload=()=>e(),s.onerror=()=>n(new Error(`Failed to load stylesheet: ${s.href}`))})}async function Kl(s,e,n={}){if(!s)return Vl(e,n);try{const r=await fetch(s,n.init);if(r.ok){const i=await r.text();try{return JSON.parse(i),new Response(i,{status:r.status,statusText:r.statusText,headers:r.headers})}catch{return console.warn(`[fetchStaticFirst] Static fast path returned malformed JSON — falling back to API: ${s}`),Vl(e,n)}}console.warn(`[fetchStaticFirst] Static fast path miss (${r.status}) — falling back to API: ${s}`)}catch(r){console.warn(`[fetchStaticFirst] Static fast path fetch failed — falling back to API: ${s}`,r)}return Vl(e,n)}const Hr=dt("ComponentRegistry");class un extends Error{constructor(n,r,i){super(n);M(this,"code");M(this,"details");this.code=r,this.details=i,this.name="ComponentRegistryError"}}const Kn=class Kn{constructor(){M(this,"registry",{});M(this,"manifest",null);M(this,"cacheVersion",0);M(this,"loadingState","idle");M(this,"error",null);M(this,"templateId",null);M(this,"templateType",null)}static getInstance(){return Kn.instance||(Kn.instance=new Kn),Kn.instance}static createIsolatedInstance(){return new Kn}static resetInstance(){Kn.instance=null}async loadComponents(e,n,r=0){if(this.loadingState==="loading")throw new un("Components are already being loaded","LOADING_IN_PROGRESS");if(this.loadingState==="loaded"&&this.templateId===e&&this.templateType===n){Hr.log("Components already loaded for template:",e,n);return}this.loadingState="loading",this.templateId=e,this.templateType=n,this.cacheVersion=r,this.error=null;try{await this.loadManifest(),await this.loadComponentBundle(),this.loadingState="loaded",Hr.log("Successfully loaded components:",Object.keys(this.registry).length)}catch(i){throw this.loadingState="error",this.error=i instanceof Error?i:new Error(String(i)),new un(`Failed to load components: ${this.error.message}`,"LOAD_FAILED",{originalError:this.error})}}async loadManifest(){try{if(!this.templateId)throw new un("Template ID not set","TEMPLATE_ID_NOT_SET");const e=`${this.templateId}:${this.templateType}:v${this.cacheVersion||0}`;if(Kn.manifestCache.has(e)){this.manifest=Kn.manifestCache.get(e),Hr.log("Manifest loaded from cache:",this.manifest.templateId);return}const n=jr(`/api/templates/${this.templateId}/components`,"json",this.cacheVersion>0?this.cacheVersion:null),r=await Kl(this.cacheVersion>0?uo(`templates/${this.templateId}/components.json`,this.cacheVersion):null,n,{label:"components.json"});if(!r.ok)throw new un(`Failed to fetch manifest: ${r.status} ${r.statusText}`,"MANIFEST_FETCH_FAILED",{status:r.status,statusText:r.statusText});const i=await r.json();this.validateManifest(i),this.manifest=i,Kn.manifestCache.set(e,i),Hr.log("Manifest loaded and cached:",i.templateId)}catch(e){throw e instanceof un?e:new un("Failed to load component manifest","MANIFEST_LOAD_FAILED",{originalError:e})}}validateManifest(e){if(!e.version)throw new un("Manifest missing required field: version","MANIFEST_INVALID",{field:"version"});if(!e.templateId)throw new un("Manifest missing required field: templateId","MANIFEST_INVALID",{field:"templateId"});if(!e.components||typeof e.components!="object")throw new un("Manifest missing required field: components","MANIFEST_INVALID",{field:"components"});const n=["basic","composite","layout"];for(const r of n){if(!Array.isArray(e.components[r]))throw new un(`Manifest field 'components.${r}' must be an array`,"MANIFEST_INVALID",{field:`components.${r}`,value:e.components[r]});e.components[r].forEach((i,l)=>{if(!i.name||typeof i.name!="string")throw new un(`Invalid component metadata at ${r}[${l}]: missing or invalid 'name'`,"MANIFEST_INVALID",{type:r,index:l,metadata:i});if(!i.type||typeof i.type!="string")throw new un(`Invalid component metadata at ${r}[${l}]: missing or invalid 'type'`,"MANIFEST_INVALID",{type:r,index:l,metadata:i})})}Hr.log("Manifest validation passed")}async loadComponentBundle(){try{if(!this.templateId)throw new un("Template ID not set","TEMPLATE_ID_NOT_SET");const e=this.getGlobalVariableName(),n=window[e];if(!n||typeof n!="object")throw new un(`Component bundle not loaded. Expected global variable: ${e}. Ensure admin.blade.php includes the IIFE bundle script.`,"BUNDLE_NOT_LOADED",{expectedVariable:e});await this.registerComponentsFromManifest(n),Hr.log("Component bundle loaded from global variable:",e)}catch(e){throw e instanceof un?e:new un("Failed to load component bundle","BUNDLE_LOAD_FAILED",{originalError:e})}}getGlobalVariableName(){if(!this.templateId)throw new un("Template ID not set","TEMPLATE_ID_NOT_SET");return this.templateId.split(/[-_]/).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join("")}async registerComponentsFromManifest(e){if(!this.manifest)throw new un("Manifest not loaded","MANIFEST_NOT_LOADED");const n=["basic","composite","layout"];for(const r of n){const i=this.manifest.components[r]||[];for(const l of i){const c=l.name,d=e[c];if(!d){Hr.warn(`Component '${c}' not found in bundle`);continue}this.registerComponent(c,d,l)}}}registerComponent(e,n,r){this.registry[e]&&Hr.warn(`Component '${e}' already registered, overwriting`);const i=Ye.memo(n);this.registry[e]={component:i,metadata:r},Hr.log(`[ComponentRegistry] Registered component: ${e} (${r.type})`)}getComponent(e){const n=this.registry[e];return n?n.component:null}getMetadata(e){const n=this.registry[e];return n?n.metadata:null}hasComponent(e){return e in this.registry}getComponentsByType(e){return Object.entries(this.registry).filter(([n,r])=>r.metadata.type===e).map(([n,r])=>n)}getAllComponents(){return Object.keys(this.registry)}getComponentMap(){const e={};for(const[n,r]of Object.entries(this.registry))e[n]=r.component;return e}getLoadingState(){return this.loadingState}getError(){return this.error}getTemplateId(){return this.templateId}getManifest(){return this.manifest}clear(){this.registry={},this.manifest=null,this.loadingState="idle",this.error=null,this.templateId=null,this.templateType=null,Hr.log("Registry cleared")}};M(Kn,"instance",null),M(Kn,"manifestCache",new Map);let br=Kn;const zg=dt("TranslationEngine");class Md extends Error{constructor(n,r,i){super(n);M(this,"key");M(this,"locale");this.key=r,this.locale=i,this.name="TranslationError"}}const Nn=class Nn{constructor(e={}){M(this,"cache",new Map);M(this,"translations",new Map);M(this,"options");M(this,"cacheVersion",0);this.options={defaultLocale:e.defaultLocale||"ko",fallbackLocale:e.fallbackLocale||"en",cacheTTL:e.cacheTTL||3e5}}static getInstance(e={}){return Nn.instance||(Nn.instance=new Nn(e)),Nn.instance}static resetInstance(){Nn.instance=null}setCacheVersion(e){this.cacheVersion!==e&&(zg.log("Cache version updated:",this.cacheVersion,"->",e),this.cacheVersion=e,this.cache.clear())}getCacheVersion(){return this.cacheVersion}async loadTranslations(e,n,r="/api",i=!1){const l=`${e}:${n}`;if(!i){const c=this.getFromCache(l);if(c)return this.translations.set(l,c),c}try{const c=[];i&&c.push(`_=${Date.now()}`);const d=jr(`${r}/templates/${e}/lang/${n}`,"json",this.cacheVersion>0?this.cacheVersion:null,c.length>0?c.join("&"):void 0),f=!i&&this.cacheVersion>0?uo(`templates/${e}/lang/${n}.json`,this.cacheVersion):null,h=f!==null?await Kl(f,d,{label:`lang/${n}.json`}):await fetch(d);if(!h.ok)throw new Md(`Failed to load translations: ${h.statusText}`,void 0,n);const y=await h.json();return this.saveToCache(l,y),this.translations.set(l,y),y}catch(c){throw new Md(`Failed to fetch translations for ${n}: ${c instanceof Error?c.message:String(c)}`,void 0,n)}}resolveTranslations(e,n,r){let i=e;const l=5;let c=0;for(;c<l&&i.includes("=$t:");){const d=i;if(i=i.replace(Nn.NESTED_TRANSLATION_PARAM_PATTERN,(f,h,m)=>"="+this.translate(m,n,void 0,r)),i===d)break;c++}return i.replace(Nn.TRANSLATION_PATTERN,(d,f,h)=>{const{cleanedParams:m,trailing:y}=this.separateTrailingText(h);return this.translate(f,n,m,r)+y})}translate(e,n,r,i){const l=this.getTranslation(e,n),c=r&&this.cleanParamsStr(r);if(c){const d=this.parseParams(c,i);return this.replaceParams(l,d)}return l}getTranslation(e,n){const{templateId:r,locale:i}=n,l=`${r}:${i}`,c=this.translations.get(l);if(c){const d=this.getNestedValue(c,e);if(d!==null)return d}if(i!==this.options.fallbackLocale){const d=`${r}:${this.options.fallbackLocale}`,f=this.translations.get(d);if(f){const h=this.getNestedValue(f,e);if(h!==null)return h}}return e}getNestedValue(e,n){const r=n.split(".");let i=e;for(const l of r){if(i==null||typeof i!="object")return null;i=i[l]}return typeof i=="string"?i:null}setTranslationValue(e,n,r,i){const l=`${e}:${n}`,c=this.translations.get(l)??{},d=r.split(".");let f=c;for(let h=0;h<d.length-1;h+=1){const m=d[h],y=f[m];(y==null||typeof y!="object"||Array.isArray(y))&&(f[m]={}),f=f[m]}f[d[d.length-1]]=i,this.translations.set(l,c)}parseParams(e,n){const r={},i=e.startsWith("|")?e.slice(1):e,l=[],d=i.replace(/\{\{(?:[^}]|\}(?!\}))*\}\}/g,f=>(l.push(f),`__PLACEHOLDER_${l.length-1}__`)).matchAll(Nn.PARAM_PATTERN);for(const f of d){const[,h,m]=f,y=m.replace(/__PLACEHOLDER_(\d+)__/g,(S,v)=>l[parseInt(v,10)]);r[h.trim()]=this.resolveParamValue(y.trim(),n)}return r}resolveParamValue(e,n){if(e.startsWith("{{")&&e.endsWith("}}")){const r=e.slice(2,-2).trim();if(/[|&()[\]!?:+\-*/%<>=\s]/.test(r)&&n)try{const l=Xd.evaluateExpression(r,n);return String(l??"")}catch(l){return zg.error("Expression evaluation failed:",r,l),""}else{const l=this.getNestedDataValue(n,r);return String(l??"")}}return e}separateTrailingText(e){if(!e)return{cleanedParams:void 0,trailing:""};if(e.trimEnd().endsWith("}}"))return{cleanedParams:e,trailing:""};if(!(e.startsWith("|")?e.slice(1):e).includes("="))return{cleanedParams:void 0,trailing:e};const r=e.match(/(\s+[^\p{L}\w=|&\s][^\p{L}\w=]*\s*)$/u);return r?{cleanedParams:e.slice(0,-r[1].length),trailing:r[1]}:{cleanedParams:e,trailing:""}}cleanParamsStr(e){return this.separateTrailingText(e).cleanedParams||""}getNestedDataValue(e,n){if(!e)return;const r=n.split(".");let i=e;for(const l of r){if(i==null)return;i=i[l]}return i}replaceParams(e,n){let r=e;for(const[i,l]of Object.entries(n)){const c=new RegExp(`\\{\\{${i}\\}\\}`,"g");r=r.replace(c,String(l));const d=new RegExp(`\\{${i}\\}`,"g");r=r.replace(d,String(l))}return r}getFromCache(e){const n=this.cache.get(e);return n?Date.now()-n.timestamp>this.options.cacheTTL?(this.cache.delete(e),null):n.data:null}saveToCache(e,n){this.cache.set(e,{data:n,timestamp:Date.now()})}clearCache(){this.cache.clear(),this.translations.clear()}pruneCache(){const e=Date.now(),n=[];for(const[r,i]of this.cache.entries())e-i.timestamp>this.options.cacheTTL&&n.push(r);for(const r of n)this.cache.delete(r)}getCacheStats(){const e=Date.now();let n=0;for(const r of this.cache.values())e-r.timestamp>this.options.cacheTTL&&n++;return{size:this.cache.size,expired:n}}};M(Nn,"instance",null),M(Nn,"TRANSLATION_PATTERN",/\$t:(?:defer:)?([a-zA-Z0-9._-]+)(\|(?:(?!\$t:).)+)?/g),M(Nn,"NESTED_TRANSLATION_PARAM_PATTERN",/=(\$t:([a-zA-Z0-9._-]+))(?=[|&\s]|$)/g),M(Nn,"PARAM_PATTERN",/([^=|&]+)=([^|&]+)/g);let Ra=Nn,Nd=null;function Jw(s){return Nd||(Nd=new Ra(s)),Nd}const Ug=Object.freeze(Object.defineProperty({__proto__:null,TranslationEngine:Ra,TranslationError:Md,getTranslationEngine:Jw},Symbol.toStringTag,{value:"Module"})),as=dt("PipeRegistry");function Pg(s,e){const n=s.getFullYear(),r=String(s.getMonth()+1).padStart(2,"0"),i=String(s.getDate()).padStart(2,"0"),l=String(s.getHours()).padStart(2,"0"),c=String(s.getMinutes()).padStart(2,"0"),d=String(s.getSeconds()).padStart(2,"0");return e.replace("YYYY",String(n)).replace("YY",String(n).slice(-2)).replace("MM",r).replace("M",String(s.getMonth()+1)).replace("DD",i).replace("D",String(s.getDate())).replace("HH",l).replace("H",String(s.getHours())).replace("mm",c).replace("m",String(s.getMinutes())).replace("ss",d).replace("s",String(s.getSeconds()))}function Qw(s,e="ko"){const r=new Date().getTime()-s.getTime(),i=Math.floor(r/1e3),l=Math.floor(i/60),c=Math.floor(l/60),d=Math.floor(c/24),f=Math.floor(d/7),h=Math.floor(d/30),m=Math.floor(d/365);return e==="ko"?i<60?"방금 전":l<60?`${l}분 전`:c<24?`${c}시간 전`:d<7?`${d}일 전`:f<4?`${f}주 전`:h<12?`${h}개월 전`:`${m}년 전`:i<60?"just now":l<60?`${l} minute${l===1?"":"s"} ago`:c<24?`${c} hour${c===1?"":"s"} ago`:d<7?`${d} day${d===1?"":"s"} ago`:f<4?`${f} week${f===1?"":"s"} ago`:h<12?`${h} month${h===1?"":"s"} ago`:`${m} year${m===1?"":"s"} ago`}function Id(s){if(s==null)return null;if(s instanceof Date)return s;if(typeof s=="number")return new Date(s);if(typeof s=="string"){const e=new Date(s);return isNaN(e.getTime())?null:e}return null}const fo={date:{fn:(s,e="YYYY-MM-DD")=>{const n=Id(s);return n?Pg(n,e):""},description:"날짜 포맷 (기본: YYYY-MM-DD)"},datetime:{fn:(s,e="YYYY-MM-DD HH:mm")=>{const n=Id(s);return n?Pg(n,e):""},description:"날짜+시간 포맷 (기본: YYYY-MM-DD HH:mm)"},relativeTime:{fn:(s,e="ko")=>{const n=Id(s);return n?Qw(n,e):""},description:'상대 시간 표시 (예: "3분 전")'},number:{fn:(s,e)=>{const n=Number(s);if(isNaN(n))return String(s??"");const r={};return e!==void 0&&(r.minimumFractionDigits=e,r.maximumFractionDigits=e),n.toLocaleString(void 0,r)},description:"숫자 포맷 (천단위 구분, 선택적 소수점)"},truncate:{fn:(s,e=100,n="...")=>typeof s!="string"?String(s??""):s.length<=e?s:s.slice(0,e)+n,description:'문자열 자르기 (기본: 100자, 접미사: "...")'},uppercase:{fn:s=>typeof s!="string"?String(s??""):s.toUpperCase(),description:"대문자 변환"},lowercase:{fn:s=>typeof s!="string"?String(s??""):s.toLowerCase(),description:"소문자 변환"},stripHtml:{fn:s=>typeof s!="string"?String(s??""):s.replace(/<[^>]*>/g,""),description:"HTML 태그 제거"},default:{fn:(s,e="")=>s==null||s===""?e:s,description:"기본값 설정 (null, undefined, 빈문자열 시)"},fallback:{fn:(s,e)=>s??e,description:"폴백 값 설정 (null, undefined 시만)"},first:{fn:s=>{if(Array.isArray(s))return s[0]},description:"배열의 첫 번째 요소"},last:{fn:s=>{if(Array.isArray(s))return s[s.length-1]},description:"배열의 마지막 요소"},join:{fn:(s,e=", ")=>Array.isArray(s)?s.join(e):"",description:'배열을 문자열로 결합 (기본 구분자: ", ")'},length:{fn:s=>Array.isArray(s)||typeof s=="string"?s.length:0,description:"배열/문자열 길이"},filterBy:{fn:(s,e,n)=>Array.isArray(s)?Array.isArray(e)?s.filter(r=>{const i=n?r?.[n]:r;return e.includes(i)}):s:[],description:"배열 필터링 (allowList에 포함된 항목만 반환)"},keys:{fn:s=>s==null||typeof s!="object"?[]:Object.keys(s),description:"객체의 키 배열"},values:{fn:s=>s==null||typeof s!="object"?[]:Object.values(s),description:"객체의 값 배열"},json:{fn:(s,e)=>{try{return JSON.stringify(s,null,e)}catch{return""}},description:"JSON 문자열로 변환"},localized:{fn:(s,e)=>s==null?"":typeof s=="string"?s:typeof s!="object"?String(s):s[e||"ko"]||s.ko||s.en||Object.values(s)[0]||"",description:"다국어 객체에서 로케일에 맞는 값 추출"}},is=new Map,xi=class xi{static getInstance(){return xi.instance||(xi.instance=new xi),xi.instance}register(e,n,r){if(fo[e]){as.warn(`[PipeRegistry] 내장 파이프를 덮어쓸 수 없습니다: ${e}`);return}is.set(e,{fn:n,description:r}),as.log(`[PipeRegistry] 커스텀 파이프 등록됨: ${e}`)}unregister(e){if(fo[e])return as.warn(`[PipeRegistry] 내장 파이프는 해제할 수 없습니다: ${e}`),!1;const n=is.delete(e);return n&&as.log(`[PipeRegistry] 커스텀 파이프 해제됨: ${e}`),n}get(e){const n=fo[e];return n?n.fn:is.get(e)?.fn}has(e){return!!fo[e]||is.has(e)}execute(e,n,r=[]){const i=this.get(e);if(!i)return as.warn(`[PipeRegistry] 알 수 없는 파이프: ${e}`),n;try{return i(n,...r)}catch(l){return as.error(`[PipeRegistry] 파이프 실행 오류 (${e}):`,l),n}}list(){const e=[];for(const[n,r]of Object.entries(fo))e.push({name:n,description:r.description,type:"built-in"});for(const[n,r]of is.entries())e.push({name:n,description:r.description,type:"custom"});return e.sort((n,r)=>n.name.localeCompare(r.name))}clearCustomPipes(){is.clear()}};M(xi,"instance",null);let Wl=xi;Wl.getInstance();function Zw(s){const e=s.trim(),n=e.indexOf("(");if(n===-1)return{name:e,args:[]};const r=e.slice(0,n).trim(),i=e.slice(n+1,-1);if(!i.trim())return{name:r,args:[]};const l=[];let c="",d=null,f=0;for(let h=0;h<i.length;h++){const m=i[h];if((h>0?i[h-1]:"")==="\\"){c+=m;continue}if((m==='"'||m==="'")&&!d){d=m;continue}if(m===d){d=null;continue}if(d){c+=m;continue}if(m==="("||m==="["||m==="{"){f++,c+=m;continue}if(m===")"||m==="]"||m==="}"){f--,c+=m;continue}if(m===","&&f===0){l.push(Bg(c.trim())),c="";continue}c+=m}return c.trim()&&l.push(Bg(c.trim())),{name:r,args:l}}function Bg(s){if(s==="null")return null;if(s==="undefined")return;if(s==="true")return!0;if(s==="false")return!1;const e=Number(s);return!isNaN(e)&&s!==""?e:s}function e0(s){const e=[];let n="",r=null,i=0;for(let l=0;l<s.length;l++){const c=s[l],d=l>0?s[l-1]:"",f=l<s.length-1?s[l+1]:"";if(d==="\\"){n+=c;continue}if((c==='"'||c==="'")&&!r){r=c,n+=c;continue}if(c===r){r=null,n+=c;continue}if(r){n+=c;continue}if(c==="("||c==="["||c==="{"){i++,n+=c;continue}if(c===")"||c==="]"||c==="}"){i--,n+=c;continue}if(c==="|"&&f!=="|"&&d!=="|"&&i===0){e.push(n.trim()),n="";continue}n+=c}return n.trim()&&e.push(n.trim()),e.length===0?[s,[]]:[e[0],e.slice(1)]}function Gn(s){let e=null,n=0;for(let r=0;r<s.length;r++){const i=s[r],l=r>0?s[r-1]:"",c=r<s.length-1?s[r+1]:"";if(l!=="\\"){if((i==='"'||i==="'")&&!e){e=i;continue}if(i===e){e=null;continue}if(!e){if(i==="("||i==="["||i==="{"){n++;continue}if(i===")"||i==="]"||i==="}"){n--;continue}if(i==="|"&&c!=="|"&&l!=="|"&&n===0)return!0}}}return!1}function t0(s,e){const n=Wl.getInstance();let r=s;for(const i of e){const l=Zw(i);r=n.execute(l.name,r,l.args)}return r}const jd=new Map([["true",!0],["false",!1],["null",null],["undefined",void 0]]);function Da(s){if(typeof s!="string"||!s.startsWith("{{")||!s.endsWith("}}")||s.length<4)return null;const e=s.slice(2,-2);let n=null,r=0;for(let i=0;i<e.length;i++){const l=e[i];if(n!==null){if(l==="\\"){i++;continue}l===n&&(n=null);continue}if(l==='"'||l==="'"||l==="`"){n=l;continue}if(l==="{"){r++;continue}if(l==="}"){if(r>0){r--;continue}return null}}return r===0?e.trim():null}function n0(s){const e=[];if(typeof s!="string")return e;for(let n=0;n<s.length-1;n++){if(s[n]!=="{"||s[n+1]!=="{")continue;let r=null,i=0,l=-1;for(let c=n+2;c<s.length;c++){const d=s[c];if(r!==null){if(d==="\\"){c++;continue}d===r&&(r=null);continue}if(d==='"'||d==="'"||d==="`"){r=d;continue}if(d==="{"){i++;continue}if(d==="}"){if(i>0){i--;continue}if(s[c+1]==="}"){l=c;break}break}}l!==-1&&(e.push({start:n,end:l+2,expr:s.slice(n+2,l)}),n=l+1)}return e}function ho(s){return/[?:|&!+\-*/<>=()[\]{}]/.test(s)}function qg(s){const e=typeof s=="string"?s.trim():"";return e===""?"empty":jd.has(e)?"literal":Gn(e)?"pipe":ho(e)?"expression":"path"}function Hd(s,e,n,r){const i=typeof s=="string"?s.trim():"",l=qg(i),c=r?.skipCache?{skipCache:!0}:void 0;if(l==="empty"){r?.onEmpty?.(s);return}if(l==="literal")return jd.get(i);try{return l==="pipe"?n.evaluatePipeExpression(i,e,c,r?.trackingInfo):l==="expression"?n.evaluateExpression(i,e,r?.trackingInfo):n.resolve(i,e,c,r?.trackingInfo)}catch(d){if(r?.onError)return r.onError(d,i);throw d}}const nr="raw:";function Gg(s){return s.startsWith(nr)?s.slice(nr.length):s}const po="",bi="",Oa="";function go(s){return po+s+bi}function Yl(s){return s.length>=2&&s.charCodeAt(0)===64976&&s.charCodeAt(s.length-1)===64977}function Xl(s){return s.includes(po)}function zd(s){return s.slice(1,-1)}function ss(s){if(typeof s=="string")return go(s);if(Array.isArray(s))return s.map(ss);if(s&&typeof s=="object"){const e={};for(const[n,r]of Object.entries(s))e[n]=ss(r);return e}return s}function La(s){if(typeof s=="string")return Yl(s)?zd(s):Xl(s)||s.includes(bi)?s.split(po).join("").split(bi).join(""):s;if(Array.isArray(s)){let e=!1;const n=s.map(r=>{const i=La(r);return i!==r&&(e=!0),i});return e?n:s}if(s&&typeof s=="object"){if(s.$$typeof!==void 0)return s;let e=!1;const n={};for(const[r,i]of Object.entries(s)){const l=La(i);l!==i&&(e=!0),n[r]=l}return e?n:s}return s}const mo=new Set(["constructor","__proto__","prototype","__lookupGetter__","__lookupSetter__","__defineGetter__","__defineSetter__"]),r0=new Set(["Function","eval","globalThis","window","self","document","require","module","process","Reflect","Proxy","WebAssembly","import","constructor"]);function Fg(s,e){if(s!==null&&(typeof s=="object"||typeof s=="function")&&Vg.has(s))throw new Error(`Object.${e} on a built-in global object is not allowed`);return s}const a0=Object.freeze({keys:Object.keys,values:Object.values,entries:Object.entries,assign:(s,...e)=>{const n=Fg(s,"assign");for(const r of e)if(r!=null)for(const i of Object.keys(r)){if(mo.has(i))throw new Error(`Access to "${i}" is forbidden`);Kd(n,i,r[i])}return n},freeze:s=>Object.freeze(Fg(s,"freeze")),fromEntries:Object.fromEntries,create:Object.create,isFrozen:Object.isFrozen}),Ud={Math,JSON,Date,Array,Object:a0,Number,String,Boolean,Set,Map,WeakSet,WeakMap,parseInt,parseFloat,isNaN,isFinite},Pd={Date,Set,Map,WeakSet,WeakMap,Array,Number,String,Boolean,Object},Vg=new Set([...Object.values(Ud),...Object.values(Pd)].filter(s=>s!==null&&(typeof s=="object"||typeof s=="function"))),Jl=new Set(["function"]),vr=Symbol("short-circuit");class Bd{constructor(e){M(this,"value");this.value=e}}class qd{}class Gd{}function i0(s){return/[A-Za-z_$]/.test(s)}function s0(s){return/[A-Za-z0-9_$]/.test(s)}function vi(s){return s>="0"&&s<="9"}function o0(s,e,n){let r=e+1;for(;r<s.length;){if(s[r]==="\\"){r+=2;continue}if(s[r]===n)return r+1;r++}throw new Error(`Unterminated string literal at position ${e}`)}function Kg(s,e){let n=e+1;const r=[],i=[];let l="";for(;n<s.length;){const c=s[n];if(c==="\\"){const d=s[n+1];switch(d){case"n":l+=`
|
||
`;break;case"t":l+=" ";break;case"r":l+="\r";break;case"b":l+="\b";break;case"f":l+="\f";break;case"v":l+="\v";break;case"0":l+="\0";break;case"\\":l+="\\";break;case"`":l+="`";break;case"$":l+="$";break;default:l+=d;break}n+=2;continue}if(c==="`")return r.push(l),{quasis:r,exprs:i,end:n+1};if(c==="$"&&s[n+1]==="{"){r.push(l),l="",n+=2;const d=n;let f=1;for(;n<s.length&&f>0;){const h=s[n];if(h==="{")f++,n++;else if(h==="}"){if(f--,f===0)break;n++}else h==='"'||h==="'"?n=o0(s,n,h):h==="`"?n=Kg(s,n).end:n++}if(f!==0)throw new Error("Unterminated ${...} in template literal");i.push(s.slice(d,n)),n++;continue}l+=c,n++}throw new Error(`Unterminated template literal at position ${e}`)}function l0(s){const e=[];let n=0;const r=s.length,i=l=>n+l<r?s[n+l]:"";for(;n<r;){const l=s[n];if(l===" "||l===" "||l===`
|
||
`||l==="\r"||l==="\f"||l==="\v"){n++;continue}if(vi(l)||l==="."&&vi(i(1))){const h=n;for(;n<r&&vi(s[n]);)n++;if(s[n]===".")for(n++;n<r&&vi(s[n]);)n++;if(s[n]==="e"||s[n]==="E"){if(n++,(s[n]==="+"||s[n]==="-")&&n++,!vi(s[n]))throw new Error(`Invalid number literal at position ${h}`);for(;n<r&&vi(s[n]);)n++}const m=s.slice(h,n);e.push({type:"num",value:Number(m),pos:h});continue}if(l==='"'||l==="'"){const h=n,m=l;n++;let y="";for(;n<r&&s[n]!==m;)if(s[n]==="\\"){n++;const S=s[n];switch(S){case"n":y+=`
|
||
`;break;case"t":y+=" ";break;case"r":y+="\r";break;case"b":y+="\b";break;case"f":y+="\f";break;case"v":y+="\v";break;case"0":y+="\0";break;case"\\":y+="\\";break;case"'":y+="'";break;case'"':y+='"';break;case"`":y+="`";break;default:y+=S;break}n++}else y+=s[n],n++;if(n>=r)throw new Error(`Unterminated string literal at position ${h}`);n++,e.push({type:"str",value:y,pos:h});continue}if(i0(l)){const h=n;for(n++;n<r&&s0(s[n]);)n++;e.push({type:"ident",value:s.slice(h,n),pos:h});continue}if(l==="`"){const h=Kg(s,n);e.push({type:"template",value:"",pos:n,quasis:h.quasis,exprs:h.exprs}),n=h.end;continue}const c=n,d=s.substr(n,2);if(s.substr(n,3)==="..."){e.push({type:"punct",value:"...",pos:c}),n+=3;continue}switch(l){case"=":{i(1)===">"?(e.push({type:"punct",value:"=>",pos:c}),n+=2):i(1)==="="?i(2)==="="?(e.push({type:"punct",value:"===",pos:c}),n+=3):(e.push({type:"punct",value:"==",pos:c}),n+=2):(e.push({type:"punct",value:"=",pos:c}),n+=1);continue}case"!":{i(1)==="="?i(2)==="="?(e.push({type:"punct",value:"!==",pos:c}),n+=3):(e.push({type:"punct",value:"!=",pos:c}),n+=2):(e.push({type:"punct",value:"!",pos:c}),n+=1);continue}case"<":{if(i(1)==="=")e.push({type:"punct",value:"<=",pos:c}),n+=2;else{if(i(1)==="<")throw new Error("Bitwise/shift operators are not allowed");e.push({type:"punct",value:"<",pos:c}),n+=1}continue}case">":{if(i(1)==="=")e.push({type:"punct",value:">=",pos:c}),n+=2;else{if(i(1)===">")throw new Error("Bitwise/shift operators are not allowed");e.push({type:"punct",value:">",pos:c}),n+=1}continue}case"&":{if(i(1)==="&")e.push({type:"punct",value:"&&",pos:c}),n+=2;else throw new Error("Bitwise operators are not allowed");continue}case"|":{if(i(1)==="|")e.push({type:"punct",value:"||",pos:c}),n+=2;else throw new Error("Bitwise operators are not allowed");continue}case"?":{i(1)==="."&&!vi(i(2))?(e.push({type:"punct",value:"?.",pos:c}),n+=2):i(1)==="?"?(e.push({type:"punct",value:"??",pos:c}),n+=2):(e.push({type:"punct",value:"?",pos:c}),n+=1);continue}case"+":{if(i(1)==="+")throw new Error("Increment operator is not allowed");if(i(1)==="=")throw new Error("Assignment operators are not allowed");e.push({type:"punct",value:"+",pos:c}),n+=1;continue}case"-":{if(i(1)==="-")throw new Error("Decrement operator is not allowed");if(i(1)==="=")throw new Error("Assignment operators are not allowed");e.push({type:"punct",value:"-",pos:c}),n+=1;continue}case"*":{if(i(1)==="=")throw new Error("Assignment operators are not allowed");if(i(1)==="*")throw new Error("Exponentiation operator is not supported");e.push({type:"punct",value:"*",pos:c}),n+=1;continue}case"/":{if(i(1)==="=")throw new Error("Assignment operators are not allowed");e.push({type:"punct",value:"/",pos:c}),n+=1;continue}case"%":{if(i(1)==="=")throw new Error("Assignment operators are not allowed");e.push({type:"punct",value:"%",pos:c}),n+=1;continue}case"~":case"^":throw new Error("Bitwise operators are not allowed");case".":case":":case"(":case")":case"[":case"]":case"{":case"}":case",":e.push({type:"punct",value:l,pos:c}),n+=1;continue;case";":e.push({type:"punct",value:";",pos:c}),n+=1;continue;default:throw new Error(`Unexpected character "${l}" at position ${c}`)}}return e}const c0={"??":1,"||":1,"&&":2,"===":3,"!==":3,"==":3,"!=":3,"<":4,">":4,"<=":4,">=":4,"+":5,"-":5,"*":6,"/":6,"%":6},u0=new Set(["??","||","&&"]);class d0{constructor(e){M(this,"tokens");M(this,"pos",0);this.tokens=e}atEnd(){return this.pos>=this.tokens.length}peek(e=0){const n=this.pos+e;return n<this.tokens.length?this.tokens[n]:null}next(){if(this.atEnd())throw new Error("Unexpected end of expression");return this.tokens[this.pos++]}isPunct(e,n=0){const r=this.peek(n);return!!r&&r.type==="punct"&&r.value===e}expectPunct(e){const n=this.peek();if(!n||n.type!=="punct"||n.value!==e)throw new Error(`Expected "${e}" but found "${n?n.value:"<end>"}"`);this.pos++}parseExpression(){const e=this.tryParseArrow();return e||this.parseTernary()}tryParseArrow(){const e=this.pos,n=this.peek();if(!n)return null;if(n.type==="ident"&&this.isPunct("=>",1)&&!Jl.has(String(n.value))){this.pos+=1,this.pos+=1;const{body:r,isBlock:i}=this.parseArrowBody();return{type:"Arrow",params:[{name:String(n.value),default:null}],body:r,isBlock:i}}if(n.type==="punct"&&n.value==="("){this.pos+=1;const r=this.tryParseParamList();if(r&&this.isPunct(")")&&(this.pos+=1,this.isPunct("=>"))){this.pos+=1;const{body:i,isBlock:l}=this.parseArrowBody();return{type:"Arrow",params:r,body:i,isBlock:l}}return this.pos=e,null}return this.pos=e,null}tryParseParamList(){const e=[];if(this.isPunct(")"))return e;for(;;){const n=this.peek();let r=null,i;if(n&&n.type==="punct"&&n.value==="["){const c=this.tryParseArrayPattern();if(!c)return null;i=c}else if(n&&n.type==="ident"&&!Jl.has(String(n.value)))r=String(n.value),this.pos+=1;else return null;let l=null;if(this.isPunct("=")&&(this.pos+=1,l=this.parseExpression()),e.push(i?{name:r,elements:i,default:l}:{name:r,default:l}),this.isPunct(",")){this.pos+=1;continue}break}return e}tryParseArrayPattern(){const e=this.pos;this.pos+=1;const n=[];for(;;){if(this.isPunct("]"))return this.pos+=1,n;if(this.isPunct(",")){n.push(null),this.pos+=1;continue}const r=this.peek();if(!r||r.type!=="ident"||Jl.has(String(r.value)))return this.pos=e,null;if(n.push(String(r.value)),this.pos+=1,this.isPunct(",")){this.pos+=1;continue}return this.isPunct("]")?(this.pos+=1,n):(this.pos=e,null)}}parseArrowBody(){return this.isPunct("{")?{body:this.parseBlock(),isBlock:!0}:{body:this.parseExpression(),isBlock:!1}}parseBlock(){this.expectPunct("{");const e=[];for(;!this.isPunct("}");){if(this.atEnd())throw new Error("Unterminated block");e.push(this.parseStatement())}return this.expectPunct("}"),{type:"Block",body:e}}parseStatement(){const e=this.peek();if(!e)throw new Error("Unexpected end of statement");if(e.type==="punct"&&e.value==="{")return this.parseBlock();if(e.type==="punct"&&e.value===";")return this.pos+=1,{type:"Empty"};if(e.type==="ident")switch(String(e.value)){case"const":case"let":return this.parseVarDecl();case"if":return this.parseIf();case"for":return this.parseForOf();case"return":return this.parseReturn();case"try":return this.parseTry();case"break":return this.pos+=1,this.consumeSemicolon(),{type:"Break"};case"continue":return this.pos+=1,this.consumeSemicolon(),{type:"Continue"}}const n=this.parseExpression();return this.consumeSemicolon(),{type:"ExprStmt",expression:n}}consumeSemicolon(){this.isPunct(";")&&(this.pos+=1)}parseVarDecl(){this.pos+=1;const e=[];for(;;){const n=this.peek();if(!n||n.type!=="ident")throw new Error("Expected variable name in declaration");const r=String(n.value);this.pos+=1,this.expectPunct("=");const i=this.parseExpression();if(e.push({name:r,init:i}),this.isPunct(",")){this.pos+=1;continue}break}return this.consumeSemicolon(),{type:"VarDecl",declarations:e}}parseIf(){this.pos+=1,this.expectPunct("(");const e=this.parseExpression();this.expectPunct(")");const n=this.parseStatement();let r=null;const i=this.peek();return i&&i.type==="ident"&&i.value==="else"&&(this.pos+=1,r=this.parseStatement()),{type:"If",test:e,consequent:n,alternate:r}}parseForOf(){this.pos+=1,this.expectPunct("(");const e=this.peek();if(!e||e.type!=="ident"||e.value!=="const"&&e.value!=="let")throw new Error('Only "for (const x of …)" / "for (let x of …)" loops are supported');this.pos+=1;const n=this.peek();if(!n||n.type!=="ident")throw new Error("Expected loop variable name");const r=String(n.value);this.pos+=1;const i=this.peek();if(!i||i.type!=="ident"||i.value!=="of")throw new Error("Only for-of loops are supported (for-in / C-style for are not allowed)");this.pos+=1;const l=this.parseExpression();this.expectPunct(")");const c=this.parseStatement();return{type:"ForOf",name:r,iterable:l,body:c}}parseReturn(){if(this.pos+=1,this.isPunct(";")||this.isPunct("}")||this.atEnd())return this.consumeSemicolon(),{type:"Return",argument:null};const e=this.parseExpression();return this.consumeSemicolon(),{type:"Return",argument:e}}parseTry(){this.pos+=1;const e=this.parseBlock();let n=null,r=null,i=null;const l=this.peek();if(l&&l.type==="ident"&&l.value==="catch"){if(this.pos+=1,this.isPunct("(")){this.pos+=1;const d=this.peek();d&&d.type==="ident"&&(n=String(d.value),this.pos+=1),this.expectPunct(")")}r=this.parseBlock()}const c=this.peek();if(c&&c.type==="ident"&&c.value==="finally"&&(this.pos+=1,i=this.parseBlock()),!r&&!i)throw new Error("Missing catch or finally after try");return{type:"Try",block:e,handlerParam:n,handler:r,finalizer:i}}parseFunctionExpression(){this.pos+=1;let e=null;const n=this.peek();n&&n.type==="ident"&&n.value!==void 0&&!this.isPunct("(")&&(e=String(n.value),this.pos+=1),this.expectPunct("(");const r=this.tryParseParamList();if(!r)throw new Error("Invalid function parameter list");this.expectPunct(")");const i=this.parseBlock();return{type:"Function",name:e,params:r,body:i}}parseTernary(){const e=this.parseBinary(0);if(this.isPunct("?")){this.pos+=1;const n=this.parseExpression();this.expectPunct(":");const r=this.parseExpression();return{type:"Conditional",test:e,consequent:n,alternate:r}}return e}parseBinary(e){let n=this.parseUnary();for(;;){const r=this.peek();if(!r||r.type!=="punct")break;const i=String(r.value),l=c0[i];if(l===void 0||l<e)break;this.pos+=1;const c=this.parseBinary(l+1);u0.has(i)?n={type:"Logical",operator:i,left:n,right:c}:n={type:"Binary",operator:i,left:n,right:c}}return n}parseUnary(){const e=this.peek();if(e){if(e.type==="punct"&&(e.value==="!"||e.value==="-"||e.value==="+")){this.pos+=1;const n=this.parseUnary();return{type:"Unary",operator:String(e.value),argument:n}}if(e.type==="ident"&&e.value==="typeof")return this.pos+=1,{type:"Unary",operator:"typeof",argument:this.parseUnary()};if(e.type==="ident"&&e.value==="delete"){this.pos+=1;const n=this.parseUnary();if(n.type!=="Member")throw new Error("delete is only allowed on a property reference");return{type:"Delete",argument:n}}}return this.parsePostfix()}parsePostfix(){let e=this.parsePrimary();for(;;){const n=this.peek();if(!n||n.type!=="punct")break;if(n.value==="."){this.pos+=1;const r=this.next();if(r.type!=="ident")throw new Error(`Expected property name after "." but found "${r.value}"`);const i=String(r.value);if(mo.has(i))throw new Error(`Access to "${i}" is forbidden`);e={type:"Member",object:e,property:{type:"Literal",value:i},computed:!1,optional:!1}}else if(n.value==="?.")if(this.pos+=1,this.isPunct("[")){this.pos+=1;const r=this.parseExpression();this.expectPunct("]"),this.assertComputedKeyNotBlocked(r),e={type:"Member",object:e,property:r,computed:!0,optional:!0}}else if(this.isPunct("(")){const r=this.parseArguments();e={type:"Call",callee:e,args:r,optional:!0}}else{const r=this.next();if(r.type!=="ident")throw new Error(`Expected property name after "?." but found "${r.value}"`);const i=String(r.value);if(mo.has(i))throw new Error(`Access to "${i}" is forbidden`);e={type:"Member",object:e,property:{type:"Literal",value:i},computed:!1,optional:!0}}else if(n.value==="["){this.pos+=1;const r=this.parseExpression();this.expectPunct("]"),this.assertComputedKeyNotBlocked(r),e={type:"Member",object:e,property:r,computed:!0,optional:!1}}else if(n.value==="("){const r=this.parseArguments();e={type:"Call",callee:e,args:r,optional:!1}}else break}return e}assertComputedKeyNotBlocked(e){if(e.type==="Literal"&&typeof e.value=="string"&&mo.has(e.value))throw new Error(`Access to "${e.value}" is forbidden`)}parseArguments(){this.expectPunct("(");const e=[];if(!this.isPunct(")"))for(;;){if(this.isPunct("...")?(this.pos+=1,e.push({type:"Spread",argument:this.parseExpression()})):e.push(this.parseExpression()),this.isPunct(",")){this.pos+=1;continue}break}return this.expectPunct(")"),e}parseNew(){this.expectIdent("new");const e=this.peek();if(!e||e.type!=="ident")throw new Error("new is only allowed on whitelisted built-in constructors");const n=String(e.value);if(!Object.prototype.hasOwnProperty.call(Pd,n))throw new Error("new is only allowed on whitelisted built-in constructors");this.pos+=1;let r=[];return this.isPunct("(")&&(r=this.parseArguments()),{type:"New",ctor:n,args:r}}expectIdent(e){const n=this.peek();if(!n||n.type!=="ident"||n.value!==e)throw new Error(`Expected "${e}"`);this.pos+=1}parsePrimary(){const e=this.peek();if(!e)throw new Error("Unexpected end of expression");if(e.type==="num")return this.pos+=1,{type:"Literal",value:e.value};if(e.type==="str")return this.pos+=1,{type:"Literal",value:e.value};if(e.type==="template"){this.pos+=1;const n=e.quasis||[""],i=(e.exprs||[]).map(l=>Wg(l));return{type:"Template",quasis:n,expressions:i}}if(e.type==="ident"&&e.value==="new")return this.parseNew();if(e.type==="ident"&&e.value==="function")return this.parseFunctionExpression();if(e.type==="ident"){const n=String(e.value);if(Jl.has(n))throw new Error(`Keyword "${n}" is not allowed`);switch(this.pos+=1,n){case"true":return{type:"Literal",value:!0};case"false":return{type:"Literal",value:!1};case"null":return{type:"Literal",value:null};case"undefined":return{type:"Literal",value:void 0};default:return{type:"Identifier",name:n}}}if(e.type==="punct"){if(e.value==="("){this.pos+=1;const n=this.parseExpression();return this.expectPunct(")"),n}if(e.value==="[")return this.parseArrayLiteral();if(e.value==="{")return this.parseObjectLiteral()}throw new Error(`Unexpected token "${e.value}"`)}parseArrayLiteral(){this.expectPunct("[");const e=[];for(;!this.isPunct("]");){if(this.isPunct(",")){this.pos+=1,e.push({type:"Literal",value:void 0});continue}if(this.isPunct("...")?(this.pos+=1,e.push({type:"Spread",argument:this.parseExpression()})):e.push(this.parseExpression()),this.isPunct(",")){this.pos+=1;continue}break}return this.expectPunct("]"),{type:"Array",elements:e}}parseObjectLiteral(){this.expectPunct("{");const e=[];for(;!this.isPunct("}");){if(this.isPunct("..."))this.pos+=1,e.push({kind:"spread",value:this.parseExpression()});else{let n,r=!1;const i=this.peek();if(!i)throw new Error("Unexpected end of expression in object literal");if(i.type==="punct"&&i.value==="[")this.pos+=1,n=this.parseExpression(),this.expectPunct("]"),r=!0;else if(i.type==="str")this.pos+=1,n={type:"Literal",value:i.value};else if(i.type==="num")this.pos+=1,n={type:"Literal",value:String(i.value)};else if(i.type==="ident")this.pos+=1,n={type:"Literal",value:String(i.value)};else throw new Error(`Unexpected token "${i.value}" in object literal`);if(this.isPunct(":")){this.pos+=1;const l=this.parseExpression();e.push({kind:"init",key:n,computed:r,value:l})}else{if(r||n.type!=="Literal"||typeof n.value!="string")throw new Error("Invalid shorthand property in object literal");if(i.type!=="ident")throw new Error("Invalid shorthand property in object literal");e.push({kind:"init",key:n,computed:!1,value:{type:"Identifier",name:n.value}})}}if(this.isPunct(",")){this.pos+=1;continue}break}return this.expectPunct("}"),{type:"Object",properties:e}}}function Wg(s){const e=l0(s),n=new d0(e),r=n.parseExpression();if(!n.atEnd()){const i=n.peek();throw i&&i.type==="punct"&&i.value===","?new Error("The comma/sequence operator is not allowed"):new Error(`Unexpected token "${i?i.value:"<end>"}" after expression`)}return r}function f0(s,e){let n=e;for(;n;){if(Object.prototype.hasOwnProperty.call(n.vars,s))return n.vars[s];n=n.parent}if(Object.prototype.hasOwnProperty.call(Ud,s))return Ud[s];if(r0.has(s))throw new Error(`Reference to forbidden global "${s}" is not allowed`)}function Fd(s){const e=typeof s=="symbol"?s:String(s);if(typeof e=="string"&&mo.has(e))throw new Error(`Access to "${e}" is forbidden`);return e}function Vd(s,e){return s.type==="Member"?Yg(s,e):s.type==="Call"?Xg(s,e):Ze(s,e)}function Yg(s,e){const n=Vd(s.object,e);if(n===vr||s.optional&&n==null)return vr;let r;s.computed?r=Ze(s.property,e):r=s.property.value;const i=Fd(r);if(n!=null)return n[i]}function Xg(s,e){let n,r;if(s.callee.type==="Member"){const l=s.callee,c=Vd(l.object,e);if(c===vr||l.optional&&c==null)return vr;let d;l.computed?d=Ze(l.property,e):d=l.property.value;const f=Fd(d);c==null?n=void 0:(n=c[f],r=c)}else if(n=Vd(s.callee,e),n===vr)return vr;if(s.optional&&n==null)return vr;if(typeof n!="function")throw new Error("Attempted to call a non-function value");const i=Jg(s.args,e);return n.apply(r,i)}function Jg(s,e){const n=[];for(const r of s)if(r.type==="Spread"){const i=Ze(r.argument,e);if(i!=null)for(const l of i)n.push(l)}else n.push(Ze(r,e));return n}function Qg(s,e,n){for(let r=0;r<s.length;r++){const i=s[r];let l=e[r];if(l===void 0&&i.default&&(l=Ze(i.default,n)),i.elements){if(l==null)throw new TypeError(`Cannot destructure ${String(l)}: value is not iterable`);const c=Array.isArray(l)?l:Array.from(l);for(let d=0;d<i.elements.length;d++){const f=i.elements[d];f!==null&&(n.vars[f]=c[d])}}else i.name!==null&&(n.vars[i.name]=l)}}function Zg(s,e){try{Ze(s,e)}catch(n){if(n instanceof Bd)return n.value;throw n}}function Ze(s,e){switch(s.type){case"Literal":return s.value;case"Identifier":return f0(s.name,e);case"Member":{const n=Yg(s,e);return n===vr?void 0:n}case"Call":{const n=Xg(s,e);return n===vr?void 0:n}case"Unary":{const n=Ze(s.argument,e);switch(s.operator){case"!":return!n;case"-":return-n;case"+":return+n;case"typeof":return typeof n;default:throw new Error(`Unknown unary operator "${s.operator}"`)}}case"Binary":{const n=Ze(s.left,e),r=Ze(s.right,e);switch(s.operator){case"+":return n+r;case"-":return n-r;case"*":return n*r;case"/":return n/r;case"%":return n%r;case"===":return n===r;case"!==":return n!==r;case"==":return n==r;case"!=":return n!=r;case"<":return n<r;case">":return n>r;case"<=":return n<=r;case">=":return n>=r;default:throw new Error(`Unknown binary operator "${s.operator}"`)}}case"Logical":{const n=Ze(s.left,e);switch(s.operator){case"&&":return n&&Ze(s.right,e);case"||":return n||Ze(s.right,e);case"??":return n??Ze(s.right,e);default:throw new Error(`Unknown logical operator "${s.operator}"`)}}case"Conditional":return Ze(s.test,e)?Ze(s.consequent,e):Ze(s.alternate,e);case"Array":{const n=[];for(const r of s.elements)if(r.type==="Spread"){const i=Ze(r.argument,e);if(i!=null)for(const l of i)n.push(l)}else n.push(Ze(r,e));return n}case"Object":{const n={};for(const r of s.properties)if(r.kind==="spread"){const i=Ze(r.value,e);if(i!=null&&typeof i=="object")for(const l of Object.keys(i))Kd(n,l,i[l])}else{let i;r.computed?i=Ze(r.key,e):i=r.key.value;const l=Ze(r.value,e);Kd(n,String(i),l)}return n}case"Arrow":{const n=e,r=s.params,i=s.body,l=s.isBlock;return function(...d){const f={vars:{},parent:n};return Qg(r,d,f),l?Zg(i,f):Ze(i,f)}}case"Function":{const n=e,r=s.params,i=s.body,l=s.name,c=function(...f){const h={vars:{},parent:n};return l&&(h.vars[l]=c),Qg(r,f,h),Zg(i,h)};return c}case"Delete":{const n=s.argument,r=Ze(n.object,e);let i;n.computed?i=Ze(n.property,e):i=n.property.value;const l=Fd(i);if(r==null||typeof r!="object"&&typeof r!="function")return!0;if(Vg.has(r))throw new Error("delete on a built-in global object is not allowed");return delete r[l]}case"Block":{const n={vars:{},parent:e};for(const r of s.body)Ze(r,n);return}case"VarDecl":{for(const n of s.declarations)e.vars[n.name]=Ze(n.init,e);return}case"If":{Ze(s.test,e)?Ze(s.consequent,e):s.alternate&&Ze(s.alternate,e);return}case"ForOf":{const n=Ze(s.iterable,e);if(n!=null)for(const r of n){const i={vars:{},parent:e};i.vars[s.name]=r;try{Ze(s.body,i)}catch(l){if(l instanceof Gd)continue;if(l instanceof qd)break;throw l}}return}case"Return":throw new Bd(s.argument?Ze(s.argument,e):void 0);case"ExprStmt":Ze(s.expression,e);return;case"Break":throw new qd;case"Continue":throw new Gd;case"Empty":return;case"Try":{try{try{Ze(s.block,e)}catch(n){if(n instanceof Bd||n instanceof qd||n instanceof Gd)throw n;if(s.handler){const r={vars:{},parent:e};s.handlerParam&&(r.vars[s.handlerParam]=n),Ze(s.handler,r)}else throw n}}finally{s.finalizer&&Ze(s.finalizer,e)}return}case"New":{const n=Pd[s.ctor];if(typeof n!="function")throw new Error("new on non-whitelisted constructor");const r=Jg(s.args,e);return new n(...r)}case"Template":{let n=s.quasis[0]??"";for(let r=0;r<s.expressions.length;r++)n+=String(Ze(s.expressions[r],e)),n+=s.quasis[r+1]??"";return n}case"Spread":throw new Error("Unexpected spread element");default:throw new Error(`Unknown node type "${s.type}"`)}}function Kd(s,e,n){Object.defineProperty(s,e,{value:n,enumerable:!0,writable:!0,configurable:!0})}function Wd(s,e){if(typeof s!="string")throw new Error("Expression must be a string");const n=Wg(s);return Ze(n,{vars:e||{},parent:null})}const $a=dt("DataBindingEngine");function yo(){try{return window.G7Core?.devTools}catch{return}}class Yd extends Error{constructor(n,r,i){super(n);M(this,"path");M(this,"context");this.path=r,this.context=i,this.name="DataBindingError"}}const oa=class oa{constructor(e){M(this,"cache",new Map);M(this,"renderCycleCache",new Map);M(this,"currentRenderCycleId",0);M(this,"defaultOptions",{defaultValue:void 0,nullSafe:!0,detectCircular:!0,maxDepth:10});e&&(this.defaultOptions={...this.defaultOptions,...e})}startRenderCycle(){this.currentRenderCycleId++,this.renderCycleCache.clear()}isRenderCycleCacheActive(){return this.currentRenderCycleId>0}getFromRenderCycleCache(e){if(this.isRenderCycleCacheActive())return this.renderCycleCache.get(e)}saveToRenderCycleCache(e,n){this.isRenderCycleCacheActive()&&this.renderCycleCache.set(e,n)}resolveBindings(e,n,r,i){const l={...this.defaultOptions,...r},c=yo(),d=n._computed&&!n.$computed?{...n,$computed:n._computed}:n,f=(S,v)=>{const _=v.trim();let x=!1,A=_;if(_.startsWith(nr)&&(x=!0,A=_.slice(nr.length)),Gn(A))try{const B=this.evaluatePipeExpression(A,d,l,{...i,method:"resolveBindings",displayExpression:`{{${_}}}`}),W=this.formatValue(B);return x?go(W):W}catch(B){return $a.error("Pipe expression evaluation failed:",A,B),S}if(ho(A)){const B=c?.isEnabled()?performance.now():0;try{let W,pe=!1;if(l.skipCache)W=this.evaluateExpression(A,d);else{const we=`expr:${A}`,Ue=this.getFromRenderCycleCache(we);Ue!==void 0?(W=Ue,pe=!0):(W=this.evaluateExpression(A,d),this.saveToRenderCycleCache(we,W))}if(c?.isEnabled()){const we=performance.now()-B;c.trackExpressionEval({expression:`{{${_}}}`,result:this.sanitizeResultForTracking(W),resultType:this.getResultType(W),componentId:i?.componentId,componentName:i?.componentName,propName:i?.propName,fromCache:pe,duration:we,method:"resolveBindings",skipCache:l.skipCache})}const Se=this.formatValue(W);return x?go(Se):Se}catch(W){return $a.error("Expression evaluation failed:",A,W),S}}if(l.skipCache){const B=c?.isEnabled()?performance.now():0,W=this.resolvePath(A,d,l);if(c?.isEnabled()){const Se=performance.now()-B;c.trackExpressionEval({expression:`{{${_}}}`,result:this.sanitizeResultForTracking(W),resultType:this.getResultType(W),componentId:i?.componentId,componentName:i?.componentName,propName:i?.propName,fromCache:!1,duration:Se,method:"resolveBindings",skipCache:!0})}const pe=this.formatValue(W);return x?go(pe):pe}const $=A.startsWith("_global")||A.startsWith("_local")||A.startsWith("_isolated")||A.startsWith("$parent"),k=c?.isEnabled()?performance.now():0;let O,P=!1;if($){const B=this.getFromRenderCycleCache(A);B!==void 0?(O=B,P=!0):(O=this.resolvePath(A,d,l),this.saveToRenderCycleCache(A,O))}else{const B=this.getFromCache(A);B!==void 0?(O=B,P=!0):(O=this.resolvePath(A,d,l),this.saveToCache(A,O))}if(c?.isEnabled()){const B=performance.now()-k;c.trackExpressionEval({expression:`{{${_}}}`,result:this.sanitizeResultForTracking(O),resultType:this.getResultType(O),componentId:i?.componentId,componentName:i?.componentName,propName:i?.propName,fromCache:P,duration:B,method:"resolveBindings",skipCache:l.skipCache})}const G=this.formatValue(O);return x?go(G):G},h=n0(e);if(h.length===0)return e;let m="",y=0;for(const S of h)m+=e.slice(y,S.start),m+=f(e.slice(S.start,S.end),S.expr),y=S.end;return m+e.slice(y)}evaluatePipeExpression(e,n,r,i){const l={...this.defaultOptions,...r},c=yo(),d=c?.isEnabled()?performance.now():0,f=n._computed&&!n.$computed?{...n,$computed:n._computed}:n,[h,m]=e0(e);let y,S=!1;const v=ho(h),_=h.startsWith("_global")||h.startsWith("_local")||h.startsWith("_isolated")||h.startsWith("$parent");if(l.skipCache)v?y=this.evaluateExpression(h,f):y=this.resolvePath(h,f,l);else if(v){const A=this.getFromRenderCycleCache(`expr:${h}`);A!==void 0?(y=A,S=!0):(y=this.evaluateExpression(h,f),this.saveToRenderCycleCache(`expr:${h}`,y))}else if(_){const A=this.getFromRenderCycleCache(h);A!==void 0?(y=A,S=!0):(y=this.resolvePath(h,f,l),this.saveToRenderCycleCache(h,y))}else{const A=this.getFromCache(h);A!==void 0?(y=A,S=!0):(y=this.resolvePath(h,f,l),this.saveToCache(h,y))}const x=t0(y,m);if(c?.isEnabled()){const A=performance.now()-d;c.trackExpressionEval({expression:i?.displayExpression??`{{${e}}}`,result:this.sanitizeResultForTracking(x),resultType:this.getResultType(x),componentId:i?.componentId,componentName:i?.componentName,propName:i?.propName,fromCache:S,duration:A,method:i?.method??"evaluatePipeExpression",skipCache:l.skipCache})}return x}resolve(e,n,r,i){const l={...this.defaultOptions,...r},c=yo(),d=c?.isEnabled()?performance.now():0;if(l.skipCache){const y=this.resolvePath(e,n,l);return c?.isEnabled()&&c.trackExpressionEval({expression:e,result:this.sanitizeResultForTracking(y),resultType:this.getResultType(y),componentId:i?.componentId,componentName:i?.componentName,propName:i?.propName,fromCache:!1,duration:performance.now()-d,method:"resolve",skipCache:!0}),y}const f=e.startsWith("_global")||e.startsWith("_local")||e.startsWith("_isolated")||e.startsWith("$parent");let h=!1;if(f){const y=this.getFromRenderCycleCache(e);if(y!==void 0)return h=!0,c?.isEnabled()&&c.trackExpressionEval({expression:e,result:this.sanitizeResultForTracking(y),resultType:this.getResultType(y),componentId:i?.componentId,componentName:i?.componentName,propName:i?.propName,fromCache:!0,duration:performance.now()-d,method:"resolve",skipCache:l.skipCache}),y}else{const y=this.getFromCache(e);if(y!==void 0)return h=!0,c?.isEnabled()&&c.trackExpressionEval({expression:e,result:this.sanitizeResultForTracking(y),resultType:this.getResultType(y),componentId:i?.componentId,componentName:i?.componentName,propName:i?.propName,fromCache:!0,duration:performance.now()-d,method:"resolve",skipCache:l.skipCache}),y}const m=this.resolvePath(e,n,l);return f?this.saveToRenderCycleCache(e,m):this.saveToCache(e,m),c?.isEnabled()&&c.trackExpressionEval({expression:e,result:this.sanitizeResultForTracking(m),resultType:this.getResultType(m),componentId:i?.componentId,componentName:i?.componentName,propName:i?.propName,fromCache:h,duration:performance.now()-d,method:"resolve",skipCache:l.skipCache}),m}resolvePath(e,n,r,i=0,l=new WeakSet){if(typeof e!="string"||e.trim()===""){$a.warn("resolvePath: 빈 경로가 전달되었습니다 — undefined 로 해석합니다.");return}if(r.maxDepth&&i>r.maxDepth){if(r.detectCircular)throw new Yd(`Maximum depth exceeded (${r.maxDepth}). Possible circular reference.`,e,n);return r.defaultValue}const c=this.parsePath(e);let d=n;for(let f=0;f<c.length;f++){const h=c[f];if(d==null){if(r.nullSafe)return r.defaultValue;throw new Yd(`Cannot read property '${h}' of ${d}`,e,n)}if(r.detectCircular&&typeof d=="object"){if(l.has(d))throw new Yd(`Circular reference detected at path: ${c.slice(0,f+1).join(".")}`,e,n);l.add(d)}d=d[h],e==="_global.toasts"&&$a.log(`[DataBindingEngine] segment: ${h}, current:`,d)}return d!==void 0?d:r.defaultValue}parsePath(e){const n=[];let r;for(oa.PATH_SEGMENT_PATTERN.lastIndex=0;(r=oa.PATH_SEGMENT_PATTERN.exec(e))!==null;){const i=r[1]||r[2];i&&n.push(i)}return n}formatValue(e){if(e==null)return"";if(typeof e=="object")try{return JSON.stringify(e)}catch{return"[Object]"}return String(e)}getFromCache(e){const n=this.cache.get(e),r=yo();if(!n){r?.isEnabled()&&r.recordCacheMiss();return}if(Date.now()-n.timestamp>oa.CACHE_EXPIRY){this.cache.delete(e),r?.isEnabled()&&r.recordCacheMiss();return}return r?.isEnabled()&&r.recordCacheHit(),n.value}saveToCache(e,n){this.cache.set(e,{value:n,timestamp:Date.now()})}isActionDefinition(e){return typeof e.handler!="string"?!1:e.params!==void 0||Array.isArray(e.actions)||typeof e.target=="string"||e.onSuccess!==void 0||e.onError!==void 0}resolveObject(e,n,r){if(this.isSwitchExpression(e)){const d=e;return this.resolveSwitch(d,n,r)}if(this.isActionDefinition(e))return{...e};if("iteration"in e)return{...e};const i={},c=[...["cellChildren","expandChildren","expandContext","render"],...r?.skipBindingKeys||[]];for(const[d,f]of Object.entries(e)){if(c.includes(d)){i[d]=f;continue}try{this.resolveObjectEntry(i,d,f,n,r)}catch(h){$a.warn(`resolveObject: 값 해석 실패 (key: ${d}):`,h),i[d]=void 0}}return i}resolveObjectEntry(e,n,r,i,l){if(typeof r=="string"){const c=Da(r);if(c!==null){const d=c.trim();let f=!1,h=d;d.startsWith(nr)&&(f=!0,h=d.slice(nr.length));let m;switch(qg(h)){case"empty":$a.warn(`resolveObject: 빈 바인딩 \`{{}}\` (key: ${n}) — undefined 로 해석합니다.`),m=void 0;break;case"literal":m=jd.get(h);break;case"pipe":m=this.evaluatePipeExpression(h,i,l);break;case"expression":m=this.evaluateExpression(h,i,l);break;default:m=this.resolve(h,i,l)}e[n]=f&&m!=null?ss(m):m}else e[n]=this.resolveBindings(r,i,l)}else Array.isArray(r)?e[n]=r.map(c=>typeof c=="string"?this.resolveBindings(c,i,l):typeof c=="object"&&c!==null?this.resolveObject(c,i,l):c):r&&typeof r=="object"?e[n]=this.resolveObject(r,i,l):e[n]=r}clearCache(){this.cache.clear()}invalidateCacheByKeys(e){for(const n of this.cache.keys())for(const r of e)if(n===r||n.startsWith(`${r}.`)||n.startsWith(`${r}[`)){this.cache.delete(n);break}}pruneCache(){const e=Date.now();for(const[n,r]of this.cache.entries())e-r.timestamp>oa.CACHE_EXPIRY&&this.cache.delete(n)}getCacheStats(){const e=Date.now();let n=0;for(const r of this.cache.values())e-r.timestamp>oa.CACHE_EXPIRY&&n++;return{size:this.cache.size,expired:n}}evaluateExpression(e,n,r){const i=yo(),l=i?.isEnabled()?performance.now():0;i?.isEnabled()&&i.trackBindingEval();try{let c=this.preprocessOptionalChaining(e);c=this.preprocessTranslationTokens(c);const d=this.extractVariablesFromExpression(c),f={...n};for(const A of d)A in f||(f[A]=void 0);n._computed&&!f.$computed&&(f.$computed=n._computed);let h=n.$templateId,m=n.$locale;if(typeof window<"u"&&(!h||!m)){const A=window.__templateApp?.getConfig?.();h??(h=A?.templateId),m??(m=A?.locale)}const y=m||"ko";f.$localized=(A,L)=>{if(A==null&&!L)return"";if(typeof A=="string")return A;if(A&&typeof A=="object"&&A[y])return A[y];if(L&&typeof L=="string"){const $=f.$t?f.$t(L):L;if($&&$!==L)return $}return A&&typeof A=="object"?A.ko||A.en||Object.values(A)[0]||"":A==null?"":String(A)};const S=typeof window<"u"?window.G7Core:void 0;f.$uuid=()=>S?.uuid?S.uuid():typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,A=>{const L=Math.random()*16|0;return(A==="x"?L:L&3|8).toString(16)});const v={templateId:h||"",locale:y};f.$t=A=>{if(!A||typeof A!="string")return"";try{return Ra.getInstance().translate(A,v)}catch(L){return $a.warn("$t() translation failed for key:",A,L),A}},f.$get=(A,L,$=void 0)=>{if(A==null)return $;const k=Array.isArray(L)?L:[L];if(k.length===0)return A;let O=A;for(const P of k){if(O==null||P==null)return $;O=O[P]}return O??$};const _=!1,x=Wd(c,f);if(i?.isEnabled()){const A=performance.now()-l;i.trackExpressionEval({expression:e,result:this.sanitizeResultForTracking(x),resultType:this.getResultType(x),componentId:r?.componentId,componentName:r?.componentName,propName:r?.propName,fromCache:_,duration:A,method:"evaluateExpression",skipCache:r?.skipCache})}return x}catch(c){throw new Error(`Failed to evaluate expression "${e}": ${c instanceof Error?c.message:String(c)}`)}}getResultType(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?"array":typeof e}sanitizeResultForTracking(e){if(e==null||typeof e!="object")return e;try{if(Array.isArray(e))return e.length>10?`[Array(${e.length})]`:e.slice(0,10);const n=Object.keys(e);return n.length>20?`{Object(${n.length} keys)}`:(JSON.stringify(e),e)}catch{return"[Complex Object]"}}preprocessTranslationTokens(e){return e=e.replace(/(['"])(\$t:([a-zA-Z_][a-zA-Z0-9_.\-]*))\1/g,(n,r,i,l)=>`$t('${l}')`),e.replace(/(['"]\s*)?(\$t:[a-zA-Z_][a-zA-Z0-9_.\-]*)(?!\s*['"])/g,(n,r,i)=>r?n:`"${i}"`)}preprocessOptionalChaining(e){const n=[];let r=e.replace(/(['"])(?:(?!\1|\\).|\\.)*\1/g,l=>(n.push(l),`__STRING_LITERAL_${n.length-1}__`));const i=[];return r=r.replace(/\$t:[a-zA-Z_][a-zA-Z0-9_.\-]*(?:\|[^'"\s,)]+)?/g,l=>(i.push(l),`__TRANSLATION_TOKEN_${i.length-1}__`)),r=r.replace(/([a-zA-Z_$][a-zA-Z0-9_$]*)\.(?!\?)/g,"$1?."),r=r.replace(/__TRANSLATION_TOKEN_(\d+)__/g,(l,c)=>i[parseInt(c,10)]),r=r.replace(/__STRING_LITERAL_(\d+)__/g,(l,c)=>n[parseInt(c,10)]),r}extractVariablesFromExpression(e){const n=new Set(["true","false","null","undefined","NaN","Infinity","if","else","for","while","do","switch","case","break","continue","return","function","class","const","let","var","new","delete","typeof","instanceof","this","super","import","export","default","try","catch","finally","throw","Math","Date","JSON","Array","Object","String","Number","Boolean","RegExp","Set","Map","WeakSet","WeakMap","Symbol","Promise","BigInt","Error","parseInt","parseFloat","isNaN","isFinite","encodeURI","decodeURI","encodeURIComponent","decodeURIComponent"]),r=/(^|[^.\w$])([a-zA-Z_$][a-zA-Z0-9_$]*)/g,i=new Set;let l;for(;(l=r.exec(e))!==null;){const c=l[2];n.has(c)||i.add(c)}return Array.from(i)}isSwitchExpression(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&"$switch"in e&&"$cases"in e}resolveSwitch(e,n,r){const i={...r,skipCache:!0};let l;try{l=this.resolveBindings(e.$switch,n,i)?.toString()?.trim()??""}catch(d){$a.warn("resolveSwitch: $switch 키 평가 실패:",e.$switch,d),l=""}let c;if(l&&e.$cases&&l in e.$cases)c=e.$cases[l];else if("$default"in e)c=e.$default;else return;return typeof c=="string"?c.includes("{{")?this.resolveBindings(c,n,i):c:c!==null&&typeof c=="object"?this.resolveObject(c,n,i):c}};M(oa,"PATH_SEGMENT_PATTERN",/([^.[\]]+)|\[(\d+)\]/g),M(oa,"CACHE_EXPIRY",3e4);let kn=oa;const Xd=new kn,Ql={mobile:{min:0,max:767},tablet:{min:768,max:1023},desktop:{min:1024,max:1/0},portable:{min:0,max:1023}},Zl=new Map;function h0(s,e){let n=null;return((...r)=>{n!==null&&clearTimeout(n),n=setTimeout(()=>{s(...r)},e)})}class p0{constructor(){M(this,"subscribers",new Set);M(this,"currentWidth",1024);M(this,"debouncedHandler",null);M(this,"isInitialized",!1);this.initialize()}initialize(){typeof window>"u"||(this.currentWidth=window.innerWidth,this.isInitialized=!0,this.debouncedHandler=h0(()=>{this.currentWidth=window.innerWidth,this.notifySubscribers()},150),window.addEventListener("resize",this.debouncedHandler))}notifySubscribers(){this.subscribers.forEach(e=>{e(this.currentWidth)})}subscribe(e){return this.subscribers.add(e),e(this.currentWidth),()=>{this.subscribers.delete(e)}}getWidth(){return this.currentWidth}parseRange(e){if(Zl.has(e))return Zl.get(e)??null;let n=null;if(Ql[e])n={...Ql[e]};else{const r=e.match(/^(-?\d*)-(-?\d*)$/);if(r){const[,i,l]=r,c=i===""?0:parseInt(i,10),d=l===""?1/0:parseInt(l,10);!isNaN(c)&&!isNaN(d)&&c<=d&&(n={min:c,max:d})}}return Zl.set(e,n),n}getMatchingKey(e,n){const r=[];for(const i of Object.keys(e)){const l=this.parseRange(i);l&&n>=l.min&&n<=l.max&&r.push({key:i,range:l,isPreset:!!Ql[i]})}return r.length===0?null:(r.sort((i,l)=>{if(i.isPreset!==l.isPreset)return i.isPreset?1:-1;const c=i.range.max-i.range.min,d=l.range.max-l.range.min;return c-d}),r[0].key)}matches(e){const n=this.parseRange(e);return n?this.currentWidth>=n.min&&this.currentWidth<=n.max:!1}clearSubscribers(){this.subscribers.clear()}destroy(){this.debouncedHandler&&typeof window<"u"&&window.removeEventListener("resize",this.debouncedHandler),this.clearSubscribers(),Zl.clear()}_setWidthForTesting(e){this.currentWidth=e,this.notifySubscribers()}}const Si=new p0,bo=dt("ConditionEvaluator");function g0(s,e,n,r){return Hd(Gg(s),e,n,{skipCache:!0,onEmpty:()=>{bo.warn(`${r}: 빈 바인딩 \`{{}}\` — undefined 로 해석합니다.`)}})}function em(s,e,n){if(!s)return!0;try{const r=Da(s);let i;if(r!==null?i=g0(r,e,n,"evaluateStringCondition"):i=n.resolveBindings(s,e,{skipCache:!0}),typeof i=="string"){const l=i.toLowerCase().trim();if(l==="false"||l==="0"||l===""||l==="null"||l==="undefined")return!1}return!!i}catch(r){return bo.warn(`evaluateStringCondition: 조건 평가 실패: ${s}`,r),!1}}function ec(s,e,n){if(typeof s=="string")return em(s,e,n);if("and"in s){if(!Array.isArray(s.and)||s.and.length===0)return bo.warn("evaluateConditionExpression: AND 그룹이 비어있습니다"),!0;for(const r of s.and)if(!ec(r,e,n))return!1;return!0}if("or"in s){if(!Array.isArray(s.or)||s.or.length===0)return bo.warn("evaluateConditionExpression: OR 그룹이 비어있습니다"),!1;for(const r of s.or)if(ec(r,e,n))return!0;return!1}return bo.warn("evaluateConditionExpression: 알 수 없는 조건 형식",s),!1}function tm(s,e,n){if(!Array.isArray(s)||s.length===0)return{matched:!1,branchIndex:-1};for(let r=0;r<s.length;r++){const i=s[r];if(i.if===void 0)return{matched:!0,branchIndex:r};if(ec(i.if,e,n))return{matched:!0,branchIndex:r}}return{matched:!1,branchIndex:-1}}function m0(s){return typeof s=="string"?!0:s&&typeof s=="object"?"and"in s||"or"in s:!1}function y0(s){if(!Array.isArray(s)||s.length===0)return!1;const e=s[0];return!e||typeof e!="object"?!1:"if"in e||"then"in e}const rr=dt("RenderHelpers");function nm(){try{return window.G7Core?.devTools}catch{return}}const rm=new kn,b0=ho,am=Da;function Jd(s,e,n){let r=s;if(s.startsWith("{{")&&s.endsWith("}}")&&(r=s.slice(2,-2).trim()),Gn(r))try{return n.evaluatePipeExpression(r,e,{skipCache:!0})}catch(i){rr.warn(`resolveIterationSource: 파이프 표현식 평가 실패: ${s}`,i);return}if(b0(r))try{return n.evaluateExpression(r,e)}catch(i){rr.warn(`resolveIterationSource: 표현식 평가 실패: ${s}`,i);return}return n.resolve(r,e,{skipCache:!0})}function v0(s,e){const n={...s};if(e?.parentDataContext)for(const[r,i]of Object.entries(e.parentDataContext))r in n||(n[r]=i);if(e?.state){const r=n._local||{};n._local={...r,...e.state}}return e?.isolatedContext?.state&&(n._isolated=e.isolatedContext.state),n}function Qd(s,e,n,r){if(!e||!Array.isArray(e)||e.length===0)return s;const i=r?.actionDispatcher??Wm(),l={...s,actions:e},c=i.bindActionsToProps(l,n,r?.componentContext);return delete c.actions,c}function im(s,e,n,r){if(typeof s=="boolean")return s;if(!s)return!0;try{const i=am(s);let l;if(i!==null?l=Hd(Gg(i),e,n,{skipCache:!0,onEmpty:()=>{rr.warn(`evaluateIfCondition: 빈 바인딩 \`{{}}\` (컴포넌트: ${r||"unknown"}) — undefined 로 해석합니다.`)}}):l=n.resolveBindings(s,e,{skipCache:!0}),typeof l=="string"){const c=l.toLowerCase().trim();if(c==="false"||c==="0"||c===""||c==="null"||c==="undefined")return!1}return!!l}catch(i){return rr.warn(`evaluateIfCondition: 조건 평가 실패 (컴포넌트: ${r||"unknown"}):`,i),!1}}function os(s,e,n,r){if(s.if!==void 0)return im(s.if,e,n,r);if(s.condition!==void 0)return im(s.condition,e,n,r);if(s.conditions===void 0)return!0;const i=s.conditions;try{return m0(i)?ec(i,e,n):y0(i)?tm(i,e,n).matched:(rr.warn(`evaluateRenderCondition: 알 수 없는 conditions 형식 (컴포넌트: ${r||"unknown"})`),!0)}catch(l){return rr.warn(`evaluateRenderCondition: conditions 평가 실패 (컴포넌트: ${r||"unknown"}):`,l),!1}}function sm(s){if(!s.responsive)return s;const e=Si.getWidth(),n=Si.getMatchingKey(s.responsive,e);if(!n)return s;const r=s.responsive[n];return{...s,props:{...s.props,...r.props},children:r.children??s.children,text:r.text??s.text,if:r.if??s.if,iteration:r.iteration??s.iteration}}function vo(s,e,n,r,i){if(!s||s.length===0)return[];const l=i?.bindingEngine??new kn,c=i?.translationEngine??Ra.getInstance(),d=i?.translationContext??{templateId:"",locale:"ko"},f=v0(e,i?.componentContext),h=(v,_)=>{if(typeof v=="string")return Yl(v)||Xl(v)||!/\$t:[a-zA-Z0-9._-]+/.test(v)?v:c.resolveTranslations(v,d,_);if(Array.isArray(v))return v.map(x=>h(x,_));if(v&&typeof v=="object"){const x={};for(const[A,L]of Object.entries(v))x[A]=h(L,_);return x}return v},m=(v,_)=>{if(typeof v=="string"){if(Yl(v))return zd(v);if(Xl(v)){const A=[],L=v.replace(new RegExp(`${po}([^${bi}]*)${bi}`,"g"),(k,O)=>(A.push(O),`${Oa}${A.length-1}${Oa}`));let $=L;return/\$t:[a-zA-Z0-9._-]+/.test(L)&&($=c.resolveTranslations(L,d,_)),$.replace(new RegExp(`${Oa}(\\d+)${Oa}`,"g"),(k,O)=>A[parseInt(O)])}if(v.startsWith("$t:defer:")){const A="$t:"+v.slice(9);return c.resolveTranslations(A,d,_)}if(v.startsWith("$t:"))return c.resolveTranslations(v,d,_);if(/\$t:[a-zA-Z0-9._-]+/.test(v)){const A=v.trim();if(!(A.startsWith("{")&&A.endsWith("}")||A.startsWith("[")&&A.endsWith("]"))&&!v.includes("{{"))return c.resolveTranslations(v,d,_)}const x=am(v);if(x!==null){let A=!1,L=x;x.startsWith(nr)&&(A=!0,L=x.slice(nr.length));let $=!1,k=Hd(L,_,l,{skipCache:!0,onError:O=>{rr.warn("renderItemChildren: 표현식 평가 실패:",O),$=!0},onEmpty:()=>{rr.warn("renderItemChildren: 빈 바인딩 `{{}}` 은 해석하지 않습니다.")}});return $?void 0:(A||(k=h(k,_)),A&&k!=null?ss(k):k)}if(v.includes("{{")){const A=l.resolveBindings(v,_,{skipCache:!0});return typeof A=="string"&&/\$t:[a-zA-Z0-9._-]+/.test(A)?c.resolveTranslations(A,d,_):A}return v}if(Array.isArray(v))return v.map(x=>m(x,_));if(v&&typeof v=="object"){if(l.isSwitchExpression(v))return l.resolveSwitch(v,_,{skipCache:!0});if(l.isActionDefinition(v))return{...v};const x={};for(const[A,L]of Object.entries(v))x[A]=m(L,_);return x}return v},y=(v,_)=>{if(!v)return{};const x={};for(const[A,L]of Object.entries(v))x[A]=m(L,_);return x},S=(v,_,x)=>{const A=sm(v),L=A.iteration;if(!L)return[];const $=Jd(L.source,x,l);if(!Array.isArray($))return rr.warn(`renderItemChildren: iteration.source가 배열이 아닙니다: ${L.source}`),[];const k=nm();if(k?.isEnabled()){const P=`${_}-iteration`;k.trackIteration(P,L.source,L.item_var,L.index_var,$.length)}const O=n[A.name];return O?$.flatMap((P,G)=>{const B={...x,[L.item_var]:P,[`${L.item_var}_index`]:G,...L.index_var?{[L.index_var]:G}:{}},W=os({if:A.if,condition:A.condition,conditions:A.conditions},B,l,A.id);if(A.if&&k?.isEnabled()){const wt=`${_}-iter-${G}-if`;k.trackIfCondition(wt,A.if,W,A.name)}if(!W)return[];const pe=A.id?String(La(m(A.id,B))):void 0,Se=`${_}-iter-${G}`,we=i?.getRemountKey?i.getRemountKey(pe,Se):Se,Ue=y(A.props,B),Fe=Qd(Ue,A.actions,B,{actionDispatcher:i?.actionDispatcher,componentContext:i?.componentContext});let qe=null;return A.text!==void 0?qe=m(A.text,B):A.children&&A.children.length>0&&(qe=vo(A.children,B,n,we,i)),k?.isEnabled()&&k.trackRender(A.name),[Ye.createElement(O,{key:we,...La(Fe)},La(qe))]}):(rr.warn(`renderItemChildren: 컴포넌트를 찾을 수 없습니다: ${A.name}`),[])};return s.flatMap((v,_)=>{const x=sm(v),A=x.id?String(La(m(x.id,f))):void 0,L=r?`${r}-${A||_}`:A||`child-${_}`,$=i?.getRemountKey?i.getRemountKey(A,L):L;if(x.iteration)return S(x,$,f);const k=os({if:x.if,condition:x.condition,conditions:x.conditions},f,l,x.id),O=nm();if(x.if&&O?.isEnabled()){const pe=`${$}-if`;O.trackIfCondition(pe,x.if,k,x.name)}if(!k)return[];const P=n[x.name];if(!P)return rr.warn(`renderItemChildren: 컴포넌트를 찾을 수 없습니다: ${x.name}`),[];const G=y(x.props,f),B=Qd(G,x.actions,f,{actionDispatcher:i?.actionDispatcher,componentContext:i?.componentContext});let W=null;return x.text!==void 0?W=m(x.text,f):x.children&&x.children.length>0&&(W=vo(x.children,f,n,$,i)),O?.isEnabled()&&O.trackRender(x.name),[Ye.createElement(P,{key:$,...La(B)},La(W))]})}function ls(s,e,n,r){let i,l;return n instanceof kn?(i=n,l=r):(i=rm,l=n),i.resolveBindings(s,e,l)}function S0(s,e,n,r){const i=n??rm,l={skipCache:!0,...r};let c;try{c=i.resolveBindings(s.key,e,{skipCache:l.skipCache})?.toString()?.trim()??""}catch(h){rr.warn("resolveClassMap: key 평가 실패:",s.key,h),c=""}let d="";c&&s.variants&&c in s.variants?d=s.variants[c]:s.default&&(d=s.default);const f=[];return s.base?.trim()&&f.push(s.base.trim()),d?.trim()&&f.push(d.trim()),f.join(" ")}function om(s,e){return function(){return s.apply(e,arguments)}}const{toString:w0}=Object.prototype,{getPrototypeOf:tc}=Object,{iterator:nc,toStringTag:lm}=Symbol,rc=(s=>e=>{const n=w0.call(e);return s[n]||(s[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),Sr=s=>(s=s.toLowerCase(),e=>rc(e)===s),ac=s=>e=>typeof e===s,{isArray:cs}=Array,us=ac("undefined");function So(s){return s!==null&&!us(s)&&s.constructor!==null&&!us(s.constructor)&&$n(s.constructor.isBuffer)&&s.constructor.isBuffer(s)}const cm=Sr("ArrayBuffer");function C0(s){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(s):e=s&&s.buffer&&cm(s.buffer),e}const E0=ac("string"),$n=ac("function"),um=ac("number"),wo=s=>s!==null&&typeof s=="object",_0=s=>s===!0||s===!1,ic=s=>{if(rc(s)!=="object")return!1;const e=tc(s);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(lm in s)&&!(nc in s)},A0=s=>{if(!wo(s)||So(s))return!1;try{return Object.keys(s).length===0&&Object.getPrototypeOf(s)===Object.prototype}catch{return!1}},x0=Sr("Date"),T0=Sr("File"),k0=s=>!!(s&&typeof s.uri<"u"),R0=s=>s&&typeof s.getParts<"u",D0=Sr("Blob"),O0=Sr("FileList"),L0=s=>wo(s)&&$n(s.pipe);function $0(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}const dm=$0(),fm=typeof dm.FormData<"u"?dm.FormData:void 0,M0=s=>{if(!s)return!1;if(fm&&s instanceof fm)return!0;const e=tc(s);if(!e||e===Object.prototype||!$n(s.append))return!1;const n=rc(s);return n==="formdata"||n==="object"&&$n(s.toString)&&s.toString()==="[object FormData]"},N0=Sr("URLSearchParams"),[I0,j0,H0,z0]=["ReadableStream","Request","Response","Headers"].map(Sr),U0=s=>s.trim?s.trim():s.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Co(s,e,{allOwnKeys:n=!1}={}){if(s===null||typeof s>"u")return;let r,i;if(typeof s!="object"&&(s=[s]),cs(s))for(r=0,i=s.length;r<i;r++)e.call(null,s[r],r,s);else{if(So(s))return;const l=n?Object.getOwnPropertyNames(s):Object.keys(s),c=l.length;let d;for(r=0;r<c;r++)d=l[r],e.call(null,s[d],d,s)}}function hm(s,e){if(So(s))return null;e=e.toLowerCase();const n=Object.keys(s);let r=n.length,i;for(;r-- >0;)if(i=n[r],e===i.toLowerCase())return i;return null}const wi=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,pm=s=>!us(s)&&s!==wi;function Zd(...s){const{caseless:e,skipUndefined:n}=pm(this)&&this||{},r={},i=(l,c)=>{if(c==="__proto__"||c==="constructor"||c==="prototype")return;const d=e&&hm(r,c)||c,f=ef(r,d)?r[d]:void 0;ic(f)&&ic(l)?r[d]=Zd(f,l):ic(l)?r[d]=Zd({},l):cs(l)?r[d]=l.slice():(!n||!us(l))&&(r[d]=l)};for(let l=0,c=s.length;l<c;l++)s[l]&&Co(s[l],i);return r}const P0=(s,e,n,{allOwnKeys:r}={})=>(Co(e,(i,l)=>{n&&$n(i)?Object.defineProperty(s,l,{__proto__:null,value:om(i,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(s,l,{__proto__:null,value:i,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:r}),s),B0=s=>(s.charCodeAt(0)===65279&&(s=s.slice(1)),s),q0=(s,e,n,r)=>{s.prototype=Object.create(e.prototype,r),Object.defineProperty(s.prototype,"constructor",{__proto__:null,value:s,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(s,"super",{__proto__:null,value:e.prototype}),n&&Object.assign(s.prototype,n)},G0=(s,e,n,r)=>{let i,l,c;const d={};if(e=e||{},s==null)return e;do{for(i=Object.getOwnPropertyNames(s),l=i.length;l-- >0;)c=i[l],(!r||r(c,s,e))&&!d[c]&&(e[c]=s[c],d[c]=!0);s=n!==!1&&tc(s)}while(s&&(!n||n(s,e))&&s!==Object.prototype);return e},F0=(s,e,n)=>{s=String(s),(n===void 0||n>s.length)&&(n=s.length),n-=e.length;const r=s.indexOf(e,n);return r!==-1&&r===n},V0=s=>{if(!s)return null;if(cs(s))return s;let e=s.length;if(!um(e))return null;const n=new Array(e);for(;e-- >0;)n[e]=s[e];return n},K0=(s=>e=>s&&e instanceof s)(typeof Uint8Array<"u"&&tc(Uint8Array)),W0=(s,e)=>{const r=(s&&s[nc]).call(s);let i;for(;(i=r.next())&&!i.done;){const l=i.value;e.call(s,l[0],l[1])}},Y0=(s,e)=>{let n;const r=[];for(;(n=s.exec(e))!==null;)r.push(n);return r},X0=Sr("HTMLFormElement"),J0=s=>s.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,i){return r.toUpperCase()+i}),ef=(({hasOwnProperty:s})=>(e,n)=>s.call(e,n))(Object.prototype),Q0=Sr("RegExp"),gm=(s,e)=>{const n=Object.getOwnPropertyDescriptors(s),r={};Co(n,(i,l)=>{let c;(c=e(i,l,s))!==!1&&(r[l]=c||i)}),Object.defineProperties(s,r)},Z0=s=>{gm(s,(e,n)=>{if($n(s)&&["arguments","caller","callee"].includes(n))return!1;const r=s[n];if($n(r)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},eC=(s,e)=>{const n={},r=i=>{i.forEach(l=>{n[l]=!0})};return cs(s)?r(s):r(String(s).split(e)),n},tC=()=>{},nC=(s,e)=>s!=null&&Number.isFinite(s=+s)?s:e;function rC(s){return!!(s&&$n(s.append)&&s[lm]==="FormData"&&s[nc])}const aC=s=>{const e=new WeakSet,n=r=>{if(wo(r)){if(e.has(r))return;if(So(r))return r;if(!("toJSON"in r)){e.add(r);const i=cs(r)?[]:{};return Co(r,(l,c)=>{const d=n(l);!us(d)&&(i[c]=d)}),e.delete(r),i}}return r};return n(s)},iC=Sr("AsyncFunction"),sC=s=>s&&(wo(s)||$n(s))&&$n(s.then)&&$n(s.catch),mm=((s,e)=>s?setImmediate:e?((n,r)=>(wi.addEventListener("message",({source:i,data:l})=>{i===wi&&l===n&&r.length&&r.shift()()},!1),i=>{r.push(i),wi.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",$n(wi.postMessage)),oC=typeof queueMicrotask<"u"?queueMicrotask.bind(wi):typeof process<"u"&&process.nextTick||mm,K={isArray:cs,isArrayBuffer:cm,isBuffer:So,isFormData:M0,isArrayBufferView:C0,isString:E0,isNumber:um,isBoolean:_0,isObject:wo,isPlainObject:ic,isEmptyObject:A0,isReadableStream:I0,isRequest:j0,isResponse:H0,isHeaders:z0,isUndefined:us,isDate:x0,isFile:T0,isReactNativeBlob:k0,isReactNative:R0,isBlob:D0,isRegExp:Q0,isFunction:$n,isStream:L0,isURLSearchParams:N0,isTypedArray:K0,isFileList:O0,forEach:Co,merge:Zd,extend:P0,trim:U0,stripBOM:B0,inherits:q0,toFlatObject:G0,kindOf:rc,kindOfTest:Sr,endsWith:F0,toArray:V0,forEachEntry:W0,matchAll:Y0,isHTMLForm:X0,hasOwnProperty:ef,hasOwnProp:ef,reduceDescriptors:gm,freezeMethods:Z0,toObjectSet:eC,toCamelCase:J0,noop:tC,toFiniteNumber:nC,findKey:hm,global:wi,isContextDefined:pm,isSpecCompliantForm:rC,toJSONObject:aC,isAsyncFn:iC,isThenable:sC,setImmediate:mm,asap:oC,isIterable:s=>s!=null&&$n(s[nc])},lC=K.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),cC=s=>{const e={};let n,r,i;return s&&s.split(`
|
||
`).forEach(function(c){i=c.indexOf(":"),n=c.substring(0,i).trim().toLowerCase(),r=c.substring(i+1).trim(),!(!n||e[n]&&lC[n])&&(n==="set-cookie"?e[n]?e[n].push(r):e[n]=[r]:e[n]=e[n]?e[n]+", "+r:r)}),e};function uC(s){let e=0,n=s.length;for(;e<n;){const r=s.charCodeAt(e);if(r!==9&&r!==32)break;e+=1}for(;n>e;){const r=s.charCodeAt(n-1);if(r!==9&&r!==32)break;n-=1}return e===0&&n===s.length?s:s.slice(e,n)}const dC=new RegExp("[\\u0000-\\u0008\\u000a-\\u001f\\u007f]+","g"),fC=new RegExp("[^\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+","g");function tf(s,e){return K.isArray(s)?s.map(n=>tf(n,e)):uC(String(s).replace(e,""))}const hC=s=>tf(s,dC),pC=s=>tf(s,fC);function ym(s){const e=Object.create(null);return K.forEach(s.toJSON(),(n,r)=>{e[r]=pC(n)}),e}const bm=Symbol("internals");function Eo(s){return s&&String(s).trim().toLowerCase()}function sc(s){return s===!1||s==null?s:K.isArray(s)?s.map(sc):hC(String(s))}function gC(s){const e=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(s);)e[r[1]]=r[2];return e}const mC=s=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(s.trim());function nf(s,e,n,r,i){if(K.isFunction(r))return r.call(this,e,n);if(i&&(e=n),!!K.isString(e)){if(K.isString(r))return e.indexOf(r)!==-1;if(K.isRegExp(r))return r.test(e)}}function yC(s){return s.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,n,r)=>n.toUpperCase()+r)}function bC(s,e){const n=K.toCamelCase(" "+e);["get","set","has"].forEach(r=>{Object.defineProperty(s,r+n,{__proto__:null,value:function(i,l,c){return this[r].call(this,e,i,l,c)},configurable:!0})})}let Rn=class{constructor(e){e&&this.set(e)}set(e,n,r){const i=this;function l(d,f,h){const m=Eo(f);if(!m)throw new Error("header name must be a non-empty string");const y=K.findKey(i,m);(!y||i[y]===void 0||h===!0||h===void 0&&i[y]!==!1)&&(i[y||f]=sc(d))}const c=(d,f)=>K.forEach(d,(h,m)=>l(h,m,f));if(K.isPlainObject(e)||e instanceof this.constructor)c(e,n);else if(K.isString(e)&&(e=e.trim())&&!mC(e))c(cC(e),n);else if(K.isObject(e)&&K.isIterable(e)){let d={},f,h;for(const m of e){if(!K.isArray(m))throw TypeError("Object iterator must return a key-value pair");d[h=m[0]]=(f=d[h])?K.isArray(f)?[...f,m[1]]:[f,m[1]]:m[1]}c(d,n)}else e!=null&&l(n,e,r);return this}get(e,n){if(e=Eo(e),e){const r=K.findKey(this,e);if(r){const i=this[r];if(!n)return i;if(n===!0)return gC(i);if(K.isFunction(n))return n.call(this,i,r);if(K.isRegExp(n))return n.exec(i);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,n){if(e=Eo(e),e){const r=K.findKey(this,e);return!!(r&&this[r]!==void 0&&(!n||nf(this,this[r],r,n)))}return!1}delete(e,n){const r=this;let i=!1;function l(c){if(c=Eo(c),c){const d=K.findKey(r,c);d&&(!n||nf(r,r[d],d,n))&&(delete r[d],i=!0)}}return K.isArray(e)?e.forEach(l):l(e),i}clear(e){const n=Object.keys(this);let r=n.length,i=!1;for(;r--;){const l=n[r];(!e||nf(this,this[l],l,e,!0))&&(delete this[l],i=!0)}return i}normalize(e){const n=this,r={};return K.forEach(this,(i,l)=>{const c=K.findKey(r,l);if(c){n[c]=sc(i),delete n[l];return}const d=e?yC(l):String(l).trim();d!==l&&delete n[l],n[d]=sc(i),r[d]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const n=Object.create(null);return K.forEach(this,(r,i)=>{r!=null&&r!==!1&&(n[i]=e&&K.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,n])=>e+": "+n).join(`
|
||
`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...n){const r=new this(e);return n.forEach(i=>r.set(i)),r}static accessor(e){const r=(this[bm]=this[bm]={accessors:{}}).accessors,i=this.prototype;function l(c){const d=Eo(c);r[d]||(bC(i,c),r[d]=!0)}return K.isArray(e)?e.forEach(l):l(e),this}};Rn.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),K.reduceDescriptors(Rn.prototype,({value:s},e)=>{let n=e[0].toUpperCase()+e.slice(1);return{get:()=>s,set(r){this[n]=r}}}),K.freezeMethods(Rn);const vC="[REDACTED ****]";function SC(s){if(K.hasOwnProp(s,"toJSON"))return!0;let e=Object.getPrototypeOf(s);for(;e&&e!==Object.prototype;){if(K.hasOwnProp(e,"toJSON"))return!0;e=Object.getPrototypeOf(e)}return!1}function wC(s,e){const n=new Set(e.map(l=>String(l).toLowerCase())),r=[],i=l=>{if(l===null||typeof l!="object"||K.isBuffer(l))return l;if(r.indexOf(l)!==-1)return;l instanceof Rn&&(l=l.toJSON()),r.push(l);let c;if(K.isArray(l))c=[],l.forEach((d,f)=>{const h=i(d);K.isUndefined(h)||(c[f]=h)});else{if(!K.isPlainObject(l)&&SC(l))return r.pop(),l;c=Object.create(null);for(const[d,f]of Object.entries(l)){const h=n.has(d.toLowerCase())?vC:i(f);K.isUndefined(h)||(c[d]=h)}}return r.pop(),c};return i(s)}let Oe=class kw extends Error{static from(e,n,r,i,l,c){const d=new kw(e.message,n||e.code,r,i,l);return d.cause=e,d.name=e.name,e.status!=null&&d.status==null&&(d.status=e.status),c&&Object.assign(d,c),d}constructor(e,n,r,i,l){super(e),Object.defineProperty(this,"message",{__proto__:null,value:e,enumerable:!0,writable:!0,configurable:!0}),this.name="AxiosError",this.isAxiosError=!0,n&&(this.code=n),r&&(this.config=r),i&&(this.request=i),l&&(this.response=l,this.status=l.status)}toJSON(){const e=this.config,n=e&&K.hasOwnProp(e,"redact")?e.redact:void 0,r=K.isArray(n)&&n.length>0?wC(e,n):K.toJSONObject(e);return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:r,code:this.code,status:this.status}}};Oe.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE",Oe.ERR_BAD_OPTION="ERR_BAD_OPTION",Oe.ECONNABORTED="ECONNABORTED",Oe.ETIMEDOUT="ETIMEDOUT",Oe.ECONNREFUSED="ECONNREFUSED",Oe.ERR_NETWORK="ERR_NETWORK",Oe.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS",Oe.ERR_DEPRECATED="ERR_DEPRECATED",Oe.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE",Oe.ERR_BAD_REQUEST="ERR_BAD_REQUEST",Oe.ERR_CANCELED="ERR_CANCELED",Oe.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT",Oe.ERR_INVALID_URL="ERR_INVALID_URL",Oe.ERR_FORM_DATA_DEPTH_EXCEEDED="ERR_FORM_DATA_DEPTH_EXCEEDED";const CC=null;function rf(s){return K.isPlainObject(s)||K.isArray(s)}function vm(s){return K.endsWith(s,"[]")?s.slice(0,-2):s}function af(s,e,n){return s?s.concat(e).map(function(i,l){return i=vm(i),!n&&l?"["+i+"]":i}).join(n?".":""):e}function EC(s){return K.isArray(s)&&!s.some(rf)}const _C=K.toFlatObject(K,{},null,function(e){return/^is[A-Z]/.test(e)});function oc(s,e,n){if(!K.isObject(s))throw new TypeError("target must be an object");e=e||new FormData,n=K.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(A,L){return!K.isUndefined(L[A])});const r=n.metaTokens,i=n.visitor||y,l=n.dots,c=n.indexes,d=n.Blob||typeof Blob<"u"&&Blob,f=n.maxDepth===void 0?100:n.maxDepth,h=d&&K.isSpecCompliantForm(e);if(!K.isFunction(i))throw new TypeError("visitor must be a function");function m(x){if(x===null)return"";if(K.isDate(x))return x.toISOString();if(K.isBoolean(x))return x.toString();if(!h&&K.isBlob(x))throw new Oe("Blob is not supported. Use a Buffer instead.");return K.isArrayBuffer(x)||K.isTypedArray(x)?h&&typeof Blob=="function"?new Blob([x]):Buffer.from(x):x}function y(x,A,L){let $=x;if(K.isReactNative(e)&&K.isReactNativeBlob(x))return e.append(af(L,A,l),m(x)),!1;if(x&&!L&&typeof x=="object"){if(K.endsWith(A,"{}"))A=r?A:A.slice(0,-2),x=JSON.stringify(x);else if(K.isArray(x)&&EC(x)||(K.isFileList(x)||K.endsWith(A,"[]"))&&($=K.toArray(x)))return A=vm(A),$.forEach(function(O,P){!(K.isUndefined(O)||O===null)&&e.append(c===!0?af([A],P,l):c===null?A:A+"[]",m(O))}),!1}return rf(x)?!0:(e.append(af(L,A,l),m(x)),!1)}const S=[],v=Object.assign(_C,{defaultVisitor:y,convertValue:m,isVisitable:rf});function _(x,A,L=0){if(!K.isUndefined(x)){if(L>f)throw new Oe("Object is too deeply nested ("+L+" levels). Max depth: "+f,Oe.ERR_FORM_DATA_DEPTH_EXCEEDED);if(S.indexOf(x)!==-1)throw Error("Circular reference detected in "+A.join("."));S.push(x),K.forEach(x,function(k,O){(!(K.isUndefined(k)||k===null)&&i.call(e,k,K.isString(O)?O.trim():O,A,v))===!0&&_(k,A?A.concat(O):[O],L+1)}),S.pop()}}if(!K.isObject(s))throw new TypeError("data must be an object");return _(s),e}function Sm(s){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"};return encodeURIComponent(s).replace(/[!'()~]|%20/g,function(r){return e[r]})}function sf(s,e){this._pairs=[],s&&oc(s,this,e)}const wm=sf.prototype;wm.append=function(e,n){this._pairs.push([e,n])},wm.toString=function(e){const n=e?function(r){return e.call(this,r,Sm)}:Sm;return this._pairs.map(function(i){return n(i[0])+"="+n(i[1])},"").join("&")};function AC(s){return encodeURIComponent(s).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function Cm(s,e,n){if(!e)return s;const r=n&&n.encode||AC,i=K.isFunction(n)?{serialize:n}:n,l=i&&i.serialize;let c;if(l?c=l(e,i):c=K.isURLSearchParams(e)?e.toString():new sf(e,i).toString(r),c){const d=s.indexOf("#");d!==-1&&(s=s.slice(0,d)),s+=(s.indexOf("?")===-1?"?":"&")+c}return s}class Em{constructor(){this.handlers=[]}use(e,n,r){return this.handlers.push({fulfilled:e,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){K.forEach(this.handlers,function(r){r!==null&&e(r)})}}const of={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0},xC={isBrowser:!0,classes:{URLSearchParams:typeof URLSearchParams<"u"?URLSearchParams:sf,FormData:typeof FormData<"u"?FormData:null,Blob:typeof Blob<"u"?Blob:null},protocols:["http","https","file","blob","url","data"]},lf=typeof window<"u"&&typeof document<"u",cf=typeof navigator=="object"&&navigator||void 0,TC=lf&&(!cf||["ReactNative","NativeScript","NS"].indexOf(cf.product)<0),kC=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",RC=lf&&window.location.href||"http://localhost",En={...Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:lf,hasStandardBrowserEnv:TC,hasStandardBrowserWebWorkerEnv:kC,navigator:cf,origin:RC},Symbol.toStringTag,{value:"Module"})),...xC};function DC(s,e){return oc(s,new En.classes.URLSearchParams,{visitor:function(n,r,i,l){return En.isNode&&K.isBuffer(n)?(this.append(r,n.toString("base64")),!1):l.defaultVisitor.apply(this,arguments)},...e})}function OC(s){return K.matchAll(/\w+|\[(\w*)]/g,s).map(e=>e[0]==="[]"?"":e[1]||e[0])}function LC(s){const e={},n=Object.keys(s);let r;const i=n.length;let l;for(r=0;r<i;r++)l=n[r],e[l]=s[l];return e}function _m(s){function e(n,r,i,l){let c=n[l++];if(c==="__proto__")return!0;const d=Number.isFinite(+c),f=l>=n.length;return c=!c&&K.isArray(i)?i.length:c,f?(K.hasOwnProp(i,c)?i[c]=K.isArray(i[c])?i[c].concat(r):[i[c],r]:i[c]=r,!d):((!K.hasOwnProp(i,c)||!K.isObject(i[c]))&&(i[c]=[]),e(n,r,i[c],l)&&K.isArray(i[c])&&(i[c]=LC(i[c])),!d)}if(K.isFormData(s)&&K.isFunction(s.entries)){const n={};return K.forEachEntry(s,(r,i)=>{e(OC(r),i,n,0)}),n}return null}const ds=(s,e)=>s!=null&&K.hasOwnProp(s,e)?s[e]:void 0;function $C(s,e,n){if(K.isString(s))try{return(e||JSON.parse)(s),K.trim(s)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(s)}const _o={transitional:of,adapter:["xhr","http","fetch"],transformRequest:[function(e,n){const r=n.getContentType()||"",i=r.indexOf("application/json")>-1,l=K.isObject(e);if(l&&K.isHTMLForm(e)&&(e=new FormData(e)),K.isFormData(e))return i?JSON.stringify(_m(e)):e;if(K.isArrayBuffer(e)||K.isBuffer(e)||K.isStream(e)||K.isFile(e)||K.isBlob(e)||K.isReadableStream(e))return e;if(K.isArrayBufferView(e))return e.buffer;if(K.isURLSearchParams(e))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let d;if(l){const f=ds(this,"formSerializer");if(r.indexOf("application/x-www-form-urlencoded")>-1)return DC(e,f).toString();if((d=K.isFileList(e))||r.indexOf("multipart/form-data")>-1){const h=ds(this,"env"),m=h&&h.FormData;return oc(d?{"files[]":e}:e,m&&new m,f)}}return l||i?(n.setContentType("application/json",!1),$C(e)):e}],transformResponse:[function(e){const n=ds(this,"transitional")||_o.transitional,r=n&&n.forcedJSONParsing,i=ds(this,"responseType"),l=i==="json";if(K.isResponse(e)||K.isReadableStream(e))return e;if(e&&K.isString(e)&&(r&&!i||l)){const d=!(n&&n.silentJSONParsing)&&l;try{return JSON.parse(e,ds(this,"parseReviver"))}catch(f){if(d)throw f.name==="SyntaxError"?Oe.from(f,Oe.ERR_BAD_RESPONSE,this,null,ds(this,"response")):f}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:En.classes.FormData,Blob:En.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};K.forEach(["delete","get","head","post","put","patch","query"],s=>{_o.headers[s]={}});function uf(s,e){const n=this||_o,r=e||n,i=Rn.from(r.headers);let l=r.data;return K.forEach(s,function(d){l=d.call(n,l,i.normalize(),e?e.status:void 0)}),i.normalize(),l}function Am(s){return!!(s&&s.__CANCEL__)}let Ao=class extends Oe{constructor(e,n,r){super(e??"canceled",Oe.ERR_CANCELED,n,r),this.name="CanceledError",this.__CANCEL__=!0}};function xm(s,e,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?s(n):e(new Oe("Request failed with status code "+n.status,n.status>=400&&n.status<500?Oe.ERR_BAD_REQUEST:Oe.ERR_BAD_RESPONSE,n.config,n.request,n))}function MC(s){const e=/^([-+\w]{1,25}):(?:\/\/)?/.exec(s);return e&&e[1]||""}function NC(s,e){s=s||10;const n=new Array(s),r=new Array(s);let i=0,l=0,c;return e=e!==void 0?e:1e3,function(f){const h=Date.now(),m=r[l];c||(c=h),n[i]=f,r[i]=h;let y=l,S=0;for(;y!==i;)S+=n[y++],y=y%s;if(i=(i+1)%s,i===l&&(l=(l+1)%s),h-c<e)return;const v=m&&h-m;return v?Math.round(S*1e3/v):void 0}}function IC(s,e){let n=0,r=1e3/e,i,l;const c=(h,m=Date.now())=>{n=m,i=null,l&&(clearTimeout(l),l=null),s(...h)};return[(...h)=>{const m=Date.now(),y=m-n;y>=r?c(h,m):(i=h,l||(l=setTimeout(()=>{l=null,c(i)},r-y)))},()=>i&&c(i)]}const lc=(s,e,n=3)=>{let r=0;const i=NC(50,250);return IC(l=>{if(!l||typeof l.loaded!="number")return;const c=l.loaded,d=l.lengthComputable?l.total:void 0,f=d!=null?Math.min(c,d):c,h=Math.max(0,f-r),m=i(h);r=Math.max(r,f);const y={loaded:f,total:d,progress:d?f/d:void 0,bytes:h,rate:m||void 0,estimated:m&&d?(d-f)/m:void 0,event:l,lengthComputable:d!=null,[e?"download":"upload"]:!0};s(y)},n)},Tm=(s,e)=>{const n=s!=null;return[r=>e[0]({lengthComputable:n,total:s,loaded:r}),e[1]]},km=s=>(...e)=>K.asap(()=>s(...e)),jC=En.hasStandardBrowserEnv?((s,e)=>n=>(n=new URL(n,En.origin),s.protocol===n.protocol&&s.host===n.host&&(e||s.port===n.port)))(new URL(En.origin),En.navigator&&/(msie|trident)/i.test(En.navigator.userAgent)):()=>!0,HC=En.hasStandardBrowserEnv?{write(s,e,n,r,i,l,c){if(typeof document>"u")return;const d=[`${s}=${encodeURIComponent(e)}`];K.isNumber(n)&&d.push(`expires=${new Date(n).toUTCString()}`),K.isString(r)&&d.push(`path=${r}`),K.isString(i)&&d.push(`domain=${i}`),l===!0&&d.push("secure"),K.isString(c)&&d.push(`SameSite=${c}`),document.cookie=d.join("; ")},read(s){if(typeof document>"u")return null;const e=document.cookie.split(";");for(let n=0;n<e.length;n++){const r=e[n].replace(/^\s+/,""),i=r.indexOf("=");if(i!==-1&&r.slice(0,i)===s)return decodeURIComponent(r.slice(i+1))}return null},remove(s){this.write(s,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function zC(s){return typeof s!="string"?!1:/^([a-z][a-z\d+\-.]*:)?\/\//i.test(s)}function UC(s,e){return e?s.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):s}function Rm(s,e,n){let r=!zC(e);return s&&(r||n===!1)?UC(s,e):e}const Dm=s=>s instanceof Rn?{...s}:s;function Ci(s,e){e=e||{};const n=Object.create(null);Object.defineProperty(n,"hasOwnProperty",{__proto__:null,value:Object.prototype.hasOwnProperty,enumerable:!1,writable:!0,configurable:!0});function r(h,m,y,S){return K.isPlainObject(h)&&K.isPlainObject(m)?K.merge.call({caseless:S},h,m):K.isPlainObject(m)?K.merge({},m):K.isArray(m)?m.slice():m}function i(h,m,y,S){if(K.isUndefined(m)){if(!K.isUndefined(h))return r(void 0,h,y,S)}else return r(h,m,y,S)}function l(h,m){if(!K.isUndefined(m))return r(void 0,m)}function c(h,m){if(K.isUndefined(m)){if(!K.isUndefined(h))return r(void 0,h)}else return r(void 0,m)}function d(h,m,y){if(K.hasOwnProp(e,y))return r(h,m);if(K.hasOwnProp(s,y))return r(void 0,h)}const f={url:l,method:l,data:l,baseURL:c,transformRequest:c,transformResponse:c,paramsSerializer:c,timeout:c,timeoutMessage:c,withCredentials:c,withXSRFToken:c,adapter:c,responseType:c,xsrfCookieName:c,xsrfHeaderName:c,onUploadProgress:c,onDownloadProgress:c,decompress:c,maxContentLength:c,maxBodyLength:c,beforeRedirect:c,transport:c,httpAgent:c,httpsAgent:c,cancelToken:c,socketPath:c,allowedSocketPaths:c,responseEncoding:c,validateStatus:d,headers:(h,m,y)=>i(Dm(h),Dm(m),y,!0)};return K.forEach(Object.keys({...s,...e}),function(m){if(m==="__proto__"||m==="constructor"||m==="prototype")return;const y=K.hasOwnProp(f,m)?f[m]:i,S=K.hasOwnProp(s,m)?s[m]:void 0,v=K.hasOwnProp(e,m)?e[m]:void 0,_=y(S,v,m);K.isUndefined(_)&&y!==d||(n[m]=_)}),n}const PC=["content-type","content-length"];function BC(s,e,n){if(n!=="content-only"){s.set(e);return}Object.entries(e).forEach(([r,i])=>{PC.includes(r.toLowerCase())&&s.set(r,i)})}const qC=s=>encodeURIComponent(s).replace(/%([0-9A-F]{2})/gi,(e,n)=>String.fromCharCode(parseInt(n,16))),Om=s=>{const e=Ci({},s),n=S=>K.hasOwnProp(e,S)?e[S]:void 0,r=n("data");let i=n("withXSRFToken");const l=n("xsrfHeaderName"),c=n("xsrfCookieName");let d=n("headers");const f=n("auth"),h=n("baseURL"),m=n("allowAbsoluteUrls"),y=n("url");if(e.headers=d=Rn.from(d),e.url=Cm(Rm(h,y,m),s.params,s.paramsSerializer),f&&d.set("Authorization","Basic "+btoa((f.username||"")+":"+(f.password?qC(f.password):""))),K.isFormData(r)&&(En.hasStandardBrowserEnv||En.hasStandardBrowserWebWorkerEnv?d.setContentType(void 0):K.isFunction(r.getHeaders)&&BC(d,r.getHeaders(),n("formDataHeaderPolicy"))),En.hasStandardBrowserEnv&&(K.isFunction(i)&&(i=i(e)),i===!0||i==null&&jC(e.url))){const v=l&&c&&HC.read(c);v&&d.set(l,v)}return e},GC=typeof XMLHttpRequest<"u"&&function(s){return new Promise(function(n,r){const i=Om(s);let l=i.data;const c=Rn.from(i.headers).normalize();let{responseType:d,onUploadProgress:f,onDownloadProgress:h}=i,m,y,S,v,_;function x(){v&&v(),_&&_(),i.cancelToken&&i.cancelToken.unsubscribe(m),i.signal&&i.signal.removeEventListener("abort",m)}let A=new XMLHttpRequest;A.open(i.method.toUpperCase(),i.url,!0),A.timeout=i.timeout;function L(){if(!A)return;const k=Rn.from("getAllResponseHeaders"in A&&A.getAllResponseHeaders()),P={data:!d||d==="text"||d==="json"?A.responseText:A.response,status:A.status,statusText:A.statusText,headers:k,config:s,request:A};xm(function(B){n(B),x()},function(B){r(B),x()},P),A=null}"onloadend"in A?A.onloadend=L:A.onreadystatechange=function(){!A||A.readyState!==4||A.status===0&&!(A.responseURL&&A.responseURL.startsWith("file:"))||setTimeout(L)},A.onabort=function(){A&&(r(new Oe("Request aborted",Oe.ECONNABORTED,s,A)),x(),A=null)},A.onerror=function(O){const P=O&&O.message?O.message:"Network Error",G=new Oe(P,Oe.ERR_NETWORK,s,A);G.event=O||null,r(G),x(),A=null},A.ontimeout=function(){let O=i.timeout?"timeout of "+i.timeout+"ms exceeded":"timeout exceeded";const P=i.transitional||of;i.timeoutErrorMessage&&(O=i.timeoutErrorMessage),r(new Oe(O,P.clarifyTimeoutError?Oe.ETIMEDOUT:Oe.ECONNABORTED,s,A)),x(),A=null},l===void 0&&c.setContentType(null),"setRequestHeader"in A&&K.forEach(ym(c),function(O,P){A.setRequestHeader(P,O)}),K.isUndefined(i.withCredentials)||(A.withCredentials=!!i.withCredentials),d&&d!=="json"&&(A.responseType=i.responseType),h&&([S,_]=lc(h,!0),A.addEventListener("progress",S)),f&&A.upload&&([y,v]=lc(f),A.upload.addEventListener("progress",y),A.upload.addEventListener("loadend",v)),(i.cancelToken||i.signal)&&(m=k=>{A&&(r(!k||k.type?new Ao(null,s,A):k),A.abort(),x(),A=null)},i.cancelToken&&i.cancelToken.subscribe(m),i.signal&&(i.signal.aborted?m():i.signal.addEventListener("abort",m)));const $=MC(i.url);if($&&!En.protocols.includes($)){r(new Oe("Unsupported protocol "+$+":",Oe.ERR_BAD_REQUEST,s));return}A.send(l||null)})},FC=(s,e)=>{if(s=s?s.filter(Boolean):[],!e&&!s.length)return;const n=new AbortController;let r=!1;const i=function(f){if(!r){r=!0,c();const h=f instanceof Error?f:this.reason;n.abort(h instanceof Oe?h:new Ao(h instanceof Error?h.message:h))}};let l=e&&setTimeout(()=>{l=null,i(new Oe(`timeout of ${e}ms exceeded`,Oe.ETIMEDOUT))},e);const c=()=>{s&&(l&&clearTimeout(l),l=null,s.forEach(f=>{f.unsubscribe?f.unsubscribe(i):f.removeEventListener("abort",i)}),s=null)};s.forEach(f=>f.addEventListener("abort",i));const{signal:d}=n;return d.unsubscribe=()=>K.asap(c),d},VC=function*(s,e){let n=s.byteLength;if(n<e){yield s;return}let r=0,i;for(;r<n;)i=r+e,yield s.slice(r,i),r=i},KC=async function*(s,e){for await(const n of WC(s))yield*VC(n,e)},WC=async function*(s){if(s[Symbol.asyncIterator]){yield*s;return}const e=s.getReader();try{for(;;){const{done:n,value:r}=await e.read();if(n)break;yield r}}finally{await e.cancel()}},Lm=(s,e,n,r)=>{const i=KC(s,e);let l=0,c,d=f=>{c||(c=!0,r&&r(f))};return new ReadableStream({async pull(f){try{const{done:h,value:m}=await i.next();if(h){d(),f.close();return}let y=m.byteLength;if(n){let S=l+=y;n(S)}f.enqueue(new Uint8Array(m))}catch(h){throw d(h),h}},cancel(f){return d(f),i.return()}},{highWaterMark:2})};function YC(s){if(!s||typeof s!="string"||!s.startsWith("data:"))return 0;const e=s.indexOf(",");if(e<0)return 0;const n=s.slice(5,e),r=s.slice(e+1);if(/;base64/i.test(n)){let c=r.length;const d=r.length;for(let v=0;v<d;v++)if(r.charCodeAt(v)===37&&v+2<d){const _=r.charCodeAt(v+1),x=r.charCodeAt(v+2);(_>=48&&_<=57||_>=65&&_<=70||_>=97&&_<=102)&&(x>=48&&x<=57||x>=65&&x<=70||x>=97&&x<=102)&&(c-=2,v+=2)}let f=0,h=d-1;const m=v=>v>=2&&r.charCodeAt(v-2)===37&&r.charCodeAt(v-1)===51&&(r.charCodeAt(v)===68||r.charCodeAt(v)===100);h>=0&&(r.charCodeAt(h)===61?(f++,h--):m(h)&&(f++,h-=3)),f===1&&h>=0&&(r.charCodeAt(h)===61||m(h))&&f++;const S=Math.floor(c/4)*3-(f||0);return S>0?S:0}if(typeof Buffer<"u"&&typeof Buffer.byteLength=="function")return Buffer.byteLength(r,"utf8");let l=0;for(let c=0,d=r.length;c<d;c++){const f=r.charCodeAt(c);if(f<128)l+=1;else if(f<2048)l+=2;else if(f>=55296&&f<=56319&&c+1<d){const h=r.charCodeAt(c+1);h>=56320&&h<=57343?(l+=4,c++):l+=3}else l+=3}return l}const df="1.16.1",$m=64*1024,{isFunction:cc}=K,Mm=(s,...e)=>{try{return!!s(...e)}catch{return!1}},XC=s=>{const e=K.global!==void 0&&K.global!==null?K.global:globalThis,{ReadableStream:n,TextEncoder:r}=e;s=K.merge.call({skipUndefined:!0},{Request:e.Request,Response:e.Response},s);const{fetch:i,Request:l,Response:c}=s,d=i?cc(i):typeof fetch=="function",f=cc(l),h=cc(c);if(!d)return!1;const m=d&&cc(n),y=d&&(typeof r=="function"?(L=>$=>L.encode($))(new r):async L=>new Uint8Array(await new l(L).arrayBuffer())),S=f&&m&&Mm(()=>{let L=!1;const $=new l(En.origin,{body:new n,method:"POST",get duplex(){return L=!0,"half"}}),k=$.headers.has("Content-Type");return $.body!=null&&$.body.cancel(),L&&!k}),v=h&&m&&Mm(()=>K.isReadableStream(new c("").body)),_={stream:v&&(L=>L.body)};d&&["text","arrayBuffer","blob","formData","stream"].forEach(L=>{!_[L]&&(_[L]=($,k)=>{let O=$&&$[L];if(O)return O.call($);throw new Oe(`Response type '${L}' is not supported`,Oe.ERR_NOT_SUPPORT,k)})});const x=async L=>{if(L==null)return 0;if(K.isBlob(L))return L.size;if(K.isSpecCompliantForm(L))return(await new l(En.origin,{method:"POST",body:L}).arrayBuffer()).byteLength;if(K.isArrayBufferView(L)||K.isArrayBuffer(L))return L.byteLength;if(K.isURLSearchParams(L)&&(L=L+""),K.isString(L))return(await y(L)).byteLength},A=async(L,$)=>{const k=K.toFiniteNumber(L.getContentLength());return k??x($)};return async L=>{let{url:$,method:k,data:O,signal:P,cancelToken:G,timeout:B,onDownloadProgress:W,onUploadProgress:pe,responseType:Se,headers:we,withCredentials:Ue="same-origin",fetchOptions:Fe,maxContentLength:qe,maxBodyLength:wt}=Om(L);const J=K.isNumber(qe)&&qe>-1,fe=K.isNumber(wt)&&wt>-1;let Le=i||fetch;Se=Se?(Se+"").toLowerCase():"text";let Z=FC([P,G&&G.toAbortSignal()],B),ge=null;const H=Z&&Z.unsubscribe&&(()=>{Z.unsubscribe()});let T;try{if(J&&typeof $=="string"&&$.startsWith("data:")&&YC($)>qe)throw new Oe("maxContentLength size of "+qe+" exceeded",Oe.ERR_BAD_RESPONSE,L,ge);if(fe&&k!=="get"&&k!=="head"){const _e=await A(we,O);if(typeof _e=="number"&&isFinite(_e)&&_e>wt)throw new Oe("Request body larger than maxBodyLength limit",Oe.ERR_BAD_REQUEST,L,ge)}if(pe&&S&&k!=="get"&&k!=="head"&&(T=await A(we,O))!==0){let _e=new l($,{method:"POST",body:O,duplex:"half"}),Te;if(K.isFormData(O)&&(Te=_e.headers.get("content-type"))&&we.setContentType(Te),_e.body){const[Me,pt]=Tm(T,lc(km(pe)));O=Lm(_e.body,$m,Me,pt)}}K.isString(Ue)||(Ue=Ue?"include":"omit");const ce=f&&"credentials"in l.prototype;if(K.isFormData(O)){const _e=we.getContentType();_e&&/^multipart\/form-data/i.test(_e)&&!/boundary=/i.test(_e)&&we.delete("content-type")}we.set("User-Agent","axios/"+df,!1);const de={...Fe,signal:Z,method:k.toUpperCase(),headers:ym(we.normalize()),body:O,duplex:"half",credentials:ce?Ue:void 0};ge=f&&new l($,de);let be=await(f?Le(ge,Fe):Le($,de));if(J){const _e=K.toFiniteNumber(be.headers.get("content-length"));if(_e!=null&&_e>qe)throw new Oe("maxContentLength size of "+qe+" exceeded",Oe.ERR_BAD_RESPONSE,L,ge)}const ie=v&&(Se==="stream"||Se==="response");if(v&&be.body&&(W||J||ie&&H)){const _e={};["status","statusText","headers"].forEach(ht=>{_e[ht]=be[ht]});const Te=K.toFiniteNumber(be.headers.get("content-length")),[Me,pt]=W&&Tm(Te,lc(km(W),!0))||[];let Ct=0;const Ot=ht=>{if(J&&(Ct=ht,Ct>qe))throw new Oe("maxContentLength size of "+qe+" exceeded",Oe.ERR_BAD_RESPONSE,L,ge);Me&&Me(ht)};be=new c(Lm(be.body,$m,Ot,()=>{pt&&pt(),H&&H()}),_e)}Se=Se||"text";let xe=await _[K.findKey(_,Se)||"text"](be,L);if(J&&!v&&!ie){let _e;if(xe!=null&&(typeof xe.byteLength=="number"?_e=xe.byteLength:typeof xe.size=="number"?_e=xe.size:typeof xe=="string"&&(_e=typeof r=="function"?new r().encode(xe).byteLength:xe.length)),typeof _e=="number"&&_e>qe)throw new Oe("maxContentLength size of "+qe+" exceeded",Oe.ERR_BAD_RESPONSE,L,ge)}return!ie&&H&&H(),await new Promise((_e,Te)=>{xm(_e,Te,{data:xe,headers:Rn.from(be.headers),status:be.status,statusText:be.statusText,config:L,request:ge})})}catch(ce){if(H&&H(),Z&&Z.aborted&&Z.reason instanceof Oe){const de=Z.reason;throw de.config=L,ge&&(de.request=ge),ce!==de&&(de.cause=ce),de}throw ce&&ce.name==="TypeError"&&/Load failed|fetch/i.test(ce.message)?Object.assign(new Oe("Network Error",Oe.ERR_NETWORK,L,ge,ce&&ce.response),{cause:ce.cause||ce}):Oe.from(ce,ce&&ce.code,L,ge,ce&&ce.response)}}},JC=new Map,Nm=s=>{let e=s&&s.env||{};const{fetch:n,Request:r,Response:i}=e,l=[r,i,n];let c=l.length,d=c,f,h,m=JC;for(;d--;)f=l[d],h=m.get(f),h===void 0&&m.set(f,h=d?new Map:XC(e)),m=h;return h};Nm();const ff={http:CC,xhr:GC,fetch:{get:Nm}};K.forEach(ff,(s,e)=>{if(s){try{Object.defineProperty(s,"name",{__proto__:null,value:e})}catch{}Object.defineProperty(s,"adapterName",{__proto__:null,value:e})}});const Im=s=>`- ${s}`,QC=s=>K.isFunction(s)||s===null||s===!1;function ZC(s,e){s=K.isArray(s)?s:[s];const{length:n}=s;let r,i;const l={};for(let c=0;c<n;c++){r=s[c];let d;if(i=r,!QC(r)&&(i=ff[(d=String(r)).toLowerCase()],i===void 0))throw new Oe(`Unknown adapter '${d}'`);if(i&&(K.isFunction(i)||(i=i.get(e))))break;l[d||"#"+c]=i}if(!i){const c=Object.entries(l).map(([f,h])=>`adapter ${f} `+(h===!1?"is not supported by the environment":"is not available in the build"));let d=n?c.length>1?`since :
|
||
`+c.map(Im).join(`
|
||
`):" "+Im(c[0]):"as no adapter specified";throw new Oe("There is no suitable adapter to dispatch the request "+d,"ERR_NOT_SUPPORT")}return i}const jm={getAdapter:ZC,adapters:ff};function hf(s){if(s.cancelToken&&s.cancelToken.throwIfRequested(),s.signal&&s.signal.aborted)throw new Ao(null,s)}function Hm(s){return hf(s),s.headers=Rn.from(s.headers),s.data=uf.call(s,s.transformRequest),["post","put","patch"].indexOf(s.method)!==-1&&s.headers.setContentType("application/x-www-form-urlencoded",!1),jm.getAdapter(s.adapter||_o.adapter,s)(s).then(function(r){hf(s),s.response=r;try{r.data=uf.call(s,s.transformResponse,r)}finally{delete s.response}return r.headers=Rn.from(r.headers),r},function(r){if(!Am(r)&&(hf(s),r&&r.response)){s.response=r.response;try{r.response.data=uf.call(s,s.transformResponse,r.response)}finally{delete s.response}r.response.headers=Rn.from(r.response.headers)}return Promise.reject(r)})}const uc={};["object","boolean","number","function","string","symbol"].forEach((s,e)=>{uc[s]=function(r){return typeof r===s||"a"+(e<1?"n ":" ")+s}});const zm={};uc.transitional=function(e,n,r){function i(l,c){return"[Axios v"+df+"] Transitional option '"+l+"'"+c+(r?". "+r:"")}return(l,c,d)=>{if(e===!1)throw new Oe(i(c," has been removed"+(n?" in "+n:"")),Oe.ERR_DEPRECATED);return n&&!zm[c]&&(zm[c]=!0,console.warn(i(c," has been deprecated since v"+n+" and will be removed in the near future"))),e?e(l,c,d):!0}},uc.spelling=function(e){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${e}`),!0)};function eE(s,e,n){if(typeof s!="object")throw new Oe("options must be an object",Oe.ERR_BAD_OPTION_VALUE);const r=Object.keys(s);let i=r.length;for(;i-- >0;){const l=r[i],c=Object.prototype.hasOwnProperty.call(e,l)?e[l]:void 0;if(c){const d=s[l],f=d===void 0||c(d,l,s);if(f!==!0)throw new Oe("option "+l+" must be "+f,Oe.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new Oe("Unknown option "+l,Oe.ERR_BAD_OPTION)}}const dc={assertOptions:eE,validators:uc},ar=dc.validators;let Ei=class{constructor(e){this.defaults=e||{},this.interceptors={request:new Em,response:new Em}}async request(e,n){try{return await this._request(e,n)}catch(r){if(r instanceof Error){let i={};Error.captureStackTrace?Error.captureStackTrace(i):i=new Error;const l=(()=>{if(!i.stack)return"";const c=i.stack.indexOf(`
|
||
`);return c===-1?"":i.stack.slice(c+1)})();try{if(!r.stack)r.stack=l;else if(l){const c=l.indexOf(`
|
||
`),d=c===-1?-1:l.indexOf(`
|
||
`,c+1),f=d===-1?"":l.slice(d+1);String(r.stack).endsWith(f)||(r.stack+=`
|
||
`+l)}}catch{}}throw r}}_request(e,n){typeof e=="string"?(n=n||{},n.url=e):n=e||{},n=Ci(this.defaults,n);const{transitional:r,paramsSerializer:i,headers:l}=n;r!==void 0&&dc.assertOptions(r,{silentJSONParsing:ar.transitional(ar.boolean),forcedJSONParsing:ar.transitional(ar.boolean),clarifyTimeoutError:ar.transitional(ar.boolean),legacyInterceptorReqResOrdering:ar.transitional(ar.boolean)},!1),i!=null&&(K.isFunction(i)?n.paramsSerializer={serialize:i}:dc.assertOptions(i,{encode:ar.function,serialize:ar.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),dc.assertOptions(n,{baseUrl:ar.spelling("baseURL"),withXsrfToken:ar.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let c=l&&K.merge(l.common,l[n.method]);l&&K.forEach(["delete","get","head","post","put","patch","query","common"],_=>{delete l[_]}),n.headers=Rn.concat(c,l);const d=[];let f=!0;this.interceptors.request.forEach(function(x){if(typeof x.runWhen=="function"&&x.runWhen(n)===!1)return;f=f&&x.synchronous;const A=n.transitional||of;A&&A.legacyInterceptorReqResOrdering?d.unshift(x.fulfilled,x.rejected):d.push(x.fulfilled,x.rejected)});const h=[];this.interceptors.response.forEach(function(x){h.push(x.fulfilled,x.rejected)});let m,y=0,S;if(!f){const _=[Hm.bind(this),void 0];for(_.unshift(...d),_.push(...h),S=_.length,m=Promise.resolve(n);y<S;)m=m.then(_[y++],_[y++]);return m}S=d.length;let v=n;for(;y<S;){const _=d[y++],x=d[y++];try{v=_(v)}catch(A){x.call(this,A);break}}try{m=Hm.call(this,v)}catch(_){return Promise.reject(_)}for(y=0,S=h.length;y<S;)m=m.then(h[y++],h[y++]);return m}getUri(e){e=Ci(this.defaults,e);const n=Rm(e.baseURL,e.url,e.allowAbsoluteUrls);return Cm(n,e.params,e.paramsSerializer)}};K.forEach(["delete","get","head","options"],function(e){Ei.prototype[e]=function(n,r){return this.request(Ci(r||{},{method:e,url:n,data:(r||{}).data}))}}),K.forEach(["post","put","patch","query"],function(e){function n(r){return function(l,c,d){return this.request(Ci(d||{},{method:e,headers:r?{"Content-Type":"multipart/form-data"}:{},url:l,data:c}))}}Ei.prototype[e]=n(),e!=="query"&&(Ei.prototype[e+"Form"]=n(!0))});let tE=class Rw{constructor(e){if(typeof e!="function")throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(l){n=l});const r=this;this.promise.then(i=>{if(!r._listeners)return;let l=r._listeners.length;for(;l-- >0;)r._listeners[l](i);r._listeners=null}),this.promise.then=i=>{let l;const c=new Promise(d=>{r.subscribe(d),l=d}).then(i);return c.cancel=function(){r.unsubscribe(l)},c},e(function(l,c,d){r.reason||(r.reason=new Ao(l,c,d),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const n=this._listeners.indexOf(e);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const e=new AbortController,n=r=>{e.abort(r)};return this.subscribe(n),e.signal.unsubscribe=()=>this.unsubscribe(n),e.signal}static source(){let e;return{token:new Rw(function(i){e=i}),cancel:e}}};function nE(s){return function(n){return s.apply(null,n)}}function rE(s){return K.isObject(s)&&s.isAxiosError===!0}const pf={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(pf).forEach(([s,e])=>{pf[e]=s});function Um(s){const e=new Ei(s),n=om(Ei.prototype.request,e);return K.extend(n,Ei.prototype,e,{allOwnKeys:!0}),K.extend(n,e,null,{allOwnKeys:!0}),n.create=function(i){return Um(Ci(s,i))},n}const Vt=Um(_o);Vt.Axios=Ei,Vt.CanceledError=Ao,Vt.CancelToken=tE,Vt.isCancel=Am,Vt.VERSION=df,Vt.toFormData=oc,Vt.AxiosError=Oe,Vt.Cancel=Vt.CanceledError,Vt.all=function(e){return Promise.all(e)},Vt.spread=nE,Vt.isAxiosError=rE,Vt.mergeConfig=Ci,Vt.AxiosHeaders=Rn,Vt.formToJSON=s=>_m(K.isHTMLForm(s)?new FormData(s):s),Vt.getAdapter=jm.getAdapter,Vt.HttpStatusCode=pf,Vt.default=Vt;const{Axios:Nk,AxiosError:Ik,CanceledError:jk,isCancel:Hk,CancelToken:zk,VERSION:Uk,all:Pk,Cancel:Bk,isAxiosError:qk,spread:Gk,toFormData:Fk,AxiosHeaders:Vk,HttpStatusCode:Kk,formToJSON:Wk,getAdapter:Yk,mergeConfig:Xk,create:Jk}=Vt,gf="g7.identity.redirectStash",fc=dt("IdentityGuardInterceptor");class St{static setLauncher(e){this.launcher=e}static hasLauncher(){return this.launcher!==null}static markDomainNoticeShown(){this.domainNoticeShown=!0}static consumeDomainNoticeShown(){const e=this.domainNoticeShown;return this.domainNoticeShown=!1,e}static resolveDeferred(e){const n=this.deferredResolver;if(!n){fc.warn("IdentityGuardInterceptor.resolveDeferred 호출됐지만 대기 중인 launcher 가 없습니다. 모달이 launcher 외부에서 열렸는지 확인하세요.");return}this.deferredResolver=null,n(e)}static createDeferred(){if(this.deferredResolver){const e=this.deferredResolver;this.deferredResolver=null,e({status:"cancelled"})}return new Promise(e=>{this.deferredResolver=e})}static isIdentityRequired(e,n){return e===428&&typeof n=="object"&&n!==null&&n.error_code==="identity_verification_required"}static async handle(e,n,r){this.domainNoticeShown=!1;const i=this.launcher??iE,c=!!(r&&(r.email||r.phone))?{...e.verification,target:r}:e.verification,d=await i(c);if(d.status!=="verified")return null;const f=c.return_request;if(!f)return null;const h=aE(f.url,d.token);return fetch(h,{method:f.method,headers:n?.headers??{Accept:"application/json","Content-Type":"application/json"},body:n?.body,credentials:n?.credentials??"same-origin"})}static redirectExternally(e){const n=e.redirect_url;if(!n)return fc.error("redirectExternally 호출 시 verification.redirect_url 이 없습니다. payload:",e),Promise.resolve({status:"failed",failureCode:"MISSING_REDIRECT_URL",reason:"verification.redirect_url is required for external_redirect flow"});if(typeof window<"u"){const r={return_url:window.location.href,payload:e,stashed_at:Date.now()};try{window.sessionStorage?.setItem(gf,JSON.stringify(r))}catch(i){fc.warn("sessionStorage 접근 실패 — stash 없이 redirect 합니다.",i)}window.location.href=n}return new Promise(()=>{})}static reset(){if(this.deferredResolver){const e=this.deferredResolver;this.deferredResolver=null;try{e({status:"cancelled"})}catch{}}this.launcher=null,this.domainNoticeShown=!1}}M(St,"launcher",null),M(St,"deferredResolver",null),M(St,"domainNoticeShown",!1);function aE(s,e){if(!e)return s;try{const n=typeof window<"u"?window.location.origin:"http://localhost",r=new URL(s,n);return r.searchParams.set("verification_token",e),/^https?:\/\//i.test(s)?r.toString():`${r.pathname}${r.search}${r.hash}`}catch{const n=s.includes("?")?"&":"?";return`${s}${n}verification_token=${encodeURIComponent(e)}`}}const iE=async s=>{if(typeof window>"u")return{status:"cancelled"};if(s.render_hint==="external_redirect"||s.redirect_url)return St.redirectExternally(s);const e=window.G7Core;if(!e?.dispatch)return console.error("[IdentityGuardInterceptor] defaultLauncher: G7Core 가 초기화되지 않아 본인인증 흐름을 시작할 수 없습니다."),{status:"failed",failureCode:"G7_NOT_READY"};try{await e.dispatch({handler:"toast",params:{message:"본인 확인이 필요합니다.",variant:"warning"}})}catch{}const n=window.location.href,r={return_url:n,payload:s,stashed_at:Date.now()};try{window.sessionStorage?.setItem(gf,JSON.stringify(r))}catch{}const i=`/identity/challenge?return=${encodeURIComponent(n)}`;try{await e.dispatch({handler:"navigate",params:{path:i}})}catch(l){fc.warn("navigate 실패 — window.location 으로 폴백",l),window.location.href=i}return new Promise(()=>{})},sE=dt("ApiClient");function mf(){return typeof window<"u"&&window.__G7_DEVTOOLS__?window.__G7_DEVTOOLS__:null}class oE{constructor(e={}){M(this,"client");M(this,"config");M(this,"TOKEN_KEY","auth_token");this.config={baseURL:e.baseURL||"/api",timeout:e.timeout||3e4,onTokenExpired:e.onTokenExpired,onUnauthorized:e.onUnauthorized,onError:e.onError},this.client=Vt.create({baseURL:this.config.baseURL,timeout:this.config.timeout,headers:{"Content-Type":"application/json",Accept:"application/json"},paramsSerializer:{serialize:n=>{const r=[];for(const[i,l]of Object.entries(n))if(l!=null)if(Array.isArray(l)){const c=i.endsWith("[]")?i:`${i}[]`;for(const d of l)r.push(`${encodeURIComponent(c)}=${encodeURIComponent(String(d))}`)}else r.push(`${encodeURIComponent(i)}=${encodeURIComponent(String(l))}`);return r.join("&")}}}),this.setupInterceptors()}setToken(e){typeof window<"u"&&localStorage.setItem(this.TOKEN_KEY,e)}getToken(){return typeof window<"u"?localStorage.getItem(this.TOKEN_KEY):null}removeToken(){typeof window<"u"&&localStorage.removeItem(this.TOKEN_KEY)}setupInterceptors(){this.client.interceptors.request.use(e=>{e.url?.startsWith("/api")&&e.baseURL==="/api"&&(e.baseURL="");const n=this.getToken();if(n&&e.headers&&!this.isCrossOriginRequest(e.url)&&(e.headers.Authorization=`Bearer ${n}`),typeof window<"u"&&e.headers){const i=localStorage.getItem("g7_locale");i&&(e.headers["Accept-Language"]=i)}const r=mf();if(r?.isEnabled()){const i=this.buildFullUrl(e),l=(e.method||"GET").toUpperCase(),c=r.trackRequest(i,l,{requestBody:e.data});e._devToolsRequestId=c}return e},e=>Promise.reject(e)),this.client.interceptors.response.use(e=>{const n=e.config,r=n._devToolsRequestId;if(r){const i=mf();i?.isEnabled()&&i.completeRequest(r,e.status,e.data),n._devToolsRequestId=null}return e},async e=>{const n=e.config,r=n?.url||"",l=["/auth/","/layouts/"].some(c=>r.includes(c));if(e.response?.status===401&&!n?._retry&&!l){if(n._retry=!0,await wr.getInstance().refreshToken()){const f=this.getToken();return f&&(n.headers.Authorization=`Bearer ${f}`),n._devToolsRequestId=null,this.client(n)}return this.completeDevToolsRequest(n,e),this.removeToken(),this.config.onUnauthorized&&this.config.onUnauthorized(),Promise.reject(e)}if(e.response?.status===401&&l)return this.completeDevToolsRequest(n,e),Promise.reject(e);if(St.isIdentityRequired(e.response?.status,e.response?.data)){this.completeDevToolsRequest(n,e);const c={},d=n?.headers??{};for(const[S,v]of Object.entries(d))typeof v=="string"&&(c[S]=v);let f;n?.data!==void 0&&n?.data!==null&&(f=typeof n.data=="string"?n.data:JSON.stringify(n.data),c["Content-Type"]=c["Content-Type"]??"application/json");const h=n?.identity_target,m=await St.handle(e.response.data,{headers:c,body:f,credentials:"same-origin"},h);if(!m)return Promise.reject(e);let y=null;try{y=await m.json()}catch{y=null}return m.ok?{...e.response,status:m.status,data:y}:Promise.reject(Object.assign(new Error("replay failed"),{response:{status:m.status,data:y}}))}return e.response?.status===403?(this.completeDevToolsRequest(n,e),this.callOnError(e),Promise.reject(e)):(this.completeDevToolsRequest(n,e),e.response&&this.callOnError(e),Promise.reject(e))})}async get(e,n){return(await this.client.get(e,n)).data}async post(e,n,r){return(await this.client.post(e,n,r)).data}async put(e,n,r){return(await this.client.put(e,n,r)).data}async patch(e,n,r){return(await this.client.patch(e,n,r)).data}async delete(e,n){return(await this.client.delete(e,n)).data}getInstance(){return this.client}setOnUnauthorized(e){this.config.onUnauthorized=e}setOnError(e){this.config.onError=e}completeDevToolsRequest(e,n){if(!e?._devToolsRequestId)return;const r=mf();if(!r?.isEnabled())return;const i=e._devToolsRequestId;e._devToolsRequestId=null,n.response?r.completeRequest(i,n.response.status,n.response.data):n.request?r.failRequest(i,n.message||"Network error"):r.failRequest(i,n.message||"Request error")}isCrossOriginRequest(e){if(!e||typeof window>"u"||!window.location||!/^(https?:)?\/\//i.test(e))return!1;try{return new URL(e,window.location.href).origin!==window.location.origin}catch{return!1}}buildFullUrl(e){let n=e.url||"";if(e.baseURL&&!n.startsWith("http")&&(n=`${e.baseURL}${n.startsWith("/")?"":"/"}${n}`),e.params&&typeof e.params=="object"){const r=e.params,i=[];for(const[l,c]of Object.entries(r))if(c!=null)if(Array.isArray(c)){const d=l.endsWith("[]")?l:`${l}[]`;for(const f of c)i.push(`${encodeURIComponent(d)}=${encodeURIComponent(String(f))}`)}else i.push(`${encodeURIComponent(l)}=${encodeURIComponent(String(c))}`);i.length>0&&(n+=(n.includes("?")?"&":"?")+i.join("&"))}return n}callOnError(e){if(!this.config.onError)return;const n={status:e.response?.status||0,message:e.response?.data?.message||e.message||"Unknown error",data:e.response?.data,statusText:e.response?.statusText};try{this.config.onError(n)}catch(r){sE.error("Error in onError handler:",r)}}}let yf=null;function zr(){return yf||(yf=new oE),yf}const xo=dt("AuthManager");function fs(s,e,n,r){try{window.G7Core?.devTools?.trackAuthEvent?.(s,e,n,r)}catch{}}const hc={admin:{type:"admin",loginPath:"/admin/login",defaultPath:"/admin",userEndpoint:"/admin/auth/user",loginEndpoint:"/auth/admin/login",logoutEndpoint:"/admin/auth/logout",refreshEndpoint:"/admin/auth/refresh"},user:{type:"user",loginPath:"/login",defaultPath:"/",userEndpoint:"/auth/user",loginEndpoint:"/auth/login",logoutEndpoint:"/auth/logout",refreshEndpoint:"/auth/refresh"}},kr=class kr{constructor(){M(this,"state");M(this,"config");M(this,"isRefreshing",!1);M(this,"refreshPromise",null);M(this,"eventHandlers",new Map);this.state={isAuthenticated:!1,user:null,type:null},this.config=new Map,this.config.set("admin",hc.admin),this.config.set("user",hc.user)}static getInstance(){return kr.instance||(kr.instance=new kr),kr.instance}on(e,n){this.eventHandlers.has(e)||this.eventHandlers.set(e,[]),this.eventHandlers.get(e).push(n)}emit(e,...n){const r=this.eventHandlers.get(e);r&&r.forEach(i=>i(...n))}isAuthenticated(){return this.state.isAuthenticated}getUser(){return this.state.user}getAuthType(){return this.state.type}async checkAuth(e){const n=zr();if(!n.getToken())return this.clearState(),!1;const i=this.config.get(e);if(!i)return xo.error(`Unknown auth type: ${e}`),!1;try{const l=await n.get(i.userEndpoint);return l.success&&l.data?(this.state={isAuthenticated:!0,user:l.data,type:e},this.emit("authStateChange",this.state),!0):(this.clearState(),!1)}catch(l){return l.response?.status===401&&await this.refreshToken()?this.checkAuth(e):(this.clearState(),!1)}}async preloadAuth(e){try{return await this.checkAuth(e)}catch(n){return xo.warn(`Preload auth failed for type ${e}:`,n),!1}}async login(e,n,r){const i=zr();if(!this.config.get(e))throw new Error(`Unknown auth type: ${e}`);const c=e==="admin"?hc.admin.loginEndpoint:hc.user.loginEndpoint;try{const d=r?.headers?{headers:r.headers}:void 0,f=await i.post(c,n,d);if(f.success&&f.data){i.setToken(f.data.token);const h=f.data.user.language,m=localStorage.getItem(kr.LOCALE_STORAGE_KEY),y=h&&h!==m;if(h)try{localStorage.setItem(kr.LOCALE_STORAGE_KEY,h)}catch(S){xo.warn("Failed to save user language to localStorage:",S)}return this.state={isAuthenticated:!0,user:f.data.user,type:e},this.emit("login",this.state),this.emit("authStateChange",this.state),fs("login",!0,void 0,{userId:f.data.user.uuid,email:f.data.user.email,type:e}),y&&window.__templateApp&&window.__templateApp.changeLocale(h),f.data.user}throw new Error("Login failed")}catch(d){this.clearState();const f=d.response?.data?.message,h=new Error(f||d.message||"Login failed");throw h.response=d.response,h.status=d.response?.status,fs("login",!1,h.message,{type:e,status:d.response?.status}),h}}async logout(){const e=zr(),n=this.state.type?this.config.get(this.state.type):null;try{n&&await e.post(n.logoutEndpoint)}catch(r){xo.warn("Logout API call failed:",r)}finally{e.removeToken();const r={...this.state};if(this.clearState(),this.emit("logout",r),this.emit("authStateChange",this.state),fs("logout",!0,void 0,{previousType:r.type}),n&&r.type){const i=window.location.pathname+window.location.search;window.location.href=this.getLoginRedirectUrl(r.type,i)}}}async refreshToken(){if(this.isRefreshing&&this.refreshPromise)return this.refreshPromise;this.isRefreshing=!0,this.refreshPromise=this.doRefreshToken();try{return await this.refreshPromise}finally{this.isRefreshing=!1,this.refreshPromise=null}}async doRefreshToken(){const e=this.state.type;if(!e)return!1;const n=this.config.get(e);if(!n)return!1;const r=zr();try{const i=await r.post(n.refreshEndpoint);return i.success&&i.data?.token?(r.setToken(i.data.token),this.emit("tokenRefreshed"),fs("token-refresh",!0,void 0,{type:e}),!0):(fs("token-refresh",!1,"No token in response",{type:e}),!1)}catch(i){return xo.error("Token refresh failed:",i),fs("token-refresh",!1,i instanceof Error?i.message:"Unknown error",{type:e}),!1}}getLoginRedirectUrl(e,n,r){const i=this.config.get(e);if(!i)return"/login";const l=encodeURIComponent(n);let c=`${i.loginPath}?redirect=${l}`;return r&&(c+=`&reason=${encodeURIComponent(r)}`),c}updateConfig(e,n){if(n.loginPath!==void 0){const i=n.loginPath;if(!i.startsWith("/")||i.startsWith("//"))throw new Error(`AuthManager.updateConfig: loginPath must be a same-origin path starting with '/' (got: ${i})`)}const r=this.config.get(e);r&&this.config.set(e,{...r,...n})}getRedirectUrl(e){const r=this.config.get(e)?.defaultPath||"/",l=new URLSearchParams(window.location.search).get("redirect");if(l)try{const c=decodeURIComponent(l);if(c.startsWith("/"))return c}catch{}return r}getConfig(e){return this.config.get(e)}clearState(){this.state={isAuthenticated:!1,user:null,type:null}}static resetInstance(){kr.instance=null}};M(kr,"instance"),M(kr,"LOCALE_STORAGE_KEY","g7_locale");let wr=kr;const Pm={401:{handler:"navigate",params:{path:"{{auth.loginPath}}"}},403:{handler:"toast",params:{type:"error",message:"{{error.message}}"}},404:{handler:"toast",params:{type:"error",message:"{{error.message}}"}},422:{handler:"toast",params:{type:"error",message:"{{error.message}}"}},default:{handler:"toast",params:{type:"error",message:"{{error.message}}"}}},aa={findHandler(s,e){if(s){if(s[e])return s[e];if(s[String(e)])return s[String(e)];if(s.default)return s.default}},normalizeOnError(s){return s?Array.isArray(s)?s:[s]:[]},injectErrorCode(s,e,n){if(s.handler!=="showErrorPage"||s.params?.errorCode!==void 0)return s;const r=typeof e=="string"?parseInt(e,10):e,i=isNaN(r)?n:r;return i===void 0?s:{...s,params:{...s.params,errorCode:i}}}},Cr=dt("ErrorHandlingResolver"),Ha=class Ha{constructor(){M(this,"templateErrorHandling",null);M(this,"layoutErrorHandling",null);M(this,"executeAction",null)}static getInstance(){return Ha.instance||(Ha.instance=new Ha),Ha.instance}static resetInstance(){Ha.instance=null}setTemplateConfig(e){this.templateErrorHandling=e,Cr.log("Template config set:",e)}setLayoutConfig(e){this.layoutErrorHandling=e,Cr.log("Layout config set:",e)}setActionExecutor(e){this.executeAction=e}resolve(e,n={}){const{errorHandling:r,onError:i}=n;Cr.log("Resolving error:",e,{hasActionErrorHandling:!!r,hasActionOnError:!!i,hasLayoutConfig:!!this.layoutErrorHandling,hasTemplateConfig:!!this.templateErrorHandling});let l=aa.findHandler(r,e);if(l){const c=this.getMatchedKey(r,e);return{handler:aa.injectErrorCode(l,c,e),level:"action",matchedKey:c}}if(i){const c=aa.normalizeOnError(i);if(c.length>0)return{handler:c.length===1?c[0]:{handler:"sequence",actions:c},level:"action",matchedKey:"onError"}}if(l=aa.findHandler(this.layoutErrorHandling||void 0,e),l){const c=this.getMatchedKey(this.layoutErrorHandling,e);return{handler:aa.injectErrorCode(l,c,e),level:"layout",matchedKey:c}}if(l=aa.findHandler(this.templateErrorHandling||void 0,e),l){const c=this.getMatchedKey(this.templateErrorHandling,e);return{handler:aa.injectErrorCode(l,c,e),level:"template",matchedKey:c}}if(l=aa.findHandler(Pm,e),l){const c=this.getMatchedKey(Pm,e);return{handler:aa.injectErrorCode(l,c,e),level:"system",matchedKey:c}}return{handler:null,level:null,matchedKey:null}}async execute(e,n){if(!this.executeAction){Cr.error("Action executor is not set");return}Cr.log("Executing handler:",e.handler,{errorContext:n});try{return await this.executeAction(e,{error:n})}catch(r){throw Cr.error("Failed to execute handler:",r),r}}async resolveAndExecute(e,n,r={}){const i=this.resolve(e,r);if(Cr.log("Resolve result:",{errorCode:e,handler:i.handler?.handler,level:i.level,matchedKey:i.matchedKey}),!i.handler)return Cr.warn("No handler found for error:",e),{handled:!1};try{return{handled:!0,result:await this.execute(i.handler,n)}}catch(l){return Cr.error("Handler execution failed:",l),{handled:!1}}}getMatchedKey(e,n){return e[n]?n:e[String(n)]?String(n):"default"}clearLayoutConfig(){this.layoutErrorHandling=null,Cr.log("Layout config cleared")}clearAllConfig(){this.templateErrorHandling=null,this.layoutErrorHandling=null,Cr.log("All config cleared")}getConfigStatus(){return{hasTemplate:this.templateErrorHandling!==null,hasLayout:this.layoutErrorHandling!==null,hasExecutor:this.executeAction!==null}}};M(Ha,"instance",null);let bf=Ha;function Er(){return bf.getInstance()}var vf={exports:{}},To={};var Bm;function lE(){if(Bm)return To;Bm=1;var s=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(r,i,l){var c=null;if(l!==void 0&&(c=""+l),i.key!==void 0&&(c=""+i.key),"key"in i){l={};for(var d in i)d!=="key"&&(l[d]=i[d])}else l=i;return i=l.ref,{$$typeof:s,type:r,key:c,ref:i!==void 0?i:null,props:l}}return To.Fragment=e,To.jsx=n,To.jsxs=n,To}var qm;function cE(){return qm||(qm=1,vf.exports=lE()),vf.exports}var ft=cE();const uE=ea({__proto__:null,default:ta(ft)},[ft]),Sf=dt("ParentContextProvider"),Gm=N.createContext(null);let pc=null;function wf(){pc?(Sf.log("[triggerModalParentUpdate] 모달 부모 컨텍스트 업데이트 트리거"),pc()):Sf.warn("[triggerModalParentUpdate] Provider가 아직 마운트되지 않음")}const Fm=({children:s})=>{const[e,n]=N.useState(0),r=N.useRef(!0),i=N.useCallback(()=>{const c=window.__g7LayoutContextStack||[];return c[c.length-1]?.dataContext},[]);N.useEffect(()=>(r.current=!0,pc=()=>{r.current&&(n(c=>c+1),Sf.log("[ParentContextProvider] 버전 업데이트됨"))},()=>{r.current=!1,pc=null}),[]);const l={version:e,getParentDataContext:i};return ft.jsx(Gm.Provider,{value:l,children:s})};function dE(){return N.useContext(Gm)}const j=dt("ActionDispatcher");function fE(s,e,n,r){return n||(jg(s)||Od(s)?"$t:core.errors.network_request_failed":r||`Failed to execute action: ${e}`)}const Vm=new Set(["navigate","navigateBack","navigateForward","replaceUrl","refresh","logout"]),hE=new Set(["redirect"]);function Fn(){try{return window.G7Core?.devTools}catch{return}}class Ut extends Error{constructor(n,r,i){super(n);M(this,"action");M(this,"originalError");M(this,"unknownHandler",!1);this.action=r,this.originalError=i,this.name="ActionError"}}const Km={click:"onClick",change:"onChange",input:"onInput",submit:"onSubmit",focus:"onFocus",blur:"onBlur",keydown:"onKeyDown",keyup:"onKeyUp",keypress:"onKeyPress",mousedown:"onMouseDown",mouseup:"onMouseUp",mouseenter:"onMouseEnter",mouseleave:"onMouseLeave",scroll:"onScroll",dragstart:"onDragStart",drag:"onDrag",dragend:"onDragEnd",dragenter:"onDragEnter",dragover:"onDragOver",dragleave:"onDragLeave",drop:"onDrop"},xs=class xs{constructor(e={},n,r){M(this,"bindingEngine");M(this,"translationEngine");M(this,"translationContext");M(this,"customHandlers",new Map);M(this,"defaultContext");M(this,"globalStateUpdater");M(this,"errorHandlingSetup",!1);M(this,"debounceTimers",new Map);M(this,"pendingDebounceFlushers",new Map);M(this,"debounceAccumulatedValues",new Map);M(this,"globalHeaders",[]);M(this,"namedActions",{});M(this,"previewMode",!1);M(this,"intervals",new Map);this.bindingEngine=new kn,this.translationEngine=n,this.translationContext=r,this.defaultContext=e,this.registerDefaultHandlers(),this.setupErrorHandling()}setGlobalHeaders(e){this.globalHeaders=e||[]}setNamedActions(e){this.namedActions=e||{};const n=Fn();n?.isEnabled?.()&&n.setNamedActionDefinitions?.(this.namedActions),j.log("[setNamedActions] registered:",Object.keys(this.namedActions))}getNamedActions(){return this.namedActions}setPreviewMode(e){this.previewMode=e,j.log("Preview mode:",e?"enabled":"disabled")}isPreviewMode(){return this.previewMode}static getPreviewSuppressedHandlers(){return Vm}static getPreviewSuppressedLayoutFeatures(){return hE}resolveActionRef(e){if(!e.actionRef)return e;const n=this.namedActions[e.actionRef];if(!n)return j.warn(`[resolveActionRef] named action not found: "${e.actionRef}"`),e;const r=Fn();r?.isEnabled?.()&&r.trackNamedActionRef?.({actionRefName:e.actionRef,resolvedHandler:n.handler,timestamp:Date.now()});const{actionRef:i,type:l,key:c,event:d,...f}=e,h={...n,...Object.fromEntries(Object.entries(f).filter(([,m])=>m!==void 0)),type:l??n.type};return c!==void 0&&(h.key=c),d!==void 0&&(h.event=d),h}matchesPattern(e,n){if(n==="*")return!0;const r=n.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*");return new RegExp(`^${r}$`).test(e)}getMatchingGlobalHeaders(e,n){const r={};for(const i of this.globalHeaders)this.matchesPattern(e,i.pattern)&&Object.entries(i.headers).forEach(([l,c])=>{const d=ls(c,n,{skipCache:!0});d!=null&&d!==""&&(r[l]=String(d))});return r}setupErrorHandling(){if(this.errorHandlingSetup)return;Er().setActionExecutor(async(n,r)=>{const i={type:"click",handler:n.handler,target:n.target,params:n.params,actions:n.actions},l={data:{...this.defaultContext.data,error:r.error}};return await this.dispatchAction(i,l)}),this.errorHandlingSetup=!0}registerDefaultHandlers(){this.registerHandler("refetchDataSource",async(n,r)=>{const i=n.params?.dataSourceId,l=n.params?.sync;if(!i){j.warn("refetchDataSource: dataSourceId is required");return}if(typeof window<"u"&&window.G7Core?.dataSource?.refetch){const c=window.G7Core?.state?.get?.()||{},d={...r.state?._global,...c},f=window.G7Core?.state?.getLocal?.()||{},h=r.data?._local||r.state||{},m={...f,...h},y=r.isolatedContext?.state;j.log("[refetchDataSource] localStateOverride:",m),await window.G7Core.dataSource.refetch(i,{...l?{sync:!0}:{},...d?{globalStateOverride:d}:{},...m?{localStateOverride:m}:{},...y?{isolatedStateOverride:y}:{}})}else j.warn("refetchDataSource: G7Core.dataSource.refetch is not available")}),this.registerHandler("appendDataSource",async(n,r)=>{const{dataSourceId:i,dataPath:l,newData:c}=n.params||{};if(!i){j.warn("appendDataSource: dataSourceId is required");return}if(c===void 0){j.warn("appendDataSource: newData is required");return}if(typeof window<"u"&&window.G7Core?.dataSource?.updateData){if(!Array.isArray(c)){j.warn("appendDataSource: newData must be an array, got:",typeof c,c);return}await window.G7Core.dataSource.updateData(i,l||null,c,"append")}else j.warn("appendDataSource: G7Core.dataSource.updateData is not available")}),this.registerHandler("updateDataSource",async(n,r)=>{const{dataSourceId:i,data:l,merge:c=!1}=n.params||{};if(!i){j.warn("updateDataSource: dataSourceId is required");return}if(l===void 0){j.warn("updateDataSource: data is required");return}typeof window<"u"&&window.G7Core?.dataSource?.set?(j.log(`[updateDataSource] Updating dataSource '${i}' with:`,l),window.G7Core.dataSource.set(i,l,{merge:c})):j.warn("updateDataSource: G7Core.dataSource.set is not available")}),this.registerHandler("scrollIntoView",async(n,r)=>{const{selector:i,behavior:l="smooth",block:c="nearest",inline:d="nearest",waitForElement:f=!1,timeout:h=2e3,delay:m=0,retryCount:y=0,retryInterval:S=50,scrollContainer:v}=n.params||{};if(!i){j.warn("scrollIntoView: selector is required");return}if(typeof window>"u"||typeof document>"u"){j.warn("scrollIntoView: window/document is not available");return}let _=null;if(f){if(_=await new Promise(x=>{const A=document.querySelector(i);if(A){x(A);return}const L=setTimeout(()=>{$.disconnect(),x(null)},h),$=new MutationObserver(()=>{const k=document.querySelector(i);k&&(clearTimeout(L),$.disconnect(),x(k))});$.observe(document.body,{childList:!0,subtree:!0})}),!_){j.warn(`scrollIntoView: element not found for selector "${i}" after ${h}ms timeout`);return}}else{m>0&&await new Promise(A=>setTimeout(A,m)),_=document.querySelector(i);let x=0;for(;!_&&x<y;)await new Promise(A=>setTimeout(A,S)),_=document.querySelector(i),x++;if(!_){j.warn(`scrollIntoView: element not found for selector "${i}" after ${x+1} attempts`);return}}if(v){const x=document.querySelector(v);if(!x){j.warn(`scrollIntoView: container not found for selector "${v}"`);return}const A=_.getBoundingClientRect(),L=x.getBoundingClientRect(),$=A.top-L.top+x.scrollTop,k=$+A.height;let O;switch(c){case"start":O=$;break;case"center":O=$-x.clientHeight/2+A.height/2;break;case"end":O=k-x.clientHeight;break;default:const P=A.top<L.top,G=A.bottom>L.bottom;if(P)O=$;else if(G)O=k-x.clientHeight;else return;break}x.scrollTo({top:Math.max(0,O),behavior:l});return}_.scrollIntoView({behavior:l,block:c,inline:d})}),this.registerHandler("reloadExtensions",async(n,r)=>{if(typeof window>"u"){j.warn("reloadExtensions: window is not available");return}const i=window.__templateApp;if(!i){j.warn("reloadExtensions: TemplateApp not initialized");return}if(typeof i.reloadExtensionState=="function")try{await i.reloadExtensionState()}catch(d){throw j.error("reloadExtensions: reloadExtensionState failed",d),d}else j.warn("reloadExtensions: TemplateApp.reloadExtensionState unavailable");const{moduleInfo:l,pluginInfo:c}=n.params||{};if(l)try{await this.executeAction({handler:"reloadModuleHandlers",params:n.params},r)}catch(d){j.error("reloadExtensions: reloadModuleHandlers failed",d)}if(c)try{await this.executeAction({handler:"reloadPluginHandlers",params:n.params},r)}catch(d){j.error("reloadExtensions: reloadPluginHandlers failed",d)}j.log("reloadExtensions: done")}),this.registerHandler("reloadRoutes",async(n,r)=>{if(typeof window>"u"){j.warn("reloadRoutes: window is not available");return}const i=window.__templateApp;if(!i){j.warn("reloadRoutes: TemplateApp not initialized");return}if(typeof i.reloadExtensionState=="function")try{await i.reloadExtensionState(),j.log("reloadRoutes: delegated to reloadExtensionState")}catch(l){throw j.error("reloadRoutes: Failed to reload routes",l),l}else{const l=i.getRouter?.();l&&(await l.loadRoutes(),j.log("reloadRoutes: Routes reloaded (legacy fallback)"))}}),this.registerHandler("refresh",async(n,r)=>{if(typeof window>"u"){j.warn("refresh: window is not available");return}const i=Number(n.params?.delayMs??0);i>0&&await new Promise(l=>setTimeout(l,i)),window.location.reload()}),this.registerHandler("remount",async(n,r)=>{const{componentId:i}=n.params||{};if(!i){j.warn("remount: componentId parameter is required");return}if(!this.globalStateUpdater){j.warn("remount: globalStateUpdater is not set");return}const d=(window.G7Core?.state?.get()||{})._global?._remountKeys||{},f=d[i]||0;this.globalStateUpdater({_remountKeys:{...d,[i]:f+1}}),j.log(`remount: ${i} key incremented to ${f+1}`)}),this.registerHandler("reloadTranslations",async(n,r)=>{if(typeof window>"u"){j.warn("reloadTranslations: window is not available");return}const i=window.__templateApp;if(!i){j.warn("reloadTranslations: TemplateApp not initialized");return}if(typeof i.reloadExtensionState=="function")try{await i.reloadExtensionState(),j.log("reloadTranslations: delegated to reloadExtensionState")}catch(l){throw j.error("reloadTranslations: Failed to reload translations",l),l}}),this.registerHandler("reloadModuleHandlers",async(n,r)=>{if(typeof window>"u"){j.warn("reloadModuleHandlers: window is not available");return}const{moduleInfo:i,action:l}=n.params||{};if(!i){j.warn("reloadModuleHandlers: moduleInfo is required");return}const c=i.data||i;if(!c.identifier){j.warn("reloadModuleHandlers: moduleInfo with identifier is required");return}if(!l||l!=="add"&&l!=="remove"){j.warn('reloadModuleHandlers: action must be "add" or "remove"');return}const d=window.G7Config;if(!d){j.warn("reloadModuleHandlers: G7Config not available");return}const f=c.identifier;try{if(l==="add"){if(c.assets&&(d.moduleAssets=d.moduleAssets||{},d.moduleAssets[f]=c.assets,j.log(`reloadModuleHandlers: Added assets for ${f}`),c.assets.js)){const h=c.assets.js,m=`module-${f}`;if(document.getElementById(m)){j.warn(`reloadModuleHandlers: Script ${m} already loaded`);return}const y=document.createElement("script");if(y.id=m,y.src=h,y.async=!0,await new Promise((S,v)=>{y.onload=()=>{j.log(`reloadModuleHandlers: Script loaded successfully for ${f}`),S()},y.onerror=()=>{j.error(`reloadModuleHandlers: Failed to load script for ${f}`),v(new Error(`Failed to load module script: ${h}`))},document.head.appendChild(y)}),c.assets.css){const S=c.assets.css,v=`module-css-${f}`;if(!document.getElementById(v)){const _=document.createElement("link");_.id=v,_.rel="stylesheet",_.href=S,document.head.appendChild(_),j.log(`reloadModuleHandlers: CSS loaded for ${f}`)}}}}else if(l==="remove"){d.moduleAssets&&d.moduleAssets[f]&&(delete d.moduleAssets[f],j.log(`reloadModuleHandlers: Removed assets for ${f}`));const h=`module-${f}`,m=document.getElementById(h);m&&(m.remove(),j.log(`reloadModuleHandlers: Removed script for ${f}`));const y=`module-css-${f}`,S=document.getElementById(y);S&&(S.remove(),j.log(`reloadModuleHandlers: Removed CSS for ${f}`))}}catch(h){throw j.error(`reloadModuleHandlers: Failed to ${l} module assets`,h),h}}),this.registerHandler("reloadPluginHandlers",async(n,r)=>{if(typeof window>"u"){j.warn("reloadPluginHandlers: window is not available");return}const{pluginInfo:i,action:l}=n.params||{};if(!i){j.warn("reloadPluginHandlers: pluginInfo is required");return}const c=i.data||i;if(!c.identifier){j.warn("reloadPluginHandlers: pluginInfo with identifier is required");return}if(!l||l!=="add"&&l!=="remove"){j.warn('reloadPluginHandlers: action must be "add" or "remove"');return}const d=window.G7Config;if(!d){j.warn("reloadPluginHandlers: G7Config not available");return}const f=c.identifier;try{if(l==="add"){if(c.assets&&(d.pluginAssets=d.pluginAssets||{},d.pluginAssets[f]=c.assets,j.log(`reloadPluginHandlers: Added assets for ${f}`),c.assets.js)){const h=c.assets.js,m=`plugin-${f}`;if(document.getElementById(m)){j.warn(`reloadPluginHandlers: Script ${m} already loaded`);return}const y=document.createElement("script");if(y.id=m,y.src=h,y.async=!0,await new Promise((S,v)=>{y.onload=()=>{j.log(`reloadPluginHandlers: Script loaded successfully for ${f}`),S()},y.onerror=()=>{j.error(`reloadPluginHandlers: Failed to load script for ${f}`),v(new Error(`Failed to load plugin script: ${h}`))},document.head.appendChild(y)}),c.assets.css){const S=c.assets.css,v=`plugin-css-${f}`;if(!document.getElementById(v)){const _=document.createElement("link");_.id=v,_.rel="stylesheet",_.href=S,document.head.appendChild(_),j.log(`reloadPluginHandlers: CSS loaded for ${f}`)}}}}else if(l==="remove"){d.pluginAssets&&d.pluginAssets[f]&&(delete d.pluginAssets[f],j.log(`reloadPluginHandlers: Removed assets for ${f}`));const h=`plugin-${f}`,m=document.getElementById(h);m&&(m.remove(),j.log(`reloadPluginHandlers: Removed script for ${f}`));const y=`plugin-css-${f}`,S=document.getElementById(y);S&&(S.remove(),j.log(`reloadPluginHandlers: Removed CSS for ${f}`))}}catch(h){throw j.error(`reloadPluginHandlers: Failed to ${l} plugin assets`,h),h}});let e=!1;this.registerHandler("showErrorPage",async(n,r)=>{if(e){j.log("showErrorPage: Already active, skipping duplicate call");return}if(e=!0,typeof window>"u"){e=!1,j.warn("showErrorPage: window is not available");return}const i=window.__templateApp;if(!i){e=!1,j.warn("showErrorPage: TemplateApp not initialized");return}const l=i.getErrorPageHandler?.();if(!l){e=!1,j.warn("showErrorPage: ErrorPageHandler not available");return}const c=n.params?.errorCode||500,d=n.params?.target||"content";let f=n.params?.containerId;f||(f=d==="full"?"app":"main_content"),j.log("showErrorPage:",{errorCode:c,target:d,containerId:f});const h=(m,y=6e4)=>new Promise((S,v)=>{const _=document.getElementById(m);if(_){S(_);return}j.log(`showErrorPage: Waiting for container #${m}...`);let x;const A=new MutationObserver((L,$)=>{const k=document.getElementById(m);k&&(j.log(`showErrorPage: Container #${m} found`),$.disconnect(),clearTimeout(x),S(k))});A.observe(document.body,{childList:!0,subtree:!0}),x=setTimeout(()=>{A.disconnect(),v(new Error(`Container #${m} not found within ${y}ms`))},y)});try{await h(f);const m=Er(),y=m.layoutErrorHandling;m.clearLayoutConfig();try{await l.renderError(c,f)||j.warn(`showErrorPage: Failed to render error page for code ${c}`)}finally{m.setLayoutConfig(y)}}catch(m){throw j.error("showErrorPage: Error rendering error page:",m),m}finally{e=!1}}),this.registerHandler("emitEvent",async(n,r)=>{const i=n.params?.event,l=n.params?.data;if(!i){j.warn("emitEvent: event parameter is required");return}if(typeof window>"u"){j.warn("emitEvent: window is not available");return}const c=window.G7Core;if(!c?.componentEvent?.emit){j.warn("emitEvent: G7Core.componentEvent is not available");return}try{j.log(`emitEvent: Emitting "${i}"`,l);const d={...l,_context:{data:r.data,state:r.state}},f=await c.componentEvent.emit(i,d);if(!f||f.length===0?j.warn(`emitEvent: No listeners found for "${i}"`):j.log(`emitEvent: Event "${i}" completed with ${f.length} listener(s)`,f),this.globalStateUpdater){const h=(c?.state?.get()||{})._local||{},m={event:i,success:!0,data:f.length===1?f[0]:f,listeners:f.length};this.globalStateUpdater({_local:{...h,_eventResult:m}});const y=r.state&&typeof r.state=="object"&&!Array.isArray(r.state)?r.state:h;window.__g7SequenceLocalSync={...y,_eventResult:m}}}catch(d){if(j.error(`emitEvent: Event "${i}" failed`,d),this.globalStateUpdater){const f=c?.state?.get()||{};this.globalStateUpdater({_local:{...f._local,_eventResult:{event:i,success:!1,error:d instanceof Error?d.message:String(d)}}})}throw d}}),this.registerHandler("updateProductField",async(n,r)=>{const{productId:i,field:l,value:c}=n.params||{};if(!i||!l){j.warn("updateProductField: productId and field are required");return}if(typeof window>"u"){j.warn("updateProductField: window is not available");return}const d=window.G7Core;if(!d?.state?.get||!this.globalStateUpdater){j.warn("updateProductField: G7Core.state or globalStateUpdater is not available");return}try{const f=d.state.get()||{},m=(f.products?.data?.data||[]).map(S=>S.id===i?{...S,[l]:c,_modified:!0}:S),y=new Set(f._local?.modifiedProductIds||[]);y.add(i),this.globalStateUpdater({products:{...f.products,data:{...f.products?.data,data:m}},_local:{...f._local,modifiedProductIds:Array.from(y)}}),j.log(`updateProductField: Updated product ${i}, field: ${l}, value:`,c)}catch(f){throw j.error("updateProductField: Error updating product field",f),f}}),this.registerHandler("updateOptionField",async(n,r)=>{const{productId:i,optionId:l,field:c,value:d}=n.params||{};if(!i||!l||!c){j.warn("updateOptionField: productId, optionId and field are required");return}if(typeof window>"u"){j.warn("updateOptionField: window is not available");return}const f=window.G7Core;if(!f?.state?.get||!this.globalStateUpdater){j.warn("updateOptionField: G7Core.state or globalStateUpdater is not available");return}try{const h=f.state.get()||{},y=(h.products?.data?.data||[]).map(v=>{if(v.id===i&&v.options){const _=v.options.map(x=>x.id===l?{...x,[c]:d,_modified:!0}:x);return{...v,options:_,_modified:!0}}return v}),S=new Set(h._local?.modifiedProductIds||[]);S.add(i),this.globalStateUpdater({products:{...h.products,data:{...h.products?.data,data:y}},_local:{...h._local,modifiedProductIds:Array.from(S)}}),j.log(`updateOptionField: Updated product ${i} option ${l}, field: ${c}, value:`,d)}catch(h){throw j.error("updateOptionField: Error updating option field",h),h}}),this.registerHandler("setLocale",async(n,r)=>{const i=n.target;if(!i||typeof i!="string"){j.warn("setLocale: Invalid locale:",i);return}const l=window.__templateApp;if(l&&typeof l.changeLocale=="function")try{await l.changeLocale(i),j.log("setLocale: Locale changed to",i)}catch(c){j.error("setLocale: Failed to change locale:",c),window.location.reload()}else{j.warn("setLocale: TemplateApp not found, falling back to page reload");try{localStorage.setItem("g7_locale",i)}catch{}window.location.reload()}}),this.registerHandler("suppress",async()=>{j.log("suppress: Error intentionally suppressed")}),this.registerBuiltInHandlerMetadata()}registerBuiltInHandlerMetadata(){const e=Fn();if(!e?.isEnabled())return;const n=[{name:"refetchDataSource",description:"데이터 소스를 다시 fetch합니다"},{name:"appendDataSource",description:"데이터 소스에 새 데이터를 병합합니다 (무한 스크롤용)"},{name:"updateDataSource",description:"API 응답으로 데이터 소스를 직접 업데이트합니다 (refetch 대체)"},{name:"reloadRoutes",description:"라우트를 다시 로드합니다"},{name:"refresh",description:"현재 페이지를 새로고침합니다"},{name:"remount",description:"컴포넌트를 리마운트합니다"},{name:"reloadTranslations",description:"다국어 파일을 다시 로드합니다"},{name:"showErrorPage",description:"에러 페이지를 표시합니다"},{name:"emitEvent",description:"이벤트를 발생시킵니다"},{name:"updateProductField",description:"상품 필드를 인라인 수정합니다"},{name:"updateOptionField",description:"상품 옵션 필드를 인라인 수정합니다"},{name:"setLocale",description:"언어를 변경합니다 (DB 저장 + UI 리렌더링)"}];for(const r of n)e.trackHandlerRegistration(r.name,"built-in",r.description)}createHandler(e,n,r){j.log("createHandler called for:",e.handler,e.type);const i=window.__g7DevTools,l=Date.now(),c=r?.state?{...r.state}:null,d=`handler_${e.handler}_${l}`;return async f=>{if(j.log("Handler invoked for:",e.handler,"event:",f.type),i?.isEnabled?.()&&c){const m=window.G7Core?.state?.getLocal?.()??r?.state??{},y=Date.now()-l;for(const S of Object.keys(c)){const v=c[S],_=m[S];v!==_&&y>100&&(i.trackStaleClosureWarning?.({type:"event-handler-stale",location:`createHandler(${e.handler})`,capturedPath:`_local.${S}`,capturedValue:v,capturedAt:l,currentValue:_,actionId:d,stackTrace:new Error().stack}),j.warn(`[Stale Closure] _local.${S} changed after handler creation:`,`captured="${v}" → current="${_}" (${y}ms ago)`))}}try{f.type!=="change"&&f.preventDefault();let h={};if(f.type==="submit"&&f.target instanceof HTMLFormElement){const S=f.target;new FormData(S).forEach((_,x)=>{h[x]=_})}const m={...this.defaultContext,data:{...n,form:h,_local:r?.state||{},$event:f},event:f,...r&&{state:r.state,setState:r.setState},isolatedContext:r?.isolatedContext};if(e.confirm){let S=this.resolveValue(e.confirm,m.data);if(this.translationEngine&&this.translationContext&&S.startsWith("$t:")&&(S=this.translationEngine.resolveTranslations(S,this.translationContext,m.data)),!confirm(S))return}const y=window.__g7ActionContext;window.__g7ActionContext={...r,data:m.data};try{await this.executeAction(e,m)}finally{window.__g7ActionContext=y}}catch(h){if(j.error("Action execution failed:",h),e.onError){const m=h instanceof Ut&&h.originalError?h.originalError:h,y={...this.defaultContext,data:{...n,error:m,_local:r?.state||{},$event:f},event:f,...r&&{state:r.state,setState:r.setState}},S=Array.isArray(e.onError)?e.onError:[e.onError];for(const v of S)await this.executeAction(v,y)}}}}generateActionId(e,n){const r=e.handler,i=n||"no-target",l=Date.now(),c=Math.random().toString(36).substring(2,9);return`${r}_${i.replace(/[^a-zA-Z0-9]/g,"_")}_${l}_${c}`}async executeAction(e,n){if(e=this.resolveActionRef(e),typeof e.handler=="string"&&e.handler.includes("{{")){const f=this.evaluateExpression(e.handler,n.data);e={...e,handler:f==null?"":String(f)}}const r=Fn(),i=r?.isEnabled()?`action_${Date.now()}_${Math.random().toString(36).substring(2,11)}`:void 0,l=performance.now();let c;if(i&&r&&r.logAction({id:i,type:e.handler,params:this.sanitizeForDevTools(e.params),context:this.sanitizeForDevTools({hasState:!!n.state,hasSetState:!!n.setState,dataKeys:n.data?Object.keys(n.data):[]}),startTime:l,status:"started"}),e.if!==void 0)try{const f=this.resolveValue(e.if,n.data),h=f===!0||f==="true"||f&&f!=="false"&&f!=="0"&&f!==!1;if(j.log("[executeAction] if condition result:",e.handler,h),!h)return i&&r&&r.logAction({id:i,type:e.handler,startTime:l,endTime:performance.now(),duration:performance.now()-l,status:"success",result:{skipped:!0,reason:"if condition false"}}),{success:!0,data:void 0}}catch(f){return j.error("[executeAction] if condition error:",e.handler,f),i&&r&&r.logAction({id:i,type:e.handler,startTime:l,endTime:performance.now(),duration:performance.now()-l,status:"error",error:{name:"ConditionEvaluationError",message:f instanceof Error?f.message:String(f),stack:f instanceof Error?f.stack:void 0}}),{success:!0,data:void 0}}let d;try{const f=this.resolveParams(e.params,n.data);i&&(c=this.sanitizeForDevTools(f));const h=e.target?this.resolveValue(e.target,n.data):void 0;if(e.handler==="apiCall"&&n.setState){d=this.generateActionId(e,h);const y=n.state?.loadingActions||{};n.setState({loadingActions:{...y,[d]:!0}})}if(this.previewMode&&Vm.has(e.handler))return j.warn(`Preview mode: "${e.handler}" suppressed`,h||f),i&&r&&r.logAction({id:i,type:e.handler,startTime:l,endTime:performance.now(),duration:performance.now()-l,status:"skipped",metadata:{reason:"preview_mode_suppressed"}}),{success:!0,data:void 0};let m;switch(e.handler){case"ensureIdentityVerified":m=await this.handleEnsureIdentityVerified(f);break;case"resolveIdentityChallenge":m=this.handleResolveIdentityChallenge(f);break;case"navigate":const y=f.path||h;m=await this.handleNavigate(y,f,n);break;case"navigateBack":m=await this.handleNavigateBack();break;case"navigateForward":m=await this.handleNavigateForward();break;case"openWindow":{const _=f.path||h;m=await this.handleOpenWindow(_,f);break}case"replaceUrl":{const _=f.path||h||window.location.pathname;m=await this.handleReplaceUrl(_,f);break}case"apiCall":if(e.onSuccess&&r?.isEnabled()&&i){const _=window.G7Core,x={};if(_?.state?.get){const A=_.state.get();x._global=A}n.state&&(x._local=n.state),r.registerStateCaptureForHandler?.(i,["_global","_local"],x)}const S=e.auth_mode??(e.auth_required?"required":"none"),v=e.identity_target?this.resolveParams(e.identity_target,n.data):void 0;m=await this.handleApiCall(h,f,n,S,v);break;case"login":m=await this.handleLogin(h,f,n);break;case"logout":m=await this.handleLogout(h,n);break;case"setState":j.log("[executeAction] setState resolvedParams:",f),m=await this.handleSetState(e.render!==void 0?{...f,__render:e.render}:f,n);break;case"setError":m=await this.handleSetError(h,f,n);break;case"openModal":m=await this.handleOpenModal(h,n);break;case"closeModal":m=await this.handleCloseModal(n);break;case"showAlert":m=await this.handleShowAlert(h,n);break;case"toast":m=await this.handleToast(f,n);break;case"switch":m=await this.handleSwitch(e,n);break;case"conditions":m=await this.handleConditions(e,n);break;case"sequence":m=await this.handleSequence(e,n);break;case"parallel":m=await this.handleParallel(e,n);break;case"startInterval":m=this.handleStartInterval(f,n);break;case"stopInterval":m=this.handleStopInterval(f);break;case"loadScript":m=await this.handleLoadScript(f,e,n);break;case"callExternal":m=await this.handleCallExternal(f,e,n);break;case"callExternalEmbed":m=await this.handleCallExternalEmbed(f,e,n);break;case"saveToLocalStorage":m=await this.handleSaveToLocalStorage(f,n);break;case"loadFromLocalStorage":m=await this.handleLoadFromLocalStorage(f,n);break;default:m=await this.handleCustomAction({...e,target:h,params:f},n);break}if(e.resultTo&&m!==void 0){const{target:y,key:S,merge:v}=e.resultTo,_=this.resolveValue(S,n.data),x=v==="replace"?"replace":v==="shallow"?"shallow":"deep";if(y==="_local"&&n.setState){const A=this.buildNestedUpdate(_,m),L=x!=="deep"?{...A,__mergeMode:x}:A;n.setState(L),j.log(`[resultTo] Saved to _local.${_} (merge=${x}):`,m)}else if(y==="_local"&&this.globalStateUpdater){const $=(window.G7Core?.state?.get()||{})._local||{},k=this.buildNestedUpdate(_,m);let O;x==="replace"?O=k:x==="shallow"?O={...$,...k}:O=this.deepMergeWithState(k,$),this.globalStateUpdater({_local:O}),j.log(`[resultTo] Saved to _local.${_} via globalStateUpdater (merge=${x}):`,m)}else if(y==="_global"&&this.globalStateUpdater){const A=this.buildNestedUpdate(_,m);this.globalStateUpdater(A),j.log(`[resultTo] Saved to _global.${_}:`,m)}else if(y==="_isolated"&&n.isolatedContext){const A=this.buildNestedUpdate(_,m);n.isolatedContext.mergeState(A,x),j.log(`[resultTo] Saved to _isolated.${_} (merge=${x}):`,m)}else j.warn(`[resultTo] Cannot save result: target=${y}, setState=${!!n.setState}, globalStateUpdater=${!!this.globalStateUpdater}, isolatedContext=${!!n.isolatedContext}`)}if(e.onSuccess){if(r?.isEnabled()&&i&&e.handler==="apiCall"){const v=window.G7Core,_={};v?.state?.get&&(_._global=v.state.get()),n.state&&(_._local=n.state),r.detectStaleClosure?.(i,`${e.handler} → onSuccess`,_,"callback-state-capture",i)}const y={...n,data:{...n.data,result:m,response:m}},S=Array.isArray(e.onSuccess)?e.onSuccess:[e.onSuccess];S.length>1?await this.handleSequence({handler:"sequence",type:"click",actions:S},y):S.length===1&&await this.executeAction(S[0],y)}return i&&r&&r.logAction({id:i,type:e.handler,params:this.sanitizeForDevTools(e.params),resolvedParams:c,startTime:l,endTime:performance.now(),duration:performance.now()-l,status:"success",result:this.sanitizeForDevTools(m)}),{success:!0,data:m}}catch(f){const h=f instanceof Ut?f:new Ut(`Failed to execute action: ${e.handler}`,e,f instanceof Error?f:void 0),m=h.originalError?.response||{},y=m.data||{},S=h.originalError?.status||m.status||500;let v=fE(h.originalError??f,e.handler,y.message,h.message);this.translationEngine&&this.translationContext&&v.startsWith("$t:")&&(v=this.translationEngine.resolveTranslations(v,this.translationContext));const _={status:S,message:v,errors:y.errors||m.errors,data:y,statusText:h.originalError?.statusText,error_code:y.error_code??m.error_code};if(h.unknownHandler)throw j.warn(`Unknown action handler "${e.handler}" — skipped (extension not loaded?). Not surfaced to the user.`),h;const A=Er().resolve(S,{errorHandling:e.errorHandling,onError:e.onError});if(A.handler){if(r?.isEnabled()&&i&&e.handler==="apiCall"){const $=window.G7Core,k={};$?.state?.get&&(k._global=$.state.get()),n.state&&(k._local=n.state),r.detectStaleClosure?.(i,`${e.handler} → onError`,k,"callback-state-capture",i)}const L={...n,data:{...n.data,error:_}};try{const $={type:"click",handler:A.handler.handler,target:A.handler.target,params:A.handler.params,actions:A.handler.actions};return await this.executeAction($,L),{success:!1,error:h}}catch($){return j.error("Error executing error handler:",$),{success:!1,error:h}}}throw i&&r&&r.logAction({id:i,type:e.handler,params:this.sanitizeForDevTools(e.params),resolvedParams:c,startTime:l,endTime:performance.now(),duration:performance.now()-l,status:"error",error:{name:h.name,message:h.message,stack:h.stack}}),h}finally{if(e.handler==="apiCall"&&n.setState&&d){const f=n.state?.loadingActions||{},{[d]:h,...m}=f;n.setState({loadingActions:m})}}}async handleNavigate(e,n,r){let i=e;if(n.query||n.mergeQuery===!0)if(n.mergeQuery===!0)i=this.buildMergedQueryPath(e,n.query??{});else{const c=new URLSearchParams;for(const[f,h]of Object.entries(n.query))if(h!=null&&h!=="")if(Array.isArray(h)){const m=f.endsWith("[]")?f:`${f}[]`;for(const y of h)y!=null&&y!==""&&c.append(m,String(y))}else c.set(f,String(h));const d=c.toString();d&&(i=`${e}?${d}`)}if(j.log("handleNavigate:",{target:e,params:n,finalPath:i,replace:n.replace,windowLocationSearch:window.location.search}),n.replace===!0){const c=window.G7Core;if(c?.updateQueryParams){const d=typeof n.transition_overlay_target=="string"?n.transition_overlay_target:void 0;await c.updateQueryParams(i,d?{transitionOverlayTarget:d}:void 0),j.log("handleNavigate: Used updateQueryParams for replace mode",d?{transitionOverlayTarget:d}:void 0),this.applyScrollOption(n.scroll,n.scrollBehavior,"top");return}j.warn("handleNavigate: G7Core.updateQueryParams not available, falling back to React Router")}const l=this.resolveNavigateFallbackAction(i,n);if(l){j.warn(`handleNavigate: No route matched, falling back to "${l.handler}"`),await this.dispatchAction({type:"click",handler:l.handler,params:l.params},r),this.applyScrollOption(n.scroll,n.scrollBehavior,"top");return}if(!r.navigate)throw new Ut("Navigate function is not provided in context");r.navigate(i,{replace:n.replace===!0}),this.applyScrollOption(n.scroll,n.scrollBehavior,"top")}resolveNavigateFallbackAction(e,n){const r=n.fallback;if(r===!1||n.replace===!0)return null;const l=window.__templateApp?.getRouter?.();if(!l||typeof l.match!="function"||typeof l.getRoutes=="function"&&l.getRoutes().length===0)return null;const c=e.split("?")[0];return l.match(c)?null:this.resolveNavigateFallback(r,e,n)}resolveNavigateFallback(e,n,r){return e==null?{handler:"openWindow",params:{path:n,target:"_self"}}:typeof e=="string"?{handler:e,params:{path:n}}:typeof e=="object"&&typeof e.handler=="string"?{handler:e.handler,params:{path:n,...e.params||{}}}:(j.warn("resolveNavigateFallback: unrecognized fallback option, using openWindow",e),{handler:"openWindow",params:{path:n,target:"_blank"}})}applyScrollOption(e,n,r){const i=e===void 0?r:e;if(i==="preserve")return;const l=n==="smooth"?"smooth":"instant",c=y=>{if(typeof y!="object"||y===null)return!1;const S=y;return"container"in S||"to"in S||"block"in S||"offset"in S},d=(y,S,v=0)=>{y===window?window.scrollTo({top:S,left:v,behavior:l}):y.scrollTo({top:S,left:v,behavior:l})},f=(y,S,v,_)=>{if(S===window){y.scrollIntoView({behavior:l,block:v}),_&&window.scrollBy({top:-_,left:0,behavior:l});return}const x=S,A=y.getBoundingClientRect(),L=x.getBoundingClientRect(),$=x.scrollTop+(A.top-L.top);let k;v==="center"?k=$-(x.clientHeight-y.clientHeight)/2:v==="end"?k=$-(x.clientHeight-y.clientHeight):k=$,k-=_,x.scrollTo({top:Math.max(0,k),left:0,behavior:l})},h=()=>{window.scrollTo({top:0,left:0,behavior:l});const y=document.getElementById("app")??document.body;if(!y)return;y.querySelectorAll("*").forEach(v=>{if(v.scrollTop===0&&v.scrollLeft===0)return;const _=window.getComputedStyle(v),x=_.overflowY,A=_.overflowX;(x==="auto"||x==="scroll"||A==="auto"||A==="scroll")&&v.scrollTo({top:0,left:0,behavior:l})})},m=()=>{try{if(c(i)){const y=i,S=y.block??"start",v=typeof y.offset=="number"?y.offset:0;let _=window;if(typeof y.container=="string"&&y.container.length>0){const A=document.querySelector(y.container);if(!A){j.warn(`applyScrollOption: container not found: ${y.container}`);return}_=A}const x=y.to??"top";if(x==="top"){_===window?h():d(_,0);return}if(typeof x=="number"){d(_,x-v);return}if(typeof x=="object"&&x!==null&&("x"in x||"y"in x)){const{x:A=0,y:L=0}=x;d(_,L-v,A);return}if(typeof x=="string"&&(x.startsWith("#")||x.startsWith("."))){const A=document.querySelector(x);A?f(A,_,S,v):j.warn(`applyScrollOption: target element not found: ${x}`);return}j.warn('applyScrollOption: invalid "to" value in extended form',x);return}if(i==="top"){h();return}if(typeof i=="number"){window.scrollTo({top:i,left:0,behavior:l});return}if(typeof i=="object"&&i!==null&&("x"in i||"y"in i)){const{x:y=0,y:S=0}=i;window.scrollTo({top:S,left:y,behavior:l});return}if(typeof i=="string"&&(i.startsWith("#")||i.startsWith("."))){const y=document.querySelector(i);y&&y.scrollIntoView({behavior:l,block:"start"});return}}catch(y){j.warn("applyScrollOption: failed to apply scroll",y)}};typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame(m):m()}async handleOpenWindow(e,n){let r=e;if(n.query){const l=new URLSearchParams;for(const[d,f]of Object.entries(n.query))f!=null&&f!==""&&l.set(d,String(f));const c=l.toString();c&&(r=`${e}?${c}`)}const i=n.target==="_self"?"_self":"_blank";j.log("handleOpenWindow:",{target:e,params:n,finalPath:r,windowTarget:i}),i==="_self"?window.location.assign(r):window.open(r,"_blank")}async handleNavigateBack(){j.log("handleNavigateBack"),window.history.back()}async handleNavigateForward(){j.log("handleNavigateForward"),window.history.forward()}async handleReplaceUrl(e,n){let r=e;if(n.query||n.mergeQuery===!0)if(n.mergeQuery===!0)r=this.buildMergedQueryPath(e,n.query??{});else{const i=new URLSearchParams;for(const[c,d]of Object.entries(n.query))if(d!=null&&d!=="")if(Array.isArray(d)){const f=c.endsWith("[]")?c:`${c}[]`;for(const h of d)h!=null&&h!==""&&i.append(f,String(h))}else i.set(c,String(d));const l=i.toString();l&&(r=`${e}?${l}`)}j.log("handleReplaceUrl:",{target:e,params:n,finalPath:r}),window.history.replaceState(null,"",r),this.applyScrollOption(n.scroll,n.scrollBehavior,"preserve")}buildMergedQueryPath(e,n){const r=new URLSearchParams(window.location.search);for(const[c,d]of Object.entries(n))if(d==null||d==="")r.delete(c);else if(Array.isArray(d)){const f=c.endsWith("[]")?c:`${c}[]`;r.delete(c),r.delete(f);for(const h of d)h!=null&&h!==""&&r.append(f,String(h))}else r.set(c,String(d));const i=r.toString(),l=e.split("?")[0];return i?`${l}?${i}`:l}async ensureCsrfToken(){try{await fetch("/sanctum/csrf-cookie",{credentials:"include"})}catch(e){throw new Ut("Failed to fetch CSRF token",void 0,e instanceof Error?e:void 0)}}getCsrfTokenFromCookie(){const r=`; ${document.cookie}`.split("; XSRF-TOKEN=");if(r.length===2){const i=r.pop()?.split(";").shift();return i?decodeURIComponent(i):null}return null}buildQueryString(e){const n=new URLSearchParams;for(const[r,i]of Object.entries(e))if(!(i==null||i===""))if(Array.isArray(i))for(const l of i)l!=null&&l!==""&&n.append(`${r}[]`,String(l));else typeof i=="object"?n.append(r,JSON.stringify(i)):n.append(r,String(i));return n.toString()}async handleEnsureIdentityVerified(e){const n=typeof e.purpose=="string"?e.purpose:"sensitive_action",r=e.target&&typeof e.target=="object"?e.target:void 0;return await St.handle({success:!1,error_code:"identity_verification_required",message:"",verification:{policy_key:e.policy_key??"",purpose:n,provider_id:e.provider_id??null,render_hint:e.render_hint??null,return_request:null}},void 0,r)!==null}handleResolveIdentityChallenge(e){const n=typeof e.result=="string"?e.result:"cancelled";let r;switch(n){case"verified":{const i=typeof e.token=="string"?e.token:"";if(!i){j.warn("resolveIdentityChallenge: result=verified 인데 token 이 비어있습니다. failed 로 강등합니다."),r={status:"failed",failureCode:"MISSING_TOKEN"};break}r={status:"verified",token:i,providerData:e.providerData&&typeof e.providerData=="object"?e.providerData:void 0};break}case"pending":{const i=typeof e.pollUrl=="string"?e.pollUrl:"",l=typeof e.expiresAt=="string"?e.expiresAt:"";if(!i||!l){j.warn("resolveIdentityChallenge: result=pending 인데 pollUrl/expiresAt 누락 — failed 로 강등합니다."),r={status:"failed",failureCode:"MALFORMED_PENDING"};break}r={status:"pending",pollUrl:i,pollIntervalMs:typeof e.pollIntervalMs=="number"?e.pollIntervalMs:void 0,expiresAt:l};break}case"failed":r={status:"failed",failureCode:typeof e.failureCode=="string"?e.failureCode:"UNKNOWN",reason:typeof e.reason=="string"?e.reason:void 0};break;default:r={status:"cancelled"};break}return St.resolveDeferred(r),!0}async handleApiCall(e,n,r,i="none",l){const{method:c="GET",body:d,headers:f,contentType:h}=n;c!=="GET"&&c!=="HEAD"&&await this.ensureCsrfToken();const m=this.getCsrfTokenFromCookie();let y={};if(i==="required"||i==="optional"){const W=zr().getToken();W&&(y={Authorization:`Bearer ${W}`})}let S=e;const v=n.query||(c==="GET"?d:null);if(v&&typeof v=="object"){const B=this.buildQueryString(v);if(B){const W=e.includes("?")?"&":"?";S=`${e}${W}${B}`}}const _=window.G7Core?.state?.getGlobal?.()||r.state?._global||{},x=window.G7Core?.state?.getLocal?.()||r.state?._local||{},A={_global:_,_local:x},L=this.getMatchingGlobalHeaders(e,A),$={};if(typeof window<"u"){const B=localStorage.getItem("g7_locale");B&&($["Accept-Language"]=B)}const k=h==="multipart/form-data",O={method:c,headers:{...k?{}:{"Content-Type":"application/json"},Accept:"application/json",...$,...m&&{"X-XSRF-TOKEN":m},...y,...L,...f},credentials:"include"};if(d&&c!=="GET")if(k){const B=new FormData;for(const[W,pe]of Object.entries(d))pe instanceof File||pe instanceof Blob?B.append(W,pe):pe!=null&&B.append(W,typeof pe=="object"?JSON.stringify(pe):String(pe));O.body=B}else O.body=JSON.stringify(d);const P=Fn();let G=null;P?.isEnabled()&&(G=P.trackRequest(S,c));try{let B=await fetch(S,O),W;try{W=await B.json()}catch{W=null}if(St.isIdentityRequired(B.status,W)){const pe=await St.handle(W,{body:O.body,headers:O.headers,credentials:O.credentials},l);if(pe){B=pe;try{W=await B.json()}catch{W=null}}}if(G&&P?.isEnabled()&&(P.completeRequest(G,B.status,W),G=null),!B.ok){const pe=W||{},Se=new Error(pe.message||`API call failed: ${B.statusText}`);throw Se.response=pe,Se.status=B.status,Se.statusText=B.statusText,new Ut(pe.message||`API call failed: ${B.statusText}`,void 0,Se)}return W}catch(B){throw G&&P?.isEnabled()&&P.failRequest(G,B instanceof Error?B.message:String(B)),B}}async handleLogin(e,n,r){const{body:i}=n;if(!i||!i.email||!i.password)throw new Ut("Login requires email and password in body params");const l=e==="user"?"user":"admin",c=l==="admin"?"/api/auth/admin/login":"/api/auth/login",d=window.G7Core?.state?.getGlobal?.()||r.state?._global||{},f=window.G7Core?.state?.getLocal?.()||r.state?._local||{},h={_global:d,_local:f},m=this.getMatchingGlobalHeaders(c,h),y=wr.getInstance();try{const S=Object.keys(m).length>0?{headers:m}:void 0;return{user:await y.login(l,{email:i.email,password:i.password},S)}}catch(S){const v=S.message||"Login failed",_=new Error(v);throw _.response=S.response?.data||{},_.status=S.status||S.response?.status||500,new Ut(v,void 0,_)}}async handleLogout(e,n){await wr.getInstance().logout()}async handleSetState(e,n){j.log("[handleSetState] START, params:",e);const{target:r="component",scope:i,merge:l,__render:c,...d}=e,f=Fn(),h=window.G7Core;if(typeof r=="string"&&(r.startsWith("$parent.")||r.startsWith("$root.")))return this.handleParentScopeSetState(r,d,l,n);const m=n.state&&Object.keys(n.state).length>0?n.state:h?.state?.get()||{},y=r==="global"?"_global":r.startsWith("_local.")?r:"_local",S=y==="_global"?m._global:y.startsWith("_local.")?this.getNestedProperty(m._local||{},y.slice(7)):m._local,v=f?.isEnabled()?f.startStateChange(y,S,d,{actionId:n.actionId,handlerType:"setState",source:`target=${r}`}):void 0,_=l==="replace"?"replace":l==="shallow"?"shallow":"deep",x=_!=="deep"?{...d,__mergeMode:_,...v?{__setStateId:v}:{}}:{...d,...v?{__setStateId:v}:{}};if(r==="global"){if(!this.globalStateUpdater){j.warn("Global state updater is not set"),v&&f&&f.completeStateChange(v);return}const A=h?.state?.get()||{},{__setStateId:L,__mergeMode:$,...k}=x,O=_==="deep"?this.deepMergeWithState(k,A):k,P={...O,...v?{__setStateId:v}:{},..._!=="deep"?{__mergeMode:_}:{}};return j.log("setState global:",P),this.globalStateUpdater(P,{render:c}),v&&f&&setTimeout(()=>f.completeStateChange(v),0),{__target:"global",..._!=="deep"?{__mergeMode:_}:{},...O}}else if(r==="isolated"){const A=n.isolatedContext;if(A){const{__mergeMode:L,__setStateId:$,...k}=x;return A.mergeState(k,_),j.log("[handleSetState] isolated state updated:",k,"mergeMode:",_),v&&f&&setTimeout(()=>f.completeStateChange(v),0),{__target:"isolated",...k}}else if(j.warn('[handleSetState] isolated target used but no IsolatedStateContext found. Make sure the component has "isolatedState" attribute. Falling back to local state.'),n.setState){const $=window.__g7PendingLocalState||n.state||{},k=_==="deep"?this.deepMergeWithState(x,$):x;return n.setState(k),v&&f&&setTimeout(()=>f.completeStateChange(v),0),k}else throw v&&f&&f.completeStateChange(v),new Ut("isolated target used but no IsolatedStateContext found and no setState function in context")}else if(r==="local"||r==="component"||r==="_local"){if(i==="parent"||i==="root"){const L=window.__g7LayoutContextStack||[];if(L.length>0){const $=i==="parent"?L[L.length-1]:L[0];if($?.setState){const{__mergeMode:k,__setStateId:O,...P}=x,G=_==="deep"?this.deepMergeWithState(P,$.state||{}):P;return j.log(`[handleSetState] scope=${i}: 타겟 컨텍스트에 상태 업데이트`,G),$.setState(G),v&&f&&setTimeout(()=>f.completeStateChange(v),0),G}}j.warn(`[handleSetState] scope=${i}: 레이아웃 컨텍스트 스택이 비어있습니다. current로 폴백합니다.`)}const A=n.setState&&!n._isDispatchFallbackContext;if(j.log("[handleSetState] isRealComponentContext:",A,"context.setState:",!!n.setState,"_isDispatchFallbackContext:",n._isDispatchFallbackContext),A){j.log("[handleSetState] Using COMPONENT setState path"),j.log("[handleSetState] resolvedPayload:",x),j.log("[handleSetState] context.state:",n.state),j.log("[handleSetState] mergeMode:",_);const $=window.__g7PendingLocalState||n.state||{},k=_==="deep"?this.deepMergeWithState(x,{}):x;j.log("[handleSetState] convertedPayload (변경 필드만, dot notation 변환):",k),n.setState(k);const O=_==="deep"?this.deepMergeWithState(x,$):_==="shallow"?{...n.state||{},...x}:x,{__mergeMode:P,__setStateId:G,...B}=O;window.__g7PendingLocalState=B,j.log("[handleSetState] __g7PendingLocalState updated:",B),this.globalStateUpdater&&(this.globalStateUpdater({_local:B},{render:!1}),j.log("[handleSetState] _global._local synced (render:false):",B));const{__mergeMode:W,__setStateId:pe,...Se}=x;if(_==="replace")window.__g7ForcedLocalFields=Se;else{const we=window.__g7ForcedLocalFields||{};window.__g7ForcedLocalFields=this.deepMergeWithState(Se,we)}return j.log("[handleSetState] __g7ForcedLocalFields updated:",Se),v&&f&&setTimeout(()=>f.completeStateChange(v),0),{__target:"local",...O}}else if(this.globalStateUpdater){j.log("[handleSetState] Using GLOBAL STATE UPDATER path for _local");const $=window.__g7PendingLocalState||m._local||{};j.log("[handleSetState] currentLocal (with pending):",$);const k=_==="deep"?this.deepMergeWithState(x,$):x;return j.log("[handleSetState] finalLocal (merged):",k),this.globalStateUpdater({_local:k},{render:c}),window.__g7PendingLocalState=k,j.log("[handleSetState] __g7PendingLocalState updated for globalStateUpdater path"),v&&f&&setTimeout(()=>f.completeStateChange(v),0),{__target:"local",...k}}else throw v&&f&&f.completeStateChange(v),new Ut("setState function is not provided in context and globalStateUpdater is not set")}else if(r.startsWith("_local.")){const A=r.slice(7),{__mergeMode:L,__setStateId:$,...k}=x,O=k.value!==void 0?k.value:Object.values(k)[0];if(n.setState){const G=window.__g7PendingLocalState||n.state||{},B=this.createNestedUpdate(A,O,G),W={...G,...B};if(n.setState(B),this.globalStateUpdater&&i!=="parent"&&i!=="root"){const pe=window.__templateApp?.getGlobalState?.()?._local,Se=pe&&typeof pe=="object"?{...pe,...B}:W;this.globalStateUpdater({_local:Se},{render:!1}),j.log("[handleSetState] _global._local synced for dot notation (render:false):",Se)}return v&&f&&setTimeout(()=>f.completeStateChange(v),0),W}else throw v&&f&&f.completeStateChange(v),new Ut("setState function is not provided in context")}else{if(!n.setState)throw v&&f&&f.completeStateChange(v),new Ut("setState function is not provided in context");const L=window.__g7PendingLocalState||n.state||{},$=_==="deep"?this.deepMergeWithState(x,L):x;return n.setState($),v&&f&&setTimeout(()=>f.completeStateChange(v),0),$}}async handleParentScopeSetState(e,n,r,i){const l=Fn(),c=window.G7Core,d=r==="replace"?"replace":r==="shallow"?"shallow":"deep",f=e.startsWith("$parent."),h=f?"$parent.":"$root.",m=e.slice(h.length);let y,S;if(m==="_local"||m==="_global")y=m,S=void 0;else if(m.startsWith("_local."))y="_local",S=m.slice(7);else if(m.startsWith("_global."))y="_global",S=m.slice(8);else{j.warn(`[handleParentScopeSetState] 지원하지 않는 타겟 형식: ${e}. _local 또는 _global으로 시작해야 합니다.`);return}const v=window.__g7LayoutContextStack||[];if(v.length===0){j.warn(`[handleParentScopeSetState] 레이아웃 컨텍스트 스택이 비어있습니다. target=${e}`);return}const _=f?v[v.length-1]:v[0];if(!_){j.warn(`[handleParentScopeSetState] 타겟 컨텍스트를 찾을 수 없습니다. target=${e}`);return}const x=y==="_global"?_.state?._global:_.state?._local,A=l?.isEnabled()?l.startStateChange(e,x,n,{actionId:i.actionId,handlerType:"setState",source:`target=${e}`}):void 0,{__mergeMode:L,__setStateId:$,...k}=n;if(y==="_global"){if(!this.globalStateUpdater){j.warn("[handleParentScopeSetState] globalStateUpdater가 설정되지 않았습니다."),A&&l&&l.completeStateChange(A);return}const O=c?.state?.get()||{};if(S){const P=k.value!==void 0?k.value:Object.values(k)[0],G=this.createNestedUpdate(S,P,O),B={...O,...G};j.log(`[handleParentScopeSetState] ${e}: 전역 상태 중첩 경로 업데이트`,B),this.globalStateUpdater(B)}else{const P=d==="deep"?this.deepMergeWithState(k,O):k;j.log(`[handleParentScopeSetState] ${e}: 전역 상태 업데이트 (mergeMode=${d})`,P),this.globalStateUpdater(d!=="deep"?{...P,__mergeMode:d}:P)}return A&&l&&setTimeout(()=>l.completeStateChange(A),0),{__target:e,...k}}else{if(!_.setState){j.warn(`[handleParentScopeSetState] 타겟 컨텍스트에 setState가 없습니다. target=${e}`),A&&l&&l.completeStateChange(A);return}const O=_.state||{};if(S){const P=k.value!==void 0?k.value:Object.values(k)[0],G=this.createNestedUpdate(S,P,O),B={...O,...G};return j.log(`[handleParentScopeSetState] ${e}: 로컬 상태 중첩 경로 업데이트`,G),_.setState(G),_.state=B,_.dataContext&&(_.dataContext._local=B),wf(),A&&l&&setTimeout(()=>l.completeStateChange(A),0),B}else{const P=d!=="deep"?{...k,__mergeMode:d}:k,G=d==="replace"?k:d==="shallow"?{...O,...k}:this.deepMergeWithState(k,O);return j.log(`[handleParentScopeSetState] ${e}: 로컬 상태 업데이트 (mergeMode=${d})`,G),_.setState(P),_.state=G,_.dataContext&&(_.dataContext._local=G),wf(),A&&l&&setTimeout(()=>l.completeStateChange(A),0),G}}}deepMergeWithState(e,n){const r=["errors"];let i=e;if("..."in e){const c=e["..."];if(c&&typeof c=="object"&&!Array.isArray(c)){const{"...":d,...f}=e;i={...c,...f}}else{const{"...":d,...f}=e;i=f}}const l={...n};for(const[c,d]of Object.entries(i)){if(r.includes(c)){l[c]=d;continue}if(c.includes(".")&&c!=="..."){const f=this.createNestedUpdate(c,d,l);this.deepMergeInto(l,f,l);continue}if(d!==null&&typeof d=="object"&&!Array.isArray(d)&&Object.getPrototypeOf(d)!==Object.prototype&&Object.getPrototypeOf(d)!==null){l[c]=d;continue}d!==null&&typeof d=="object"&&!Array.isArray(d)&&n[c]!==null&&typeof n[c]=="object"&&!Array.isArray(n[c])?l[c]=this.deepMergeWithState(d,n[c]):l[c]=d}return l}deepMergeInto(e,n,r){for(const[i,l]of Object.entries(n)){if(l===null){e[i]=l;continue}if(e[i]===null){e[i]=l;continue}typeof l=="object"&&!Array.isArray(l)&&e[i]!==void 0&&e[i]!==null&&typeof e[i]=="object"&&!Array.isArray(e[i])?(e[i]===r[i]&&(e[i]={...e[i]}),this.deepMergeInto(e[i],l,r[i]||{})):typeof l=="object"&&!Array.isArray(l)&&e[i]===void 0&&r[i]!==null&&typeof r[i]=="object"&&!Array.isArray(r[i])?e[i]={...r[i],...l}:e[i]=l}}createNestedUpdate(e,n,r){const i=e.split(".");if(i.length===1)return{[i[0]]:n};const l={};let c=l,d=r;for(let f=0;f<i.length-1;f++){const h=i[f],m=d?.[h],y=m!=null&&typeof m=="object"&&!Array.isArray(m);y?c[h]={...m}:c[h]={},c=c[h],d=y?m:{}}return c[i[i.length-1]]=n,l}buildNestedUpdate(e,n){const r=e.split(".");if(r.length===1)return{[r[0]]:n};const i={};let l=i;for(let c=0;c<r.length-1;c++)l[r[c]]={},l=l[r[c]];return l[r[r.length-1]]=n,i}async handleSetError(e,n,r){let i=e;i=this.resolveValue(i,r.data),this.translationEngine&&this.translationContext&&i.startsWith("$t:")&&(i=this.translationEngine.resolveTranslations(i,this.translationContext,r.data));const l=n?.stateTarget||"local";l==="isolated"&&r.isolatedContext?(r.isolatedContext.mergeState({apiError:i}),j.log("[handleSetError] Error set to isolated state:",i)):l==="global"&&this.globalStateUpdater?(this.globalStateUpdater({apiError:i}),j.log("[handleSetError] Error set to global state:",i)):r.setState?(r.setState({apiError:i}),j.log("[handleSetError] Error set to local state:",i)):j.warn("[handleSetError] Cannot set error: no state updater available")}async handleOpenModal(e,n){if(!this.globalStateUpdater){j.warn("Global state updater is not set for openModal");return}const r=n.data?._global?.modalStack||[];if(r.includes(e)){j.warn(`Modal "${e}" is already open`);return}const i=window.G7Core,l=n.setState&&n.state!==void 0,c=l?void 0:i?.state?.getLocal?.()||{},d=!l&&c!==void 0&&this.globalStateUpdater;if(l||d){const m=window.__g7LayoutContextStack||[],y=l?n.state:c,S=l?n.setState:v=>{this.globalStateUpdater({_local:v})};m.push({state:y,setState:S,dataContext:{_local:y||n.data?._local,_global:l?n.data?._global:n.data?._global||i?.state?.get?.(),_computed:n.data?._computed}}),window.__g7LayoutContextStack=m,j.log(`[handleOpenModal] 레이아웃 컨텍스트 스택에 push, 스택 크기: ${m.length}, state:`,y,l?"(direct)":"(fallback via G7Core)")}else j.warn(`[handleOpenModal] 컨텍스트 스택에 push 실패 - setState: ${!!n.setState}, state: ${n.state!==void 0}, G7Core: ${!!i?.state?.getLocal}`);const f=[...r,e];this.globalStateUpdater({modalStack:f,activeModal:e});const h=Fn();if(h?.isEnabled()){const m=r.length>0?r[r.length-1]:void 0;h.trackModalOpen?.({modalId:e,modalName:e,scopeType:"isolated",parentModalId:m,initialState:n.state?{...n.state}:{}})}}async handleCloseModal(e){if(!this.globalStateUpdater){j.warn("Global state updater is not set for closeModal");return}const n=e?.data?._global?.modalStack||[],r=n.length>0?n[n.length-1]:null,i=n.slice(0,-1),l=i.length>0?i[i.length-1]:null,c=window.__g7LayoutContextStack||[];if(c.length>0){const d=c[c.length-1];d&&(d.dataContext=void 0),c.pop(),window.__g7LayoutContextStack=c,j.log(`[handleCloseModal] 레이아웃 컨텍스트 스택에서 pop, 스택 크기: ${c.length}`)}if(r){const d=Fn();d?.isEnabled()&&d.trackModalClose?.(r,e?.state)}this.globalStateUpdater({modalStack:i,activeModal:l})}async handleShowAlert(e,n){let r=e;this.translationEngine&&this.translationContext&&e.startsWith("$t:")&&(r=this.translationEngine.resolveTranslations(e,this.translationContext,n.data)),alert(r)}async handleToast(e,n){const{type:r="info",message:i,icon:l,duration:c}=e;if(r==="error"){const f=n.data?.error;if((f?.error_code==="identity_verification_required"||f?.data?.error_code==="identity_verification_required")&&St.consumeDomainNoticeShown()){j.log("[Toast] IDV 도메인 안내 표출됨 — 중복 가드 토스트 1건 skip");return}}let d=i;if(this.translationEngine&&this.translationContext&&i?.startsWith("$t:")&&(d=this.translationEngine.resolveTranslations(i,this.translationContext,n.data)),this.globalStateUpdater){const h={id:`toast_${Date.now()}_${Math.random().toString(36).substring(2,9)}`,type:r,message:d,...l&&{icon:l},...c&&{duration:c}},v=[...window.G7Core?.state?.get()?.toasts||[],h];this.globalStateUpdater({toasts:v})}else j.log(`[Toast ${r}] ${d}`)}async handleSwitch(e,n){const{cases:r}=e;if(!r){j.warn("switch handler requires cases property");return}const i=this.resolveParams(e.params,n.data);let l;if(i?.value!==void 0?(l=i.value,j.log("switch handler: using params.value as case key:",l)):(l=n.data?.$args?.[0],j.log("switch handler: using $args[0] as case key:",l)),l==null){if(r.default)return j.log("switch handler: case key is undefined, using default case"),await this.executeAction(r.default,n);j.warn("switch handler: case key is not defined and no default case");return}const c=String(l);let d=r[c];if(!d&&r.default&&(j.log(`switch handler: no case found for key "${c}", using default case`),d=r.default),!d){j.warn(`switch handler: no case found for key "${c}" and no default case`);return}return await this.executeAction(d,n)}async handleConditions(e,n){const{conditions:r}=e;if(!r||!Array.isArray(r)){j.warn("conditions handler requires conditions array");return}const i=n.data||{},l=tm(r,i,this.bindingEngine);if(!l.matched){j.log("conditions handler: no matching branch found");return}const c=r[l.branchIndex];if(j.log(`conditions handler: matched branch ${l.branchIndex}`),!c.then){j.warn('conditions handler: matched branch has no "then" action');return}return Array.isArray(c.then)?await this.handleSequence({...e,actions:c.then},n):await this.executeAction(c.then,n)}handleStartInterval(e,n){const r=typeof e.id=="string"?e.id:"",i=Number(e.intervalMs??1e3),l=Array.isArray(e.actions)?e.actions:[];if(r===""||!l.length||i<=0)return j.warn("startInterval requires non-empty id, positive intervalMs, and actions array"),{success:!1};const c=this.intervals.get(r);c&&(clearInterval(c),this.intervals.delete(r));const d=setInterval(()=>{for(const f of l)this.executeAction(f,n).catch(h=>{j.error(`[startInterval:${r}] tick action failed`,h)})},i);return this.intervals.set(r,d),{success:!0,id:r}}handleStopInterval(e){const n=typeof e.id=="string"?e.id:"";if(n==="")return j.warn("stopInterval requires id parameter"),{success:!1};const r=this.intervals.get(n);return r&&(clearInterval(r),this.intervals.delete(n)),{success:!0,id:n}}stopAllIntervals(){for(const e of this.intervals.values())clearInterval(e);this.intervals.clear()}async handleSequence(e,n){const r=e.actions||e.params?.actions;if(!r||!Array.isArray(r)||r.length===0)return j.warn("sequence handler requires non-empty actions array"),[];const i=Fn(),l=i?.isEnabled()&&i.startSequenceExecution?.({eventType:e.type})||"";window.__g7SequenceLocalSync=void 0;const c=[];let d,f=n.state?{...n.state}:{},h=n.isolatedContext?.state?{...n.isolatedContext.state}:{},m=n.data?._computed||{};const y=window.G7Core,S=()=>({_global:y?.state?.get()||{},_local:{...f},_isolated:Object.keys(h).length>0?{...h}:void 0});for(let v=0;v<r.length;v++){const _=r[v],x=Date.now();l&&i?.isEnabled()&&i.captureSequenceActionBefore?.(l,v,_.handler||"unknown",_.params||{},S());const A={...n,state:f,data:{...n.data,_local:f,_computed:m,$computed:m,$prev:d,$results:[...c],_isolated:h},isolatedContext:n.isolatedContext?{...n.isolatedContext,state:h}:null};try{const L=await this.executeAction(_,A);if(d=L.data,c.push(L.data),_.handler==="setState"&&L.data!==void 0){if(L.data.__target==="global"){const{__target:k,__mergeMode:O,...P}=L.data;O==="replace"?f={...f,_global:P}:f={...f,_global:{...f._global||{},...P}},j.log("[handleSequence] global state synchronized (mergeMode=%s):",O||"deep",f._global)}else if(L.data.__target==="isolated"){const{__target:k,__mergeMode:O,...P}=L.data;O==="replace"?h=P:h={...h,...P},j.log("[handleSequence] isolated state synchronized (mergeMode=%s):",O||"deep",h)}else if(L.data.__target==="local"){const{__target:k,__mergeMode:O,__setStateId:P,...G}=L.data;O==="replace"?f=G:f={...f,...G},j.log("[handleSequence] local state synchronized (mergeMode=%s):",O||"deep",f)}else f=L.data,j.log("[handleSequence] state synchronized (legacy):",f);const $=n.data?._computedDefinitions;if($&&Object.keys($).length>0){const k={},O={...n.data,_local:f,_computed:k,$computed:k,_isolated:h};for(const[P,G]of Object.entries($))if(typeof G=="string"){const B=G.trim();if(B.startsWith("{{")&&B.endsWith("}}"))try{const W=B.slice(2,-2).trim();k[P]=Gn(W)?this.bindingEngine.evaluatePipeExpression(W,O,{skipCache:!0}):this.bindingEngine.evaluateExpression(W,O,{skipCache:!0})}catch{k[P]=m[P]}}m=k,j.log("[handleSequence] _computed recalculated after setState:",m)}}if(_.handler!=="setState"){const $=window.__g7SequenceLocalSync;if($&&$!==f){f=$,window.__g7SequenceLocalSync=void 0,j.log("[handleSequence] currentState synchronized from __g7SequenceLocalSync after custom handler:",_.handler);const k=n.data?._computedDefinitions;if(k&&Object.keys(k).length>0){const O={},P={...n.data,_local:f,_computed:O,$computed:O,_isolated:h};for(const[G,B]of Object.entries(k))if(typeof B=="string"){const W=B.trim();if(W.startsWith("{{")&&W.endsWith("}}"))try{const pe=W.slice(2,-2).trim();O[G]=Gn(pe)?this.bindingEngine.evaluatePipeExpression(pe,P,{skipCache:!0}):this.bindingEngine.evaluateExpression(pe,P,{skipCache:!0})}catch{O[G]=m[G]}}m=O,j.log("[handleSequence] _computed recalculated after custom handler:",m)}}}l&&i?.isEnabled()&&i.captureSequenceActionAfter?.(l,v,S(),Date.now()-x,L.data)}catch(L){throw l&&i?.isEnabled()&&(i.captureSequenceActionAfter?.(l,v,S(),Date.now()-x,void 0,L),i.endSequenceExecution?.(l,L)),j.error(`sequence handler: action[${v}] failed:`,L),L}}return window.__g7SequenceLocalSync=void 0,l&&i?.isEnabled()&&i.endSequenceExecution?.(l),c}async handleParallel(e,n){const r=e.actions||e.params?.actions;if(!r||!Array.isArray(r)||r.length===0)return j.warn("parallel handler requires non-empty actions array"),[];j.log(`parallel handler: executing ${r.length} actions in parallel`);const i=n.isolatedContext?{...n.isolatedContext,state:{...n.isolatedContext.state}}:null,l=r.map((f,h)=>{const m={...n,isolatedContext:i};return this.executeAction(f,m).catch(y=>{throw j.error(`parallel handler: action[${h}] failed:`,y),y})}),c=await Promise.allSettled(l),d=c.filter(f=>f.status==="rejected").length;return d>0&&j.warn(`parallel handler: ${d}/${r.length} actions failed`),c}async handleLoadScript(e,n,r){const{src:i,id:l,async:c=!0,defer:d=!1}=e;if(!i)throw new Ut('loadScript handler requires "src" parameter',n);const f=l||`script_${i.replace(/[^a-zA-Z0-9]/g,"_")}`;return xs.loadedScripts.has(f)?(j.log(`loadScript: script already loaded, skipping: ${f}`),n.onLoad&&await this.executeAction(n.onLoad,r),!0):document.getElementById(f)?(j.log(`loadScript: script element already exists: ${f}`),xs.loadedScripts.add(f),n.onLoad&&await this.executeAction(n.onLoad,r),!0):(j.log(`loadScript: loading script: ${i}`),new Promise((m,y)=>{const S=document.createElement("script");S.id=f,S.src=i,S.async=c,S.defer=d,S.onload=async()=>{if(j.log(`loadScript: script loaded successfully: ${f}`),xs.loadedScripts.add(f),n.onLoad)try{await this.executeAction(n.onLoad,r)}catch(v){j.error("loadScript: onLoad action failed:",v)}m(!0)},S.onerror=v=>{j.error(`loadScript: failed to load script: ${i}`,v),y(new Ut(`Failed to load script: ${i}`,n))},document.head.appendChild(S)}))}async handleCallExternal(e,n,r){const i=e.constructor,l=e.args||{},c=e.method,d=e.methodArgs||[],f=e.callbackEvent,h=e.embedTarget,m=e.callbackSetState,y=e.callbackAction;if(!i)throw new Ut('callExternal handler requires "constructor" parameter',n);const S=this.getNestedProperty(window,i);if(!S||typeof S!="function")throw new Ut(`Constructor not found or not a function: ${i}. Make sure the script is loaded first using loadScript handler.`,n);j.log(`callExternal: calling constructor ${i}`);const v={...l};for(const[x,A]of Object.entries(l))A===!0&&(v[x]=L=>{if(j.log(`callExternal: callback triggered for ${x}`,L),f&&typeof window<"u"&&window.G7Core?.componentEvent&&window.G7Core.componentEvent.emit(f,L),m&&r.setState){const $=P=>{const G={};for(const[B,W]of Object.entries(P))typeof W=="string"?G[B]=this.getNestedProperty(L,W):typeof W=="object"&&W!==null&&(G[B]=$(W));return G},k=$(m);j.log("callExternal: callbackSetState mapping result",k);const O=this.deepMergeWithState(k,r.state||{});j.log("callExternal: merged with existing state",O),r.setState(O)}else f&&r.setState&&r.setState({[`${f.replace(/:/g,"_")}_result`]:L});if(y){const $={...r,data:{...r.data,$event:L}},k=Array.isArray(y)?y:[y];for(const O of k)try{this.executeAction(O,$)}catch(P){j.error("callExternal: callbackAction failed:",P)}}});const _=new S(v);if(c&&typeof _[c]=="function"){if(j.log(`callExternal: calling method ${c}`),c==="embed"&&h){const x=document.querySelector(h);if(x)return _[c](x,...d);throw new Ut(`Embed target element not found: ${h}`,n)}return _[c](...d)}return _}async handleCallExternalEmbed(e,n,r){const i=e.constructor,l=e.args||{},c=e.callbackSetState,d=e.callbackEvent,f=e.layerClassName,h=e.callbackAction;if(!i)throw new Ut('callExternalEmbed handler requires "constructor" parameter',n);const m=this.getNestedProperty(window,i);if(!m||typeof m!="function")throw new Ut(`Constructor not found or not a function: ${i}. Make sure the script is loaded first.`,n);j.log(`callExternalEmbed: creating layer for ${i}`);const{layer:y,closeLayer:S}=this.createEmbedLayer(f),v={...l};for(const[x,A]of Object.entries(l))A===!0&&(v[x]=L=>{if(j.log(`callExternalEmbed: callback triggered for ${x}`,L),S(),d&&typeof window<"u"&&window.G7Core?.componentEvent&&window.G7Core.componentEvent.emit(d,L),c&&r.setState){const $=P=>{const G={};for(const[B,W]of Object.entries(P))typeof W=="string"?G[B]=this.getNestedProperty(L,W):typeof W=="object"&&W!==null&&(G[B]=$(W));return G},k=$(c);j.log("callExternalEmbed: callbackSetState mapping result",k);const O=this.deepMergeWithState(k,r.state||{});j.log("callExternalEmbed: merged with existing state",O),r.setState(O)}if(h){const $={...r,data:{...r.data,$event:L}},k=Array.isArray(h)?h:[h];for(const O of k)try{this.executeAction(O,$)}catch(P){j.error("callExternalEmbed: callbackAction failed:",P)}}});const _=new m(v);if(typeof _.embed=="function")_.embed(y),j.log("callExternalEmbed: embedded in layer");else throw S(),new Ut(`Constructor ${i} does not have embed method`,n);return _}isImeComposing(e){return e?.isComposing===!0||e?.keyCode===229}createEmbedLayer(e){const n=document.createElement("div");n.id="g7-embed-overlay",n.style.cssText=`
|
||
position: fixed;
|
||
inset: 0;
|
||
background-color: rgba(0, 0, 0, 0.5);
|
||
z-index: 9999;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
`;const r=document.createElement("div");r.id="g7-embed-layer",r.style.cssText=`
|
||
position: relative;
|
||
background: white;
|
||
border-radius: 8px;
|
||
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
|
||
max-width: 90vw;
|
||
max-height: 90vh;
|
||
overflow: hidden;
|
||
`,e&&(r.className=e);const i=document.createElement("button");i.type="button",i.innerHTML="×",i.style.cssText=`
|
||
position: absolute;
|
||
top: 8px;
|
||
right: 8px;
|
||
width: 32px;
|
||
height: 32px;
|
||
border: none;
|
||
background: rgba(0, 0, 0, 0.1);
|
||
border-radius: 50%;
|
||
font-size: 20px;
|
||
cursor: pointer;
|
||
z-index: 10;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
color: #666;
|
||
transition: background-color 0.2s;
|
||
`,i.onmouseenter=()=>{i.style.backgroundColor="rgba(0, 0, 0, 0.2)"},i.onmouseleave=()=>{i.style.backgroundColor="rgba(0, 0, 0, 0.1)"};const l=()=>{n.parentNode&&n.parentNode.removeChild(n)};i.onclick=l;const c=d=>{this.isImeComposing(d)||d.key==="Escape"&&(l(),document.removeEventListener("keydown",c))};return document.addEventListener("keydown",c),n.onclick=d=>{d.target===n&&l()},r.appendChild(i),n.appendChild(r),document.body.appendChild(n),{overlay:n,layer:r,closeLayer:l}}getNestedProperty(e,n){return n.split(".").reduce((r,i)=>r&&r[i]!==void 0?r[i]:void 0,e)}async handleSaveToLocalStorage(e,n){const{key:r,value:i}=e;if(!r)return j.error("saveToLocalStorage: key parameter is required"),!1;try{const l=typeof i=="string"?i:JSON.stringify(i);return localStorage.setItem(r,l),j.log(`saveToLocalStorage: saved ${r}`,i),!0}catch(l){return j.error("saveToLocalStorage: failed to save",{key:r,error:l}),!1}}async handleLoadFromLocalStorage(e,n){const{key:r,target:i,stateKey:l,defaultValue:c}=e;if(!r)return j.error("loadFromLocalStorage: key parameter is required"),c;try{const d=localStorage.getItem(r);if(d===null)return j.log(`loadFromLocalStorage: no value found for ${r}, using default`),l&&n.setState&&n.setState({[l]:c}),c;let f;try{f=JSON.parse(d)}catch{f=d}return j.log(`loadFromLocalStorage: loaded ${r}`,f),l&&n.setState&&n.setState({[l]:f}),f}catch(d){return j.error("loadFromLocalStorage: failed to load",{key:r,error:d}),c}}async handleCustomAction(e,n){const r=this.customHandlers.get(e.handler);if(!r){if(this.previewMode){j.warn(`[Preview] Unknown action handler "${e.handler}" — skipped (preview mode)`);return}const i=new Ut(`Unknown action handler: ${e.handler}`,e);throw i.unknownHandler=!0,i}return await r(e,n)}resolveParams(e,n){if(!e)return{};const r={};for(const[i,l]of Object.entries(e))i.includes("{{")&&j.warn(`[resolveParams] setState params의 키에 표현식이 포함되어 있습니다: "${i}". 키는 해석되지 않습니다. 배열 항목 수정은 .map()/.filter() 패턴을 사용하세요.`),typeof l=="string"&&l.includes("{{")?r[i]=this.evaluateExpression(l,n):typeof l=="string"?r[i]=l:Array.isArray(l)?r[i]=l.map(c=>typeof c=="string"&&c.includes("{{")?this.evaluateExpression(c,n):c):typeof l=="object"&&l!==null&&!Array.isArray(l)&&Object.getPrototypeOf(l)!==Object.prototype&&Object.getPrototypeOf(l)!==null?r[i]=l:typeof l=="object"&&l!==null?r[i]=this.resolveParams(l,n):r[i]=l;return r}resolveValue(e,n){return n?this.bindingEngine.resolveBindings(e,n,{skipCache:!0}):e}evaluateExpressions(e,n){let r={};for(const[i,l]of Object.entries(e))if(i==="..."){let c=l;typeof l=="string"&&l.includes("{{")&&(c=this.evaluateExpression(l,n)),c&&typeof c=="object"&&!Array.isArray(c)&&(r={...r,...c})}else typeof l=="string"&&l.includes("{{")?r[i]=this.evaluateExpression(l,n):typeof l=="object"&&l!==null&&!Array.isArray(l)?r[i]=this.evaluateExpressions(l,n):r[i]=l;return r}evaluateExpressionsIfNeeded(e,n){const r={};for(const[i,l]of Object.entries(e))typeof l=="string"&&l.includes("{{")?r[i]=this.evaluateExpression(l,n):r[i]=l;return r}evaluateExpression(e,n){if(!n)return e;const r=Da(e);if(r===null){let c=n;if(e.includes("_global")){const f=window.G7Core?.state?.get()?._global;f&&(c={...n,_global:f})}if(e.includes("_computed")||e.includes("$computed")){const f=window.__g7ActionContext?.computedRef?.current;f&&Object.keys(f).length>0&&(c={...c,_computed:f,$computed:f})}return this.bindingEngine.resolveBindings(e,c,{skipCache:!0})}let i=r;i=i.replace(/\$args\.(\d+)/g,"$args[$1]");let l=n;if(i.includes("_global")){const d=window.G7Core?.state?.get()?._global;d&&(l={...n,_global:d})}if(i.includes("_computed")||i.includes("$computed")){const d=window.__g7ActionContext?.computedRef?.current;d&&Object.keys(d).length>0&&(l={...l,_computed:d,$computed:d})}i.includes("_global.modules")&&(j.log("[evaluateExpression] expression:",i),j.log("[evaluateExpression] dataContext._global:",l._global),j.log("[evaluateExpression] dataContext._global?.modules:",l._global?.modules));try{const c=Gn(i)?this.bindingEngine.evaluatePipeExpression(i,l,{skipCache:!0}):this.bindingEngine.evaluateExpression(i,l);return i.includes("_global.modules")&&j.log("[evaluateExpression] result:",c),typeof c=="string"&&c.startsWith("$t:")&&this.translationEngine&&this.translationContext?this.translationEngine.resolveTranslations(c,this.translationContext,n):c}catch(c){return j.error("Expression evaluation failed:",e,c),e}}setDefaultContext(e){this.defaultContext={...this.defaultContext,...e}}setGlobalStateUpdater(e){this.globalStateUpdater=e}getGlobalStateUpdater(){return this.globalStateUpdater}async dispatchAction(e,n){const r={...this.defaultContext,...n,data:{...this.defaultContext.data,...n?.data}};if(e.confirm){let i=this.resolveValue(e.confirm,r.data);if(this.translationEngine&&this.translationContext&&i.startsWith("$t:")&&(i=this.translationEngine.resolveTranslations(i,this.translationContext,r.data)),!confirm(i))return{success:!1}}try{return await this.executeAction(e,r)}catch(i){if(j.error("dispatchAction failed:",i),e.onError){const l=i instanceof Ut&&i.originalError?{message:i.originalError.message,response:i.originalError.response}:{message:i instanceof Error?i.message:String(i)},c={...r,data:{...r.data,error:l}},d=Array.isArray(e.onError)?e.onError:[e.onError];for(const f of d)await this.executeAction(f,c)}return{success:!1,error:i instanceof Error?i:new Error(String(i))}}}registerHandler(e,n,r){this.customHandlers.set(e,n);const i=Fn();i?.isEnabled()&&i.trackHandlerRegistration(e,r?.category??"custom",r?.description,r?.source)}unregisterHandler(e){this.customHandlers.delete(e);const n=Fn();n?.isEnabled()&&n.trackHandlerUnregistration(e)}getRegisteredHandlers(){return Array.from(this.customHandlers.keys())}getHandler(e){return this.customHandlers.get(e)}normalizeDebounceConfig(e){return typeof e=="number"?{delay:e,leading:!1,trailing:!0}:{delay:e.delay,leading:e.leading??!1,trailing:e.trailing??!0}}extractEventData(e){const n=e.target;if(n&&!("tagName"in n)){const l={type:e.type??"custom",target:{value:n.value,name:n.name??""}};return e._changedKeys&&(l._changedKeys=e._changedKeys),l}const i=n?{value:n.value,name:n.name??"",checked:n.checked??!1,type:n.type??"",tagName:n.tagName}:{};if(e.type==="scroll"&&n){const l=n;i.scrollHeight=l.scrollHeight??0,i.scrollTop=l.scrollTop??0,i.clientHeight=l.clientHeight??0,i.scrollLeft=l.scrollLeft??0,i.clientWidth=l.clientWidth??0,i.scrollWidth=l.scrollWidth??0}return{type:e.type,target:n?i:null}}executeDebouncedAction(e,n,r,i,l){const c={...r,$event:n,$args:l},d={type:n.type,target:n.target,preventDefault:()=>{},stopPropagation:()=>{}};this.createHandler(e,c,i)(d)}handleDebouncedAction(e,n,r,i,l,c){const d=this.normalizeDebounceConfig(e.debounce),f=l||`default-${e.handler}-${Date.now()}`,h=this.extractEventData(n),m=h._changedKeys;if(m&&Array.isArray(m)&&h?.target?.value&&typeof h.target.value=="object"&&!Array.isArray(h.target.value)){const _=this.debounceAccumulatedValues.get(f);if(_){const x={..._};for(const A of m)x[A]=h.target.value[A];h.target.value=x}this.debounceAccumulatedValues.set(f,h.target.value)}const y=this.debounceTimers.get(f);y&&(clearTimeout(y),this.debounceTimers.delete(f));const S=Fn();S?.isEnabled()&&S.trackAction({handler:typeof e.handler=="string"?e.handler:String(e.handler),type:e.type,status:"pending",params:e.params,debounce:{delay:d.delay,status:"pending",scheduledAt:Date.now()}});const v=!this.debounceTimers.has(f+"_leading");if(d.leading&&v&&(this.debounceTimers.set(f+"_leading",setTimeout(()=>{},0)),this.executeDebouncedAction(e,h,r,i,c),S?.isEnabled()&&S.trackAction({handler:typeof e.handler=="string"?e.handler:String(e.handler),type:e.type,status:"success",params:e.params,debounce:{delay:d.delay,status:"executed",executedAt:Date.now(),mode:"leading"}})),d.trailing){const _=()=>{this.executeDebouncedAction(e,h,r,i,c),S?.isEnabled()&&S.trackAction({handler:typeof e.handler=="string"?e.handler:String(e.handler),type:e.type,status:"success",params:e.params,debounce:{delay:d.delay,status:"executed",executedAt:Date.now(),mode:"trailing"}})},x=setTimeout(()=>{this.debounceTimers.delete(f),this.debounceTimers.delete(f+"_leading"),this.pendingDebounceFlushers.delete(f),this.debounceAccumulatedValues.delete(f),_()},d.delay);this.debounceTimers.set(f,x),this.pendingDebounceFlushers.set(f,_)}}clearDebounceTimers(e){if(e)for(const[n,r]of this.debounceTimers)n.startsWith(e+"-")&&(clearTimeout(r),this.debounceTimers.delete(n),this.pendingDebounceFlushers.delete(n),this.debounceAccumulatedValues.delete(n));else{for(const n of this.debounceTimers.values())clearTimeout(n);this.debounceTimers.clear(),this.pendingDebounceFlushers.clear(),this.debounceAccumulatedValues.clear()}}debouncedCall(e,n,r){const i=this.debounceTimers.get(e);i&&(clearTimeout(i),this.debounceTimers.delete(e));const l=setTimeout(()=>{this.debounceTimers.delete(e),this.pendingDebounceFlushers.delete(e),r()},n);this.debounceTimers.set(e,l),this.pendingDebounceFlushers.set(e,r)}flushPendingDebounceTimers(){if(this.pendingDebounceFlushers.size===0)return;const e=new Map(this.pendingDebounceFlushers);for(const[n,r]of e){const i=this.debounceTimers.get(n);i&&(clearTimeout(i),this.debounceTimers.delete(n)),this.debounceTimers.delete(n+"_leading"),this.pendingDebounceFlushers.delete(n),r()}this.globalStateUpdater&&this.globalStateUpdater({})}bindActionsToProps(e,n,r){const i={...e};if(e.actions&&Array.isArray(e.actions)){const l=new Map;for(const m of e.actions){const y=this.resolveActionRef(m),S=y.event?this.normalizeEventPropName(y.event):this.getEventHandlerName(y.type);l.has(S)||l.set(S,[]),l.get(S).push(y)}const c=e.name||e.id||"unknown",d=l.has("onDrop"),f=l.has("onDragOver"),h=l.has("onDragEnter");d&&!f&&(i.onDragOver=m=>{m.preventDefault()}),d&&!h&&(i.onDragEnter=m=>{m.preventDefault()});for(const[m,y]of l)i[m]=(...S)=>{for(const v of y){const _=S[0],x=_&&typeof _=="object"&&"preventDefault"in _;if(x&&(m==="onDragOver"||m==="onDrop")&&_.preventDefault(),x&&v.key&&"key"in _){if(this.isImeComposing(_)){j.log("Key filter skipped (IME composing):",v.key);continue}if(_.key!==v.key){j.log("Key filter not matched:",v.key,"actual:",_.key);continue}j.log("Key filter matched:",v.key)}if(v.debounce){const A=`${c}-${v.handler}-${m}`,L=_&&typeof _=="object"&&!("preventDefault"in _)&&"target"in _&&_.target!==null;let $;if(x)$=_;else if(L){const O={type:"custom",target:_.target,preventDefault:()=>{},stopPropagation:()=>{}};_._changedKeys&&(O._changedKeys=_._changedKeys),$=O}else $=new Event("custom");const k=v.event?{...n,$args:S}:n;this.handleDebouncedAction(v,$,k,r,A,S)}else if(this.flushPendingDebounceTimers(),v.event){const A={...n,$args:S},L=this.resolveEventForHandler(_,x);this.createHandler(v,A,r)(L)}else if(x)this.createHandler(v,n,r)(_);else if(_&&typeof _=="object"&&!("preventDefault"in _)&&"target"in _&&_.target!==null){const L={type:"custom",target:_.target,preventDefault:()=>{},stopPropagation:()=>{}};this.createHandler(v,n,r)(L)}}}}return i}getEventHandlerName(e){return Km[e]||`on${e.charAt(0).toUpperCase()}${e.slice(1)}`}normalizeEventPropName(e){return Km[e]??e}resolveEventForHandler(e,n){if(n)return e;if(!(e&&typeof e=="object"&&!("preventDefault"in e)&&"target"in e&&e.target!==null))return new Event("custom");const i={type:"custom",target:e.target,preventDefault:()=>{},stopPropagation:()=>{}};return e._changedKeys&&(i._changedKeys=e._changedKeys),i}sanitizeForDevTools(e,n=5){const r=new WeakSet,i=(l,c)=>{if(l==null||typeof l=="string"||typeof l=="number"||typeof l=="boolean")return l;if(c>n)return"[Max Depth Exceeded]";if(typeof l=="function")return`[Function: ${l.name||"anonymous"}]`;if(l instanceof Element)return`[Element: ${l.tagName}${l.className?"."+l.className.split(" ").join("."):""}]`;if(l instanceof Event)return`[Event: ${l.type}]`;if(Array.isArray(l)){if(r.has(l))return"[Circular Array]";r.add(l);const d=l.slice(0,10).map(f=>i(f,c+1));return l.length>10&&d.push(`... ${l.length-10} more items`),d}if(typeof l=="object"){if(r.has(l))return"[Circular Reference]";r.add(l);const d={},f=Object.keys(l),h=f.slice(0,20);for(const m of h)try{d[m]=i(l[m],c+1)}catch{d[m]="[Error accessing property]"}return f.length>20&&(d["..."]=`${f.length-20} more properties`),d}return String(l)};return i(e,0)}};M(xs,"loadedScripts",new Set);let ko=xs,gc=null;function Wm(s){return gc||(gc=new ko(s)),gc}function pE(s){gc=s}const Ym=dt("TransitionManager");class gE{constructor(){M(this,"isPending",!1);M(this,"subscribers",new Set)}setPending(e){this.isPending!==e&&(Ym.log("setPending:",{from:this.isPending,to:e,stack:new Error().stack}),this.isPending=e,this.notifySubscribers())}getIsPending(){return this.isPending}subscribe(e){return this.subscribers.add(e),()=>{this.subscribers.delete(e)}}notifySubscribers(){Ym.log("notifySubscribers:",{isPending:this.isPending,subscriberCount:this.subscribers.size}),this.subscribers.forEach(e=>{e(this.isPending)})}clearSubscribers(){this.subscribers.clear()}}const Ur=new gE,mc=dt("TransitionContext"),Xm=N.createContext({isTransitioning:!1}),Cf=({children:s})=>{const[e,n]=N.useState(()=>{const i=Ur.getIsPending();return mc.log("Initial state:",i),i});N.useEffect(()=>{mc.log("Subscribing to TransitionManager");const i=Ur.subscribe(l=>{mc.log("Received isPending update:",l),n(l)});return()=>{mc.log("Unsubscribing from TransitionManager"),i()}},[]);const r=N.useMemo(()=>({isTransitioning:e}),[e]);return ft.jsx(Xm.Provider,{value:r,children:s})},Jm=()=>N.useContext(Xm),yc="__g7LocalInitTracking";function Ef(){const s=globalThis;return s[yc]||(s[yc]={hash:"",timestamp:void 0,consumed:void 0}),s[yc]}function mE(){const s=globalThis;s[yc]={hash:"",timestamp:void 0,consumed:void 0}}function yE(s){Ef().consumed=s}function bE(s){return Ef().consumed===s}function vE(s){return s.globalTrackedKey!==s.trackingKey?"apply":s.instanceHandledKey===s.trackingKey?"skip":"prune"}function SE(s,e){return typeof s=="number"&&typeof e=="number"?Math.max(s,e):e??s}function wE(s,e){if(e===void 0)return s;if(!(s!==null&&typeof s=="object"&&e!==null&&typeof e=="object"&&!bE(s)))return e;const{_forceLocalInit:r,...i}=s,{_forceLocalInit:l,...c}=e,d={...i,...c},f=SE(r,l);return f!==void 0&&(d._forceLocalInit=f),d}function CE(s){return s<768?"mobile":s<1024?"tablet":"desktop"}function Qm(s){const e=CE(s);return{width:s,isMobile:e==="mobile",isTablet:e==="tablet",isDesktop:e==="desktop",matchedPreset:e}}const _f=N.createContext(Qm(1024)),bc=({children:s,overrideWidth:e})=>{const[n,r]=N.useState(()=>Si.getWidth());N.useEffect(()=>{const c=Si.subscribe(d=>{r(d)});return()=>{c()}},[]);const i=e??n,l=N.useMemo(()=>Qm(i),[i]);return ft.jsx(_f.Provider,{value:l,children:s})},Af=()=>N.useContext(_f);window.G7Core?.createLogger?.("Core:State");function EE(s,e,n,r){const{syncOnControlledChange:i=!0,isEqual:l}=r??{},c=s!==void 0;N.useRef(c);const[d,f]=N.useState(s!==void 0?s:e),h=d,m=N.useRef(s),y=N.useRef(!1);N.useEffect(()=>{if(y.current){m.current=s;return}i&&c&&s!==m.current&&(l?!l(d,s):d!==s)&&f(s),m.current=s},[s,c,i,l,d]);const S=N.useCallback(v=>{const _=typeof v=="function"?v(h):v;(l?l(h,_):h===_)||(y.current=!0,f(_),n?.(_),requestAnimationFrame(()=>{y.current=!1}))},[h,c,n,l]);return[h,S]}function _E(s,e){return s===e?!0:s.length!==e.length?!1:s.every((n,r)=>n===e[r])}function Zm(s,e){if(s===e)return!0;const n=Object.keys(s),r=Object.keys(e);return n.length!==r.length?!1:n.every(i=>s[i]===e[i])}const ey=N.createContext({}),AE=({children:s,value:e})=>ft.jsx(ey.Provider,{value:e,children:s}),xE=()=>N.useContext(ey),TE=(s,e)=>{if(!s)return;const n=e.split(".");let r=s;for(const i of n){if(r==null)return;r=r[i]}return r},kE=(s,e,n)=>{const r=e.split(".");if(r.length===1)return{...s,[r[0]]:n};const i={...s};let l=i;for(let c=0;c<r.length-1;c++){const d=r[c],f=r[c+1],h=/^\d+$/.test(f);Array.isArray(l[d])&&!h?l[d]={...l[d]}:Array.isArray(l[d])?l[d]=[...l[d]]:h?l[d]=Array.isArray(l[d])?[...l[d]]:[]:l[d]={...l[d]||{}},l=l[d]}return l[r[r.length-1]]=n,i},hs=dt("IsolatedStateContext"),RE={state:{},setState:()=>{hs.warn("IsolatedStateContext not available: setState called outside IsolatedStateProvider")},getState:()=>{},mergeState:()=>{hs.warn("IsolatedStateContext not available: mergeState called outside IsolatedStateProvider")},stateRef:{current:{}},scopeId:""},ty=N.createContext(RE);let DE=0;function OE(){return`isolated-${++DE}-${Date.now().toString(36)}`}function ny(s,e){if(e==null)return s;if(typeof e!="object"||Array.isArray(e))return e;const n={...s};for(const r of Object.keys(e)){const i=e[r],l=s?.[r];i!==null&&typeof i=="object"&&!Array.isArray(i)&&l!==null&&typeof l=="object"&&!Array.isArray(l)?n[r]=ny(l,i):n[r]=i}return n}function LE(s,e){return e?e.split(".").reduce((n,r)=>n?.[r],s):s}function $E(s,e,n){const r=e.split("."),i={...s};let l=i;for(let c=0;c<r.length-1;c++){const d=r[c];l[d]={...l[d]},l=l[d]}return l[r[r.length-1]]=n,i}const ME=({initialState:s={},scopeId:e,children:n})=>{const i=N.useRef(e||OE()).current,[l,c]=N.useState(s),d=N.useRef(l);d.current=l;const f=N.useCallback(v=>LE(d.current,v),[]),h=N.useCallback((v,_)=>{c(x=>{const A=$E(x,v,_);return hs.log(`[${i}] setState: ${v} =`,_),A})},[i]),m=N.useCallback((v,_="deep")=>{c(x=>{let A;return _==="replace"?A=v:_==="shallow"?A={...x,...v}:A=ny(x,v),hs.log(`[${i}] mergeState (${_}):`,v),A})},[i]),y=N.useMemo(()=>({state:l,setState:h,getState:f,mergeState:m,stateRef:d,scopeId:i}),[l,h,f,m,i]),S=N.useMemo(()=>({state:d.current,setState:h,getState:f,mergeState:m}),[h,f,m]);return N.useEffect(()=>{const v=window.G7Core,_=window.__g7IsolatedStates||{};return window.__g7IsolatedStates||(window.__g7IsolatedStates=_),_[i]=S,v&&(v._isolatedStates||(v._isolatedStates={}),v._isolatedStates[i]=l),v?.devTools?.isEnabled?.()&&v.devTools.emit?.("isolated:created",{id:i,state:l}),hs.log(`[${i}] IsolatedStateProvider mounted with initial state:`,l),()=>{delete _[i],v?._isolatedStates&&delete v._isolatedStates[i],v?.devTools?.isEnabled?.()&&v.devTools.emit?.("isolated:destroyed",{id:i}),hs.log(`[${i}] IsolatedStateProvider unmounted`)}},[i,S]),N.useEffect(()=>{const v=window.G7Core,_=window.__g7IsolatedStates;_?.[i]&&(_[i].state=l),v?._isolatedStates&&(v._isolatedStates[i]=l),v?.devTools?.isEnabled?.()&&v.devTools.emit?.("isolated:updated",{id:i,state:l})},[l,i]),ft.jsx(ty.Provider,{value:y,children:n})},NE=()=>{const s=N.useContext(ty);return s.scopeId?s:null};var Ma=Rg();function IE(){for(var s=arguments.length,e=new Array(s),n=0;n<s;n++)e[n]=arguments[n];return N.useMemo(()=>r=>{e.forEach(i=>i(r))},e)}const vc=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function ps(s){const e=Object.prototype.toString.call(s);return e==="[object Window]"||e==="[object global]"}function xf(s){return"nodeType"in s}function Mn(s){var e,n;return s?ps(s)?s:xf(s)&&(e=(n=s.ownerDocument)==null?void 0:n.defaultView)!=null?e:window:window}function Tf(s){const{Document:e}=Mn(s);return s instanceof e}function Ro(s){return ps(s)?!1:s instanceof Mn(s).HTMLElement}function ry(s){return s instanceof Mn(s).SVGElement}function gs(s){return s?ps(s)?s.document:xf(s)?Tf(s)?s:Ro(s)||ry(s)?s.ownerDocument:document:document:document}const Pr=vc?N.useLayoutEffect:N.useEffect;function kf(s){const e=N.useRef(s);return Pr(()=>{e.current=s}),N.useCallback(function(){for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return e.current==null?void 0:e.current(...r)},[])}function jE(){const s=N.useRef(null),e=N.useCallback((r,i)=>{s.current=setInterval(r,i)},[]),n=N.useCallback(()=>{s.current!==null&&(clearInterval(s.current),s.current=null)},[]);return[e,n]}function Do(s,e){e===void 0&&(e=[s]);const n=N.useRef(s);return Pr(()=>{n.current!==s&&(n.current=s)},e),n}function Oo(s,e){const n=N.useRef();return N.useMemo(()=>{const r=s(n.current);return n.current=r,r},[...e])}function Sc(s){const e=kf(s),n=N.useRef(null),r=N.useCallback(i=>{i!==n.current&&e?.(i,n.current),n.current=i},[]);return[n,r]}function Rf(s){const e=N.useRef();return N.useEffect(()=>{e.current=s},[s]),e.current}let Df={};function Lo(s,e){return N.useMemo(()=>{if(e)return e;const n=Df[s]==null?0:Df[s]+1;return Df[s]=n,s+"-"+n},[s,e])}function ay(s){return function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];return r.reduce((l,c)=>{const d=Object.entries(c);for(const[f,h]of d){const m=l[f];m!=null&&(l[f]=m+s*h)}return l},{...e})}}const ms=ay(1),$o=ay(-1);function HE(s){return"clientX"in s&&"clientY"in s}function Of(s){if(!s)return!1;const{KeyboardEvent:e}=Mn(s.target);return e&&s instanceof e}function zE(s){if(!s)return!1;const{TouchEvent:e}=Mn(s.target);return e&&s instanceof e}function Lf(s){if(zE(s)){if(s.touches&&s.touches.length){const{clientX:e,clientY:n}=s.touches[0];return{x:e,y:n}}else if(s.changedTouches&&s.changedTouches.length){const{clientX:e,clientY:n}=s.changedTouches[0];return{x:e,y:n}}}return HE(s)?{x:s.clientX,y:s.clientY}:null}const Mo=Object.freeze({Translate:{toString(s){if(!s)return;const{x:e,y:n}=s;return"translate3d("+(e?Math.round(e):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(s){if(!s)return;const{scaleX:e,scaleY:n}=s;return"scaleX("+e+") scaleY("+n+")"}},Transform:{toString(s){if(s)return[Mo.Translate.toString(s),Mo.Scale.toString(s)].join(" ")}},Transition:{toString(s){let{property:e,duration:n,easing:r}=s;return e+" "+n+"ms "+r}}}),iy="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function UE(s){return s.matches(iy)?s:s.querySelector(iy)}const PE={display:"none"};function BE(s){let{id:e,value:n}=s;return Ye.createElement("div",{id:e,style:PE},n)}function qE(s){let{id:e,announcement:n,ariaLiveType:r="assertive"}=s;const i={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return Ye.createElement("div",{id:e,style:i,role:"status","aria-live":r,"aria-atomic":!0},n)}function GE(){const[s,e]=N.useState("");return{announce:N.useCallback(r=>{r!=null&&e(r)},[]),announcement:s}}const sy=N.createContext(null);function FE(s){const e=N.useContext(sy);N.useEffect(()=>{if(!e)throw new Error("useDndMonitor must be used within a children of <DndContext>");return e(s)},[s,e])}function VE(){const[s]=N.useState(()=>new Set),e=N.useCallback(r=>(s.add(r),()=>s.delete(r)),[s]);return[N.useCallback(r=>{let{type:i,event:l}=r;s.forEach(c=>{var d;return(d=c[i])==null?void 0:d.call(c,l)})},[s]),e]}const KE={draggable:`
|
||
To pick up a draggable item, press the space bar.
|
||
While dragging, use the arrow keys to move the item.
|
||
Press space again to drop the item in its new position, or press escape to cancel.
|
||
`},WE={onDragStart(s){let{active:e}=s;return"Picked up draggable item "+e.id+"."},onDragOver(s){let{active:e,over:n}=s;return n?"Draggable item "+e.id+" was moved over droppable area "+n.id+".":"Draggable item "+e.id+" is no longer over a droppable area."},onDragEnd(s){let{active:e,over:n}=s;return n?"Draggable item "+e.id+" was dropped over droppable area "+n.id:"Draggable item "+e.id+" was dropped."},onDragCancel(s){let{active:e}=s;return"Dragging was cancelled. Draggable item "+e.id+" was dropped."}};function YE(s){let{announcements:e=WE,container:n,hiddenTextDescribedById:r,screenReaderInstructions:i=KE}=s;const{announce:l,announcement:c}=GE(),d=Lo("DndLiveRegion"),[f,h]=N.useState(!1);if(N.useEffect(()=>{h(!0)},[]),FE(N.useMemo(()=>({onDragStart(y){let{active:S}=y;l(e.onDragStart({active:S}))},onDragMove(y){let{active:S,over:v}=y;e.onDragMove&&l(e.onDragMove({active:S,over:v}))},onDragOver(y){let{active:S,over:v}=y;l(e.onDragOver({active:S,over:v}))},onDragEnd(y){let{active:S,over:v}=y;l(e.onDragEnd({active:S,over:v}))},onDragCancel(y){let{active:S,over:v}=y;l(e.onDragCancel({active:S,over:v}))}}),[l,e])),!f)return null;const m=Ye.createElement(Ye.Fragment,null,Ye.createElement(BE,{id:r,value:i.draggable}),Ye.createElement(qE,{id:d,announcement:c}));return n?Ma.createPortal(m,n):m}var nn;(function(s){s.DragStart="dragStart",s.DragMove="dragMove",s.DragEnd="dragEnd",s.DragCancel="dragCancel",s.DragOver="dragOver",s.RegisterDroppable="registerDroppable",s.SetDroppableDisabled="setDroppableDisabled",s.UnregisterDroppable="unregisterDroppable"})(nn||(nn={}));function wc(){}function oy(s,e){return N.useMemo(()=>({sensor:s,options:e??{}}),[s,e])}function XE(){for(var s=arguments.length,e=new Array(s),n=0;n<s;n++)e[n]=arguments[n];return N.useMemo(()=>[...e].filter(r=>r!=null),[...e])}const _r=Object.freeze({x:0,y:0});function ly(s,e){return Math.sqrt(Math.pow(s.x-e.x,2)+Math.pow(s.y-e.y,2))}function cy(s,e){let{data:{value:n}}=s,{data:{value:r}}=e;return n-r}function JE(s,e){let{data:{value:n}}=s,{data:{value:r}}=e;return r-n}function uy(s){let{left:e,top:n,height:r,width:i}=s;return[{x:e,y:n},{x:e+i,y:n},{x:e,y:n+r},{x:e+i,y:n+r}]}function dy(s,e){if(!s||s.length===0)return null;const[n]=s;return n[e]}function fy(s,e,n){return e===void 0&&(e=s.left),n===void 0&&(n=s.top),{x:e+s.width*.5,y:n+s.height*.5}}const QE=s=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=s;const i=fy(e,e.left,e.top),l=[];for(const c of r){const{id:d}=c,f=n.get(d);if(f){const h=ly(fy(f),i);l.push({id:d,data:{droppableContainer:c,value:h}})}}return l.sort(cy)},ZE=s=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=s;const i=uy(e),l=[];for(const c of r){const{id:d}=c,f=n.get(d);if(f){const h=uy(f),m=i.reduce((S,v,_)=>S+ly(h[_],v),0),y=Number((m/4).toFixed(4));l.push({id:d,data:{droppableContainer:c,value:y}})}}return l.sort(cy)};function e_(s,e){const n=Math.max(e.top,s.top),r=Math.max(e.left,s.left),i=Math.min(e.left+e.width,s.left+s.width),l=Math.min(e.top+e.height,s.top+s.height),c=i-r,d=l-n;if(r<i&&n<l){const f=e.width*e.height,h=s.width*s.height,m=c*d,y=m/(f+h-m);return Number(y.toFixed(4))}return 0}const t_=s=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=s;const i=[];for(const l of r){const{id:c}=l,d=n.get(c);if(d){const f=e_(d,e);f>0&&i.push({id:c,data:{droppableContainer:l,value:f}})}}return i.sort(JE)};function n_(s,e,n){return{...s,scaleX:e&&n?e.width/n.width:1,scaleY:e&&n?e.height/n.height:1}}function hy(s,e){return s&&e?{x:s.left-e.left,y:s.top-e.top}:_r}function r_(s){return function(n){for(var r=arguments.length,i=new Array(r>1?r-1:0),l=1;l<r;l++)i[l-1]=arguments[l];return i.reduce((c,d)=>({...c,top:c.top+s*d.y,bottom:c.bottom+s*d.y,left:c.left+s*d.x,right:c.right+s*d.x}),{...n})}}const a_=r_(1);function i_(s){if(s.startsWith("matrix3d(")){const e=s.slice(9,-1).split(/, /);return{x:+e[12],y:+e[13],scaleX:+e[0],scaleY:+e[5]}}else if(s.startsWith("matrix(")){const e=s.slice(7,-1).split(/, /);return{x:+e[4],y:+e[5],scaleX:+e[0],scaleY:+e[3]}}return null}function s_(s,e,n){const r=i_(e);if(!r)return s;const{scaleX:i,scaleY:l,x:c,y:d}=r,f=s.left-c-(1-i)*parseFloat(n),h=s.top-d-(1-l)*parseFloat(n.slice(n.indexOf(" ")+1)),m=i?s.width/i:s.width,y=l?s.height/l:s.height;return{width:m,height:y,top:h,right:f+m,bottom:h+y,left:f}}const o_={ignoreTransform:!1};function ys(s,e){e===void 0&&(e=o_);let n=s.getBoundingClientRect();if(e.ignoreTransform){const{transform:h,transformOrigin:m}=Mn(s).getComputedStyle(s);h&&(n=s_(n,h,m))}const{top:r,left:i,width:l,height:c,bottom:d,right:f}=n;return{top:r,left:i,width:l,height:c,bottom:d,right:f}}function py(s){return ys(s,{ignoreTransform:!0})}function l_(s){const e=s.innerWidth,n=s.innerHeight;return{top:0,left:0,right:e,bottom:n,width:e,height:n}}function c_(s,e){return e===void 0&&(e=Mn(s).getComputedStyle(s)),e.position==="fixed"}function u_(s,e){e===void 0&&(e=Mn(s).getComputedStyle(s));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(i=>{const l=e[i];return typeof l=="string"?n.test(l):!1})}function Cc(s,e){const n=[];function r(i){if(e!=null&&n.length>=e||!i)return n;if(Tf(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!Ro(i)||ry(i)||n.includes(i))return n;const l=Mn(s).getComputedStyle(i);return i!==s&&u_(i,l)&&n.push(i),c_(i,l)?n:r(i.parentNode)}return s?r(s):n}function gy(s){const[e]=Cc(s,1);return e??null}function $f(s){return!vc||!s?null:ps(s)?s:xf(s)?Tf(s)||s===gs(s).scrollingElement?window:Ro(s)?s:null:null}function my(s){return ps(s)?s.scrollX:s.scrollLeft}function yy(s){return ps(s)?s.scrollY:s.scrollTop}function Mf(s){return{x:my(s),y:yy(s)}}var dn;(function(s){s[s.Forward=1]="Forward",s[s.Backward=-1]="Backward"})(dn||(dn={}));function by(s){return!vc||!s?!1:s===document.scrollingElement}function vy(s){const e={x:0,y:0},n=by(s)?{height:window.innerHeight,width:window.innerWidth}:{height:s.clientHeight,width:s.clientWidth},r={x:s.scrollWidth-n.width,y:s.scrollHeight-n.height},i=s.scrollTop<=e.y,l=s.scrollLeft<=e.x,c=s.scrollTop>=r.y,d=s.scrollLeft>=r.x;return{isTop:i,isLeft:l,isBottom:c,isRight:d,maxScroll:r,minScroll:e}}const d_={x:.2,y:.2};function f_(s,e,n,r,i){let{top:l,left:c,right:d,bottom:f}=n;r===void 0&&(r=10),i===void 0&&(i=d_);const{isTop:h,isBottom:m,isLeft:y,isRight:S}=vy(s),v={x:0,y:0},_={x:0,y:0},x={height:e.height*i.y,width:e.width*i.x};return!h&&l<=e.top+x.height?(v.y=dn.Backward,_.y=r*Math.abs((e.top+x.height-l)/x.height)):!m&&f>=e.bottom-x.height&&(v.y=dn.Forward,_.y=r*Math.abs((e.bottom-x.height-f)/x.height)),!S&&d>=e.right-x.width?(v.x=dn.Forward,_.x=r*Math.abs((e.right-x.width-d)/x.width)):!y&&c<=e.left+x.width&&(v.x=dn.Backward,_.x=r*Math.abs((e.left+x.width-c)/x.width)),{direction:v,speed:_}}function h_(s){if(s===document.scrollingElement){const{innerWidth:l,innerHeight:c}=window;return{top:0,left:0,right:l,bottom:c,width:l,height:c}}const{top:e,left:n,right:r,bottom:i}=s.getBoundingClientRect();return{top:e,left:n,right:r,bottom:i,width:s.clientWidth,height:s.clientHeight}}function Sy(s){return s.reduce((e,n)=>ms(e,Mf(n)),_r)}function p_(s){return s.reduce((e,n)=>e+my(n),0)}function g_(s){return s.reduce((e,n)=>e+yy(n),0)}function m_(s,e){if(e===void 0&&(e=ys),!s)return;const{top:n,left:r,bottom:i,right:l}=e(s);gy(s)&&(i<=0||l<=0||n>=window.innerHeight||r>=window.innerWidth)&&s.scrollIntoView({block:"center",inline:"center"})}const y_=[["x",["left","right"],p_],["y",["top","bottom"],g_]];class Nf{constructor(e,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=Cc(n),i=Sy(r);this.rect={...e},this.width=e.width,this.height=e.height;for(const[l,c,d]of y_)for(const f of c)Object.defineProperty(this,f,{get:()=>{const h=d(r),m=i[l]-h;return this.rect[f]+m},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class No{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=e}add(e,n,r){var i;(i=this.target)==null||i.addEventListener(e,n,r),this.listeners.push([e,n,r])}}function b_(s){const{EventTarget:e}=Mn(s);return s instanceof e?s:gs(s)}function If(s,e){const n=Math.abs(s.x),r=Math.abs(s.y);return typeof e=="number"?Math.sqrt(n**2+r**2)>e:"x"in e&&"y"in e?n>e.x&&r>e.y:"x"in e?n>e.x:"y"in e?r>e.y:!1}var ir;(function(s){s.Click="click",s.DragStart="dragstart",s.Keydown="keydown",s.ContextMenu="contextmenu",s.Resize="resize",s.SelectionChange="selectionchange",s.VisibilityChange="visibilitychange"})(ir||(ir={}));function wy(s){s.preventDefault()}function v_(s){s.stopPropagation()}var lt;(function(s){s.Space="Space",s.Down="ArrowDown",s.Right="ArrowRight",s.Left="ArrowLeft",s.Up="ArrowUp",s.Esc="Escape",s.Enter="Enter",s.Tab="Tab"})(lt||(lt={}));const Cy={start:[lt.Space,lt.Enter],cancel:[lt.Esc],end:[lt.Space,lt.Enter,lt.Tab]},S_=(s,e)=>{let{currentCoordinates:n}=e;switch(s.code){case lt.Right:return{...n,x:n.x+25};case lt.Left:return{...n,x:n.x-25};case lt.Down:return{...n,y:n.y+25};case lt.Up:return{...n,y:n.y-25}}};class jf{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;const{event:{target:n}}=e;this.props=e,this.listeners=new No(gs(n)),this.windowListeners=new No(Mn(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(ir.Resize,this.handleCancel),this.windowListeners.add(ir.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(ir.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:e,onStart:n}=this.props,r=e.node.current;r&&m_(r),n(_r)}handleKeyDown(e){if(Of(e)){const{active:n,context:r,options:i}=this.props,{keyboardCodes:l=Cy,coordinateGetter:c=S_,scrollBehavior:d="smooth"}=i,{code:f}=e;if(l.end.includes(f)){this.handleEnd(e);return}if(l.cancel.includes(f)){this.handleCancel(e);return}const{collisionRect:h}=r.current,m=h?{x:h.left,y:h.top}:_r;this.referenceCoordinates||(this.referenceCoordinates=m);const y=c(e,{active:n,context:r.current,currentCoordinates:m});if(y){const S=$o(y,m),v={x:0,y:0},{scrollableAncestors:_}=r.current;for(const x of _){const A=e.code,{isTop:L,isRight:$,isLeft:k,isBottom:O,maxScroll:P,minScroll:G}=vy(x),B=h_(x),W={x:Math.min(A===lt.Right?B.right-B.width/2:B.right,Math.max(A===lt.Right?B.left:B.left+B.width/2,y.x)),y:Math.min(A===lt.Down?B.bottom-B.height/2:B.bottom,Math.max(A===lt.Down?B.top:B.top+B.height/2,y.y))},pe=A===lt.Right&&!$||A===lt.Left&&!k,Se=A===lt.Down&&!O||A===lt.Up&&!L;if(pe&&W.x!==y.x){const we=x.scrollLeft+S.x,Ue=A===lt.Right&&we<=P.x||A===lt.Left&&we>=G.x;if(Ue&&!S.y){x.scrollTo({left:we,behavior:d});return}Ue?v.x=x.scrollLeft-we:v.x=A===lt.Right?x.scrollLeft-P.x:x.scrollLeft-G.x,v.x&&x.scrollBy({left:-v.x,behavior:d});break}else if(Se&&W.y!==y.y){const we=x.scrollTop+S.y,Ue=A===lt.Down&&we<=P.y||A===lt.Up&&we>=G.y;if(Ue&&!S.x){x.scrollTo({top:we,behavior:d});return}Ue?v.y=x.scrollTop-we:v.y=A===lt.Down?x.scrollTop-P.y:x.scrollTop-G.y,v.y&&x.scrollBy({top:-v.y,behavior:d});break}}this.handleMove(e,ms($o(y,this.referenceCoordinates),v))}}}handleMove(e,n){const{onMove:r}=this.props;e.preventDefault(),r(n)}handleEnd(e){const{onEnd:n}=this.props;e.preventDefault(),this.detach(),n()}handleCancel(e){const{onCancel:n}=this.props;e.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}jf.activators=[{eventName:"onKeyDown",handler:(s,e,n)=>{let{keyboardCodes:r=Cy,onActivation:i}=e,{active:l}=n;const{code:c}=s.nativeEvent;if(r.start.includes(c)){const d=l.activatorNode.current;return d&&s.target!==d?!1:(s.preventDefault(),i?.({event:s.nativeEvent}),!0)}return!1}}];function Ey(s){return!!(s&&"distance"in s)}function _y(s){return!!(s&&"delay"in s)}class Hf{constructor(e,n,r){var i;r===void 0&&(r=b_(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=n;const{event:l}=e,{target:c}=l;this.props=e,this.events=n,this.document=gs(c),this.documentListeners=new No(this.document),this.listeners=new No(r),this.windowListeners=new No(Mn(c)),this.initialCoordinates=(i=Lf(l))!=null?i:_r,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:e,props:{options:{activationConstraint:n,bypassActivationConstraint:r}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(ir.Resize,this.handleCancel),this.windowListeners.add(ir.DragStart,wy),this.windowListeners.add(ir.VisibilityChange,this.handleCancel),this.windowListeners.add(ir.ContextMenu,wy),this.documentListeners.add(ir.Keydown,this.handleKeydown),n){if(r!=null&&r({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(_y(n)){this.timeoutId=setTimeout(this.handleStart,n.delay),this.handlePending(n);return}if(Ey(n)){this.handlePending(n);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,n){const{active:r,onPending:i}=this.props;i(r,e,this.initialCoordinates,n)}handleStart(){const{initialCoordinates:e}=this,{onStart:n}=this.props;e&&(this.activated=!0,this.documentListeners.add(ir.Click,v_,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(ir.SelectionChange,this.removeTextSelection),n(e))}handleMove(e){var n;const{activated:r,initialCoordinates:i,props:l}=this,{onMove:c,options:{activationConstraint:d}}=l;if(!i)return;const f=(n=Lf(e))!=null?n:_r,h=$o(i,f);if(!r&&d){if(Ey(d)){if(d.tolerance!=null&&If(h,d.tolerance))return this.handleCancel();if(If(h,d.distance))return this.handleStart()}if(_y(d)&&If(h,d.tolerance))return this.handleCancel();this.handlePending(d,h);return}e.cancelable&&e.preventDefault(),c(f)}handleEnd(){const{onAbort:e,onEnd:n}=this.props;this.detach(),this.activated||e(this.props.active),n()}handleCancel(){const{onAbort:e,onCancel:n}=this.props;this.detach(),this.activated||e(this.props.active),n()}handleKeydown(e){e.code===lt.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}}const w_={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class zf extends Hf{constructor(e){const{event:n}=e,r=gs(n.target);super(e,w_,r)}}zf.activators=[{eventName:"onPointerDown",handler:(s,e)=>{let{nativeEvent:n}=s,{onActivation:r}=e;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];const C_={move:{name:"mousemove"},end:{name:"mouseup"}};var Uf;(function(s){s[s.RightClick=2]="RightClick"})(Uf||(Uf={}));class E_ extends Hf{constructor(e){super(e,C_,gs(e.event.target))}}E_.activators=[{eventName:"onMouseDown",handler:(s,e)=>{let{nativeEvent:n}=s,{onActivation:r}=e;return n.button===Uf.RightClick?!1:(r?.({event:n}),!0)}}];const Pf={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class __ extends Hf{constructor(e){super(e,Pf)}static setup(){return window.addEventListener(Pf.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(Pf.move.name,e)};function e(){}}}__.activators=[{eventName:"onTouchStart",handler:(s,e)=>{let{nativeEvent:n}=s,{onActivation:r}=e;const{touches:i}=n;return i.length>1?!1:(r?.({event:n}),!0)}}];var Io;(function(s){s[s.Pointer=0]="Pointer",s[s.DraggableRect=1]="DraggableRect"})(Io||(Io={}));var Ec;(function(s){s[s.TreeOrder=0]="TreeOrder",s[s.ReversedTreeOrder=1]="ReversedTreeOrder"})(Ec||(Ec={}));function A_(s){let{acceleration:e,activator:n=Io.Pointer,canScroll:r,draggingRect:i,enabled:l,interval:c=5,order:d=Ec.TreeOrder,pointerCoordinates:f,scrollableAncestors:h,scrollableAncestorRects:m,delta:y,threshold:S}=s;const v=T_({delta:y,disabled:!l}),[_,x]=jE(),A=N.useRef({x:0,y:0}),L=N.useRef({x:0,y:0}),$=N.useMemo(()=>{switch(n){case Io.Pointer:return f?{top:f.y,bottom:f.y,left:f.x,right:f.x}:null;case Io.DraggableRect:return i}},[n,i,f]),k=N.useRef(null),O=N.useCallback(()=>{const G=k.current;if(!G)return;const B=A.current.x*L.current.x,W=A.current.y*L.current.y;G.scrollBy(B,W)},[]),P=N.useMemo(()=>d===Ec.TreeOrder?[...h].reverse():h,[d,h]);N.useEffect(()=>{if(!l||!h.length||!$){x();return}for(const G of P){if(r?.(G)===!1)continue;const B=h.indexOf(G),W=m[B];if(!W)continue;const{direction:pe,speed:Se}=f_(G,W,$,e,S);for(const we of["x","y"])v[we][pe[we]]||(Se[we]=0,pe[we]=0);if(Se.x>0||Se.y>0){x(),k.current=G,_(O,c),A.current=Se,L.current=pe;return}}A.current={x:0,y:0},L.current={x:0,y:0},x()},[e,O,r,x,l,c,JSON.stringify($),JSON.stringify(v),_,h,P,m,JSON.stringify(S)])}const x_={x:{[dn.Backward]:!1,[dn.Forward]:!1},y:{[dn.Backward]:!1,[dn.Forward]:!1}};function T_(s){let{delta:e,disabled:n}=s;const r=Rf(e);return Oo(i=>{if(n||!r||!i)return x_;const l={x:Math.sign(e.x-r.x),y:Math.sign(e.y-r.y)};return{x:{[dn.Backward]:i.x[dn.Backward]||l.x===-1,[dn.Forward]:i.x[dn.Forward]||l.x===1},y:{[dn.Backward]:i.y[dn.Backward]||l.y===-1,[dn.Forward]:i.y[dn.Forward]||l.y===1}}},[n,e,r])}function k_(s,e){const n=e!=null?s.get(e):void 0,r=n?n.node.current:null;return Oo(i=>{var l;return e==null?null:(l=r??i)!=null?l:null},[r,e])}function R_(s,e){return N.useMemo(()=>s.reduce((n,r)=>{const{sensor:i}=r,l=i.activators.map(c=>({eventName:c.eventName,handler:e(c.handler,r)}));return[...n,...l]},[]),[s,e])}var jo;(function(s){s[s.Always=0]="Always",s[s.BeforeDragging=1]="BeforeDragging",s[s.WhileDragging=2]="WhileDragging"})(jo||(jo={}));var Bf;(function(s){s.Optimized="optimized"})(Bf||(Bf={}));const Ay=new Map;function D_(s,e){let{dragging:n,dependencies:r,config:i}=e;const[l,c]=N.useState(null),{frequency:d,measure:f,strategy:h}=i,m=N.useRef(s),y=A(),S=Do(y),v=N.useCallback(function(L){L===void 0&&(L=[]),!S.current&&c($=>$===null?L:$.concat(L.filter(k=>!$.includes(k))))},[S]),_=N.useRef(null),x=Oo(L=>{if(y&&!n)return Ay;if(!L||L===Ay||m.current!==s||l!=null){const $=new Map;for(let k of s){if(!k)continue;if(l&&l.length>0&&!l.includes(k.id)&&k.rect.current){$.set(k.id,k.rect.current);continue}const O=k.node.current,P=O?new Nf(f(O),O):null;k.rect.current=P,P&&$.set(k.id,P)}return $}return L},[s,l,n,y,f]);return N.useEffect(()=>{m.current=s},[s]),N.useEffect(()=>{y||v()},[n,y]),N.useEffect(()=>{l&&l.length>0&&c(null)},[JSON.stringify(l)]),N.useEffect(()=>{y||typeof d!="number"||_.current!==null||(_.current=setTimeout(()=>{v(),_.current=null},d))},[d,y,v,...r]),{droppableRects:x,measureDroppableContainers:v,measuringScheduled:l!=null};function A(){switch(h){case jo.Always:return!1;case jo.BeforeDragging:return n;default:return!n}}}function xy(s,e){return Oo(n=>s?n||(typeof e=="function"?e(s):s):null,[e,s])}function O_(s,e){return xy(s,e)}function L_(s){let{callback:e,disabled:n}=s;const r=kf(e),i=N.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:l}=window;return new l(r)},[r,n]);return N.useEffect(()=>()=>i?.disconnect(),[i]),i}function _c(s){let{callback:e,disabled:n}=s;const r=kf(e),i=N.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:l}=window;return new l(r)},[n]);return N.useEffect(()=>()=>i?.disconnect(),[i]),i}function $_(s){return new Nf(ys(s),s)}function Ty(s,e,n){e===void 0&&(e=$_);const[r,i]=N.useState(null);function l(){i(f=>{if(!s)return null;if(s.isConnected===!1){var h;return(h=f??n)!=null?h:null}const m=e(s);return JSON.stringify(f)===JSON.stringify(m)?f:m})}const c=L_({callback(f){if(s)for(const h of f){const{type:m,target:y}=h;if(m==="childList"&&y instanceof HTMLElement&&y.contains(s)){l();break}}}}),d=_c({callback:l});return Pr(()=>{l(),s?(d?.observe(s),c?.observe(document.body,{childList:!0,subtree:!0})):(d?.disconnect(),c?.disconnect())},[s]),r}function M_(s){const e=xy(s);return hy(s,e)}const ky=[];function N_(s){const e=N.useRef(s),n=Oo(r=>s?r&&r!==ky&&s&&e.current&&s.parentNode===e.current.parentNode?r:Cc(s):ky,[s]);return N.useEffect(()=>{e.current=s},[s]),n}function I_(s){const[e,n]=N.useState(null),r=N.useRef(s),i=N.useCallback(l=>{const c=$f(l.target);c&&n(d=>d?(d.set(c,Mf(c)),new Map(d)):null)},[]);return N.useEffect(()=>{const l=r.current;if(s!==l){c(l);const d=s.map(f=>{const h=$f(f);return h?(h.addEventListener("scroll",i,{passive:!0}),[h,Mf(h)]):null}).filter(f=>f!=null);n(d.length?new Map(d):null),r.current=s}return()=>{c(s),c(l)};function c(d){d.forEach(f=>{const h=$f(f);h?.removeEventListener("scroll",i)})}},[i,s]),N.useMemo(()=>s.length?e?Array.from(e.values()).reduce((l,c)=>ms(l,c),_r):Sy(s):_r,[s,e])}function Ry(s,e){e===void 0&&(e=[]);const n=N.useRef(null);return N.useEffect(()=>{n.current=null},e),N.useEffect(()=>{const r=s!==_r;r&&!n.current&&(n.current=s),!r&&n.current&&(n.current=null)},[s]),n.current?$o(s,n.current):_r}function j_(s){N.useEffect(()=>{if(!vc)return;const e=s.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of e)n?.()}},s.map(e=>{let{sensor:n}=e;return n}))}function H_(s,e){return N.useMemo(()=>s.reduce((n,r)=>{let{eventName:i,handler:l}=r;return n[i]=c=>{l(c,e)},n},{}),[s,e])}function Dy(s){return N.useMemo(()=>s?l_(s):null,[s])}const Oy=[];function z_(s,e){e===void 0&&(e=ys);const[n]=s,r=Dy(n?Mn(n):null),[i,l]=N.useState(Oy);function c(){l(()=>s.length?s.map(f=>by(f)?r:new Nf(e(f),f)):Oy)}const d=_c({callback:c});return Pr(()=>{d?.disconnect(),c(),s.forEach(f=>d?.observe(f))},[s]),i}function U_(s){if(!s)return null;if(s.children.length>1)return s;const e=s.children[0];return Ro(e)?e:s}function P_(s){let{measure:e}=s;const[n,r]=N.useState(null),i=N.useCallback(h=>{for(const{target:m}of h)if(Ro(m)){r(y=>{const S=e(m);return y?{...y,width:S.width,height:S.height}:S});break}},[e]),l=_c({callback:i}),c=N.useCallback(h=>{const m=U_(h);l?.disconnect(),m&&l?.observe(m),r(m?e(m):null)},[e,l]),[d,f]=Sc(c);return N.useMemo(()=>({nodeRef:d,rect:n,setRef:f}),[n,d,f])}const B_=[{sensor:zf,options:{}},{sensor:jf,options:{}}],q_={current:{}},Ac={draggable:{measure:py},droppable:{measure:py,strategy:jo.WhileDragging,frequency:Bf.Optimized},dragOverlay:{measure:ys}};class Ho extends Map{get(e){var n;return e!=null&&(n=super.get(e))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:n}=e;return!n})}getNodeFor(e){var n,r;return(n=(r=this.get(e))==null?void 0:r.node.current)!=null?n:void 0}}const G_={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new Ho,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:wc},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:Ac,measureDroppableContainers:wc,windowRect:null,measuringScheduled:!1},F_={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:wc,draggableNodes:new Map,over:null,measureDroppableContainers:wc},xc=N.createContext(F_),Ly=N.createContext(G_);function V_(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new Ho}}}function K_(s,e){switch(e.type){case nn.DragStart:return{...s,draggable:{...s.draggable,initialCoordinates:e.initialCoordinates,active:e.active}};case nn.DragMove:return s.draggable.active==null?s:{...s,draggable:{...s.draggable,translate:{x:e.coordinates.x-s.draggable.initialCoordinates.x,y:e.coordinates.y-s.draggable.initialCoordinates.y}}};case nn.DragEnd:case nn.DragCancel:return{...s,draggable:{...s.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case nn.RegisterDroppable:{const{element:n}=e,{id:r}=n,i=new Ho(s.droppable.containers);return i.set(r,n),{...s,droppable:{...s.droppable,containers:i}}}case nn.SetDroppableDisabled:{const{id:n,key:r,disabled:i}=e,l=s.droppable.containers.get(n);if(!l||r!==l.key)return s;const c=new Ho(s.droppable.containers);return c.set(n,{...l,disabled:i}),{...s,droppable:{...s.droppable,containers:c}}}case nn.UnregisterDroppable:{const{id:n,key:r}=e,i=s.droppable.containers.get(n);if(!i||r!==i.key)return s;const l=new Ho(s.droppable.containers);return l.delete(n),{...s,droppable:{...s.droppable,containers:l}}}default:return s}}function W_(s){let{disabled:e}=s;const{active:n,activatorEvent:r,draggableNodes:i}=N.useContext(xc),l=Rf(r),c=Rf(n?.id);return N.useEffect(()=>{if(!e&&!r&&l&&c!=null){if(!Of(l)||document.activeElement===l.target)return;const d=i.get(c);if(!d)return;const{activatorNode:f,node:h}=d;if(!f.current&&!h.current)return;requestAnimationFrame(()=>{for(const m of[f.current,h.current]){if(!m)continue;const y=UE(m);if(y){y.focus();break}}})}},[r,e,i,c,l]),null}function Y_(s,e){let{transform:n,...r}=e;return s!=null&&s.length?s.reduce((i,l)=>l({transform:i,...r}),n):n}function X_(s){return N.useMemo(()=>({draggable:{...Ac.draggable,...s?.draggable},droppable:{...Ac.droppable,...s?.droppable},dragOverlay:{...Ac.dragOverlay,...s?.dragOverlay}}),[s?.draggable,s?.droppable,s?.dragOverlay])}function J_(s){let{activeNode:e,measure:n,initialRect:r,config:i=!0}=s;const l=N.useRef(!1),{x:c,y:d}=typeof i=="boolean"?{x:i,y:i}:i;Pr(()=>{if(!c&&!d||!e){l.current=!1;return}if(l.current||!r)return;const h=e?.node.current;if(!h||h.isConnected===!1)return;const m=n(h),y=hy(m,r);if(c||(y.x=0),d||(y.y=0),l.current=!0,Math.abs(y.x)>0||Math.abs(y.y)>0){const S=gy(h);S&&S.scrollBy({top:y.y,left:y.x})}},[e,c,d,r,n])}const $y=N.createContext({..._r,scaleX:1,scaleY:1});var Na;(function(s){s[s.Uninitialized=0]="Uninitialized",s[s.Initializing=1]="Initializing",s[s.Initialized=2]="Initialized"})(Na||(Na={}));const Q_=N.memo(function(e){var n,r,i,l;let{id:c,accessibility:d,autoScroll:f=!0,children:h,sensors:m=B_,collisionDetection:y=t_,measuring:S,modifiers:v,..._}=e;const x=N.useReducer(K_,void 0,V_),[A,L]=x,[$,k]=VE(),[O,P]=N.useState(Na.Uninitialized),G=O===Na.Initialized,{draggable:{active:B,nodes:W,translate:pe},droppable:{containers:Se}}=A,we=B!=null?W.get(B):null,Ue=N.useRef({initial:null,translated:null}),Fe=N.useMemo(()=>{var he;return B!=null?{id:B,data:(he=we?.data)!=null?he:q_,rect:Ue}:null},[B,we]),qe=N.useRef(null),[wt,J]=N.useState(null),[fe,Le]=N.useState(null),Z=Do(_,Object.values(_)),ge=Lo("DndDescribedBy",c),H=N.useMemo(()=>Se.getEnabled(),[Se]),T=X_(S),{droppableRects:ce,measureDroppableContainers:de,measuringScheduled:be}=D_(H,{dragging:G,dependencies:[pe.x,pe.y],config:T.droppable}),ie=k_(W,B),xe=N.useMemo(()=>fe?Lf(fe):null,[fe]),_e=ve(),Te=O_(ie,T.draggable.measure);J_({activeNode:B!=null?W.get(B):null,config:_e.layoutShiftCompensation,initialRect:Te,measure:T.draggable.measure});const Me=Ty(ie,T.draggable.measure,Te),pt=Ty(ie?ie.parentElement:null),Ct=N.useRef({activatorEvent:null,active:null,activeNode:ie,collisionRect:null,collisions:null,droppableRects:ce,draggableNodes:W,draggingNode:null,draggingNodeRect:null,droppableContainers:Se,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),Ot=Se.getNodeFor((n=Ct.current.over)==null?void 0:n.id),ht=P_({measure:T.dragOverlay.measure}),rn=(r=ht.nodeRef.current)!=null?r:ie,Kt=G?(i=ht.rect)!=null?i:Me:null,It=!!(ht.nodeRef.current&&ht.rect),Fr=M_(It?null:Me),hn=Dy(rn?Mn(rn):null),an=N_(G?Ot??ie:null),pn=z_(an),Wn=Y_(v,{transform:{x:pe.x-Fr.x,y:pe.y-Fr.y,scaleX:1,scaleY:1},activatorEvent:fe,active:Fe,activeNodeRect:Me,containerNodeRect:pt,draggingNodeRect:Kt,over:Ct.current.over,overlayNodeRect:ht.rect,scrollableAncestors:an,scrollableAncestorRects:pn,windowRect:hn}),Vr=xe?ms(xe,pe):null,qt=I_(an),ki=Ry(qt),la=Ry(qt,[Me]),gn=ms(Wn,ki),Dn=Kt?a_(Kt,Wn):null,nt=Fe&&Dn?y({active:Fe,collisionRect:Dn,droppableRects:ce,droppableContainers:H,pointerCoordinates:Vr}):null,In=dy(nt,"id"),[mn,ca]=N.useState(null),lr=It?Wn:ms(Wn,la),sn=n_(lr,(l=mn?.rect)!=null?l:null,Me),_n=N.useRef(null),on=N.useCallback((he,Ee)=>{let{sensor:Ae,options:Ve}=Ee;if(qe.current==null)return;const ke=W.get(qe.current);if(!ke)return;const Ne=he.nativeEvent,Re=new Ae({active:qe.current,activeNode:ke,event:Ne,options:Ve,context:Ct,onAbort(He){if(!W.get(He))return;const{onDragAbort:Ce}=Z.current,je={id:He};Ce?.(je),$({type:"onDragAbort",event:je})},onPending(He,Ge,Ce,je){if(!W.get(He))return;const{onDragPending:At}=Z.current,Mt={id:He,constraint:Ge,initialCoordinates:Ce,offset:je};At?.(Mt),$({type:"onDragPending",event:Mt})},onStart(He){const Ge=qe.current;if(Ge==null)return;const Ce=W.get(Ge);if(!Ce)return;const{onDragStart:je}=Z.current,tt={activatorEvent:Ne,active:{id:Ge,data:Ce.data,rect:Ue}};Ma.unstable_batchedUpdates(()=>{je?.(tt),P(Na.Initializing),L({type:nn.DragStart,initialCoordinates:He,active:Ge}),$({type:"onDragStart",event:tt}),J(_n.current),Le(Ne)})},onMove(He){L({type:nn.DragMove,coordinates:He})},onEnd:et(nn.DragEnd),onCancel:et(nn.DragCancel)});_n.current=Re;function et(He){return async function(){const{active:Ce,collisions:je,over:tt,scrollAdjustedTranslate:At}=Ct.current;let Mt=null;if(Ce&&At){const{cancelDrop:On}=Z.current;Mt={activatorEvent:Ne,active:Ce,collisions:je,delta:At,over:tt},He===nn.DragEnd&&typeof On=="function"&&await Promise.resolve(On(Mt))&&(He=nn.DragCancel)}qe.current=null,Ma.unstable_batchedUpdates(()=>{L({type:He}),P(Na.Uninitialized),ca(null),J(null),Le(null),_n.current=null;const On=He===nn.DragEnd?"onDragEnd":"onDragCancel";if(Mt){const jt=Z.current[On];jt?.(Mt),$({type:On,event:Mt})}})}}},[W]),F=N.useCallback((he,Ee)=>(Ae,Ve)=>{const ke=Ae.nativeEvent,Ne=W.get(Ve);if(qe.current!==null||!Ne||ke.dndKit||ke.defaultPrevented)return;const Re={active:Ne};he(Ae,Ee.options,Re)===!0&&(ke.dndKit={capturedBy:Ee.sensor},qe.current=Ve,on(Ae,Ee))},[W,on]),se=R_(m,F);j_(m),Pr(()=>{Me&&O===Na.Initializing&&P(Na.Initialized)},[Me,O]),N.useEffect(()=>{const{onDragMove:he}=Z.current,{active:Ee,activatorEvent:Ae,collisions:Ve,over:ke}=Ct.current;if(!Ee||!Ae)return;const Ne={active:Ee,activatorEvent:Ae,collisions:Ve,delta:{x:gn.x,y:gn.y},over:ke};Ma.unstable_batchedUpdates(()=>{he?.(Ne),$({type:"onDragMove",event:Ne})})},[gn.x,gn.y]),N.useEffect(()=>{const{active:he,activatorEvent:Ee,collisions:Ae,droppableContainers:Ve,scrollAdjustedTranslate:ke}=Ct.current;if(!he||qe.current==null||!Ee||!ke)return;const{onDragOver:Ne}=Z.current,Re=Ve.get(In),et=Re&&Re.rect.current?{id:Re.id,rect:Re.rect.current,data:Re.data,disabled:Re.disabled}:null,He={active:he,activatorEvent:Ee,collisions:Ae,delta:{x:ke.x,y:ke.y},over:et};Ma.unstable_batchedUpdates(()=>{ca(et),Ne?.(He),$({type:"onDragOver",event:He})})},[In]),Pr(()=>{Ct.current={activatorEvent:fe,active:Fe,activeNode:ie,collisionRect:Dn,collisions:nt,droppableRects:ce,draggableNodes:W,draggingNode:rn,draggingNodeRect:Kt,droppableContainers:Se,over:mn,scrollableAncestors:an,scrollAdjustedTranslate:gn},Ue.current={initial:Kt,translated:Dn}},[Fe,ie,nt,Dn,W,rn,Kt,ce,Se,mn,an,gn]),A_({..._e,delta:pe,draggingRect:Dn,pointerCoordinates:Vr,scrollableAncestors:an,scrollableAncestorRects:pn});const ue=N.useMemo(()=>({active:Fe,activeNode:ie,activeNodeRect:Me,activatorEvent:fe,collisions:nt,containerNodeRect:pt,dragOverlay:ht,draggableNodes:W,droppableContainers:Se,droppableRects:ce,over:mn,measureDroppableContainers:de,scrollableAncestors:an,scrollableAncestorRects:pn,measuringConfiguration:T,measuringScheduled:be,windowRect:hn}),[Fe,ie,Me,fe,nt,pt,ht,W,Se,ce,mn,de,an,pn,T,be,hn]),ee=N.useMemo(()=>({activatorEvent:fe,activators:se,active:Fe,activeNodeRect:Me,ariaDescribedById:{draggable:ge},dispatch:L,draggableNodes:W,over:mn,measureDroppableContainers:de}),[fe,se,Fe,Me,L,ge,W,mn,de]);return Ye.createElement(sy.Provider,{value:k},Ye.createElement(xc.Provider,{value:ee},Ye.createElement(Ly.Provider,{value:ue},Ye.createElement($y.Provider,{value:sn},h)),Ye.createElement(W_,{disabled:d?.restoreFocus===!1})),Ye.createElement(YE,{...d,hiddenTextDescribedById:ge}));function ve(){const he=wt?.autoScrollEnabled===!1,Ee=typeof f=="object"?f.enabled===!1:f===!1,Ae=G&&!he&&!Ee;return typeof f=="object"?{...f,enabled:Ae}:{enabled:Ae}}}),Z_=N.createContext(null),My="button",eA="Draggable";function tA(s){let{id:e,data:n,disabled:r=!1,attributes:i}=s;const l=Lo(eA),{activators:c,activatorEvent:d,active:f,activeNodeRect:h,ariaDescribedById:m,draggableNodes:y,over:S}=N.useContext(xc),{role:v=My,roleDescription:_="draggable",tabIndex:x=0}=i??{},A=f?.id===e,L=N.useContext(A?$y:Z_),[$,k]=Sc(),[O,P]=Sc(),G=H_(c,e),B=Do(n);Pr(()=>(y.set(e,{id:e,key:l,node:$,activatorNode:O,data:B}),()=>{const pe=y.get(e);pe&&pe.key===l&&y.delete(e)}),[y,e]);const W=N.useMemo(()=>({role:v,tabIndex:x,"aria-disabled":r,"aria-pressed":A&&v===My?!0:void 0,"aria-roledescription":_,"aria-describedby":m.draggable}),[r,v,x,A,_,m.draggable]);return{active:f,activatorEvent:d,activeNodeRect:h,attributes:W,isDragging:A,listeners:r?void 0:G,node:$,over:S,setNodeRef:k,setActivatorNodeRef:P,transform:L}}function nA(){return N.useContext(Ly)}const rA="Droppable",aA={timeout:25};function iA(s){let{data:e,disabled:n=!1,id:r,resizeObserverConfig:i}=s;const l=Lo(rA),{active:c,dispatch:d,over:f,measureDroppableContainers:h}=N.useContext(xc),m=N.useRef({disabled:n}),y=N.useRef(!1),S=N.useRef(null),v=N.useRef(null),{disabled:_,updateMeasurementsFor:x,timeout:A}={...aA,...i},L=Do(x??r),$=N.useCallback(()=>{if(!y.current){y.current=!0;return}v.current!=null&&clearTimeout(v.current),v.current=setTimeout(()=>{h(Array.isArray(L.current)?L.current:[L.current]),v.current=null},A)},[A]),k=_c({callback:$,disabled:_||!c}),O=N.useCallback((W,pe)=>{k&&(pe&&(k.unobserve(pe),y.current=!1),W&&k.observe(W))},[k]),[P,G]=Sc(O),B=Do(e);return N.useEffect(()=>{!k||!P.current||(k.disconnect(),y.current=!1,k.observe(P.current))},[P,k]),N.useEffect(()=>(d({type:nn.RegisterDroppable,element:{id:r,key:l,disabled:n,node:P,rect:S,data:B}}),()=>d({type:nn.UnregisterDroppable,key:l,id:r})),[r]),N.useEffect(()=>{n!==m.current.disabled&&(d({type:nn.SetDroppableDisabled,id:r,key:l,disabled:n}),m.current.disabled=n)},[r,l,n,d]),{active:c,rect:S,isOver:f?.id===r,node:P,over:f,setNodeRef:G}}function qf(s,e,n){const r=s.slice();return r.splice(n<0?r.length+n:n,0,r.splice(e,1)[0]),r}function sA(s,e){return s.reduce((n,r,i)=>{const l=e.get(r);return l&&(n[i]=l),n},Array(s.length))}function Tc(s){return s!==null&&s>=0}function oA(s,e){if(s===e)return!0;if(s.length!==e.length)return!1;for(let n=0;n<s.length;n++)if(s[n]!==e[n])return!1;return!0}function lA(s){return typeof s=="boolean"?{draggable:s,droppable:s}:s}const kc={scaleX:1,scaleY:1},cA=s=>{var e;let{rects:n,activeNodeRect:r,activeIndex:i,overIndex:l,index:c}=s;const d=(e=n[i])!=null?e:r;if(!d)return null;const f=uA(n,c,i);if(c===i){const h=n[l];return h?{x:i<l?h.left+h.width-(d.left+d.width):h.left-d.left,y:0,...kc}:null}return c>i&&c<=l?{x:-d.width-f,y:0,...kc}:c<i&&c>=l?{x:d.width+f,y:0,...kc}:{x:0,y:0,...kc}};function uA(s,e,n){const r=s[e],i=s[e-1],l=s[e+1];return!r||!i&&!l?0:n<e?i?r.left-(i.left+i.width):l.left-(r.left+r.width):l?l.left-(r.left+r.width):r.left-(i.left+i.width)}const Gf=s=>{let{rects:e,activeIndex:n,overIndex:r,index:i}=s;const l=qf(e,r,n),c=e[i],d=l[i];return!d||!c?null:{x:d.left-c.left,y:d.top-c.top,scaleX:d.width/c.width,scaleY:d.height/c.height}},Rc={scaleX:1,scaleY:1},dA=s=>{var e;let{activeIndex:n,activeNodeRect:r,index:i,rects:l,overIndex:c}=s;const d=(e=l[n])!=null?e:r;if(!d)return null;if(i===n){const h=l[c];return h?{x:0,y:n<c?h.top+h.height-(d.top+d.height):h.top-d.top,...Rc}:null}const f=fA(l,i,n);return i>n&&i<=c?{x:0,y:-d.height-f,...Rc}:i<n&&i>=c?{x:0,y:d.height+f,...Rc}:{x:0,y:0,...Rc}};function fA(s,e,n){const r=s[e],i=s[e-1],l=s[e+1];return r?n<e?i?r.top-(i.top+i.height):l?l.top-(r.top+r.height):0:l?l.top-(r.top+r.height):i?r.top-(i.top+i.height):0:0}const Ny="Sortable",Iy=Ye.createContext({activeIndex:-1,containerId:Ny,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:Gf,disabled:{draggable:!1,droppable:!1}});function hA(s){let{children:e,id:n,items:r,strategy:i=Gf,disabled:l=!1}=s;const{active:c,dragOverlay:d,droppableRects:f,over:h,measureDroppableContainers:m}=nA(),y=Lo(Ny,n),S=d.rect!==null,v=N.useMemo(()=>r.map(G=>typeof G=="object"&&"id"in G?G.id:G),[r]),_=c!=null,x=c?v.indexOf(c.id):-1,A=h?v.indexOf(h.id):-1,L=N.useRef(v),$=!oA(v,L.current),k=A!==-1&&x===-1||$,O=lA(l);Pr(()=>{$&&_&&m(v)},[$,v,_,m]),N.useEffect(()=>{L.current=v},[v]);const P=N.useMemo(()=>({activeIndex:x,containerId:y,disabled:O,disableTransforms:k,items:v,overIndex:A,useDragOverlay:S,sortedRects:sA(v,f),strategy:i}),[x,y,O.draggable,O.droppable,k,v,A,f,S,i]);return Ye.createElement(Iy.Provider,{value:P},e)}const pA=s=>{let{id:e,items:n,activeIndex:r,overIndex:i}=s;return qf(n,r,i).indexOf(e)},gA=s=>{let{containerId:e,isSorting:n,wasDragging:r,index:i,items:l,newIndex:c,previousItems:d,previousContainerId:f,transition:h}=s;return!h||!r||d!==l&&i===c?!1:n?!0:c!==i&&e===f},mA={duration:200,easing:"ease"},jy="transform",yA=Mo.Transition.toString({property:jy,duration:0,easing:"linear"}),bA={roleDescription:"sortable"};function vA(s){let{disabled:e,index:n,node:r,rect:i}=s;const[l,c]=N.useState(null),d=N.useRef(n);return Pr(()=>{if(!e&&n!==d.current&&r.current){const f=i.current;if(f){const h=ys(r.current,{ignoreTransform:!0}),m={x:f.left-h.left,y:f.top-h.top,scaleX:f.width/h.width,scaleY:f.height/h.height};(m.x||m.y)&&c(m)}}n!==d.current&&(d.current=n)},[e,n,r,i]),N.useEffect(()=>{l&&c(null)},[l]),l}function SA(s){let{animateLayoutChanges:e=gA,attributes:n,disabled:r,data:i,getNewIndex:l=pA,id:c,strategy:d,resizeObserverConfig:f,transition:h=mA}=s;const{items:m,containerId:y,activeIndex:S,disabled:v,disableTransforms:_,sortedRects:x,overIndex:A,useDragOverlay:L,strategy:$}=N.useContext(Iy),k=wA(r,v),O=m.indexOf(c),P=N.useMemo(()=>({sortable:{containerId:y,index:O,items:m},...i}),[y,i,O,m]),G=N.useMemo(()=>m.slice(m.indexOf(c)),[m,c]),{rect:B,node:W,isOver:pe,setNodeRef:Se}=iA({id:c,data:P,disabled:k.droppable,resizeObserverConfig:{updateMeasurementsFor:G,...f}}),{active:we,activatorEvent:Ue,activeNodeRect:Fe,attributes:qe,setNodeRef:wt,listeners:J,isDragging:fe,over:Le,setActivatorNodeRef:Z,transform:ge}=tA({id:c,data:P,attributes:{...bA,...n},disabled:k.draggable}),H=IE(Se,wt),T=!!we,ce=T&&!_&&Tc(S)&&Tc(A),de=!L&&fe,be=de&&ce?ge:null,xe=ce?be??(d??$)({rects:x,activeNodeRect:Fe,activeIndex:S,overIndex:A,index:O}):null,_e=Tc(S)&&Tc(A)?l({id:c,items:m,activeIndex:S,overIndex:A}):O,Te=we?.id,Me=N.useRef({activeId:Te,items:m,newIndex:_e,containerId:y}),pt=m!==Me.current.items,Ct=e({active:we,containerId:y,isDragging:fe,isSorting:T,id:c,index:O,items:m,newIndex:Me.current.newIndex,previousItems:Me.current.items,previousContainerId:Me.current.containerId,transition:h,wasDragging:Me.current.activeId!=null}),Ot=vA({disabled:!Ct,index:O,node:W,rect:B});return N.useEffect(()=>{T&&Me.current.newIndex!==_e&&(Me.current.newIndex=_e),y!==Me.current.containerId&&(Me.current.containerId=y),m!==Me.current.items&&(Me.current.items=m)},[T,_e,y,m]),N.useEffect(()=>{if(Te===Me.current.activeId)return;if(Te!=null&&Me.current.activeId==null){Me.current.activeId=Te;return}const rn=setTimeout(()=>{Me.current.activeId=Te},50);return()=>clearTimeout(rn)},[Te]),{active:we,activeIndex:S,attributes:qe,data:P,rect:B,index:O,newIndex:_e,items:m,isOver:pe,isSorting:T,isDragging:fe,listeners:J,node:W,overIndex:A,over:Le,setNodeRef:H,setActivatorNodeRef:Z,setDroppableNodeRef:Se,setDraggableNodeRef:wt,transform:Ot??xe,transition:ht()};function ht(){if(Ot||pt&&Me.current.newIndex===O)return yA;if(!(de&&!Of(Ue)||!h)&&(T||Ct))return Mo.Transition.toString({...h,property:jy})}}function wA(s,e){var n,r;return typeof s=="boolean"?{draggable:s,droppable:!1}:{draggable:(n=s?.draggable)!=null?n:e.draggable,droppable:(r=s?.droppable)!=null?r:e.droppable}}function Dc(s){if(!s)return!1;const e=s.data.current;return!!(e&&"sortable"in e&&typeof e.sortable=="object"&&"containerId"in e.sortable&&"items"in e.sortable&&"index"in e.sortable)}const CA=[lt.Down,lt.Right,lt.Up,lt.Left],EA=(s,e)=>{let{context:{active:n,collisionRect:r,droppableRects:i,droppableContainers:l,over:c,scrollableAncestors:d}}=e;if(CA.includes(s.code)){if(s.preventDefault(),!n||!r)return;const f=[];l.getEnabled().forEach(y=>{if(!y||y!=null&&y.disabled)return;const S=i.get(y.id);if(S)switch(s.code){case lt.Down:r.top<S.top&&f.push(y);break;case lt.Up:r.top>S.top&&f.push(y);break;case lt.Left:r.left>S.left&&f.push(y);break;case lt.Right:r.left<S.left&&f.push(y);break}});const h=ZE({collisionRect:r,droppableRects:i,droppableContainers:f});let m=dy(h,"id");if(m===c?.id&&h.length>1&&(m=h[1].id),m!=null){const y=l.get(n.id),S=l.get(m),v=S?i.get(S.id):null,_=S?.node.current;if(_&&v&&y&&S){const A=Cc(_).some((G,B)=>d[B]!==G),L=Hy(y,S),$=_A(y,S),k=A||!L?{x:0,y:0}:{x:$?r.width-v.width:0,y:$?r.height-v.height:0},O={x:v.left,y:v.top};return k.x&&k.y?O:$o(O,k)}}}};function Hy(s,e){return!Dc(s)||!Dc(e)?!1:s.data.current.sortable.containerId===e.data.current.sortable.containerId}function _A(s,e){return!Dc(s)||!Dc(e)||!Hy(s,e)?!1:s.data.current.sortable.index<e.data.current.sortable.index}const AA={verticalList:dA,horizontalList:cA,rectSorting:Gf},xA=({items:s,itemKey:e,strategy:n,children:r,onSortEnd:i,onSortStart:l,sortVersion:c})=>{const d=N.useId(),f=N.useRef({inProgress:!1,lastSortTime:0,lastActiveId:null}),h=XE(oy(zf,{activationConstraint:{distance:5}}),oy(jf,{coordinateGetter:EA})),m=N.useCallback(v=>{f.current={inProgress:!0,lastSortTime:Date.now(),lastActiveId:v.active.id},l?.({activeId:v.active.id})},[l]),y=N.useCallback(v=>{const{active:_,over:x}=v,A=Date.now();if(!x||_.id===x.id){f.current.inProgress=!1;return}const{lastSortTime:L,lastActiveId:$,inProgress:k}=f.current;if($===_.id&&A-L<500&&!k)return;f.current={inProgress:!1,lastSortTime:A,lastActiveId:_.id};const O=s.findIndex(G=>String(G[e])===String(_.id)),P=s.findIndex(G=>String(G[e])===String(x.id));if(O!==-1&&P!==-1&&O!==P){const G=qf(s,O,P);i?.(G,{oldIndex:O,newIndex:P})}},[s,e,i]),S=s.map(v=>String(v[e]));return ft.jsx(Q_,{id:d,sensors:h,collisionDetection:QE,onDragStart:m,onDragEnd:y,children:ft.jsx(hA,{items:S,strategy:AA[n],children:r})},c!==void 0?`${d}-v${c}`:d)},zy=N.createContext(null),TA=({value:s,children:e})=>ft.jsx(zy.Provider,{value:s,children:e}),kA=()=>N.useContext(zy),RA=({id:s,handle:e,as:n="div",children:r})=>{const{attributes:i,listeners:l,setNodeRef:c,transform:d,transition:f,isDragging:h}=SA({id:s}),m={transform:Mo.Transform.toString(d),transition:f,opacity:h?.5:1,position:"relative"};return ft.jsx(n,{ref:c,style:m,...i,...e?{}:l,"data-sortable-item":!0,"data-sortable-id":String(s),"data-dragging":h,children:ft.jsx(TA,{value:{listeners:l,handle:e,isDragging:h},children:r})})},it=dt("DynamicRenderer");function ia(){try{return window.G7Core?.devTools}catch{return}}function Ff(s,e,n,r){if(typeof s=="string"){if(/\$t:[a-zA-Z_][a-zA-Z0-9_.\-]*/.test(s))try{return e.resolveTranslations(s,n,r)}catch{return s}return s}if(Array.isArray(s))return s.map(i=>Ff(i,e,n,r));if(s&&typeof s=="object"){const i={};for(const[l,c]of Object.entries(s))i[l]=Ff(c,e,n,r);return i}return s}function DA(s){const e=Object.keys(s);return e.length>0&&e.every(n=>/^\d+$/.test(n))}const Ar=(s,e)=>{const n=["errors"],r={...s};for(const i of Object.keys(e)){const l=e[i],c=s[i];if(l===null){r[i]=null;continue}if(n.includes(i)){r[i]=l;continue}if(Array.isArray(l)){r[i]=l;continue}if(Array.isArray(c)&&l!==null&&typeof l=="object"&&!Array.isArray(l)&&DA(l)){const d=Object.keys(l).map(h=>parseInt(h,10));if((d.length>0?Math.max(...d):0)>=c.length+d.length+10)r[i]={...l};else{const h=[...c];for(const[m,y]of Object.entries(l)){const S=parseInt(m,10);S>=0&&S<h.length?y!==null&&typeof y=="object"&&!Array.isArray(y)&&h[S]!==null&&typeof h[S]=="object"?h[S]=Ar(h[S],y):h[S]=y:S>=h.length&&(h[S]=y)}r[i]=h}}else l!==null&&typeof l=="object"&&c!==null&&typeof c=="object"&&!Array.isArray(c)?r[i]=Ar(c,l):r[i]=l}return r},Oc=(s,e)=>{let n=null;const r=()=>(n===null&&(n={...s}),n);for(const i of Object.keys(e)){if(!(i in s))continue;const l=e[i],c=s[i];if(l!==null&&typeof l=="object"&&!Array.isArray(l)&&c!==null&&typeof c=="object"&&!Array.isArray(c)){const d=Oc(c,l);if(d===c)continue;Object.keys(d).length===0?delete r()[i]:r()[i]=d}else delete r()[i]}return n??s},OA=s=>{const e={},n=s.split(";").filter(r=>r.trim());for(const r of n){const i=r.indexOf(":");if(i===-1)continue;const l=r.substring(0,i).trim(),c=r.substring(i+1).trim();if(l&&c){const d=l.replace(/-([a-z])/g,(f,h)=>h.toUpperCase());e[d]=c}}return e};class LA extends N.Component{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,n){it.error(`컴포넌트 렌더링 에러 (ID: ${this.props.componentId}, Name: ${this.props.componentName}):`,e,n)}render(){return this.state.hasError?this.props.fallback?this.props.fallback:ft.jsxs("div",{className:"p-4 my-2 bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg text-red-800 dark:text-red-400",children:[ft.jsx("div",{className:"font-semibold mb-1",children:"컴포넌트 로드 실패"}),ft.jsxs("div",{className:"text-xs opacity-80",children:[this.props.componentName&&`[${this.props.componentName}] `,"데이터를 표시할 수 없습니다."]}),this.state.error&&ft.jsxs("details",{className:"mt-2",children:[ft.jsx("summary",{className:"cursor-pointer text-xs opacity-70 hover:opacity-100",children:"상세 정보"}),ft.jsx("div",{className:"mt-1 p-2 bg-red-100 dark:bg-red-900/30 rounded text-xs font-mono whitespace-pre-wrap break-all",children:this.state.error.message})]})]}):this.props.children}}const Br=N.memo(({componentDef:s,dataContext:e,translationContext:n,registry:r,bindingEngine:i,translationEngine:l,actionDispatcher:c,parentComponentContext:d,parentFormContextProp:f,parentDataContext:h,isRootRenderer:m=!1,isInsideIteration:y=!1,isEditMode:S=!1,onComponentSelect:v,onComponentHover:_,onDragStart:x,onDragEnd:A,componentPath:L,layoutKey:$})=>{const[k,O]=N.useState({loadingActions:{}});N.useLayoutEffect(()=>{d||(i.startRenderCycle(),window.__g7SetLocalOverrideKeys||(window.__g7ForcedLocalFields=void 0),window.__g7PendingLocalState=null)});const P=N.useRef(null);N.useLayoutEffect(()=>{if(!d&&e._localInit&&typeof e._localInit=="object"){const{_forceLocalInit:F,_merge:se,...ue}=e._localInit,ee=`${JSON.stringify(ue)}:${F||"no-force"}`;if(P.current!==ee){P.current=ee;const ve=se||"shallow",Ee=window.G7Core?.state?.get?.()?._local||{},Ae=window.__g7PendingLocalState||{},Ve={...Ee,...Ae};ve==="replace"?window.__g7PendingLocalState={loadingActions:Ve.loadingActions||{},...ue,hasChanges:!1}:ve==="deep"?window.__g7PendingLocalState=Ar(Ve,{...ue,hasChanges:!1}):window.__g7PendingLocalState={...Ve,...ue,hasChanges:!1};const ke=window.__g7SetLocalOverrideKeys;ke&&typeof ke=="object"&&(ve==="replace"?window.__g7SetLocalOverrideKeys={...ue,hasChanges:!1}:window.__g7SetLocalOverrideKeys=Ar(ke,{...ue,hasChanges:!1}))}}}),N.useLayoutEffect(()=>{if(!d){const F=window.__g7SetLocalOverrideKeys;if(F){O(ve=>Oc(ve,F));const se=F,ue=window.__g7ForcedLocalFields,ee=window.__g7LastSetLocalSnapshot;queueMicrotask(()=>{window.__g7SetLocalOverrideKeys===se&&(window.__g7SetLocalOverrideKeys=void 0),window.__g7ForcedLocalFields===ue&&(window.__g7ForcedLocalFields=void 0),window.__g7LastSetLocalSnapshot===ee&&(window.__g7LastSetLocalSnapshot=void 0)})}}},[e._local]);const G=N.useRef($);N.useEffect(()=>{s._fromBase&&$&&G.current!==$&&(G.current=$,O({loadingActions:{}}))},[$,s._fromBase]);const B=N.useRef(""),W=N.useRef(!1),pe=N.useRef(null),Se=N.useRef(null),we=N.useRef({}),Ue=N.useRef({}),Fe=N.useRef(h),qe=NE(),wt=dE(),J=wt?.getParentDataContext()??h;N.useEffect(()=>{if(e._localInit&&typeof e._localInit=="object"){const{_forceLocalInit:F,...se}=e._localInit,ue=JSON.stringify(se),ee=F!==void 0,ve=Ef(),he=`${ue}:${F||"no-force"}`,Ee=vE({globalTrackedKey:ve.hash,instanceHandledKey:Se.current,trackingKey:he});if(Ee==="apply"){Se.current=he,ve.hash=he,ve.timestamp=F,B.current=ue,ee&&(W.current=!0);const{_merge:Ve,...ke}=se,Ne=Ve||"shallow";O(Re=>Ne==="replace"?{loadingActions:Re.loadingActions||{},...ke,hasChanges:!1}:Ne==="deep"?Ar(Re,{...ke,hasChanges:!1}):{...Re,...ke,hasChanges:!1}),e._globalSetState&&e._globalSetState(Re=>{const et=Re?._local||{};let He;return Ne==="replace"?He={...ke,hasChanges:!1}:Ne==="deep"?He=Ar(et,{...ke,hasChanges:!1}):He={...et,...ke,hasChanges:!1},{...Re,_local:He}}),i.invalidateCacheByKeys(["_local"]),it.log("_localInit applied (data changed):",Object.keys(se))}else if(Ee==="prune"){Se.current=he;const{_merge:Ve,...ke}=se;O(Re=>Oc(Re,ke)),Oc(k,ke)!==k&&(i.invalidateCacheByKeys(["_local"]),it.log("_localInit pruned (applied by another renderer):",Object.keys(ke)))}pe.current=e._localInit,yE(e._localInit)}},[e._localInit,h,i]);const{isTransitioning:fe}=Jm(),Le=xE(),Z=f??Le,{width:ge}=Af(),H=kA(),T=N.useMemo(()=>{let F=s;if(s.type==="iterator"&&s.data){const{data:ee,itemName:ve,indexName:he,...Ee}=s;F={...Ee,iteration:{source:ee,item_var:ve||"item",index_var:he}}}if(!F.responsive)return F;const se=Si.getMatchingKey(F.responsive,ge);if(!se)return F;const ue=F.responsive[se];return{...F,props:{...F.props,...ue.props},children:ue.children??F.children,text:ue.text??F.text,if:ue.if??F.if,iteration:ue.iteration??F.iteration,__responsiveChildrenKey:ue.children!==void 0?se:void 0}},[s,ge]),ce=N.useCallback(F=>{const se=F?.__setStateId;if(O(ue=>{const ee=window.__g7PendingLocalState,he=window.__g7SetLocalOverrideKeys||ee,Ee=he?Ar(ue,he):ue;if(typeof F=="function"){const Re=F(Ee);return Ar(Ee,Re)}const{__mergeMode:Ae,__setStateId:Ve,...ke}=F;let Ne;if(Ae==="replace"?Ne=ke:Ae==="shallow"?Ne={...Ee,...ke}:Ne=Ar(Ee,ke),Ae!==void 0){const Re=window.__g7ForcedLocalFields;Re&&(window.__g7ForcedLocalFields={...Re,...ke})}return Ne}),se){const ue=ia();if(ue?.isEnabled()){const ee=T.id||"unknown",ve=T.name||"Unknown";setTimeout(()=>{ue.trackComponentRender?.(ee,ve,0,["_local"],[]),ue.completeStateChange?.(se)},0)}}},[T.id,T.name]),de=d?.state??k,be=d?.setState??ce,ie=N.useMemo(()=>{const F=e._localInit&&e._localInit!==pe.current;let se;F&&e._local?se=e._local:se=e._local?Ar(e._local,de):de;const ue=window.__g7ForcedLocalFields;ue&&(se=Ar(se,ue));const ee={...e,_local:se},ve=e._computedDefinitions;if(ve&&Object.keys(ve).length>0){const he=new kn,Ee={...ee,...qe?{_isolated:qe.state}:{}},Ae={},Ve=ia(),ke=Ve?.isEnabled()??!1;for(const[Ne,Re]of Object.entries(ve)){const et=ke?Date.now():0,He=ke?e._computed?.[Ne]:void 0;let Ge;try{if(typeof Re=="string")if(Re.startsWith("{{")&&Re.endsWith("}}")){const Ce=Re.slice(2,-2).trim(),je=Gn(Ce)?he.evaluatePipeExpression(Ce,Ee,{skipCache:!0}):he.evaluateExpression(Ce,Ee,{skipCache:!0});Ae[Ne]=je}else Ae[Ne]=Re;else if(Re&&typeof Re=="object"&&"$switch"in Re){const Ce=he.resolveSwitch(Re,Ee,{skipCache:!0});Ae[Ne]=Ce}}catch(Ce){it.warn(`Failed to recalculate computed value: ${Ne}`,Ce),Ae[Ne]=e._computed?.[Ne],Ge=Ce instanceof Error?Ce.message:String(Ce)}if(ke&&(Ge||He!==Ae[Ne])){const je=Date.now()-et;Ve.trackComputedProperty?.(Ne,typeof Re=="string"?Re:JSON.stringify(Re),[{type:"_local",path:"_local",value:ee._local}],Ae[Ne],je,T.id,Ge),He!==Ae[Ne]&&Ve.trackComputedRecalc?.(Ne,"dependency-change",He,Ae[Ne],je,{type:"_local",path:"_local"},T.id)}}ee._computed=Ae}if(qe&&(ee._isolated=qe.state),J&&(ee.$parent=J),s.extensionPointProps){const he=i.resolveObject(s.extensionPointProps,ee,y?{skipCache:!0}:void 0);ee.extensionPointProps=S&&l?Ff(he,l,n,ee):he}return s.extensionPointCallbacks&&(ee.extensionPointCallbacks=s.extensionPointCallbacks),S&&(ee.$templateId===void 0&&n?.templateId&&(ee.$templateId=n.templateId),ee.$locale===void 0&&n?.locale&&(ee.$locale=n.locale)),ee},[e,de,qe?.state,J,wt?.version,s.extensionPointProps,s.extensionPointCallbacks]);we.current=ie._local,Ue.current=ie._computed||{},Fe.current=J,N.useEffect(()=>{const F=ia();if(!F?.isEnabled())return;const se=ie._local;se&&F.updateLocalState(se);const ue=ie._computed;ue&&F.updateComputedState(ue),J&&F.updateParentContext?.(J);const ee=T.id||`comp-${Date.now()}`,ve=T.name||"Unknown",he={global:Object.keys(e._global||{}),local:Object.keys(se||{}),context:d?Object.keys(d.state||{}):[]},Ee={type:d?"componentContext":"dynamicState",hasComponentContext:!!d,parentId:d?"parent":void 0};F.trackComponentStateSource?.(ee,ve,he,Ee),de&&Object.keys(de).length>0&&F.trackDynamicState?.(ee,de);const Ae=!!(T.expandChildren||T.props?.expandChildren);F.trackContextFlow?.(ee,ve,!!d,Ae,!0)},[ie._local,e,T.id,T.name,d,de,T.expandChildren,T.props?.expandChildren,J]);const xe=N.useMemo(()=>({state:{...ie._local},setState:be,stateRef:we,computedRef:Ue,isolatedContext:qe,parentDataContext:ie}),[ie._local,be,k,qe,ie]),_e=N.useMemo(()=>{const F=os({if:T.if,condition:T.condition,conditions:T.conditions},ie,i,T.id);if(T.if||T.condition!==void 0||T.conditions){const ue=ia();ue?.isEnabled()&&T.if&&ue.trackIfCondition(T.id||`if-${Date.now()}`,T.if,F)}return F},[T.if,T.conditions,ie,i,T.id]),Te=N.useMemo(()=>{if(!T.slot)return null;const F=T.slot;if(F.startsWith("{{")&&F.endsWith("}}")){const se=F.slice(2,-2).trim();try{const ue={componentId:T.id,componentName:T.name,propName:"slot"},ee=Gn(se)?i.evaluatePipeExpression(se,ie,void 0,ue):i.evaluateExpression(se,ie,ue);return it.log(`[Slot] 표현식 평가: "${se}" => "${ee}" (컴포넌트: ${T.id})`),typeof ee=="string"?ee:null}catch(ue){return it.warn(`slot 표현식 평가 실패 (컴포넌트: ${T.id}):`,ue),null}}return it.log(`[Slot] 정적 슬롯 ID: "${F}" (컴포넌트: ${T.id})`),F},[T.slot,T.id,ie,i]),Me=N.useMemo(()=>!Te||!T.id?"":`${T.id}-${Te}-${JSON.stringify(T.slotOrder??0)}`,[Te,T.id,T.slotOrder]),pt=N.useRef(null);N.useEffect(()=>{const F=window.__slotContextValue,se=F?.isEnabled??!1;if(T.slot&&it.log(`[Slot Registration] 컴포넌트: ${T.id}, isSlotEnabled: ${se}, shouldRender: ${_e}, resolvedSlotId: ${Te}`),!se||!_e){T.slot&&it.log(`[Slot Registration] 등록 스킵 - isSlotEnabled: ${se}, shouldRender: ${_e}`),pt.current&&T.id&&F&&(F.unregisterFromSlot(pt.current,T.id),pt.current=null);return}if(!Te||!T.id){T.slot&&it.log(`[Slot Registration] 등록 스킵 - resolvedSlotId: ${Te}, id: ${T.id}`),pt.current&&T.id&&F&&(F.unregisterFromSlot(pt.current,T.id),pt.current=null);return}pt.current&&pt.current!==Te&&F.unregisterFromSlot(pt.current,T.id);const ue={...T,slot:void 0,slotOrder:void 0};return F.registerToSlot(Te,T.id,{componentDef:ue,dataContext:e,order:T.slotOrder??0,parentFormContext:f??null,getParentComponentContext:()=>xe,translationContext:n,registrationKey:Me}),pt.current=Te,()=>{const ee=window.__slotContextValue;Te&&T.id&&ee&&ee.unregisterFromSlot(Te,T.id)}},[_e,Te,T,e,f,xe,n,Me]);const Ct=N.useCallback(F=>{if(typeof F=="string"){if(Yl(F))return zd(F);if(Xl(F)){const se=[],ue=F.replace(new RegExp(`${po}([^${bi}]*)${bi}`,"g"),(ve,he)=>(se.push(he),`${Oa}${se.length-1}${Oa}`));let ee=ue;return/\$t:[a-zA-Z0-9._-]+/.test(ue)&&(ee=l.resolveTranslations(ue,n,ie)),ee.replace(new RegExp(`${Oa}(\\d+)${Oa}`,"g"),(ve,he)=>se[parseInt(he)])}if(F.startsWith("$t:defer:"))return F;if(/\$t:[a-zA-Z0-9._-]+/.test(F)){const se=F.trim();return se.startsWith("{")&&se.endsWith("}")||se.startsWith("[")&&se.endsWith("]")?F:l.resolveTranslations(F,n,ie)}return F}if(Array.isArray(F))return F.map(se=>Ct(se));if(F&&typeof F=="object"){const se={};for(const[ue,ee]of Object.entries(F))se[ue]=Ct(ee);return se}return F},[l,n,ie]),Ot=N.useCallback(F=>ho(F),[]),ht=N.useCallback(F=>Da(F),[]),rn=N.useMemo(()=>{let F={...T.props||{}};const se=["cellChildren","expandChildren","expandContext","render"],ee=r.getMetadata(T.name)?.skipBindingKeys||[],ve=[...new Set([...se,...ee])],he=y?{skipCache:!0}:void 0,Ee={...he??{},skipBindingKeys:ve},Ae=Ce=>{if(he)return he;if(Ce.startsWith("_computed")||Ce.startsWith("$computed"))return{skipCache:!0}};for(const[Ce,je]of Object.entries(F))if(!ve.includes(Ce))if(typeof je=="string"){const tt=ht(je);if(tt!==null){let At=!1,Mt=tt;tt.startsWith(nr)&&(At=!0,Mt=tt.slice(nr.length));const On={componentId:T.id,componentName:T.name,propName:Ce};let jt;if(Gn(Mt))try{jt=i.evaluatePipeExpression(Mt,ie,Ae(Mt),On)}catch(Ht){it.warn(`파이프 표현식 평가 실패 (컴포넌트: ${T.id}, prop: ${Ce}):`,Ht),jt=void 0}else if(Ot(Mt))try{jt=i.evaluateExpression(Mt,ie,On)}catch(Ht){it.warn(`표현식 평가 실패 (컴포넌트: ${T.id}, prop: ${Ce}):`,Ht),jt=void 0}else jt=i.resolve(Mt,ie,Ae(Mt),On);F[Ce]=At&&jt!=null?ss(jt):jt}else{const At={componentId:T.id,componentName:T.name,propName:Ce};F[Ce]=i.resolveBindings(je,ie,he,At)}}else Array.isArray(je)?F[Ce]=je.map(tt=>typeof tt=="string"?i.resolveBindings(tt,ie,he):typeof tt=="object"&&tt!==null?i.resolveObject(tt,ie,Ee):tt):je&&typeof je=="object"&&(F[Ce]=i.resolveObject(je,ie,Ee));for(const[Ce,je]of Object.entries(F))F[Ce]=Ct(je);if(typeof F.style=="string"&&(F.style=OA(F.style)),F=Qd(F,S?void 0:T.actions,ie,{componentContext:xe,actionDispatcher:c}),T.classMap){const Ce=S0(T.classMap,ie,i,{skipCache:!0});if(Ce){const je=F.className||"";F.className=je?`${je} ${Ce}`:Ce}}T.style&&(F.style=T.style),T.actions&&T.actions.length>0&&T.type==="composite"&&Object.assign(F,de),T.component_layout&&(F.__componentLayoutDefs=T.component_layout);const Ve=T.expandChildren||T.props?.expandChildren,ke=T.props?.cellChildren,Ne=T.children&&T.children.length>0,Re=T.component_layout,et=T.slot,He=T.props?.modalId,Ge=T.type==="composite";return(Ve||ke||Ne||Re||et||He||Ge)&&(F.__componentContext=xe),F},[T.props,T.actions,T.style,T.classMap,T.id,ie,n,i,l,xe,de,Ct,Ot,ht,y]),Kt=N.useRef(null),It=N.useMemo(()=>Kt.current&&Zm(Kt.current,rn)?Kt.current:(Kt.current=rn,rn),[rn]),Fr=N.useMemo(()=>{const F=T.id;if(typeof F!="string"||!F.includes("{{"))return F;const se=i.resolveBindings(F,ie,{skipCache:!0});return typeof se=="string"?se:F},[T.id,ie,i]),hn=N.useMemo(()=>{const F=T.dataKey,se=T.trackChanges,ue=T.debounce;if(F){const ee=F.startsWith("_global."),ve=ee?F.slice(8):F,he=ee?e._global:ie._local;return{dataKey:ve,trackChanges:se??!1,debounce:ue,setState:ee?Ae=>{e._globalSetState?e._globalSetState(Ae):it.warn("_global.formData 사용 시 _globalSetState가 필요합니다.")}:be,state:he??{},_isGlobal:ee}}if(Z.dataKey)return Z},[T.dataKey,T.trackChanges,T.debounce,T.id,be,ie._local,e._global,e._globalSetState,Z]),an=N.useRef(new Set);N.useEffect(()=>{an.current.clear()},[e._global?._remountKeys]);const pn=N.useCallback((F,se)=>{const ue=e._global?._remountKeys;return F&&ue?.[F]&&!an.current.has(F)?(an.current.add(F),`${F}-remount-${ue[F]}`):F||se},[e._global?._remountKeys]),Wn=N.useMemo(()=>{if(T.text!==void 0){if(typeof T.text=="string"){const F=T.text;let se=F;const ue={componentId:T.id,componentName:T.name,propName:"text",skipCache:!0},ee=ht(F);if(ee!==null){let ve=!1,he=ee;if(ee.startsWith(nr)&&(ve=!0,he=ee.slice(nr.length)),Gn(he))try{se=i.evaluatePipeExpression(he,ie,{skipCache:!0},ue)}catch(Ee){it.warn(`text 파이프 표현식 평가 실패 (컴포넌트: ${T.id}):`,Ee),se=""}else if(Ot(he))try{se=i.evaluateExpression(he,ie,ue)}catch(Ee){it.warn(`text 표현식 평가 실패 (컴포넌트: ${T.id}):`,Ee),se=""}else se=i.resolve(he,ie,{skipCache:!0},ue);ve&&se!=null&&(se=ss(se))}else F.includes("{{")&&(se=i.resolveBindings(F,ie,{skipCache:!0},ue));return se=Ct(se),se??""}return T.text}return!T.children||T.children.length===0?null:T.children.map((F,se)=>{if(typeof F=="string")return F;const ue=T.__responsiveChildrenKey,ee=ue?`responsive.${ue}.children`:"children",ve=L?`${L}.${ee}.${se}`:`${se}`,he=F._fromBase?F.id||`child-${se}`:pn(F.id,`child-${se}`),Ee=!F._fromBase&&$?`${he}_${$}`:he;return ft.jsx(Br,{componentDef:F,dataContext:ie,translationContext:n,registry:r,bindingEngine:i,translationEngine:l,actionDispatcher:c,parentComponentContext:xe,parentFormContextProp:hn,isInsideIteration:y,isEditMode:S,onComponentSelect:v,onComponentHover:_,componentPath:ve,onDragStart:x,onDragEnd:A,layoutKey:$},Ee)})},[T.text,T.children,T.id,e,ie,n,r,i,l,c,xe,hn,ht,Ot,Ct,pn,y,S,v,_,L,x,A,$]),Vr=N.useMemo(()=>{if(!T.iteration)return null;try{const F=Jd(T.iteration.source,ie,i);if(!Array.isArray(F))return it.warn(`iteration source가 배열이 아닙니다 (컴포넌트: ${T.id}):`,F),null;const se=ia();return se?.isEnabled()&&se.trackIteration(T.id||`iteration-${Date.now()}`,T.iteration.source,T.iteration.item_var,T.iteration.index_var,F.length),F.map((ue,ee)=>{const ve={...ie,[T.iteration.item_var]:ue,[`${T.iteration.item_var}_index`]:ee};T.iteration.index_var&&(ve[T.iteration.index_var]=ee);const he=ee===0||ee===F.length-1;se?.isEnabled()&&he&&se.trackNestedContext?.({componentId:`${T.id||"unknown"}-iter-${ee}`,componentType:"iteration",parentContext:{available:Object.keys(ie),values:{}},ownContext:{added:[T.iteration.item_var,...T.iteration.index_var?[T.iteration.index_var]:[]],values:{[T.iteration.item_var]:ue,...T.iteration.index_var?{[T.iteration.index_var]:ee}:{}}},depth:1});const Ee={...T,iteration:void 0,responsive:void 0},Ae=L?`${L}.iteration.${ee}`:`iteration.${ee}`,Ve=`${pn(T.id,"item")}-${ee}`;return ft.jsx(Br,{componentDef:Ee,dataContext:ve,translationContext:n,registry:r,bindingEngine:i,translationEngine:l,actionDispatcher:c,parentComponentContext:xe,parentFormContextProp:hn,isInsideIteration:!0,isEditMode:S,onComponentSelect:v,onComponentHover:_,componentPath:Ae,onDragStart:x,onDragEnd:A,layoutKey:$},Ve)})}catch(F){return it.error(`iteration 렌더링 실패 (컴포넌트: ${T.id}):`,F),null}},[T.iteration,T.children,T.id,e,ie,n,r,i,l,c,xe,hn,pn,S,v,_,L,x,A,$]),[qt,ki]=N.useState(0),la=N.useMemo(()=>{if(!T.sortable||!T.itemTemplate)return null;const{sortable:F,itemTemplate:se}=T;try{const ue=Jd(F.source,ie,i);if(!Array.isArray(ue))return it.warn(`sortable source가 배열이 아닙니다 (컴포넌트: ${T.id}):`,ue),null;if(ue.length===0)return null;const ee=F.itemKey||"id",ve=F.strategy||"verticalList",he=F.itemVar||"$item",Ee=F.indexVar||"$index",Ae=F.handle,Ve=F.wrapperElement,ke=(et,He)=>{const Ge=T.actions?.filter(Ce=>Ce.event==="onSortEnd"||Ce.type==="onSortEnd");if(ki(Ce=>Ce+1),Ge&&Ge.length>0&&c){const Ce={...ie,$sortedItems:et,$sortEvent:He};Ge.forEach(je=>{try{const tt=c.createHandler(je,Ce,xe),At=new Event("sortend");tt(At)}catch(tt){it.error(`onSortEnd action failed: ${je.handler}`,tt)}})}},Ne=et=>{const He=T.actions?.filter(Ge=>Ge.event==="onSortStart"||Ge.type==="onSortStart");if(He&&He.length>0&&c){const Ge={...ie,$activeId:et.activeId};He.forEach(Ce=>{try{const je=c.createHandler(Ce,Ge,xe),tt=new Event("sortstart");je(tt)}catch(je){it.error(`onSortStart action failed: ${Ce.handler}`,je)}})}},Re=ue.map((et,He)=>{const Ge=String(et[ee]),Ce={...ie,[he]:et,[Ee]:He},je=L?`${L}.sortable.${He}`:`sortable.${He}`,tt=`${pn(T.id,"sortable-item")}-v${qt}-${Ge}`;return ft.jsx(RA,{id:Ge,handle:Ae,...Ve?{as:Ve}:{},children:(Ve&&se.children?se.children:[se]).map((At,Mt)=>ft.jsx(Br,{componentDef:At,dataContext:Ce,translationContext:n,registry:r,bindingEngine:i,translationEngine:l,actionDispatcher:c,parentComponentContext:xe,parentFormContextProp:void 0,isInsideIteration:!0,isEditMode:S,onComponentSelect:v,onComponentHover:_,componentPath:je,onDragStart:x,onDragEnd:A,layoutKey:$},`${tt}-child-${Mt}`))},tt)});return ft.jsx(xA,{items:ue,itemKey:ee,strategy:ve,onSortEnd:ke,onSortStart:Ne,sortVersion:qt,children:Re})}catch(ue){return it.error(`sortable 렌더링 실패 (컴포넌트: ${T.id}):`,ue),null}},[T.sortable,T.itemTemplate,T.actions,T.id,e,ie,n,r,i,l,c,xe,pn,S,v,_,L,x,A,qt,$]),gn=N.useRef(!1);N.useEffect(()=>{if(gn.current)return;gn.current=!0;const F=ia();if(F?.isEnabled()&&F.trackMount(s.id,{name:s.name,type:s.type||"component",props:It}),s.lifecycle?.onMount&&s.lifecycle.onMount.length>0)for(const ue of s.lifecycle.onMount)try{const ee=c.createHandler(ue,ie,xe),ve=new Event("mount");ee(ve),it.log(`Lifecycle onMount executed: ${ue.handler} (Component: ${s.id})`)}catch(ee){it.error(`Lifecycle onMount failed: ${ue.handler} (Component: ${s.id})`,ee)}const se=[];if(s.onComponentEvent&&s.onComponentEvent.length>0){const ue=window.G7Core;if(ue?.componentEvent?.on)for(const ee of s.onComponentEvent){if(!ee.event){it.warn(`onComponentEvent: event name is required (Component: ${s.id})`);continue}const ve=async Ee=>{try{const Ae={...ie,_eventData:Ee},ke=await c.createHandler({handler:ee.handler,params:ee.params,onSuccess:ee.onSuccess,onError:ee.onError},Ae,xe)(new CustomEvent(ee.event,{detail:Ee}));return it.log(`onComponentEvent "${ee.event}" handled: ${ee.handler} (Component: ${s.id})`,{eventData:Ee,result:ke}),ke}catch(Ae){throw it.error(`onComponentEvent "${ee.event}" failed: ${ee.handler} (Component: ${s.id})`,Ae),Ae}},he=ue.componentEvent.on(ee.event,ve);se.push(he),it.log(`onComponentEvent: Subscribed to "${ee.event}" (Component: ${s.id})`)}else it.warn(`onComponentEvent: G7Core.componentEvent is not available (Component: ${s.id})`)}return()=>{const ue=ia();ue?.isEnabled()&&ue.trackUnmount(s.id);for(const ee of se)try{ee()}catch(ve){it.error(`onComponentEvent: Failed to unsubscribe (Component: ${s.id})`,ve)}if(se.length>0&&it.log(`onComponentEvent: Unsubscribed ${se.length} event(s) (Component: ${s.id})`),s.lifecycle?.onUnmount&&s.lifecycle.onUnmount.length>0)for(const ee of s.lifecycle.onUnmount)try{const ve=c.createHandler(ee,ie,xe),he=new Event("unmount");ve(he),it.log(`Lifecycle onUnmount executed: ${ee.handler} (Component: ${s.id})`)}catch(ve){it.error(`Lifecycle onUnmount failed: ${ee.handler} (Component: ${s.id})`,ve)}}},[]);const Dn=N.useMemo(()=>{const F=It.dataKey,se=It.trackChanges,ue=It.debounce;return F?{dataKey:F,trackChanges:se??!1,debounce:ue,setState:be,state:de}:null},[It.dataKey,It.trackChanges,It.debounce,be,de]);N.useEffect(()=>{const F=T.dataKey||It.dataKey;if(!F)return;const se=ia();if(!se?.isEnabled())return;const ue=[],ee=he=>{if(he)for(const Ee of he){const Ae=Ee?.props?.name;if(Ae&&ue.push({name:Ae,type:Ee.name||Ee.type||"unknown"}),Ee?.children&&ee(Ee.children),Ee?.slots)for(const Ve of Object.values(Ee.slots))Array.isArray(Ve)&&ee(Ve)}};if(s.children&&ee(s.children),s.slots)for(const he of Object.values(s.slots))Array.isArray(he)&&ee(he);const ve=s.id||`form-${F}`;return se.trackForm(ve,F,ue),()=>{se.untrackForm(ve)}},[T,It.dataKey,s.id,s.children]);const nt=N.useRef(null),In=N.useRef(void 0);N.useEffect(()=>{const F=It?.name;if(!F||!Z.dataKey||!Z.setState||It?.autoBinding===!1)return;const se=`${Z.dataKey}.${F}`,ue=window.__g7AutoBindingPaths??new Map;return window.__g7AutoBindingPaths=ue,ue.set(se,(ue.get(se)??0)+1),()=>{const ee=ue.get(se)??0;ee<=1?ue.delete(se):ue.set(se,ee-1)}},[It?.name,It?.autoBinding,Z.dataKey,Z.setState]);const mn=N.useMemo(()=>{const{dataKey:F,trackChanges:se,debounce:ue,...ee}=It,ve=ee.name;if(!ve||!Z.dataKey||!Z.setState)return ee;if(ee.autoBinding===!1){const{autoBinding:Ge,...Ce}=ee;return Ce}const he=`${Z.dataKey}.${ve}`,Ee=TE(Z.state,he),Ae=Ee!==void 0?Ee:ee.value,ke=r.getMetadata(s.name)?.bindingType,Ne=typeof Ae=="boolean"&&(ke==="checked"||ke==="checkable"&&["checkbox","radio"].includes(ee?.type)),Re=Z.debounce,et=Ge=>{const Ce=Z.state||{},je=kE(Ce,he,Ge);if(Z.trackChanges&&(je.hasChanges=!0),window.__g7PendingLocalState=je,Z.setState(je),Z._isGlobal)return;const tt=window.G7Core,At={[he]:Ge};Z.trackChanges&&(At.hasChanges=!0),tt?.state?.setLocal?.(At,{render:!1})},He=(Ge,Ce)=>{Re&&Re>0?(nt.current&&clearTimeout(nt.current),nt.current=setTimeout(()=>{et(Ge),nt.current=null,Ce&&(Ce(),window.__g7PendingLocalState=null)},Re)):(et(Ge),Ce&&(Ce(),window.__g7PendingLocalState=null))};if(Ne)return{...ee,checked:Ae,onChange:Ce=>{const je=Ce.target.checked;et(je),ee.onChange&&ee.onChange(Ce)}};{const Ge=je=>{const tt=je?.target?.value!==void 0?je.target.value:je;Re&&Re>0&&(In.current=tt);const At=je?.target?{target:{value:tt,name:je.target.name,type:je.target.type,checked:je.target.checked},currentTarget:je.currentTarget?{value:tt,name:je.currentTarget.name}:void 0}:je;He(tt,()=>{ee.onChange&&ee.onChange(At)})};let Ce;return In.current!==void 0?nt.current!==null?Ce=In.current:String(Ae??"")===String(In.current)?(In.current=void 0,Ce=Ae??""):Ce=In.current:Ce=Ae??"",{...ee,value:Ce,onChange:Ge}}},[It,Z,Z.state,Z.debounce]),ca=N.useMemo(()=>{const F=ia();if(F?.isEnabled()&&F.trackRender(s.name),!_e)return T.iteration?Vr:null;if(T.sortable&&T.itemTemplate)return la;if(T.iteration)return Vr;if(T.type==="extension_point"){const{layout:ke,columns:Ne,gap:Re,className:et,...He}=T.props||{};let Ge=et||"";return ke==="grid"&&Ne?Ge=`${Ge} grid grid-cols-${Ne} gap-${Re||4}`.trim():ke==="flex"&&(Ge=`${Ge} flex flex-col gap-${Re||4}`.trim()),ft.jsx("div",{id:Fr,className:Ge||void 0,...He,children:Wn})}const se=r.getComponent(T.name);if(!se)return it.error(`컴포넌트를 찾을 수 없습니다: ${T.name} (ID: ${T.id})`,"componentDef:",JSON.stringify(T,null,2)),null;const ue=e._global?._remountKeys,ee={...mn,id:mn.id??Fr,...ue&&Object.keys(ue).length>0&&{__remountTrigger:JSON.stringify(ue)}};if(H?.listeners&&H.handle&&mn["data-drag-handle"]!==void 0&&(Object.assign(ee,H.listeners),ee.style={...ee.style,cursor:H.isDragging?"grabbing":"grab"}),S){const ke=T.id||`auto_${T.name||T.type||"unknown"}_${Math.random().toString(36).substring(2,8)}`,Ne=He=>{typeof He.preventDefault=="function"&&He.preventDefault(),v&&(He.stopPropagation(),v(ke,He))},Re={"data-editor-id":ke,"data-editor-name":T.name,"data-editor-type":T.type,onClick:Ne};L&&(Re["data-editor-path"]=L);const et=T.__editorSlotName??T.slot;typeof et=="string"&&(Re["data-editor-slot"]=et),_&&(Re.onMouseMove=He=>{He.stopPropagation(),_(ke,He)},Re.onMouseLeave=He=>{_(null,He)}),Object.assign(ee,Re),ee.editorAttrs=Re}const ve=T.type==="basic",he=T.type==="layout",Ae=ve||he?(()=>{const ke={};for(const[Ne,Re]of Object.entries(ee))Ne.startsWith("__")||Ne==="editorAttrs"&&ve||(ke[Ne]=Re);return ke})():ee;let Ve=ft.jsx(se,{...Ae,children:Wn});if(hn&&(Ve=ft.jsx(AE,{value:hn,children:Ve})),T.isolatedState){const ke=typeof T.isolatedState=="object"?T.isolatedState:{},Ne=e?._isolatedInit,Re=Ne?{...ke,...Ne}:ke;Ve=ft.jsx(ME,{initialState:Re,scopeId:T.isolatedScopeId,children:Ve})}return Ve},[_e,T.iteration,T.sortable,T.itemTemplate,T.type,T.name,T.id,T.props,T.isolatedState,T.isolatedScopeId,r,mn,Wn,Vr,la,H,Dn,S,v,_,x,A,L,e._global?._remountKeys]),lr=N.useMemo(()=>{const F=T.blur_until_loaded;if(!F||e?._global?.__isPreview)return!1;if(typeof F=="string"){const ee=ht(F);if(ee!==null)try{const ve={componentId:T.id,componentName:T.name,propName:"blur_until_loaded"};return!!i.evaluateExpression(ee,ie,ve)}catch(ve){return it.warn(`blur_until_loaded 표현식 평가 실패 (컴포넌트: ${T.id}):`,ve),!1}return!1}if(typeof F=="object"&&F!==null){if(!F.enabled)return!1;if(F.data_sources)return(Array.isArray(F.data_sources)?F.data_sources:[F.data_sources]).some(Ee=>e[Ee]===void 0);if(fe)return!0;const ee=["route","query","_global","_local","_dataSourceErrors"];return Object.keys(e).filter(he=>!ee.includes(he)&&!he.startsWith("_")).some(he=>e[he]===void 0)}if(fe)return!0;const se=["route","query","_global","_local","_dataSourceErrors"];return Object.keys(e).filter(ee=>!se.includes(ee)&&!ee.startsWith("_")).some(ee=>e[ee]===void 0)},[T.blur_until_loaded,T.id,fe,e,ie,i,ht]);if(lr){const F=T.blur_until_loaded;if(typeof F=="object"&&F?.data_sources){const ue=(Array.isArray(F.data_sources)?F.data_sources:[F.data_sources]).reduce((ve,he)=>(ve[he]=e[he]===void 0?"UNDEFINED":"LOADED",ve),{}),ee=Object.keys(e).filter(ve=>!ve.startsWith("_"));it.log(`[BLUR APPLIED] Component: ${T.id}, data_sources status:`,ue,"Available keys:",ee)}else it.log(`[BLUR APPLIED] Component: ${T.id}, blur_until_loaded:`,F)}const sn=N.useMemo(()=>{if(!T.blur_until_loaded)return{wrapperClasses:"",innerClasses:""};const F=rn?.className||"";if(!F)return{wrapperClasses:"",innerClasses:""};const se=[/^(sm:|md:|lg:|xl:|2xl:)?(col-span-|row-span-|col-start-|col-end-|row-start-|row-end-)/,/^(sm:|md:|lg:|xl:|2xl:)?(self-|place-self-|order-)/,/^(sm:|md:|lg:|xl:|2xl:)?(flex-shrink|flex-grow|flex-\d|basis-)/],ue=F.split(/\s+/).filter(Boolean),ee=[],ve=[];for(const he of ue)se.some(Ae=>Ae.test(he))?ee.push(he):ve.push(he);return{wrapperClasses:ee.join(" "),innerClasses:ve.join(" ")}},[T.blur_until_loaded,rn?.className]),_n=window.__slotContextValue;return Te&&_n?.isEnabled?null:ft.jsx(LA,{componentId:s.id,componentName:s.name,children:T.blur_until_loaded?ft.jsx("div",{className:[sn.wrapperClasses,lr?"opacity-50 blur-sm transition-all duration-300 pointer-events-none":void 0].filter(Boolean).join(" ")||void 0,children:ca}):ca})});Br.displayName="DynamicRenderer",typeof window<"u"&&(window.__DynamicRenderer=Br);function $A(s){const e={};try{const r=new URL(s,typeof window<"u"?window.location.origin:"http://localhost").searchParams,i=new Set;for(const l of r.keys()){if(i.has(l))continue;i.add(l);const c=r.getAll(l);c.length>1||l.endsWith("[]")?e[l]=c:e[l]=c[0]}}catch{}return e}function MA(s){try{return new URL(s,typeof window<"u"?window.location.origin:"http://localhost").pathname}catch{return s.split("?")[0]}}const Ti=class Ti{constructor(){M(this,"config",{enabled:!1,maxHistorySize:100,logLevel:"info",serverEndpoint:"/_boost/g7-debug/dump-state",autoCapture:!0});M(this,"stateHistory",[]);M(this,"snapshotIdCounter",0);M(this,"stateWatchers",new Map);M(this,"currentLocalState",{});M(this,"currentComputedState",{});M(this,"currentParentContext");M(this,"actionHistory",[]);M(this,"actionWatchers",new Set);M(this,"cacheStats",{hits:0,misses:0,entries:0});M(this,"cacheDecisions",[]);M(this,"cacheDecisionIdCounter",0);M(this,"maxCacheDecisions",200);M(this,"currentRenderCycleId",null);M(this,"isInActionExecution",!1);M(this,"isInIteration",!1);M(this,"mountedComponents",new Map);M(this,"eventListeners",new Map);M(this,"mountWatchers",new Set);M(this,"unmountWatchers",new Set);M(this,"renderCounts",new Map);M(this,"bindingEvalCount",0);M(this,"profilingData",[]);M(this,"isProfiling",!1);M(this,"profilingStartTime",0);M(this,"activeRequests",new Map);M(this,"requestHistory",[]);M(this,"pendingDataSources",new Set);M(this,"requestWatchers",new Set);M(this,"wsConnections",new Map);M(this,"wsMessageHistory",[]);M(this,"wsMessageWatchers",new Set);M(this,"ifConditions",new Map);M(this,"iterations",new Map);M(this,"conditionWatchers",new Set);M(this,"forms",new Map);M(this,"formWatchers",new Set);M(this,"expressionHistory",[]);M(this,"expressionWatchers",new Set);M(this,"expressionIdCounter",0);M(this,"dataSources",new Map);M(this,"dataPathTransforms",[]);M(this,"maxDataPathTransforms",100);M(this,"nestedContexts",[]);M(this,"nestedContextIdCounter",0);M(this,"maxNestedContexts",100);M(this,"formBindingIssues",[]);M(this,"formBindingValidations",[]);M(this,"formBindingIssueIdCounter",0);M(this,"maxFormBindingIssues",100);M(this,"computedProperties",new Map);M(this,"computedRecalcLogs",[]);M(this,"computedRecalcIdCounter",0);M(this,"maxComputedRecalcLogs",100);M(this,"handlers",new Map);M(this,"componentEventSubscriptions",new Map);M(this,"componentEventEmitHistory",[]);M(this,"componentEventIdCounter",0);M(this,"maxComponentEventHistory",100);M(this,"stateRenderingLogs",[]);M(this,"currentStateChangeContext",null);M(this,"stateRenderingIdCounter",0);M(this,"componentRenderCounts",new Map);M(this,"stateToComponentMap",new Map);M(this,"maxStateRenderingLogs",100);M(this,"componentStateSources",new Map);M(this,"contextFlowNodes",new Map);M(this,"dynamicStates",new Map);M(this,"styleIssues",[]);M(this,"componentStyles",new Map);M(this,"authEvents",[]);M(this,"authHeaderHistory",[]);M(this,"authEventIdCounter",0);M(this,"maxAuthEventHistory",50);M(this,"logHistory",[]);M(this,"logIdCounter",0);M(this,"maxLogHistory",500);M(this,"currentLayout",null);M(this,"layoutHistory",[]);M(this,"layoutIdCounter",0);M(this,"layoutStats",{totalLoads:0,cacheHits:0,apiLoads:0});M(this,"maxLayoutHistory",50);M(this,"executionDetails",new Map);M(this,"stateChangeHistory",[]);M(this,"dataSourceChangeHistory",[]);M(this,"changeAlerts",[]);M(this,"changeExpectations",new Map);M(this,"executionIdCounter",0);M(this,"stateChangeIdCounter",0);M(this,"alertIdCounter",0);M(this,"maxExecutionDetails",100);M(this,"maxStateChangeHistory",200);M(this,"maxChangeAlerts",100);M(this,"sequenceExecutions",[]);M(this,"sequenceExecutionStack",[]);M(this,"sequenceIdCounter",0);M(this,"maxSequenceExecutions",50);M(this,"staleClosureWarnings",[]);M(this,"staleClosureIdCounter",0);M(this,"maxStaleClosureWarnings",100);M(this,"stateCaptureRegistry",new Map);M(this,"modalStates",new Map);M(this,"modalStateIssues",[]);M(this,"modalStateRelations",[]);M(this,"modalStateChangeLogs",[]);M(this,"modalStateIssueIdCounter",0);M(this,"modalStateChangeLogIdCounter",0);M(this,"maxModalStateIssues",100);M(this,"maxModalStateChangeLogs",200);M(this,"namedActionDefinitions",{});M(this,"namedActionRefLogs",[]);M(this,"namedActionRefIdCounter",0);M(this,"maxNamedActionRefLogs",200);M(this,"debounceActionHistory",[]);M(this,"dataSourceUpdateHistory",[]);M(this,"debounceActionIdCounter",0);M(this,"dataSourceUpdateIdCounter",0)}static getInstance(){return Ti.instance||(Ti.instance=new Ti),Ti.instance}initialize(){if(this.config.enabled=this.checkDebugMode(),!this.config.enabled){console.log("[G7DevTools] 비활성화됨 (환경설정 > 고급 설정 > 디버그 모드를 켜세요)");return}console.log("[G7DevTools] 활성화됨"),this.setupGlobalErrorHandler()}checkDebugMode(){try{if(window.G7Config?.debug===!0)return!0;const r=window.G7Core?.state?.get?.();return r?.settings?.advanced?.debug_mode===!0||r?._global?.settings?.advanced?.debug_mode===!0}catch{return!1}}isEnabled(){return this.config.enabled}setupGlobalErrorHandler(){window.addEventListener("error",e=>{this.config.enabled&&this.logAction({id:this.generateId(),type:"globalError",startTime:Date.now(),status:"error",error:{name:"Error",message:e.message,stack:e.error?.stack}})}),window.addEventListener("unhandledrejection",e=>{this.config.enabled&&this.logAction({id:this.generateId(),type:"unhandledRejection",startTime:Date.now(),status:"error",error:{name:"UnhandledRejection",message:String(e.reason)}})})}captureStateSnapshot(e){if(!this.config.enabled)return;const n={id:++this.snapshotIdCounter,timestamp:Date.now(),source:e.source,prev:this.sanitizeObject(e.prev),next:this.sanitizeObject(e.next),diff:e.diff};this.stateHistory.push(n),this.stateHistory.length>this.config.maxHistorySize&&this.stateHistory.shift(),this.notifyStateWatchers(n)}getState(){try{const e=window.G7Core,n=e?.state?.get?.()||{},r={};if(e?._isolatedStates&&typeof e._isolatedStates=="object")for(const[i,l]of Object.entries(e._isolatedStates))r[i]=this.sanitizeObject(l);return{_global:n._global||n,_local:this.currentLocalState,_computed:this.currentComputedState,_isolated:Object.keys(r).length>0?r:void 0,$parent:this.currentParentContext}}catch{return{_global:{},_local:this.currentLocalState,_computed:this.currentComputedState}}}updateLocalState(e){this.config.enabled&&(this.currentLocalState=this.sanitizeObject(e))}updateComputedState(e){this.config.enabled&&(this.currentComputedState=this.sanitizeObject(e))}updateParentContext(e){this.config.enabled&&(this.currentParentContext=e?this.sanitizeObject(e):void 0)}getStateHistory(){return[...this.stateHistory]}getDualStorageMismatch(){const e=this.currentLocalState||{};let n={};try{n=(window.G7Core?.state?.get?.()||{})._local||{}}catch{n={}}const r=this.findMismatchedLeafPaths(e,n);return{hasMismatch:r.length>0,mismatchedPaths:r,storageA:e,storageB:n}}findMismatchedLeafPaths(e,n,r=""){const i=[],l=new Set([...Object.keys(e||{}),...Object.keys(n||{})]);for(const c of l){const d=r?`${r}.${c}`:c,f=e?.[c],h=n?.[c],m=f&&typeof f=="object"&&!Array.isArray(f),y=h&&typeof h=="object"&&!Array.isArray(h);if(m&&y)i.push(...this.findMismatchedLeafPaths(f,h,d));else{const S=f===void 0?"__undefined__":JSON.stringify(f),v=h===void 0?"__undefined__":JSON.stringify(h);S!==v&&i.push(d)}}return i}watchState(e,n){return this.stateWatchers.has(e)||this.stateWatchers.set(e,new Set),this.stateWatchers.get(e).add(n),()=>{this.stateWatchers.get(e)?.delete(n)}}notifyStateWatchers(e){if(this.stateWatchers.get("*")?.forEach(n=>{try{n(e.next,e.prev,"*")}catch(r){console.error("[G7DevTools] State watcher error:",r)}}),e.diff)for(const n of e.diff.changed)this.stateWatchers.get(n.path)?.forEach(r=>{try{r(n.newValue,n.oldValue,n.path)}catch(i){console.error("[G7DevTools] State watcher error:",i)}})}diffSnapshots(e,n){const r=this.stateHistory.find(l=>l.id===e),i=this.stateHistory.find(l=>l.id===n);return!r||!i?null:this.calculateDiff(r.next,i.next)}calculateDiff(e,n,r=""){const i={added:[],removed:[],changed:[]},l=new Set(Object.keys(e)),c=new Set(Object.keys(n));for(const d of c){const f=r?`${r}.${d}`:d;l.has(d)?JSON.stringify(e[d])!==JSON.stringify(n[d])&&i.changed.push({path:f,oldValue:e[d],newValue:n[d]}):i.added.push(f)}for(const d of l){const f=r?`${r}.${d}`:d;c.has(d)||i.removed.push(f)}return i}logAction(e){if(!this.config.enabled)return;const n=this.actionHistory.findIndex(r=>r.id===e.id);n>=0?this.actionHistory[n]={...this.actionHistory[n],...e}:(this.actionHistory.push(e),this.actionHistory.length>this.config.maxHistorySize&&this.actionHistory.shift()),this.isProfiling&&this.profilingData.push({type:"action",action:e.type,timestamp:performance.now(),duration:e.duration}),this.notifyActionWatchers(e)}getActionHistory(){return[...this.actionHistory]}watchActions(e){return this.actionWatchers.add(e),()=>{this.actionWatchers.delete(e)}}notifyActionWatchers(e){this.actionWatchers.forEach(n=>{try{n(e)}catch(r){console.error("[G7DevTools] Action watcher error:",r)}})}getActionMetrics(){const e=this.actionHistory.filter(l=>l.status==="success"),n=this.actionHistory.filter(l=>l.status==="error"),r={};for(const l of this.actionHistory)r[l.type]=(r[l.type]||0)+1;const i=e.reduce((l,c)=>l+(c.duration||0),0);return{totalActions:this.actionHistory.length,successCount:e.length,errorCount:n.length,averageDuration:e.length>0?i/e.length:0,actionsByType:r}}recordCacheHit(){this.config.enabled&&this.cacheStats.hits++}recordCacheMiss(){this.config.enabled&&this.cacheStats.misses++}updateCacheEntries(e){this.config.enabled&&(this.cacheStats.entries=e)}getCacheStats(){const e=this.cacheStats.hits+this.cacheStats.misses;return{...this.cacheStats,hitRate:e>0?this.cacheStats.hits/e:0}}resetCacheStats(){this.cacheStats={hits:0,misses:0,entries:0}}trackCacheDecision(e){if(!this.config.enabled)return;const n={id:`cache-${++this.cacheDecisionIdCounter}`,timestamp:Date.now(),expression:e.expression,decision:e.decision,reason:e.reason,context:{isInIteration:this.isInIteration,isInAction:this.isInActionExecution,renderCycleId:this.currentRenderCycleId||void 0,componentId:e.componentId,skipCacheOption:e.skipCacheOption},cachedValue:e.cachedValue!==void 0?this.safeClone(e.cachedValue):void 0,freshValue:e.freshValue!==void 0?this.safeClone(e.freshValue):void 0,valueMatch:e.cachedValue!==void 0&&e.freshValue!==void 0?JSON.stringify(e.cachedValue)===JSON.stringify(e.freshValue):void 0,duration:e.duration};this.cacheDecisions.push(n),this.cacheDecisions.length>this.maxCacheDecisions&&this.cacheDecisions.shift(),e.decision==="cache_hit"?this.cacheStats.hits++:(e.decision==="cache_miss"||e.decision==="skip_cache")&&this.cacheStats.misses++}startRenderCycle(e){return this.currentRenderCycleId=`render-${Date.now()}-${e||"root"}`,this.currentRenderCycleId}endRenderCycle(){this.currentRenderCycleId=null}startActionContext(){this.isInActionExecution=!0}endActionContext(){this.isInActionExecution=!1}startIterationContext(){this.isInIteration=!0}endIterationContext(){this.isInIteration=!1}getCacheDecisionTrackingInfo(){const e=this.getCacheDecisionStats();return{decisions:[...this.cacheDecisions],stats:e,timestamp:Date.now()}}getCacheDecisionStats(){const e=this.cacheDecisions;let n=0,r=0,i=0,l=0;const c={},d={};for(const h of e)h.decision==="cache_hit"?n++:h.decision==="cache_miss"?r++:h.decision==="skip_cache"?i++:h.decision==="invalidate"&&l++,c[h.reason]=(c[h.reason]||0)+1,h.context.componentId&&(d[h.context.componentId]=(d[h.context.componentId]||0)+1);const f=n+r+i;return{totalDecisions:e.length,cacheHits:n,cacheMisses:r,skipCacheCount:i,invalidateCount:l,byReason:c,byComponent:d,avgHitRate:f>0?n/f:0}}getRecentCacheDecisions(e=20,n){let r=[...this.cacheDecisions];return n&&(r=r.filter(i=>i.decision===n)),r.slice(-e)}clearCacheDecisionData(){this.cacheDecisions=[],this.cacheDecisionIdCounter=0}summarizePropsForLifecycle(e){if(!e||typeof e!="object")return e;const n={},r=["children","ref","key"];for(const[i,l]of Object.entries(e))if(!r.includes(i))if(l==null)n[i]=l;else if(Array.isArray(l))n[i]=`[Array(${l.length})]`;else if(typeof l=="object"){const c=Object.keys(l);c.length<=3?n[i]=`{${c.join(", ")}}`:n[i]=`{${c.slice(0,3).join(", ")}, ... +${c.length-3}}`}else typeof l=="string"&&l.length>50?n[i]=l.substring(0,50)+"...":typeof l=="function"?n[i]="[Function]":n[i]=l;return n}trackMount(e,n){if(!this.config.enabled)return;const r=this.summarizePropsForLifecycle(n.props),i={...n,props:r,id:e,mountTime:Date.now()};this.mountedComponents.set(e,i),this.mountWatchers.forEach(l=>{try{l({componentId:e,componentName:n.name,timestamp:i.mountTime})}catch(c){console.error("[G7DevTools] Mount watcher error:",c)}})}trackUnmount(e){if(!this.config.enabled)return;const n=this.mountedComponents.get(e),r=this.eventListeners.get(e)||[];r.length>0&&console.warn(`[G7DevTools] 컴포넌트 ${e} 언마운트 시 ${r.length}개 리스너 미정리`),n&&this.unmountWatchers.forEach(i=>{try{i({componentId:e,componentName:n.name,timestamp:Date.now(),orphanedListeners:r.length})}catch(l){console.error("[G7DevTools] Unmount watcher error:",l)}}),this.mountedComponents.delete(e)}trackListener(e,n,r){if(!this.config.enabled)return;const i=this.eventListeners.get(e)||[];i.push({type:n,target:r,addedAt:Date.now()}),this.eventListeners.set(e,i)}removeListener(e,n){if(!this.config.enabled)return;const r=this.eventListeners.get(e)||[],i=r.findIndex(l=>l.type===n);i>=0&&r.splice(i,1)}getMountedComponents(){return Array.from(this.mountedComponents.values())}getOrphanedListeners(){const e=[];for(const[n,r]of this.eventListeners)this.mountedComponents.has(n)||e.push(...r.map(i=>({...i,componentId:n})));return e}watchMount(e){return this.mountWatchers.add(e),()=>{this.mountWatchers.delete(e)}}watchUnmount(e){return this.unmountWatchers.add(e),()=>{this.unmountWatchers.delete(e)}}trackRender(e){if(!this.config.enabled)return;const n=this.renderCounts.get(e)||0;this.renderCounts.set(e,n+1),this.isProfiling&&this.profilingData.push({type:"render",component:e,timestamp:performance.now()})}trackBindingEval(e){this.config.enabled&&(this.bindingEvalCount++,this.isProfiling&&e&&this.profilingData.push({type:"binding",expression:e,timestamp:performance.now()}))}getRenderCount(){return new Map(this.renderCounts)}getBindingEvalCount(){return this.bindingEvalCount}getMemoryWarnings(){const e=[];try{const i=this.getState(),l=JSON.stringify(i).length;l>1e6&&e.push({type:"large-state",message:`상태 크기가 ${(l/1024/1024).toFixed(2)}MB입니다`,suggestion:"불필요한 데이터 정리 필요",severity:l>5e6?"error":"warning"})}catch{}this.stateHistory.length>this.config.maxHistorySize*.8&&e.push({type:"large-history",message:`상태 이력이 ${this.stateHistory.length}개입니다`,suggestion:"maxHistory 설정 조정 필요",severity:"warning"});const n=this.getOrphanedListeners().length;n>0&&e.push({type:"orphaned-listeners",message:`${n}개의 정리되지 않은 이벤트 리스너`,suggestion:"useEffect cleanup 또는 removeEventListener 확인",severity:n>10?"error":"warning"});const r=Array.from(this.renderCounts.entries()).filter(([,i])=>i>50);return r.length>0&&e.push({type:"excessive-renders",message:`${r.length}개 컴포넌트가 50회 이상 렌더링`,suggestion:"React.memo, useMemo, useCallback 사용 고려",severity:"warning"}),e}startProfiling(){this.config.enabled&&(this.isProfiling=!0,this.profilingData=[],this.profilingStartTime=performance.now(),console.log("[G7DevTools] 프로파일링 시작"))}stopProfiling(){this.isProfiling=!1;const e=performance.now()-this.profilingStartTime,n=this.analyzeProfile(e);return console.log("[G7DevTools] 프로파일링 완료",n),n}analyzeProfile(e){const n=this.profilingData.filter(h=>h.type==="render"),r=this.profilingData.filter(h=>h.type==="binding"),i=this.profilingData.filter(h=>h.type==="action"),l={};for(const h of n)h.component&&(l[h.component]||(l[h.component]={count:0,durations:[]}),l[h.component].count++,h.duration&&l[h.component].durations.push(h.duration));const c=Object.entries(l).map(([h,m])=>({name:h,renderCount:m.count,avgDuration:m.durations.length>0?m.durations.reduce((y,S)=>y+S,0)/m.durations.length:0})).sort((h,m)=>m.renderCount-h.renderCount).slice(0,10),d={};for(const h of r)h.expression&&(d[h.expression]=(d[h.expression]||0)+1);const f=Object.entries(d).sort(([,h],[,m])=>m-h).slice(0,10).map(([h])=>h);return{duration:e,entries:this.profilingData,summary:{totalRenders:n.length,totalBindings:r.length,totalActions:i.length,slowestComponents:c,hotPaths:f}}}resetPerformanceStats(){this.renderCounts.clear(),this.bindingEvalCount=0,this.profilingData=[]}trackRequest(e,n,r){if(!this.config.enabled)return"";const i=this.generateId(),l=MA(e),c=$A(e);return this.activeRequests.set(i,{id:i,url:l,fullUrl:e,queryParams:c,method:n,startTime:Date.now(),status:"pending",requestBody:r?.requestBody?this.sanitizeObject(r.requestBody):void 0,dataSourceId:r?.dataSourceId}),this.isProfiling&&this.profilingData.push({type:"network",timestamp:performance.now()}),i}completeRequest(e,n,r){if(!this.config.enabled)return;const i=this.activeRequests.get(e);if(!i)return;const l={...i,status:n>=200&&n<300?"success":"error",statusCode:n,duration:Date.now()-i.startTime,endTime:Date.now(),response:this.sanitizeObject(r)};this.requestHistory.push(l),this.activeRequests.delete(e),this.requestHistory.length>this.config.maxHistorySize&&this.requestHistory.shift(),this.notifyRequestWatchers(l)}failRequest(e,n){if(!this.config.enabled)return;const r=this.activeRequests.get(e);if(!r)return;const i={...r,status:"error",error:n,duration:Date.now()-r.startTime,endTime:Date.now()};this.requestHistory.push(i),this.activeRequests.delete(e),this.notifyRequestWatchers(i)}trackDataSource(e){this.config.enabled&&this.pendingDataSources.add(e)}completeDataSource(e){this.config.enabled&&this.pendingDataSources.delete(e)}getActiveRequests(){return Array.from(this.activeRequests.values())}getRequestHistory(){return[...this.requestHistory]}getPendingDataSources(){return Array.from(this.pendingDataSources)}watchRequest(e){return this.requestWatchers.add(e),()=>{this.requestWatchers.delete(e)}}notifyRequestWatchers(e){this.requestWatchers.forEach(n=>{try{n(e)}catch(r){console.error("[G7DevTools] Request watcher error:",r)}})}trackWebSocketConnection(e,n,r){this.config.enabled&&this.wsConnections.set(e,{id:e,url:n,state:r,connectedAt:r==="open"?Date.now():void 0})}trackWebSocketMessage(e,n,r,i){if(!this.config.enabled)return;const l={id:this.generateId(),connectionId:e,direction:n,type:r,payload:this.sanitizeObject(i),timestamp:Date.now(),sequence:this.wsMessageHistory.length};this.wsMessageHistory.push(l),this.wsMessageHistory.length>this.config.maxHistorySize&&this.wsMessageHistory.shift(),this.notifyWebSocketWatchers(l)}getWebSocketConnections(){return Array.from(this.wsConnections.values())}getWebSocketMessageHistory(){return[...this.wsMessageHistory]}getWebSocketConnectionState(){const e=Array.from(this.wsConnections.values());return e.some(n=>n.state==="open")?"connected":e.some(n=>n.state==="connecting")?"reconnecting":"disconnected"}watchWebSocketMessage(e){return this.wsMessageWatchers.add(e),()=>{this.wsMessageWatchers.delete(e)}}notifyWebSocketWatchers(e){this.wsMessageWatchers.forEach(n=>{try{n(e)}catch(r){console.error("[G7DevTools] WebSocket watcher error:",r)}})}trackIfCondition(e,n,r){if(!this.config.enabled)return;const i=this.ifConditions.get(e),l=i?.evaluatedValue;this.ifConditions.set(e,{id:e,expression:n,evaluatedValue:r,evaluationCount:(i?.evaluationCount||0)+1,lastEvaluated:Date.now()}),i&&l!==r&&this.notifyConditionWatchers({id:e,expression:n,oldValue:l,newValue:r,timestamp:Date.now()})}trackIteration(e,n){this.config.enabled&&this.iterations.set(e,{id:e,...n,lastRendered:Date.now()})}getIfConditions(){return Array.from(this.ifConditions.values())}getIterations(){return Array.from(this.iterations.values())}getScopeChain(e){const n=[],r=this.getState();return n.push({name:"_global",value:r._global,source:"global"}),n.push({name:"_local",value:r._local,source:"local"}),n.push({name:"_computed",value:r._computed,source:"computed"}),n}watchConditionChange(e){return this.conditionWatchers.add(e),()=>{this.conditionWatchers.delete(e)}}notifyConditionWatchers(e){this.conditionWatchers.forEach(n=>{try{n(e)}catch(r){console.error("[G7DevTools] Condition watcher error:",r)}})}trackForm(e,n,r){this.config.enabled&&this.forms.set(e,{id:e,dataKey:n,inputs:r,trackedAt:Date.now()})}trackFormChange(e,n,r){if(!this.config.enabled)return;const i={formId:e,inputName:n,value:r,timestamp:Date.now()};this.notifyFormWatchers(i)}untrackForm(e){this.forms.delete(e)}getForms(){return Array.from(this.forms.values())}getFormState(e){const n=this.getState();return this.getNestedValue(n,e)||{}}getBindingPath(e,n){return`${e}.${n}`}watchFormChange(e){return this.formWatchers.add(e),()=>{this.formWatchers.delete(e)}}notifyFormWatchers(e){this.formWatchers.forEach(n=>{try{n(e)}catch(r){console.error("[G7DevTools] Form watcher error:",r)}})}trackFormBindingIssue(e,n,r){if(!this.config.enabled)return;const i={id:`form-issue-${++this.formBindingIssueIdCounter}`,timestamp:Date.now(),type:e,severity:n,formId:r.formId,formDataKey:r.formDataKey,inputInfo:r.inputInfo,contextInfo:r.contextInfo,description:r.description,suggestion:r.suggestion,docLink:r.docLink};this.formBindingIssues.push(i),this.formBindingIssues.length>this.maxFormBindingIssues&&this.formBindingIssues.shift()}validateFormBinding(e,n,r,i){const l=r.map(f=>{const h=[];let m=!0;return f.name||(h.push("Input에 name 속성이 없습니다"),m=!1,this.trackFormBindingIssue("missing-input-name","error",{formId:e,formDataKey:n,inputInfo:{name:f.name,type:f.type},description:"Input에 name 속성이 없어 자동 바인딩이 동작하지 않습니다",suggestion:"Input에 name 속성을 추가하세요",docLink:"troubleshooting-components-form.md"})),n||(h.push("Form에 dataKey가 없습니다"),m=!1),{inputName:f.name||"(unnamed)",inputType:f.type,bindingPath:n&&f.name?`${n}.${f.name}`:"-",isValid:m,currentValue:f.value,issues:h}});if(n||this.trackFormBindingIssue("missing-datakey","error",{formId:e,description:"Form에 dataKey가 설정되지 않아 자동 바인딩이 동작하지 않습니다",suggestion:"Form 컴포넌트에 dataKey props를 설정하세요",docLink:"troubleshooting-components-form.md"}),i.isContextBroken){const f=i.breakReason?.includes("sortable")?"sortable-context-break":i.breakReason?.includes("modal")?"modal-context-isolation":"context-not-propagated";this.trackFormBindingIssue(f,"warning",{formId:e,formDataKey:n,contextInfo:{hasParentFormContext:i.hasParentContext,parentFormContextProp:i.parentContextProp,isInsideSortable:i.breakReason?.includes("sortable")||!1,isInsideModal:i.breakReason?.includes("modal")||!1,depth:0},description:i.breakReason||"Form 컨텍스트가 제대로 전파되지 않았습니다",suggestion:"parentFormContextProp={undefined}를 확인하거나 중첩 구조를 검토하세요",docLink:"troubleshooting-components-form.md"})}const c={formId:e,dataKey:n,timestamp:Date.now(),contextPropagation:i,inputBindings:l,isValid:l.every(f=>f.isValid)&&!!n&&!i.isContextBroken,issueCount:l.filter(f=>!f.isValid).length+(n?0:1)+(i.isContextBroken?1:0)},d=this.formBindingValidations.findIndex(f=>f.formId===e);return d>=0?this.formBindingValidations[d]=c:this.formBindingValidations.push(c),c}getFormBindingValidationTrackingInfo(){const e=this.getFormBindingValidationStats();return{issues:[...this.formBindingIssues],validations:[...this.formBindingValidations],stats:e,timestamp:Date.now()}}getFormBindingValidationStats(){const e={"missing-datakey":0,"missing-input-name":0,"context-not-propagated":0,"sortable-context-break":0,"modal-context-isolation":0,"duplicate-input-name":0,"value-type-mismatch":0,"binding-path-invalid":0},n={info:0,warning:0,error:0};for(const i of this.formBindingIssues)e[i.type]++,n[i.severity]++;const r=Object.entries(e).filter(([,i])=>i>0).sort((i,l)=>l[1]-i[1]).slice(0,5).map(([i,l])=>({type:i,count:l,description:this.getIssueTypeDescription(i)}));return{totalFormsValidated:this.formBindingValidations.length,validForms:this.formBindingValidations.filter(i=>i.isValid).length,formsWithIssues:this.formBindingValidations.filter(i=>!i.isValid).length,totalIssues:this.formBindingIssues.length,byIssueType:e,bySeverity:n,topIssues:r}}getIssueTypeDescription(e){return{"missing-datakey":"Form에 dataKey 누락","missing-input-name":"Input에 name 속성 누락","context-not-propagated":"Form 컨텍스트 전파 실패","sortable-context-break":"Sortable 컨테이너에서 컨텍스트 단절","modal-context-isolation":"모달에서 부모 Form 컨텍스트 격리","duplicate-input-name":"동일 Form 내 중복 Input name","value-type-mismatch":"값 타입과 Input 타입 불일치","binding-path-invalid":"바인딩 경로 유효하지 않음"}[e]||e}clearFormBindingIssues(){this.formBindingIssues=[],this.formBindingValidations=[],this.formBindingIssueIdCounter=0}trackComputedProperty(e,n,r,i,l,c,d){if(!this.config.enabled)return;const f=`computed-${e}-${c||"global"}`,h={id:f,name:e,expression:n,componentId:c,dependencies:r,currentValue:this.safeClone(i),lastComputedAt:Date.now(),computationTime:l,error:d};this.computedProperties.set(f,h)}trackComputedRecalc(e,n,r,i,l,c,d){if(!this.config.enabled)return;const f=`computed-${e}-${d||"global"}`,h=JSON.stringify(r)!==JSON.stringify(i),m={id:`recalc-${++this.computedRecalcIdCounter}`,computedId:f,computedName:e,timestamp:Date.now(),trigger:n,triggeredBy:c,previousValue:this.safeClone(r),newValue:this.safeClone(i),valueChanged:h,computationTime:l,cascadeCount:0};this.computedRecalcLogs.push(m),this.computedRecalcLogs.length>this.maxComputedRecalcLogs&&this.computedRecalcLogs.shift();const y=this.computedProperties.get(f);y&&(y.currentValue=this.safeClone(i),y.lastComputedAt=Date.now(),y.computationTime=l)}analyzeComputedDependencyChain(e,n){const r=new Set,i=[];let l=!1,c,d=0;const f=(m,y)=>{if(d=Math.max(d,y),r.has(m))return l=!0,c=[...i,m],{name:m,type:"computed",children:[],depth:y};r.add(m),i.push(m);const S=this.computedProperties.get(`computed-${m}-${n||"global"}`),v=[];if(S)for(const _ of S.dependencies)_.type==="computed"?v.push(f(_.path,y+1)):v.push({name:_.path,type:_.type,children:[],depth:y+1});return i.pop(),r.delete(m),{name:m,type:"computed",children:v,depth:y}},h=f(e,0);return{root:e,tree:h,hasCycle:l,cyclePath:c,maxDepth:d}}getComputedDependencyTrackingInfo(){const e=Array.from(this.computedProperties.values()),n=this.getComputedDependencyStats(),r=[];for(const i of e){const l=this.analyzeComputedDependencyChain(i.name,i.componentId);r.push(l)}return{properties:e,recalcLogs:[...this.computedRecalcLogs],dependencyChains:r,stats:n,timestamp:Date.now()}}getComputedDependencyStats(){const e={"state-change":0,"datasource-update":0,"dependency-change":0,manual:0,initial:0},n={},r={};let i=0,l=0;for(const h of this.computedRecalcLogs)e[h.trigger]++,h.valueChanged||l++,n[h.computedName]=(n[h.computedName]||0)+1,r[h.computedName]||(r[h.computedName]=[]),r[h.computedName].push(h.computationTime),i+=h.computationTime;const c=Object.entries(n).sort((h,m)=>m[1]-h[1]).slice(0,5).map(([h,m])=>({name:h,count:m})),d=Object.entries(r).map(([h,m])=>({name:h,avgTime:m.reduce((y,S)=>y+S,0)/m.length})).sort((h,m)=>m.avgTime-h.avgTime).slice(0,5);let f=0;for(const h of this.computedProperties.values())this.analyzeComputedDependencyChain(h.name,h.componentId).hasCycle&&f++;return{totalComputed:this.computedProperties.size,totalRecalculations:this.computedRecalcLogs.length,unnecessaryRecalculations:l,avgComputationTime:this.computedRecalcLogs.length>0?i/this.computedRecalcLogs.length:0,topRecalculated:c,slowestComputed:d,cycleDetectionCount:f,byTrigger:e}}clearComputedTracking(){this.computedProperties.clear(),this.computedRecalcLogs=[],this.computedRecalcIdCounter=0}trackModalOpen(e){if(!this.config.enabled)return;const n={modalId:e.modalId,modalName:e.modalName,openedAt:Date.now(),closedAt:null,scopeType:e.scopeType||"isolated",parentModalId:e.parentModalId,componentId:e.componentId,initialState:e.initialState?{...e.initialState}:{},currentState:e.initialState?{...e.initialState}:{},stateChangeCount:0,isolatedStateKeys:e.isolatedStateKeys||[],sharedStateKeys:e.sharedStateKeys||[]};this.modalStates.set(e.modalId,n),this.validateModalDefinitionExists(e.modalId,e.modalName),e.parentModalId&&(this.modalStateRelations.find(i=>i.parentModalId===e.parentModalId&&i.childModalId===e.modalId)||this.modalStateRelations.push({parentModalId:e.parentModalId,childModalId:e.modalId,sharedKeys:e.sharedStateKeys||[],isolatedKeys:e.isolatedStateKeys||[],relationType:"parent-child"}))}trackModalClose(e,n){if(!this.config.enabled)return;const r=this.modalStates.get(e);r&&(r.closedAt=Date.now(),n&&(r.currentState={...n}),this.detectStateLeakage(r))}validateModalDefinitionExists(e,n){const r=this.currentLayout;if(!r?.layoutJson)return;const i=r.layoutJson.modals;if(!i){this.recordModalStateIssue({type:"missing-definition",modalId:e,modalName:n,severity:"error",description:`모달 "${e}"이(가) modalStack에 추가되었으나, 현재 레이아웃에 modals 섹션이 없습니다. 레이아웃 경로: ${r.layoutPath}`,affectedStateKeys:[],expectedValue:`modals 섹션에 id="${e}" 정의 존재`,actualValue:"modals 섹션 없음"});return}const l=Array.isArray(i)?i:Object.values(i);l.some(d=>d?.id===e||d?.props?.id===e)||this.recordModalStateIssue({type:"missing-definition",modalId:e,modalName:n,severity:"error",description:`모달 "${e}"이(가) modalStack에 추가되었으나, 렌더링된 레이아웃의 modals 섹션에 해당 ID의 정의가 없습니다. partial 로딩 실패, 레이아웃 병합 문제, extends 상속 누락 등을 확인하세요. 레이아웃 경로: ${r.layoutPath}`,affectedStateKeys:[],expectedValue:`modals 배열에 id="${e}" 항목 존재`,actualValue:`modals 배열에 ${l.length}개 모달 정의 (${l.map(d=>d?.id||"unknown").join(", ")})`})}trackModalStateChange(e){if(!this.config.enabled)return;const n=this.modalStates.get(e.modalId);if(!n)return;n.stateChangeCount++,n.currentState[e.stateKey]=e.newValue;const r=this.checkIsolationViolation(n,e.stateKey),i={id:`modal-change-${++this.modalStateChangeLogIdCounter}`,modalId:e.modalId,modalName:n.modalName,timestamp:Date.now(),stateKey:e.stateKey,previousValue:e.previousValue,newValue:e.newValue,changeSource:e.changeSource||"user-action",violatesIsolation:r};this.modalStateChangeLogs.push(i),this.modalStateChangeLogs.length>this.maxModalStateChangeLogs&&this.modalStateChangeLogs.shift(),r&&this.recordModalStateIssue({type:"isolation-violation",modalId:e.modalId,modalName:n.modalName,severity:"warning",description:`모달 '${n.modalName}'에서 격리된 상태 키 '${e.stateKey}'가 변경됨`,affectedStateKeys:[e.stateKey]})}detectStateLeakage(e){if(e.scopeType==="isolated")for(const n of e.isolatedStateKeys){const r=e.initialState[n],i=e.currentState[n];if(r!==i&&e.parentModalId){const l=this.modalStates.get(e.parentModalId);l&&l.currentState.hasOwnProperty(n)&&this.recordModalStateIssue({type:"state-leakage",modalId:e.modalId,modalName:e.modalName,severity:"error",description:`모달 닫힘 후 상태 '${n}'가 부모 모달로 유출될 수 있음`,affectedStateKeys:[n],leakedValue:i,expectedValue:r})}}}checkIsolationViolation(e,n){return e.scopeType==="isolated",!1}recordModalStateIssue(e){const n={id:`modal-issue-${++this.modalStateIssueIdCounter}`,type:e.type,modalId:e.modalId,modalName:e.modalName,timestamp:Date.now(),severity:e.severity,description:e.description,affectedStateKeys:e.affectedStateKeys,leakedValue:e.leakedValue,expectedValue:e.expectedValue,actualValue:e.actualValue,stackInfo:e.stackInfo};this.modalStateIssues.push(n),this.modalStateIssues.length>this.maxModalStateIssues&&this.modalStateIssues.shift()}getModalStateScopeTrackingInfo(){const e=Array.from(this.modalStates.values()),n=this.getModalStateScopeStats();return{modals:e,issues:[...this.modalStateIssues],relations:[...this.modalStateRelations],changeLogs:[...this.modalStateChangeLogs],stats:n,timestamp:Date.now()}}getModalStateScopeStats(){const e=Array.from(this.modalStates.values()),n={warning:0,error:0},r={"state-leakage":0,"isolation-violation":0,"parent-mutation":0,"orphaned-state":0,"scope-mismatch":0,"cleanup-failure":0,"missing-definition":0};for(const l of this.modalStateIssues)n[l.severity]++,r[l.type]++;const i={isolated:0,shared:0,inherited:0};for(const l of e)i[l.scopeType]++;return{totalModals:e.length,openModals:e.filter(l=>l.closedAt===null).length,nestedModals:e.filter(l=>l.parentModalId!==void 0).length,totalIssues:this.modalStateIssues.length,issuesBySeverity:n,issuesByType:r,byScope:i,leakageDetectionCount:r["state-leakage"],cleanupFailureCount:r["cleanup-failure"]}}clearModalStateScopeTracking(){this.modalStates.clear(),this.modalStateIssues=[],this.modalStateRelations=[],this.modalStateChangeLogs=[],this.modalStateIssueIdCounter=0,this.modalStateChangeLogIdCounter=0}setNamedActionDefinitions(e){this.config.enabled&&(this.namedActionDefinitions=e||{})}trackNamedActionRef(e){if(!this.config.enabled)return;const n={...e,id:`named_action_ref_${++this.namedActionRefIdCounter}`};this.namedActionRefLogs.push(n),this.namedActionRefLogs.length>this.maxNamedActionRefLogs&&(this.namedActionRefLogs=this.namedActionRefLogs.slice(-this.maxNamedActionRefLogs))}getNamedActionTrackingInfo(){const e={};for(const r of this.namedActionRefLogs)e[r.actionRefName]=(e[r.actionRefName]||0)+1;const n=Object.keys(this.namedActionDefinitions).filter(r=>!e[r]);return{definitions:this.namedActionDefinitions,refLogs:[...this.namedActionRefLogs],stats:{totalDefinitions:Object.keys(this.namedActionDefinitions).length,totalRefs:this.namedActionRefLogs.length,refCountByName:e,unusedDefinitions:n},timestamp:Date.now()}}clearNamedActionTracking(){this.namedActionDefinitions={},this.namedActionRefLogs=[],this.namedActionRefIdCounter=0}trackExpressionEval(e){if(!this.config.enabled)return;const n={...e,id:`expr-${++this.expressionIdCounter}`,timestamp:Date.now(),warning:this.detectExpressionWarning(e)};this.expressionHistory.push(n),this.expressionHistory.length>500&&this.expressionHistory.shift(),this.isProfiling&&this.profilingData.push({type:"binding",expression:e.expression,timestamp:performance.now(),duration:e.duration}),this.notifyExpressionWatchers(n)}detectExpressionWarning(e){const{expression:n,result:r,resultType:i,method:l,duration:c}=e;if(i==="undefined"&&!n.includes("??")&&!n.includes("||")&&/^[a-zA-Z_$][a-zA-Z0-9_$.]*$/.test(n.replace(/{{|}}/g,"").trim()))return{type:"undefined-result",message:"표현식 결과가 undefined입니다",suggestion:`데이터가 로드되었는지 확인하거나 fallback 값을 추가하세요: ${n} ?? ''`};if(i==="null")return{type:"null-result",message:"표현식 결과가 null입니다",suggestion:`nullish coalescing 연산자를 사용하세요: ${n} ?? ''`};if(l==="resolveBindings"&&i==="string"){const d=String(r);if(d.includes("[object Object]")||/^\[.*\]$/.test(d))return{type:"array-to-string",message:"배열/객체가 문자열로 변환되었습니다",suggestion:"evaluateExpression()을 사용하여 원본 타입을 유지하세요"}}if(l==="resolveBindings"&&i==="string"&&String(r).includes("[object Object]"))return{type:"object-to-string",message:"객체가 [object Object]로 변환되었습니다",suggestion:"evaluateExpression()을 사용하거나 특정 속성에 접근하세요"};if(i==="undefined"&&n.includes(".")&&!n.includes("?.")){const d=n.replace(/{{|}}/g,"").trim().split(".");if(d.length>=2)return{type:"missing-optional-chain",message:"Optional chaining(?.) 누락 가능성",suggestion:`안전한 접근을 위해 ?. 사용을 고려하세요: ${d.join("?.")}`}}if((n.includes("{{item.")||n.includes("{{index}}"))&&Array.from(this.iterations.values()).some(h=>h.itemVar!=="item"))return{type:"wrong-iteration-var",message:"'item'/'index' 대신 iteration에서 정의한 변수명을 사용해야 합니다",suggestion:"iteration의 item_var/index_var에 정의된 변수명을 확인하세요"};if(c&&c>10)return{type:"slow-evaluation",message:`표현식 평가에 ${c.toFixed(2)}ms 소요됨`,suggestion:"복잡한 표현식을 단순화하거나 computed 값으로 분리하세요"}}getExpressions(){return[...this.expressionHistory]}getExpressionWarnings(){return this.expressionHistory.filter(e=>e.warning!=null)}searchExpressions(e){const n=e.toLowerCase();return this.expressionHistory.filter(r=>r.expression.toLowerCase().includes(n)||r.componentName?.toLowerCase().includes(n)||r.propName?.toLowerCase().includes(n))}getExpressionStats(){const e=this.expressionHistory,n=new Set(e.map(f=>f.expression)),r=e.filter(f=>f.warning!=null),i=e.filter(f=>f.fromCache),l=e.filter(f=>f.duration!=null).map(f=>f.duration),c={};for(const f of e)c[f.resultType]=(c[f.resultType]||0)+1;const d={};for(const f of r)f.warning&&(d[f.warning.type]=(d[f.warning.type]||0)+1);return{totalEvaluations:e.length,uniqueExpressions:n.size,warningCount:r.length,cacheHitRate:e.length>0?i.length/e.length:0,averageDuration:l.length>0?l.reduce((f,h)=>f+h,0)/l.length:0,byType:c,byWarning:d}}clearExpressions(){this.expressionHistory=[],this.expressionIdCounter=0}watchExpressions(e){return this.expressionWatchers.add(e),()=>{this.expressionWatchers.delete(e)}}notifyExpressionWatchers(e){this.expressionWatchers.forEach(n=>{try{n(e)}catch(r){console.error("[G7DevTools] Expression watcher error:",r)}})}setLogLevel(e){this.config.logLevel=e}setMaxHistory(e){this.config.maxHistorySize=Math.max(10,Math.min(1e3,e))}setServerEndpoint(e){this.config.serverEndpoint=e}getConfig(){return{...this.config}}generateId(){return`${Date.now()}-${Math.random().toString(36).substr(2,9)}`}sanitizeObject(e,n=new WeakSet){if(e===null||typeof e!="object")return e;if(n.has(e))return"[Circular]";if(n.add(e),Array.isArray(e))return e.map(i=>this.sanitizeObject(i,n));const r={};for(const i of Object.keys(e))try{r[i]=this.sanitizeObject(e[i],n)}catch{r[i]="[Unable to serialize]"}return r}getNestedValue(e,n){if(!n)return e;const r=n.split(".");let i=e;for(const l of r){if(i==null)return;i=i[l]}return i}getLifecycleInfo(){return{mountedComponents:Array.from(this.mountedComponents.values()),orphanedListeners:this.getOrphanedListeners()}}getPerformanceInfo(){return{renderCounts:this.renderCounts,bindingEvalCount:this.bindingEvalCount,memoryWarnings:this.getMemoryWarnings()}}getNetworkInfo(){return{activeRequests:Array.from(this.activeRequests.values()),requestHistory:[...this.requestHistory],pendingDataSources:Array.from(this.pendingDataSources)}}getConditionalInfo(){return{ifConditions:Array.from(this.ifConditions.values()),iterations:Array.from(this.iterations.values())}}getFormInfo(){return Array.from(this.forms.values())}getWebSocketInfo(){return{connections:Array.from(this.wsConnections.values()),messageHistory:[...this.wsMessageHistory],connectionState:this.getWebSocketConnectionState()}}getStateAtTime(e){const n=[...this.stateHistory].reverse().find(r=>r.timestamp<=e);if(n)return{_global:n.next,_local:{}}}reset(){this.stateHistory=[],this.actionHistory=[],this.cacheStats={hits:0,misses:0,entries:0},this.cacheDecisions=[],this.cacheDecisionIdCounter=0,this.currentRenderCycleId=null,this.isInActionExecution=!1,this.isInIteration=!1,this.mountedComponents.clear(),this.eventListeners.clear(),this.renderCounts.clear(),this.bindingEvalCount=0,this.profilingData=[],this.activeRequests.clear(),this.requestHistory=[],this.pendingDataSources.clear(),this.wsConnections.clear(),this.wsMessageHistory=[],this.ifConditions.clear(),this.iterations.clear(),this.forms.clear(),this.expressionHistory=[],this.expressionIdCounter=0,this.dataSources.clear(),this.dataPathTransforms=[],this.nestedContexts=[],this.nestedContextIdCounter=0,this.formBindingIssues=[],this.formBindingValidations=[],this.formBindingIssueIdCounter=0,this.computedProperties.clear(),this.computedRecalcLogs=[],this.computedRecalcIdCounter=0,this.modalStates.clear(),this.modalStateIssues=[],this.modalStateRelations=[],this.modalStateChangeLogs=[],this.modalStateIssueIdCounter=0,this.modalStateChangeLogIdCounter=0,this.logHistory=[],this.logIdCounter=0}getExpressionInfo(){return{expressions:this.getExpressions(),stats:this.getExpressionStats()}}trackLog(e,n,r){if(!this.config.enabled)return;const i=r.map(c=>{if(typeof c=="string")return c;try{return JSON.stringify(c)}catch{return String(c)}}).join(" "),l={id:`log-${++this.logIdCounter}`,level:e,prefix:n,message:i,args:this.sanitizeObject(r),timestamp:Date.now(),stack:e==="error"?new Error().stack:void 0};this.logHistory.push(l),this.logHistory.length>this.maxLogHistory&&this.logHistory.shift()}trackAction(e){if(!this.config.enabled)return;const n={id:`debounce-action-${++this.debounceActionIdCounter}`,...e,timestamp:Date.now()};this.debounceActionHistory.push(n),this.debounceActionHistory.length>100&&this.debounceActionHistory.shift()}trackDataSourceUpdate(e){if(!this.config.enabled)return;const n={id:`ds-update-${++this.dataSourceUpdateIdCounter}`,...e};this.dataSourceUpdateHistory.push(n),this.dataSourceUpdateHistory.length>100&&this.dataSourceUpdateHistory.shift()}getDebounceActionHistory(e){let n=[...this.debounceActionHistory];return e?.handler&&(n=n.filter(r=>r.handler.includes(e.handler))),e?.status&&(n=n.filter(r=>r.status===e.status)),e?.limit&&(n=n.slice(-e.limit)),n}getDataSourceUpdateHistory(e){let n=[...this.dataSourceUpdateHistory];return e?.dataSourceId&&(n=n.filter(r=>r.dataSourceId===e.dataSourceId)),e?.updateType&&(n=n.filter(r=>r.updateType===e.updateType)),e?.limit&&(n=n.slice(-e.limit)),n}getLogs(e){let n=[...this.logHistory];if(e?.level){const r=Array.isArray(e.level)?e.level:[e.level];n=n.filter(i=>r.includes(i.level))}if(e?.prefix){const r=e.prefix.toLowerCase();n=n.filter(i=>i.prefix.toLowerCase().includes(r))}if(e?.search){const r=e.search.toLowerCase();n=n.filter(i=>i.message.toLowerCase().includes(r))}return e?.since&&(n=n.filter(r=>r.timestamp>=e.since)),e?.limit&&(n=n.slice(-e.limit)),n}getLogStats(){const n=Date.now()-6e4,r={log:0,warn:0,error:0,debug:0,info:0},i={};let l=0,c=0;for(const d of this.logHistory)r[d.level]++,i[d.prefix]=(i[d.prefix]||0)+1,d.timestamp>=n&&(d.level==="error"&&l++,d.level==="warn"&&c++);return{totalLogs:this.logHistory.length,byLevel:r,byPrefix:i,recentErrors:l,recentWarnings:c}}clearLogs(){this.logHistory=[],this.logIdCounter=0}getLogInfo(){return{entries:this.getLogs(),stats:this.getLogStats()}}trackDataSourceDefinition(e){this.config.enabled&&this.dataSources.set(e.id,{...e,status:"idle"})}trackDataSourceLoading(e){if(!this.config.enabled)return;const n=this.dataSources.get(e);n&&this.dataSources.set(e,{...n,status:"loading"})}trackDataSourceLoaded(e,n,r){if(!this.config.enabled)return;const i=this.dataSources.get(e);if(!i)return;let l,c,d=r;n&&(Array.isArray(n)?(l=n.length,c=n.length>0&&typeof n[0]=="object"?Object.keys(n[0]):void 0):typeof n=="object"&&(Array.isArray(n.data)?(d=d||"data",l=n.data.length,c=n.data.length>0&&typeof n.data[0]=="object"?Object.keys(n.data[0]):void 0):Array.isArray(n.items)?(d=d||"items",l=n.items.length,c=n.items.length>0&&typeof n.items[0]=="object"?Object.keys(n.items[0]):void 0):c=Object.keys(n))),this.dataSources.set(e,{...i,status:"loaded",dataPath:d,itemCount:l,keys:c,lastLoadedAt:Date.now(),error:void 0})}trackDataSourceError(e,n){if(!this.config.enabled)return;const r=this.dataSources.get(e);r&&this.dataSources.set(e,{...r,status:"error",error:n,lastLoadedAt:Date.now()})}untrackDataSource(e){this.dataSources.delete(e)}getDataSources(){return Array.from(this.dataSources.values())}getDataSource(e){return this.dataSources.get(e)}clearDataSources(){this.dataSources.clear()}trackDataPathTransform(e){if(!this.config.enabled)return;let n=this.dataPathTransforms.find(r=>r.dataSourceId===e.dataSourceId);n||(n={dataSourceId:e.dataSourceId,timestamp:Date.now(),transformSteps:[],warnings:[]},this.dataPathTransforms.push(n),this.dataPathTransforms.length>this.maxDataPathTransforms&&this.dataPathTransforms.shift()),n.transformSteps.push({step:e.step,inputPath:e.inputPath,inputValue:this.safeClone(e.inputValue),outputPath:e.outputPath,outputValue:this.safeClone(e.outputValue),config:e.config}),e.warning&&n.warnings.push(e.warning)}setDataPathFinalBinding(e,n){if(!this.config.enabled)return;const r=this.dataPathTransforms.find(i=>i.dataSourceId===e);r&&(r.finalBinding={expression:n.expression,resolvedPath:n.resolvedPath,value:this.safeClone(n.value)})}getDataPathTransformTrackingInfo(){const e=this.getDataPathTransformStats();return{transforms:[...this.dataPathTransforms],stats:e,timestamp:Date.now()}}getDataPathTransformStats(){const e=this.dataPathTransforms,n={};let r=0;const i={};for(const c of e){n[c.dataSourceId]=(n[c.dataSourceId]||0)+1,r+=c.warnings.length;for(const d of c.warnings)i[d]=(i[d]||0)+1}const l=Object.entries(i).map(([c,d])=>({warning:c,count:d})).sort((c,d)=>d.count-c.count).slice(0,10);return{totalTransforms:e.length,byDataSource:n,warningsCount:r,commonWarnings:l}}getDataPathTransformForDataSource(e){return this.dataPathTransforms.find(n=>n.dataSourceId===e)}clearDataPathTransforms(){this.dataPathTransforms=[]}trackNestedContext(e){if(!this.config.enabled)return"";const n=`nested-${++this.nestedContextIdCounter}`,r=[...new Set([...e.parentContext.available,...e.ownContext.added])],i={...e.parentContext.values,...e.ownContext.values},l={id:n,timestamp:Date.now(),componentId:e.componentId,componentType:e.componentType,parentContext:{available:e.parentContext.available,values:this.safeClone(e.parentContext.values)},ownContext:{added:e.ownContext.added,values:this.safeClone(e.ownContext.values)},mergedContext:{all:r,values:this.safeClone(i)},accessAttempts:[],depth:e.depth,parentId:e.parentId};return this.nestedContexts.push(l),this.nestedContexts.length>this.maxNestedContexts&&this.nestedContexts.shift(),n}trackNestedContextAccess(e,n){if(!this.config.enabled)return;const r=this.nestedContexts.find(i=>i.id===e);r&&r.accessAttempts.push({path:n.path,found:n.found,value:n.found?this.safeClone(n.value):void 0,error:n.error})}getNestedContextTrackingInfo(){const e=this.getNestedContextStats();return{contexts:[...this.nestedContexts],stats:e,timestamp:Date.now()}}getNestedContextStats(){const e=this.nestedContexts,n={expandChildren:0,cellChildren:0,iteration:0,modal:0,slot:0};let r=0,i=0;const l={};for(const d of e){n[d.componentType]++,d.depth>r&&(r=d.depth);for(const f of d.accessAttempts)f.found||(i++,l[f.path]=(l[f.path]||0)+1)}const c=Object.entries(l).map(([d,f])=>({path:d,count:f})).sort((d,f)=>f.count-d.count).slice(0,10);return{totalContexts:e.length,byType:n,maxDepth:r,failedAccessCount:i,commonFailedPaths:c}}getNestedContextForComponent(e){return this.nestedContexts.find(n=>n.componentId===e)}clearNestedContexts(){this.nestedContexts=[],this.nestedContextIdCounter=0}trackHandlerRegistration(e,n="custom",r,i){this.isEnabled&&this.handlers.set(e,{name:e,category:n,description:r,registeredAt:Date.now(),source:i})}trackHandlerUnregistration(e){this.isEnabled&&this.handlers.delete(e)}getHandlers(){return Array.from(this.handlers.values())}getHandler(e){return this.handlers.get(e)}getHandlersByCategory(e){return Array.from(this.handlers.values()).filter(n=>n.category===e)}clearHandlers(){this.handlers.clear()}trackEventSubscribe(e){if(!this.isEnabled)return;const n=this.componentEventSubscriptions.get(e),r=Date.now();n?(n.subscriberCount++,n.lastSubscribedAt=r):this.componentEventSubscriptions.set(e,{eventName:e,subscriberCount:1,firstSubscribedAt:r,lastSubscribedAt:r})}trackEventUnsubscribe(e){if(!this.isEnabled)return;const n=this.componentEventSubscriptions.get(e);n&&(n.subscriberCount--,n.subscriberCount<=0&&this.componentEventSubscriptions.delete(e))}trackEventEmit(e,n,r,i,l){if(!this.isEnabled)return;const c={id:`evt_${++this.componentEventIdCounter}`,eventName:e,data:this.sanitizeForLogging(n),timestamp:Date.now(),listenerCount:r,results:i?this.sanitizeForLogging(i):void 0,hasError:!!l,errorMessage:l?.message};this.componentEventEmitHistory.push(c),this.componentEventEmitHistory.length>this.maxComponentEventHistory&&(this.componentEventEmitHistory=this.componentEventEmitHistory.slice(-this.maxComponentEventHistory))}trackEventOff(e){this.isEnabled&&this.componentEventSubscriptions.delete(e)}trackEventClear(){this.isEnabled&&this.componentEventSubscriptions.clear()}getComponentEventInfo(){const e=Array.from(this.componentEventSubscriptions.values());return{subscriptions:e,emitHistory:[...this.componentEventEmitHistory],totalSubscribers:e.reduce((n,r)=>n+r.subscriberCount,0),totalEmits:this.componentEventEmitHistory.length}}getEventEmitHistory(){return[...this.componentEventEmitHistory]}getEventSubscriptions(){return Array.from(this.componentEventSubscriptions.values())}clearComponentEvents(){this.componentEventSubscriptions.clear(),this.componentEventEmitHistory=[],this.componentEventIdCounter=0}sanitizeForLogging(e){if(e==null||typeof e!="object")return e;try{return JSON.parse(JSON.stringify(e))}catch{return"[Circular or Non-serializable]"}}startStateChange(e,n,r,i){if(!this.config.enabled)return"";const l=`setState_${++this.stateRenderingIdCounter}`;this.currentStateChangeContext={setStateId:l,startTime:performance.now(),changedPath:e,trigger:i||{},renderedComponents:[]};const c={id:`sr_${this.stateRenderingIdCounter}`,setStateId:l,statePath:e,oldValue:this.sanitizeForLogging(n),newValue:this.sanitizeForLogging(r),timestamp:Date.now(),triggeredBy:i||{},renderedComponents:[],totalRenderDuration:0,affectedBindingsCount:0};return this.stateRenderingLogs.push(c),this.stateRenderingLogs.length>this.maxStateRenderingLogs&&this.stateRenderingLogs.shift(),l}trackComponentRender(e,n,r,i=[],l=[],c){if(!this.config.enabled)return;const d=this.componentRenderCounts.get(n)||0;this.componentRenderCounts.set(n,d+1);for(const f of i)this.stateToComponentMap.has(f)||this.stateToComponentMap.set(f,new Set),this.stateToComponentMap.get(f).add(n);if(this.currentStateChangeContext){const f={componentId:e,componentName:n,renderDuration:r,accessedStatePaths:i,evaluatedBindings:l,renderOrder:this.currentStateChangeContext.renderedComponents.length,parentId:c};this.currentStateChangeContext.renderedComponents.push(f)}this.trackRender(n)}completeStateChange(e){if(!this.config.enabled||!this.currentStateChangeContext||this.currentStateChangeContext.setStateId!==e)return;const n=this.currentStateChangeContext,i=performance.now()-n.startTime,l=this.stateRenderingLogs.findIndex(c=>c.setStateId===e);if(l>=0){const c=this.stateRenderingLogs[l];c.renderedComponents=n.renderedComponents,c.totalRenderDuration=i,c.affectedBindingsCount=n.renderedComponents.reduce((d,f)=>d+f.evaluatedBindings.length,0)}this.currentStateChangeContext=null}getCurrentStateChangeContext(){return this.currentStateChangeContext}getStateRenderingLogs(){return[...this.stateRenderingLogs]}getStateRenderingInfo(){const e=this.stateRenderingLogs,n=Object.fromEntries(this.componentRenderCounts),r={};for(const[i,l]of this.stateToComponentMap)r[i]=Array.from(l);return{logs:e,componentRenderCounts:n,stateToComponentMap:r,stats:this.calculateStateRenderingStats()}}calculateStateRenderingStats(){const e=this.stateRenderingLogs;if(e.length===0)return{totalStateChanges:0,totalRenders:0,avgRenderDuration:0,avgComponentsPerChange:0,topRenderedComponents:[],topInfluentialPaths:[]};const n=e.reduce((d,f)=>d+f.renderedComponents.length,0),r=e.reduce((d,f)=>d+f.totalRenderDuration,0)/e.length,i=n/e.length,l=Array.from(this.componentRenderCounts.entries()).sort((d,f)=>f[1]-d[1]).slice(0,5).map(([d,f])=>({name:d,count:f})),c=Array.from(this.stateToComponentMap.entries()).sort((d,f)=>f[1].size-d[1].size).slice(0,5).map(([d,f])=>({path:d,affectedComponents:f.size}));return{totalStateChanges:e.length,totalRenders:n,avgRenderDuration:r,avgComponentsPerChange:i,topRenderedComponents:l,topInfluentialPaths:c}}getComponentsAffectedByState(e){const n=this.stateToComponentMap.get(e);return n?Array.from(n):[]}getComponentRenderHistory(e){return this.stateRenderingLogs.filter(n=>n.renderedComponents.some(r=>r.componentName===e))}clearStateRenderingLogs(){this.stateRenderingLogs=[],this.componentRenderCounts.clear(),this.stateToComponentMap.clear(),this.currentStateChangeContext=null,this.stateRenderingIdCounter=0}trackComponentStateSource(e,n,r,i){this.config.enabled&&this.componentStateSources.set(e,{componentId:e,componentName:n,stateSource:r,stateProvider:i})}trackDynamicState(e,n){this.config.enabled&&this.dynamicStates.set(e,n)}trackContextFlow(e,n,r,i,l,c){if(!this.config.enabled)return;const d={component:n,componentId:e,contextReceived:r,passedToChildren:i,usedInRender:l};if(this.contextFlowNodes.set(e,d),c){const f=this.contextFlowNodes.get(c);f&&(f.children||(f.children=[]),f.children.push(d))}}getStateHierarchyInfo(e=!0){const n=this.buildStateHierarchyLayers(),r=this.detectStateConflicts(n),i=Array.from(this.componentStateSources.values());return{layers:e?n.map(c=>({...c,values:this.summarizeValues(c.values,2)})):n,conflicts:r,componentStateSources:i,timestamp:Date.now()}}summarizeValues(e,n,r=0){if(e==null)return e;if(typeof e!="object")return typeof e=="string"&&e.length>100?e.substring(0,100)+`... (${e.length}자)`:e;if(r>=n){if(Array.isArray(e))return`[Array(${e.length})]`;const c=Object.keys(e);return`{${c.slice(0,5).join(", ")}${c.length>5?`, ... +${c.length-5}`:""}}`}if(Array.isArray(e))return e.length<=3?e.map(c=>this.summarizeValues(c,n,r+1)):{__type:"array",__length:e.length,__preview:e.slice(0,3).map(c=>this.summarizeValues(c,n,r+1))};const i={},l=Object.keys(e);for(const c of l)i[c]=this.summarizeValues(e[c],n,r+1);return i}buildStateHierarchyLayers(){const e=[];try{const r=window.G7Core?.state?.get?.();if(!r)return e;r._local&&e.push({name:"Global _local",type:"global",path:"_local",values:r._local,priority:1}),r._global&&e.push({name:"Global _global",type:"global",path:"_global",values:r._global,priority:1});for(const[l,c]of this.dynamicStates)c&&Object.keys(c).length>0&&e.push({name:`DynamicState (${l})`,type:"dynamicState",componentId:l,values:c,priority:2});const i=this.computeEffectiveState(r._local||{});e.push({name:"Effective _local (merged)",type:"effective",values:i,priority:3})}catch(n){console.warn("[G7DevTools] 상태 계층 빌드 실패:",n)}return e}computeEffectiveState(e){const n={...e};for(const[,r]of this.dynamicStates)r._local&&Object.assign(n,r._local);return n}detectStateConflicts(e){const n=[],r=e.find(l=>l.type==="global"&&l.path==="_local");if(!r)return n;const i=e.filter(l=>l.type==="dynamicState");for(const l of i){const c=l.values._local||l.values;for(const[d,f]of Object.entries(c)){const h=r.values[d];if(JSON.stringify(h)!==JSON.stringify(f)){const m=[],y=[];for(const S of this.componentStateSources.values())S.stateSource.local.some(_=>_===`_local.${d}`||_===d)&&(S.stateProvider.type==="dynamicState"?m.push(S.componentName):S.stateProvider.type==="globalState"&&y.push(S.componentName));n.push({path:`_local.${d}`,globalValue:h,dynamicStateValue:f,effectiveValue:f,usedBy:m,notUsedBy:y,severity:y.length>0?"warning":"info",description:y.length>0?`${y.join(", ")}은(는) globalState._local을 읽어 dynamicState 값을 사용하지 못함`:"dynamicState 값이 globalState와 다르지만 모든 컴포넌트가 dynamicState를 사용"})}}}return n}getContextFlowInfo(){const e=[],n=new Set(this.contextFlowNodes.keys());for(const r of this.contextFlowNodes.values())if(r.children)for(const i of r.children)n.delete(i.componentId);for(const r of n){const i=this.contextFlowNodes.get(r);i&&e.push(i)}return{rootComponent:e.length>0?e[0].component:"Unknown",contextFlow:e,timestamp:Date.now()}}clearStateHierarchyData(){this.componentStateSources.clear(),this.contextFlowNodes.clear(),this.dynamicStates.clear()}trackComponentStyle(e,n,r,i){if(!this.config.enabled)return;const l=this.analyzeTailwindClasses(r),c={componentId:e,componentName:n,classes:r,computedStyles:i,tailwindAnalysis:l};this.componentStyles.set(e,c),this.detectStyleIssues(c)}analyzeTailwindClasses(e){const n=[],r=[],i=[],l=[],c=["sm:","md:","lg:","xl:","2xl:"],d=[/bg-\w+-\d+/,/text-\w+-\d+/,/border-\w+-\d+/];for(const f of e){l.push(f),f.startsWith("dark:")&&n.push(f);for(const h of c)if(f.startsWith(h)){r.push(f);break}for(const h of d)if(h.test(f)){i.push(f);break}}return{usedClasses:l,darkClasses:n,responsiveClasses:r,dynamicClasses:i}}detectStyleIssues(e){const{componentId:n,componentName:r,computedStyles:i,tailwindAnalysis:l}=e;(i.opacity==="0"||i.visibility==="hidden"||i.display==="none"||i.width==="0px"&&i.height==="0px")&&this.addStyleIssue({id:this.generateId(),type:"invisible-element",componentId:n,componentName:r,property:i.opacity==="0"?"opacity":i.visibility==="hidden"?"visibility":i.display==="none"?"display":"width/height",currentValue:i.opacity==="0"?"0":i.visibility==="hidden"?"hidden":i.display==="none"?"none":"0px",severity:"warning",description:"요소가 화면에 보이지 않습니다.",suggestion:"opacity, visibility, display, width/height 값을 확인하세요."});const c=l.usedClasses.filter(f=>f.startsWith("bg-")&&!f.startsWith("dark:")),d=l.darkClasses.filter(f=>f.includes("bg-"));c.length>0&&d.length===0&&this.addStyleIssue({id:this.generateId(),type:"dark-mode-missing",componentId:n,componentName:r,property:"background-color",currentValue:c.join(", "),expectedValue:"dark:bg-* 클래스 필요",severity:"info",description:"다크 모드 배경색 클래스가 누락되었습니다.",suggestion:`${c[0]}에 대응하는 dark: 클래스를 추가하세요.`}),l.dynamicClasses.length>0&&this.addStyleIssue({id:this.generateId(),type:"tailwind-purging",componentId:n,componentName:r,property:"class",currentValue:l.dynamicClasses.join(", "),severity:"info",description:"동적으로 생성된 Tailwind 클래스가 있습니다.",suggestion:"tailwind.config.js의 safelist에 추가하거나 전체 클래스명을 상수로 정의하세요."})}addStyleIssue(e){this.styleIssues.some(r=>r.componentId===e.componentId&&r.type===e.type&&r.property===e.property)||this.styleIssues.push(e)}getStyleValidationInfo(){const e=Array.from(this.componentStyles.values());return{issues:[...this.styleIssues],componentStyles:e,stats:{totalComponents:e.length,invisibleCount:this.styleIssues.filter(n=>n.type==="invisible-element").length,tailwindIssueCount:this.styleIssues.filter(n=>n.type==="tailwind-purging").length,darkModeIssueCount:this.styleIssues.filter(n=>n.type==="dark-mode-missing").length},timestamp:Date.now()}}clearStyleValidationData(){this.styleIssues=[],this.componentStyles.clear()}trackAuthEvent(e,n,r,i){if(!this.config.enabled)return;const l={id:`auth_${++this.authEventIdCounter}`,type:e,timestamp:Date.now(),success:n,error:r,details:i};this.authEvents.push(l),this.authEvents.length>this.maxAuthEventHistory&&(this.authEvents=this.authEvents.slice(-this.maxAuthEventHistory))}trackAuthHeader(e,n,r,i,l){if(!this.config.enabled)return;const c={url:e,hasAuthHeader:n,headerType:r,tokenValid:i??!1,responseStatus:l,timestamp:Date.now()};this.authHeaderHistory.push(c),this.authHeaderHistory.length>this.maxAuthEventHistory&&(this.authHeaderHistory=this.authHeaderHistory.slice(-this.maxAuthEventHistory)),l===401&&this.trackAuthEvent("api-unauthorized",!1,`401 Unauthorized: ${e}`,{url:e})}getAuthState(){try{const e=window.G7Core,n=e?.api;let r=e?.auth;!r&&e?.AuthManager?.getInstance&&(r=e.AuthManager.getInstance());const i=n?.getToken?.()||r?.getAccessToken?.()||localStorage.getItem("auth_token")||localStorage.getItem("access_token"),l=r?.getRefreshToken?.()||localStorage.getItem("refresh_token");let c="unknown",d=r?.getUser?.();if(d&&(c="AuthManager"),!d){const v=e?.state?.get?.();d=v?._global?.user||v?._global?.currentUser||v?.user||v?.currentUser,d&&(c="G7Core.state")}const f=r?.isAuthenticated?.()??!1;let h="memory";localStorage.getItem("auth_token")||localStorage.getItem("access_token")?h="localStorage":(sessionStorage.getItem("auth_token")||sessionStorage.getItem("access_token"))&&(h="sessionStorage");const m=!!i&&(!!d||f);let y;i&&typeof i=="string"&&i.length>20?y=`${i.substring(0,10)}...${i.substring(i.length-6)}`:i&&(y="***");const S=d?{id:d.id,email:d.email,name:d.name,roles:d.roles?.map(v=>typeof v=="string"?{name:v}:{id:v.id,name:v.name,guard_name:v.guard_name}),permissions:d.permissions?.map(v=>typeof v=="string"?{name:v}:{id:v.id,name:v.name,guard_name:v.guard_name}),avatar:d.avatar||d.profile_photo_url||d.profile_image,created_at:d.created_at,updated_at:d.updated_at,last_login_at:d.last_login_at,email_verified_at:d.email_verified_at,...d.phone&&{phone:d.phone},...d.nickname&&{nickname:d.nickname},...d.status&&{status:d.status},...d.locale&&{locale:d.locale}}:void 0;return{isAuthenticated:m,user:S,tokens:{hasAccessToken:!!i,hasRefreshToken:!!l,storage:h,accessTokenPreview:y},lastActivity:Date.now(),source:c}}catch{return{isAuthenticated:!1,tokens:{hasAccessToken:!1,hasRefreshToken:!1,storage:"memory"},source:"unknown"}}}getAuthDebugInfo(){const e=[...this.authEvents];return{state:this.getAuthState(),events:e,headerAnalysis:[...this.authHeaderHistory],stats:{loginAttempts:e.filter(n=>n.type==="login").length,successfulLogins:e.filter(n=>n.type==="login"&&n.success).length,failedLogins:e.filter(n=>n.type==="login"&&!n.success).length,tokenRefreshes:e.filter(n=>n.type==="token-refresh").length,unauthorizedResponses:e.filter(n=>n.type==="api-unauthorized").length},timestamp:Date.now()}}clearAuthData(){this.authEvents=[],this.authHeaderHistory=[],this.authEventIdCounter=0}trackLayoutLoad(e,n,r,i="api"){if(!this.config.enabled)return;const l=Date.now();this.currentLayout={layoutPath:e,templateId:n,layoutJson:this.sanitizeObject(r),loadedAt:l,version:r.version,layoutName:r.layout_name,source:i};const c={id:`layout-${++this.layoutIdCounter}`,layoutPath:e,templateId:n,loadedAt:l,source:i,version:r.version};this.layoutHistory.push(c),this.layoutHistory.length>this.maxLayoutHistory&&this.layoutHistory.shift(),this.layoutStats.totalLoads++,i==="cache"?this.layoutStats.cacheHits++:this.layoutStats.apiLoads++}getCurrentLayout(){return this.currentLayout}getLayoutHistory(){return[...this.layoutHistory]}getLayoutDebugInfo(){return{current:this.currentLayout,history:[...this.layoutHistory],stats:{...this.layoutStats}}}clearLayoutData(){this.currentLayout=null,this.layoutHistory=[],this.layoutIdCounter=0,this.layoutStats={totalLoads:0,cacheHits:0,apiLoads:0}}startHandlerExecution(e){if(!this.config.enabled)return"";const n=`exec_${++this.executionIdCounter}_${Date.now()}`,r={handlerName:e,executionId:n,startTime:Date.now(),stateChanges:[],dataSourceChanges:[],alerts:[]};if(this.executionDetails.set(n,r),this.executionDetails.size>this.maxExecutionDetails){const i=Array.from(this.executionDetails.keys());i.slice(0,i.length-this.maxExecutionDetails).forEach(c=>this.executionDetails.delete(c))}return n}endHandlerExecution(e,n,r,i){if(!this.config.enabled||!e)return;const l=this.executionDetails.get(e);if(!l)return;l.endTime=Date.now(),l.duration=l.endTime-l.startTime,l.exitReason=n,l.exitLocation=r,l.exitDescription=i;const c=this.changeExpectations.get(e);c&&(l.expectedChanges=c,this.checkExpectations(e,l,c),this.changeExpectations.delete(e)),n==="normal"&&l.stateChanges.length===0&&l.dataSourceChanges.length===0&&this.addChangeAlert(e,{type:"no-state-change",severity:"warning",message:`핸들러 "${l.handlerName}"이(가) 상태 변경 없이 완료됨`,description:"핸들러가 성공적으로 완료되었지만 상태나 데이터소스 변경이 없습니다. 의도한 동작인지 확인하세요.",handlerName:l.handlerName,suggestion:'핸들러 내부 조건문을 확인하거나 DevTools의 "변경감지" 탭에서 exitLocation을 확인하세요.',docLink:"troubleshooting-state.md"}),(n==="early-return-condition"||n==="early-return-validation")&&this.addChangeAlert(e,{type:"early-return-detected",severity:"info",message:`핸들러 "${l.handlerName}"이(가) early return으로 종료됨`,description:i||`종료 위치: ${r||"알 수 없음"}`,handlerName:l.handlerName,suggestion:n==="early-return-validation"?"검증 실패로 인한 early return입니다. 입력 데이터를 확인하세요.":"조건부 early return입니다. 조건문의 평가 결과를 확인하세요."})}recordExitReason(e,n,r,i){if(!this.config.enabled||!e)return;const l=this.executionDetails.get(e);l&&(l.exitReason=n,l.exitLocation=r,l.exitDescription=i)}recordStateChange(e,n,r,i,l){if(!this.config.enabled)return;const c={id:`sc_${++this.stateChangeIdCounter}`,path:n,changeType:r,oldValue:this.safeClone(i),newValue:this.safeClone(l),timestamp:Date.now(),comparison:this.compareValues(i,l),executionId:e};if(this.stateChangeHistory.push(c),e){const d=this.executionDetails.get(e);d&&d.stateChanges.push(c)}this.stateChangeHistory.length>this.maxStateChangeHistory&&this.stateChangeHistory.splice(0,this.stateChangeHistory.length-this.maxStateChangeHistory),c.comparison.isDeepEqual&&typeof i=="object"&&i!==null&&this.addChangeAlert(e||"",{type:"object-reference-same",severity:"warning",message:`상태 "${n}"가 변경되었으나 값이 동일함`,description:"객체 참조가 동일하거나 깊은 비교 결과 변경이 없습니다. 변경 감지가 실패할 수 있습니다.",handlerName:e&&this.executionDetails.get(e)?.handlerName||"unknown",statePath:n,suggestion:"불변성을 유지하여 새 객체를 생성하세요. 예: { ...oldObject, newField: value }",docLink:"troubleshooting-state.md#object-mutation"})}recordDataSourceChange(e,n,r,i,l){if(!this.config.enabled)return;const c={dataSourceId:n,changeType:r,timestamp:Date.now(),previousStatus:i,newStatus:l,executionId:e};if(this.dataSourceChangeHistory.push(c),e){const d=this.executionDetails.get(e);d&&d.dataSourceChanges.push(c)}this.dataSourceChangeHistory.length>this.maxStateChangeHistory&&this.dataSourceChangeHistory.splice(0,this.dataSourceChangeHistory.length-this.maxStateChangeHistory)}expectChange(e,n,r){if(!this.config.enabled||!e)return;const i=this.executionDetails.get(e);if(!i)return;const l={expectedStatePaths:n,expectedDataSources:r,setAt:Date.now(),source:i.handlerName};this.changeExpectations.set(e,l)}checkExpectations(e,n,r){const i=new Set(n.stateChanges.map(c=>c.path)),l=new Set(n.dataSourceChanges.map(c=>c.dataSourceId));for(const c of r.expectedStatePaths)i.has(c)||this.addChangeAlert(e,{type:"expected-not-fulfilled",severity:"error",message:`기대한 상태 변경 "${c}"가 발생하지 않음`,description:`핸들러 "${n.handlerName}"이(가) "${c}" 변경을 예고했지만 실제로 변경되지 않았습니다.`,handlerName:n.handlerName,statePath:c,suggestion:"핸들러 내부 로직을 확인하세요. early return이나 조건부 분기로 인해 변경이 생략되었을 수 있습니다.",docLink:"troubleshooting-state.md"});for(const c of r.expectedDataSources)l.has(c)||this.addChangeAlert(e,{type:"expected-not-fulfilled",severity:"error",message:`기대한 데이터소스 갱신 "${c}"가 발생하지 않음`,description:`핸들러 "${n.handlerName}"이(가) "${c}" 갱신을 예고했지만 실제로 갱신되지 않았습니다.`,handlerName:n.handlerName,dataSourceId:c,suggestion:"refetchDataSource 호출이 실행되었는지 확인하세요.",docLink:"data-sources.md"})}addChangeAlert(e,n){const r={...n,id:`alert_${++this.alertIdCounter}`,timestamp:Date.now()};if(this.changeAlerts.push(r),e){const i=this.executionDetails.get(e);i&&i.alerts.push(r)}this.changeAlerts.length>this.maxChangeAlerts&&this.changeAlerts.splice(0,this.changeAlerts.length-this.maxChangeAlerts)}compareValues(e,n){const r=this.getValueType(e),i=this.getValueType(n),l=r!==i;let c=!1,d;return!l&&(r==="object"||r==="array")?(c=this.deepEqual(e,n),!c&&r==="object"&&(d=this.getChangedKeys(e,n))):c=e===n,{typeChanged:l,oldType:r,newType:i,isDeepEqual:c,changedKeys:d}}getValueType(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?"array":typeof e}deepEqual(e,n){if(e===n)return!0;if(typeof e!=typeof n)return!1;if(e===null||n===null||typeof e!="object")return e===n;if(Array.isArray(e)!==Array.isArray(n))return!1;const r=Object.keys(e),i=Object.keys(n);if(r.length!==i.length)return!1;for(const l of r)if(!i.includes(l)||!this.deepEqual(e[l],n[l]))return!1;return!0}getChangedKeys(e,n){const r=[],i=new Set([...Object.keys(e),...Object.keys(n)]);for(const l of i)this.deepEqual(e[l],n[l])||r.push(l);return r}getChangeDetectionInfo(){const e=Array.from(this.executionDetails.values()),n={totalExecutions:e.length,executionsWithStateChange:e.filter(r=>r.stateChanges.length>0).length,executionsWithoutStateChange:e.filter(r=>r.stateChanges.length===0&&r.exitReason==="normal").length,earlyReturnCount:e.filter(r=>r.exitReason==="early-return-condition"||r.exitReason==="early-return-validation").length,alertCount:this.changeAlerts.length,alertsByType:this.getAlertsByType()};return{executionDetails:e,stateChangeHistory:[...this.stateChangeHistory],dataSourceChangeHistory:[...this.dataSourceChangeHistory],alerts:[...this.changeAlerts],stats:n,timestamp:Date.now()}}getAlertsByType(){const e={"no-state-change":0,"no-datasource-change":0,"expected-not-fulfilled":0,"object-reference-same":0,"early-return-detected":0,"async-timing-issue":0};for(const n of this.changeAlerts)e[n.type]++;return e}clearChangeDetectionData(){this.executionDetails.clear(),this.stateChangeHistory=[],this.dataSourceChangeHistory=[],this.changeAlerts=[],this.changeExpectations.clear(),this.executionIdCounter=0,this.stateChangeIdCounter=0,this.alertIdCounter=0}getRecentAlerts(e=10,n){let r=[...this.changeAlerts];return n&&(r=r.filter(i=>i.severity===n)),r.slice(-e)}getHandlerExecutions(e,n=10){return Array.from(this.executionDetails.values()).filter(i=>i.handlerName===e).slice(-n)}findExecutionInStack(e){return this.sequenceExecutionStack.find(n=>n.sequenceId===e)}startSequenceExecution(e){if(!this.config.enabled)return"";const n=`seq_${++this.sequenceIdCounter}_${Date.now()}`,r={sequenceId:n,startTime:Date.now(),totalDuration:0,trigger:e,actions:[],status:"running"};return this.sequenceExecutionStack.push(r),n}captureSequenceActionBefore(e,n,r,i,l){if(!this.config.enabled)return;const c=this.findExecutionInStack(e);if(!c)return;const d={index:n,handler:r,params:this.safeClone(i),stateBeforeAction:{_global:this.safeClone(l._global),_local:this.safeClone(l._local),_isolated:l._isolated?this.safeClone(l._isolated):void 0},stateAfterAction:{_global:{},_local:{}},duration:0,status:"success"};c.actions.push(d)}captureSequenceActionAfter(e,n,r,i,l,c){if(!this.config.enabled)return;const d=this.findExecutionInStack(e);if(!d)return;const f=d.actions.find(m=>m.index===n);if(!f)return;f.stateAfterAction={_global:this.safeClone(r._global),_local:this.safeClone(r._local),_isolated:r._isolated?this.safeClone(r._isolated):void 0},f.duration=i,f.result=this.safeClone(l),f.stateDiff={global:this.computeStateDiff(f.stateBeforeAction._global,f.stateAfterAction._global),local:this.computeStateDiff(f.stateBeforeAction._local,f.stateAfterAction._local)},f.stateBeforeAction._isolated&&f.stateAfterAction._isolated&&(f.stateDiff.isolated=this.computeStateDiff(f.stateBeforeAction._isolated,f.stateAfterAction._isolated));const h=window.__g7PendingLocalState;h&&(f.pendingState=this.safeClone(h)),c&&(f.status="error",f.error={name:c.name,message:c.message,stack:c.stack})}endSequenceExecution(e,n){if(!this.config.enabled)return;const r=this.sequenceExecutionStack.findIndex(l=>l.sequenceId===e);if(r===-1)return;const i=this.sequenceExecutionStack[r];if(i.endTime=Date.now(),i.totalDuration=i.endTime-i.startTime,n){i.status="error",i.error={name:n.name,message:n.message,stack:n.stack};const l=i.actions.find(c=>c.status==="error");l&&(i.failedAtIndex=l.index)}else i.status="success";this.sequenceExecutions.push(i),this.sequenceExecutions.length>this.maxSequenceExecutions&&this.sequenceExecutions.shift(),this.sequenceExecutionStack.splice(r,1)}computeStateDiff(e,n){const r=[],i=[],l=[],c=new Set(Object.keys(e)),d=new Set(Object.keys(n));for(const f of d)c.has(f)||r.push(f);for(const f of c)d.has(f)||i.push(f);for(const f of c)if(d.has(f)){const h=e[f],m=n[f];JSON.stringify(h)!==JSON.stringify(m)&&l.push({path:f,oldValue:h,newValue:m})}return{added:r,removed:i,changed:l}}getSequenceTrackingInfo(){const e=this.getSequenceStats(),n=this.sequenceExecutionStack.length>0?this.sequenceExecutionStack[this.sequenceExecutionStack.length-1]:void 0;return{executions:[...this.sequenceExecutions],currentExecution:n,stats:e}}getSequenceStats(){const e=this.sequenceExecutions,n=e.length,r=e.filter(h=>h.status==="success").length,i=e.filter(h=>h.status==="error").length,l=e.reduce((h,m)=>h+m.actions.length,0),c=n>0?e.reduce((h,m)=>h+m.totalDuration,0)/n:0,d={};for(const h of e)for(const m of h.actions)d[m.handler]=(d[m.handler]||0)+1;const f=Object.entries(d).sort(([,h],[,m])=>m-h).slice(0,5).map(([h,m])=>({handler:h,count:m}));return{totalExecutions:n,successCount:r,errorCount:i,totalActions:l,avgDuration:c,topHandlers:f}}clearSequenceData(){this.sequenceExecutions=[],this.sequenceExecutionStack=[],this.sequenceIdCounter=0}getSequenceExecution(e){const n=this.findExecutionInStack(e);return n||this.sequenceExecutions.find(r=>r.sequenceId===e)}getRecentSequences(e=10){return this.sequenceExecutions.slice(-e)}registerStateCaptureForHandler(e,n,r){if(!this.config.enabled)return;const i=new Map,l=Date.now();for(const c of n)i.set(c,{value:this.safeClone(r[c]),capturedAt:l});this.stateCaptureRegistry.set(e,i)}detectStaleClosure(e,n,r,i,l){if(!this.config.enabled)return[];const c=this.stateCaptureRegistry.get(e);if(!c)return[];const d=Date.now(),f=[];for(const[h,m]of c){const y=this.getValueByPath(r,h),S=d-m.capturedAt;if(!this.isDeepEqual(m.value,y)&&S>0){const v=this.createStaleClosureWarning(i,n,h,m.value,m.capturedAt,y,d,S,l);f.push(v),this.addStaleClosureWarning(v)}}return this.stateCaptureRegistry.delete(e),f}trackStaleClosureWarning(e){if(!this.config.enabled)return;const n=Date.now(),r=this.createStaleClosureWarning(e.type,e.location,e.capturedPath,e.capturedValue,e.capturedAt,e.currentValue,n,n-e.capturedAt,e.actionId,e.stackTrace);this.addStaleClosureWarning(r)}createStaleClosureWarning(e,n,r,i,l,c,d,f,h,m){const y=this.getStaleClosureSeverity(e,f),{description:S,suggestion:v,docLink:_}=this.getStaleClosureMessages(e,r,f);return{id:`stale_${++this.staleClosureIdCounter}_${Date.now()}`,timestamp:Date.now(),type:e,location:n,capturedState:{path:r,capturedValue:this.safeClone(i),capturedAt:l},currentState:{path:r,currentValue:this.safeClone(c),retrievedAt:d},timeDiff:f,severity:y,description:S,suggestion:v,docLink:_,actionId:h,stackTrace:m}}getStaleClosureSeverity(e,n){if(n>5e3)return"error";if(n>1e3)return"warning";switch(e){case"async-state-capture":case"sequence-state-mismatch":return"warning";case"callback-state-capture":case"timeout-state-capture":return"info";case"event-handler-stale":return"warning";default:return"info"}}getStaleClosureMessages(e,n,r){const i=r<1e3?`${r}ms`:`${(r/1e3).toFixed(1)}s`;switch(e){case"async-state-capture":return{description:`await 후 ${i} 경과 시점에 '${n}' 상태가 변경됨. 캡처된 상태 대신 최신 상태를 사용해야 함`,suggestion:"await 이후에는 G7Core.state.get()으로 최신 상태를 다시 조회하거나, useRef + getter 패턴을 사용하세요",docLink:"troubleshooting-state-closure.md"};case"callback-state-capture":return{description:`콜백에서 ${i} 전에 캡처된 '${n}' 상태를 사용 중. 최신 상태와 다름`,suggestion:"콜백에서 상태를 참조할 때는 stateRef.current 패턴 또는 G7Core.state.get()를 사용하세요",docLink:"troubleshooting-state-closure.md"};case"timeout-state-capture":return{description:`setTimeout/setInterval 콜백에서 '${n}' 상태가 ${i} 전 값 사용 중`,suggestion:"타이머 콜백 내에서는 G7Core.state.get()으로 최신 상태를 조회하세요",docLink:"troubleshooting-state-closure.md"};case"sequence-state-mismatch":return{description:`sequence 내 '${n}' 상태가 이전 액션 결과와 불일치. context.state 대신 캡처된 값 사용 의심`,suggestion:"sequence 내에서는 context.state 또는 $prev를 사용하여 최신 상태를 참조하세요",docLink:"troubleshooting-state-setstate.md"};case"event-handler-stale":return{description:`이벤트 핸들러에서 ${i} 전에 바인딩된 '${n}' 상태 사용 중`,suggestion:"이벤트 핸들러에서 상태를 참조할 때는 useRef 패턴 또는 G7Core.state.get()를 사용하세요",docLink:"troubleshooting-state-closure.md"};default:return{description:`'${n}' 상태에서 stale closure 감지됨 (${i} 경과)`,suggestion:"상태 참조 시 최신 값을 사용하는지 확인하세요"}}}addStaleClosureWarning(e){this.staleClosureWarnings.push(e),this.staleClosureWarnings.length>this.maxStaleClosureWarnings&&this.staleClosureWarnings.shift()}getValueByPath(e,n){const r=n.split(".");let i=e;for(const l of r){if(i==null)return;i=i[l]}return i}isDeepEqual(e,n){if(e===n)return!0;if(e===null||n===null)return e===n;if(typeof e!=typeof n)return!1;if(typeof e!="object")return e===n;try{return JSON.stringify(e)===JSON.stringify(n)}catch{return!1}}getStaleClosureTrackingInfo(){const e=this.getStaleClosureStats();return{warnings:[...this.staleClosureWarnings],stats:e,timestamp:Date.now()}}getStaleClosureStats(){const e=this.staleClosureWarnings,n={"async-state-capture":0,"callback-state-capture":0,"timeout-state-capture":0,"sequence-state-mismatch":0,"event-handler-stale":0};for(const f of e)n[f.type]++;const r={info:0,warning:0,error:0};for(const f of e)r[f.severity]++;const i={};for(const f of e)i[f.location]=(i[f.location]||0)+1;const l=Object.entries(i).sort(([,f],[,h])=>h-f).slice(0,5).map(([f,h])=>({location:f,count:h})),c={};for(const f of e)c[f.capturedState.path]=(c[f.capturedState.path]||0)+1;const d=Object.entries(c).sort(([,f],[,h])=>h-f).slice(0,5).map(([f,h])=>({path:f,count:h}));return{totalWarnings:e.length,warningsByType:n,warningsBySeverity:r,topLocations:l,topAffectedPaths:d}}clearStaleClosureData(){this.staleClosureWarnings=[],this.staleClosureIdCounter=0,this.stateCaptureRegistry.clear()}getRecentStaleClosureWarnings(e=10,n){let r=[...this.staleClosureWarnings];return n&&(r=r.filter(i=>i.severity===n)),r.slice(-e)}safeClone(e){if(e==null||typeof e!="object")return e;try{return JSON.parse(JSON.stringify(e))}catch{if(Array.isArray(e))return e.map(r=>{try{return JSON.parse(JSON.stringify(r))}catch{return"[Unserializable]"}});const n={};for(const r of Object.keys(e))try{n[r]=JSON.parse(JSON.stringify(e[r]))}catch{n[r]="[Unserializable]"}return n}}};M(Ti,"instance");let Ia=Ti;const Vn=dt("LayoutLoader");class xr extends Error{constructor(n,r,i){super(n);M(this,"code");M(this,"details");this.code=r,this.details=i,this.name="LayoutLoaderError"}}class Vf{constructor(e){M(this,"componentRegistry");M(this,"currentLayout",null);M(this,"layoutCache",new Map);M(this,"cacheVersion",0);this.componentRegistry=e}setCacheVersion(e){this.cacheVersion!==e&&(Vn.log("Cache version updated:",this.cacheVersion,"->",e),this.cacheVersion=e,this.layoutCache.clear())}getCacheVersion(){return this.cacheVersion}async loadLayout(e,n){const r=`${e}:${n}`;if(this.layoutCache.has(r)){Vn.log("Loading layout from cache:",n);const l=await this.layoutCache.get(r),c=JSON.parse(JSON.stringify(l));return this.currentLayout=c,Ia.getInstance().trackLayoutLoad(n,e,c,"cache"),c}const i=this.fetchLayout(e,n);return this.layoutCache.set(r,i),i.catch(()=>{this.layoutCache.get(r)===i&&this.layoutCache.delete(r)}),i}async fetchLayout(e,n,r=!1){try{const i=this.cacheVersion>0?this.cacheVersion:null;let l;if(n.startsWith("__preview__/")){const S=n.replace("__preview__/","");l=jr(`/api/layouts/preview/${S}`,"json",i)}else l=jr(`/api/layouts/${e}/${n}`,"json",i);Vn.log("Fetching layout from API:",l);const c=zr(),d=r?null:c.getToken(),f={Accept:"application/json"};d&&(f.Authorization=`Bearer ${d}`);const h=await Vl(l,{init:{headers:f},label:`layout: ${n}`});let m;try{m=await h.json()}catch{m=null}if(!h.ok){if(h.status===401&&!r&&d){Vn.log("Token invalid, removing and retrying without token"),c.removeToken();try{return await this.fetchLayout(e,n,!0)}catch(v){throw v instanceof xr&&v.details?.status===401?new xr(v.message,v.code,{...v.details,hadToken:!0}):v}}const S=m?.message||m?.error;throw new xr(`Failed to fetch layout: ${h.status} ${h.statusText}`,"FETCH_FAILED",{status:h.status,statusText:h.statusText,url:l,apiMessage:S})}const y=m.data||m;return this.validateLayoutData(y),this.currentLayout=y,Ia.getInstance().trackLayoutLoad(n,e,y,"api"),Vn.log("Layout fetched and cached successfully:",y.layout_name),y}catch(i){const l=`${e}:${n}`;throw this.layoutCache.delete(l),i instanceof xr?i:new xr("Failed to load layout","LOAD_FAILED",{originalError:i})}}prefetchLayout(e,n){return this.loadLayout(e,n)}validateLayoutData(e){if(!e.version)throw new xr("Layout data missing required field: version","VALIDATION_FAILED",{field:"version"});if(!e.layout_name)throw new xr("Layout data missing required field: layout_name","VALIDATION_FAILED",{field:"layout_name"});if(!Array.isArray(e.components))throw new xr('Layout data field "components" must be an array',"VALIDATION_FAILED",{field:"components",value:e.components});Vn.log("Layout data validation passed")}renderLayout(e,n){try{const r=n||this.currentLayout;if(!r)throw new xr("No layout data to render","NO_LAYOUT_DATA");Vn.log("Rendering layout:",r.layout_name),e.innerHTML="",this.renderComponents(e,r.components),Vn.log("Layout rendered successfully")}catch(r){Vn.error("Render error:",r),this.renderErrorState(e,r)}}renderComponents(e,n){for(const r of n){const i=this.renderComponent(r);i&&e.appendChild(i)}}renderComponent(e){try{if(!this.componentRegistry.getComponent(e.type))return Vn.warn(`Component not found: ${e.type}`),this.createPlaceholderElement(e.type);const r=document.createElement("div");return r.setAttribute("data-component",e.type),e.props&&Object.entries(e.props).forEach(([i,l])=>{r.setAttribute(`data-prop-${i}`,JSON.stringify(l))}),e.children&&e.children.length>0?this.renderComponents(r,e.children):e.text&&(r.textContent=e.text),r}catch(n){return Vn.error(`Error rendering component ${e.type}:`,n),this.createErrorElement(e.type,n)}}createPlaceholderElement(e){const n=document.createElement("div");return n.className="component-placeholder",n.setAttribute("data-component-type",e),n.innerHTML=`
|
||
<div style="padding: 1rem; border: 2px dashed #ccc; background: #f9f9f9; text-align: center;">
|
||
<p style="margin: 0; color: #666;">Component not found: <strong>${e}</strong></p>
|
||
</div>
|
||
`,n}createErrorElement(e,n){const r=document.createElement("div");return r.className="component-error",r.setAttribute("data-component-type",e),r.innerHTML=`
|
||
<div style="padding: 1rem; border: 2px solid #f44336; background: #ffebee; border-radius: 4px;">
|
||
<p style="margin: 0 0 0.5rem 0; color: #c62828; font-weight: bold;">Component Error: ${e}</p>
|
||
<p style="margin: 0; color: #666; font-size: 0.875rem;">${n?.message||"Unknown error"}</p>
|
||
</div>
|
||
`,r}renderErrorState(e,n){const r=n instanceof Error?n.message:String(n),i=n instanceof xr?n.code:"UNKNOWN_ERROR";e.innerHTML=`
|
||
<div class="layout-error" data-error-code="${i}" style="
|
||
padding: 2rem;
|
||
text-align: center;
|
||
background: #ffebee;
|
||
border: 2px solid #f44336;
|
||
border-radius: 8px;
|
||
margin: 2rem auto;
|
||
max-width: 600px;
|
||
">
|
||
<h2 style="
|
||
margin: 0 0 1rem 0;
|
||
color: #c62828;
|
||
font-size: 1.5rem;
|
||
">레이아웃 로드 실패</h2>
|
||
|
||
<p style="
|
||
margin: 0 0 1rem 0;
|
||
color: #666;
|
||
font-size: 1rem;
|
||
">${r}</p>
|
||
|
||
<p style="
|
||
margin: 0;
|
||
color: #999;
|
||
font-size: 0.875rem;
|
||
">오류 코드: ${i}</p>
|
||
|
||
<button
|
||
onclick="window.location.reload()"
|
||
style="
|
||
margin-top: 1.5rem;
|
||
padding: 0.75rem 1.5rem;
|
||
background: #f44336;
|
||
color: white;
|
||
border: none;
|
||
border-radius: 4px;
|
||
cursor: pointer;
|
||
font-size: 1rem;
|
||
"
|
||
>페이지 새로고침</button>
|
||
</div>
|
||
`,Vn.error("Error state rendered:",i,r)}getCurrentLayout(){return this.currentLayout}clear(){this.currentLayout=null,this.layoutCache.clear(),Vn.log("Layout data and cache cleared")}}const NA=dt("TranslationContext"),Kf=N.createContext(null),Lc=({children:s,translationEngine:e,translationContext:n})=>{const r=N.useMemo(()=>(l,c)=>{if(c){const d="|"+Object.entries(c).map(([f,h])=>`${f}=${h}`).join("|");return e.translate(l,n,d)}return e.translate(l,n)},[e,n]),i=N.useMemo(()=>({translationEngine:e,translationContext:n,t:r}),[e,n,r]);return ft.jsx(Kf.Provider,{value:i,children:s})},Uy=()=>{const s=N.useContext(Kf);return s||(NA.warn("TranslationProvider 외부에서 호출되었습니다. 키를 그대로 반환합니다."),{t:e=>e,translationEngine:null,translationContext:null})},ja=dt("SlotContext"),IA={registerToSlot:()=>{ja.warn("SlotContext not available: registerToSlot called outside SlotProvider")},unregisterFromSlot:()=>{ja.warn("SlotContext not available: unregisterFromSlot called outside SlotProvider")},getSlotComponents:()=>[],subscribeToSlot:()=>()=>{},clearAllSlots:()=>{},isEnabled:!1},jA=N.createContext(IA),Wf=({children:s})=>{const e=N.useRef(new Map),n=N.useRef(new Map),r=N.useCallback(m=>{const y=n.current.get(m);y&&y.forEach(S=>{try{S()}catch(v){ja.error(`Slot subscriber error (slotId: ${m}):`,v)}})},[]),i=N.useCallback((m,y,S)=>{if(!m||!y){ja.warn("registerToSlot: slotId and componentId are required");return}e.current.has(m)||e.current.set(m,new Map);const v=e.current.get(m),_=v.get(y);_&&_.registrationKey===S.registrationKey||(v.set(y,S),ja.log(`Component registered to slot: ${y} -> ${m} (order: ${S.order})`),r(m))},[r]),l=N.useCallback((m,y)=>{const S=e.current.get(m);S&&S.has(y)&&(S.delete(y),ja.log(`Component unregistered from slot: ${y} <- ${m}`),S.size===0&&e.current.delete(m),r(m))},[r]),c=N.useCallback(m=>{const y=e.current.get(m);return y?Array.from(y.values()).sort((S,v)=>S.order-v.order):[]},[]),d=N.useCallback((m,y)=>{n.current.has(m)||n.current.set(m,new Set);const S=n.current.get(m);return S.add(y),()=>{S.delete(y),S.size===0&&n.current.delete(m)}},[]),f=N.useCallback(()=>{e.current.forEach((m,y)=>{r(y)}),e.current.clear(),n.current.clear(),ja.log("All slots cleared")},[r]),h=N.useMemo(()=>({registerToSlot:i,unregisterFromSlot:l,getSlotComponents:c,subscribeToSlot:d,clearAllSlots:f,isEnabled:!0}),[i,l,c,d,f]);return N.useLayoutEffect(()=>{typeof window<"u"&&(window.__slotContextValue=h,ja.log("SlotContext exposed to window.__slotContextValue"))},[h]),ft.jsx(jA.Provider,{value:h,children:s})};class Yf{constructor(){this.notificationCreatedEvent=".Illuminate\\Notifications\\Events\\BroadcastNotificationCreated"}listenForWhisper(e,n){return this.listen(".client-"+e,n)}notification(e){return this.listen(this.notificationCreatedEvent,e)}stopListeningForNotification(e){return this.stopListening(this.notificationCreatedEvent,e)}stopListeningForWhisper(e,n){return this.stopListening(".client-"+e,n)}}class Py{constructor(e){this.namespace=e}format(e){return[".","\\"].includes(e.charAt(0))?e.substring(1):(this.namespace&&(e=this.namespace+"."+e),e.replace(/\./g,"\\"))}setNamespace(e){this.namespace=e}}function HA(s){try{return Reflect.construct(String,[],s),!0}catch{return!1}}class Xf extends Yf{constructor(e,n,r){super(),this.name=n,this.pusher=e,this.options=r,this.eventFormatter=new Py(this.options.namespace),this.subscribe()}subscribe(){this.subscription=this.pusher.subscribe(this.name)}unsubscribe(){this.pusher.unsubscribe(this.name)}listen(e,n){return this.on(this.eventFormatter.format(e),n),this}listenToAll(e){return this.subscription.bind_global((n,r)=>{if(n.startsWith("pusher:"))return;let i=String(this.options.namespace??"").replace(/\./g,"\\"),l=n.startsWith(i)?n.substring(i.length+1):"."+n;e(l,r)}),this}stopListening(e,n){return n?this.subscription.unbind(this.eventFormatter.format(e),n):this.subscription.unbind(this.eventFormatter.format(e)),this}stopListeningToAll(e){return e?this.subscription.unbind_global(e):this.subscription.unbind_global(),this}subscribed(e){return this.on("pusher:subscription_succeeded",()=>{e()}),this}error(e){return this.on("pusher:subscription_error",n=>{e(n)}),this}on(e,n){return this.subscription.bind(e,n),this}}class By extends Xf{whisper(e,n){return this.pusher.channels.channels[this.name].trigger(`client-${e}`,n),this}}class zA extends Xf{whisper(e,n){return this.pusher.channels.channels[this.name].trigger(`client-${e}`,n),this}}class UA extends By{here(e){return this.on("pusher:subscription_succeeded",n=>{e(Object.keys(n.members).map(r=>n.members[r]))}),this}joining(e){return this.on("pusher:member_added",n=>{e(n.info)}),this}whisper(e,n){return this.pusher.channels.channels[this.name].trigger(`client-${e}`,n),this}leaving(e){return this.on("pusher:member_removed",n=>{e(n.info)}),this}}class qy extends Yf{constructor(e,n,r){super(),this.events={},this.listeners={},this.name=n,this.socket=e,this.options=r,this.eventFormatter=new Py(this.options.namespace),this.subscribe()}subscribe(){this.socket.emit("subscribe",{channel:this.name,auth:this.options.auth||{}})}unsubscribe(){this.unbind(),this.socket.emit("unsubscribe",{channel:this.name,auth:this.options.auth||{}})}listen(e,n){return this.on(this.eventFormatter.format(e),n),this}stopListening(e,n){return this.unbindEvent(this.eventFormatter.format(e),n),this}subscribed(e){return this.on("connect",n=>{e(n)}),this}error(e){return this}on(e,n){return this.listeners[e]=this.listeners[e]||[],this.events[e]||(this.events[e]=(r,i)=>{this.name===r&&this.listeners[e]&&this.listeners[e].forEach(l=>l(i))},this.socket.on(e,this.events[e])),this.listeners[e].push(n),this}unbind(){Object.keys(this.events).forEach(e=>{this.unbindEvent(e)})}unbindEvent(e,n){this.listeners[e]=this.listeners[e]||[],n&&(this.listeners[e]=this.listeners[e].filter(r=>r!==n)),(!n||this.listeners[e].length===0)&&(this.events[e]&&(this.socket.removeListener(e,this.events[e]),delete this.events[e]),delete this.listeners[e])}}class Gy extends qy{whisper(e,n){return this.socket.emit("client event",{channel:this.name,event:`client-${e}`,data:n}),this}}class PA extends Gy{here(e){return this.on("presence:subscribed",n=>{e(n.map(r=>r.user_info))}),this}joining(e){return this.on("presence:joining",n=>e(n.user_info)),this}whisper(e,n){return this.socket.emit("client event",{channel:this.name,event:`client-${e}`,data:n}),this}leaving(e){return this.on("presence:leaving",n=>e(n.user_info)),this}}class $c extends Yf{subscribe(){}unsubscribe(){}listen(e,n){return this}listenToAll(e){return this}stopListening(e,n){return this}subscribed(e){return this}error(e){return this}on(e,n){return this}}class Fy extends $c{whisper(e,n){return this}}class BA extends $c{whisper(e,n){return this}}class qA extends Fy{here(e){return this}joining(e){return this}whisper(e,n){return this}leaving(e){return this}}const Vy=class Dw{constructor(e){this.setOptions(e),this.connect()}setOptions(e){this.options={...Dw._defaultOptions,...e,broadcaster:e.broadcaster};let n=this.csrfToken();n&&(this.options.auth.headers["X-CSRF-TOKEN"]=n,this.options.userAuthentication.headers["X-CSRF-TOKEN"]=n),n=this.options.bearerToken,n&&(this.options.auth.headers.Authorization="Bearer "+n,this.options.userAuthentication.headers.Authorization="Bearer "+n)}csrfToken(){var e,n;return typeof window<"u"&&(e=window.Laravel)!=null&&e.csrfToken?window.Laravel.csrfToken:this.options.csrfToken?this.options.csrfToken:typeof document<"u"&&typeof document.querySelector=="function"?((n=document.querySelector('meta[name="csrf-token"]'))==null?void 0:n.getAttribute("content"))??null:null}};Vy._defaultOptions={auth:{headers:{}},authEndpoint:"/broadcasting/auth",userAuthentication:{endpoint:"/broadcasting/user-auth",headers:{}},csrfToken:null,bearerToken:null,host:null,key:null,namespace:"App.Events"};let Jf=Vy;class Mc extends Jf{constructor(){super(...arguments),this.channels={}}connect(){if(typeof this.options.client<"u")this.pusher=this.options.client;else if(this.options.Pusher)this.pusher=new this.options.Pusher(this.options.key,this.options);else if(typeof window<"u"&&typeof window.Pusher<"u")this.pusher=new window.Pusher(this.options.key,this.options);else throw new Error("Pusher client not found. Should be globally available or passed via options.client")}signin(){this.pusher.signin()}listen(e,n,r){return this.channel(e).listen(n,r)}channel(e){return this.channels[e]||(this.channels[e]=new Xf(this.pusher,e,this.options)),this.channels[e]}privateChannel(e){return this.channels["private-"+e]||(this.channels["private-"+e]=new By(this.pusher,"private-"+e,this.options)),this.channels["private-"+e]}encryptedPrivateChannel(e){return this.channels["private-encrypted-"+e]||(this.channels["private-encrypted-"+e]=new zA(this.pusher,"private-encrypted-"+e,this.options)),this.channels["private-encrypted-"+e]}presenceChannel(e){return this.channels["presence-"+e]||(this.channels["presence-"+e]=new UA(this.pusher,"presence-"+e,this.options)),this.channels["presence-"+e]}leave(e){[e,"private-"+e,"private-encrypted-"+e,"presence-"+e].forEach(n=>{this.leaveChannel(n)})}leaveChannel(e){this.channels[e]&&(this.channels[e].unsubscribe(),delete this.channels[e])}socketId(){return this.pusher.connection.socket_id}connectionStatus(){const e=this.pusher.connection.state;switch(e){case"connected":case"connecting":return e;case"failed":case"unavailable":return"failed";default:return"disconnected"}}onConnectionChange(e){const n=()=>{e(this.connectionStatus())},r=["state_change","connected","disconnected"];return r.forEach(i=>{this.pusher.connection.bind(i,n)}),()=>{r.forEach(i=>{this.pusher.connection.unbind(i,n)})}}disconnect(){this.pusher.disconnect()}}class GA extends Jf{constructor(){super(...arguments),this.channels={}}connect(){let e=this.getSocketIO();this.socket=e(this.options.host??void 0,this.options),this.socket.io.on("reconnect",()=>{Object.values(this.channels).forEach(n=>{n.subscribe()})})}getSocketIO(){if(typeof this.options.client<"u")return this.options.client;if(typeof window<"u"&&typeof window.io<"u")return window.io;throw new Error("Socket.io client not found. Should be globally available or passed via options.client")}listen(e,n,r){return this.channel(e).listen(n,r)}channel(e){return this.channels[e]||(this.channels[e]=new qy(this.socket,e,this.options)),this.channels[e]}privateChannel(e){return this.channels["private-"+e]||(this.channels["private-"+e]=new Gy(this.socket,"private-"+e,this.options)),this.channels["private-"+e]}presenceChannel(e){return this.channels["presence-"+e]||(this.channels["presence-"+e]=new PA(this.socket,"presence-"+e,this.options)),this.channels["presence-"+e]}leave(e){[e,"private-"+e,"presence-"+e].forEach(n=>{this.leaveChannel(n)})}leaveChannel(e){this.channels[e]&&(this.channels[e].unsubscribe(),delete this.channels[e])}socketId(){return this.socket.id}connectionStatus(){return this.socket.connected?"connected":this.socket.io._reconnecting?"reconnecting":this.socket.id!==void 0?"disconnected":"connecting"}onConnectionChange(e){const n=()=>{e(this.connectionStatus())},r=["connect","disconnect","connect_error","reconnect_attempt","reconnect","reconnect_error","reconnect_failed"];return r.forEach(i=>{this.socket.on(i,n)}),()=>{r.forEach(i=>{this.socket.off(i,n)})}}disconnect(){this.socket.disconnect()}}class Ky extends Jf{constructor(){super(...arguments),this.channels={}}connect(){}listen(e,n,r){return new $c}channel(e){return new $c}privateChannel(e){return new Fy}encryptedPrivateChannel(e){return new BA}presenceChannel(e){return new qA}leave(e){}leaveChannel(e){}socketId(){return"fake-socket-id"}connectionStatus(){return"connected"}onConnectionChange(e){return()=>{}}disconnect(){}}class FA{constructor(e){this.options=e,this.connect(),this.options.withoutInterceptors||this.registerInterceptors()}channel(e){return this.connector.channel(e)}connect(){if(this.options.broadcaster==="reverb")this.connector=new Mc({...this.options,cluster:""});else if(this.options.broadcaster==="pusher")this.connector=new Mc(this.options);else if(this.options.broadcaster==="ably")this.connector=new Mc({...this.options,cluster:"",broadcaster:"pusher"});else if(this.options.broadcaster==="socket.io")this.connector=new GA(this.options);else if(this.options.broadcaster==="null")this.connector=new Ky(this.options);else if(typeof this.options.broadcaster=="function"&&HA(this.options.broadcaster))this.connector=new this.options.broadcaster(this.options);else throw new Error(`Broadcaster ${typeof this.options.broadcaster} ${String(this.options.broadcaster)} is not supported.`)}disconnect(){this.connector.disconnect()}join(e){return this.connector.presenceChannel(e)}leave(e){this.connector.leave(e)}leaveChannel(e){this.connector.leaveChannel(e)}leaveAllChannels(){for(const e in this.connector.channels)this.leaveChannel(e)}listen(e,n,r){return this.connector.listen(e,n,r)}private(e){return this.connector.privateChannel(e)}encryptedPrivate(e){if(this.connectorSupportsEncryptedPrivateChannels(this.connector))return this.connector.encryptedPrivateChannel(e);throw new Error(`Broadcaster ${typeof this.options.broadcaster} ${String(this.options.broadcaster)} does not support encrypted private channels.`)}connectorSupportsEncryptedPrivateChannels(e){return e instanceof Mc||e instanceof Ky}socketId(){return this.connector.socketId()}connectionStatus(){return this.connector.connectionStatus()}registerInterceptors(){typeof Vue<"u"&&Vue!=null&&Vue.http&&this.registerVueRequestInterceptor(),typeof axios=="function"&&this.registerAxiosRequestInterceptor(),typeof jQuery=="function"&&this.registerjQueryAjaxSetup(),typeof Turbo=="object"&&this.registerTurboRequestInterceptor()}registerVueRequestInterceptor(){Vue.http.interceptors.push((e,n)=>{this.socketId()&&e.headers.set("X-Socket-ID",this.socketId()),n()})}registerAxiosRequestInterceptor(){axios.interceptors.request.use(e=>(this.socketId()&&(e.headers["X-Socket-Id"]=this.socketId()),e))}registerjQueryAjaxSetup(){typeof jQuery.ajax<"u"&&jQuery.ajaxPrefilter((e,n,r)=>{this.socketId()&&r.setRequestHeader("X-Socket-Id",this.socketId())})}registerTurboRequestInterceptor(){document.addEventListener("turbo:before-fetch-request",e=>{e.detail.fetchOptions.headers["X-Socket-Id"]=this.socketId()})}}var Qf={exports:{}};var Wy;function VA(){return Wy||(Wy=1,(function(s,e){(function(r,i){s.exports=i()})(self,()=>(()=>{var n={594(c,d){var f=this&&this.__extends||(function(){var $=function(k,O){return $=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(P,G){P.__proto__=G}||function(P,G){for(var B in G)G.hasOwnProperty(B)&&(P[B]=G[B])},$(k,O)};return function(k,O){$(k,O);function P(){this.constructor=k}k.prototype=O===null?Object.create(O):(P.prototype=O.prototype,new P)}})();Object.defineProperty(d,"__esModule",{value:!0});var h=256,m=(function(){function $(k){k===void 0&&(k="="),this._paddingCharacter=k}return $.prototype.encodedLength=function(k){return this._paddingCharacter?(k+2)/3*4|0:(k*8+5)/6|0},$.prototype.encode=function(k){for(var O="",P=0;P<k.length-2;P+=3){var G=k[P]<<16|k[P+1]<<8|k[P+2];O+=this._encodeByte(G>>>18&63),O+=this._encodeByte(G>>>12&63),O+=this._encodeByte(G>>>6&63),O+=this._encodeByte(G>>>0&63)}var B=k.length-P;if(B>0){var G=k[P]<<16|(B===2?k[P+1]<<8:0);O+=this._encodeByte(G>>>18&63),O+=this._encodeByte(G>>>12&63),B===2?O+=this._encodeByte(G>>>6&63):O+=this._paddingCharacter||"",O+=this._paddingCharacter||""}return O},$.prototype.maxDecodedLength=function(k){return this._paddingCharacter?k/4*3|0:(k*6+7)/8|0},$.prototype.decodedLength=function(k){return this.maxDecodedLength(k.length-this._getPaddingLength(k))},$.prototype.decode=function(k){if(k.length===0)return new Uint8Array(0);for(var O=this._getPaddingLength(k),P=k.length-O,G=new Uint8Array(this.maxDecodedLength(P)),B=0,W=0,pe=0,Se=0,we=0,Ue=0,Fe=0;W<P-4;W+=4)Se=this._decodeChar(k.charCodeAt(W+0)),we=this._decodeChar(k.charCodeAt(W+1)),Ue=this._decodeChar(k.charCodeAt(W+2)),Fe=this._decodeChar(k.charCodeAt(W+3)),G[B++]=Se<<2|we>>>4,G[B++]=we<<4|Ue>>>2,G[B++]=Ue<<6|Fe,pe|=Se&h,pe|=we&h,pe|=Ue&h,pe|=Fe&h;if(W<P-1&&(Se=this._decodeChar(k.charCodeAt(W)),we=this._decodeChar(k.charCodeAt(W+1)),G[B++]=Se<<2|we>>>4,pe|=Se&h,pe|=we&h),W<P-2&&(Ue=this._decodeChar(k.charCodeAt(W+2)),G[B++]=we<<4|Ue>>>2,pe|=Ue&h),W<P-3&&(Fe=this._decodeChar(k.charCodeAt(W+3)),G[B++]=Ue<<6|Fe,pe|=Fe&h),pe!==0)throw new Error("Base64Coder: incorrect characters for decoding");return G},$.prototype._encodeByte=function(k){var O=k;return O+=65,O+=25-k>>>8&6,O+=51-k>>>8&-75,O+=61-k>>>8&-15,O+=62-k>>>8&3,String.fromCharCode(O)},$.prototype._decodeChar=function(k){var O=h;return O+=(42-k&k-44)>>>8&-h+k-43+62,O+=(46-k&k-48)>>>8&-h+k-47+63,O+=(47-k&k-58)>>>8&-h+k-48+52,O+=(64-k&k-91)>>>8&-h+k-65+0,O+=(96-k&k-123)>>>8&-h+k-97+26,O},$.prototype._getPaddingLength=function(k){var O=0;if(this._paddingCharacter){for(var P=k.length-1;P>=0&&k[P]===this._paddingCharacter;P--)O++;if(k.length<4||O>2)throw new Error("Base64Coder: incorrect padding")}return O},$})();d.Coder=m;var y=new m;function S($){return y.encode($)}d.encode=S;function v($){return y.decode($)}d.decode=v;var _=(function($){f(k,$);function k(){return $!==null&&$.apply(this,arguments)||this}return k.prototype._encodeByte=function(O){var P=O;return P+=65,P+=25-O>>>8&6,P+=51-O>>>8&-75,P+=61-O>>>8&-13,P+=62-O>>>8&49,String.fromCharCode(P)},k.prototype._decodeChar=function(O){var P=h;return P+=(44-O&O-46)>>>8&-h+O-45+62,P+=(94-O&O-96)>>>8&-h+O-95+63,P+=(47-O&O-58)>>>8&-h+O-48+52,P+=(64-O&O-91)>>>8&-h+O-65+0,P+=(96-O&O-123)>>>8&-h+O-97+26,P},k})(m);d.URLSafeCoder=_;var x=new _;function A($){return x.encode($)}d.encodeURLSafe=A;function L($){return x.decode($)}d.decodeURLSafe=L,d.encodedLength=function($){return y.encodedLength($)},d.maxDecodedLength=function($){return y.maxDecodedLength($)},d.decodedLength=function($){return y.decodedLength($)}},978(c,d){var f="utf8: invalid source encoding";function h(m){for(var y=[],S=0;S<m.length;S++){var v=m[S];if(v&128){var _=void 0;if(v<224){if(S>=m.length)throw new Error(f);var x=m[++S];if((x&192)!==128)throw new Error(f);v=(v&31)<<6|x&63,_=128}else if(v<240){if(S>=m.length-1)throw new Error(f);var x=m[++S],A=m[++S];if((x&192)!==128||(A&192)!==128)throw new Error(f);v=(v&15)<<12|(x&63)<<6|A&63,_=2048}else if(v<248){if(S>=m.length-2)throw new Error(f);var x=m[++S],A=m[++S],L=m[++S];if((x&192)!==128||(A&192)!==128||(L&192)!==128)throw new Error(f);v=(v&15)<<18|(x&63)<<12|(A&63)<<6|L&63,_=65536}else throw new Error(f);if(v<_||v>=55296&&v<=57343)throw new Error(f);if(v>=65536){if(v>1114111)throw new Error(f);v-=65536,y.push(String.fromCharCode(55296|v>>10)),v=56320|v&1023}}y.push(String.fromCharCode(v))}return y.join("")}d.D4=h},721(c,d,f){c.exports=f(207).default},207(c,d,f){f.d(d,{default:()=>Ls});class h{constructor(b,C){this.lastId=0,this.prefix=b,this.name=C}create(b){this.lastId++;var C=this.lastId,D=this.prefix+C,I=this.name+"["+C+"]",ne=!1,me=function(){ne||(b.apply(null,arguments),ne=!0)};return this[C]=me,{number:C,id:D,name:I,callback:me}}remove(b){delete this[b.number]}}var m=new h("_pusher_script_","Pusher.ScriptReceivers"),y={VERSION:"8.5.0",PROTOCOL:7,wsPort:80,wssPort:443,wsPath:"",httpHost:"sockjs.pusher.com",httpPort:80,httpsPort:443,httpPath:"/pusher",stats_host:"stats.pusher.com",authEndpoint:"/pusher/auth",authTransport:"ajax",activityTimeout:12e4,pongTimeout:3e4,unavailableTimeout:1e4,userAuthentication:{endpoint:"/pusher/user-auth",transport:"ajax"},channelAuthorization:{endpoint:"/pusher/auth",transport:"ajax"},cdn_http:"http://js.pusher.com",cdn_https:"https://js.pusher.com",dependency_suffix:""};const S=y;class v{constructor(b){this.options=b,this.receivers=b.receivers||m,this.loading={}}load(b,C,D){var I=this;if(I.loading[b]&&I.loading[b].length>0)I.loading[b].push(D);else{I.loading[b]=[D];var ne=ze.createScriptRequest(I.getPath(b,C)),me=I.receivers.create(function($e){if(I.receivers.remove(me),I.loading[b]){var Ke=I.loading[b];delete I.loading[b];for(var ct=function(zt){zt||ne.cleanup()},gt=0;gt<Ke.length;gt++)Ke[gt]($e,ct)}});ne.send(me)}}getRoot(b){var C,D=ze.getDocument().location.protocol;return b&&b.useTLS||D==="https:"?C=this.options.cdn_https:C=this.options.cdn_http,C.replace(/\/*$/,"")+"/"+this.options.version}getPath(b,C){return this.getRoot(C)+"/"+b+this.options.suffix+".js"}}var _=new h("_pusher_dependencies","Pusher.DependenciesReceivers"),x=new v({cdn_http:S.cdn_http,cdn_https:S.cdn_https,version:S.VERSION,suffix:S.dependency_suffix,receivers:_});const A={baseUrl:"https://pusher.com",urls:{authenticationEndpoint:{path:"/docs/channels/server_api/authenticating_users"},authorizationEndpoint:{path:"/docs/channels/server_api/authorizing-users/"},javascriptQuickStart:{path:"/docs/javascript_quick_start"},triggeringClientEvents:{path:"/docs/client_api_guide/client_events#trigger-events"},encryptedChannelSupport:{fullUrl:"https://github.com/pusher/pusher-js/tree/cc491015371a4bde5743d1c87a0fbac0feb53195#encrypted-channel-support"}}},$={buildLogSuffix:function(E){const b="See:",C=A.urls[E];if(!C)return"";let D;return C.fullUrl?D=C.fullUrl:C.path&&(D=A.baseUrl+C.path),D?`${b} ${D}`:""}};var k;(function(E){E.UserAuthentication="user-authentication",E.ChannelAuthorization="channel-authorization"})(k||(k={}));class O extends Error{constructor(b){super(b),Object.setPrototypeOf(this,new.target.prototype)}}class P extends Error{constructor(b){super(b),Object.setPrototypeOf(this,new.target.prototype)}}class G extends Error{constructor(b){super(b),Object.setPrototypeOf(this,new.target.prototype)}}class B extends Error{constructor(b){super(b),Object.setPrototypeOf(this,new.target.prototype)}}class W extends Error{constructor(b){super(b),Object.setPrototypeOf(this,new.target.prototype)}}class pe extends Error{constructor(b){super(b),Object.setPrototypeOf(this,new.target.prototype)}}class Se extends Error{constructor(b){super(b),Object.setPrototypeOf(this,new.target.prototype)}}class we extends Error{constructor(b){super(b),Object.setPrototypeOf(this,new.target.prototype)}}class Ue extends Error{constructor(b,C){super(C),this.status=b,Object.setPrototypeOf(this,new.target.prototype)}}const qe=function(E,b,C,D,I){const ne=ze.createXHR();ne.open("POST",C.endpoint,!0),ne.setRequestHeader("Content-Type","application/x-www-form-urlencoded");for(var me in C.headers)ne.setRequestHeader(me,C.headers[me]);if(C.headersProvider!=null){let $e=C.headersProvider();for(var me in $e)ne.setRequestHeader(me,$e[me])}return ne.onreadystatechange=function(){if(ne.readyState===4)if(ne.status===200){let $e,Ke=!1;try{$e=JSON.parse(ne.responseText),Ke=!0}catch{I(new Ue(200,`JSON returned from ${D.toString()} endpoint was invalid, yet status code was 200. Data was: ${ne.responseText}`),null)}Ke&&I(null,$e)}else{let $e="";switch(D){case k.UserAuthentication:$e=$.buildLogSuffix("authenticationEndpoint");break;case k.ChannelAuthorization:$e=`Clients must be authorized to join private or presence channels. ${$.buildLogSuffix("authorizationEndpoint")}`;break}I(new Ue(ne.status,`Unable to retrieve auth string from ${D.toString()} endpoint - received status: ${ne.status} from ${C.endpoint}. ${$e}`),null)}},ne.send(b),ne};function wt(E){return H(Z(E))}var J=String.fromCharCode,fe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Le=function(E){var b=E.charCodeAt(0);return b<128?E:b<2048?J(192|b>>>6)+J(128|b&63):J(224|b>>>12&15)+J(128|b>>>6&63)+J(128|b&63)},Z=function(E){return E.replace(/[^\x00-\x7F]/g,Le)},ge=function(E){var b=[0,2,1][E.length%3],C=E.charCodeAt(0)<<16|(E.length>1?E.charCodeAt(1):0)<<8|(E.length>2?E.charCodeAt(2):0),D=[fe.charAt(C>>>18),fe.charAt(C>>>12&63),b>=2?"=":fe.charAt(C>>>6&63),b>=1?"=":fe.charAt(C&63)];return D.join("")},H=window.btoa||function(E){return E.replace(/[\s\S]{1,3}/g,ge)};class T{constructor(b,C,D,I){this.clear=C,this.timer=b(()=>{this.timer&&(this.timer=I(this.timer))},D)}isRunning(){return this.timer!==null}ensureAborted(){this.timer&&(this.clear(this.timer),this.timer=null)}}const ce=T;function de(E){window.clearTimeout(E)}function be(E){window.clearInterval(E)}class ie extends ce{constructor(b,C){super(setTimeout,de,b,function(D){return C(),null})}}class xe extends ce{constructor(b,C){super(setInterval,be,b,function(D){return C(),D})}}var _e={now(){return Date.now?Date.now():new Date().valueOf()},defer(E){return new ie(0,E)},method(E,...b){var C=Array.prototype.slice.call(arguments,1);return function(D){return D[E].apply(D,C.concat(arguments))}}};const Te=_e;function Me(E,...b){for(var C=0;C<b.length;C++){var D=b[C];for(var I in D)D[I]&&D[I].constructor&&D[I].constructor===Object?E[I]=Me(E[I]||{},D[I]):E[I]=D[I]}return E}function pt(){for(var E=["Pusher"],b=0;b<arguments.length;b++)typeof arguments[b]=="string"?E.push(arguments[b]):E.push(gn(arguments[b]));return E.join(" : ")}function Ct(E,b){var C=Array.prototype.indexOf;if(E===null)return-1;if(C&&E.indexOf===C)return E.indexOf(b);for(var D=0,I=E.length;D<I;D++)if(E[D]===b)return D;return-1}function Ot(E,b){for(var C in E)Object.prototype.hasOwnProperty.call(E,C)&&b(E[C],C,E)}function ht(E){var b=[];return Ot(E,function(C,D){b.push(D)}),b}function rn(E){var b=[];return Ot(E,function(C){b.push(C)}),b}function Kt(E,b,C){for(var D=0;D<E.length;D++)b.call(C||window,E[D],D,E)}function It(E,b){for(var C=[],D=0;D<E.length;D++)C.push(b(E[D],D,E,C));return C}function Fr(E,b){var C={};return Ot(E,function(D,I){C[I]=b(D)}),C}function hn(E,b){b=b||function(I){return!!I};for(var C=[],D=0;D<E.length;D++)b(E[D],D,E,C)&&C.push(E[D]);return C}function an(E,b){var C={};return Ot(E,function(D,I){(b&&b(D,I,E,C)||D)&&(C[I]=D)}),C}function pn(E){var b=[];return Ot(E,function(C,D){b.push([D,C])}),b}function Wn(E,b){for(var C=0;C<E.length;C++)if(b(E[C],C,E))return!0;return!1}function Vr(E,b){for(var C=0;C<E.length;C++)if(!b(E[C],C,E))return!1;return!0}function qt(E){return Fr(E,function(b){return typeof b=="object"&&(b=gn(b)),encodeURIComponent(wt(b.toString()))})}function ki(E){var b=an(E,function(D){return D!==void 0}),C=It(pn(qt(b)),Te.method("join","=")).join("&");return C}function la(E){var b=[],C=[];return(function D(I,ne){var me,$e,Ke;switch(typeof I){case"object":if(!I)return null;for(me=0;me<b.length;me+=1)if(b[me]===I)return{$ref:C[me]};if(b.push(I),C.push(ne),Object.prototype.toString.apply(I)==="[object Array]")for(Ke=[],me=0;me<I.length;me+=1)Ke[me]=D(I[me],ne+"["+me+"]");else{Ke={};for($e in I)Object.prototype.hasOwnProperty.call(I,$e)&&(Ke[$e]=D(I[$e],ne+"["+JSON.stringify($e)+"]"))}return Ke;case"number":case"string":case"boolean":return I}})(E,"$")}function gn(E){try{return JSON.stringify(E)}catch{return JSON.stringify(la(E))}}class Dn{constructor(){this.globalLog=b=>{window.console&&window.console.log&&window.console.log(b)}}debug(...b){this.log(this.globalLog,b)}warn(...b){this.log(this.globalLogWarn,b)}error(...b){this.log(this.globalLogError,b)}globalLogWarn(b){window.console&&window.console.warn?window.console.warn(b):this.globalLog(b)}globalLogError(b){window.console&&window.console.error?window.console.error(b):this.globalLogWarn(b)}log(b,...C){var D=pt.apply(this,arguments);Ls.log?Ls.log(D):Ls.logToConsole&&b.bind(this)(D)}}const nt=new Dn;var In=function(E,b,C,D,I){(C.headers!==void 0||C.headersProvider!=null)&&nt.warn(`To send headers with the ${D.toString()} request, you must use AJAX, rather than JSONP.`);var ne=E.nextAuthCallbackID.toString();E.nextAuthCallbackID++;var me=E.getDocument(),$e=me.createElement("script");E.auth_callbacks[ne]=function(gt){I(null,gt)};var Ke="Pusher.auth_callbacks['"+ne+"']";$e.src=C.endpoint+"?callback="+encodeURIComponent(Ke)+"&"+b;var ct=me.getElementsByTagName("head")[0]||me.documentElement;ct.insertBefore($e,ct.firstChild)};const mn=In;class ca{constructor(b){this.src=b}send(b){var C=this,D="Error loading "+C.src;C.script=document.createElement("script"),C.script.id=b.id,C.script.src=C.src,C.script.type="text/javascript",C.script.charset="UTF-8",C.script.addEventListener?(C.script.onerror=function(){b.callback(D)},C.script.onload=function(){b.callback(null)}):C.script.onreadystatechange=function(){(C.script.readyState==="loaded"||C.script.readyState==="complete")&&b.callback(null)},C.script.async===void 0&&document.attachEvent&&/opera/i.test(navigator.userAgent)?(C.errorScript=document.createElement("script"),C.errorScript.id=b.id+"_error",C.errorScript.text=b.name+"('"+D+"');",C.script.async=C.errorScript.async=!1):C.script.async=!0;var I=document.getElementsByTagName("head")[0];I.insertBefore(C.script,I.firstChild),C.errorScript&&I.insertBefore(C.errorScript,C.script.nextSibling)}cleanup(){this.script&&(this.script.onload=this.script.onerror=null,this.script.onreadystatechange=null),this.script&&this.script.parentNode&&this.script.parentNode.removeChild(this.script),this.errorScript&&this.errorScript.parentNode&&this.errorScript.parentNode.removeChild(this.errorScript),this.script=null,this.errorScript=null}}class lr{constructor(b,C){this.url=b,this.data=C}send(b){if(!this.request){var C=ki(this.data),D=this.url+"/"+b.number+"?"+C;this.request=ze.createScriptRequest(D),this.request.send(b)}}cleanup(){this.request&&this.request.cleanup()}}var sn=function(E,b){return function(C,D){var I="http"+(b?"s":"")+"://",ne=I+(E.host||E.options.host)+E.options.path,me=ze.createJSONPRequest(ne,C),$e=ze.ScriptReceivers.create(function(Ke,ct){m.remove($e),me.cleanup(),ct&&ct.host&&(E.host=ct.host),D&&D(Ke,ct)});me.send($e)}},_n={name:"jsonp",getAgent:sn};const on=_n;function F(E,b,C){var D=E+(b.useTLS?"s":""),I=b.useTLS?b.hostTLS:b.hostNonTLS;return D+"://"+I+C}function se(E,b){var C="/app/"+E,D="?protocol="+S.PROTOCOL+"&client=js&version="+S.VERSION+(b?"&"+b:"");return C+D}var ue={getInitial:function(E,b){var C=(b.httpPath||"")+se(E,"flash=false");return F("ws",b,C)}},ee={getInitial:function(E,b){var C=(b.httpPath||"/pusher")+se(E);return F("http",b,C)}},ve={getInitial:function(E,b){return F("http",b,b.httpPath||"/pusher")},getPath:function(E,b){return se(E)}};class he{constructor(){this._callbacks={}}get(b){return this._callbacks[Ee(b)]}add(b,C,D){var I=Ee(b);this._callbacks[I]=this._callbacks[I]||[],this._callbacks[I].push({fn:C,context:D})}remove(b,C,D){if(!b&&!C&&!D){this._callbacks={};return}var I=b?[Ee(b)]:ht(this._callbacks);C||D?this.removeCallback(I,C,D):this.removeAllCallbacks(I)}removeCallback(b,C,D){Kt(b,function(I){this._callbacks[I]=hn(this._callbacks[I]||[],function(ne){return C&&C!==ne.fn||D&&D!==ne.context}),this._callbacks[I].length===0&&delete this._callbacks[I]},this)}removeAllCallbacks(b){Kt(b,function(C){delete this._callbacks[C]},this)}}function Ee(E){return"_"+E}class Ae{constructor(b){this.callbacks=new he,this.global_callbacks=[],this.failThrough=b}bind(b,C,D){return this.callbacks.add(b,C,D),this}bind_global(b){return this.global_callbacks.push(b),this}unbind(b,C,D){return this.callbacks.remove(b,C,D),this}unbind_global(b){return b?(this.global_callbacks=hn(this.global_callbacks||[],C=>C!==b),this):(this.global_callbacks=[],this)}unbind_all(){return this.unbind(),this.unbind_global(),this}emit(b,C,D){for(var I=0;I<this.global_callbacks.length;I++)this.global_callbacks[I](b,C);var ne=this.callbacks.get(b),me=[];if(D?me.push(C,D):C&&me.push(C),ne&&ne.length>0)for(var I=0;I<ne.length;I++)ne[I].fn.apply(ne[I].context||window,me);else this.failThrough&&this.failThrough(b,C);return this}}class Ve extends Ae{constructor(b,C,D,I,ne){super(),this.initialize=ze.transportConnectionInitializer,this.hooks=b,this.name=C,this.priority=D,this.key=I,this.options=ne,this.state="new",this.timeline=ne.timeline,this.activityTimeout=ne.activityTimeout,this.id=this.timeline.generateUniqueID()}handlesActivityChecks(){return!!this.hooks.handlesActivityChecks}supportsPing(){return!!this.hooks.supportsPing}connect(){if(this.socket||this.state!=="initialized")return!1;var b=this.hooks.urls.getInitial(this.key,this.options);try{this.socket=this.hooks.getSocket(b,this.options)}catch(C){return Te.defer(()=>{this.onError(C),this.changeState("closed")}),!1}return this.bindListeners(),nt.debug("Connecting",{transport:this.name,url:b}),this.changeState("connecting"),!0}close(){return this.socket?(this.socket.close(),!0):!1}send(b){return this.state==="open"?(Te.defer(()=>{this.socket&&this.socket.send(b)}),!0):!1}ping(){this.state==="open"&&this.supportsPing()&&this.socket.ping()}onOpen(){this.hooks.beforeOpen&&this.hooks.beforeOpen(this.socket,this.hooks.urls.getPath(this.key,this.options)),this.changeState("open"),this.socket.onopen=void 0}onError(b){this.emit("error",{type:"WebSocketError",error:b}),this.timeline.error(this.buildTimelineMessage({error:b.toString()}))}onClose(b){b?this.changeState("closed",{code:b.code,reason:b.reason,wasClean:b.wasClean}):this.changeState("closed"),this.unbindListeners(),this.socket=void 0}onMessage(b){this.emit("message",b)}onActivity(){this.emit("activity")}bindListeners(){this.socket.onopen=()=>{this.onOpen()},this.socket.onerror=b=>{this.onError(b)},this.socket.onclose=b=>{this.onClose(b)},this.socket.onmessage=b=>{this.onMessage(b)},this.supportsPing()&&(this.socket.onactivity=()=>{this.onActivity()})}unbindListeners(){this.socket&&(this.socket.onopen=void 0,this.socket.onerror=void 0,this.socket.onclose=void 0,this.socket.onmessage=void 0,this.supportsPing()&&(this.socket.onactivity=void 0))}changeState(b,C){this.state=b,this.timeline.info(this.buildTimelineMessage({state:b,params:C})),this.emit(b,C)}buildTimelineMessage(b){return Me({cid:this.id},b)}}class ke{constructor(b){this.hooks=b}isSupported(b){return this.hooks.isSupported(b)}createConnection(b,C,D,I){return new Ve(this.hooks,b,C,D,I)}}var Ne=new ke({urls:ue,handlesActivityChecks:!1,supportsPing:!1,isInitialized:function(){return!!ze.getWebSocketAPI()},isSupported:function(){return!!ze.getWebSocketAPI()},getSocket:function(E){return ze.createWebSocket(E)}}),Re={urls:ee,handlesActivityChecks:!1,supportsPing:!0,isInitialized:function(){return!0}},et=Me({getSocket:function(E){return ze.HTTPFactory.createStreamingSocket(E)}},Re),He=Me({getSocket:function(E){return ze.HTTPFactory.createPollingSocket(E)}},Re),Ge={isSupported:function(){return ze.isXHRSupported()}},Ce=new ke(Me({},et,Ge)),je=new ke(Me({},He,Ge)),tt={ws:Ne,xhr_streaming:Ce,xhr_polling:je};const At=tt;var Mt=new ke({file:"sockjs",urls:ve,handlesActivityChecks:!0,supportsPing:!1,isSupported:function(){return!0},isInitialized:function(){return window.SockJS!==void 0},getSocket:function(E,b){return new window.SockJS(E,null,{js_path:x.getPath("sockjs",{useTLS:b.useTLS}),ignore_null_origin:b.ignoreNullOrigin})},beforeOpen:function(E,b){E.send(JSON.stringify({path:b}))}}),On={isSupported:function(E){var b=ze.isXDRSupported(E.useTLS);return b}},jt=new ke(Me({},et,On)),Ht=new ke(Me({},He,On));At.xdr_streaming=jt,At.xdr_polling=Ht,At.sockjs=Mt;const An=At;class za extends Ae{constructor(){super();var b=this;window.addEventListener!==void 0&&(window.addEventListener("online",function(){b.emit("online")},!1),window.addEventListener("offline",function(){b.emit("offline")},!1))}isOnline(){return window.navigator.onLine===void 0?!0:window.navigator.onLine}}var Ko=new za;class ih{constructor(b,C,D){this.manager=b,this.transport=C,this.minPingDelay=D.minPingDelay,this.maxPingDelay=D.maxPingDelay,this.pingDelay=void 0}createConnection(b,C,D,I){I=Me({},I,{activityTimeout:this.pingDelay});var ne=this.transport.createConnection(b,C,D,I),me=null,$e=function(){ne.unbind("open",$e),ne.bind("closed",Ke),me=Te.now()},Ke=ct=>{if(ne.unbind("closed",Ke),ct.code===1002||ct.code===1003)this.manager.reportDeath();else if(!ct.wasClean&&me){var gt=Te.now()-me;gt<2*this.maxPingDelay&&(this.manager.reportDeath(),this.pingDelay=Math.max(gt/2,this.minPingDelay))}};return ne.bind("open",$e),ne}isSupported(b){return this.manager.isAlive()&&this.transport.isSupported(b)}}const qc={decodeMessage:function(E){try{var b=JSON.parse(E.data),C=b.data;if(typeof C=="string")try{C=JSON.parse(b.data)}catch{}var D={event:b.event,channel:b.channel,data:C};return b.user_id&&(D.user_id=b.user_id),D}catch(I){throw{type:"MessageParseError",error:I,data:E.data}}},encodeMessage:function(E){return JSON.stringify(E)},processHandshake:function(E){var b=qc.decodeMessage(E);if(b.event==="pusher:connection_established"){if(!b.data.activity_timeout)throw"No activity timeout specified in handshake";return{action:"connected",id:b.data.socket_id,activityTimeout:b.data.activity_timeout*1e3}}else{if(b.event==="pusher:error")return{action:this.getCloseAction(b.data),error:this.getCloseError(b.data)};throw"Invalid handshake"}},getCloseAction:function(E){return E.code<4e3?E.code>=1002&&E.code<=1004?"backoff":null:E.code===4e3?"tls_only":E.code<4100?"refused":E.code<4200?"backoff":E.code<4300?"retry":"refused"},getCloseError:function(E){return E.code!==1e3&&E.code!==1001?{type:"PusherError",data:{code:E.code,message:E.reason||E.message}}:null}},Kr=qc;class Ri extends Ae{constructor(b,C){super(),this.id=b,this.transport=C,this.activityTimeout=C.activityTimeout,this.bindListeners()}handlesActivityChecks(){return this.transport.handlesActivityChecks()}send(b){return this.transport.send(b)}send_event(b,C,D){var I={event:b,data:C};return D&&(I.channel=D),nt.debug("Event sent",I),this.send(Kr.encodeMessage(I))}ping(){this.transport.supportsPing()?this.transport.ping():this.send_event("pusher:ping",{})}close(){this.transport.close()}bindListeners(){var b={message:D=>{var I;try{I=Kr.decodeMessage(D)}catch(ne){this.emit("error",{type:"MessageParseError",error:ne,data:D.data})}if(I!==void 0){switch(nt.debug("Event recd",I),I.event){case"pusher:error":this.emit("error",{type:"PusherError",data:I.data});break;case"pusher:ping":this.emit("ping");break;case"pusher:pong":this.emit("pong");break}this.emit("message",I)}},activity:()=>{this.emit("activity")},error:D=>{this.emit("error",D)},closed:D=>{C(),D&&D.code&&this.handleCloseEvent(D),this.transport=null,this.emit("closed")}},C=()=>{Ot(b,(D,I)=>{this.transport.unbind(I,D)})};Ot(b,(D,I)=>{this.transport.bind(I,D)})}handleCloseEvent(b){var C=Kr.getCloseAction(b),D=Kr.getCloseError(b);D&&this.emit("error",D),C&&this.emit(C,{action:C,error:D})}}class Wo{constructor(b,C){this.transport=b,this.callback=C,this.bindListeners()}close(){this.unbindListeners(),this.transport.close()}bindListeners(){this.onMessage=b=>{this.unbindListeners();var C;try{C=Kr.processHandshake(b)}catch(D){this.finish("error",{error:D}),this.transport.close();return}C.action==="connected"?this.finish("connected",{connection:new Ri(C.id,this.transport),activityTimeout:C.activityTimeout}):(this.finish(C.action,{error:C.error}),this.transport.close())},this.onClosed=b=>{this.unbindListeners();var C=Kr.getCloseAction(b)||"backoff",D=Kr.getCloseError(b);this.finish(C,{error:D})},this.transport.bind("message",this.onMessage),this.transport.bind("closed",this.onClosed)}unbindListeners(){this.transport.unbind("message",this.onMessage),this.transport.unbind("closed",this.onClosed)}finish(b,C){this.callback(Me({transport:this.transport,action:b},C))}}class Ua{constructor(b,C){this.timeline=b,this.options=C||{}}send(b,C){this.timeline.isEmpty()||this.timeline.send(ze.TimelineTransport.getAgent(this,b),C)}}class Wr extends Ae{constructor(b,C){super(function(D,I){nt.debug("No callbacks on "+b+" for "+D)}),this.name=b,this.pusher=C,this.subscribed=!1,this.subscriptionPending=!1,this.subscriptionCancelled=!1}authorize(b,C){return C(null,{auth:""})}trigger(b,C){if(b.indexOf("client-")!==0)throw new O("Event '"+b+"' does not start with 'client-'");if(!this.subscribed){var D=$.buildLogSuffix("triggeringClientEvents");nt.warn(`Client event triggered before channel 'subscription_succeeded' event . ${D}`)}return this.pusher.send_event(b,C,this.name)}disconnect(){this.subscribed=!1,this.subscriptionPending=!1}handleEvent(b){var C=b.event,D=b.data;if(C==="pusher_internal:subscription_succeeded")this.handleSubscriptionSucceededEvent(b);else if(C==="pusher_internal:subscription_count")this.handleSubscriptionCountEvent(b);else if(C.indexOf("pusher_internal:")!==0){var I={};this.emit(C,D,I)}}handleSubscriptionSucceededEvent(b){this.subscriptionPending=!1,this.subscribed=!0,this.subscriptionCancelled?this.pusher.unsubscribe(this.name):this.emit("pusher:subscription_succeeded",b.data)}handleSubscriptionCountEvent(b){b.data.subscription_count&&(this.subscriptionCount=b.data.subscription_count),this.emit("pusher:subscription_count",b.data)}subscribe(){this.subscribed||(this.subscriptionPending=!0,this.subscriptionCancelled=!1,this.authorize(this.pusher.connection.socket_id,(b,C)=>{b?(this.subscriptionPending=!1,nt.error(b.toString()),this.emit("pusher:subscription_error",Object.assign({},{type:"AuthError",error:b.message},b instanceof Ue?{status:b.status}:{}))):this.pusher.send_event("pusher:subscribe",{auth:C.auth,channel_data:C.channel_data,channel:this.name})}))}unsubscribe(){this.subscribed=!1,this.pusher.send_event("pusher:unsubscribe",{channel:this.name})}cancelSubscription(){this.subscriptionCancelled=!0}reinstateSubscription(){this.subscriptionCancelled=!1}}class ua extends Wr{authorize(b,C){return this.pusher.config.channelAuthorizer({channelName:this.name,socketId:b},C)}}class Pa{constructor(){this.reset()}get(b){return Object.prototype.hasOwnProperty.call(this.members,b)?{id:b,info:this.members[b]}:null}each(b){Ot(this.members,(C,D)=>{b(this.get(D))})}setMyID(b){this.myID=b}onSubscription(b){this.members=b.presence.hash,this.count=b.presence.count,this.me=this.get(this.myID)}addMember(b){return this.get(b.user_id)===null&&this.count++,this.members[b.user_id]=b.user_info,this.get(b.user_id)}removeMember(b){var C=this.get(b.user_id);return C&&(delete this.members[b.user_id],this.count--),C}reset(){this.members={},this.count=0,this.myID=null,this.me=null}}var Jt=function(E,b,C,D){function I(ne){return ne instanceof C?ne:new C(function(me){me(ne)})}return new(C||(C=Promise))(function(ne,me){function $e(gt){try{ct(D.next(gt))}catch(zt){me(zt)}}function Ke(gt){try{ct(D.throw(gt))}catch(zt){me(zt)}}function ct(gt){gt.done?ne(gt.value):I(gt.value).then($e,Ke)}ct((D=D.apply(E,b||[])).next())})};class Gc extends ua{constructor(b,C){super(b,C),this.members=new Pa}authorize(b,C){super.authorize(b,(D,I)=>Jt(this,void 0,void 0,function*(){if(!D)if(I=I,I.channel_data!=null){var ne=JSON.parse(I.channel_data);this.members.setMyID(ne.user_id)}else if(yield this.pusher.user.signinDonePromise,this.pusher.user.user_data!=null)this.members.setMyID(this.pusher.user.user_data.id);else{let me=$.buildLogSuffix("authorizationEndpoint");nt.error(`Invalid auth response for channel '${this.name}', expected 'channel_data' field. ${me}, or the user should be signed in.`),C("Invalid auth response");return}C(D,I)}))}handleEvent(b){var C=b.event;if(C.indexOf("pusher_internal:")===0)this.handleInternalEvent(b);else{var D=b.data,I={};b.user_id&&(I.user_id=b.user_id),this.emit(C,D,I)}}handleInternalEvent(b){var C=b.event,D=b.data;switch(C){case"pusher_internal:subscription_succeeded":this.handleSubscriptionSucceededEvent(b);break;case"pusher_internal:subscription_count":this.handleSubscriptionCountEvent(b);break;case"pusher_internal:member_added":var I=this.members.addMember(D);this.emit("pusher:member_added",I);break;case"pusher_internal:member_removed":var ne=this.members.removeMember(D);ne&&this.emit("pusher:member_removed",ne);break}}handleSubscriptionSucceededEvent(b){this.subscriptionPending=!1,this.subscribed=!0,this.subscriptionCancelled?this.pusher.unsubscribe(this.name):(this.members.onSubscription(b.data),this.emit("pusher:subscription_succeeded",this.members))}disconnect(){this.members.reset(),super.disconnect()}}var Fc=f(978),Rr=f(594);class Ba extends ua{constructor(b,C,D){super(b,C),this.key=null,this.nacl=D}authorize(b,C){super.authorize(b,(D,I)=>{if(D){C(D,I);return}let ne=I.shared_secret;if(!ne){C(new Error(`No shared_secret key in auth payload for encrypted channel: ${this.name}`),null);return}this.key=(0,Rr.decode)(ne),delete I.shared_secret,C(null,I)})}trigger(b,C){throw new pe("Client events are not currently supported for encrypted channels")}handleEvent(b){var C=b.event,D=b.data;if(C.indexOf("pusher_internal:")===0||C.indexOf("pusher:")===0){super.handleEvent(b);return}this.handleEncryptedEvent(C,D)}handleEncryptedEvent(b,C){if(!this.key){nt.debug("Received encrypted event before key has been retrieved from the authEndpoint");return}if(!C.ciphertext||!C.nonce){nt.error("Unexpected format for encrypted event, expected object with `ciphertext` and `nonce` fields, got: "+C);return}let D=(0,Rr.decode)(C.ciphertext);if(D.length<this.nacl.secretbox.overheadLength){nt.error(`Expected encrypted event ciphertext length to be ${this.nacl.secretbox.overheadLength}, got: ${D.length}`);return}let I=(0,Rr.decode)(C.nonce);if(I.length<this.nacl.secretbox.nonceLength){nt.error(`Expected encrypted event nonce length to be ${this.nacl.secretbox.nonceLength}, got: ${I.length}`);return}let ne=this.nacl.secretbox.open(D,I,this.key);if(ne===null){nt.debug("Failed to decrypt an event, probably because it was encrypted with a different key. Fetching a new key from the authEndpoint..."),this.authorize(this.pusher.connection.socket_id,(me,$e)=>{if(me){nt.error(`Failed to make a request to the authEndpoint: ${$e}. Unable to fetch new key, so dropping encrypted event`);return}if(ne=this.nacl.secretbox.open(D,I,this.key),ne===null){nt.error("Failed to decrypt event with new key. Dropping encrypted event");return}this.emit(b,this.getDataToEmit(ne))});return}this.emit(b,this.getDataToEmit(ne))}getDataToEmit(b){let C=(0,Fc.D4)(b);try{return JSON.parse(C)}catch{return C}}}class sh extends Ae{constructor(b,C){super(),this.state="initialized",this.connection=null,this.key=b,this.options=C,this.timeline=this.options.timeline,this.usingTLS=this.options.useTLS,this.errorCallbacks=this.buildErrorCallbacks(),this.connectionCallbacks=this.buildConnectionCallbacks(this.errorCallbacks),this.handshakeCallbacks=this.buildHandshakeCallbacks(this.errorCallbacks);var D=ze.getNetwork();D.bind("online",()=>{this.timeline.info({netinfo:"online"}),(this.state==="connecting"||this.state==="unavailable")&&this.retryIn(0)}),D.bind("offline",()=>{this.timeline.info({netinfo:"offline"}),this.connection&&this.sendActivityCheck()}),this.updateStrategy()}switchCluster(b){this.key=b,this.updateStrategy(),this.retryIn(0)}connect(){if(!(this.connection||this.runner)){if(!this.strategy.isSupported()){this.updateState("failed");return}this.updateState("connecting"),this.startConnecting(),this.setUnavailableTimer()}}send(b){return this.connection?this.connection.send(b):!1}send_event(b,C,D){return this.connection?this.connection.send_event(b,C,D):!1}disconnect(){this.disconnectInternally(),this.updateState("disconnected")}isUsingTLS(){return this.usingTLS}startConnecting(){var b=(C,D)=>{C?this.runner=this.strategy.connect(0,b):D.action==="error"?(this.emit("error",{type:"HandshakeError",error:D.error}),this.timeline.error({handshakeError:D.error})):(this.abortConnecting(),this.handshakeCallbacks[D.action](D))};this.runner=this.strategy.connect(0,b)}abortConnecting(){this.runner&&(this.runner.abort(),this.runner=null)}disconnectInternally(){if(this.abortConnecting(),this.clearRetryTimer(),this.clearUnavailableTimer(),this.connection){var b=this.abandonConnection();b.close()}}updateStrategy(){this.strategy=this.options.getStrategy({key:this.key,timeline:this.timeline,useTLS:this.usingTLS})}retryIn(b){this.timeline.info({action:"retry",delay:b}),b>0&&this.emit("connecting_in",Math.round(b/1e3)),this.retryTimer=new ie(b||0,()=>{this.disconnectInternally(),this.connect()})}clearRetryTimer(){this.retryTimer&&(this.retryTimer.ensureAborted(),this.retryTimer=null)}setUnavailableTimer(){this.unavailableTimer=new ie(this.options.unavailableTimeout,()=>{this.updateState("unavailable")})}clearUnavailableTimer(){this.unavailableTimer&&this.unavailableTimer.ensureAborted()}sendActivityCheck(){this.stopActivityCheck(),this.connection.ping(),this.activityTimer=new ie(this.options.pongTimeout,()=>{this.timeline.error({pong_timed_out:this.options.pongTimeout}),this.retryIn(0)})}resetActivityCheck(){this.stopActivityCheck(),this.connection&&!this.connection.handlesActivityChecks()&&(this.activityTimer=new ie(this.activityTimeout,()=>{this.sendActivityCheck()}))}stopActivityCheck(){this.activityTimer&&this.activityTimer.ensureAborted()}buildConnectionCallbacks(b){return Me({},b,{message:C=>{this.resetActivityCheck(),this.emit("message",C)},ping:()=>{this.send_event("pusher:pong",{})},activity:()=>{this.resetActivityCheck()},error:C=>{this.emit("error",C)},closed:()=>{this.abandonConnection(),this.shouldRetry()&&this.retryIn(1e3)}})}buildHandshakeCallbacks(b){return Me({},b,{connected:C=>{this.activityTimeout=Math.min(this.options.activityTimeout,C.activityTimeout,C.connection.activityTimeout||1/0),this.clearUnavailableTimer(),this.setConnection(C.connection),this.socket_id=this.connection.id,this.updateState("connected",{socket_id:this.socket_id})}})}buildErrorCallbacks(){let b=C=>D=>{D.error&&this.emit("error",{type:"WebSocketError",error:D.error}),C(D)};return{tls_only:b(()=>{this.usingTLS=!0,this.updateStrategy(),this.retryIn(0)}),refused:b(()=>{this.disconnect()}),backoff:b(()=>{this.retryIn(1e3)}),retry:b(()=>{this.retryIn(0)})}}setConnection(b){this.connection=b;for(var C in this.connectionCallbacks)this.connection.bind(C,this.connectionCallbacks[C]);this.resetActivityCheck()}abandonConnection(){if(this.connection){this.stopActivityCheck();for(var b in this.connectionCallbacks)this.connection.unbind(b,this.connectionCallbacks[b]);var C=this.connection;return this.connection=null,C}}updateState(b,C){var D=this.state;if(this.state=b,D!==b){var I=b;I==="connected"&&(I+=" with new socket ID "+C.socket_id),nt.debug("State changed",D+" -> "+I),this.timeline.info({state:b,params:C}),this.emit("state_change",{previous:D,current:b}),this.emit(b,C)}}shouldRetry(){return this.state==="connecting"||this.state==="connected"}}class Vc{constructor(){this.channels={}}add(b,C){return this.channels[b]||(this.channels[b]=Kc(b,C)),this.channels[b]}all(){return rn(this.channels)}find(b){return this.channels[b]}remove(b){var C=this.channels[b];return delete this.channels[b],C}disconnect(){Ot(this.channels,function(b){b.disconnect()})}}function Kc(E,b){if(E.indexOf("private-encrypted-")===0){if(b.config.nacl)return jn.createEncryptedChannel(E,b,b.config.nacl);let C="Tried to subscribe to a private-encrypted- channel but no nacl implementation available",D=$.buildLogSuffix("encryptedChannelSupport");throw new pe(`${C}. ${D}`)}else{if(E.indexOf("private-")===0)return jn.createPrivateChannel(E,b);if(E.indexOf("presence-")===0)return jn.createPresenceChannel(E,b);if(E.indexOf("#")===0)throw new P('Cannot create a channel with name "'+E+'".');return jn.createChannel(E,b)}}var oh={createChannels(){return new Vc},createConnectionManager(E,b){return new sh(E,b)},createChannel(E,b){return new Wr(E,b)},createPrivateChannel(E,b){return new ua(E,b)},createPresenceChannel(E,b){return new Gc(E,b)},createEncryptedChannel(E,b,C){return new Ba(E,b,C)},createTimelineSender(E,b){return new Ua(E,b)},createHandshake(E,b){return new Wo(E,b)},createAssistantToTheTransportManager(E,b,C){return new ih(E,b,C)}};const jn=oh;class Di{constructor(b){this.options=b||{},this.livesLeft=this.options.lives||1/0}getAssistant(b){return jn.createAssistantToTheTransportManager(this,b,{minPingDelay:this.options.minPingDelay,maxPingDelay:this.options.maxPingDelay})}isAlive(){return this.livesLeft>0}reportDeath(){this.livesLeft-=1}}class yn{constructor(b,C){this.strategies=b,this.loop=!!C.loop,this.failFast=!!C.failFast,this.timeout=C.timeout,this.timeoutLimit=C.timeoutLimit}isSupported(){return Wn(this.strategies,Te.method("isSupported"))}connect(b,C){var D=this.strategies,I=0,ne=this.timeout,me=null,$e=(Ke,ct)=>{ct?C(null,ct):(I=I+1,this.loop&&(I=I%D.length),I<D.length?(ne&&(ne=ne*2,this.timeoutLimit&&(ne=Math.min(ne,this.timeoutLimit))),me=this.tryStrategy(D[I],b,{timeout:ne,failFast:this.failFast},$e)):C(!0))};return me=this.tryStrategy(D[I],b,{timeout:ne,failFast:this.failFast},$e),{abort:function(){me.abort()},forceMinPriority:function(Ke){b=Ke,me&&me.forceMinPriority(Ke)}}}tryStrategy(b,C,D,I){var ne=null,me=null;return D.timeout>0&&(ne=new ie(D.timeout,function(){me.abort(),I(!0)})),me=b.connect(C,function($e,Ke){$e&&ne&&ne.isRunning()&&!D.failFast||(ne&&ne.ensureAborted(),I($e,Ke))}),{abort:function(){ne&&ne.ensureAborted(),me.abort()},forceMinPriority:function($e){me.forceMinPriority($e)}}}}class xn{constructor(b){this.strategies=b}isSupported(){return Wn(this.strategies,Te.method("isSupported"))}connect(b,C){return Wc(this.strategies,b,function(D,I){return function(ne,me){if(I[D].error=ne,ne){lh(I)&&C(!0);return}Kt(I,function($e){$e.forceMinPriority(me.transport.priority)}),C(null,me)}})}}function Wc(E,b,C){var D=It(E,function(I,ne,me,$e){return I.connect(b,C(ne,$e))});return{abort:function(){Kt(D,Yo)},forceMinPriority:function(I){Kt(D,function(ne){ne.forceMinPriority(I)})}}}function lh(E){return Vr(E,function(b){return!!b.error})}function Yo(E){!E.error&&!E.aborted&&(E.abort(),E.aborted=!0)}class Yc{constructor(b,C,D){this.strategy=b,this.transports=C,this.ttl=D.ttl||18e5,this.usingTLS=D.useTLS,this.timeline=D.timeline}isSupported(){return this.strategy.isSupported()}connect(b,C){var D=this.usingTLS,I=ch(D),ne=I&&I.cacheSkipCount?I.cacheSkipCount:0,me=[this.strategy];if(I&&I.timestamp+this.ttl>=Te.now()){var $e=this.transports[I.transport];$e&&(["ws","wss"].includes(I.transport)||ne>3?(this.timeline.info({cached:!0,transport:I.transport,latency:I.latency}),me.push(new yn([$e],{timeout:I.latency*2+1e3,failFast:!0}))):ne++)}var Ke=Te.now(),ct=me.pop().connect(b,function gt(zt,$r){zt?(Ts(D),me.length>0?(Ke=Te.now(),ct=me.pop().connect(b,gt)):C(zt)):(Hn(D,$r.transport.name,Te.now()-Ke,ne),C(null,$r))});return{abort:function(){ct.abort()},forceMinPriority:function(gt){b=gt,ct&&ct.forceMinPriority(gt)}}}}function qa(E){return"pusherTransport"+(E?"TLS":"NonTLS")}function ch(E){var b=ze.getLocalStorage();if(b)try{var C=b[qa(E)];if(C)return JSON.parse(C)}catch{Ts(E)}return null}function Hn(E,b,C,D){var I=ze.getLocalStorage();if(I)try{I[qa(E)]=gn({timestamp:Te.now(),transport:b,latency:C,cacheSkipCount:D})}catch{}}function Ts(E){var b=ze.getLocalStorage();if(b)try{delete b[qa(E)]}catch{}}class Oi{constructor(b,{delay:C}){this.strategy=b,this.options={delay:C}}isSupported(){return this.strategy.isSupported()}connect(b,C){var D=this.strategy,I,ne=new ie(this.options.delay,function(){I=D.connect(b,C)});return{abort:function(){ne.ensureAborted(),I&&I.abort()},forceMinPriority:function(me){b=me,I&&I.forceMinPriority(me)}}}}class da{constructor(b,C,D){this.test=b,this.trueBranch=C,this.falseBranch=D}isSupported(){var b=this.test()?this.trueBranch:this.falseBranch;return b.isSupported()}connect(b,C){var D=this.test()?this.trueBranch:this.falseBranch;return D.connect(b,C)}}class Ga{constructor(b){this.strategy=b}isSupported(){return this.strategy.isSupported()}connect(b,C){var D=this.strategy.connect(b,function(I,ne){ne&&D.abort(),C(I,ne)});return D}}function Fa(E){return function(){return E.isSupported()}}var Xc=function(E,b,C){var D={};function I(cl,uu,du,Dh,Oh){var fu=C(E,cl,uu,du,Dh,Oh);return D[cl]=fu,fu}var ne=Object.assign({},b,{hostNonTLS:E.wsHost+":"+E.wsPort,hostTLS:E.wsHost+":"+E.wssPort,httpPath:E.wsPath}),me=Object.assign({},ne,{useTLS:!0}),$e=Object.assign({},b,{hostNonTLS:E.httpHost+":"+E.httpPort,hostTLS:E.httpHost+":"+E.httpsPort,httpPath:E.httpPath}),Ke={loop:!0,timeout:15e3,timeoutLimit:6e4},ct=new Di({minPingDelay:1e4,maxPingDelay:E.activityTimeout}),gt=new Di({lives:2,minPingDelay:1e4,maxPingDelay:E.activityTimeout}),zt=I("ws","ws",3,ne,ct),$r=I("wss","ws",3,me,ct),Th=I("sockjs","sockjs",1,$e),lu=I("xhr_streaming","xhr_streaming",1,$e,gt),kh=I("xdr_streaming","xdr_streaming",1,$e,gt),sl=I("xhr_polling","xhr_polling",1,$e),cu=I("xdr_polling","xdr_polling",1,$e),Wa=new yn([zt],Ke),ji=new yn([$r],Ke),Rh=new yn([Th],Ke),Hi=new yn([new da(Fa(lu),lu,kh)],Ke),ol=new yn([new da(Fa(sl),sl,cu)],Ke),ll=new yn([new da(Fa(Hi),new xn([Hi,new Oi(ol,{delay:4e3})]),ol)],Ke),zi=new da(Fa(ll),ll,Rh),Ui;return b.useTLS?Ui=new xn([Wa,new Oi(zi,{delay:2e3})]):Ui=new xn([Wa,new Oi(ji,{delay:2e3}),new Oi(zi,{delay:5e3})]),new Yc(new Ga(new da(Fa(zt),Ui,zi)),D,{ttl:18e5,timeline:b.timeline,useTLS:b.useTLS})};const Va=Xc;function uh(){var E=this;E.timeline.info(E.buildTimelineMessage({transport:E.name+(E.options.useTLS?"s":"")})),E.hooks.isInitialized()?E.changeState("initialized"):E.hooks.file?(E.changeState("initializing"),x.load(E.hooks.file,{useTLS:E.options.useTLS},function(b,C){E.hooks.isInitialized()?(E.changeState("initialized"),C(!0)):(b&&E.onError(b),E.onClose(),C(!1))})):E.onClose()}var Jc={getRequest:function(E){var b=new window.XDomainRequest;return b.ontimeout=function(){E.emit("error",new G),E.close()},b.onerror=function(C){E.emit("error",C),E.close()},b.onprogress=function(){b.responseText&&b.responseText.length>0&&E.onChunk(200,b.responseText)},b.onload=function(){b.responseText&&b.responseText.length>0&&E.onChunk(200,b.responseText),E.emit("finished",200),E.close()},b},abortRequest:function(E){E.ontimeout=E.onerror=E.onprogress=E.onload=null,E.abort()}};const Qc=Jc,Xo=256*1024;class dh extends Ae{constructor(b,C,D){super(),this.hooks=b,this.method=C,this.url=D}start(b){this.position=0,this.xhr=this.hooks.getRequest(this),this.unloader=()=>{this.close()},ze.addUnloadListener(this.unloader),this.xhr.open(this.method,this.url,!0),this.xhr.setRequestHeader&&this.xhr.setRequestHeader("Content-Type","application/json"),this.xhr.send(b)}close(){this.unloader&&(ze.removeUnloadListener(this.unloader),this.unloader=null),this.xhr&&(this.hooks.abortRequest(this.xhr),this.xhr=null)}onChunk(b,C){for(;;){var D=this.advanceBuffer(C);if(D)this.emit("chunk",{status:b,data:D});else break}this.isBufferTooLong(C)&&this.emit("buffer_too_long")}advanceBuffer(b){var C=b.slice(this.position),D=C.indexOf(`
|
||
`);return D!==-1?(this.position+=D+1,C.slice(0,D)):null}isBufferTooLong(b){return this.position===b.length&&b.length>Xo}}var Jo;(function(E){E[E.CONNECTING=0]="CONNECTING",E[E.OPEN=1]="OPEN",E[E.CLOSED=3]="CLOSED"})(Jo||(Jo={}));const cr=Jo;var Dr=1;class Qo{constructor(b,C){this.hooks=b,this.session=ks(1e3)+"/"+eu(8),this.location=Zo(C),this.readyState=cr.CONNECTING,this.openStream()}send(b){return this.sendRaw(JSON.stringify([b]))}ping(){this.hooks.sendHeartbeat(this)}close(b,C){this.onClose(b,C,!0)}sendRaw(b){if(this.readyState===cr.OPEN)try{return ze.createSocketRequest("POST",fa(Ka(this.location,this.session))).start(b),!0}catch{return!1}else return!1}reconnect(){this.closeStream(),this.openStream()}onClose(b,C,D){this.closeStream(),this.readyState=cr.CLOSED,this.onclose&&this.onclose({code:b,reason:C,wasClean:D})}onChunk(b){if(b.status===200){this.readyState===cr.OPEN&&this.onActivity();var C,D=b.data.slice(0,1);switch(D){case"o":C=JSON.parse(b.data.slice(1)||"{}"),this.onOpen(C);break;case"a":C=JSON.parse(b.data.slice(1)||"[]");for(var I=0;I<C.length;I++)this.onEvent(C[I]);break;case"m":C=JSON.parse(b.data.slice(1)||"null"),this.onEvent(C);break;case"h":this.hooks.onHeartbeat(this);break;case"c":C=JSON.parse(b.data.slice(1)||"[]"),this.onClose(C[0],C[1],!0);break}}}onOpen(b){this.readyState===cr.CONNECTING?(b&&b.hostname&&(this.location.base=Zc(this.location.base,b.hostname)),this.readyState=cr.OPEN,this.onopen&&this.onopen()):this.onClose(1006,"Server lost session",!0)}onEvent(b){this.readyState===cr.OPEN&&this.onmessage&&this.onmessage({data:b})}onActivity(){this.onactivity&&this.onactivity()}onError(b){this.onerror&&this.onerror(b)}openStream(){this.stream=ze.createSocketRequest("POST",fa(this.hooks.getReceiveURL(this.location,this.session))),this.stream.bind("chunk",b=>{this.onChunk(b)}),this.stream.bind("finished",b=>{this.hooks.onFinished(this,b)}),this.stream.bind("buffer_too_long",()=>{this.reconnect()});try{this.stream.start()}catch(b){Te.defer(()=>{this.onError(b),this.onClose(1006,"Could not start streaming",!1)})}}closeStream(){this.stream&&(this.stream.unbind_all(),this.stream.close(),this.stream=null)}}function Zo(E){var b=/([^\?]*)\/*(\??.*)/.exec(E);return{base:b[1],queryString:b[2]}}function Ka(E,b){return E.base+"/"+b+"/xhr_send"}function fa(E){var b=E.indexOf("?")===-1?"?":"&";return E+b+"t="+ +new Date+"&n="+Dr++}function Zc(E,b){var C=/(https?:\/\/)([^\/:]+)((\/|:)?.*)/.exec(E);return C[1]+b+C[3]}function ks(E){return ze.randomInt(E)}function eu(E){for(var b=[],C=0;C<E;C++)b.push(ks(32).toString(32));return b.join("")}const Li=Qo;var Or={getReceiveURL:function(E,b){return E.base+"/"+b+"/xhr_streaming"+E.queryString},onHeartbeat:function(E){E.sendRaw("[]")},sendHeartbeat:function(E){E.sendRaw("[]")},onFinished:function(E,b){E.onClose(1006,"Connection interrupted ("+b+")",!1)}};const el=Or;var $i={getReceiveURL:function(E,b){return E.base+"/"+b+"/xhr"+E.queryString},onHeartbeat:function(){},sendHeartbeat:function(E){E.sendRaw("[]")},onFinished:function(E,b){b===200?E.reconnect():E.onClose(1006,"Connection interrupted ("+b+")",!1)}};const Yr=$i;var tl={getRequest:function(E){var b=ze.getXHRAPI(),C=new b;return C.onreadystatechange=C.onprogress=function(){switch(C.readyState){case 3:C.responseText&&C.responseText.length>0&&E.onChunk(C.status,C.responseText);break;case 4:C.responseText&&C.responseText.length>0&&E.onChunk(C.status,C.responseText),E.emit("finished",C.status),E.close();break}},C},abortRequest:function(E){E.onreadystatechange=null,E.abort()}};const Rs=tl;var tu={createStreamingSocket(E){return this.createSocket(el,E)},createPollingSocket(E){return this.createSocket(Yr,E)},createSocket(E,b){return new Li(E,b)},createXHR(E,b){return this.createRequest(Rs,E,b)},createRequest(E,b,C){return new dh(E,b,C)}};const Mi=tu;Mi.createXDR=function(E,b){return this.createRequest(Qc,E,b)};var nu={nextAuthCallbackID:1,auth_callbacks:{},ScriptReceivers:m,DependenciesReceivers:_,getDefaultStrategy:Va,Transports:An,transportConnectionInitializer:uh,HTTPFactory:Mi,TimelineTransport:on,getXHRAPI(){return window.XMLHttpRequest},getWebSocketAPI(){return window.WebSocket||window.MozWebSocket},setup(E){window.Pusher=E;var b=()=>{this.onDocumentBody(E.ready)};window.JSON?b():x.load("json2",{},b)},getDocument(){return document},getProtocol(){return this.getDocument().location.protocol},getAuthorizers(){return{ajax:qe,jsonp:mn}},onDocumentBody(E){document.body?E():setTimeout(()=>{this.onDocumentBody(E)},0)},createJSONPRequest(E,b){return new lr(E,b)},createScriptRequest(E){return new ca(E)},getLocalStorage(){try{return window.localStorage}catch{return}},createXHR(){return this.getXHRAPI()?this.createXMLHttpRequest():this.createMicrosoftXHR()},createXMLHttpRequest(){var E=this.getXHRAPI();return new E},createMicrosoftXHR(){return new ActiveXObject("Microsoft.XMLHTTP")},getNetwork(){return Ko},createWebSocket(E){var b=this.getWebSocketAPI();return new b(E)},createSocketRequest(E,b){if(this.isXHRSupported())return this.HTTPFactory.createXHR(E,b);if(this.isXDRSupported(b.indexOf("https:")===0))return this.HTTPFactory.createXDR(E,b);throw"Cross-origin HTTP requests are not supported"},isXHRSupported(){var E=this.getXHRAPI();return!!E&&new E().withCredentials!==void 0},isXDRSupported(E){var b=E?"https:":"http:",C=this.getProtocol();return!!window.XDomainRequest&&C===b},addUnloadListener(E){window.addEventListener!==void 0?window.addEventListener("unload",E,!1):window.attachEvent!==void 0&&window.attachEvent("onunload",E)},removeUnloadListener(E){window.addEventListener!==void 0?window.removeEventListener("unload",E,!1):window.detachEvent!==void 0&&window.detachEvent("onunload",E)},randomInt(E){return Math.floor(function(){return(window.crypto||window.msCrypto).getRandomValues(new Uint32Array(1))[0]/Math.pow(2,32)}()*E)}};const ze=nu;var Lr;(function(E){E[E.ERROR=3]="ERROR",E[E.INFO=6]="INFO",E[E.DEBUG=7]="DEBUG"})(Lr||(Lr={}));const ha=Lr;class Ni{constructor(b,C,D){this.key=b,this.session=C,this.events=[],this.options=D||{},this.sent=0,this.uniqueID=0}log(b,C){b<=this.options.level&&(this.events.push(Me({},C,{timestamp:Te.now()})),this.options.limit&&this.events.length>this.options.limit&&this.events.shift())}error(b){this.log(ha.ERROR,b)}info(b){this.log(ha.INFO,b)}debug(b){this.log(ha.DEBUG,b)}isEmpty(){return this.events.length===0}send(b,C){var D=Me({session:this.session,bundle:this.sent+1,key:this.key,lib:"js",version:this.options.version,cluster:this.options.cluster,features:this.options.features,timeline:this.events},this.options.params);return this.events=[],b(D,(I,ne)=>{I||this.sent++,C&&C(I,ne)}),!0}generateUniqueID(){return this.uniqueID++,this.uniqueID}}class fh{constructor(b,C,D,I){this.name=b,this.priority=C,this.transport=D,this.options=I||{}}isSupported(){return this.transport.isSupported({useTLS:this.options.useTLS})}connect(b,C){if(this.isSupported()){if(this.priority<b)return Ds(new B,C)}else return Ds(new we,C);var D=!1,I=this.transport.createConnection(this.name,this.priority,this.options.key,this.options),ne=null,me=function(){I.unbind("initialized",me),I.connect()},$e=function(){ne=jn.createHandshake(I,function(zt){D=!0,gt(),C(null,zt)})},Ke=function(zt){gt(),C(zt)},ct=function(){gt();var zt;zt=gn(I),C(new W(zt))},gt=function(){I.unbind("initialized",me),I.unbind("open",$e),I.unbind("error",Ke),I.unbind("closed",ct)};return I.bind("initialized",me),I.bind("open",$e),I.bind("error",Ke),I.bind("closed",ct),I.initialize(),{abort:()=>{D||(gt(),ne?ne.close():I.close())},forceMinPriority:zt=>{D||this.priority<zt&&(ne?ne.close():I.close())}}}}function Ds(E,b){return Te.defer(function(){b(E)}),{abort:function(){},forceMinPriority:function(){}}}const{Transports:rl}=ze;var Ii=function(E,b,C,D,I,ne){var me=rl[C];if(!me)throw new Se(C);var $e=(!E.enabledTransports||Ct(E.enabledTransports,b)!==-1)&&(!E.disabledTransports||Ct(E.disabledTransports,b)===-1),Ke;return $e?(I=Object.assign({ignoreNullOrigin:E.ignoreNullOrigin},I),Ke=new fh(b,D,ne?ne.getAssistant(me):me,I)):Ke=Os,Ke},Os={isSupported:function(){return!1},connect:function(E,b){var C=Te.defer(function(){b(new we)});return{abort:function(){C.ensureAborted()},forceMinPriority:function(){}}}};function ru(E){if(E==null)throw"You must pass an options object";if(E.cluster==null)throw"Options object must provide a cluster";"disableStats"in E&&nt.warn("The disableStats option is deprecated in favor of enableStats")}const hh=(E,b)=>{var C="socket_id="+encodeURIComponent(E.socketId);for(var D in b.params)C+="&"+encodeURIComponent(D)+"="+encodeURIComponent(b.params[D]);if(b.paramsProvider!=null){let I=b.paramsProvider();for(var D in I)C+="&"+encodeURIComponent(D)+"="+encodeURIComponent(I[D])}return C},ph=E=>{if(typeof ze.getAuthorizers()[E.transport]>"u")throw`'${E.transport}' is not a recognized auth transport`;return(b,C)=>{const D=hh(b,E);ze.getAuthorizers()[E.transport](ze,D,E,k.UserAuthentication,C)}},al=(E,b)=>{var C="socket_id="+encodeURIComponent(E.socketId);C+="&channel_name="+encodeURIComponent(E.channelName);for(var D in b.params)C+="&"+encodeURIComponent(D)+"="+encodeURIComponent(b.params[D]);if(b.paramsProvider!=null){let I=b.paramsProvider();for(var D in I)C+="&"+encodeURIComponent(D)+"="+encodeURIComponent(I[D])}return C},gh=E=>{if(typeof ze.getAuthorizers()[E.transport]>"u")throw`'${E.transport}' is not a recognized auth transport`;return(b,C)=>{const D=al(b,E);ze.getAuthorizers()[E.transport](ze,D,E,k.ChannelAuthorization,C)}},mh=(E,b,C)=>{const D={authTransport:b.transport,authEndpoint:b.endpoint,auth:{params:b.params,headers:b.headers}};return(I,ne)=>{const me=E.channel(I.channelName);C(me,D).authorize(I.socketId,ne)}};function au(E,b){let C={activityTimeout:E.activityTimeout||S.activityTimeout,cluster:E.cluster,httpPath:E.httpPath||S.httpPath,httpPort:E.httpPort||S.httpPort,httpsPort:E.httpsPort||S.httpsPort,pongTimeout:E.pongTimeout||S.pongTimeout,statsHost:E.statsHost||S.stats_host,unavailableTimeout:E.unavailableTimeout||S.unavailableTimeout,wsPath:E.wsPath||S.wsPath,wsPort:E.wsPort||S.wsPort,wssPort:E.wssPort||S.wssPort,enableStats:Sh(E),httpHost:yh(E),useTLS:vh(E),wsHost:iu(E),userAuthenticator:il(E),channelAuthorizer:Ch(E,b)};return"disabledTransports"in E&&(C.disabledTransports=E.disabledTransports),"enabledTransports"in E&&(C.enabledTransports=E.enabledTransports),"ignoreNullOrigin"in E&&(C.ignoreNullOrigin=E.ignoreNullOrigin),"timelineParams"in E&&(C.timelineParams=E.timelineParams),"nacl"in E&&(C.nacl=E.nacl),C}function yh(E){return E.httpHost?E.httpHost:E.cluster?`sockjs-${E.cluster}.pusher.com`:S.httpHost}function iu(E){return E.wsHost?E.wsHost:bh(E.cluster)}function bh(E){return`ws-${E}.pusher.com`}function vh(E){return ze.getProtocol()==="https:"?!0:E.forceTLS!==!1}function Sh(E){return"enableStats"in E?E.enableStats:"disableStats"in E?!E.disableStats:!1}const su=E=>"customHandler"in E&&E.customHandler!=null;function il(E){const b=Object.assign(Object.assign({},S.userAuthentication),E.userAuthentication);return su(b)?b.customHandler:ph(b)}function wh(E,b){let C;if("channelAuthorization"in E)C=Object.assign(Object.assign({},S.channelAuthorization),E.channelAuthorization);else if(C={transport:E.authTransport||S.authTransport,endpoint:E.authEndpoint||S.authEndpoint},"auth"in E&&("params"in E.auth&&(C.params=E.auth.params),"headers"in E.auth&&(C.headers=E.auth.headers)),"authorizer"in E)return{customHandler:mh(b,C,E.authorizer)};return C}function Ch(E,b){const C=wh(E,b);return su(C)?C.customHandler:gh(C)}class Eh extends Ae{constructor(b){super(function(C,D){nt.debug(`No callbacks on watchlist events for ${C}`)}),this.pusher=b,this.bindWatchlistInternalEvent()}handleEvent(b){b.data.events.forEach(C=>{this.emit(C.name,C)})}bindWatchlistInternalEvent(){this.pusher.connection.bind("message",b=>{var C=b.event;C==="pusher_internal:watchlist_events"&&this.handleEvent(b)})}}function ou(){let E,b;return{promise:new Promise((D,I)=>{E=D,b=I}),resolve:E,reject:b}}const _h=ou;class Ah extends Ae{constructor(b){super(function(C,D){nt.debug("No callbacks on user for "+C)}),this.signin_requested=!1,this.user_data=null,this.serverToUserChannel=null,this.signinDonePromise=null,this._signinDoneResolve=null,this._onAuthorize=(C,D)=>{if(C){nt.warn(`Error during signin: ${C}`),this._cleanup();return}this.pusher.send_event("pusher:signin",{auth:D.auth,user_data:D.user_data})},this.pusher=b,this.pusher.connection.bind("state_change",({previous:C,current:D})=>{C!=="connected"&&D==="connected"&&this._signin(),C==="connected"&&D!=="connected"&&(this._cleanup(),this._newSigninPromiseIfNeeded())}),this.watchlist=new Eh(b),this.pusher.connection.bind("message",C=>{var D=C.event;D==="pusher:signin_success"&&this._onSigninSuccess(C.data),this.serverToUserChannel&&this.serverToUserChannel.name===C.channel&&this.serverToUserChannel.handleEvent(C)})}signin(){this.signin_requested||(this.signin_requested=!0,this._signin())}_signin(){this.signin_requested&&(this._newSigninPromiseIfNeeded(),this.pusher.connection.state==="connected"&&this.pusher.config.userAuthenticator({socketId:this.pusher.connection.socket_id},this._onAuthorize))}_onSigninSuccess(b){try{this.user_data=JSON.parse(b.user_data)}catch{nt.error(`Failed parsing user data after signin: ${b.user_data}`),this._cleanup();return}if(typeof this.user_data.id!="string"||this.user_data.id===""){nt.error(`user_data doesn't contain an id. user_data: ${this.user_data}`),this._cleanup();return}this._signinDoneResolve(),this._subscribeChannels()}_subscribeChannels(){const b=C=>{C.subscriptionPending&&C.subscriptionCancelled?C.reinstateSubscription():!C.subscriptionPending&&this.pusher.connection.state==="connected"&&C.subscribe()};this.serverToUserChannel=new Wr(`#server-to-user-${this.user_data.id}`,this.pusher),this.serverToUserChannel.bind_global((C,D)=>{C.indexOf("pusher_internal:")===0||C.indexOf("pusher:")===0||this.emit(C,D)}),b(this.serverToUserChannel)}_cleanup(){this.user_data=null,this.serverToUserChannel&&(this.serverToUserChannel.unbind_all(),this.serverToUserChannel.disconnect(),this.serverToUserChannel=null),this.signin_requested&&this._signinDoneResolve()}_newSigninPromiseIfNeeded(){if(!this.signin_requested||this.signinDonePromise&&!this.signinDonePromise.done)return;const{promise:b,resolve:C}=_h();b.done=!1;const D=()=>{b.done=!0};b.then(D).catch(D),this.signinDonePromise=b,this._signinDoneResolve=C}}class ln{static ready(){ln.isReady=!0;for(var b=0,C=ln.instances.length;b<C;b++)ln.instances[b].connect()}static getClientFeatures(){return ht(an({ws:ze.Transports.ws},function(b){return b.isSupported({})}))}constructor(b,C){xh(b),ru(C),this.key=b,this.options=C,this.config=au(this.options,this),this.channels=jn.createChannels(),this.global_emitter=new Ae,this.sessionID=ze.randomInt(1e9),this.timeline=new Ni(this.key,this.sessionID,{cluster:this.config.cluster,features:ln.getClientFeatures(),params:this.config.timelineParams||{},limit:50,level:ha.INFO,version:S.VERSION}),this.config.enableStats&&(this.timelineSender=jn.createTimelineSender(this.timeline,{host:this.config.statsHost,path:"/timeline/v2/"+ze.TimelineTransport.name}));var D=I=>ze.getDefaultStrategy(this.config,I,Ii);this.connection=jn.createConnectionManager(this.key,{getStrategy:D,timeline:this.timeline,activityTimeout:this.config.activityTimeout,pongTimeout:this.config.pongTimeout,unavailableTimeout:this.config.unavailableTimeout,useTLS:!!this.config.useTLS}),this.connection.bind("connected",()=>{this.subscribeAll(),this.timelineSender&&this.timelineSender.send(this.connection.isUsingTLS())}),this.connection.bind("message",I=>{var ne=I.event,me=ne.indexOf("pusher_internal:")===0;if(I.channel){var $e=this.channel(I.channel);$e&&$e.handleEvent(I)}me||this.global_emitter.emit(I.event,I.data)}),this.connection.bind("connecting",()=>{this.channels.disconnect()}),this.connection.bind("disconnected",()=>{this.channels.disconnect()}),this.connection.bind("error",I=>{nt.warn(I)}),ln.instances.push(this),this.timeline.info({instances:ln.instances.length}),this.user=new Ah(this),ln.isReady&&this.connect()}switchCluster(b){const{appKey:C,cluster:D}=b;this.key=C,this.options=Object.assign(Object.assign({},this.options),{cluster:D}),this.config=au(this.options,this),this.connection.switchCluster(this.key)}channel(b){return this.channels.find(b)}allChannels(){return this.channels.all()}connect(){if(this.connection.connect(),this.timelineSender&&!this.timelineSenderTimer){var b=this.connection.isUsingTLS(),C=this.timelineSender;this.timelineSenderTimer=new xe(6e4,function(){C.send(b)})}}disconnect(){this.connection.disconnect(),this.timelineSenderTimer&&(this.timelineSenderTimer.ensureAborted(),this.timelineSenderTimer=null)}bind(b,C,D){return this.global_emitter.bind(b,C,D),this}unbind(b,C,D){return this.global_emitter.unbind(b,C,D),this}bind_global(b){return this.global_emitter.bind_global(b),this}unbind_global(b){return this.global_emitter.unbind_global(b),this}unbind_all(b){return this.global_emitter.unbind_all(),this}subscribeAll(){var b;for(b in this.channels.channels)this.channels.channels.hasOwnProperty(b)&&this.subscribe(b)}subscribe(b){var C=this.channels.add(b,this);return C.subscriptionPending&&C.subscriptionCancelled?C.reinstateSubscription():!C.subscriptionPending&&this.connection.state==="connected"&&C.subscribe(),C}unsubscribe(b){var C=this.channels.find(b);C&&C.subscriptionPending?C.cancelSubscription():(C=this.channels.remove(b),C&&C.subscribed&&C.unsubscribe())}send_event(b,C,D){return this.connection.send_event(b,C,D)}shouldUseTLS(){return this.config.useTLS}signin(){this.user.signin()}}ln.instances=[],ln.isReady=!1,ln.logToConsole=!1,ln.Runtime=ze,ln.ScriptReceivers=ze.ScriptReceivers,ln.DependenciesReceivers=ze.DependenciesReceivers,ln.auth_callbacks=ze.auth_callbacks;const Ls=ln;function xh(E){if(E==null)throw"You must pass your app key when you instantiate Pusher."}ze.setup(ln)}},r={};function i(c){var d=r[c];if(d!==void 0)return d.exports;var f=r[c]={exports:{}};return n[c].call(f.exports,f,f.exports,i),f.exports}i.d=(c,d)=>{for(var f in d)i.o(d,f)&&!i.o(c,f)&&Object.defineProperty(c,f,{enumerable:!0,get:d[f]})},i.o=(c,d)=>Object.prototype.hasOwnProperty.call(c,d);var l=i(721);return l})())})(Qf)),Qf.exports}var KA=VA();const Yy=ta(KA),Pt=dt("WebSocketManager");class WA{constructor(){M(this,"echo",null);M(this,"subscriptions",new Map);M(this,"initialized",!1);M(this,"config",null)}configure(e){if(this.initialized){Pt.warn("[WebSocketManager] 이미 초기화되어 설정을 변경할 수 없습니다.");return}this.config=e,Pt.log("[WebSocketManager] 설정 완료:",{appKey:e.appKey?"***":"(없음)",host:e.host,port:e.port,scheme:e.scheme})}initialize(){if(this.initialized)return;if(!this.config||!this.config.appKey){Pt.warn("[WebSocketManager] WebSocket 설정이 없습니다. initTemplateApp에서 websocket 옵션을 전달해주세요.");return}const{appKey:e,host:n="localhost",port:r=80,scheme:i="https",authEndpoint:l="/api/broadcasting/auth"}=this.config,c=Number(r)||80,d=i==="https";Pt.log("[WebSocketManager] 연결 설정:",{host:n,port:c,scheme:i,useTLS:d,authEndpoint:l}),window.Pusher=Yy;const f=localStorage.getItem("auth_token"),h={wsHost:n,wsPort:c,wssPort:c,forceTLS:d,disableStats:!0,enabledTransports:["ws","wss"],cluster:"mt1",authEndpoint:l,auth:{headers:{Authorization:f?`Bearer ${f}`:"",Accept:"application/json"}}};Pt.log("[WebSocketManager] Pusher 옵션:",h);const m=new Yy(e,h);m.connection.bind("connecting",()=>{Pt.log("[WebSocketManager] 연결 시도 중...")}),m.connection.bind("connected",()=>{Pt.log("[WebSocketManager] 연결 성공! Socket ID:",m.connection.socket_id)}),m.connection.bind("failed",()=>{Pt.error("[WebSocketManager] 연결 실패 - WebSocket을 사용할 수 없습니다.")}),m.connection.bind("error",y=>{Pt.error("[WebSocketManager] 연결 오류:",y)}),m.connection.bind("state_change",y=>{Pt.log(`[WebSocketManager] 상태 변경: ${y.previous} → ${y.current}`)}),m.connection.bind("unavailable",()=>{Pt.error("[WebSocketManager] WebSocket 사용 불가 - 연결할 수 없습니다.")}),m.connection.bind("disconnected",()=>{Pt.warn("[WebSocketManager] 연결이 끊어졌습니다.")}),Pt.log("[WebSocketManager] 초기 연결 상태:",m.connection.state),this.echo=new FA({broadcaster:"reverb",client:m}),Pt.log("[WebSocketManager] 연결 시작 시도..."),m.connect(),window.Echo=this.echo,this.initialized=!0,Pt.log("[WebSocketManager] Echo 초기화 완료")}subscribe(e,n,r,i={}){if(this.initialize(),!this.echo)return Pt.warn("[WebSocketManager] Echo가 초기화되지 않았습니다."),"";const{channelType:l="private"}=i,c=`${e}:${n}`;if(this.subscriptions.has(c))return Pt.log(`[WebSocketManager] 이미 구독 중: ${c}`),c;let d;switch(l){case"public":d=this.echo.channel(e);break;case"presence":d=this.echo.join(e);break;default:d=this.echo.private(e)}return d.listen(`.${n}`,r),this.subscriptions.set(c,d),Pt.log(`[WebSocketManager] 구독 완료: ${c} (${l})`),c}unsubscribe(e){const n=this.subscriptions.get(e);if(!n)return;const r=e.lastIndexOf(":"),i=r>=0?e.substring(r+1):"";if(i)try{n.stopListening(`.${i}`)}catch(l){Pt.warn(`[WebSocketManager] stopListening 실패: ${e}`,l)}this.subscriptions.delete(e),Pt.log(`[WebSocketManager] 구독 해제: ${e}`)}leaveChannel(e){if(!this.echo)return;this.echo.leave(e);const n=[];this.subscriptions.forEach((r,i)=>{i.startsWith(`${e}:`)&&n.push(i)}),n.forEach(r=>this.subscriptions.delete(r)),Pt.log(`[WebSocketManager] 채널 구독 해제: ${e}`)}disconnect(){this.echo&&(this.echo.disconnect(),this.subscriptions.clear(),this.initialized=!1,Pt.log("[WebSocketManager] 연결 종료"))}getEcho(){return this.echo}isInitialized(){return this.initialized}isConfigured(){return this.config!==null&&!!this.config.appKey}getSubscriptionCount(){return this.subscriptions.size}}const Nc=new WA,bt=dt("DataSourceManager"),Xy=new kn;function Ic(s,e){const n=Da(s);if(n!==null)try{return Gn(n)?Xy.evaluatePipeExpression(n,e,{skipCache:!0}):Xy.evaluateExpression(n,e)}catch(r){return bt.error("Failed to evaluate param expression:",n,r),s}return ls(s,e,{skipCache:!0})}function Jy(s){const e={};for(const n of s.keys()){if(n in e)continue;const r=s.getAll(n);r.length>1?e[n]=r:r.length===1&&(n.endsWith("[]")?e[n]=r:e[n]=r[0])}return e}function YA(){try{return window.G7Core?.devTools}catch{return}}const Bc=class Bc{constructor(e={}){M(this,"options");M(this,"dataCache",new Map);M(this,"bindingEngine");M(this,"globalHeaders",[]);this.options=e,this.bindingEngine=new kn}setGlobalHeaders(e){this.globalHeaders=e||[]}matchesPattern(e,n){if(n==="*")return!0;const r=n.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*");return new RegExp(`^${r}$`).test(e)}toFormData(e){const n=new FormData;for(const[r,i]of Object.entries(e))i instanceof File||i instanceof Blob?n.append(r,i):i!=null&&n.append(r,typeof i=="object"?JSON.stringify(i):String(i));return n}getMatchingGlobalHeaders(e,n){const r={};for(const i of this.globalHeaders)this.matchesPattern(e,i.pattern)&&Object.entries(i.headers).forEach(([l,c])=>{const d=Ic(c,n);d!=null&&d!==""&&(r[l]=String(d))});return r}filterByCondition(e,n={}){const r=new Set,i=[];for(const l of e){if(r.has(l.id))continue;if(!l.if&&!l.conditions){r.add(l.id),i.push(l);continue}os({if:l.if,conditions:l.conditions},n,this.bindingEngine,`data_source:${l.id}`)&&(r.add(l.id),i.push(l))}return i}checkErrorCondition(e,n){if(!e.errorCondition?.if||e.errorCondition?.errorCode===void 0)return null;try{const r={response:n};if(os({if:e.errorCondition.if},r,this.bindingEngine,`errorCondition:${e.id}`))return bt.log(`errorCondition matched for ${e.id}, triggering error ${e.errorCondition.errorCode}`),e.errorCondition.errorCode}catch(r){bt.error(`Failed to evaluate errorCondition for ${e.id}:`,r)}return null}async fetchDataSources(e,n={},r=new URLSearchParams,i,l){const c={},d=!!this.options.sampleProvider,f=e.filter(h=>(d||h.auto_fetch!==!1)&&h.type!=="websocket");return await Promise.all(f.map(async h=>{try{const m=await this.fetchDataSource(h,n,r,i,l);c[h.id]=m,this.dataCache.set(h.id,{data:m,timestamp:Date.now()});const y=this.checkErrorCondition(h,m);if(y!==null){const S={status:y,message:`Error condition matched for ${h.id}`,data:m},v=Er(),_=v.resolve(y,{errorHandling:h.errorHandling,onError:h.onError});if(_.handler)try{await v.execute(_.handler,S)}catch(x){bt.error(`Error executing errorCondition handler for ${h.id}:`,x)}h.fallback!==void 0&&(c[h.id]=h.fallback,this.dataCache.set(h.id,{data:h.fallback,timestamp:Date.now()}),bt.log(`Using fallback data for ${h.id} (errorCondition)`));return}if(h.onSuccess)try{const S={data:m,sourceId:h.id};await this.executeOnSuccessHandler(h.onSuccess,S)}catch(S){bt.error(`Error executing onSuccess handler for ${h.id}:`,S)}}catch(m){bt.error(`Failed to fetch data source: ${h.id}`,m);const y=m?.response?.status||m?.status||500,S=m?.response?.data,v=S?.message||m.message||"Unknown error",_={status:y,message:v,errors:S?.errors,data:S,statusText:m?.response?.statusText},x=Er(),A=x.resolve(y,{errorHandling:h.errorHandling,onError:h.onError});if(A.handler)try{await x.execute(A.handler,_)}catch(L){bt.error(`Error executing error handler for ${h.id}:`,L)}h.fallback!==void 0&&(c[h.id]=h.fallback,this.dataCache.set(h.id,{data:h.fallback,timestamp:Date.now()}),bt.log(`Using fallback data for ${h.id}`)),this.options.onError&&this.options.onError(m,h)}})),c}async fetchDataSourcesWithResults(e,n={},r=new URLSearchParams,i,l,c){if(e.some(m=>m.type==="websocket")){const m=e.filter(y=>y.type==="websocket").map(y=>y.id).join(", ");bt.warn(`fetchDataSourcesWithResults received WebSocket sources (caller should filter them out before calling): ${m}. WebSocket sources are event listeners, not data providers — they should not be passed to fetch.`)}const f=c?.ignoreAutoFetch?e.filter(m=>m.type!=="websocket"):e.filter(m=>m.auto_fetch!==!1&&m.type!=="websocket");return await Promise.all(f.map(async m=>{try{const y=await this.fetchDataSource(m,n,r,i,l);this.dataCache.set(m.id,{data:y,timestamp:Date.now()});const S=this.checkErrorCondition(m,y);if(S!==null){const v={status:S,message:`Error condition matched for ${m.id}`,data:y},_=Er(),x=_.resolve(S,{errorHandling:m.errorHandling,onError:m.onError});let A=!1;if(x.handler)if(m.loading_strategy==="blocking")_.execute(x.handler,v).catch(L=>{bt.error(`Error executing errorCondition handler for ${m.id}:`,L)}),A=!0;else try{await _.execute(x.handler,v),A=!0}catch(L){bt.error(`Error executing errorCondition handler for ${m.id}:`,L)}return m.fallback!==void 0?(this.dataCache.set(m.id,{data:m.fallback,timestamp:Date.now()}),bt.log(`Using fallback data for ${m.id} (errorCondition)`),{id:m.id,state:"success",data:m.fallback}):{id:m.id,state:"error",error:new Error(`Error condition matched: ${S}`),errorCode:S,errorHandled:A}}if(m.onSuccess)try{const v={data:y,sourceId:m.id};await this.executeOnSuccessHandler(m.onSuccess,v)}catch(v){bt.error(`Error executing onSuccess handler for ${m.id}:`,v)}return{id:m.id,state:"success",data:y}}catch(y){bt.error(`Failed to fetch data source: ${m.id}`,y);const S=y?.response?.status||y?.status||500,v=y?.response?.data,_=v?.message||y.message||"Unknown error",x={status:S,message:_,errors:v?.errors,data:v,statusText:y?.response?.statusText},A=Er(),L=A.resolve(S,{errorHandling:m.errorHandling,onError:m.onError});let $=!1;if(L.handler)if(m.loading_strategy==="blocking")A.execute(L.handler,x).catch(k=>{bt.error(`Error executing error handler for ${m.id}:`,k)}),$=!0;else try{await A.execute(L.handler,x),$=!0}catch(k){bt.error(`Error executing error handler for ${m.id}:`,k)}return m.fallback!==void 0?(this.dataCache.set(m.id,{data:m.fallback,timestamp:Date.now()}),bt.log(`Using fallback data for ${m.id}`),{id:m.id,state:"success",data:m.fallback}):(this.options.onError&&this.options.onError(y,m),{id:m.id,state:"error",error:y,errorCode:S,errorHandled:$})}}))}fetchDataSourcesInBackground(e,n={},r=new URLSearchParams,i){e.filter(c=>c.auto_fetch!==!1&&c.loading_strategy==="background"&&c.type!=="websocket").forEach(c=>{this.fetchDataSource(c,n,r).then(async d=>{this.dataCache.set(c.id,{data:d,timestamp:Date.now()});const f=this.checkErrorCondition(c,d);if(f!==null){const h={status:f,message:`Error condition matched for ${c.id}`,data:d},m=Er(),y=m.resolve(f,{errorHandling:c.errorHandling,onError:c.onError});if(y.handler)try{await m.execute(y.handler,h)}catch(S){bt.error(`Error executing errorCondition handler for ${c.id}:`,S)}c.fallback!==void 0&&(this.dataCache.set(c.id,{data:c.fallback,timestamp:Date.now()}),bt.log(`Using fallback data for ${c.id} (errorCondition)`),i&&i(c.id,c.fallback));return}if(c.onSuccess)try{const h={data:d,sourceId:c.id};await this.executeOnSuccessHandler(c.onSuccess,h)}catch(h){bt.error(`Error executing onSuccess handler for ${c.id}:`,h)}i&&i(c.id,d)}).catch(async d=>{bt.error(`Background fetch failed: ${c.id}`,d);const f=d?.response?.status||d?.status||500,h=d?.response?.data,m=h?.message||d.message||"Unknown error",y={status:f,message:m,errors:h?.errors,data:h,statusText:d?.response?.statusText},S=Er(),v=S.resolve(f,{errorHandling:c.errorHandling,onError:c.onError});if(v.handler)try{await S.execute(v.handler,y)}catch(_){bt.error(`Error executing error handler for ${c.id}:`,_)}if(c.fallback!==void 0){this.dataCache.set(c.id,{data:c.fallback,timestamp:Date.now()}),bt.log(`Using fallback data for ${c.id}`),i&&i(c.id,c.fallback);return}this.options.onError&&this.options.onError(d,c)})})}async fetchDataSource(e,n,r,i,l){switch(e.type){case"api":return this.fetchApiDataSource(e,n,r,i,l);case"static":return e.data;case"route_params":return n;case"query_params":return Jy(r);default:throw new Error(`Unknown data source type: ${e.type}`)}}async fetchApiDataSource(e,n,r,i,l){if(this.options.sampleProvider?.has(e.id))return await Promise.resolve(this.options.sampleProvider.resolve(e));if(!e.endpoint)throw new Error(`API data source ${e.id} has no endpoint`);const c={route:n,query:Jy(r)};i&&(c._global=i),l&&(c._local=l);let d=ls(e.endpoint,c,{skipCache:!0});const f=e.method||"GET",m=(e.contentType?typeof e.contentType=="string"&&e.contentType.includes("{{")?ls(e.contentType,c,{skipCache:!0}):e.contentType:"application/json")==="multipart/form-data";let y=m?{...e.params||{}}:JSON.parse(JSON.stringify(e.params||{}));Object.entries(y).forEach(([_,x])=>{typeof x=="string"&&(y[_]=Ic(x,c))}),Object.keys(y).forEach(_=>{y[_]===""&&delete y[_]});const S=YA();let v=null;if(S?.isEnabled()){S.trackDataSourceDefinition({id:e.id,type:e.type,endpoint:d,method:f,autoFetch:e.auto_fetch,initLocal:e.initLocal,initGlobal:e.initGlobal});let _=d;if(f==="GET"&&Object.keys(y).length>0){const x=new URLSearchParams;Object.entries(y).forEach(([L,$])=>{Array.isArray($)?$.forEach(k=>x.append(L,String(k))):$!=null&&x.append(L,String($))});const A=x.toString();_=A?`${d}?${A}`:d}v=S.trackRequest(_,f,{requestBody:f!=="GET"?y:void 0,dataSourceId:e.id}),S.trackDataSourceLoading(e.id)}try{let _;const x=e.auth_mode??(e.auth_required===!0?"required":"none"),A=wr.getInstance().isAuthenticated();if(x==="required"&&!A){bt.log(`[DataSourceManager] Skipping ${e.id}: auth_mode is 'required' but no token available`),S?.isEnabled()&&(S.trackDataSourceError(e.id,"Skipped: auth_mode required but not authenticated"),v&&S.failRequest(v,"Skipped: not authenticated"));const $=new Error("Auth required but not authenticated");throw $.response={status:401,statusText:"Unauthorized",data:null},$.status=401,$._authSkipped=!0,$}const L=x==="required"||x==="optional"&&A;if(L){const $=zr(),k=d.startsWith("/api/")?d.substring(4):d.startsWith("/api")?d.substring(4)||"/":d;this.options.onError&&bt.log(`[DataSourceManager] Normalized endpoint: ${d} -> ${k}`);const O=this.getMatchingGlobalHeaders(d,c),P={};e.headers&&Object.entries(e.headers).forEach(([pe,Se])=>{const we=Ic(Se,c);we!=null&&we!==""&&(P[pe]=String(we))});const G={...O,...P},B=Object.keys(G).length>0,W=m?this.toFormData(y):y;switch(f){case"GET":_=await $.get(k,{params:y,...B&&{headers:G}});break;case"POST":B?_=await $.post(k,W,{headers:G}):_=await $.post(k,W);break;case"PUT":B?_=await $.put(k,W,{headers:G}):_=await $.put(k,W);break;case"PATCH":B?_=await $.patch(k,W,{headers:G}):_=await $.patch(k,W);break;case"DELETE":_=await $.delete(k,{params:y,...B&&{headers:G}});break;default:throw new Error(`Unsupported HTTP method: ${f}`)}}else{let $=d;if(f==="GET"){const W=new URLSearchParams(y).toString();$=W?`${d}?${W}`:d}const k={...m?{}:{"Content-Type":"application/json"},Accept:"application/json"};if(typeof window<"u"){const W=localStorage.getItem("g7_locale");W&&(k["Accept-Language"]=W)}const O=this.getMatchingGlobalHeaders(d,c);Object.assign(k,O),e.headers&&Object.entries(e.headers).forEach(([W,pe])=>{const Se=Ic(pe,c);Se!=null&&Se!==""&&(k[W]=String(Se))});let P;f!=="GET"&&(m?(P=this.toFormData(y),delete k["Content-Type"]):P=JSON.stringify(y));const G=await fetch($,{method:f,headers:k,body:P});let B;try{B=await G.json()}catch{B=null}if(v&&S?.isEnabled()&&(S.completeRequest(v,G.status,B),v=null),!G.ok){S?.isEnabled()&&S.trackDataSourceError(e.id,`HTTP ${G.status}: ${G.statusText}`);const W=new Error(`HTTP error! status: ${G.status}`);throw W.response={status:G.status,statusText:G.statusText,data:B},W.status=G.status,W}_=B,S?.isEnabled()&&S.trackDataSourceLoaded(e.id,_)}return L&&v&&S?.isEnabled()&&(S.completeRequest(v,200,_),S.trackDataSourceLoaded(e.id,_)),_}catch(_){if(v&&S?.isEnabled()){const x=_;x?.response?S.completeRequest(v,x.response.status,x.response.data):S.failRequest(v,_ instanceof Error?_.message:String(_)),S.trackDataSourceError(e.id,_ instanceof Error?_.message:String(_))}throw _}}getCachedData(e){const n=this.dataCache.get(e);if(!n)return;if(Date.now()-n.timestamp>Bc.DATA_CACHE_TTL){this.dataCache.delete(e);return}return n.data}clearCache(){this.dataCache.clear()}subscribeWebSockets(e,n,r={}){const i=[],l=e.filter(c=>c.type==="websocket");return l.length===0||l.forEach(c=>{if(!c.channel||!c.event){bt.warn(`WebSocket source ${c.id} missing channel or event`);return}let d,f;try{d=ls(c.channel,r,{skipCache:!0}),f=ls(c.event,r,{skipCache:!0})}catch(y){bt.error(`Failed to resolve WebSocket channel/event for source ${c.id}:`,y);return}const h=y=>!!(!y||y.trim()===""||y.includes("{{")||y.endsWith(".")||y.endsWith(":")||y.startsWith(".")||y.startsWith(":")||y.includes("..")||y.includes("::"));if(h(d)||h(f)){bt.warn(`WebSocket source ${c.id} has invalid channel/event after expression resolution, skipping. Original channel="${c.channel}", resolved="${d}". Original event="${c.event}", resolved="${f}". Available context keys: [${Object.keys(r).join(", ")}]`);return}const m=Nc.subscribe(d,f,y=>{const S=c.target_source||c.id;this.dataCache.set(S,{data:y,timestamp:Date.now()}),n(S,y)},{channelType:c.channel_type||"private"});m&&i.push(m)}),i}unsubscribeWebSockets(e){e.length!==0&&e.forEach(n=>{Nc.unsubscribe(n)})}async executeOnSuccessHandler(e,n){const r=this.options.actionDispatcher??Wm();if(!r){bt.warn("ActionDispatcher not available, skipping onSuccess handler");return}const i=Array.isArray(e)?e:[e];for(const l of i)try{await r.dispatchAction({type:"click",...l},{data:{response:n}})}catch(c){throw bt.error("Failed to execute onSuccess handler:",c),c}}};M(Bc,"DATA_CACHE_TTL",3e5);let Tr=Bc;const XA=new Tr,_i=dt("ModalDataSourceWrapper");function JA(s,e){if(!s||!e)return s;const r=e.replace(/\?\./g,".").split(/\.(?![^\[]*\])/).flatMap(l=>{const c=l.match(/^([^\[]*)((?:\[\d+\])*)$/);if(c){const[,d,f]=c,h=[];d&&h.push(d);const m=f.match(/\[\d+\]/g);return m&&h.push(...m),h}return[l]}).filter(l=>l!=="");let i=s;for(const l of r){if(i==null)return;if(l.startsWith("[")&&l.endsWith("]")){const c=parseInt(l.slice(1,-1),10);i=i[c]}else i=i[l]}return i}const Qy=({isOpen:s,modalId:e,dataSources:n,dataContext:r,globalStateUpdater:i,bindingEngine:l,debug:c=!1,children:d})=>{const[f,h]=N.useState(!1),[m,y]=N.useState(!1),S=N.useRef(!1),v=N.useRef(null);v.current||(v.current=new Tr);const _=N.useCallback(async()=>{if(!(!n||n.length===0)&&v.current){h(!0);try{const x=r.route||{},A=new URLSearchParams(window.location.search),L=n.map(k=>{let O={...k};if(k.endpoint&&l){const P=l.resolveBindings(k.endpoint,r,{skipCache:!0});O.endpoint=P}if(k.params&&l){const P={};Object.entries(k.params).forEach(([G,B])=>{typeof B=="string"?P[G]=l.resolveBindings(B,r,{skipCache:!0}):P[G]=B}),O.params=P}return O});c&&_i.log(`[ModalDataSourceWrapper] Modal "${e}" fetching data sources:`,L.map(k=>({id:k.id,endpoint:k.endpoint})));const $=await v.current.fetchDataSourcesWithResults(L,x,A);i&&$.forEach(k=>{if(k.state==="success"&&k.data!==void 0){const O=L.find(P=>P.id===k.id);if(O?.initGlobal){const P=k.data?.data??k.data,G=Array.isArray(O.initGlobal)?O.initGlobal:[O.initGlobal];for(const B of G)if(typeof B=="string")i({[B]:P}),c&&_i.log(`[ModalDataSourceWrapper] Modal "${e}" initGlobal: ${k.id}.data -> _global.${B}`);else if(typeof B=="object"&&B.key){const{key:W,path:pe}=B,Se=pe?JA(P,pe):P;i({[W]:Se}),c&&_i.log(`Modal "${e}" initGlobal: ${k.id}.data${pe?"."+pe:""} -> _global.${W}`)}}}else k.state==="error"&&_i.error(`Modal "${e}" data source error:`,k.id,k.error)}),c&&_i.log(`Modal "${e}" data sources fetched successfully`)}catch(x){_i.error(`Modal "${e}" data source fetch error:`,x)}finally{h(!1),y(!0)}}},[n,r,i,l,e,c]);return N.useEffect(()=>{if(!n||n.length===0)return;const x=window.__templateApp;return x?.registerModalDataSources&&x.registerModalDataSources(e,n),()=>{x?.unregisterModalDataSources&&x.unregisterModalDataSources(e)}},[e,n]),N.useEffect(()=>{!s&&S.current&&(y(!1),c&&_i.log(`[ModalDataSourceWrapper] Modal "${e}" closed, reset fetch state`)),s&&!S.current&&n&&n.length>0&&!m&&_(),S.current=s},[s,n,m,_,e,c]),ft.jsx(ft.Fragment,{children:d})};class jc extends Error{constructor(n,r,i={}){super(r);M(this,"code");M(this,"userMessageKey");M(this,"showStack");M(this,"icon");M(this,"recoverable");this.name="TemplateEngineError",this.code=n,this.userMessageKey=r,this.showStack=i.showStack??!0,this.icon=i.icon??"fa-circle-exclamation",this.recoverable=i.recoverable??!0,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}getUserMessage(n,r){if(!r||!n)return this.userMessageKey;try{return r.translate(this.userMessageKey,n)}catch{return this.userMessageKey}}}class QA extends jc{constructor(){super("TEMPLATE_NOT_FOUND","$t:core.errors.template_not_found",{showStack:!1,icon:"fa-paint-brush",recoverable:!1}),this.name="TemplateNotFoundError"}}function Zy(s){if(s instanceof jc)return s;if(s instanceof Error){const e=new jc("TEMPLATE_INIT_ERROR",s.message||"$t:core.errors.template_init_error",{showStack:!0,icon:"fa-circle-exclamation",recoverable:!0});return e.stack=s.stack,e}return new jc("TEMPLATE_INIT_ERROR","$t:core.errors.template_init_error",{showStack:!1,icon:"fa-circle-exclamation",recoverable:!0})}const ZA=dt("ErrorDisplay");class Zf{static render(e,n){const r=document.getElementById(e);if(!r){ZA.error(`Container #${e} not found`);return}const i=n.debug&&n.showStack&&n.stackTrace,l=window.matchMedia("(prefers-color-scheme: dark)").matches,c={container:`
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
min-height: 100vh;
|
||
background-color: ${l?"#111827":"#f9fafb"};
|
||
padding: 1rem;
|
||
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
||
`,card:`
|
||
max-width: 28rem;
|
||
width: 100%;
|
||
background-color: ${l?"#1f2937":"#ffffff"};
|
||
border-radius: 0.5rem;
|
||
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
||
padding: 2rem;
|
||
text-align: center;
|
||
`,iconContainer:`
|
||
margin-bottom: 1.5rem;
|
||
`,icon:`
|
||
font-size: 4rem;
|
||
color: #ef4444;
|
||
`,title:`
|
||
font-size: 1.5rem;
|
||
font-weight: 700;
|
||
color: ${l?"#ffffff":"#111827"};
|
||
margin-bottom: 1rem;
|
||
`,message:`
|
||
color: ${l?"#d1d5db":"#4b5563"};
|
||
margin-bottom: 0.5rem;
|
||
line-height: 1.625;
|
||
`,detailMessage:`
|
||
font-size: 0.875rem;
|
||
color: ${l?"#9ca3af":"#6b7280"};
|
||
margin-bottom: 1.5rem;
|
||
background-color: ${l?"#374151":"#f3f4f6"};
|
||
padding: 0.5rem 0.75rem;
|
||
border-radius: 0.25rem;
|
||
`,spacer:`
|
||
margin-bottom: 1.5rem;
|
||
`,stackContainer:`
|
||
margin-top: 1.5rem;
|
||
padding: 1rem;
|
||
background-color: ${l?"#374151":"#f3f4f6"};
|
||
border-radius: 0.375rem;
|
||
text-align: left;
|
||
`,stackTitle:`
|
||
font-size: 0.875rem;
|
||
font-weight: 600;
|
||
color: ${l?"#e5e7eb":"#374151"};
|
||
margin-bottom: 0.5rem;
|
||
`,stackTrace:`
|
||
font-size: 0.75rem;
|
||
color: ${l?"#d1d5db":"#4b5563"};
|
||
overflow-x: auto;
|
||
white-space: pre-wrap;
|
||
word-break: break-word;
|
||
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
|
||
`,buttonContainer:`
|
||
margin-top: 1.5rem;
|
||
`,button:`
|
||
display: inline-flex;
|
||
align-items: center;
|
||
padding: 0.75rem 1.5rem;
|
||
background-color: #2563eb;
|
||
color: #ffffff;
|
||
font-weight: 500;
|
||
border-radius: 0.375rem;
|
||
border: none;
|
||
cursor: pointer;
|
||
transition: background-color 0.2s;
|
||
`};r.innerHTML=`
|
||
<div style="${c.container}">
|
||
<div style="${c.card}">
|
||
<!-- 아이콘 -->
|
||
<div style="${c.iconContainer}">
|
||
<i class="fa-solid ${n.icon}" style="${c.icon}"></i>
|
||
</div>
|
||
|
||
<!-- 제목 -->
|
||
<h1 style="${c.title}">
|
||
${this.escapeHtml(n.title)}
|
||
</h1>
|
||
|
||
<!-- 사용자 메시지 -->
|
||
<p style="${c.message}">
|
||
${this.escapeHtml(n.message)}
|
||
</p>
|
||
|
||
<!-- 상세 메시지 (API 응답 등) -->
|
||
${n.detailMessage?`
|
||
<p style="${c.detailMessage}">
|
||
${this.escapeHtml(n.detailMessage)}
|
||
</p>
|
||
`:`<div style="${c.spacer}"></div>`}
|
||
|
||
<!-- Stack Trace (디버그 모드일 때만) -->
|
||
${i?`
|
||
<div style="${c.stackContainer}">
|
||
<p style="${c.stackTitle}">
|
||
Stack Trace:
|
||
</p>
|
||
<pre style="${c.stackTrace}">${this.escapeHtml(n.stackTrace)}</pre>
|
||
</div>
|
||
`:""}
|
||
|
||
<!-- 새로고침 버튼 (복구 가능할 때만) -->
|
||
${n.showReloadButton?`
|
||
<div style="${c.buttonContainer}">
|
||
<button
|
||
onclick="window.location.reload()"
|
||
style="${c.button}"
|
||
onmouseover="this.style.backgroundColor='#1d4ed8'"
|
||
onmouseout="this.style.backgroundColor='#2563eb'"
|
||
>
|
||
<i class="fa-solid fa-rotate-right" style="margin-right: 0.5rem;"></i>
|
||
새로고침
|
||
</button>
|
||
</div>
|
||
`:""}
|
||
</div>
|
||
</div>
|
||
`}static renderFromError(e,n,r,i=!1,l,c,d){let f,h;if(n.userMessageKey.startsWith("$t:"))if(c&&l)try{f=c.translate(n.userMessageKey,l)}catch{f=n.userMessageKey.replace("$t:","")}else f=n.userMessageKey.replace("$t:","");else f=n.userMessageKey;if(d){const m=d;m.details?.apiMessage?h=m.details.apiMessage:m.response?.data?.message&&(h=m.response.data.message)}this.render(e,{title:r,message:f,detailMessage:h,icon:n.icon,showStack:n.showStack,stackTrace:n.stack,showReloadButton:n.recoverable,debug:i})}static escapeHtml(e){if(!e)return"";const n=document.createElement("div");return n.textContent=e,n.innerHTML}}const bs=dt("Router");class ex{constructor(e){M(this,"routes",[]);M(this,"templateIdentifier");M(this,"eventHandlers",new Map);M(this,"pendingNavigation",null);M(this,"isNavigating",!1);M(this,"handlePopState",()=>{this.navigateToCurrentPath()});this.templateIdentifier=e,this.initPopstateListener()}initPopstateListener(){window.addEventListener("popstate",this.handlePopState)}on(e,n){this.eventHandlers.has(e)||this.eventHandlers.set(e,[]),this.eventHandlers.get(e).push(n)}async emit(e,...n){const r=this.eventHandlers.get(e);r&&await Promise.all(r.map(i=>i(...n)))}async loadRoutes(e){try{const n=e!==void 0&&e>0?e:null,r=await fetch(jr(`/api/templates/${this.templateIdentifier}/routes`,"json",n));if(!r.ok)throw new Error(`Failed to load routes: ${r.statusText}`);const i=await r.json();if(!i.success)throw new Error("Failed to load routes from API");if(i.data&&Array.isArray(i.data.routes))this.routes=i.data.routes,bs.log(`Loaded ${this.routes.length} routes${e?` (v=${e})`:""}`);else throw new Error("Invalid routes data format")}catch(n){throw bs.error("Error loading routes:",n),n}}setRoutes(e){this.routes=e,bs.log(`Set ${this.routes.length} routes`)}match(e){const n=this.normalizePathname(e);for(const r of this.routes){const i=this.matchPattern(r.path,n);if(i!==null)return{route:r,params:i}}return null}normalizePathname(e){return e.length>1&&e.endsWith("/")?e.replace(/\/+$/,"")||"/":e}matchPattern(e,n){const r=[];let i=e.replace(/:([^/]+)/g,(f,h)=>(r.push(h),"([^/]+)"));i.startsWith("*/")&&(i="(?:/[^/]+)?"+i.slice(1)),i=i.replace(/\//g,"\\/");const l=new RegExp(`^${i}$`),c=n.match(l);if(!c)return null;const d={};return r.forEach((f,h)=>{d[f]=c[h+1]}),d}getRoutes(){return[...this.routes]}getAuthType(e,n){return e.auth_type?e.auth_type:n.startsWith("/admin")?"admin":"user"}async navigateToCurrentPath(){const e=window.location.pathname,n=window.location.search,r=this.match(e);if(!r){bs.warn(`No route matched for path: ${e}`),this.emit("routeNotFound",e);return}if(r.route.redirect){bs.log(`Redirecting from ${e} to ${r.route.redirect}`),this.navigate(r.route.redirect);return}if(r.route.auth_required){const c=this.getAuthType(r.route,e),d=wr.getInstance();let f=d.isAuthenticated()&&d.getAuthType()===c;if(f||(f=await d.checkAuth(c)),!f){const h=d.getLoginRedirectUrl(c,e+n);bs.log(`Not authenticated, redirecting to: ${h}`),window.location.href=h;return}}const i=new URLSearchParams(n),l={};for(const c of i.keys()){if(c in l)continue;const d=i.getAll(c);d.length>1?l[c]=d:d.length===1&&(c.endsWith("[]")?l[c]=d:l[c]=d[0])}await this.emit("routeChange",{path:e,layout:r.route.layout,endpoint:r.route.endpoint,params:{...r.route.params||{},...r.params},query:l,auth_required:r.route.auth_required,auth_type:r.route.auth_type,meta:r.route.meta})}navigate(e){if(this.isNavigating){this.pendingNavigation=e;return}this.executeNavigation(e)}async executeNavigation(e){this.isNavigating=!0,this.pendingNavigation=null;try{window.history.pushState({},"",e),await this.navigateToCurrentPath()}finally{if(this.isNavigating=!1,this.pendingNavigation){const n=this.pendingNavigation;this.executeNavigation(n)}}}}const tx=/^\/admin\/layout-editor\/([^/?#]+)\/?$/;function eb(s){const e=tx.exec(s);return e?{templateIdentifier:e[1]}:null}const Bt=dt("ErrorPageHandler");class nx{constructor(e){M(this,"templateId");M(this,"layoutLoader");M(this,"locale");M(this,"debug");M(this,"renderFunction");M(this,"dataSourceManager");M(this,"globalState");M(this,"errorConfig",null);M(this,"configLoaded",!1);this.templateId=e.templateId,this.layoutLoader=e.layoutLoader,this.locale=e.locale,this.debug=e.debug,this.renderFunction=e.renderFunction,this.dataSourceManager=e.dataSourceManager,this.globalState=e.globalState||{}}async loadConfig(){if(this.configLoaded)return this.errorConfig;try{const e=await fetch(jr(`/api/templates/${this.templateId}/config`,"json"));if(!e.ok)return this.debug&&Bt.warn("Failed to load template config:",e.statusText),this.configLoaded=!0,null;const n=await e.json();if(!n.success||!n.data)return this.debug&&Bt.warn("Invalid template config response"),this.configLoaded=!0,null;const r=n.data;return!r.error_config||!r.error_config.layouts?(this.debug&&Bt.warn("No error_config found in template.json"),this.configLoaded=!0,null):(this.errorConfig=r.error_config,this.configLoaded=!0,this.debug&&Bt.log("Error config loaded:",this.errorConfig),this.errorConfig)}catch(e){return Bt.error("Failed to load error config:",e),this.configLoaded=!0,null}}async renderError(e,n="app"){try{const r=await this.loadConfig();if(!r)return this.debug&&Bt.warn("No error config available, cannot render error page"),!1;const i=r.layouts[e]||r.layouts[String(e)];if(!i)return this.debug&&Bt.warn(`No layout defined for error code: ${e}`),!1;this.debug&&Bt.log(`Loading error layout: ${i} for code: ${e}`);const l=await this.layoutLoader.loadLayout(this.templateId,i);if(!l)return this.debug&&Bt.error(`Failed to load error layout: ${i}`),!1;this.debug&&Bt.log("Error layout loaded:",l);let c={};const d=l.data_sources||[];if(d.length>0){this.debug&&Bt.log("Fetching data sources:",d.map(v=>v.id));const m=d.filter(v=>v.loading_strategy==="blocking"),y=d.filter(v=>!v.loading_strategy||v.loading_strategy==="progressive"),S=[...m,...y];if(S.length>0)try{c=await this.dataSourceManager.fetchDataSources(S,{},new URLSearchParams),this.debug&&Bt.log("Data sources fetched:",Object.keys(c))}catch(v){Bt.error("Failed to fetch data sources:",v)}}const f={};d.length>0&&(this.processInitOptions(d,c,f),this.debug&&Bt.log("initOptions processed:",{globalKeys:Object.keys(this.globalState),localKeys:Object.keys(f)}));const h={...c,errorCode:e,_global:{...this.globalState},_local:{...f}};return await this.renderFunction({containerId:n,layoutJson:l,dataContext:h,translationContext:{templateId:this.templateId,locale:this.locale}}),this.debug&&Bt.log(`Error page ${e} rendered successfully`),!0}catch(r){return Bt.error(`Failed to render error page ${e}:`,r),!1}}processInitOptions(e,n,r){for(const i of e){const l=n[i.id];if(!l)continue;const c=l?.data??l;if(i.initLocal){if(typeof i.initLocal=="string")r[i.initLocal]=c,Bt.log(`initLocal: ${i.id}.data -> _local.${i.initLocal}`);else if(typeof i.initLocal=="object"&&"key"in i.initLocal){const{key:d,path:f}=i.initLocal;r[d]=f?this.getValueByPath(c,f):c,Bt.log(`initLocal: ${i.id}.data${f?"."+f:""} -> _local.${d}`)}}if(i.initGlobal){const d=Array.isArray(i.initGlobal)?i.initGlobal:[i.initGlobal];for(const f of d)if(typeof f=="string")this.globalState[f]=c,Bt.log(`initGlobal: ${i.id}.data -> _global.${f}`);else if(typeof f=="object"&&f!==null&&"key"in f){const{key:h,path:m}=f;this.globalState[h]=m?this.getValueByPath(c,m):c,Bt.log(`initGlobal: ${i.id}.data${m?"."+m:""} -> _global.${h}`)}}}}getValueByPath(e,n){return n.split(".").reduce((r,i)=>r?.[i],e)}updateGlobalState(e){this.globalState={...this.globalState,...e}}updateLocale(e){this.locale=e,this.debug&&Bt.log("Locale updated:",e)}isConfigLoaded(){return this.configLoaded}async hasErrorLayout(e){const n=await this.loadConfig();return n?!!(n.layouts[e]||n.layouts[String(e)]):!1}clearConfigCache(){this.errorConfig=null,this.configLoaded=!1,this.debug&&Bt.log("Config cache cleared")}}const Hc=dt("AssetFailureNotice"),tb="g7-asset-failure-notice",rx="g7-system-banners",qr=new Map;let vs=!1,zc=!1,zo=null;function Ss(s,e,n){try{const r=window?.G7Core?.t;if(typeof r=="function"){const i=r(s,n);if(typeof i=="string"&&i!==s&&!i.startsWith("core.assets."))return i}}catch{}return ax(e,n)}function ax(s,e){return e?Object.entries(e).reduce((n,[r,i])=>n.split("{"+r+"}").join(String(i)),s):s}function ws(s){!s||!s.id||(qr.set(s.id,s),zc=!1,Hc.warn(`Asset failure notified: ${s.id} (${s.label})`),Cs())}function nb(s){qr.delete(s)&&(Hc.log(`Asset failure cleared: ${s}`),Cs())}function rb(){qr.size!==0&&(qr.clear(),Cs())}function ix(){return Array.from(qr.values())}async function ab(){if(vs)return;vs=!0,zc=!1,Cs();const s=Array.from(qr.values()).filter(n=>typeof n.retry=="function");let e=!1;for(const n of s)try{await n.retry(),qr.delete(n.id)}catch(r){e=!0,Hc.warn(`Asset retry failed: ${n.id}`,r)}vs=!1,zc=e,Cs()}function sx(){try{return document.documentElement.classList.contains("dark")}catch{return!1}}function Cs(){if(typeof document>"u"||!document.body)return;const s=document.getElementById(tb);if(qr.size===0){s?.remove(),hx();return}const e=s??ox();lx(e),e.replaceChildren(cx()),fx()}function ox(){const s=document.createElement("div");return s.id=tb,s.setAttribute("role","alert"),s.setAttribute("aria-live","polite"),document.body.appendChild(s),s}function lx(s){const n=document.getElementById(rx)?.offsetHeight??0;s.style.cssText=["position:fixed",`top:${n}px`,"left:0","right:0","z-index:9998","display:flex","justify-content:center","pointer-events:none"].join(";")}function cx(){const s=sx(),e=Array.from(qr.values()),n=typeof window<"u"&&window.innerWidth<768,r=document.createElement("div");return r.style.cssText=["pointer-events:auto","box-sizing:border-box","width:100%","max-width:960px","margin:8px","padding:12px 16px","border-radius:8px",`border:1px solid ${s?"#78350f":"#fcd34d"}`,`background:${s?"#451a03":"#fffbeb"}`,`color:${s?"#fef3c7":"#78350f"}`,"box-shadow:0 4px 12px rgba(0,0,0,0.12)","font-size:14px","line-height:1.5","display:flex",n?"flex-direction:column":"flex-direction:row",n?"align-items:stretch":"align-items:center","gap:12px"].join(";"),r.style.background=s?"#451a03":"#fffbeb",r.style.color=s?"#fef3c7":"#78350f",r.style.borderColor=s?"#78350f":"#fcd34d",r.appendChild(ux(e,n)),r.appendChild(dx(e,n,s)),r}function ux(s,e){const n=document.createElement("div");n.style.cssText=["flex:1 1 auto","min-width:0","display:flex","gap:8px"].join(";");const r=document.createElement("span");r.setAttribute("aria-hidden","true"),r.textContent="⚠",r.style.cssText="flex:0 0 auto;font-size:16px;line-height:1.4",n.appendChild(r);const i=document.createElement("div");if(i.style.cssText="flex:1 1 auto;min-width:0",s.length===1){const l=s[0],c=document.createElement("div");c.setAttribute("data-asset-failure-id",l.id),c.textContent=l.message??Ss("core.assets.load_failed","{label}을(를) 불러오지 못했습니다.",{label:l.label}),i.appendChild(c)}else{const l=document.createElement("div");l.style.cssText="font-weight:600",l.textContent=Ss("core.assets.load_failed_multiple","{count}개 항목을 불러오지 못했습니다.",{count:s.length}),i.appendChild(l);const c=document.createElement("div");c.style.cssText="margin-top:2px;opacity:0.9;word-break:break-word",c.textContent=s.map(d=>d.label).join(", "),i.appendChild(c)}if(zc){const l=document.createElement("div");l.style.cssText="margin-top:4px;font-weight:600",l.textContent=Ss("core.assets.retry_failed","다시 시도했지만 실패했습니다. 잠시 후 다시 시도해 주세요."),i.appendChild(l)}return n.appendChild(i),e&&(n.style.alignItems="flex-start"),n}function dx(s,e,n){const r=document.createElement("div");if(r.style.cssText=["flex:0 0 auto","display:flex","gap:8px",e?"width:100%":"","align-items:center"].filter(Boolean).join(";"),s.some(c=>typeof c.retry=="function")){const c=document.createElement("button");c.type="button",c.dataset.action="retry",c.disabled=vs,c.textContent=vs?Ss("core.assets.retrying","다시 시도 중..."):Ss("core.assets.retry","다시 시도"),c.style.cssText=[e?"flex:1 1 auto":"","padding:6px 14px","border-radius:6px","font-size:14px","font-weight:600","cursor:pointer",`border:1px solid ${n?"#b45309":"#d97706"}`,`background:${n?"#b45309":"#f59e0b"}`,`color:${n?"#fffbeb":"#451a03"}`,vs?"opacity:0.6":""].filter(Boolean).join(";"),c.addEventListener("click",()=>{ab()}),r.appendChild(c)}const l=document.createElement("button");return l.type="button",l.dataset.action="close",l.setAttribute("aria-label",Ss("core.assets.close","닫기")),l.textContent="✕",l.style.cssText=["padding:6px 10px","border-radius:6px","font-size:14px","cursor:pointer","border:1px solid transparent","background:transparent",`color:${n?"#fef3c7":"#78350f"}`].join(";"),l.addEventListener("click",()=>{rb()}),r.appendChild(l),r}function fx(){zo||typeof MutationObserver>"u"||(zo=new MutationObserver(()=>{qr.size>0&&Cs()}),zo.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]}))}function hx(){zo?.disconnect(),zo=null}function px(){const s=window,e=r=>({id:String(r?.id??""),label:String(r?.label??r?.url??"asset"),retry:typeof r?.retry=="function"?r.retry:void 0}),n=Array.isArray(s.__g7ExternalAssetFailures)?s.__g7ExternalAssetFailures:[];n.forEach(r=>{r?.id&&ws(e(r))}),s.__g7ExternalAssetSink=r=>{r?.id&&ws(e(r))},Hc.log(`템플릿 externals 실패 대기열 ${n.length}건 반영`)}const Rt=dt("ModuleAssetLoader");class gx{constructor(){M(this,"loadedAssets",new Map);M(this,"loadingPromises",new Map);M(this,"failedJsAssets",new Set);M(this,"failedCssAssets",new Set)}getFailedCssAssets(){return[...this.failedCssAssets]}hasFailedJsAssets(){return this.failedJsAssets.size>0}getFailedJsAssets(){return[...this.failedJsAssets]}async loadActiveExtensionAssets(e){if(!e||e.length===0){Rt.log("No module assets to load");return}const n=[...e].sort((d,f)=>d.priority-f.priority);Rt.log("Loading module assets:",n.map(d=>d.identifier));const r=n.filter(d=>d.css).map(d=>this.loadCSS(d.identifier,d.css)),i=n.filter(d=>d.js).map(d=>this.loadJS(d.identifier,d.js)),l=await Promise.allSettled([...r,...i]),c=l.filter(d=>d.status==="rejected");if(c.length>0){Rt.warn(`Some module assets failed to load (${c.length}/${l.length}); continuing with the rest`,this.getFailedJsAssets());return}Rt.log("All module assets loaded successfully")}async loadBundle(e,n,r){const i=[];if(r&&i.push(this.loadBundleCss(e,r)),n&&i.push(this.loadBundleJs(e,n)),i.length===0){Rt.log(`No bundle assets to load for: ${e}`);return}await Promise.all(i)}async loadCustomAssets(){const e=mx();if(e.length!==0)for(const n of e){const r=`g7-custom-${n.type}-${yx(n.id)}`;if(document.getElementById(r))continue;const i=`${n.type==="style"?"custom CSS":"custom JS"}: ${n.id}`,l=(d,f)=>n.type==="style"?yi(Tn(d),{id:r},{label:i,retries:f}):ra(Tn(d),{id:r},{label:i,retries:f}),c=Td(n.url);try{if(c!==null)try{await l(n.url,0)}catch{Rt.warn(`Custom asset static miss, falling back to API: ${n.id} (${n.url} -> ${c})`),await l(c)}else await l(n.url);Rt.log(`Custom asset loaded: ${n.id}`)}catch(d){Rt.warn(`Failed to load custom asset: ${n.id} (${n.url})`,d),ws({id:`custom-asset:${n.id}`,label:n.id.split(":").pop()??n.id,retry:async()=>{document.getElementById(r)?.remove(),await l(c??n.url)}})}}}async loadBundleCss(e,n){const r=`ext-bundle-css-${e}`;if(document.getElementById(r)){Rt.log(`Bundle CSS already loaded: ${e}`);return}const i=Td(n);try{if(i!==null)try{await yi(n,{id:r},{label:`bundle CSS: ${e}`,retries:0})}catch{Rt.warn(`Bundle CSS static miss, falling back to API: ${e} (${n} -> ${i})`),await yi(Tn(i),{id:r},{label:`bundle CSS: ${e}`})}else await yi(n,{id:r},{label:`bundle CSS: ${e}`});Rt.log(`Bundle CSS loaded: ${e}`);const l=document.getElementById(r);l&&this.registerLoadedAsset(`bundle-${e}`,{type:"css",element:l})}catch(l){this.surfaceCssFailure(`bundle-${e}`,e,i!==null?Tn(i):n,l)}}async loadBundleJs(e,n){const r=`ext-bundle-js-${e}`;if(document.getElementById(r)){Rt.log(`Bundle JS already loaded: ${e}`);return}const i=this.loadingPromises.get(r);if(i)return Rt.log(`Bundle JS already loading: ${e}`),i;const l=Td(n),d=(l!==null?ra(n,{id:r},{label:`bundle JS: ${e}`,retries:0}).catch(()=>(Rt.warn(`Bundle JS static miss, falling back to API: ${e} (${n} -> ${l})`),ra(Tn(l),{id:r},{label:`bundle JS: ${e}`}))):ra(n,{id:r},{label:`bundle JS: ${e}`})).then(()=>{Rt.log(`Bundle JS loaded: ${e}`);const f=document.getElementById(r);f&&this.registerLoadedAsset(`bundle-${e}`,{type:"js",element:f}),this.loadingPromises.delete(r)}).catch(f=>{throw Rt.warn(`Failed to load bundle JS: ${e} (${n})`,f),this.failedJsAssets.add(e),this.loadingPromises.delete(r),f});return this.loadingPromises.set(r,d),d}async loadCSS(e,n){const r=`module-css-${e}`;if(document.getElementById(r)){Rt.log(`CSS already loaded: ${e}`);return}try{await yi(n,{id:r},{label:`CSS: ${e}`}),Rt.log(`CSS loaded: ${e}`);const i=document.getElementById(r);i&&this.registerLoadedAsset(e,{type:"css",element:i})}catch(i){this.surfaceCssFailure(e,e,n,i)}}surfaceCssFailure(e,n,r,i){Rt.warn(`Failed to load CSS after retries: ${e} (${r})`,i),this.failedCssAssets.add(e),ws({id:`ext-css:${e}`,label:n,retry:async()=>{document.getElementById(`module-css-${e}`)?.remove(),document.getElementById(`ext-bundle-css-${e.replace(/^bundle-/,"")}`)?.remove(),await yi(r,{},{label:`CSS retry: ${e}`}),this.failedCssAssets.delete(e)}})}async loadJS(e,n){const r=`module-js-${e}`;if(document.getElementById(r)){Rt.log(`JS already loaded: ${e}`);return}const i=this.loadingPromises.get(e);if(i)return Rt.log(`JS already loading: ${e}`),i;const l=ra(n,{id:r},{label:`JS: ${e}`}).then(()=>{Rt.log(`JS loaded: ${e}`);const c=document.getElementById(r);c&&this.registerLoadedAsset(e,{type:"js",element:c}),this.loadingPromises.delete(e)}).catch(c=>{throw Rt.warn(`Failed to load JS: ${e} (${n})`,c),this.failedJsAssets.add(e),this.loadingPromises.delete(e),c});return this.loadingPromises.set(e,l),l}registerLoadedAsset(e,n){const r=this.loadedAssets.get(e)||[];r.push(n),this.loadedAssets.set(e,r)}unloadExtensionAsset(e){const n=this.loadedAssets.get(e);if(!n||n.length===0){Rt.log(`No assets to unload for: ${e}`);return}n.forEach(r=>{r.element.parentNode&&(r.element.parentNode.removeChild(r.element),Rt.log(`${r.type.toUpperCase()} unloaded: ${e}`))}),this.loadedAssets.delete(e),Rt.log(`All assets unloaded for: ${e}`)}unloadAllAssets(){Array.from(this.loadedAssets.keys()).forEach(n=>{this.unloadExtensionAsset(n)}),Rt.log("All module assets unloaded")}isLoaded(e){return this.loadedAssets.has(e)}getLoadedModules(){return Array.from(this.loadedAssets.keys())}}let eh=null;function mx(){const s=window?.G7Config?.customAssets;return Array.isArray(s)?s.filter(e=>e&&typeof e.id=="string"&&typeof e.url=="string"&&(e.type==="style"||e.type==="script")):[]}function yx(s){return s.replace(/[^A-Za-z0-9_-]/g,"-")}function th(){return eh||(eh=new gx),eh}function bx(){if(typeof window>"u")return[];const s=window.G7Config;if(!s?.moduleAssets)return[];const e=[];for(const[n,r]of Object.entries(s.moduleAssets)){const i=r;e.push({identifier:n,js:i.js?Tn(i.js):i.js,css:i.css?Tn(i.css):i.css,priority:i.priority,external:i.external})}return e}function vx(){if(typeof window>"u")return null;const s=window.G7Config;if(!s?.bundleUrls)return null;const e=s.bundleUrls;return{moduleJs:e.moduleJs?Tn(e.moduleJs):e.moduleJs,moduleCss:e.moduleCss?Tn(e.moduleCss):e.moduleCss,pluginJs:e.pluginJs?Tn(e.pluginJs):e.pluginJs,pluginCss:e.pluginCss?Tn(e.pluginCss):e.pluginCss}}function Sx(){if(typeof window>"u")return[];const s=window.G7Config;if(!s?.pluginAssets)return[];const e=[];for(const[n,r]of Object.entries(s.pluginAssets)){const i=r;e.push({identifier:n,js:i.js?Tn(i.js):i.js,css:i.css?Tn(i.css):i.css,priority:i.priority,external:i.external})}return e}const nh=dt("SystemBannerManager");class Uc{static show(e){this.banners.set(e.id,e),this.render(),nh.log(`Banner shown: ${e.id}`)}static hide(e){this.banners.delete(e)&&(this.render(),nh.log(`Banner hidden: ${e}`))}static hideAll(){this.banners.clear(),this.render(),nh.log("All banners hidden")}static detectLocale(){try{const n=window.G7Core;if(n?.locale?.current)return n.locale.current()}catch{}return(navigator.language||"ko").split("-")[0]}static resolveMessage(e,n){return typeof e=="string"?e:e[n]||e.en||e.ko||Object.values(e)[0]||""}static render(){if(typeof document>"u")return;let e=document.getElementById(this.containerId);if(this.banners.size===0){e&&(e.remove(),this.adjustAppPadding(0));return}e||(e=document.createElement("div"),e.id=this.containerId,e.style.cssText="position:fixed;top:0;left:0;right:0;z-index:99999;",document.body.prepend(e));const n=Array.from(this.banners.values()).sort((i,l)=>(i.order??0)-(l.order??0)),r=this.detectLocale();e.innerHTML=n.map(i=>{const l=this.resolveMessage(i.message,r),c=i.background||"#f59e0b",d=i.color||"white";return`<div data-banner-id="${i.id}" style="background:${c};color:${d};text-align:center;padding:8px 16px;font-size:14px;font-weight:500;">${l}</div>`}).join(""),requestAnimationFrame(()=>{e&&this.adjustAppPadding(e.offsetHeight)})}static adjustAppPadding(e){const n=document.getElementById("app");n&&(n.style.paddingTop=e>0?`${e}px`:"")}}M(Uc,"banners",new Map),M(Uc,"containerId","g7-system-banners");const U=dt("TemplateApp");function ib(s){const e={};for(const n of s.keys()){if(n in e)continue;const r=s.getAll(n);r.length>1?e[n]=r:r.length===1&&(n.endsWith("[]")?e[n]=r:e[n]=r[0])}return e}const or=class or{constructor(e){M(this,"router",null);M(this,"layoutLoader",null);M(this,"errorPageHandler",null);M(this,"config");M(this,"globalState");M(this,"globalStateListeners",new Set);M(this,"currentRouteChangeId",0);M(this,"failedLayoutScripts",new Set);M(this,"currentDataSources",[]);M(this,"currentRawDataSources",[]);M(this,"currentRouteParams",{});M(this,"currentQueryParams",new URLSearchParams);M(this,"currentFetchedData",{});M(this,"currentLayoutName","");M(this,"templateErrorHandling",null);M(this,"currentWebSocketSubscriptions",[]);M(this,"extensionCacheVersion",0);M(this,"currentGlobalHeaders",[]);M(this,"transitionOverlayEl",null);M(this,"skeletonOverlayRoot",null);M(this,"skeletonOverlayContainer",null);M(this,"_spinnerState",null);M(this,"modalDataSources",new Map);this.globalState={sidebarOpen:!1},this.loadG7Config(),this.migrateLocaleStorage();const n=this.loadLocaleFromStorage(),r=n||e.locale||"ko";this.config={...e,locale:r},!n&&e.locale&&this.saveLocaleToStorage(e.locale)}loadG7Config(){if(typeof window<"u"&&window.G7Config){const e=window.G7Config;e.settings&&(this.globalState.settings=e.settings,U.log("Loaded settings from G7Config:",Object.keys(e.settings)),e.settings.upload&&(this.globalState.uploadSettings=e.settings.upload)),e.plugins&&(this.globalState.plugins=e.plugins,U.log("Loaded plugin settings from G7Config:",Object.keys(e.plugins))),e.modules&&(this.globalState.modules=e.modules,U.log("Loaded module settings from G7Config:",Object.keys(e.modules))),e.appConfig&&(this.globalState.appConfig=e.appConfig,U.log("Loaded appConfig from G7Config:",Object.keys(e.appConfig)))}}resolveRouteExpressions(e){const n=new kn,r={_global:this.globalState};return e.map(i=>{const l={...i};if(l.path&&l.path.includes("{{")){const c=l.path;l.path=n.resolveBindings(l.path,r),l.path=l.path.replace(/\/\/+/g,"/")||"/",l.path.includes("{{")&&(U.warn("Route expression resolution failed, using fallback:",c),l.path=c.replace(/\{\{[^}]+\}\}/g,"").replace(/\/\/+/g,"/")||"/")}if(l.redirect&&l.redirect.includes("{{")){const c=l.redirect;l.redirect=n.resolveBindings(l.redirect,r),l.redirect=l.redirect.replace(/\/\/+/g,"/")||"/",l.redirect.includes("{{")&&(U.warn("Route redirect expression resolution failed:",c),l.redirect=c.replace(/\{\{[^}]+\}\}/g,"").replace(/\/\/+/g,"/")||"/")}return l})}migrateLocaleStorage(){const e=["locale","g7_template_locale"];for(const n of e)try{const r=localStorage.getItem(n);r&&r!==localStorage.getItem(or.LOCALE_STORAGE_KEY)&&(localStorage.setItem(or.LOCALE_STORAGE_KEY,r),U.log(`Migrated locale from '${n}' to '${or.LOCALE_STORAGE_KEY}'`)),localStorage.removeItem(n)}catch(r){U.warn(`Failed to migrate locale key '${n}':`,r)}}async init(){try{co.getInstance().setDebug(this.config.debug),U.log("Initializing with config:",this.config),Kw();const e=br.getInstance(),n=wr.getInstance(),r=typeof window<"u"&&Number(window.G7Config?.cache_version)||0,i=r>0?r:this.loadCacheVersionFromStorage()||0,[l,c,d,f,h]=await Promise.all([Fo({templateId:this.config.templateId,templateType:this.config.templateType,locale:this.config.locale,debug:this.config.debug,cacheVersion:i}),e.loadComponents(this.config.templateId,this.config.templateType,i),Kl(i>0?uo(`templates/${this.config.templateId}/routes.json`,i):null,jr(`/api/templates/${this.config.templateId}/routes`,"json",i>0?i:null),{label:"routes.json"}).then(A=>{if(!A.ok)throw new Error(`Failed to load routes: ${A.statusText}`);return A.json()}).then(A=>{if(!A.success)throw new Error("Failed to load routes from API");return A.data}).catch(A=>{throw U.error("Error loading routes:",A),A}),n.preloadAuth(this.config.templateType==="admin"?"admin":"user"),fetch(jr(`/api/templates/${this.config.templateId}/config`,"json")).then(A=>A.ok?A.json():null).then(A=>!A?.success||!A?.data?null:A.data).catch(A=>(U.warn("Error loading template config:",A),null))]);if(U.log("Template Engine initialized"),U.log("ComponentRegistry loaded"),U.log("Routes data loaded"),U.log("User info preloaded"),U.log("Template config loaded:",h),h?.cache_version!==void 0){const A=i>0?i:null;if(this.extensionCacheVersion=h.cache_version,this.saveCacheVersionToStorage(this.extensionCacheVersion),U.log("Extension cache version:",this.extensionCacheVersion),A!==null&&A!==this.extensionCacheVersion){U.log("Cache version changed, reloading routes...");const L=await Kl(uo(`templates/${this.config.templateId}/routes.json`,this.extensionCacheVersion),jr(`/api/templates/${this.config.templateId}/routes`,"json",this.extensionCacheVersion),{label:"routes.json (reload)"}).then($=>{if(!$.ok)throw new Error(`Failed to reload routes: ${$.statusText}`);return $.json()}).then($=>{if(!$.success)throw new Error("Failed to reload routes from API");return $.data});Array.isArray(L.routes)&&(L.routes=this.resolveRouteExpressions(L.routes),Object.assign(d,L),U.log("Routes reloaded with new cache version"));try{const{TranslationEngine:$}=await Promise.resolve().then(()=>Ug),k=$.getInstance();k.setCacheVersion(this.extensionCacheVersion);const O=this.config.locale||"ko",P="en";await k.loadTranslations(this.config.templateId,O,"/api",!0),O!==P&&await k.loadTranslations(this.config.templateId,P,"/api",!0),U.log("Translations reloaded with new cache version")}catch($){U.error("Failed to reload translations:",$)}}}h?.errorHandling&&(this.templateErrorHandling=h.errorHandling,Er().setTemplateConfig(this.templateErrorHandling),U.log("Template errorHandling registered:",this.templateErrorHandling)),n.on("logout",()=>{U.log("User logged out")}),n.on("authStateChange",A=>{U.log("Auth state changed:",A)}),U.log("AuthManager event handlers registered");const m=zr(),y=this.config.templateType==="admin"?"admin":"user",S=n.getConfig(y);m.setOnUnauthorized(()=>{U.log("Unauthorized - redirecting to login page"),m.removeToken();const A=window.location.pathname+window.location.search,L=n.getLoginRedirectUrl(y,A,"session_expired");window.location.href=L}),U.log("ApiClient onUnauthorized callback registered"),this.layoutLoader=new Vf(e),this.extensionCacheVersion>0&&this.layoutLoader.setCacheVersion(this.extensionCacheVersion),U.log("LayoutLoader initialized:",this.layoutLoader);const v=new Tr({onUnauthorized:()=>{U.warn("Unauthorized request in error page")}});if(this.errorPageHandler=new nx({templateId:this.config.templateId,layoutLoader:this.layoutLoader,locale:this.config.locale,debug:this.config.debug,renderFunction:_s,dataSourceManager:v,globalState:this.globalState}),U.log("ErrorPageHandler initialized with DataSourceManager"),await this.handleServerError()){U.log("Server error handled, skipping normal initialization");return}if(this.router=new ex(this.config.templateId),Array.isArray(d.routes)){const A=this.resolveRouteExpressions(d.routes);this.router.setRoutes(A)}else throw new Error("Invalid routes data format");U.log("Router initialized:",this.router),U.log("Routes set:",this.router.getRoutes());const{getActionDispatcher:_}=await Promise.resolve().then(()=>Gr),x=_();if(x&&(x.setDefaultContext({navigate:A=>this.router?.navigate(A)}),x.setGlobalStateUpdater((A,L)=>this.setGlobalState(A,L)),U.log("Navigate function and setGlobalState injected to ActionDispatcher")),await this.loadExtensionAssets(),this.reinitializeTemplateHandlers(),this.router.on("routeChange",A=>this.handleRouteChange(A)),this.router.on("routeNotFound",A=>this.handleRouteNotFound(A)),typeof window<"u"&&eb(window.location.pathname)){U.log("Layout editor mode detected — skipping router match"),await _s({containerId:"app",layoutJson:{components:[]},dataContext:{},translationContext:{templateId:this.config.templateId,locale:this.config.locale}}),U.log("Template App initialized in layout editor mode");return}this.router.navigateToCurrentPath(),U.log("Template App initialized successfully")}catch(e){U.error("Initialization failed:",e),this.showInitError(e)}}async loadExtensionAssets(){try{const e=th(),n=vx();if(!n){await this.loadExtensionAssetsIndividually(),await e.loadCustomAssets();return}await e.loadBundle("module",n.moduleJs,n.moduleCss),await e.loadBundle("plugin",n.pluginJs,n.pluginCss),await e.loadCustomAssets(),U.log("Extension bundle assets loaded successfully")}catch(e){U.warn("Failed to load extension assets:",e)}}async loadExtensionAssetsIndividually(){const e=th(),n=bx();n.length>0&&(U.log("Loading module assets (individual fallback):",n.map(i=>i.identifier)),await e.loadActiveExtensionAssets(n));const r=Sx();r.length>0&&(U.log("Loading plugin assets (individual fallback):",r.map(i=>i.identifier)),await e.loadActiveExtensionAssets(r))}async handleRouteChange(e){const n=++this.currentRouteChangeId;window.__g7ForcedLocalFields=void 0,window.__g7ActionContext=void 0,window.__g7PendingLocalState=void 0,window.__g7LastSetLocalSnapshot=void 0,window.__g7SetLocalOverrideKeys=void 0,window.__g7SequenceLocalSync=void 0,window.__g7AutoBindingPaths=new Map;try{if(U.log("Route changed:",e,"requestId:",n),!this.layoutLoader)throw new Error("LayoutLoader is not initialized");if(!e.layout)throw new Error("Route layout is not defined");let r=e.layout;const i=r==="__preview__";i&&e.params?.token&&(r=`__preview__/${e.params.token}`);const l=await this.layoutLoader.loadLayout(this.config.templateId,r);if(n!==this.currentRouteChangeId){U.log("Route change cancelled (newer request exists):",n);return}U.log("Layout loaded:",l);const c=Er();l.errorHandling?(c.setLayoutConfig(l.errorHandling),U.log("Layout errorHandling registered:",l.errorHandling)):c.clearLayoutConfig();const d=l.data_sources||[],f=e.query||{},h=new URLSearchParams;for(const[Z,ge]of Object.entries(f))if(Array.isArray(ge))for(const H of ge)h.append(Z,H);else h.set(Z,ge);const m={route:e.params||{},query:f,_global:this.globalState};l.scripts&&Array.isArray(l.scripts)&&await this.loadLayoutScripts(l.scripts,m);const{DataSourceManager:y,getActionDispatcher:S}=await Promise.resolve().then(()=>Gr),v=new y;if(i){const Z=S();Z&&Z.setPreviewMode(!0),this.setGlobalState({__isPreview:!0}),Uc.show({id:"preview-mode",message:{ko:"⚠ 미리보기 모드 — 페이지 이동이 비활성화됩니다",en:"⚠ Preview Mode — Navigation is disabled"},background:"linear-gradient(90deg, #f59e0b, #d97706)",color:"white"}),U.log("Preview mode activated")}else{const Z=S();Z?.isPreviewMode()&&(Z.setPreviewMode(!1),Uc.hide("preview-mode"))}if(this.currentGlobalHeaders=l.globalHeaders||[],this.currentGlobalHeaders.length>0){v.setGlobalHeaders(this.currentGlobalHeaders);const Z=S();Z&&Z.setGlobalHeaders(this.currentGlobalHeaders),U.log("globalHeaders set:",this.currentGlobalHeaders.map(ge=>ge.pattern))}if(l.named_actions&&Object.keys(l.named_actions).length>0){const Z=S();Z&&Z.setNamedActions(l.named_actions)}const _=v.filterByCondition(d,m);d.length!==_.length&&U.log("Data sources filtered by condition:",{before:d.map(Z=>Z.id),after:_.map(Z=>Z.id)});const x=_.filter(Z=>Z.loading_strategy==="blocking"),A=_.filter(Z=>(Z.loading_strategy||"progressive")!=="blocking"&&Z.type!=="websocket"),L=Array.isArray(l.transition_overlay?.wait_for)?l.transition_overlay.wait_for:[],$=L.length>0&&_.some(Z=>L.includes(Z.id)&&Z.type!=="websocket"&&(Z.loading_strategy||"progressive")!=="background");if((x.length>0||$)&&l.transition_overlay){const Z=typeof l.transition_overlay=="boolean"?{enabled:l.transition_overlay,style:"opaque"}:l.transition_overlay;Z.enabled&&Z.style==="skeleton"&&Z.skeleton?.component&&Z.target?this.renderSkeletonOverlay(Z.target,Z.skeleton,l,Z.fallback_target):Z.enabled&&Z.style==="spinner"&&Z.target&&this.renderSpinnerOverlay(Z.target,Z.spinner,Z.fallback_target)}let k={},O={},P={},G={};this.currentWebSocketSubscriptions.length>0&&(U.log("Unsubscribing previous WebSocket subscriptions:",this.currentWebSocketSubscriptions),v.unsubscribeWebSockets(this.currentWebSocketSubscriptions),this.currentWebSocketSubscriptions=[]),this.currentDataSources=_,this.currentRawDataSources=d,this.currentRouteParams=e.params||{},this.currentQueryParams=h,U.log(`handleRouteChange #${n} - queryObject:`,f),U.log(`handleRouteChange #${n} - queryParams:`,h.toString()),x.length>0&&(U.log("Fetching blocking data sources:",x.map(ge=>ge.id)),(await v.fetchDataSourcesWithResults(x,e.params||{},h)).forEach(ge=>{if(ge.state==="success"&&ge.data!==void 0)k[ge.id]=ge.data;else if(ge.state==="error"&&ge.error){const H=ge.error,T=H.response?.data?.message;O[ge.id]={message:T||ge.error.message,status:H.response?.status||H.status}}}),this.processInitOptions(x,k,P,G),this.currentFetchedData={...k},U.log("Blocking data loaded:",Object.keys(k)),Object.keys(O).length>0&&U.log("Data source errors:",O),Object.keys(P).length>0&&U.log("Local state init (blocking):",Object.keys(P)),Object.keys(G).length>0&&U.log("Isolated state init (blocking):",Object.keys(G)));const B=A.length>0;if(B&&(Ur.setPending(!0),U.log("Transition started before rendering")),n!==this.currentRouteChangeId){U.log("Route change cancelled after blocking data (newer request exists):",n);return}const{getState:W}=await Promise.resolve().then(()=>Gr),pe=W().currentDataContext||{},Se=A.map(Z=>Z.id),we={};if(B){Se.forEach(ge=>{pe[ge]!==void 0?we[ge]=pe[ge]:we[ge]=void 0});const Z=Object.keys(we).filter(ge=>we[ge]!==void 0);Z.length>0&&U.log("Preserving previous progressive data:",Z),U.log("Progressive data sources initialized:",Se)}const Ue=l.defines||{},Fe={...we,...e.params,...k,route:{...e.params||{},path:e.path},query:f,_global:{...this.globalState},_globalSetState:Z=>this.setGlobalState(Z),_dataSourceErrors:Object.keys(O).length>0?O:void 0,_localInit:Object.keys(P).length>0?P:void 0,_isolatedInit:Object.keys(G).length>0?G:void 0,_defines:Object.keys(Ue).length>0?Ue:void 0};if(l.computed&&Object.keys(l.computed).length>0){const Z=this.calculateComputed(l.computed,Fe);Object.keys(Z).length>0&&(Fe._computed=Z,this.globalState._computed=Z,U.log("Computed values calculated:",Object.keys(Z))),Fe._computedDefinitions=l.computed}const qe=l.layout_name||e.layout;this.currentLayoutName!==""&&this.currentLayoutName!==qe&&(U.log("_local reset due to layout change:",{from:this.currentLayoutName,to:qe}),this.globalState._local={},mE()),this.currentLayoutName=qe;const J=l.initLocal||l.state;if(J&&Object.keys(J).length>0){this.globalState._local||(this.globalState._local={});for(const[Z,ge]of Object.entries(J))this.globalState._local[Z]===void 0&&(this.globalState._local[Z]=JSON.parse(JSON.stringify(ge)));Fe._local={...this.globalState._local},U.log("initLocal applied to _local:",Object.keys(J))}if(l.initGlobal&&Object.keys(l.initGlobal).length>0){for(const[Z,ge]of Object.entries(l.initGlobal))this.globalState[Z]===void 0&&(this.globalState[Z]=JSON.parse(JSON.stringify(ge)));U.log("initGlobal applied to _global:",Object.keys(l.initGlobal))}if(l.initIsolated&&Object.keys(l.initIsolated).length>0){for(const[Z,ge]of Object.entries(l.initIsolated))G[Z]===void 0&&(G[Z]=JSON.parse(JSON.stringify(ge)));U.log("initIsolated applied:",Object.keys(l.initIsolated))}Fe._global={...this.globalState,layoutWarnings:l.warnings||[]};const fe=l.initActions||l.init_actions;if(fe&&fe.length>0){await this.executeInitActions(fe,Fe),U.log("initActions executed before render");const Z=this.globalState;if(Z._local){if(Object.keys(P).length>0){for(const[ge,H]of Object.entries(P))Z._local[ge]!==void 0?Z._local[ge]=this.deepMerge(Z._local[ge],H):Z._local[ge]=H;U.log("localInit merged into _local after initActions:",Object.keys(P))}Fe._local=Z._local,U.log("_local merged into dataContext:",Z._local)}if(Fe._global={...this.globalState,layoutWarnings:l.warnings||[]},U.log("_global merged into dataContext after initActions"),l.computed&&Object.keys(l.computed).length>0){const ge=this.calculateComputed(l.computed,Fe);Object.keys(ge).length>0&&(Fe._computed=ge,this.globalState._computed=ge,U.log("Computed values recalculated after init_actions:",Object.keys(ge)))}if(Object.keys(this.currentFetchedData).length>0){for(const[ge,H]of Object.entries(this.currentFetchedData))Fe[ge]=H;U.log("Fetched data sources merged into dataContext after initActions:",Object.keys(this.currentFetchedData))}}if(l.transition_overlay&&!this.skeletonOverlayContainer&&this.showTransitionOverlay(l.transition_overlay,l),await _s({containerId:"app",layoutJson:l,dataContext:Fe,translationContext:{templateId:this.config.templateId,locale:this.config.locale}}),U.log("Initial render complete with blocking data"),this.reattachSpinnerOverlay(),A.length>0){if(n!==this.currentRouteChangeId){U.log("Route change cancelled before progressive fetch (newer request exists):",n),Ur.setPending(!1),this.hideTransitionOverlay();return}U.log("Fetching progressive/background data sources:",A.map(H=>H.id));const{updateTemplateData:Z,getState:ge}=await Promise.resolve().then(()=>Gr);try{const H=A.map(async T=>{try{const de=(await v.fetchDataSourcesWithResults([T],e.params||{},h,this.globalState))[0];if(!de){U.log(`Data source ${T.id} skipped (no fetch result)`);return}if(n!==this.currentRouteChangeId){U.log(`Data source ${T.id} fetch cancelled (newer request exists)`);return}if(de.state==="success"&&de.data!==void 0){U.log(`Progressive data source loaded: ${T.id}`),this.currentFetchedData[T.id]=de.data;const be={};this.processInitOptions([T],{[T.id]:de.data},be);const ie=ge();if(ie.bindingEngine){const _e=[T.id];T.initGlobal&&_e.push("_global"),T.initLocal&&_e.push("_local"),ie.bindingEngine.invalidateCacheByKeys(_e)}const xe={[T.id]:de.data};Object.keys(be).length>0&&(xe._localInit=be,Object.assign(P,be)),T.initGlobal&&(xe._global={...this.globalState}),Z(xe)}else if(de.state==="error"&&de.error){const be=de.error,ie=be.response?.data?.message;O[T.id]={message:ie||de.error.message,status:be.response?.status||be.status},U.log(`Progressive data source error: ${T.id}`,O[T.id]),Z({[T.id]:null,_dataSourceErrors:{...O}})}}catch(ce){U.error(`Failed to fetch data source: ${T.id}`,ce)}});if(await Promise.all(H),n!==this.currentRouteChangeId){U.log("Route change cancelled after progressive fetch (newer request exists):",n);return}U.log("All progressive data sources loaded")}finally{Ur.setPending(!1),this.hideTransitionOverlay()}}else this.hideTransitionOverlay();const Le=_.filter(Z=>Z.type==="websocket");if(Le.length>0){U.log("Subscribing WebSocket data sources:",Le.map(T=>T.id));const{updateTemplateData:Z,getState:ge}=await Promise.resolve().then(()=>Gr),H={...this.currentFetchedData,...e.params,route:{...e.params||{},path:e.path},query:f,_global:{...this.globalState}};U.log("WebSocket binding context keys:",Object.keys(H)),this.currentWebSocketSubscriptions=v.subscribeWebSockets(_,(T,ce)=>{U.log(`WebSocket data received for: ${T}`,ce),this.currentFetchedData[T]=ce;const de=_.find(_e=>_e.id===T),be=ge();if(be.bindingEngine){const _e=[T];de?.initGlobal&&_e.push("_global"),de?.initLocal&&_e.push("_local"),be.bindingEngine.invalidateCacheByKeys(_e)}Z({[T]:ce});const xe=_.find(_e=>_e.type==="websocket"&&(_e.target_source||_e.id)===T)?.onReceive;Array.isArray(xe)&&xe.length>0&&window.G7Core?.dispatch&&(async()=>{for(const Te of xe)try{const Me=this.getActionDispatcher?.();Me&&await Me.dispatchAction(Te,{navigate:this.getRouter?.()?(pt,Ct)=>this.getRouter().navigate(pt,Ct):void 0,setState:pt=>this.setGlobalState(pt),state:this.globalState,data:{...this.globalState,$args:[ce],$event:ce},_isDispatchFallbackContext:!0})}catch(Me){U.error(`WebSocket onReceive action failed for ${T}:`,Me)}})()},H),U.log("WebSocket subscriptions established:",this.currentWebSocketSubscriptions)}U.log("Layout rendered successfully")}catch(r){U.error("Route change handling failed:",r),this.hideTransitionOverlay(),this.showRouteError(r)}}processInitOptions(e,n,r,i){e.some(c=>c.refetchOnMount===!0&&c.initLocal)&&(r._forceLocalInit=Date.now(),U.log("refetchOnMount detected, forcing local state init")),e.forEach(c=>{const d=n[c.id];if(!d)return;const f=d.data??d;if(c.initLocal){if(typeof c.initLocal=="string"){let h=f;if(c.initLocalDefaults&&typeof c.initLocalDefaults=="object"){const y=this.evaluateDefaults(c.initLocalDefaults,n);h={...y,...f},U.log(`initLocalDefaults applied for ${c.initLocal}:`,Object.keys(y))}const m=this.globalState._local?.[c.initLocal];m!==void 0&&typeof m=="object"&&typeof h=="object"?(r[c.initLocal]=this.deepMerge(m,h),U.log(`initLocal (merged): ${c.id}.data -> _local.${c.initLocal}`)):(r[c.initLocal]=h,U.log(`initLocal: ${c.id}.data -> _local.${c.initLocal}`))}else if(typeof c.initLocal=="object"&&c.initLocal.key){const{key:h,path:m}=c.initLocal;let y=m?this.extractValueByPathOrExpression(f,m,c.id):f;if(c.initLocalDefaults&&typeof c.initLocalDefaults=="object"){const v=this.evaluateDefaults(c.initLocalDefaults,n);y={...v,...y},U.log(`initLocalDefaults applied for ${h}:`,Object.keys(v))}const S=this.globalState._local?.[h];S!==void 0&&typeof S=="object"&&typeof y=="object"?(r[h]=this.deepMerge(S,y),U.log(`initLocal (merged): ${c.id}.data${m?"."+m:""} -> _local.${h}`)):(r[h]=y,U.log(`initLocal: ${c.id}.data${m?"."+m:""} -> _local.${h}`))}else if(typeof c.initLocal=="object"){const h=c.initLocal._merge||"deep",m=this.flattenNestedObjectToMappings(c.initLocal);for(const{targetPath:y,sourcePath:S}of m){const v=this.extractValueByPathOrExpression(f,S,c.id);if(y.includes(".")){const _=y.split(".")[0];r[_]===void 0&&this.globalState._local?.[_]!==void 0&&(r[_]=JSON.parse(JSON.stringify(this.globalState._local[_]))),this.setValueAtPath(r,y,v,h),U.log(`initLocal map (${h}): ${c.id} ${S} -> _local.${y}`)}else{const _=this.globalState._local?.[y];h==="replace"?(r[y]=v,U.log(`initLocal map (replace): ${c.id} ${S} -> _local.${y}`)):h==="shallow"?_!==void 0&&typeof _=="object"&&typeof v=="object"?(r[y]={..._,...v},U.log(`initLocal map (shallow): ${c.id} ${S} -> _local.${y}`)):(r[y]=v,U.log(`initLocal map: ${c.id} ${S} -> _local.${y}`)):_!==void 0&&typeof _=="object"&&typeof v=="object"?(r[y]=this.deepMerge(_,v),U.log(`initLocal map (deep): ${c.id} ${S} -> _local.${y}`)):(r[y]=v,U.log(`initLocal map: ${c.id} ${S} -> _local.${y}`))}}}}if(c.initGlobal)if(typeof c.initGlobal=="object"&&!Array.isArray(c.initGlobal)&&!("key"in c.initGlobal))for(const[m,y]of Object.entries(c.initGlobal)){if(typeof y!="string"){U.warn(`initGlobal map value must be string, got ${typeof y} for key ${m}`);continue}const S=this.extractValueByPathOrExpression(f,y,c.id),v=this.globalState[m];v!==void 0&&typeof v=="object"&&typeof S=="object"?(this.globalState[m]=this.deepMerge(v,S),U.log(`initGlobal map (merged): ${c.id} ${y} -> _global.${m}`)):(this.globalState[m]=S,U.log(`initGlobal map: ${c.id} ${y} -> _global.${m}`))}else{const m=Array.isArray(c.initGlobal)?c.initGlobal:[c.initGlobal];for(const y of m)if(typeof y=="string"){const S=this.globalState[y];S!==void 0&&typeof S=="object"&&typeof f=="object"?(this.globalState[y]=this.deepMerge(S,f),U.log(`initGlobal (merged): ${c.id}.data -> _global.${y}`)):(this.globalState[y]=f,U.log(`initGlobal: ${c.id}.data -> _global.${y}`))}else if(typeof y=="object"&&y.key){const{key:S,path:v}=y,_=v?this.extractValueByPathOrExpression(f,v,c.id):f,x=this.globalState[S];x!==void 0&&typeof x=="object"&&typeof _=="object"?(this.globalState[S]=this.deepMerge(x,_),U.log(`initGlobal (merged): ${c.id}.data${v?"."+v:""} -> _global.${S}`)):(this.globalState[S]=_,U.log(`initGlobal: ${c.id}.data${v?"."+v:""} -> _global.${S}`))}}if(i&&c.initIsolated){if(typeof c.initIsolated=="string"){const h=i[c.initIsolated];h!==void 0&&typeof h=="object"&&typeof f=="object"?(i[c.initIsolated]=this.deepMerge(h,f),U.log(`initIsolated (merged): ${c.id}.data -> _isolated.${c.initIsolated}`)):(i[c.initIsolated]=f,U.log(`initIsolated: ${c.id}.data -> _isolated.${c.initIsolated}`))}else if(typeof c.initIsolated=="object"&&c.initIsolated.key){const{key:h,path:m}=c.initIsolated,y=m?this.extractValueByPathOrExpression(f,m,c.id):f,S=i[h];S!==void 0&&typeof S=="object"&&typeof y=="object"?(i[h]=this.deepMerge(S,y),U.log(`initIsolated (merged): ${c.id}.data${m?"."+m:""} -> _isolated.${h}`)):(i[h]=y,U.log(`initIsolated: ${c.id}.data${m?"."+m:""} -> _isolated.${h}`))}else if(typeof c.initIsolated=="object")for(const[h,m]of Object.entries(c.initIsolated)){if(typeof m!="string"){U.warn(`initIsolated map value must be string, got ${typeof m} for key ${h}`);continue}const y=this.extractValueByPathOrExpression(f,m,c.id),S=i[h];S!==void 0&&typeof S=="object"&&typeof y=="object"?(i[h]=this.deepMerge(S,y),U.log(`initIsolated map (merged): ${c.id} ${m} -> _isolated.${h}`)):(i[h]=y,U.log(`initIsolated map: ${c.id} ${m} -> _isolated.${h}`))}}})}evaluateDefaults(e,n){const r={};for(const[i,l]of Object.entries(e))if(typeof l=="string"&&l.startsWith("{{")&&l.endsWith("}}")){const c=l.slice(2,-2).trim();r[i]=this.evaluateExpression(c,n)}else r[i]=l;return r}evaluateExpression(e,n){try{const r=e.split("??").map(i=>i.trim());for(const i of r){if(/^['"].*['"]$/.test(i))return i.slice(1,-1);if(i==="true")return!0;if(i==="false")return!1;if(/^-?\d+(\.\d+)?$/.test(i))return Number(i);const l=this.getNestedValue(n,i);if(l!=null)return l}return}catch(r){U.warn(`Expression evaluation failed: ${e}`,r);return}}getNestedValue(e,n){const r=n.replace(/\?\./g,".");let i=e;const l=r.split(/\.(?![^\[]*\])/).flatMap(c=>{const d=c.match(/^([^\[]*)((?:\[\d+\])*)$/);if(d){const[,f,h]=d,m=[];f&&m.push(f);const y=h.match(/\[\d+\]/g);return y&&m.push(...y),m}return[c]}).filter(c=>c!=="");for(const c of l){if(i==null)return;if(c.startsWith("[")&&c.endsWith("]")){const d=parseInt(c.slice(1,-1),10);i=i[d]}else i=i[c]}return i}extractValueByPathOrExpression(e,n,r){const i=Da(n);if(i!==null){const l=new kn,c={data:e,_global:this.globalState,_local:this.globalState._local||{}};try{const d=Gn(i)?l.evaluatePipeExpression(i,c,{skipCache:!0}):l.evaluateExpression(i,c);return U.log(`initLocal/initGlobal expression evaluated: ${n} -> `,d),d}catch(d){U.warn(`initLocal/initGlobal expression evaluation failed for ${r}:`,n,d);return}}return this.getNestedValue(e,n)}async loadLayoutScripts(e,n){const r=[];for(const i of e){if((i.if!==void 0||i.conditions!==void 0)&&!os({if:i.if,conditions:i.conditions},n,this.bindingEngine,`script:${i.id}`)){U.log(`Script skipped (condition not met): ${i.id}`);continue}if(document.getElementById(i.id)){U.log(`Script already loaded: ${i.id}`);continue}if(!this.isAllowedScriptSrc(i.src)){U.warn(`Blocked untrusted external script src (same-origin path or declared trusted host required): ${i.id} (${i.src})`);continue}r.push(this.loadLayoutScript(i))}r.length>0&&(await Promise.all(r),U.log(`All scripts loaded: ${e.filter(i=>!document.getElementById(i.id)||r.length>0).map(i=>i.id).join(", ")}`))}async loadLayoutScript(e){const n=e.src.startsWith("/")?Tn(e.src):e.src;try{await ra(n,{id:e.id},{label:`layout-script:${e.id}`}),this.failedLayoutScripts.delete(e.id),nb(`layout-script:${e.id}`),U.log(`Script loaded successfully: ${e.id}`)}catch(r){this.failedLayoutScripts.add(e.id),U.warn(`Failed to load script after retries: ${e.id} (${n})`,r),ws({id:`layout-script:${e.id}`,label:e.id,retry:async()=>{document.getElementById(e.id)?.remove(),await ra(n,{id:e.id},{label:`layout-script:${e.id}`}),this.failedLayoutScripts.delete(e.id)}})}}getFailedLayoutScripts(){return Array.from(this.failedLayoutScripts)}isAllowedScriptSrc(e){if(typeof e!="string")return!1;const n=e.trim();if(n==="")return!1;const r=or.normalizeScriptSrcForOriginCheck(n),i=r.startsWith("//"),l=/^[a-z][a-z0-9+.-]*:/i.test(r);if(!i&&!l&&r.startsWith("/"))return!0;const c=this.extractScriptHost(r);return c!==null&&this.getTrustedScriptHosts().includes(c)}static normalizeScriptSrcForOriginCheck(e){return e.replace(/[\t\n\r]/g,"").replace(/\\/g,"/").replace(/^([a-z][a-z0-9+.\-]*:)?\/{2,}/i,"$1//")}extractScriptHost(e){try{const n=e.startsWith("//")?`${window.location.protocol}${e}`:e,r=new URL(n,window.location.origin);return r.protocol!=="http:"&&r.protocol!=="https:"?null:r.hostname.toLowerCase()}catch{return null}}getTrustedScriptHosts(){const e=window.G7Config?.trustedScriptHosts;return Array.isArray(e)?e.map(n=>String(n).toLowerCase()):[]}evaluateScriptCondition(e,n){try{if(e.startsWith("{{")&&e.endsWith("}}")){const r=e.slice(2,-2).trim();return!!Wd(r,n)}return!!e}catch(r){return U.warn(`Failed to evaluate script condition: ${e}`,r),!1}}showInitError(e){if(Fl()){U.warn("Init failed while document is unloading — skipping error screen",e);return}const n=Zy(e);Zf.renderFromError("app",n,"초기화 실패",this.config.debug,{templateId:this.config.templateId,locale:this.config.locale},void 0,e)}showTransitionOverlay(e,n){const r=typeof e=="boolean"?{enabled:e,style:"opaque",target:void 0,skeleton:void 0,spinner:void 0}:{enabled:e.enabled,style:e.style||"opaque",target:e.target,skeleton:e.skeleton,spinner:e.spinner,fallback_target:e.fallback_target};if(!r.enabled)return;if(this.hideTransitionOverlay(),r.style==="skeleton"&&r.skeleton?.component&&r.target&&n){this.renderSkeletonOverlay(r.target,r.skeleton,n,r.fallback_target);return}if(r.style==="spinner"&&r.target){this.renderSpinnerOverlay(r.target,r.spinner,r.fallback_target);return}const i=document.documentElement.classList.contains("dark");let l,c="";switch(r.style){case"blur":l=i?"rgba(17,24,39,0.3)":"rgba(255,255,255,0.3)",c="backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);";break;case"fade":l=i?"rgba(17,24,39,0.8)":"rgba(255,255,255,0.8)";break;case"skeleton":l=i?"rgb(17,24,39)":"rgb(249,250,251)";break;default:l=i?"rgb(17,24,39)":"rgb(249,250,251)";break}if(r.target){const d=`#${CSS.escape(r.target)}`,f=document.createElement("style");f.id="g7-transition-overlay",f.textContent=`${d}{position:relative;z-index:0;}${d}::after{content:'';position:absolute;inset:0;background:${l};${c}z-index:2147483647;pointer-events:none;}`,document.head.appendChild(f),this.transitionOverlayEl=f}else{const d=document.createElement("div");d.id="g7-transition-overlay",d.setAttribute("aria-hidden","true"),d.style.position="fixed",d.style.inset="0",d.style.zIndex="9999",d.style.pointerEvents="none",d.style.background=l;for(const f of c.split(";")){const h=f.indexOf(":");h!==-1&&d.style.setProperty(f.slice(0,h).trim(),f.slice(h+1).trim())}document.body.appendChild(d),this.transitionOverlayEl=d}}hideTransitionOverlay(){this.transitionOverlayEl&&(this.transitionOverlayEl.remove(),this.transitionOverlayEl=null),this.hideSkeletonOverlay()}renderSkeletonOverlay(e,n,r,i){const c=br.getInstance().getComponent(n.component);if(!c){U.log(`Skeleton component "${n.component}" not found in registry, falling back to opaque overlay`),this.showTransitionOverlay({enabled:!0,style:"opaque",target:e});return}let d=document.getElementById(e),f="target";if(!d&&i&&(d=document.getElementById(i),f="fallback"),d||(d=document.getElementById("app"),f="fullpage"),!d){U.log(`Skeleton overlay: no target found (target="#${e}", fallback="${i||"none"}"), falling back to opaque overlay`),this.showTransitionOverlay({enabled:!0,style:"opaque",target:e});return}this.hideSkeletonOverlay();const m=document.documentElement.classList.contains("dark")?"rgb(17,24,39)":"rgb(249,250,251)",y=f==="fullpage"?"app":f==="fallback"?i:e,S=`#${CSS.escape(y)}`,v=document.createElement("style");v.id="g7-skeleton-overlay-style",v.textContent=`${S}{position:relative;z-index:0;}${S}::after{content:'';position:absolute;inset:0;background:${m};z-index:2147483646;pointer-events:none;}`,document.head.appendChild(v),this.transitionOverlayEl=v;const _=document.createElement("div");if(_.id="g7-skeleton-overlay",_.setAttribute("role","status"),_.setAttribute("aria-busy","true"),_.setAttribute("aria-label","Loading..."),f==="fullpage")_.style.cssText=["position:fixed","inset:0","z-index:20","overflow:hidden","pointer-events:none",`background:${m}`].join(";")+";";else{const k=d.getBoundingClientRect(),O=window.scrollX||document.documentElement.scrollLeft,P=window.scrollY||document.documentElement.scrollTop;_.style.cssText=["position:absolute",`top:${k.top+P}px`,`left:${k.left+O}px`,`width:${k.width}px`,`height:${k.height}px`,"z-index:20","overflow:hidden","pointer-events:none",`background:${m}`].join(";")+";"}document.body.appendChild(_),this.skeletonOverlayContainer=_;const x=r.components||[];let A;if(f==="fullpage")A=x;else{const k=f==="fallback"?i:e;A=this.findComponentChildrenById(x,k)}const L=wd.createRoot(_);this.skeletonOverlayRoot=L,Ma.flushSync(()=>{L.render(Ye.createElement(c,{components:A,options:{animation:n.animation||"pulse",iteration_count:n.iteration_count||5}}))});const $=f==="fullpage"?"fullpage (#app)":f==="fallback"?`fallback (#${i})`:`target (#${e})`;U.log(`Skeleton overlay rendered [${$}] with "${n.component}" (${A.length} components)`)}findComponentChildrenById(e,n){const r=i=>{for(const l of i){if(l.id===n)return l.children||[];if(l.children&&Array.isArray(l.children)){const c=r(l.children);if(c!==null)return c}}return null};return r(e)||e}renderSpinnerOverlay(e,n,r){let i=document.getElementById(e),l="target";if(!i&&r&&(i=document.getElementById(r),l="fallback"),i||(i=document.getElementById("app"),l="fullpage"),!i){U.log(`Spinner overlay: no target found (target="#${e}", fallback="${r||"none"}"), falling back to opaque overlay`),this.showTransitionOverlay({enabled:!0,style:"opaque",target:e});return}this.hideSkeletonOverlay();const c=l==="fullpage"?"app":l==="fallback"?r:e,d=`#${CSS.escape(c)}`,f=document.createElement("style");f.id="g7-skeleton-overlay-style",f.textContent=[`${d}{position:relative;}`,"@keyframes g7-spin{to{transform:rotate(360deg)}}"].join(""),document.head.appendChild(f),this.transitionOverlayEl=f;const h=n?.text||window.G7Core?.t?.("nav.loading")||"";this._spinnerState={target:e,fallbackTarget:r,spinnerConfig:n,resolvedText:h},this._mountSpinnerInTarget(i);const m=l==="fullpage"?"fullpage (#app)":l==="fallback"?`fallback (#${r})`:`target (#${e})`,y=n?.component||"default spinner";U.log(`Spinner overlay rendered [${m}] with "${y}"`)}_mountSpinnerInTarget(e){if(!this._spinnerState)return;const{spinnerConfig:n,resolvedText:r}=this._spinnerState;if(this.skeletonOverlayRoot){try{this.skeletonOverlayRoot.unmount()}catch{}this.skeletonOverlayRoot=null}if(this.skeletonOverlayContainer){try{this.skeletonOverlayContainer.remove()}catch{}this.skeletonOverlayContainer=null}const i=document.createElement("div");if(i.id="g7-skeleton-overlay",i.setAttribute("role","status"),i.setAttribute("aria-busy","true"),e.appendChild(i),this.skeletonOverlayContainer=i,n?.component){const c=br.getInstance().getComponent(n.component);if(c){const d=wd.createRoot(i);this.skeletonOverlayRoot=d,Ma.flushSync(()=>{d.render(Ye.createElement(c,{options:{text:r}}))});return}U.log(`Spinner component "${n.component}" not found in registry, using default spinner`)}i.innerHTML='<div style="position:absolute;inset:0;z-index:2147483647;overflow:hidden;background:var(--g7-overlay-bg, rgb(249,250,251));display:flex;align-items:center;justify-content:center;"><div style="width:32px;height:32px;border:3px solid var(--g7-spinner-color, #9ca3af);border-top-color:transparent;border-radius:50%;animation:g7-spin 0.8s linear infinite;"></div></div>'}reattachSpinnerOverlay(){if(!this._spinnerState)return;const{target:e,fallbackTarget:n}=this._spinnerState;let r=document.getElementById(e);!r&&n&&(r=document.getElementById(n)),r||(r=document.getElementById("app")),r&&(this._mountSpinnerInTarget(r),U.log("Spinner overlay reattached to new DOM target"))}hideSkeletonOverlay(){if(this.skeletonOverlayRoot){try{this.skeletonOverlayRoot.unmount()}catch{}this.skeletonOverlayRoot=null}if(this.skeletonOverlayContainer){try{this.skeletonOverlayContainer.parentNode&&this.skeletonOverlayContainer.remove()}catch{}this.skeletonOverlayContainer=null}const e=document.getElementById("g7-skeleton-overlay-style");e&&e.remove(),this._spinnerState=null}showRouteError(e){if(e instanceof xr&&e.details?.status===401){const r=this.config.templateId||"",i=window.location.pathname,l=r.includes("admin")||i.startsWith("/admin")?"admin":"user",c=i+window.location.search,d=!!zr().getToken()||e.details?.hadToken===!0,f=wr.getInstance().getLoginRedirectUrl(l,c,d?"session_expired":void 0);window.location.href=f;return}const n=Zy(e);Zf.renderFromError("app",n,"페이지 로딩 실패",this.config.debug,{templateId:this.config.templateId,locale:this.config.locale},void 0,e)}async handleServerError(){const e=window.G7Error;if(!e)return!1;U.warn("Server error detected:",e);try{return this.errorPageHandler&&(e.data&&(this.globalState.errorData=e.data),this.errorPageHandler.updateGlobalState(this.globalState),this.errorPageHandler.updateLocale(this.config.locale),await this.errorPageHandler.renderError(e.code,"app"))?(U.log(`${e.code} error page rendered successfully`),!0):(U.log(`Falling back to ErrorDisplay for ${e.code}`),this.showInitError(new Error(`Service unavailable (${e.code})`)),!0)}catch(n){return U.error(`Failed to render ${e.code} page:`,n),this.showInitError(new Error(`Service unavailable (${e.code})`)),!0}}async handleRouteNotFound(e){U.warn("Route not found:",e);try{if(this.errorPageHandler&&(this.errorPageHandler.updateGlobalState(this.globalState),this.errorPageHandler.updateLocale(this.config.locale),await this.errorPageHandler.renderError(404,"app"))){U.log("404 error page rendered successfully");return}U.log("Falling back to ErrorDisplay for 404"),this.showRouteError(new Error(`Page not found: ${e}`))}catch(n){U.error("Failed to render 404 page:",n),this.showRouteError(new Error(`Page not found: ${e}`))}}getRouter(){return this.router}getConfig(){return this.config}getLayoutLoader(){return this.layoutLoader}async reloadExtensionState(){U.log("reloadExtensionState: start");let e;try{const n=await fetch(jr(`/api/templates/${this.config.templateId}/config`,"json",null,`_=${Date.now()}`));if(n.ok){const r=await n.json();r?.success&&r?.data?.cache_version!==void 0&&(e=r.data.cache_version)}}catch(n){U.warn("reloadExtensionState: failed to fetch config.json",n)}e!==void 0&&e!==this.extensionCacheVersion&&(U.log(`reloadExtensionState: cache version ${this.extensionCacheVersion} -> ${e}`),this.extensionCacheVersion=e,this.saveCacheVersionToStorage(e));try{this.router&&(await this.router.loadRoutes(this.extensionCacheVersion),U.log("reloadExtensionState: routes reloaded"))}catch(n){U.error("reloadExtensionState: routes reload failed",n)}try{this.layoutLoader&&(this.extensionCacheVersion>0&&this.layoutLoader.setCacheVersion(this.extensionCacheVersion),this.layoutLoader.clear(),U.log("reloadExtensionState: layout cache cleared"))}catch(n){U.error("reloadExtensionState: layout cache clear failed",n)}try{const{TranslationEngine:n}=await Promise.resolve().then(()=>Ug),r=n.getInstance();this.extensionCacheVersion>0&&r.setCacheVersion(this.extensionCacheVersion);const i=this.config.locale||"ko",l="en";await r.loadTranslations(this.config.templateId,i,"/api",!0),i!==l&&await r.loadTranslations(this.config.templateId,l,"/api",!0),U.log("reloadExtensionState: translations reloaded")}catch(n){U.error("reloadExtensionState: translations reload failed",n)}try{const n=await fetch(`/api/locales/active?_=${Date.now()}`);if(n.ok){const i=(await n.json())?.data?.locales;if(Array.isArray(i)&&i.length>0){const l=this.globalState.appConfig??{};this.setGlobalState({appConfig:{...l,supportedLocales:i}}),U.log("reloadExtensionState: supportedLocales refreshed",i)}}}catch(n){U.warn("reloadExtensionState: supportedLocales refresh failed",n)}U.log("reloadExtensionState: done")}getActionDispatcher(){return sa().actionDispatcher}async changeLocale(e){try{if(U.log("Changing locale to:",e),this.config.locale===e){U.log("Locale is already",e);return}this.config.locale=e,this.saveLocaleToStorage(e),await this.saveLocaleToDatabase(e),this.layoutLoader&&(this.layoutLoader.clear(),U.log("Layout cache cleared")),this.errorPageHandler&&(this.errorPageHandler.updateLocale(e),U.log("ErrorPageHandler locale updated")),Pc(),await Fo({templateId:this.config.templateId,templateType:this.config.templateType,locale:e,debug:this.config.debug,cacheVersion:this.extensionCacheVersion}),U.log("Template Engine re-initialized with new locale");const{getActionDispatcher:n}=await Promise.resolve().then(()=>Gr),r=n();r&&(r.setDefaultContext({navigate:i=>this.router?.navigate(i)}),r.setGlobalStateUpdater((i,l)=>this.setGlobalState(i,l)),U.log("Navigate function and setGlobalState re-injected to ActionDispatcher")),this.reinitializeModuleHandlers(),U.log("Module handlers re-initialized"),this.reinitializeTemplateHandlers(),U.log("Template handlers re-initialized"),this.reinitializePluginHandlers(),U.log("Plugin handlers re-initialized"),this.router&&this.router.navigateToCurrentPath(),U.log("Locale changed successfully to",e)}catch(n){throw U.error("Failed to change locale:",n),n}}loadLocaleFromStorage(){try{return localStorage.getItem(or.LOCALE_STORAGE_KEY)}catch(e){return U.warn("Failed to load locale from storage:",e),null}}saveLocaleToStorage(e){try{localStorage.setItem(or.LOCALE_STORAGE_KEY,e)}catch(n){U.warn("Failed to save locale to storage:",n)}}async saveLocaleToDatabase(e){const n=localStorage.getItem("auth_token");if(!n){U.log("No auth token, skipping DB locale save");return}let r,i;if(this.config.localeApi)r=this.config.localeApi.endpoint,i=this.config.localeApi.method;else{const l=this.config.templateType==="admin";r=l?"/api/admin/users/me/language":"/api/user/profile/update-language",i=l?"PATCH":"POST"}try{const l=this.getXsrfToken(),c=await fetch(r,{method:i,headers:{"Content-Type":"application/json",Accept:"application/json",...l&&{"X-XSRF-TOKEN":l},Authorization:`Bearer ${n}`},credentials:"include",body:JSON.stringify({language:e})});c.ok?U.log("Locale saved to DB:",e):U.warn("Failed to save locale to DB (UI will still change):",c.statusText)}catch(l){U.warn("Failed to call locale API (UI will still change):",l)}}getXsrfToken(){if(typeof document>"u")return null;const n=`; ${document.cookie}`.split("; XSRF-TOKEN=");return n.length===2?decodeURIComponent(n.pop()?.split(";").shift()||""):null}loadCacheVersionFromStorage(){try{const e=localStorage.getItem(or.CACHE_VERSION_STORAGE_KEY);return e?parseInt(e,10):null}catch(e){return U.warn("Failed to load cache version from storage:",e),null}}saveCacheVersionToStorage(e){try{localStorage.setItem(or.CACHE_VERSION_STORAGE_KEY,String(e))}catch(n){U.warn("Failed to save cache version to storage:",n)}}reinitializeModuleHandlers(){if(typeof window>"u")return;const e="__",n=window;Object.keys(n).forEach(r=>{if(r.startsWith(e)&&typeof n[r]?.initModule=="function")try{n[r].initModule(),U.log(`Module handler re-initialized: ${r}`)}catch(i){U.warn(`Failed to re-initialize module handlers for ${r}:`,i)}})}reinitializeTemplateHandlers(){if(typeof window>"u")return;const e=window.G7TemplateHandlers;if(!e){U.warn("Template handlers not found on window.G7TemplateHandlers");return}const n=this.getActionDispatcher();if(!n){U.warn("ActionDispatcher not available for template handler registration");return}Object.entries(e).forEach(([r,i])=>{n.registerHandler(r,i)}),U.log(`${Object.keys(e).length} template handler(s) re-registered:`,Object.keys(e))}reinitializePluginHandlers(){if(typeof window>"u")return;const e="__",n=window;Object.keys(n).forEach(r=>{if(r.startsWith(e)&&typeof n[r]?.initPlugin=="function")try{n[r].initPlugin(),U.log(`Plugin handler re-initialized: ${r}`)}catch(i){U.warn(`Failed to re-initialize plugin handlers for ${r}:`,i)}})}getLocale(){return this.config.locale}getErrorPageHandler(){return this.errorPageHandler}getGlobalState(){return{...this.globalState}}setGlobalState(e,n){const r={...this.globalState};typeof e=="function"?this.globalState=e(this.globalState):this.globalState={...this.globalState,...e},U.log("Global state updated:",this.globalState),window.G7Core?.devTools?.captureStateSnapshot?.({source:"setGlobalState",prev:r,next:this.globalState}),this.globalStateListeners.forEach(l=>{l(this.globalState)}),n?.render!==!1&&Promise.resolve().then(()=>Gr).then(({updateTemplateData:l,getState:c})=>{const d=c();d.reactRoot&&d.currentLayoutJson&&l({_global:{...this.globalState},_local:this.globalState._local||{}})})}onGlobalStateChange(e){this.globalStateListeners.add(e)}offGlobalStateChange(e){this.globalStateListeners.delete(e)}async refetchDataSource(e,n){let r=this.currentDataSources.find(i=>i.id===e);if(!r)for(const[,i]of this.modalDataSources){const l=i.find(c=>c.id===e);if(l){r=l;break}}if(!r){U.warn(`Data source not found: ${e}`);return}U.log(`Refetching data source: ${e}`,n?.sync?"(sync mode)":"",n?.globalStateOverride?"(with global override)":"",n?.localStateOverride?"(with local override)":""),Ur.setPending(!0);try{const i=new Tr;this.currentGlobalHeaders.length>0&&i.setGlobalHeaders(this.currentGlobalHeaders);const l=sa(),c=l.currentDataContext?._global||{},d=n?.globalStateOverride?{...c,...n.globalStateOverride}:c,f=l.currentDataContext?._local||{},h=n?.localStateOverride?{...f,...n.localStateOverride}:f,y=(await i.fetchDataSourcesWithResults([r],this.currentRouteParams,this.currentQueryParams,d,h,{ignoreAutoFetch:!0}))[0];if(y.state==="success"&&y.data!==void 0){this.currentFetchedData[e]=y.data;const S={};this.processInitOptions([r],{[e]:y.data},S);const v=sa();if(v.bindingEngine){const x=[e];r.initGlobal&&x.push("_global"),r.initLocal&&x.push("_local"),v.bindingEngine.invalidateCacheByKeys(x)}const _={[e]:y.data};return Object.keys(S).length>0&&(_._localInit=S),r.initGlobal&&(_._global={...this.globalState}),As(_,n?.sync?{sync:!0}:void 0),U.log(`Data source refetched successfully: ${e}`),y.data}else if(y.state==="error"){U.error(`Failed to refetch data source: ${e}`,y.error);return}}catch(i){U.error(`Error refetching data source: ${e}`,i);return}finally{Ur.setPending(!1)}}registerModalDataSources(e,n){this.modalDataSources.set(e,n),U.log(`Modal data sources registered: ${e} (${n.length} sources)`)}unregisterModalDataSources(e){this.modalDataSources.delete(e),U.log(`Modal data sources unregistered: ${e}`)}getDataSource(e){return this.currentFetchedData[e]}setDataSource(e,n,r){if(!e){U.warn("setDataSource: dataSourceId is required");return}const{merge:i=!1,sync:l=!1}=r||{};i&&this.currentFetchedData[e]?this.currentFetchedData[e]={...this.currentFetchedData[e],...n}:this.currentFetchedData[e]=n,Promise.resolve().then(()=>Gr).then(({updateTemplateData:c})=>{c({[e]:this.currentFetchedData[e]},l?{sync:!0}:void 0)}),U.log(`setDataSource: Updated ${e}`,i?"(merged)":"(replaced)")}updateDataSourceItem(e,n,r,i,l){const{idField:c="id",merge:d=!0,skipRender:f=!1}=l||{},h=this.currentFetchedData[e];if(!h)return U.warn(`updateDataSourceItem: DataSource '${e}' not found`),!1;const m=this.parseItemPath(n);let y=h;for(const _ of m)if(y=y?.[_],y===void 0)return U.warn(`updateDataSourceItem: Path '${n}' not found in dataSource`),!1;if(!Array.isArray(y))return U.warn(`updateDataSourceItem: Target at '${n}' is not an array`),!1;const S=y.findIndex(_=>String(_[c])===String(r));if(S===-1)return U.warn(`updateDataSourceItem: Item with ${c}='${r}' not found`),!1;d?y[S]=this.deepMerge(y[S],i):y[S]={...y[S],...i};const v=window.G7Core?.devTools;return v?.isEnabled?.()&&v.trackDataSourceUpdate?.({dataSourceId:e,updateType:"partial",itemPath:n,itemId:r,updates:i,timestamp:Date.now()}),f||Promise.resolve().then(()=>Gr).then(({updateTemplateData:_})=>{_({[e]:this.currentFetchedData[e]},{sync:!1})}),U.log(`updateDataSourceItem: Updated ${e}.${n}[${c}=${r}]`),!0}parseItemPath(e){const n=[],r=/([^\.\[\]]+)|\[(\d+)\]/g;let i;for(;(i=r.exec(e))!==null;)i[1]!==void 0?n.push(i[1]):i[2]!==void 0&&n.push(parseInt(i[2],10));return n}deepMerge(e,n){if(n==null)return e;if(typeof n!="object"||Array.isArray(n))return n;const r={...e};for(const i of Object.keys(n))typeof n[i]=="object"&&n[i]!==null&&!Array.isArray(n[i])?r[i]=this.deepMerge(r[i]||{},n[i]):r[i]=n[i];return r}setValueAtPath(e,n,r,i="deep"){const l=n.split(".");let c=e;for(let h=0;h<l.length-1;h++){const m=l[h];(c[m]===void 0||c[m]===null||typeof c[m]!="object")&&(c[m]={}),c=c[m]}const d=l[l.length-1],f=c[d];i==="replace"||f===void 0?c[d]=r:i==="shallow"?typeof f=="object"&&typeof r=="object"&&!Array.isArray(r)?c[d]={...f,...r}:c[d]=r:typeof f=="object"&&typeof r=="object"&&!Array.isArray(r)?c[d]=this.deepMerge(f,r):c[d]=r}flattenNestedObjectToMappings(e,n=""){const r=[];for(const[i,l]of Object.entries(e)){if(i==="_merge")continue;const c=n?`${n}.${i}`:i;typeof l=="string"?r.push({targetPath:c,sourcePath:l}):typeof l=="object"&&l!==null&&!Array.isArray(l)&&r.push(...this.flattenNestedObjectToMappings(l,c))}return r}async updateQueryParams(e,n){U.log("updateQueryParams:",e);const r=new URL(e,window.location.origin),i=new URLSearchParams(r.search);window.history.replaceState(null,"",e),U.log("URL updated via replaceState"),this.currentQueryParams=i,U.log("currentQueryParams updated:",Object.fromEntries(i.entries()));const l=new Tr,c=sa().currentDataContext?._global||this.globalState||{},d={route:this.currentRouteParams||{},query:ib(this.currentQueryParams),_global:c},f=Array.isArray(this.currentRawDataSources)&&this.currentRawDataSources.length>0?l.filterByCondition(this.currentRawDataSources,d):this.currentDataSources;this.currentDataSources=f;const h=f.filter(x=>x.auto_fetch!==!1&&x.type!=="websocket");if(h.length===0){U.log("No auto_fetch data sources to refetch");return}U.log(`Refetching ${h.length} auto_fetch data sources`),Ur.setPending(!0);const m=sa().currentLayoutJson,y=m?.transition_overlay,S=Array.isArray(y?.wait_for)?y.wait_for:[],v=h.some(x=>(x.loading_strategy||"progressive")==="blocking"),_=S.length>0&&h.some(x=>S.includes(x.id)&&x.type!=="websocket"&&(x.loading_strategy||"progressive")!=="background");if((v||_)&&y&&typeof y=="object"){const x=n?.transitionOverlayTarget||y.target;y.enabled&&y.style==="skeleton"&&y.skeleton?.component&&x?this.renderSkeletonOverlay(x,y.skeleton,m,y.fallback_target):y.enabled&&y.style==="spinner"&&x&&this.renderSpinnerOverlay(x,y.spinner,y.fallback_target)}try{const x=new Tr;this.currentGlobalHeaders.length>0&&x.setGlobalHeaders(this.currentGlobalHeaders);const A=sa(),L=A.currentDataContext?._global||{},$=await x.fetchDataSourcesWithResults(h,this.currentRouteParams,this.currentQueryParams,L,void 0,{ignoreAutoFetch:!1}),k={},O={},P=new Map(h.map(G=>[G.id,G]));for(const G of $){const B=P.get(G.id);if(!B){U.warn(`Refetch result id not found in autoFetchDataSources: ${G.id}`);continue}const W=G.id;G.state==="success"&&G.data!==void 0?(this.currentFetchedData[W]=G.data,k[W]=G.data,this.processInitOptions([B],{[W]:G.data},O),U.log(`Data source refetched: ${W}`)):G.state==="error"&&U.error(`Failed to refetch data source: ${W}`,G.error)}if(A.bindingEngine){const G=Object.keys(k);G.push("query"),A.bindingEngine.invalidateCacheByKeys(G)}if(Object.keys(O).length>0&&(k._localInit=O),Object.keys(k).length>0){if(k.query=ib(this.currentQueryParams),A.currentLayoutJson?.computed&&Object.keys(A.currentLayoutJson.computed).length>0){const G={...A.currentDataContext,...k,query:k.query},B=this.calculateComputed(A.currentLayoutJson.computed,G);Object.keys(B).length>0&&(k._computed=B,this.globalState._computed=B,U.log("Computed values recalculated in updateQueryParams:",Object.keys(B)))}As(k,{sync:!0}),U.log("Template data updated with new query params")}}catch(x){U.error("Error in updateQueryParams:",x)}finally{Ur.setPending(!1),this.hideTransitionOverlay()}}calculateComputed(e,n){const r={},i=new kn;for(const[l,c]of Object.entries(e))try{let d;if(this.isComputedSwitchDefinition(c))d=i.resolveSwitch(c,n,{skipCache:!0});else if(typeof c=="string")if(c.startsWith("{{")&&c.endsWith("}}")){const f=c.slice(2,-2).trim();d=this.evaluateComputedExpression(f,n)}else d=c;r[l]=d,U.log(`Computed ${l}:`,d)}catch(d){U.warn(`Failed to calculate computed value: ${l}`,d),r[l]=void 0}return r}isComputedSwitchDefinition(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&"$switch"in e&&"$cases"in e}evaluateComputedExpression(e,n){try{return Wd(e,n)}catch(r){U.warn(`Expression evaluation failed: ${e}`,r);return}}async executeInitActions(e,n={}){const{getActionDispatcher:r}=await Promise.resolve().then(()=>Gr),i=r();if(!i){U.warn("ActionDispatcher not available for init_actions");return}U.log("Executing init_actions:",e.map(d=>d.handler)),U.log("Init actions dataContext:",n),U.log("Init actions dataContext._global:",n._global);const l=e.map(d=>d.handler).filter(d=>d.includes("."));l.length>0&&await this.waitForHandlers(i,l);let c={...n};for(const d of e)try{const f={type:"click",handler:d.handler,target:d.target,params:d.params,resultTo:d.resultTo,onSuccess:d.onSuccess,onError:d.onError,if:d.if,conditions:d.conditions,auth_mode:d.auth_mode,auth_required:d.auth_required},h=i.createHandler(f,c),m=new Event("init");await h(m),U.log(`Init action executed: ${d.handler}`);const y=this.globalState;c={...c,_global:{...y},_local:y._local||c._local||{}},U.log(`Data context refreshed after ${d.handler}:`,{cartKey:c._global?.cartKey})}catch(f){U.error(`Failed to execute init action: ${d.handler}`,f)}}async waitForHandlers(e,n,r=5e3){const i=Date.now(),l=50,c=()=>n.every(f=>e.customHandlers?.has(f));if(c()){U.log("All module handlers already registered");return}const d=th().getFailedJsAssets();if(d.length>0){const f=d.some(y=>y==="module"||y==="plugin"),h=n.filter(y=>!e.customHandlers?.has(y)),m=h.length>0&&h.every(y=>d.some(S=>y.startsWith(`${S}.`)));if(f||m){U.warn("Extension asset load failed — not waiting for handlers that will never register:",{pending:h,failedAssets:d});return}}return U.log("Waiting for module handlers:",n),new Promise(f=>{const h=()=>{if(c()){U.log("All module handlers now registered"),f();return}if(Date.now()-i>=r){const m=n.filter(y=>!e.customHandlers?.has(y));U.warn("Timeout waiting for handlers:",m),f();return}setTimeout(h,l)};h()})}};M(or,"LOCALE_STORAGE_KEY","g7_locale"),M(or,"CACHE_VERSION_STORAGE_KEY","g7_cache_version");let Uo=or;function rh(s){const e=new Uo(s);return s.websocket&&(Nc.configure(s.websocket),U.log("WebSocket 설정 완료")),document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{e.init(),window.__templateApp=e}):(e.init(),window.__templateApp=e),e}typeof window<"u"&&(window.G7Core=window.G7Core||{},window.G7Core.initTemplateApp=rh,window.G7Core.dataSource={refetch:async(s,e)=>{const n=window.__templateApp;if(!n){U.warn("TemplateApp not initialized (G7Core.dataSource.refetch)");return}return n.refetchDataSource(s,e)},get:s=>{const e=window.__templateApp;if(!e){U.warn("TemplateApp not initialized (G7Core.dataSource.get)");return}return e.getDataSource(s)}});function wx(s={}){const{checked:e,value:n,name:r,type:i="checkbox"}=s,c=n!==void 0?n:i==="checkbox"||i==="radio"?e??!1:String(e??""),d={checked:e??!1,value:c,name:r??"",type:i};return{target:d,currentTarget:d,preventDefault:()=>{},stopPropagation:()=>{},nativeEvent:new Event("change"),bubbles:!0,cancelable:!0,defaultPrevented:!1,eventPhase:Event.AT_TARGET,isTrusted:!1,timeStamp:Date.now(),type:"change",isDefaultPrevented:()=>!1,isPropagationStopped:()=>!1,persist:()=>{}}}function Cx(s={}){const{button:e=0,clientX:n=0,clientY:r=0}=s;return{button:e,clientX:n,clientY:r,preventDefault:()=>{},stopPropagation:()=>{},nativeEvent:new MouseEvent("click"),bubbles:!0,cancelable:!0,defaultPrevented:!1,eventPhase:Event.AT_TARGET,isTrusted:!1,timeStamp:Date.now(),type:"click",isDefaultPrevented:()=>!1,isPropagationStopped:()=>!1,persist:()=>{},target:document.createElement("div"),currentTarget:document.createElement("div")}}function Ex(){return{preventDefault:()=>{},stopPropagation:()=>{},nativeEvent:new Event("submit"),bubbles:!0,cancelable:!0,defaultPrevented:!1,eventPhase:Event.AT_TARGET,isTrusted:!1,timeStamp:Date.now(),type:"submit",isDefaultPrevented:()=>!1,isPropagationStopped:()=>!1,persist:()=>{},target:document.createElement("form"),currentTarget:document.createElement("form")}}function _x(s,e="keydown"){return{key:s,code:s.length===1?`Key${s.toUpperCase()}`:s,preventDefault:()=>{},stopPropagation:()=>{},nativeEvent:new KeyboardEvent(e,{key:s}),bubbles:!0,cancelable:!0,defaultPrevented:!1,eventPhase:Event.AT_TARGET,isTrusted:!1,timeStamp:Date.now(),type:e,isDefaultPrevented:()=>!1,isPropagationStopped:()=>!1,persist:()=>{},target:document.createElement("div"),currentTarget:document.createElement("div"),altKey:!1,ctrlKey:!1,metaKey:!1,shiftKey:!1,repeat:!1}}const Ax={justify:/^justify-(start|end|center|between|around|evenly)$/,items:/^items-(start|end|center|baseline|stretch)$/,content:/^content-(start|end|center|between|around|evenly|stretch)$/,self:/^self-(auto|start|end|center|stretch|baseline)$/,flex:/^flex-(row|row-reverse|col|col-reverse|wrap|wrap-reverse|nowrap|1|auto|initial|none)$/,grow:/^(grow|grow-0)$/,shrink:/^(shrink|shrink-0)$/,basis:/^basis-/,order:/^(order-|-)order-/,gap:/^gap(-x|-y)?-/,gridCols:/^grid-cols-/,gridRows:/^grid-rows-/,colSpan:/^col-(span-|start-|end-)/,rowSpan:/^row-(span-|start-|end-)/,display:/^(block|inline-block|inline|flex|inline-flex|table|inline-table|table-caption|table-cell|table-column|table-column-group|table-footer-group|table-header-group|table-row-group|table-row|flow-root|grid|inline-grid|contents|list-item|hidden)$/,position:/^(static|fixed|absolute|relative|sticky)$/,inset:/^(inset|top|right|bottom|left)-/,zIndex:/^z-/,width:/^w-/,minWidth:/^min-w-/,maxWidth:/^max-w-/,height:/^h-/,minHeight:/^min-h-/,maxHeight:/^max-h-/,padding:/^p[xytblr]?-/,margin:/^-?m[xytblr]?-/,space:/^space-(x|y)-/,fontSize:/^text-(xs|sm|base|lg|xl|2xl|3xl|4xl|5xl|6xl|7xl|8xl|9xl)$/,fontWeight:/^font-(thin|extralight|light|normal|medium|semibold|bold|extrabold|black)$/,fontStyle:/^(italic|not-italic)$/,fontFamily:/^font-(sans|serif|mono)/,textAlign:/^text-(left|center|right|justify|start|end)$/,textColor:/^text-(inherit|current|transparent|black|white|slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-/,textDecoration:/^(underline|overline|line-through|no-underline)$/,textTransform:/^(uppercase|lowercase|capitalize|normal-case)$/,lineHeight:/^leading-/,letterSpacing:/^tracking-/,textOverflow:/^(truncate|text-ellipsis|text-clip)$/,whitespace:/^whitespace-/,wordBreak:/^break-/,bgColor:/^bg-(inherit|current|transparent|black|white|slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-/,bgGradient:/^bg-gradient-/,bgSize:/^bg-(auto|cover|contain)$/,bgPosition:/^bg-(bottom|center|left|left-bottom|left-top|right|right-bottom|right-top|top)$/,bgRepeat:/^bg-(repeat|no-repeat|repeat-x|repeat-y|repeat-round|repeat-space)$/,bgAttachment:/^bg-(fixed|local|scroll)$/,bgClip:/^bg-clip-/,bgOrigin:/^bg-origin-/,borderWidth:/^border(-[xytblr])?(-0|-2|-4|-8)?$/,borderColor:/^border-(inherit|current|transparent|black|white|slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-/,borderStyle:/^border-(solid|dashed|dotted|double|hidden|none)$/,borderRadius:/^rounded(-[tblrse]{1,2})?(-none|-sm|-md|-lg|-xl|-2xl|-3xl|-full)?$/,ringWidth:/^ring(-0|-1|-2|-4|-8|-inset)?$/,ringColor:/^ring-(inherit|current|transparent|black|white|slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-/,ringOffset:/^ring-offset-/,shadow:/^shadow(-sm|-md|-lg|-xl|-2xl|-inner|-none)?$/,opacity:/^opacity-/,mixBlend:/^mix-blend-/,bgBlend:/^bg-blend-/,blur:/^blur(-none|-sm|-md|-lg|-xl|-2xl|-3xl)?$/,brightness:/^brightness-/,contrast:/^contrast-/,grayscale:/^grayscale(-0)?$/,hueRotate:/^-?hue-rotate-/,invert:/^invert(-0)?$/,saturate:/^saturate-/,sepia:/^sepia(-0)?$/,backdropBlur:/^backdrop-blur-/,backdropBrightness:/^backdrop-brightness-/,backdropContrast:/^backdrop-contrast-/,backdropGrayscale:/^backdrop-grayscale-/,backdropHueRotate:/^backdrop-hue-rotate-/,backdropInvert:/^backdrop-invert-/,backdropOpacity:/^backdrop-opacity-/,backdropSaturate:/^backdrop-saturate-/,backdropSepia:/^backdrop-sepia-/,scale:/^scale(-x|-y)?-/,rotate:/^-?rotate-/,translate:/^-?translate-[xy]-/,skew:/^-?skew-[xy]-/,transformOrigin:/^origin-/,transition:/^transition(-none|-all|-colors|-opacity|-shadow|-transform)?$/,duration:/^duration-/,ease:/^ease-(linear|in|out|in-out)$/,delay:/^delay-/,animate:/^animate-/,cursor:/^cursor-/,userSelect:/^select-/,pointerEvents:/^pointer-events-/,resize:/^resize(-none|-x|-y)?$/,scrollBehavior:/^scroll-(auto|smooth)$/,touchAction:/^touch-/,overflow:/^overflow(-x|-y)?-(auto|hidden|clip|visible|scroll)$/,overscroll:/^overscroll(-x|-y)?-(auto|contain|none)$/,visibility:/^(visible|invisible|collapse)$/,aspectRatio:/^aspect-/,columns:/^columns-/,breakAfter:/^break-after-/,breakBefore:/^break-before-/,breakInside:/^break-inside-/,boxDecorationBreak:/^box-decoration-/,boxSizing:/^box-(border|content)$/,float:/^float-(right|left|none)$/,clear:/^clear-(left|right|both|none)$/,isolation:/^(isolate|isolation-auto)$/,objectFit:/^object-(contain|cover|fill|none|scale-down)$/,objectPosition:/^object-/};function sb(s){const e=s.replace(/^(dark:|hover:|focus:|active:|disabled:|group-hover:|sm:|md:|lg:|xl:|2xl:)+/,"");for(const[n,r]of Object.entries(Ax))if(r.test(e))return n;return null}function ob(s){const e=s.match(/^((dark:|hover:|focus:|active:|disabled:|group-hover:|sm:|md:|lg:|xl:|2xl:)+)/);return e?e[1]:""}function xx(s,e){if(!e||e.trim()==="")return s;if(!s||s.trim()==="")return e;const n=s.split(/\s+/).filter(Boolean),r=e.split(/\s+/).filter(Boolean),i=new Map;for(const c of r){const d=sb(c);if(d){const f=ob(c),h=`${d}:${f}`;i.set(h,c)}}return[...n.filter(c=>{const d=sb(c);if(!d)return!0;const f=ob(c),h=`${d}:${f}`;return!i.has(h)}),...r].join(" ")}function Tx(s){return Object.entries(s).filter(([,e])=>e).map(([e])=>e).join(" ")}function kx(...s){return s.filter(e=>typeof e=="string"&&e.length>0).join(" ")}const ye=dt("G7CoreGlobals");function Rx(){window.React=Ye,window.ReactDOM={...Cd,createPortal:Ma.createPortal,unstable_batchedUpdates:s=>s()},window.ReactJSXRuntime=uE,ye.log("전역 객체 window.React, window.ReactDOM, window.ReactJSXRuntime에 노출됨")}function Dx(s){const e=new Map,n=Ia.getInstance();s.componentEvent={on:(r,i)=>(e.has(r)||e.set(r,new Set),e.get(r).add(i),n.trackEventSubscribe(r),()=>{e.get(r)?.delete(i),n.trackEventUnsubscribe(r)}),emit:async(r,i)=>{const l=e.get(r),c=l?.size??0;if(!l||l.size===0)return n.trackEventEmit(r,i,0),[];let d,f=[];try{f=await Promise.all(Array.from(l).map(async h=>{try{return await h(i)}catch(m){throw ye.error(`componentEvent: Error in listener for "${r}":`,m),m}}))}catch(h){d=h instanceof Error?h:new Error(String(h))}if(n.trackEventEmit(r,i,c,f,d),d)throw d;return f},off:r=>{e.delete(r),n.trackEventOff(r)},clear:()=>{e.clear(),n.trackEventClear()}},ye.log("전역 객체 window.G7Core.componentEvent에 노출됨")}function Ox(s){s.__runtime||(s.__runtime={DynamicRenderer:Br,ComponentRegistry:br,TranslationEngine:Ra,DataSourceManager:Tr,dataSourceManager:XA,DataBindingEngine:kn,dataBindingEngine:Xd,ActionDispatcher:ko,TranslationReactContext:Kf,TranslationProvider:Lc,useTranslation:Uy,ResponsiveContext:_f,ResponsiveProvider:bc,useResponsive:Af,responsiveManager:Si,BREAKPOINT_PRESETS:Ql,AuthManager:wr,createLogger:dt,G7DevToolsCore:Ia},ye.log("전역 객체 window.G7Core.__runtime(코어 런타임 표면)에 노출됨"))}function Lx(s){if(s.layoutEditor&&s.layoutEditor.__isStub!==!0||s.layoutEditor&&s.layoutEditor.__isStub===!0)return;const e=[],n=[];s.layoutEditor={__isStub:!0,__queue:e,__readyCallbacks:n,registerWidget:(r,i)=>e.push(["widget",r,i]),registerNodeEditor:(r,i)=>e.push(["nodeEditor",r,i]),registerCanvasOverlay:(r,i)=>e.push(["canvasOverlay",r,i]),onReady:r=>{typeof r=="function"&&n.push(r)}},ye.log("전역 객체 window.G7Core.layoutEditor 예약 접수함(stub) 노출됨")}function $x(s){s.asset={template:(e,n,r)=>zw(e,n,r),templateDir:(e,n)=>Uw(e,n),module:(e,n,r)=>Pw(e,n,r),plugin:(e,n,r)=>Bw(e,n,r),convertToCurrentMode:e=>Tn(e),loadScript:(e,n,r)=>ra(e,n,r),loadStylesheet:(e,n,r)=>yi(e,n,r)},s.assets={notifyFailure:ws,clearFailure:nb,clearAll:rb,getFailures:ix,retryAll:ab},px(),ye.log("전역 객체 window.G7Core.asset / window.G7Core.assets 노출됨")}function Mx(s,e){s.useTranslation=Uy,s.t=(n,r)=>{const i=e.getState();if(!i.translationEngine||!i.translationContext)return n;if(r){const l="|"+Object.entries(r).map(([c,d])=>`${c}=${d}`).join("|");return i.translationEngine.translate(n,i.translationContext,l)}return i.translationEngine.translate(n,i.translationContext)},ye.log("전역 객체 window.G7Core.useTranslation에 노출됨")}function Nx(s,e){s.createChangeEvent=wx,s.createClickEvent=Cx,s.createSubmitEvent=Ex,s.createKeyboardEvent=_x,s.uuid=()=>typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{const r=Math.random()*16|0;return(n==="x"?r:r&3|8).toString(16)}),s.createLogger=dt,ye.log("전역 객체 window.G7Core.createLogger에 노출됨"),s.renderItemChildren=(n,r,i,l,c)=>{const d=e.getState(),m={_global:window.__templateApp?.getGlobalState?.()||{},_local:r._local||{},_computed:r._computed||{},...r},y=new Set,S=(_,x)=>{const A=m._global?._remountKeys;return _&&A?.[_]&&!y.has(_)?(y.add(_),`${_}-remount-${A[_]}`):_||x},v={translationContext:d.translationContext,translationEngine:d.translationEngine,bindingEngine:d.bindingEngine,actionDispatcher:d.actionDispatcher,getRemountKey:S,...c};return vo(n,m,i,l,v)},s.evaluateCondition=(n,r)=>{if(!n)return!0;const i=e.getState(),c=window.__templateApp?.getGlobalState?.()||{},d={_global:c,_local:c._local||{},_computed:c._computed||{},...r||{}},f=i.bindingEngine??Xd;return em(n,d,f)},s.getComponentMap=()=>br.getInstance().getComponentMap(),s.renderComponentLayout=(n,r,i)=>{if(!n||!Array.isArray(n)||n.length===0)return null;const l=br.getInstance().getComponentMap(),c=e.getState(),f=window.__templateApp?.getGlobalState?.()||{},h={_global:f._global||{},_local:f._local||{},_computed:f._computed||{},...r},m=new Set,y=(S,v)=>{const _=h._global?._remountKeys;return S&&_?.[S]&&!m.has(S)?(m.add(S),`${S}-remount-${_[S]}`):S||v};return vo(n,h,l,i,{translationContext:c.translationContext,translationEngine:c.translationEngine,bindingEngine:c.bindingEngine,actionDispatcher:c.actionDispatcher,getRemountKey:y})},s.renderExpandContent=n=>{const{children:r,row:i,expandContext:l,componentContext:c,keyPrefix:d}=n;if(!r||!Array.isArray(r)||r.length===0)return null;const f=n.componentMap||br.getInstance().getComponentMap(),h=e.getState(),m=s.state?.get?.()||{},y=c?.stateRef?.current??c?.state??{},S={...m._local||{},...y},v=c?.computedRef?.current??m._computed??{},_=h.bindingEngine??s.getDataBindingEngine?.(),x={...m,_local:S,_computed:v,row:i,item:i,$item:i};let A={};if(l&&typeof l=="object"&&_)try{for(const[O,P]of Object.entries(l))if(typeof P=="string"){const G=Da(P);if(G!==null)try{A[O]=Gn(G)?_.evaluatePipeExpression(G,x,{skipCache:!0}):_.evaluateExpression(G,x,{skipCache:!0})}catch{A[O]=void 0}else A[O]=_.resolveBindings(P,x,{skipCache:!0})}else A[O]=P}catch(O){ye.warn("renderExpandContent: expandContext 평가 오류:",O)}const L={row:i,item:i,$item:i,_local:S,_global:m._global||{},_computed:m._computed||{},...A},$=new Set,k=(O,P)=>{const G=L._global?._remountKeys;return O&&G?.[O]&&!$.has(O)?($.add(O),`${O}-remount-${G[O]}`):O||P};return vo(r,L,f,d,{translationContext:h.translationContext,translationEngine:h.translationEngine??void 0,bindingEngine:h.bindingEngine??void 0,actionDispatcher:h.actionDispatcher,componentContext:c,getRemountKey:k})},s.$get=function(r,i,l=void 0){if(r==null)return l;const c=Array.isArray(i)?i:[i];if(c.length===0)return r;let d=r;for(const f of c){if(d==null||f==null)return l;d=d[f]}return d??l},ye.log("전역 객체 window.G7Core.renderItemChildren에 노출됨"),ye.log("전역 객체 window.G7Core.renderComponentLayout에 노출됨"),ye.log("전역 객체 window.G7Core.renderExpandContent에 노출됨"),ye.log("전역 객체 window.G7Core.$get에 노출됨")}function Ix(s){s.dispatch=async(e,n)=>{const r=window.__templateApp;if(!r)return ye.warn("G7Core.dispatch: TemplateApp이 초기화되지 않았습니다."),{success:!1,error:new Error("TemplateApp이 초기화되지 않았습니다.")};const i=r.getActionDispatcher?.();if(!i)return ye.warn("G7Core.dispatch: ActionDispatcher를 찾을 수 없습니다."),{success:!1,error:new Error("ActionDispatcher를 찾을 수 없습니다.")};const l=r.getRouter?.(),c=r.getGlobalState?.(),d=r.setGlobalState?.bind(r),h=n?.componentContext||window.__g7ActionContext,m=window.__g7PendingLocalState;let y=h?.state??c;m&&h&&(y=m,ye.log("[dispatch] Using __g7PendingLocalState for context.state:",m));let S=h?.data??c;m&&h?.data?._local&&(S={...h.data,_local:m},ye.log("[dispatch] Updated context.data._local with pendingLocalState"));const v={navigate:l?(_,x)=>l.navigate(_,x):void 0,setState:h?.setState??d,state:y,data:S,_isDispatchFallbackContext:!h?.setState};if(e.debounce){const _=e.debounceKey||`dispatch-${e.handler}`,x=typeof e.debounce=="number"?e.debounce:e.debounce.delay;return i.debouncedCall(_,x,()=>{const{debounce:A,debounceKey:L,...$}=e;i.dispatchAction($,v)}),{success:!0,debounced:!0}}try{return await i.dispatchAction(e,v)}catch(_){return ye.error("G7Core.dispatch: 액션 실행 오류:",_),{success:!1,error:_ instanceof Error?_:new Error(String(_))}}},ye.log("전역 객체 window.G7Core.dispatch에 노출됨")}function Po(s){const e={};for(const[n,r]of Object.entries(s))if(n.includes(".")){const i=n.split(".");let l=e;for(let c=0;c<i.length-1;c++){const d=i[c];d in l?(typeof l[d]!="object"||l[d]===null)&&(l[d]={}):l[d]={},l=l[d]}l[i[i.length-1]]=r}else e[n]=r;return e}function lb(s,e=""){const n=[];if(!s||typeof s!="object")return n;for(const r of Object.keys(s)){const i=e?`${e}.${r}`:r,l=s[r];l&&typeof l=="object"&&!Array.isArray(l)?n.push(...lb(l,i)):n.push(i)}return n}function jx(s){const e=Object.keys(s);return e.length>0&&e.every(n=>/^\d+$/.test(n))}function cb(s,e){const n={...s};for(const r of Object.keys(e))r in n?n[r]!==null&&typeof n[r]=="object"&&!Array.isArray(n[r])&&e[r]!==null&&typeof e[r]=="object"&&!Array.isArray(e[r])&&(n[r]=cb(n[r],e[r])):n[r]=e[r];return n}function sr(s,e){if(Array.isArray(s)&&!Array.isArray(e)&&jx(e)){const r=Object.keys(e).map(l=>parseInt(l,10));if(!((r.length>0?Math.max(...r):0)>=s.length+r.length+10)){const l=[...s];for(const[c,d]of Object.entries(e)){const f=parseInt(c,10);f>=0&&f<l.length?d!==null&&typeof d=="object"&&!Array.isArray(d)&&l[f]!==null&&typeof l[f]=="object"?l[f]=sr(l[f],d):l[f]=d:f>=l.length&&(l[f]=d)}return l}}const n={...s};for(const[r,i]of Object.entries(e))i!==null&&typeof i=="object"&&!Array.isArray(i)?n[r]!==null&&typeof n[r]=="object"?n[r]=sr(n[r],i):n[r]={...i}:n[r]=i;return n}function Hx(s){s.state={get:()=>window.__templateApp?.getGlobalState?.()||{},set:(e,n)=>{const r=window.__templateApp;if(r?.setGlobalState&&r?.getGlobalState){const i=n?.merge||"deep",l=Po(e);let c;if(i==="replace")c=l;else if(i==="shallow")c={...r.getGlobalState(),...l};else{const d=r.getGlobalState();c=sr(d,l)}r.setGlobalState(c,{render:n?.render})}else ye.warn("G7Core.state.set: TemplateApp이 초기화되지 않았습니다.")},setLocal:(e,n)=>{const r=window.__templateApp;if(n?.render===!1&&!n?.selfManaged){const A=window.__g7AutoBindingPaths;A&&A.size>0&&lb(Po(e)).some($=>A.has($))&&(ye.log("[setLocal] render:false + 자동바인딩 경로 겹침 감지 → render:true 자동 승격 (engine-v1.43.0)"),n={...n,render:!0})}if(n?.debounce){const A=r?.getActionDispatcher?.();if(A){const L=n.debounceKey||`setLocal-${Object.keys(e).join(",")}`,{debounce:$,debounceKey:k,...O}=n;A.debouncedCall(L,n.debounce,()=>{s.state.setLocal(e,O)});return}}const i=n?.scope??"current",l=n?.merge||"deep",c=window.__g7ActionContext,d=Po(e);if(i==="parent"||i==="root"){const A=window.__g7LayoutContextStack||[];if(A.length>0){const L=i==="parent"?A[A.length-1]:A[0];if(L?.setState){L.setState($=>l==="replace"?d:l==="shallow"?{...$||{},...d}:sr($||{},d)),ye.log(`[setLocal] scope=${i}: 타겟 컨텍스트에 상태 업데이트 (mergeMode=${l})`,d);return}}ye.warn(`[setLocal] scope=${i}: 레이아웃 컨텍스트 스택이 비어있습니다. current로 폴백합니다.`)}const f=window.__g7PendingLocalState,h=r?.getGlobalState?.()?._local||{},S=!((window.__g7LayoutContextStack||[]).length>0)&&c?.state?c.state:void 0,v=S?cb(h,S):h,_=f||v;let x;if(l==="replace"?x=d:l==="shallow"?x={..._,...d}:x=sr(_,d),r?.setGlobalState&&(r.setGlobalState({_local:x},{render:n?.render}),ye.log(`[setLocal] globalLocal updated via setGlobalState (mergeMode=${l}, render=${n?.render??!0}):`,d)),window.__g7PendingLocalState=x,ye.log("[setLocal] __g7PendingLocalState updated:",x),window.__g7SequenceLocalSync=x,window.__g7LastSetLocalSnapshot=x,l==="replace")window.__g7ForcedLocalFields=d;else{const A=window.__g7ForcedLocalFields||{};window.__g7ForcedLocalFields=sr(A,d)}if(ye.log("[setLocal] __g7ForcedLocalFields updated:",d),l==="replace")window.__g7SetLocalOverrideKeys=d;else{const A=window.__g7SetLocalOverrideKeys||{};window.__g7SetLocalOverrideKeys=sr(A,d)}ye.log("[setLocal] __g7SetLocalOverrideKeys updated:",d),c?.setState&&c.setState(A=>l==="replace"?d:l==="shallow"?{...A||{},...d}:sr(A||{},d)),r?.setGlobalState||ye.warn("G7Core.state.setLocal: TemplateApp이 없습니다.")},getLocal:()=>{const r=(window.__templateApp?.getGlobalState?.()||{})._local||{},i=window.__g7PendingLocalState;if(i)return sr(r,i);const l=window.__g7LastSetLocalSnapshot;return l&&l!==r?sr(r,l):r},update:e=>{const n=window.__templateApp;if(n?.getGlobalState&&n?.setGlobalState){const r=n.getGlobalState(),i=e(r);n.setGlobalState(i)}else ye.warn("G7Core.state.update: TemplateApp이 초기화되지 않았습니다.")},subscribe:e=>{const n=window.__templateApp;return n?.onGlobalStateChange?n.onGlobalStateChange(e):(ye.warn("G7Core.state.subscribe: TemplateApp이 초기화되지 않았습니다."),()=>{})},getDataSource:e=>window.__templateApp?.getDataSource?.(e),getIsolated:e=>e?window.__g7IsolatedStates?.[e]?.state??null:window.__g7ActionContext?.isolatedContext?.state??null,setIsolated:(e,n,r)=>{let i,l,c;typeof e=="string"?(i=e,l=n||{},c=r):(l=e,c=n&&typeof n=="object"&&"merge"in n?n:r);const d=c?.merge||"deep",f=Po(l);if(i){const y=window.__g7IsolatedStates?.[i];y?.mergeState?y.mergeState(f,d):ye.warn(`G7Core.state.setIsolated: scopeId '${i}'를 찾을 수 없습니다.`);return}const h=window.__g7ActionContext;h?.isolatedContext?.mergeState?h.isolatedContext.mergeState(f,d):ye.warn("G7Core.state.setIsolated: 액션 컨텍스트에 isolatedContext가 없습니다.")},getParent:()=>{const e=window.__g7LayoutContextStack||[];if(e.length===0)return ye.log("[getParent] 레이아웃 컨텍스트 스택이 비어있습니다."),null;const n=e[e.length-1];if(!n)return null;const r=n.dataContext||{};return{_local:n.state||r._local||{},_global:r._global||s.state.get()||{},setState:n.setState}},setParentLocal:(e,n,r)=>{const i=window.__g7LayoutContextStack||[];if(i.length===0){ye.warn("[setParentLocal] 레이아웃 컨텍스트 스택이 비어있습니다.");return}const l=i[i.length-1];if(!l?.setState){ye.warn("[setParentLocal] 부모 컨텍스트에 setState가 없습니다.");return}let c,d;typeof e=="string"?(c={[e]:n},d=r):(c=e,d=n&&typeof n=="object"&&"merge"in n?n:r);const f=d?.merge||"deep",h=Po(c),m=l.state?._local!==void 0,y=m?l.state._local:l.state||{};let S;f==="replace"?S=h:f==="shallow"?S={...y,...h}:S=sr(y,h),window.__g7PendingLocalState=S;const v=window.__templateApp;if(v?.setGlobalState&&v.setGlobalState({_local:S}),l.setState(S),m?l.state._local=S:l.state=S,l.dataContext&&(l.dataContext._local=S),f==="replace")window.__g7ForcedLocalFields=h;else{const _=window.__g7ForcedLocalFields||{};window.__g7ForcedLocalFields=sr(_,h)}wf()},setParentGlobal:(e,n)=>{let r;typeof e=="string"?r={[e]:n}:r=e,s.state.set(r),ye.log("[setParentGlobal] 전역 상태 업데이트:",r)}},window.__g7IsolatedStates||(window.__g7IsolatedStates={}),s.state.getGlobal=s.state.get,s.state.setGlobal=s.state.set,ye.log("전역 객체 window.G7Core.state에 노출됨")}function zx(s){s.dataSource={get:e=>window.__templateApp?.getDataSource?.(e),set:(e,n,r)=>{const i=window.__templateApp;i?.setDataSource?i.setDataSource(e,n,r):ye.warn("G7Core.dataSource.set: TemplateApp이 초기화되지 않았습니다.")},refetch:async(e,n)=>{const r=window.__templateApp;if(r?.refetchDataSource)return r.refetchDataSource(e,n);ye.warn("G7Core.dataSource.refetch: TemplateApp이 초기화되지 않았습니다.")},updateItem:(e,n,r,i,l)=>{const c=window.__templateApp;return c?.updateDataSourceItem?c.updateDataSourceItem(e,n,r,i,l):(ye.warn("G7Core.dataSource.updateItem: TemplateApp이 초기화되지 않았습니다."),!1)},updateData:(e,n,r,i="append")=>{const l=window.__templateApp;if(!l?.getDataSource||!l?.setDataSource)return ye.warn("G7Core.dataSource.updateData: TemplateApp이 초기화되지 않았습니다."),!1;const c=l.getDataSource(e);if(!c)return ye.warn(`G7Core.dataSource.updateData: 데이터 소스 '${e}'를 찾을 수 없습니다.`),!1;let d,f=c,h=null;if(n){const y=n.split(".");h=y.pop();for(const S of y)if(f&&typeof f=="object"&&S in f)f=f[S];else return ye.warn(`G7Core.dataSource.updateData: 경로 '${n}'를 찾을 수 없습니다.`),!1;d=f[h]}else d=c;if(!Array.isArray(d))return ye.warn("G7Core.dataSource.updateData: 대상 경로의 데이터가 배열이 아닙니다."),!1;if(!Array.isArray(r))return ye.warn("G7Core.dataSource.updateData: newData가 배열이 아닙니다."),!1;const m=i==="prepend"?[...r,...d]:[...d,...r];return n&&h?(f[h]=m,l.setDataSource(e,c,{merge:!1})):l.setDataSource(e,m,{merge:!1}),ye.log(`G7Core.dataSource.updateData: '${e}'에 ${r.length}개 항목 ${i==="prepend"?"앞에":"뒤에"} 추가됨`),!0}},ye.log("전역 객체 window.G7Core.dataSource에 노출됨")}function Ux(s,e){s.locale={current:()=>window.__templateApp?.getLocale?.()||"ko",supported:()=>{const r=window.__templateApp?.globalState?.appConfig?.supportedLocales;return Array.isArray(r)&&r.length>0?r:e.getState().templateMetadata?.locales||["ko","en"]},change:async n=>{const r=window.__templateApp;r?.changeLocale?await r.changeLocale(n):ye.warn("G7Core.locale.change: TemplateApp이 초기화되지 않았습니다.")}},ye.log("전역 객체 window.G7Core.locale에 노출됨")}function Px(s){s.toast={show:(e,n)=>{s.dispatch({handler:"toast",params:{message:e,type:n?.type||"info",...n?.duration&&{duration:n.duration}}})},success:(e,n)=>{s.toast.show(e,{type:"success",duration:n})},error:(e,n)=>{s.toast.show(e,{type:"error",duration:n})},warning:(e,n)=>{s.toast.show(e,{type:"warning",duration:n})},info:(e,n)=>{s.toast.show(e,{type:"info",duration:n})}},ye.log("전역 객체 window.G7Core.toast에 노출됨")}function Bx(s){s.modal={open:e=>{s.dispatch({handler:"openModal",target:e})},close:e=>{s.dispatch({handler:"closeModal",...e&&{target:e}})},closeAll:()=>{s.dispatch({handler:"closeAllModals"})},isOpen:e=>{const n=s.state.get();return n._global?.activeModal===e||n._global?.modalStack?.includes(e)||!1},getStack:()=>s.state.get()._global?.modalStack||[]},ye.log("전역 객체 window.G7Core.modal에 노출됨")}function qx(s){s.style={mergeClasses:xx,conditionalClass:Tx,joinClasses:kx},ye.log("전역 객체 window.G7Core.style에 노출됨")}function Gx(s,e){const{webSocketManager:n}=e;s.websocket={manager:n,subscribe:(r,i,l,c)=>n.subscribe(r,i,l,c),unsubscribe:r=>n.unsubscribe(r),leaveChannel:r=>n.leaveChannel(r),disconnect:()=>n.disconnect(),isInitialized:()=>n.isInitialized(),getSubscriptionCount:()=>n.getSubscriptionCount()},ye.log("전역 객체 window.G7Core.websocket에 노출됨")}function Fx(s,e){const{transitionManager:n}=e;s.navigation={isPending:()=>n?.getIsPending?.()||!1,onComplete:r=>{if(!n)return r(),()=>{};let i=n.getIsPending();const l=n.subscribe(c=>{c?i=!0:i&&(r(),l())});return l}},ye.log("전역 객체 window.G7Core.navigation에 노출됨")}function Vx(s){s.plugin={getSettings:e=>window.G7Config?.plugins?.[e],get:(e,n,r)=>window.G7Config?.plugins?.[e]?.[n]??r,getAll:()=>window.G7Config?.plugins??{}},ye.log("전역 객체 window.G7Core.plugin에 노출됨")}function Kx(s){s.module={getSettings:e=>window.G7Config?.modules?.[e],get:(e,n,r)=>window.G7Config?.modules?.[e]?.[n]??r,getAll:()=>window.G7Config?.modules??{}},ye.log("전역 객체 window.G7Core.module에 노출됨")}function Wx(s,e){const{transitionManager:n,responsiveManager:r}=e;s.AuthManager=wr,s.api=zr(),s.TransitionManager=n,s.useTransitionState=Jm,s.ResponsiveManager=r,s.useResponsive=Af,s.useControllableState=EE,s.shallowArrayEqual=_E,s.shallowObjectEqual=Zm,s.updateQueryParams=async(i,l)=>{const c=window.__templateApp;if(c?.updateQueryParams)return c.updateQueryParams(i,l);ye.warn("G7Core.updateQueryParams: TemplateApp이 초기화되지 않았습니다.")},ye.log("전역 객체 window.G7Core.AuthManager에 노출됨"),ye.log("전역 객체 window.G7Core.api에 노출됨"),ye.log("전역 객체 window.G7Core.ResponsiveManager에 노출됨"),ye.log("전역 객체 window.G7Core.useResponsive에 노출됨"),ye.log("전역 객체 window.G7Core.useControllableState에 노출됨"),ye.log("전역 객체 window.G7Core.updateQueryParams에 노출됨")}function Yx(s,e){s.getSlotContext=()=>window.__slotContextValue??null,s.getDynamicRenderer=()=>window.__DynamicRenderer??null,s.getComponentRegistry=()=>e.getComponentRegistry?.()??br.getInstance(),s.getDataBindingEngine=()=>e.getDataBindingEngine?.()??e.getState().bindingEngine,s.getTranslationEngine=()=>e.getTranslationEngine?.()??e.getState().translationEngine,s.getActionDispatcher=()=>e.getActionDispatcher?.()??e.getState().actionDispatcher,ye.log("전역 객체 window.G7Core 슬롯 API에 노출됨 (getSlotContext, getDynamicRenderer 등)")}function Xx(s){s.identity={setLauncher:St.setLauncher.bind(St),handle:St.handle.bind(St),isIdentityRequired:St.isIdentityRequired.bind(St),hasLauncher:St.hasLauncher.bind(St),markDomainNoticeShown:St.markDomainNoticeShown.bind(St),redirectExternally:St.redirectExternally.bind(St),createDeferred:St.createDeferred.bind(St),resolveDeferred:St.resolveDeferred.bind(St),reset:St.reset.bind(St),redirectStashKey:gf},ye.log("전역 객체 window.G7Core 본인인증(IDV) API에 노출됨 (identity)")}function Jx(s){if(typeof window>"u")return;Rx(),window.G7Core||(window.G7Core={});const e=window.G7Core;Ox(e),Dx(e),Lx(e),Wx(e,s),$x(e),Mx(e,s),Nx(e,s),Ix(e),Hx(e),zx(e),Ux(e,s),Px(e),Bx(e),qx(e),Gx(e,s),Fx(e,s),Vx(e),Kx(e),Yx(e,s),Xx(e),ye.log("G7Core 전역 객체 초기화 완료")}function Qx(){const s=window.G7Core;if(!s){ye.warn("G7Core가 초기화되지 않았습니다.");return}const e=()=>Ia.getInstance(),n={isEnabled:()=>{try{return e().isEnabled()}catch{return!1}},trackRender:r=>{try{e().isEnabled()&&e().trackRender(r)}catch{}},trackIteration:(r,i,l,c,d)=>{try{e().isEnabled()&&e().trackIteration(r,{source:i,itemVar:l,indexVar:c,sourceLength:d})}catch{}},trackIfCondition:(r,i,l,c)=>{try{e().isEnabled()&&e().trackIfCondition(r,i,l)}catch{}},trackMount:(r,i)=>{try{e().isEnabled()&&e().trackMount(r,{...i,id:r})}catch{}},trackUnmount:r=>{try{e().isEnabled()&&e().trackUnmount(r)}catch{}},trackExpressionEval:r=>{try{e().isEnabled()&&e().trackExpressionEval(r)}catch{}},trackBindingEval:r=>{try{e().isEnabled()&&e().trackBindingEval(r)}catch{}},recordCacheHit:()=>{try{e().isEnabled()&&e().recordCacheHit()}catch{}},recordCacheMiss:()=>{try{e().isEnabled()&&e().recordCacheMiss()}catch{}},trackHandlerRegistration:(r,i,l,c)=>{try{e().isEnabled()&&e().trackHandlerRegistration(r,i,l,c)}catch{}},trackHandlerUnregistration:r=>{try{e().isEnabled()&&e().trackHandlerUnregistration(r)}catch{}},logAction:r=>{try{e().isEnabled()&&e().logAction(r)}catch{}},trackRequest:(r,i)=>{try{return e().isEnabled()?e().trackRequest(r,i):""}catch{return""}},completeRequest:(r,i,l)=>{try{e().isEnabled()&&e().completeRequest(r,i,l)}catch{}},failRequest:(r,i)=>{try{e().isEnabled()&&e().failRequest(r,i)}catch{}},trackDataSourceDefinition:r=>{try{e().isEnabled()&&e().trackDataSourceDefinition(r)}catch{}},trackDataSourceLoading:r=>{try{e().isEnabled()&&e().trackDataSourceLoading(r)}catch{}},trackDataSourceLoaded:(r,i,l)=>{try{e().isEnabled()&&e().trackDataSourceLoaded(r,i,l)}catch{}},trackDataSourceError:(r,i)=>{try{e().isEnabled()&&e().trackDataSourceError(r,i)}catch{}},trackForm:(r,i,l)=>{try{e().isEnabled()&&e().trackForm(r,i,l)}catch{}},untrackForm:r=>{try{e().isEnabled()&&e().untrackForm(r)}catch{}},startStateChange:(r,i,l,c)=>{try{return e().isEnabled()?e().startStateChange(r,i,l,c):""}catch{return""}},completeStateChange:r=>{try{e().isEnabled()&&e().completeStateChange(r)}catch{}},trackComponentRender:(r,i,l,c,d,f)=>{try{e().isEnabled()&&e().trackComponentRender(r,i,l,c,d,f)}catch{}},updateLocalState:r=>{try{e().isEnabled()&&e().updateLocalState(r)}catch{}},updateComputedState:r=>{try{e().isEnabled()&&e().updateComputedState(r)}catch{}},updateParentContext:r=>{try{e().isEnabled()&&e().updateParentContext(r)}catch{}},trackComponentStateSource:(r,i,l,c)=>{try{e().isEnabled()&&e().trackComponentStateSource(r,i,l,c)}catch{}},trackDynamicState:(r,i)=>{try{e().isEnabled()&&e().trackDynamicState(r,i)}catch{}},trackContextFlow:(r,i,l,c,d,f)=>{try{e().isEnabled()&&e().trackContextFlow(r,i,l,c,d,f)}catch{}},trackComponentStyle:(r,i,l,c)=>{try{e().isEnabled()&&e().trackComponentStyle(r,i,l,c)}catch{}},trackAuthEvent:(r,i,l,c)=>{try{e().isEnabled()&&e().trackAuthEvent(r,i,l,c)}catch{}},trackAuthHeader:(r,i,l,c,d)=>{try{e().isEnabled()&&e().trackAuthHeader(r,i,l,c,d)}catch{}},trackLog:(r,i,l)=>{try{e().isEnabled()&&e().trackLog(r,i,l)}catch{}},trackAction:r=>{try{e().isEnabled()&&e().trackAction?.(r)}catch{}},trackDataSourceUpdate:r=>{try{e().isEnabled()&&e().trackDataSourceUpdate?.(r)}catch{}},startSequenceExecution:r=>{try{return e().isEnabled()?e().startSequenceExecution(r):""}catch{return""}},captureSequenceActionBefore:(r,i,l,c,d)=>{try{e().isEnabled()&&e().captureSequenceActionBefore(r,i,l,c,d)}catch{}},captureSequenceActionAfter:(r,i,l,c,d,f)=>{try{e().isEnabled()&&e().captureSequenceActionAfter(r,i,l,c,d,f)}catch{}},endSequenceExecution:(r,i)=>{try{e().isEnabled()&&e().endSequenceExecution(r,i)}catch{}},registerStateCaptureForHandler:(r,i,l)=>{try{e().isEnabled()&&e().registerStateCaptureForHandler(r,i,l)}catch{}},detectStaleClosure:(r,i,l,c,d)=>{try{return e().isEnabled()?e().detectStaleClosure(r,i,l,c,d):[]}catch{return[]}},trackStaleClosureWarning:r=>{try{e().isEnabled()&&e().trackStaleClosureWarning(r)}catch{}},trackModalOpen:r=>{try{e().isEnabled()&&e().trackModalOpen(r)}catch{}},trackModalClose:(r,i)=>{try{e().isEnabled()&&e().trackModalClose(r,i)}catch{}},trackModalStateChange:r=>{try{e().isEnabled()&&e().trackModalStateChange(r)}catch{}},trackNestedContext:r=>{try{return e().isEnabled()?e().trackNestedContext(r):""}catch{return""}},trackNestedContextAccess:(r,i)=>{try{e().isEnabled()&&e().trackNestedContextAccess(r,i)}catch{}},trackComputedProperty:(r,i,l,c,d,f,h)=>{try{e().isEnabled()&&e().trackComputedProperty(r,i,l,c,d,f,h)}catch{}},trackComputedRecalc:(r,i,l,c,d,f,h)=>{try{e().isEnabled()&&e().trackComputedRecalc(r,i,l,c,d,f,h)}catch{}},setNamedActionDefinitions:r=>{try{e().isEnabled()&&e().setNamedActionDefinitions(r)}catch{}},trackNamedActionRef:r=>{try{e().isEnabled()&&e().trackNamedActionRef(r)}catch{}}};s.devTools=n,ye.log("G7Core.devTools 인터페이스 초기화 완료")}let Bo=null;function Zx(){const s=window.G7Core;return s?.__devtools?Promise.resolve(s.__devtools):Bo||(Bo=new Promise((e,n)=>{const r=window.G7Config?.coreDevToolsAsset||"/build/core/devtools.min.js",i="g7-devtools-bundle",l=()=>{const f=window.G7Core?.__devtools;f?e(f):n(new Error("DevTools 번들 로드됨 — 그러나 __devtools 미노출"))};window.G7Core=window.G7Core||{},window.G7Core.__onDevToolsReady=l;const c=document.getElementById(i);if(c){c.addEventListener("load",l,{once:!0}),c.addEventListener("error",()=>n(new Error(`DevTools 번들 로드 실패: ${r}`)),{once:!0});return}const d=document.createElement("script");d.id=i,d.src=r,d.async=!1,d.addEventListener("load",l,{once:!0}),d.addEventListener("error",()=>{Bo=null,n(new Error(`DevTools 번들 로드 실패: ${r}`))},{once:!0}),document.head.appendChild(d)}),Bo)}function eT(){const s=window.G7Core;if(!s){ye.warn("G7Core가 초기화되지 않았습니다.");return}const e=Ia.getInstance();if(e.initialize(),!e.isEnabled()){window.G7DevTools={isEnabled:()=>!1,enable:()=>{ye.log("환경설정 > 고급 설정 > 디버그 모드를 켜세요")}},_d(),ye.log("G7DevTools 비활성화됨 (디버그 모드 꺼짐)");return}tT(s,e)}async function tT(s,e){let n;try{n=await Zx()}catch(h){ye.warn("DevTools 번들 로드 실패 — 최소 API 로 폴백:",h),window.G7DevTools={isEnabled:()=>!1,enable:()=>{}},_d();return}const{DiagnosticEngine:r,getServerConnector:i,getStyleTracker:l}=n;Qx(),_d();try{l().enable(),ye.log("StyleTracker 활성화됨")}catch(h){ye.warn("StyleTracker 활성화 실패:",h)}const c=new r,d=i(),f={isEnabled:()=>e.isEnabled(),state:{get:()=>e.getState(),getHistory:()=>e.getStateHistory(),watch:(h,m)=>e.watchState(h,m)},actions:{getHistory:()=>e.getActionHistory(),watch:h=>e.watchActions(h),getMetrics:()=>e.getActionMetrics()},binding:{evaluate:h=>{const m=s.getDataBindingEngine?.();if(!m){ye.warn("DataBindingEngine이 없습니다.");return}return m.evaluateExpression(h,e.getState())},getCacheStats:()=>e.getCacheStats(),clearStats:()=>{e.resetCacheStats(),ye.log("캐시 통계 초기화됨")}},diagnose:{analyze:h=>c.analyze(h),suggestFix:h=>c.suggestFix(h),getCommonIssues:()=>c.getCommonIssues(),getRulesByCategory:h=>c.getRulesByCategory(h)},server:{dumpState:h=>d.dumpState(h),sendLog:h=>d.sendLog(h),sendError:(h,m)=>d.sendError(h,m),isConnected:()=>d.isConnected(),testConnection:()=>d.testConnection()},config:{isDebugMode:()=>e.isEnabled(),setLogLevel:h=>e.setLogLevel(h),setMaxHistory:h=>e.setMaxHistory(h)},lifecycle:{getMountedComponents:()=>e.getLifecycleInfo().mountedComponents,getOrphanedListeners:()=>e.getLifecycleInfo().orphanedListeners},performance:{getRenderCount:()=>e.getPerformanceInfo().renderCounts,getBindingEvalCount:()=>e.getPerformanceInfo().bindingEvalCount,getMemoryWarnings:()=>e.getPerformanceInfo().memoryWarnings,startProfiling:()=>e.startProfiling(),stopProfiling:()=>e.stopProfiling()},network:{getActiveRequests:()=>e.getNetworkInfo().activeRequests,getRequestHistory:()=>e.getNetworkInfo().requestHistory,getPendingDataSources:()=>e.getNetworkInfo().pendingDataSources},conditional:{getIfConditions:()=>e.getConditionalInfo().ifConditions,getIterations:()=>e.getConditionalInfo().iterations},form:{getForms:()=>e.getFormInfo()},websocket:{getInfo:()=>e.getWebSocketInfo()}};window.G7DevTools=f,s.devtools=f,ye.log("G7DevTools 전역 객체 초기화 완료 (window.G7DevTools)"),nT(n.DevToolsPanel)}function nT(s){if(document.getElementById("g7-devtools-root")){ye.log("DevToolsPanel 이미 렌더링됨");return}const e=document.createElement("div");e.id="g7-devtools-root",document.body.appendChild(e);try{Cd.createRoot(e).render(Ye.createElement(s)),ye.log("DevToolsPanel UI 렌더링 완료")}catch(n){ye.error("DevToolsPanel UI 렌더링 실패:",n)}}const Je=dt("TemplateEngine"),ae={templateId:null,locale:"ko",isInitialized:!1,reactRoot:null,containerId:null,currentLayoutJson:null,currentDataContext:{},translationContext:{templateId:"",locale:"ko"},registry:null,bindingEngine:null,translationEngine:null,actionDispatcher:null,templateMetadata:null};let qo=!1;const Go=[];async function rT(s){try{Je.log("템플릿 메타데이터 로드 중...",s);const e=s.split("-").map(r=>r.split("_").map(i=>i.charAt(0).toUpperCase()+i.slice(1)).join("")).join(""),n=window[e];return n?.templateMetadata?(Je.log("템플릿 메타데이터 로드 완료 (전역 변수)",n.templateMetadata),n.templateMetadata):(Je.warn(`템플릿 번들에 메타데이터가 없습니다. 전역 변수: ${e}`),{identifier:s,locales:["ko","en"],name:{ko:s,en:s},description:{ko:"",en:""},version:"1.0.0",type:"admin"})}catch(e){return Je.error("템플릿 메타데이터 로드 실패",e),{identifier:s,locales:["ko","en"],name:{ko:s,en:s},description:{ko:"",en:""},version:"1.0.0",type:"admin"}}}function ub(){const e=(typeof window<"u"?window.__templateApp:void 0)?.globalState?.appConfig?.supportedLocales,n=ae.templateMetadata?.locales;return{$locale:ae.locale,$locales:Array.isArray(e)&&e.length>0?e:n||["ko","en"],$templateLocales:n||["ko","en"],$templateId:ae.templateId}}async function Fo(s){try{if(Je.log("템플릿 엔진 초기화 시작",s),ae.isInitialized)throw new Error("템플릿 엔진이 이미 초기화되었습니다. destroyTemplate()을 먼저 호출하세요.");if(!s.templateId)throw new QA;qo=s.debug??!1,typeof window<"u"&&(window.G7Config||(window.G7Config={}),window.G7Config.debug=qo),eT(),ae.templateId=s.templateId,ae.locale=s.locale||"ko",Je.log("엔진 인스턴스 생성 중..."),ae.registry=br.getInstance(),ae.bindingEngine=new kn,ae.translationEngine=Ra.getInstance(),s.cacheVersion!==void 0&&s.cacheVersion>0&&ae.translationEngine.setCacheVersion(s.cacheVersion),ae.translationContext={templateId:s.templateId,locale:ae.locale},ae.actionDispatcher=new ko({},ae.translationEngine,ae.translationContext),pE(ae.actionDispatcher),Je.log("다국어 파일 로드 중...",s.templateId,ae.locale);const e="en",n=[ae.translationEngine.loadTranslations(s.templateId,ae.locale).then(()=>{Je.log(`다국어 파일 로드 완료: ${ae.locale}`)}).catch(r=>{Je.warn(`다국어 파일 로드 실패 (${ae.locale}):`,r instanceof Error?r.message:r)})];ae.locale!==e&&n.push(ae.translationEngine.loadTranslations(s.templateId,e).then(()=>{Je.log(`폴백 다국어 파일 로드 완료: ${e}`)}).catch(r=>{Je.warn(`폴백 다국어 파일 로드 실패 (${e}):`,r instanceof Error?r.message:r)})),await Promise.allSettled(n),Je.log("템플릿 메타데이터 로드 중...",s.templateId),ae.templateMetadata=await rT(s.templateId),ae.isInitialized=!0,Je.log("템플릿 엔진 초기화 완료 (ComponentRegistry는 별도 로드)")}catch(e){throw Je.error("템플릿 엔진 초기화 실패",e),ae.isInitialized=!1,ae.registry=null,ae.bindingEngine=null,ae.translationEngine=null,ae.actionDispatcher=null,e}}let Es=null;const db="g7-layout-editor-bundle";function ah(){const s=window.G7Core;return s?.__LayoutEditorChrome?Promise.resolve(s.__LayoutEditorChrome):Es||(Es=(async()=>{const e=window.G7Config?.coreEditorAsset||"/build/core/layout-editor.min.js";document.getElementById(db)?.remove(),window.G7Core=window.G7Core||{},window.G7Core.__onChromeReady=()=>{};try{await ra(e,{id:db},{label:"layout-editor bundle"})}catch(r){throw Es=null,Je.error(`편집기 번들 로드 실패 (${e})`,r),new Error("편집기를 불러오지 못했습니다. 네트워크 상태를 확인한 뒤 다시 시도해 주세요.")}const n=window.G7Core?.__LayoutEditorChrome;if(!n)throw Es=null,Je.error(`편집기 번들 로드됨 — 그러나 __LayoutEditorChrome 미노출 (${e})`),new Error("편집기를 불러왔으나 초기화하지 못했습니다. 페이지를 새로고침해 주세요.");return n})(),Es)}async function _s(s){try{if(Je.log("템플릿 렌더링 시작",s),!ae.isInitialized)throw new Error("템플릿 엔진이 초기화되지 않았습니다. initTemplateEngine()을 먼저 호출하세요.");if(!s.containerId)throw new Error("containerId는 필수입니다.");if(!s.layoutJson)throw new Error("layoutJson은 필수입니다.");const e=document.getElementById(s.containerId);if(!e)throw new Error(`컨테이너를 찾을 수 없습니다: #${s.containerId}`);const n=ub();if(ae.containerId=s.containerId,ae.currentLayoutJson=s.layoutJson,ae.currentDataContext={...n,...s.dataContext||{}},ae.translationContext=s.translationContext||{templateId:ae.templateId||"",locale:ae.locale},ae.reactRoot||(Je.log("React Root 생성"),ae.reactRoot=Cd.createRoot(e)),typeof window<"u"){const l=eb(window.location.pathname);if(l){Je.log("레이아웃 편집기 모드 진입",l);let c;try{c=await ah()}catch(f){Je.error("레이아웃 편집기 번들 로드 실패",f),Zf.render(s.containerId,{title:"레이아웃 편집기 로드 실패",message:f instanceof Error?f.message:"편집기 번들을 불러오지 못했습니다.",icon:"fas fa-triangle-exclamation",showStack:!1,showReloadButton:!0,debug:qo});return}const d=Ye.createElement(c,{templateIdentifier:l.templateIdentifier,initialLocale:ae.locale});ae.reactRoot.render(Ye.createElement(Lc,{translationEngine:ae.translationEngine,translationContext:ae.translationContext,children:Ye.createElement(Cf,{children:Ye.createElement(bc,{children:Ye.createElement(Wf,{children:d})})})}));return}}const r=s.layoutJson.components||[];if(r.length===0){Je.warn("렌더링할 컴포넌트가 없습니다.");return}const i=s.layoutJson.modals||[];if(Je.log("modals 배열:",i),Je.log("modals 개수:",i.length),Je.log("DynamicRenderer로 렌더링 시작"),ae.reactRoot.render(Ye.createElement(Lc,{translationEngine:ae.translationEngine,translationContext:ae.translationContext},Ye.createElement(Cf,null,Ye.createElement(bc,null,Ye.createElement(Wf,null,[...r.map((l,c)=>{const d=ae.currentLayoutJson?.layout_name||"";return Ye.createElement(Br,{key:d&&!l._fromBase?`${l.id}_${d}`:l.id,componentDef:l,dataContext:ae.currentDataContext,translationContext:ae.translationContext,registry:ae.registry,bindingEngine:ae.bindingEngine,translationEngine:ae.translationEngine,actionDispatcher:ae.actionDispatcher,isRootRenderer:c===0,layoutKey:d})}),Ye.createElement(Fm,{key:"__modal_parent_context_provider"},i.map(l=>{const c=ae.currentDataContext._global?.modalStack||[],f=c.includes(l.id)||ae.currentDataContext._global?.activeModal===l.id,h=c.indexOf(l.id),m=h>=0?50+h:50,y=window.__g7LayoutContextStack||[],v=y[y.length-1]?.dataContext,_=Ye.createElement(Br,{key:`modal_${l.id}_renderer`,componentDef:{...l,props:{...l.props,isOpen:f,style:{...l.props?.style,zIndex:m},onClose:ae.actionDispatcher?.createHandler({type:"click",handler:"closeModal"},ae.currentDataContext)}},dataContext:ae.currentDataContext,translationContext:ae.translationContext,registry:ae.registry,bindingEngine:ae.bindingEngine,translationEngine:ae.translationEngine,actionDispatcher:ae.actionDispatcher,parentDataContext:v});return l.data_sources&&l.data_sources.length>0?Ye.createElement(Qy,{key:`modal_${l.id}`,isOpen:f,modalId:l.id,dataSources:l.data_sources,dataContext:ae.currentDataContext,globalStateUpdater:ae.actionDispatcher?.getGlobalStateUpdater(),bindingEngine:ae.bindingEngine,debug:qo,children:_}):_}))]))))),Je.log("템플릿 렌더링 완료"),Go.length>0){Je.log(`대기 중인 데이터 업데이트 ${Go.length}건 적용`);const l=[...Go];Go.length=0;for(const{data:c,options:d}of l)As(c,d)}}catch(e){throw Je.error("템플릿 렌더링 실패",e),e}}function As(s,e){try{if(Je.log("템플릿 데이터 업데이트 시작",Object.keys(s)),!ae.isInitialized)throw new Error("템플릿 엔진이 초기화되지 않았습니다.");if(!ae.reactRoot||!ae.currentLayoutJson){Je.log("React 미준비 - 데이터 업데이트 큐잉:",Object.keys(s)),Go.push({data:s,options:e});return}const n=ub(),r={...ae.currentDataContext._global||{},...s._global||{}},i=wE(ae.currentDataContext._localInit,s._localInit);ae.currentDataContext={...n,...ae.currentDataContext,...s,_global:r,_localInit:i},r._local!==void 0&&(ae.currentDataContext._local=r._local),r._computed!==void 0&&(ae.currentDataContext._computed=r._computed);const l=ae.currentLayoutJson.components||[],c=ae.currentLayoutJson.modals||[];Je.log("updateTemplateData - modals 배열:",c),Je.log("updateTemplateData - modals 개수:",c.length),Je.log("updateTemplateData - activeModal:",ae.currentDataContext._global?.activeModal);const d=()=>{ae.reactRoot.render(Ye.createElement(Lc,{translationEngine:ae.translationEngine,translationContext:ae.translationContext},Ye.createElement(Cf,null,Ye.createElement(bc,null,Ye.createElement(Wf,null,[...l.map((f,h)=>{const m=ae.currentLayoutJson?.layout_name||"";return Ye.createElement(Br,{key:m&&!f._fromBase?`${f.id}_${m}`:f.id,componentDef:f,dataContext:ae.currentDataContext,translationContext:ae.translationContext,registry:ae.registry,bindingEngine:ae.bindingEngine,translationEngine:ae.translationEngine,actionDispatcher:ae.actionDispatcher,isRootRenderer:h===0,layoutKey:m})}),Ye.createElement(Fm,{key:"__modal_parent_context_provider_update"},c.map(f=>{const h=ae.currentDataContext._global?.modalStack||[],y=h.includes(f.id)||ae.currentDataContext._global?.activeModal===f.id,S=h.indexOf(f.id),v=S>=0?50+S:50,_=window.__g7LayoutContextStack||[],A=_[_.length-1]?.dataContext,L=Ye.createElement(Br,{key:`modal_${f.id}_renderer`,componentDef:{...f,props:{...f.props,isOpen:y,style:{...f.props?.style,zIndex:v},onClose:ae.actionDispatcher?.createHandler({type:"click",handler:"closeModal"},ae.currentDataContext)}},dataContext:ae.currentDataContext,translationContext:ae.translationContext,registry:ae.registry,bindingEngine:ae.bindingEngine,translationEngine:ae.translationEngine,actionDispatcher:ae.actionDispatcher,parentDataContext:A});return f.data_sources&&f.data_sources.length>0?Ye.createElement(Qy,{key:`modal_${f.id}`,isOpen:y,modalId:f.id,dataSources:f.data_sources,dataContext:ae.currentDataContext,globalStateUpdater:ae.actionDispatcher?.getGlobalStateUpdater(),bindingEngine:ae.bindingEngine,debug:qo,children:L}):L}))])))))};e?.sync?(Je.log("재렌더링 시작 (sync mode - 즉시 렌더링)"),d()):(Je.log("재렌더링 시작 (with startTransition)"),N.startTransition(()=>{d()})),Je.log("템플릿 데이터 업데이트 완료")}catch(n){throw Je.error("템플릿 데이터 업데이트 실패",n),n}}function Pc(){try{Je.log("템플릿 정리 시작"),ae.reactRoot&&(Je.log("React Root 언마운트"),ae.reactRoot.unmount(),ae.reactRoot=null),ae.templateId=null,ae.locale="ko",ae.isInitialized=!1,ae.containerId=null,ae.currentLayoutJson=null,ae.currentDataContext={},ae.translationContext={templateId:"",locale:"ko"},ae.registry=null,ae.bindingEngine=null,ae.translationEngine=null,ae.actionDispatcher=null,ae.templateMetadata=null,Je.log("템플릿 정리 완료")}catch(s){throw Je.error("템플릿 정리 실패",s),s}}function sa(){return Object.freeze({...ae})}function fb(){return ae.actionDispatcher}const Vo={initTemplateEngine:Fo,renderTemplate:_s,updateTemplateData:As,destroyTemplate:Pc,getState:sa};typeof window<"u"&&(window.G7Core||(window.G7Core={}),window.G7Core.TemplateEngine=Vo,Jx({getState:()=>({translationEngine:ae.translationEngine,translationContext:ae.translationContext,bindingEngine:ae.bindingEngine,actionDispatcher:ae.actionDispatcher,templateMetadata:ae.templateMetadata}),transitionManager:Ur,responsiveManager:Si,webSocketManager:Nc}),Je.log("전역 객체 window.G7Core.TemplateEngine에 노출됨"));const Gr=Object.freeze(Object.defineProperty({__proto__:null,DataSourceManager:Tr,LayoutLoader:Vf,TemplateApp:Uo,TemplateEngine:Vo,default:Vo,destroyTemplate:Pc,getActionDispatcher:fb,getState:sa,initTemplateApp:rh,initTemplateEngine:Fo,loadLayoutEditorBundle:ah,renderTemplate:_s,updateTemplateData:As},Symbol.toStringTag,{value:"Module"}));Xt.DataSourceManager=Tr,Xt.LayoutLoader=Vf,Xt.TemplateApp=Uo,Xt.TemplateEngine=Vo,Xt.default=Vo,Xt.destroyTemplate=Pc,Xt.getActionDispatcher=fb,Xt.getState=sa,Xt.initTemplateApp=rh,Xt.initTemplateEngine=Fo,Xt.loadLayoutEditorBundle=ah,Xt.renderTemplate=_s,Xt.updateTemplateData=As,Object.defineProperties(Xt,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})})(this.G7Core=this.G7Core||{});
|