nexgui4 1.0.6 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/nexGui4.nxs +1 -1
- package/dist/nexgui4.min.js +1 -152
- package/package.json +13 -14
package/dist/nexgui4.min.js
CHANGED
|
@@ -1,152 +1 @@
|
|
|
1
|
-
!function(e,t,g,n){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});var o=Object.create,a=Object.defineProperty,C=Object.getOwnPropertyDescriptor,I=Object.getOwnPropertyNames,i=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,__commonJSMin=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),__copyProps=(e,t,g,n)=>{if(t&&"object"==typeof t||"function"==typeof t)for(var o,i=I(t),l=0,c=i.length;l<c;l++)o=i[l],s.call(e,o)||o===g||a(e,o,{get:(e=>t[e]).bind(null,o),enumerable:!(n=C(t,o))||n.enumerable});return e},__toESM=(e,t,g)=>(g=null!=e?o(i(e)):{},__copyProps(!t&&e&&e.__esModule?g:a(g,"default",{value:e,enumerable:!0}),e));let l=__toESM(t,1);t=__toESM(t);let c=__toESM(n,1);n=__toESM(n);var u=Symbol.for("immer-nothing"),d=Symbol.for("immer-draftable"),p=Symbol.for("immer-state");function die(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var m=Object,h=m.getPrototypeOf,y="constructor",b="prototype",v="configurable",x="enumerable",S="writable",w="value",isDraft=e=>!!e&&!!e[p];function isDraftable(e){return!!e&&(isPlainObject$3(e)||T(e)||!!e[d]||!!e[y]?.[d]||isMap(e)||isSet(e))}var E=m[b][y].toString(),R=new WeakMap;function isPlainObject$3(e){if(!e||!isObjectish(e))return!1;const t=h(e);if(null===t||t===m[b])return!0;const g=m.hasOwnProperty.call(t,y)&&t[y];if(g===Object)return!0;if(!isFunction(g))return!1;let n=R.get(g);return void 0===n&&(n=Function.toString.call(g),R.set(g,n)),n===E}function each(e,t,g=!0){0===getArchtype(e)?(g?Reflect.ownKeys(e):m.keys(e)).forEach(g=>{t(g,e[g],e)}):e.forEach((g,n)=>t(n,g,e))}function getArchtype(e){const t=e[p];return t?t.type_:T(e)?1:isMap(e)?2:isSet(e)?3:0}var has=(e,t,g=getArchtype(e))=>2===g?e.has(t):m[b].hasOwnProperty.call(e,t),get=(e,t,g=getArchtype(e))=>2===g?e.get(t):e[t],set=(e,t,g,n=getArchtype(e))=>{2===n?e.set(t,g):3===n?e.add(g):e[t]=g};function is$1(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}var T=Array.isArray,isMap=e=>e instanceof Map,isSet=e=>e instanceof Set,isObjectish=e=>"object"==typeof e,isFunction=e=>"function"==typeof e,isBoolean=e=>"boolean"==typeof e;function isArrayIndex(e){const t=+e;return Number.isInteger(t)&&String(t)===e}var latest=e=>e.copy_||e.base_,getFinalValue=e=>e.modified_?e.copy_:e.base_;function shallowCopy(e,t){if(isMap(e))return new Map(e);if(isSet(e))return new Set(e);if(T(e))return Array[b].slice.call(e);const g=isPlainObject$3(e);if(!0===t||"class_only"===t&&!g){const t=m.getOwnPropertyDescriptors(e);delete t[p];let g=Reflect.ownKeys(t);for(let n=0;n<g.length;n++){const o=g[n],a=t[o];!1===a[S]&&(a[S]=!0,a[v]=!0),(a.get||a.set)&&(t[o]={[v]:!0,[S]:!0,[x]:a[x],[w]:e[o]})}return m.create(h(e),t)}{const t=h(e);if(null!==t&&g)return{...e};const n=m.create(t);return m.assign(n,e)}}function freeze(e,t=!1){return isFrozen(e)||isDraft(e)||!isDraftable(e)||(getArchtype(e)>1&&m.defineProperties(e,{set:M,add:M,clear:M,delete:M}),m.freeze(e),t&&each(e,(e,t)=>{freeze(t,!0)},!1)),e}function dontMutateFrozenCollections(){die(2)}var M={[w]:dontMutateFrozenCollections};function isFrozen(e){return null===e||!isObjectish(e)||m.isFrozen(e)}var P="MapSet",N="Patches",O="ArrayMethods",D={};function getPlugin(e){const t=D[e];return t||die(0,e),t}var j,isPluginLoaded=e=>!!D[e],getCurrentScope=()=>j,createScope=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:isPluginLoaded(P)?getPlugin(P):void 0,arrayMethodsPlugin_:isPluginLoaded(O)?getPlugin(O):void 0});function usePatchesInScope(e,t){t&&(e.patchPlugin_=getPlugin(N),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function revokeScope(e){leaveScope(e),e.drafts_.forEach(revokeDraft),e.drafts_=null}function leaveScope(e){e===j&&(j=e.parent_)}var enterScope=e=>j=createScope(j,e);function revokeDraft(e){const t=e[p];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function processResult(e,t){t.unfinalizedDrafts_=t.drafts_.length;const g=t.drafts_[0];if(void 0!==e&&e!==g){g[p].modified_&&(revokeScope(t),die(4)),isDraftable(e)&&(e=finalize$1(t,e));const{patchPlugin_:n}=t;n&&n.generateReplacementPatches_(g[p].base_,e,t)}else e=finalize$1(t,g);return maybeFreeze(t,e,!0),revokeScope(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==u?e:void 0}function finalize$1(e,t){if(isFrozen(t))return t;const g=t[p];if(!g)return handleValue(t,e.handledSet_,e);if(!isSameScope(g,e))return t;if(!g.modified_)return g.base_;if(!g.finalized_){const{callbacks_:t}=g;if(t)for(;t.length>0;)t.pop()(e);generatePatchesAndFinalize(g,e)}return g.copy_}function maybeFreeze(e,t,g=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&freeze(t,g)}function markStateFinalized(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var isSameScope=(e,t)=>e.scope_===t,L=[];function updateDraftInParent(e,t,g,n){const o=latest(e),a=e.type_;if(void 0!==n&&get(o,n,a)===t)return void set(o,n,g,a);if(!e.draftLocations_){const t=e.draftLocations_=new Map;each(o,(e,g)=>{if(isDraft(g)){const n=t.get(g)||[];n.push(e),t.set(g,n)}})}const C=e.draftLocations_.get(t)??L;for(const I of C)set(o,I,g,a)}function registerChildFinalizationCallback(e,t,g){e.callbacks_.push(function(n){const o=t;if(!o||!isSameScope(o,n))return;n.mapSetPlugin_?.fixSetContents(o);const a=getFinalValue(o);updateDraftInParent(e,o.draft_??o,a,g),generatePatchesAndFinalize(o,n)})}function generatePatchesAndFinalize(e,t){if(e.modified_&&!e.finalized_&&(3===e.type_||1===e.type_&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){const{patchPlugin_:g}=t;if(g){const n=g.getPath(e);n&&g.generatePatches_(e,n,t)}markStateFinalized(e)}}function handleCrossReference(e,t,g){const{scope_:n}=e;if(isDraft(g)){const o=g[p];isSameScope(o,n)&&o.callbacks_.push(function(){prepareCopy(e),updateDraftInParent(e,g,getFinalValue(o),t)})}else isDraftable(g)&&e.callbacks_.push(function(){const o=latest(e);3===e.type_?o.has(g)&&handleValue(g,n.handledSet_,n):get(o,t,e.type_)===g&&n.drafts_.length>1&&!0===(e.assigned_.get(t)??!1)&&e.copy_&&handleValue(get(e.copy_,t,e.type_),n.handledSet_,n)})}function handleValue(e,t,g){return!g.immer_.autoFreeze_&&g.unfinalizedDrafts_<1||isDraft(e)||t.has(e)||!isDraftable(e)||isFrozen(e)||(t.add(e),each(e,(n,o)=>{if(isDraft(o)){const t=o[p];isSameScope(t,g)&&(set(e,n,getFinalValue(t),e.type_),markStateFinalized(t))}else isDraftable(o)&&handleValue(o,t,g)})),e}function createProxyProxy(e,t){const g=T(e),n={type_:g?1:0,scope_:t?t.scope_:getCurrentScope(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0};let o=n,a=G;g&&(o=[n],a=B);const{revoke:C,proxy:I}=Proxy.revocable(o,a);return n.draft_=I,n.revoke_=C,[I,n]}var G={get(e,t){if(t===p)return e;let g=e.scope_.arrayMethodsPlugin_;const n=1===e.type_&&"string"==typeof t;if(n&&g?.isArrayOperationMethod(t))return g.createMethodInterceptor(e,t);const o=latest(e);if(!has(o,t,e.type_))return readPropFromProto(e,o,t);const a=o[t];if(e.finalized_||!isDraftable(a))return a;if(n&&e.operationMethod&&g?.isMutatingArrayMethod(e.operationMethod)&&isArrayIndex(t))return a;if(a===peek$1(e.base_,t)){prepareCopy(e);const g=1===e.type_?+t:t,n=createProxy(e.scope_,a,e,g);return e.copy_[g]=n}return a},has:(e,t)=>t in latest(e),ownKeys:e=>Reflect.ownKeys(latest(e)),set(e,t,g){const n=getDescriptorFromProto(latest(e),t);if(n?.set)return n.set.call(e.draft_,g),!0;if(!e.modified_){const n=peek$1(latest(e),t),o=n?.[p];if(o&&o.base_===g)return e.copy_[t]=g,e.assigned_.set(t,!1),!0;if(is$1(g,n)&&(void 0!==g||has(e.base_,t,e.type_)))return!0;prepareCopy(e),markChanged(e)}return e.copy_[t]===g&&(void 0!==g||t in e.copy_)||Number.isNaN(g)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=g,e.assigned_.set(t,!0),handleCrossReference(e,t,g)),!0},deleteProperty:(e,t)=>(prepareCopy(e),void 0!==peek$1(e.base_,t)||t in e.base_?(e.assigned_.set(t,!1),markChanged(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const g=latest(e),n=Reflect.getOwnPropertyDescriptor(g,t);return n?{[S]:!0,[v]:1!==e.type_||"length"!==t,[x]:n[x],[w]:g[t]}:n},defineProperty(){die(11)},getPrototypeOf:e=>h(e.base_),setPrototypeOf(){die(12)}},B={};for(let zp in G){let e=G[zp];B[zp]=function(){const t=arguments;return t[0]=t[0][0],e.apply(this,t)}}function peek$1(e,t){const g=e[p];return(g?latest(g):e)[t]}function readPropFromProto(e,t,g){const n=getDescriptorFromProto(t,g);return n?w in n?n[w]:n.get?.call(e.draft_):void 0}function getDescriptorFromProto(e,t){if(!(t in e))return;let g=h(e);for(;g;){const e=Object.getOwnPropertyDescriptor(g,t);if(e)return e;g=h(g)}}function markChanged(e){e.modified_||(e.modified_=!0,e.parent_&&markChanged(e.parent_))}function prepareCopy(e){e.copy_||(e.assigned_=new Map,e.copy_=shallowCopy(e.base_,e.scope_.immer_.useStrictShallowCopy_))}B.deleteProperty=function(e,t){return B.set.call(this,e,t,void 0)},B.set=function(e,t,g){return G.set.call(this,e[0],t,g,e[0])};var F=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,g)=>{if(isFunction(e)&&!isFunction(t)){const g=t;t=e;const n=this;return function(e=g,...o){return n.produce(e,e=>t.call(this,e,...o))}}let n;if(isFunction(t)||die(6),void 0===g||isFunction(g)||die(7),isDraftable(e)){const o=enterScope(this),a=createProxy(o,e,void 0);let C=!0;try{n=t(a),C=!1}finally{C?revokeScope(o):leaveScope(o)}return usePatchesInScope(o,g),processResult(n,o)}if(!e||!isObjectish(e)){if(n=t(e),void 0===n&&(n=e),n===u&&(n=void 0),this.autoFreeze_&&freeze(n,!0),g){const t=[],o=[];getPlugin(N).generateReplacementPatches_(e,n,{patches_:t,inversePatches_:o}),g(t,o)}return n}die(1,e)},this.produceWithPatches=(e,t)=>{if(isFunction(e))return(t,...g)=>this.produceWithPatches(t,t=>e(t,...g));let g,n;return[this.produce(e,t,(e,t)=>{g=e,n=t}),g,n]},isBoolean(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),isBoolean(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),isBoolean(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){isDraftable(e)||die(8),isDraft(e)&&(e=current(e));const t=enterScope(this),g=createProxy(t,e,void 0);return g[p].isManual_=!0,leaveScope(t),g}finishDraft(e,t){const g=e&&e[p];g&&g.isManual_||die(9);const{scope_:n}=g;return usePatchesInScope(n,t),processResult(void 0,n)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let g;for(g=t.length-1;g>=0;g--){const n=t[g];if(0===n.path.length&&"replace"===n.op){e=n.value;break}}g>-1&&(t=t.slice(g+1));const n=getPlugin(N).applyPatches_;return isDraft(e)?n(e,t):this.produce(e,e=>n(e,t))}};function createProxy(e,t,g,n){const[o,a]=isMap(t)?getPlugin(P).proxyMap_(t,g):isSet(t)?getPlugin(P).proxySet_(t,g):createProxyProxy(t,g);return(g?.scope_??getCurrentScope()).drafts_.push(o),a.callbacks_=g?.callbacks_??[],a.key_=n,g&&void 0!==n?registerChildFinalizationCallback(g,a,n):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);const{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),o}function current(e){return isDraft(e)||die(10,e),currentImpl(e)}function currentImpl(e){if(!isDraftable(e)||isFrozen(e))return e;const t=e[p];let g,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,g=shallowCopy(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else g=shallowCopy(e,!0);return each(g,(e,t)=>{set(g,e,currentImpl(t))},n),t&&(t.finalized_=!1),g}var W,V=new F,U=V.produce,Z=V.setAutoFreeze.bind(V),K=200,applyCap=(e,t)=>!Number.isFinite(t)||t<=0?e:e.length>t?e.slice(e.length-t):e,createFeedModel=({cap:e=K}={})=>{let t=[];return{add:g=>{t=applyCap(t.concat(g),e)},addEntries:g=>{Array.isArray(g)&&0!==g.length&&(t=applyCap(t.concat(g),e))},replaceEntries:g=>{t=applyCap(Array.isArray(g)?[...g]:[],e)},snapshot:()=>[...t],clear:()=>{t=[]},destroy:()=>{t=[]}}},H=3e3,Y=1e3,$=5e3,createStreamModel=({onAppend:e=()=>{},onClear:t=()=>{}}={})=>{let g=0,n=0,o=[],a=[],C=null,I=null;const i=new Set,notify=()=>{n++,I=null,i.forEach(e=>e())},retainLiveTail=e=>e.length<3e3?e:e.slice(-Y),callCallback=(e,...t)=>{try{const g=e(...t);g&&"function"==typeof g.catch&&g.catch(()=>{})}catch{}},addLines=t=>{const n=[],I=[];let i=null;for(const e of t){if("main"!==(e.buffer??"main"))continue;const t={id:g++,html:e.html,timestamp:e.timestamp,isPrompt:e.isPrompt,isMonospace:e.isMonospace,shouldLog:e.shouldLog,buffer:e.buffer??"main"};n.push(t),t.isPrompt?i=t:I.push(t)}0!==n.length&&(o=retainLiveTail([...o,...n]),a=retainLiveTail([...a,...I]),i&&(C=i),callCallback(e,n),notify())};return{subscribe:e=>(i.add(e),()=>i.delete(e)),getSnapshot:()=>(I||(I={version:n,buffer:o,filteredBuffer:a,promptLine:C,totalLines:o.length}),I),addLines,clear:()=>{o=[],a=[],C=null,g=0,callCallback(t),notify()},getStats:()=>({totalLines:o.length,filteredLines:a.length,liveBufferCount:o.length,liveFilteredCount:a.length,version:n,subscribers:i.size,sessionTotalLines:g,nextId:g,liveBufferCapThreshold:H,liveBufferRetainCount:Y})}},Q=5e3,appendWithCap=(e,t,g)=>{if(0===t.length)return e;const n=e.concat(t);return!Number.isFinite(g)||g<=0?n:n.length>g?n.slice(n.length-g):n},createTranscriptModel=({cap:e=Q}={})=>{let t=0,g=0,n=[],o=null;const a=new Set,notify=()=>{g++,o=null,a.forEach(e=>e())},addLines=g=>{const o=[];for(const e of g)o.push({id:t++,html:e.html,timestamp:e.timestamp,isPrompt:Boolean(e.isPrompt),isMonospace:Boolean(e.isMonospace),shouldLog:e.shouldLog,hasMXP:(e.html||"").includes("mxp_send"),buffer:e.buffer});0!==o.length&&(n=appendWithCap(n,o,e),notify())};return{subscribe:e=>(a.add(e),()=>a.delete(e)),getSnapshot:()=>(o||(o={version:g,items:n,totalLines:n.length}),o),addLines,clear:()=>{n=[],t=0,notify()},getStats:()=>({totalLines:n.length,version:g,subscribers:a.size})}},X=Object.freeze({SYSTEM_PHASE:"nexgui4.system.phase",SYSTEM_READY:"nexgui4.system.ready",SYSTEM_DESTROYED:"nexgui4.system.destroyed"}),J=Object.freeze({TIMER_STARTED:"nexgui4.domain.timer.started",TIMER_UPDATED:"nexgui4.domain.timer.updated",TIMER_EXPIRED:"nexgui4.domain.timer.expired",TIMER_CLEARED:"nexgui4.domain.timer.cleared",STATS_UPDATED:"nexgui4.domain.stats.updated",TARGET_CHANGED:"nexgui4.domain.target.changed",STREAM_LINE:"nexgui4.domain.stream.line",PARTY_UPDATED:"nexgui4.domain.party.updated",PARTY_MEMBER_LEFT:"nexgui4.domain.party.member.left",ROOM_UPDATED:"nexgui4.domain.room.updated",DEFENCE_GAINED:"nexgui4.domain.defence.gained",DEFENCE_LOST:"nexgui4.domain.defence.lost",DEFENCES_REPLACED:"nexgui4.domain.defence.replaced",CHARACTER_UPDATED:"nexgui4.domain.character.updated",CLASS_CHANGED:"nexgui4.domain.character.class.changed"}),q=Object.freeze({STREAM_LINE:"nexgui4.ingress.stream.line",TIMER_STARTED:"nexgui4.ingress.timer.started",STATS_UPDATED:"nexgui4.ingress.stats.updated",TARGET_CHANGED:"nexgui4.ingress.target.changed",ROOM_UPDATED:"nexgui4.ingress.room.updated",DEFENCE_GAINED:"nexgui4.ingress.defence.gained",DEFENCE_LOST:"nexgui4.ingress.defence.lost",CLASS_CHANGED:"nexgui4.ingress.character.class.changed"}),ee=Object.freeze({THEME_CHANGED:"nexgui4.ui.theme.changed",HOST_SETTINGS_CHANGED:"nexgui4.ui.host.settings.changed"}),te=Object.freeze({...X,...J,...ee}),hasOwn$1=(e,t)=>Boolean(e)&&Object.prototype.hasOwnProperty.call(e,t),normalizeNumber$3=e=>{const t=Number(e);return Number.isFinite(t)?t:0},normalizeDuration=e=>Math.max(0,Math.abs(normalizeNumber$3(e))),normalizeDirection$1=(e,t="countdown")=>e&&"object"==typeof e?"countup"===e.direction||"countup"===e.mode||!1===e.countDown?"countup":"countdown":t,normalizePosition$1=(e,t="top")=>"string"==typeof e?"bottom"===e?"bottom":"top":e&&"object"==typeof e?"bottom"===e.position?"bottom":"top":t,normalizeStayVisible=(e,t=!0)=>e&&"object"==typeof e&&hasOwn$1(e,"stayVisible")?!0===e.stayVisible:t,normalizeGroupIds=(e,t=[])=>{if(!e||"object"!=typeof e)return[...t];const g=hasOwn$1(e,"groupIds")?e.groupIds:hasOwn$1(e,"groupId")?e.groupId:hasOwn$1(e,"group")?e.group:null;if(null==g)return[...t];const n=Array.isArray(g)?g:[g],o=new Set,a=[];for(const C of n){if("string"!=typeof C)continue;const e=C.trim();e&&!o.has(e)&&(o.add(e),a.push(e))}return a},isVisibleTimer=e=>!0===e.stayVisible||!0===e.enabled&&!0===e.running,areGroupIdsEqual=(e,t)=>e.length===t.length&&e.every((e,g)=>e===t[g]),areTimerSnapshotsEqual=(e,t)=>e.id===t.id&&e.durationMs===t.durationMs&&e.startedAt===t.startedAt&&e.label===t.label&&e.direction===t.direction&&e.position===t.position&&e.stayVisible===t.stayVisible&&e.enabled===t.enabled&&e.running===t.running&&e.elapsedMs===t.elapsedMs&&e.remainingMs===t.remainingMs&&areGroupIdsEqual(e.groupIds,t.groupIds),getIdleElapsedMs=e=>!0===e.stayVisible?e.durationMs:0,noopSetTimer=()=>null,noopClearTimer$1=()=>{},createTimerModel=({eventBus:e,now:t=()=>0,setTimer:g=noopSetTimer,clearTimer:n=noopClearTimer$1}={})=>{const o=new Map;let a=[];const getElapsedMs=e=>e.running&&null!=e.startedAt?Math.min(e.durationMs,Math.max(0,normalizeNumber$3(t())-normalizeNumber$3(e.startedAt))):e.elapsedMs,cloneTimer=e=>{const t=getElapsedMs(e);return{id:e.id,durationMs:e.durationMs,startedAt:e.startedAt,label:e.label,direction:e.direction,position:e.position,stayVisible:e.stayVisible,groupIds:[...e.groupIds],enabled:e.enabled,running:e.running,elapsedMs:t,remainingMs:Math.max(0,e.durationMs-t)}},clearScheduledExpiry=e=>{null!=e.timeoutId&&(n(e.timeoutId),e.timeoutId=null)},emitTimerUpdated=t=>{e.emit(J.TIMER_UPDATED,cloneTimer(t))},expire=t=>{const g=o.get(t);g&&(clearScheduledExpiry(g),g.elapsedMs=g.durationMs,g.startedAt=null,g.enabled=!1,g.running=!1,e.emit(J.TIMER_EXPIRED,{...cloneTimer(g),reason:"expired"}))},scheduleExpiry=e=>{clearScheduledExpiry(e),e.timeoutId=g(()=>expire(e.id),e.durationMs)},createDormantTimer=(e,t,g,n,o)=>{const a=t??o?.durationMs??0,C=normalizeStayVisible(n,o?.stayVisible??!0);return{id:e,durationMs:a,startedAt:null,label:"string"==typeof g?g:o?.label??"",direction:normalizeDirection$1(n,o?.direction??"countdown"),position:normalizePosition$1(n,o?.position??"top"),stayVisible:C,groupIds:normalizeGroupIds(n,o?.groupIds??[]),enabled:!1,running:!1,elapsedMs:C?a:0,timeoutId:null}},createTimer=(e,t,g,n)=>{const a=o.get(e);a&&clearScheduledExpiry(a);const C=createDormantTimer(e,normalizeDuration(t),g,n,a);return o.set(e,C),emitTimerUpdated(C),cloneTimer(C)},start=g=>{const n=o.get(g);if(!n)return null;clearScheduledExpiry(n),n.elapsedMs=0,n.startedAt=t(),n.enabled=!0,n.running=!0,scheduleExpiry(n);const a=cloneTimer(n);return e.emit(J.TIMER_STARTED,a),a},remove=t=>{const g=o.get(t);if(!g)return null;clearScheduledExpiry(g);const n=cloneTimer(g);return o.delete(t),e.emit(J.TIMER_EXPIRED,{...n,reason:"removed"}),n},list=(e={})=>{const t="string"==typeof e?e:e.groupId??null,g="object"==typeof e&&!0===e?.visibleOnly;return[...o.values()].map(e=>cloneTimer(e)).filter(e=>!(t&&!e.groupIds.includes(t)||g&&!isVisibleTimer(e)))},snapshot=()=>list({visibleOnly:!0});return{add:(e,t,g="",n)=>{const o=createTimer(e,t,g,n);return n&&"object"==typeof n&&!0===n.autoStart?start(e):o},clearAll:()=>{if(0===o.size)return 0;const t=o.size;return o.forEach(e=>clearScheduledExpiry(e)),o.clear(),e.emit(J.TIMER_CLEARED),t},destroy:()=>{o.forEach(e=>clearScheduledExpiry(e)),o.clear()},get:e=>{const t=o.get(e);return t?cloneTimer(t):null},list,read:()=>{const e=[...o.values()].map(e=>cloneTimer(e)).filter(e=>isVisibleTimer(e));return a.length===e.length&&a.every((t,g)=>areTimerSnapshotsEqual(t,e[g]))||(a=e),a},remove,reset:e=>{const t=o.get(e);return t?(clearScheduledExpiry(t),t.elapsedMs=getIdleElapsedMs(t),t.startedAt=null,t.enabled=!1,t.running=!1,emitTimerUpdated(t),cloneTimer(t)):null},snapshot,start,stop:e=>{const t=o.get(e);return t?(clearScheduledExpiry(t),t.elapsedMs=getElapsedMs(t),t.startedAt=null,t.enabled=!1,t.running=!1,emitTimerUpdated(t),cloneTimer(t)):null}}},isPlainObject$2=e=>"[object Object]"===Object.prototype.toString.call(e),toNumber=(e,t=0)=>{const g="number"==typeof e?e:"string"==typeof e&&e.trim().length>0?Number(e):NaN;return Number.isFinite(g)?g:t},toPercent=e=>{if("number"==typeof e&&Number.isFinite(e))return e;if("string"!=typeof e)return null;const t=Number.parseInt(e.replace("%","").trim(),10);return Number.isNaN(t)?null:t},toTrimmedString=e=>"string"==typeof e&&e.trim().length>0?e.trim():null,toBooleanFlag=e=>!0===e||1===e||"1"===e,stripAnsi=e=>"string"==typeof e?e.replace(/\u001b\[[0-9;]*m/g,"").trim():"",extractNamedValue=e=>Array.isArray(e)?toTrimmedString(e[0]):isPlainObject$2(e)?toTrimmedString(e.name):toTrimmedString(e),deepFreeze=e=>{if(!e||"object"!=typeof e||Object.isFrozen(e))return e;Object.freeze(e);for(const t of Object.values(e))deepFreeze(t);return e},parseFontSize=(e,t=14)=>{if("number"==typeof e&&Number.isFinite(e)&&e>0)return e;if("string"==typeof e){const t=Number.parseFloat(e);if(Number.isFinite(t)&&t>0)return t}return t},ge={hp:{current:0,max:0},mp:{current:0,max:0},ep:{current:0,max:0},wp:{current:0,max:0},nl:{current:0,max:0},gold:0,bank:0,xp:0,xpToNext:0},createStatsModel=({eventBus:e}={})=>{let t=structuredClone(ge);const read=()=>t;return{update:g=>{for(const e of Object.keys(g)){const n=g[e];null===n||"object"!=typeof n||Array.isArray(n)?t[e]=n:t[e]={...t[e],...n}}e.emit(J.STATS_UPDATED,read())},read,snapshot:()=>deepFreeze(structuredClone(t)),destroy:()=>{t=structuredClone(ge)}}},ne=Object.freeze({goldCollection:!0,targetCalls:!0,affCalls:!0,callTargets:!1,callAffs:!1,gagChat:!1}),re=Object.freeze([{key:"goldCollection",label:"Collect Gold",tooltip:"Legacy party automation flag for gold collection behaviour."},{key:"targetCalls",label:"Accept Targets",tooltip:"Accept leader target calls from party chat."},{key:"affCalls",label:"Accept Affs",tooltip:"Accept legacy affliction call messages from party chat."},{key:"callTargets",label:"Call Targets",tooltip:"Legacy toggle preserved for compatibility with party workflows."},{key:"callAffs",label:"Call Affs",tooltip:"Legacy toggle preserved for compatibility with party workflows."},{key:"gagChat",label:"Gag Chat",tooltip:"Hide party chat lines from the display stream."}]),oe=Object.freeze(re.map(({key:e})=>e)),isNonEmptyString=e=>"string"==typeof e&&e.trim().length>0,trimToEmpty=e=>isNonEmptyString(e)?e.trim():"",ae=trimToEmpty,normalizeLookupKey=e=>trimToEmpty(e).toLowerCase(),toDisplayName=e=>trimToEmpty(e).replace(/[_-]+/g," ").replace(/\s+/g," ").replace(/\b([a-z])/g,e=>e.toUpperCase()),capitalizeFirst=e=>{const t=trimToEmpty(e);return t?t.charAt(0).toUpperCase()+t.slice(1):""},cloneSettings=e=>({...ne,...e}),cloneState=e=>({members:[...e.members],leader:e.leader,selfName:e.selfName,settings:cloneSettings(e.settings)}),normalizeMembers=e=>{const t=[],g=new Set;return(Array.isArray(e)?e:[]).forEach(e=>{const n=ae("string"==typeof e?e:e?.name);n&&!g.has(n)&&(g.add(n),t.push(n))}),t},reconcileLeader=(e,t)=>t.includes(e.leader)?e.leader:e.selfName&&t.includes(e.selfName)?e.selfName:t[0]??"",ensureSelfMember=(e,t)=>!e.selfName||t.includes(e.selfName)?t:[e.selfName,...t],createPartyModel=({eventBus:e}={})=>{let t={members:[],leader:"",selfName:"",settings:cloneSettings(ne)};const emitUpdated=()=>{e.emit(J.PARTY_UPDATED,snapshot())},snapshot=()=>cloneState(t);return{update:e=>{const g=ensureSelfMember(t,normalizeMembers(e)),n=reconcileLeader(t,g);t.leader===n&&t.members.length===g.length&&t.members.every((e,t)=>e===g[t])||(t={...t,members:g,leader:n},emitUpdated())},addMember:e=>{const g=ae(e);g&&!t.members.includes(g)&&(t={...t,members:[...t.members,g],leader:t.leader||g},emitUpdated())},removeMember:g=>{const n=ae(g);if(!n||n===t.selfName||!t.members.includes(n))return;const o=t.members.filter(e=>e!==n);t={...t,members:o,leader:reconcileLeader(t,o)},e.emit(J.PARTY_MEMBER_LEFT,{name:n}),emitUpdated()},setLeader:e=>{const g=ae(e);g&&t.members.includes(g)&&t.leader!==g&&(t={...t,leader:g},emitUpdated())},setSelf:e=>{const g=ae(e);if(!g)return;const n=ensureSelfMember({...t,selfName:g},t.members.filter(e=>e!==g)),o=n.includes(t.leader)?t.leader:g;t.selfName===g&&t.leader===o&&t.members.length===n.length&&t.members.every((e,t)=>e===n[t])||(t={...t,selfName:g,members:n,leader:o},emitUpdated())},setSetting:(e,g)=>{if(!oe.includes(e))throw new Error(`[nexGui4] Unknown party setting "${String(e)}".`);const n=!0===g;t.settings[e]!==n&&(t={...t,settings:{...t.settings,[e]:n}},emitUpdated())},read:()=>t,snapshot,destroy:()=>{t={members:[],leader:"",selfName:"",settings:cloneSettings(ne)}}}},Ae={players:[],npcs:[],items:[],roomName:"",roomId:""},cloneRoomCollection=e=>Array.isArray(e)?structuredClone(e):[],createRoomModel=({eventBus:e}={})=>{let t=structuredClone(Ae);const read=()=>t;return{update:g=>{t={players:g.players?[...g.players]:[],npcs:cloneRoomCollection(g.npcs),items:cloneRoomCollection(g.items),roomName:g.roomName??"",roomId:g.roomId??""},e.emit(J.ROOM_UPDATED,read())},read,snapshot:()=>({players:[...t.players],npcs:cloneRoomCollection(t.npcs),items:cloneRoomCollection(t.items),roomName:t.roomName,roomId:t.roomId}),destroy:()=>{t=structuredClone(Ae)}}},Ce={name:"",class:"",level:0,gender:null,balance:!1,equilibrium:!1,classBalanceType:null,classBalanceReady:null,currentAffs:[],limbs:{}},createCharacterModel=({eventBus:e}={})=>{let t={...Ce};const read=()=>t;return{update:g=>{t={...t,...g},e.emit(J.CHARACTER_UPDATED,read())},read,setClass:g=>{t={...t,class:g},e.emit(J.CLASS_CHANGED,{class:g})},snapshot:()=>deepFreeze(structuredClone(t)),destroy:()=>{t={...Ce}}}},normalizeGender$1=e=>{if("string"!=typeof e)return null;const t=e.trim().toLowerCase();return"female"===t?"female":"male"===t?"male":null},normalizeAfflictionName=e=>{if(Array.isArray(e))return normalizeAfflictionName(e[0]);if(isPlainObject$2(e))return normalizeAfflictionName(e.name??e.affliction??e.id);if("string"!=typeof e)return null;const t=e.trim().toLowerCase();return t.length>0?t:null},normalizeAfflictionList=e=>{if(Array.isArray(e)){const t=e.map(e=>normalizeAfflictionName(e)).filter(Boolean);return t.length>0?Array.from(new Set(t)):null}return isPlainObject$2(e)?normalizeAfflictionList(Object.keys(e)):null},normalizeLimbMap=e=>isPlainObject$2(e)?Object.fromEntries(Object.entries(e).map(([e,t])=>null!==t&&"object"==typeof t?[e,structuredClone(t)]:[e,{percent:toNumber(t)}])):null,buildCharacterDetailPatch=e=>{if(!isPlainObject$2(e))return null;const t={},g=normalizeGender$1(e.gender),n=normalizeAfflictionList(e.currentAffs??e.afflictions),o=normalizeLimbMap(e.limbs);return g&&(t.gender=g),n&&(t.currentAffs=n),o&&(t.limbs=o),Object.keys(t).length>0?t:null},applyCharacterAfflictionEvent=(e,t,g)=>{if("Char.Afflictions.Add"!==t&&"Char.Afflictions.Remove"!==t)return!1;const n=normalizeAfflictionName(g);if(!n)return!1;const o=e.snapshot(),a=Array.isArray(o.currentAffs)?o.currentAffs:[];return"Char.Afflictions.Add"===t?!a.includes(n)&&(e.update({currentAffs:[...a,n]}),!0):(e.update({currentAffs:a.filter(e=>e!==n)}),!0)},Ie=["id","ID"],ie=["Text","text","short_desc"],se=["HP","hp","hpperc"],hasAnyKey=(e,t)=>t.some(t=>Object.prototype.hasOwnProperty.call(e,t)),readFirst=(e,t)=>{for(const g of t)if(Object.prototype.hasOwnProperty.call(e,g))return e[g]},normalizeId=e=>"number"==typeof e&&Number.isFinite(e)?String(e):toTrimmedString(e),readHpText=e=>"number"==typeof e&&Number.isFinite(e)?String(e):toTrimmedString(e),deriveIsPlayer=e=>"-1"===String(e),createEmptyTargetRecord=()=>({id:null,name:null,isPlayer:!1,hpPercent:null,hpText:null,hpDelta:null,gender:null,currentAffs:[],limbs:{}}),createTargetModel=({eventBus:e}={})=>{let t=createEmptyTargetRecord(),g=0;const read=()=>t,emitChange=()=>{g+=1,e?.emit?.(J.TARGET_CHANGED,read())};return{setIdentity:e=>{if(!isPlainObject$2(e))return!1;const g=hasAnyKey(e,Ie),n=hasAnyKey(e,ie),o=g?normalizeId(readFirst(e,Ie)):t.id,a=n?toTrimmedString(readFirst(e,ie)):t.name,C=o!==t.id,I=a!==t.name;if(!C&&!I)return!1;const i=C?createEmptyTargetRecord():t,s=hasAnyKey(e,se),l=s?readHpText(readFirst(e,se)):i.hpText,c=s?toPercent(readHpText(readFirst(e,se))):i.hpPercent;return t={...i,id:o,name:a,isPlayer:deriveIsPlayer(o),hpText:l,hpPercent:c},emitChange(),!0},applyDetail:e=>{if(!isPlainObject$2(e))return!1;const g={};if("number"==typeof e.hpPercent&&Number.isFinite(e.hpPercent))g.hpPercent=e.hpPercent;else if("string"==typeof e.hpPercent){const t=toPercent(e.hpPercent);null!=t&&(g.hpPercent=t)}const n=readHpText(e.hpText);null!=n&&(g.hpText=n),"number"==typeof e.hpDelta&&Number.isFinite(e.hpDelta)&&(g.hpDelta=e.hpDelta);const o=normalizeGender$1(e.gender);o&&(g.gender=o);const a=normalizeAfflictionList(e.currentAffs??e.afflictions);a&&(g.currentAffs=a);const C=normalizeLimbMap(e.limbs);return C&&(g.limbs=C),0!==Object.keys(g).length&&(t={...t,...g},emitChange(),!0)},clear:()=>{t=createEmptyTargetRecord(),emitChange()},read,snapshot:()=>deepFreeze(structuredClone(t)),getVersion:()=>g,destroy:()=>{t=createEmptyTargetRecord()}}},createDefenceModel=({eventBus:e}={})=>{let t=[];const replaceAll=(g=[])=>{t=Array.isArray(g)?[...new Set(g.map(e=>"string"==typeof e?e.trim():"").filter(Boolean))].sort():[],e.emit(J.DEFENCES_REPLACED,{defences:snapshot()})},snapshot=()=>[...t];return{gain:g=>{t.includes(g)||(t=[...t,g].sort()),e.emit(J.DEFENCE_GAINED,{name:g})},lose:g=>{t.includes(g)&&(t=t.filter(e=>e!==g)),e.emit(J.DEFENCE_LOST,{name:g})},replaceAll,reset:()=>{t=[]},read:()=>t,snapshot,destroy:()=>{t=[]}}},normalizeClassBalanceType=e=>"string"==typeof e&&e.trim().length>0?e.trim():null,normalizeClassStatList=e=>Array.isArray(e)?e.reduce((e,t)=>{if("string"!=typeof t)return e;const g=t.trim();return g?(e.push(g),e):e},[]):[],resolveClassBalanceReady=({classStats:e,classBalanceType:t})=>{const g=normalizeClassBalanceType(t);if(!g)return null;const n=normalizeClassStatList(e).map(e=>e.toLowerCase()),o=`${g.toLowerCase()}: yes`,a=`${g.toLowerCase()}: no`;return!!n.includes(o)||!n.includes(a)&&null},createClassBalanceController=()=>{let e=null,t=[];const snapshot=()=>({classBalanceType:e,classBalanceReady:resolveClassBalanceReady({classStats:t,classBalanceType:e})});return{getType:()=>e,setType:t=>(e=normalizeClassBalanceType(t),snapshot()),updateFromVitals:e=>(t=normalizeClassStatList(e?.charstats),snapshot()),destroy:()=>{e=null,t=[]}}},le=Object.freeze(["m","mx"]),ce=new Set(le),isRoomNpcAttrib=e=>"string"==typeof e&&ce.has(e),isRoomNpcItem=e=>"object"==typeof e&&null!==e&&isRoomNpcAttrib(e.attrib),getRoomEntryId=e=>isPlainObject$2(e)&&null!=e.id?String(e.id):null,isRoomLocation=e=>"room"===toTrimmedString(e?.location)?.toLowerCase(),splitRoomEntries=e=>(Array.isArray(e)?structuredClone(e):[]).reduce((e,t)=>(isRoomNpcItem(t)?e.npcs.push(t):e.items.push(t),e),{items:[],npcs:[]}),extractRoomItemList=e=>Array.isArray(e?.items)?e.items:Array.isArray(e?.Items)?e.Items:Array.isArray(e?.room)?e.room:[],extractRoomItemEntry=e=>isPlainObject$2(e?.item)?e.item:isPlainObject$2(e?.Item)?e.Item:isPlainObject$2(e)?e:null,removeRoomItemEntry=(e,t)=>e.filter(e=>getRoomEntryId(e)!==t),upsertRoomItemEntry=(e,t)=>{const g=getRoomEntryId(t);if(!g)return[...e,structuredClone(t)];const n=structuredClone(e),o=n.findIndex(e=>getRoomEntryId(e)===g);return-1===o?(n.push(structuredClone(t)),n):(n[o]=structuredClone(t),n)},normalizeRoomPlayerEntries=e=>Array.isArray(e)?e:Array.isArray(e?.Players)?e.Players:Array.isArray(e?.players)?e.players:[],extractRoomPlayerName=e=>extractNamedValue(e)??toTrimmedString(e?.fullname),createRoomOccupantsModel=({roomModel:e,playerDirectory:t}={})=>{const rememberRoomPlayers=e=>{t?.rememberRoomPlayers?.(e)},apply=(t,g)=>{const n=e.snapshot();switch(t){case"Room.Info":return e.update({...n,roomName:toTrimmedString(g?.name)??"",roomId:g?.num??g?.id??""}),!0;case"Room.Players":{const t=normalizeRoomPlayerEntries(g),o=t.map(extractRoomPlayerName).filter(Boolean);return rememberRoomPlayers(t),e.update({...n,players:o}),!0}case"Room.Addplayer":case"Room.AddPlayer":{const t=toTrimmedString(g?.name)??extractNamedValue(g)??toTrimmedString(g?.fullname);return!(!t||n.players.includes(t)||(rememberRoomPlayers([g]),e.update({...n,players:[...n.players,t]}),0))}case"Room.RemovePlayer":{const t=extractNamedValue(g);return!!t&&(e.update({...n,players:n.players.filter(e=>e!==t)}),!0)}case"Char.Items.List":return!!isRoomLocation(g)&&(e.update({...n,...splitRoomEntries(extractRoomItemList(g))}),!0);case"Char.Items.Add":case"Char.Items.Update":{if(!isRoomLocation(g))return!1;const t=extractRoomItemEntry(g);if(!t)return!1;const o=getRoomEntryId(t),a=null==o?n.npcs:removeRoomItemEntry(n.npcs,o),C=null==o?n.items:removeRoomItemEntry(n.items,o);return e.update({...n,npcs:isRoomNpcItem(t)?upsertRoomItemEntry(a,t):a,items:isRoomNpcItem(t)?C:upsertRoomItemEntry(C,t)}),!0}case"Char.Items.Remove":{if(!isRoomLocation(g))return!1;const t=getRoomEntryId(extractRoomItemEntry(g));return!!t&&(e.update({...n,npcs:removeRoomItemEntry(n.npcs,t),items:removeRoomItemEntry(n.items,t)}),!0)}default:return!1}};return Object.freeze({apply})},ue=Object.freeze({"&":"&","<":"<",">":">",'"':""","'":"'"}),escapeHtml=e=>String(e??"").replace(/[&<>"']/g,e=>ue[e]),de=Object.freeze({amp:"&",lt:"<",gt:">",quot:'"',apos:"'",nbsp:" "}),stripHtml=e=>{if(!e||"string"!=typeof e)return e??"";let t=e.replace(/<[^>]+>/g,"");return t=t.replace(/&([^;]+);/g,(e,t)=>{if(de[t])return de[t];if(t.startsWith("#")){const e=t.startsWith("#x")?parseInt(t.substring(2),16):parseInt(t.substring(1),10);if(!isNaN(e))return String.fromCharCode(e)}return e}),t},pe=Object.freeze({"a monolith sigil":{color:"red",text:"A MONOLITH SIGIL"},"a cube sigil":{color:"yellow",text:"A CUBE SIGIL"},"some gold sovereigns":{color:"gold",text:"GOLD COINS"}}),me=Object.freeze({angle:Object.freeze({open:"<",close:">"}),square:Object.freeze({open:"[",close:"]"}),curly:Object.freeze({open:"{",close:"}"}),round:Object.freeze({open:"(",close:")"})}),styleAttribute$2=e=>{const t=Object.entries(e).filter(([,e])=>e);return 0===t.length?"":` style="${t.map(([e,t])=>`${e}: ${t}`).join("; ")}"`},createTextSegment=(e,t,g={})=>({text:e,color:t,italic:Boolean(g.italic),bold:Boolean(g.bold)}),renderSegmentHtml=e=>`<span${styleAttribute$2({color:e.color,"font-style":e.italic?"italic":null,"font-weight":e.bold?"700":null})}>${escapeHtml(e.text)}</span>`,createStaticRule=(e,t,g,n)=>Object.freeze({family:"room-text",id:e,gate:t,pattern:g,createMarker:()=>n}),createDirectionalRule=(e,t,g,n,o,a,C,I)=>Object.freeze({family:"room-text",id:e,gate:t,pattern:g,createMarker:e=>({frame:n,frameColor:o,segments:[createTextSegment(a,C),createTextSegment(capitalizeFirst(e?.groups?.direction),I)]})}),createSigilRule=(e,t,g,n,o)=>createStaticRule(e,t,g,{frame:"curly",frameColor:"yellow",segments:[createTextSegment("Sigil: ","silver"),createTextSegment(n,o)]}),createRuneRule=(e,t,g,n)=>createStaticRule(e,t,g,{frame:"round",frameColor:"red",segments:[createTextSegment("Rune: ","silver"),createTextSegment(n,"aquamarine")]}),createConquestRule=(e,t,g,n,o)=>createStaticRule(e,t,g,{frame:null,frameColor:null,leftIcons:[{id:"shield-halved",colors:["silver",o],size:12}],rightIcons:[{id:"shield-halved",colors:[o,"silver"],size:12}],segments:[createTextSegment(" Conquest: ","slategray"),createTextSegment(n,o)]}),fe=Object.freeze([createStaticRule("totem","runic totem",/A runic totem is planted solidly in the ground\./,{frame:"angle",frameColor:"dodgerblue",segments:[createTextSegment("TOTEM","Tomato")]}),createStaticRule("frozenGround","slick with",/The ground is slick with ice\./,{frame:"angle",frameColor:"dodgerblue",segments:[createTextSegment("Frozen Ground","PowderBlue")]}),createStaticRule("graveHands","rotting flesh",/Hands of rotting flesh and white bone push up from the ground/,{frame:"angle",frameColor:"crimson",segments:[createTextSegment("Gravehands","Beige")]}),createDirectionalRule("icewall","icewall",/An icewall is here, blocking passage to the (?<direction>\w+)\./,"square","red","Icewall: ","dodgerblue","aquamarine"),createDirectionalRule("stonewall","wall of stone",/A large wall of stone stands here, blocking passage to the (?<direction>\w+)\./,"square","red","Stonewall: ","silver","aquamarine"),createSigilRule("cubeSigil","cube",/Resting on the ground is a cube-shaped silver sigil\./,"Cube","aquamarine"),createSigilRule("eyeSigil","obsidian",/An obsidian eye sigil is here\./,"Eye","lightgreen"),createSigilRule("monolithSigil","monolith",/A sigil in the shape of a small, rectangular monolith is on the ground\./,"Monolith","red"),createSigilRule("keySigil","key-shaped",/Lying flat on the ground is a key-shaped sigil\./,"Key","lightPink"),createRuneRule("kena","nightmares",/A rune that looks like something out of your nightmares has been sketched into the ground here\./,"Kena"),createRuneRule("uruz","lightning bolt",/A rune like a lightning bolt has been sketched into the ground here\./,"Uruz"),createRuneRule("fehu","closed eye",/A rune like a closed eye has been sketched into the ground here\./,"Fehu"),createRuneRule("pithikhan","square box",/A rune resembling a square box has been sketched into the ground here\./,"Pithikhan"),createRuneRule("inguz","stick man",/A rune that looks like a stick man has been sketched into the ground here\./,"Inguz"),createRuneRule("wunjo","open eye",/A rune like an open eye has been sketched into the ground here\./,"Wunjo"),createRuneRule("sowulu","a nail",/A rune that looks like a nail has been sketched into the ground here\./,"Sowulu"),createRuneRule("isaz","flurry of lighning",/A rune like a flurry of lightning bolts has been sketched into the ground here\./,"Isaz"),createRuneRule("dagaz","rising sun",/A rune like a rising sun has been sketched into the ground here\./,"Dagaz"),createRuneRule("raido","resembling a horse",/A rune resembling a horse has been sketched into the ground here\./,"Raido"),createRuneRule("nauthiz","resembling a leech",/A rune resembling a leech has been sketched into the ground here\./,"Nauthiz"),createRuneRule("mannaz","resembling a bell",/A rune resembling a bell has been sketched into the ground here\./,"Mannaz"),createRuneRule("othala","resembling a mountain",/A rune resembling a mountain range has been sketched into the ground here\./,"Othala"),createRuneRule("sleizak","resembling a viper",/A rune resembling a viper has been sketched into the ground here\./,"Sleizak"),createRuneRule("tiwaz","upward-pointing arrow",/A rune like an upward-pointing arrow has been sketched into the ground here\./,"Tiwaz"),createRuneRule("nairat","like a butterfly",/A rune shaped like a butterfly has been sketched into the ground here\./,"Nairat"),createRuneRule("eihwaz","like a yew",/A rune shaped like a yew has been sketched into the ground here\./,"Eihwaz"),createConquestRule("conquestAshtan","warp-touched",/Crackling ozone heralds warp-touched mirage, their coming the advent of change\./,"Ashtan ","#990099"),createConquestRule("conquestCyrene","draconic tracks",/Bound in ice, draconic tracks scribe a glittering path across the earth\./,"Cyrene ","#009999"),createConquestRule("conquestNeraeos","Cerulean waters",/Cerulean waters preside, fathom and depths stirred to roiling currents by the pervasive will of Neraeos Pelagia, Lord of the Sea\./,"Cyrene ","#009999"),createConquestRule("conquestEleusis","fecundity",/Nature's fecundity floods the surrounds with the clamour of life in a chittering refrain\./,"Eleusis ","#00e600"),createConquestRule("conquestHashan","leaden shadow",/Lines of leaden shadow coil underfoot, turning earth to metal by alchemical writ\./,"Hashan ","#999900"),createConquestRule("conquestMhaldor","red-hued",/A noxious, red-hued fog overwhelms the area with a thick, palpable vapour\./,"Mhaldor ","#e60000"),createConquestRule("conquestTargossas","mien",/Radiant light joins with calescent heat, suffusing the area with a harsh, blinding mien\./,"Targossas ","#ffffff"),createConquestRule("conquestUnderworld","ashen earth",/Soul's blood pools on ashen earth turned dust, an inviolable call to death's advance\./,"Underworld ","tomato")]),he=new Map,ye=new Set,notifyOverrideSubscribers=()=>{for(const e of ye)e()},subscribeToRoomItemOverrides=e=>(ye.add(e),()=>ye.delete(e)),setUserRoomItemOverride=(e,t)=>{const g=normalizeLookupKey(e);g&&(he.set(g,t),notifyOverrideSubscribers())},removeUserRoomItemOverride=e=>{const t=normalizeLookupKey(e);t&&(he.delete(t),notifyOverrideSubscribers())},getUserRoomItemOverride=e=>{const t=normalizeLookupKey(e);return t?he.get(t)??null:null},listUserRoomItemOverrides=()=>Array.from(he.entries()),getRoomItemOverride=e=>{if("string"==typeof e){const t=normalizeLookupKey(e);return he.get(t)??pe[t]??null}if(!e||"object"!=typeof e)return null;const t=normalizeLookupKey(e.id),g=normalizeLookupKey(e.name);return he.get(t)??he.get(g)??pe[t]??pe[g]??null},renderRoomMarkerHtml=(e,t={})=>{const g=e.frame?me[e.frame]:null,n=t.iconRenderer,o=Array.isArray(e.leftIcons)?e.leftIcons.map(e=>n?.(e)??"").join(""):"",a=Array.isArray(e.rightIcons)?e.rightIcons.map(e=>n?.(e)??"").join(""):"";return[o,g?renderSegmentHtml(createTextSegment(g.open,e.frameColor,{bold:!0})):"",e.segments.map(renderSegmentHtml).join(""),g?renderSegmentHtml(createTextSegment(g.close,e.frameColor,{bold:!0})):"",a].join("")},matchRoomTextReplacements=e=>isNonEmptyString(e)?fe.flatMap(t=>{if(!e.includes(t.gate))return[];const g=e.match(t.pattern);return g?[{rule:t,match:g,marker:t.createMarker(g)}]:[]}):[],replaceRoomText=(e,t={})=>{if(!isNonEmptyString(e))return e;let g=e;for(const{rule:n,match:o,marker:a}of matchRoomTextReplacements(e))g=g.replace(n.pattern,renderRoomMarkerHtml(a,t));return g},createWormholeExitDescriptor=({warp:e,currentArea:t}={})=>{if(!e||"object"!=typeof e)return null;const g=t&&t===e.area?e.name:e.areaName;return isNonEmptyString(g)?{family:"room-exit",command:"worm warp",label:`Wormhole: (${g})`}:null},renderWormholeExitHtml=e=>e?`<span>, and <a class="mxp_send" href="#" rel="${escapeHtml(e.command)}">${escapeHtml(e.label)}</a>.</span>`:"",extractPartyChatPayload=e=>{if(!isPlainObject$2(e)||"party"!==toTrimmedString(e.channel)?.toLowerCase())return null;const t=toTrimmedString(e.talker),g=stripAnsi(e.text);return t&&g?{talker:t,message:g.match(/^\(Party\): (\w+) says, "(.+)"$/)?.[2]??g}:null},capitalizeLookupName=e=>`${e.charAt(0).toUpperCase()}${e.slice(1)}`,createPartyAutomationModel=({characterModel:e,partyModel:t,playerDirectory:g,sendCommand:n}={})=>{const send=e=>{"function"==typeof n&&n(e)},processChannelText=n=>{const o=extractPartyChatPayload(n);if(!o)return!1;const a=t.snapshot();if(!a.settings.targetCalls||o.talker!==a.leader)return!1;const C=o.message.match(/^Target: (.+)\.$/)??o.message.match(/^(?:Target|TARGET) (.+)\.$/);if(C){const t=toTrimmedString(C[1]);if(!t)return!1;const n=e.snapshot(),o=g.getPlayerProfile(n.name)?.city??"",a=g.getPlayerProfile(capitalizeLookupName(t))??g.getPlayerProfile(t);return!(a?.city&&o&&a.city===o||(send(`settarget ${t}`),send(`enemy ${t}`),0))}const I=o.message.match(/^Enemy (.+)\.$/);if(I){const e=toTrimmedString(I[1]);if(e)return send(`enemy ${e}`),!0}return!1},processEvent=(e,t)=>"Comm.Channel.Text"===e&&processChannelText(t);return Object.freeze({processChannelText,processEvent})},be=(W={commands:["send","sendGmcp"],variables:["getVariable","setVariable"],target:["getTarget","setTarget"],output:["notice","displayHtmlLine","gagCurrentBlock"],host:["getHostSettings","setHostSetting","getHostLayoutSnapshot","updateHostLayoutAttributes","focusInput","getConfiguredDefences","getActiveDefences"],events:["on","off"],lifecycle:["destroy"]},Object.freeze(Object.fromEntries(Object.entries(W).map(([e,t])=>[e,Object.freeze([...t])])))),ve=Object.freeze(Object.values(be).flat()),assertAdapterContract=e=>{const t=ve;for(const g of t)if("function"!=typeof e?.[g])throw new Error(`[nexGui4] Adapter missing required method: "${g}"`);return e},createStoreImpl=e=>{let t;const g=new Set,setState=(e,n)=>{const o="function"==typeof e?e(t):e;if(!Object.is(o,t)){const e=t;t=(null!=n?n:"object"!=typeof o||null===o)?o:Object.assign({},t,o),g.forEach(g=>g(t,e))}},getState=()=>t,n={setState,getState,getInitialState:()=>o,subscribe:e=>(g.add(e),()=>g.delete(e))},o=t=e(setState,getState,n);return n},createStore=e=>e?createStoreImpl(e):createStoreImpl,identity$1=e=>e;function useStore(e,t=identity$1){const g=l.default.useSyncExternalStore(e.subscribe,l.default.useCallback(()=>t(e.getState()),[e,t]),l.default.useCallback(()=>t(e.getInitialState()),[e,t]));return l.default.useDebugValue(g),g}var xe,createImpl=e=>{const t=createStore(e),useBoundStore=e=>useStore(t,e);return Object.assign(useBoundStore,t),useBoundStore},create=e=>e?createImpl(e):createImpl,normalizeConfiguredDefenceList=e=>{if(!Array.isArray(e))return[];const t=new Set;return e.reduce((e,g)=>{if("string"!=typeof g)return e;const n=g.trim();return!n||t.has(n)||(t.add(n),e.push(n)),e},[])},createDefenceStore=({defenceModel:e,eventBus:t,configuredDefences:g=[]})=>{const readDefences=()=>e.read?.()??e.snapshot(),n=create(()=>({defences:readDefences(),configuredDefences:normalizeConfiguredDefenceList(g),gainDefence:t=>e.gain(t),loseDefence:t=>e.lose(t),resetDefences:()=>{e.reset(),n.setState({defences:readDefences()})},setConfiguredDefences:e=>{n.setState({configuredDefences:normalizeConfiguredDefenceList(e)})}})),refreshDefences=()=>{n.setState({defences:readDefences()})};return t.on(J.DEFENCE_GAINED,refreshDefences),t.on(J.DEFENCE_LOST,refreshDefences),t.on(J.DEFENCES_REPLACED,refreshDefences),n},isRecord=e=>"[object Object]"===Object.prototype.toString.call(e),extractDefenceName=e=>"string"==typeof e?e:isRecord(e)&&"string"==typeof e.name?e.name:null,removeTrackedHandler=(e,t,g)=>{const n=e.get(t);if(n){if("string"==typeof g)n.delete(g);else for(const[e,t]of n.entries())if(t===g){n.delete(e);break}0===n.size&&e.delete(t)}},normalizeListenerIdSegment=e=>String(e).replace(/[^A-Za-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-"),createDefaultListenerId=(e,t)=>{const g=`nexGui4-${normalizeListenerIdSegment(e)||"event"}`;if(!t||0===t.size)return g;let n=t.size+1,o=`${g}-${n}`;for(;t.has(o);)n+=1,o=`${g}-${n}`;return o},Se="#00B1D2",we=`<span style="color:${Se};">[-</span><span style="color:#FDDB27;">nexGui</span><span style="color:${Se};">-] </span>`,renderNoticeHtml=(e,t)=>{if(t?.html)return we+String(e);const g=t&&"object"==typeof t?t.style:t,n=escapeHtml(e);return"string"==typeof g&&g.trim()?we+`<span style="color: ${escapeHtml(g.trim())};">${n}</span>`:we+n},getHostSettings=()=>nexusclient.settings?.()??{},getHostLayout=()=>nexusclient.ui?.()?.layout?.()??null,updateHostLayoutAttributes=e=>{const t=getHostLayout();t?.flexModel?.doAction&&"function"==typeof t.model&&t.flexModel.doAction({type:"FlexLayout_UpdateModelAttributes",data:{json:{...t.model()?.global??{},...e}}})},extractLegacyRuntimeConfiguredDefences=()=>normalizeConfiguredDefenceList(globalThis.nexGui?.defences),extractNexSysConfiguredDefences=()=>{const e=globalThis.nexSys?.defPrios,t=globalThis.nexSys?.defs;if("[object Object]"!==Object.prototype.toString.call(e)||"[object Object]"!==Object.prototype.toString.call(t))return[];const g=Object.entries(e.keepup??{}).filter(([,e])=>Boolean(e)).map(([e])=>e).filter(e=>Boolean(t?.[e]?.prio)),n=Object.entries(e.static??{}).filter(([,e])=>Boolean(e)).map(([e])=>e).filter(e=>Boolean(t?.[e]?.prio));return normalizeConfiguredDefenceList([...g,...n])},resolveConfiguredDefences=()=>{const e=extractLegacyRuntimeConfiguredDefences();return e.length>0?e:extractNexSysConfiguredDefences()},extractActiveDefencesFromGmcpNode=e=>Array.isArray(e)?normalizeConfiguredDefenceList(e.map(extractDefenceName).filter(Boolean)):isRecord(e)?Array.isArray(e.defences)?extractActiveDefencesFromGmcpNode(e.defences):normalizeConfiguredDefenceList(Object.entries(e).map(([e,t])=>extractDefenceName(t)??e)):[],extractGmcpActiveDefences=()=>normalizeConfiguredDefenceList([...extractActiveDefencesFromGmcpNode(globalThis.GMCP?.Defences),...extractActiveDefencesFromGmcpNode(globalThis.GMCP?.Char?.Defences)]),extractNexSysActiveDefences=(e=[])=>{const t=globalThis.nexSys?.api?.defs?.have;return"function"!=typeof t?[]:normalizeConfiguredDefenceList(e).filter(e=>{try{return Boolean(t(e))}catch{return!1}})},resolveActiveDefences=(e=[])=>normalizeConfiguredDefenceList([...extractGmcpActiveDefences(),...extractNexSysActiveDefences(e)]),createNexusAdapter=({playerRelationships:e}={})=>{const t=new Map;return assertAdapterContract({send:t=>(e?.trackRelationshipCommand?.(t),nexusclient.send_commands(t)),sendGmcp:(e,t)=>nexusclient.datahandler().send_GMCP(e,t),getVariable:e=>nexusclient.variables().vars?.[e],setVariable:(e,t)=>{const g=nexusclient.variables();g.vars??={},g.vars[e]=t},getTarget:()=>null,setTarget:e=>{nexusclient.setTarget(e)},notice:(e,t)=>{if("function"==typeof nexusclient.add_html_line)return void nexusclient.add_html_line(renderNoticeHtml(e,t));const g=t&&"object"==typeof t?t.style:t;"function"==typeof nexusclient.writeLine&&nexusclient.writeLine(e,g)},displayHtmlLine:e=>{"function"==typeof nexusclient.add_html_line&&nexusclient.add_html_line(String(e))},getHostSettings,setHostSetting:(e,t)=>{getHostSettings()[e]=t},getHostLayoutSnapshot:()=>getHostLayout()?.model?.()?.global??{},updateHostLayoutAttributes,focusInput:()=>{nexusclient.focusInput?.()},getConfiguredDefences:resolveConfiguredDefences,getActiveDefences:resolveActiveDefences,gagCurrentBlock:()=>nexusclient.current_block?.forEach(e=>e.gag=!0),on:(e,g,n)=>{t.has(e)||t.set(e,new Map);const o=t.get(e),a=null!=n?.id?n:{...n,id:createDefaultListenerId(e,o)},C=eventStream.registerEvent(e,g,a);return t.get(e).set(C,g),()=>{eventStream.removeListener(e,C),removeTrackedHandler(t,e,C)}},off:(e,g)=>{eventStream.removeListener(e,g),removeTrackedHandler(t,e,g)},destroy:()=>{for(const[e,g]of t.entries())for(const t of g.keys())eventStream.removeListener(e,t);t.clear()}})},ke=Object.freeze({"(hidden)":"orange","(none)":"orange",ashtan:"#990099",cyrene:"#009999",eleusis:"#00e600",hashan:"#999900",mhaldor:"#e60000",targossas:"#ffffff",garden:"yellow",underworld:"tomato"}),normalizePlayerCityKey=e=>{if(!isNonEmptyString(e))return"";const t=e.trim().toLowerCase();return"(hidden)"===t||"(none)"===t?t:t.replace(/\(.+?\)/g,"").replace(/,.*$/g,"").trim()},getPlayerCityColor=(e,t="orange")=>{const g=normalizePlayerCityKey(e);return g?ke[g]??t:t},resolveRoomPlayerName=(e,t)=>isNonEmptyString(e)?e.trim():isPlainObject$2(e)?isNonEmptyString(e.name)?e.name.trim():isNonEmptyString(e.fullname)?t?.resolvePlayerNameFromFullname?.(e.fullname)??"":"":"",buildFallbackPlayerProfile=(e,t)=>{if(!isPlainObject$2(e))return null;const g={loaded:!0,name:t};return isNonEmptyString(e.city)&&(g.city=normalizePlayerCityKey(e.city)),isNonEmptyString(e.class)&&(g.class=e.class.trim()),isNonEmptyString(e.fullname)&&(g.fullname=e.fullname.trim()),"number"==typeof e.level&&Number.isFinite(e.level)?g.level=e.level:isNonEmptyString(e.level)&&(g.level=e.level.trim()),Object.keys(g).length>2?g:null},mergePlayerPresentationProfile=(e,t)=>e?t?{...t,...e,loaded:!0===e.loaded||!0===t.loaded}:e:t,resolvePlayerPresentationColor=({name:e,profile:t,playerDirectory:g}={})=>!0===t?.loaded&&isNonEmptyString(t.city)?getPlayerCityColor(t.city):g?.getPlayerColor?.(ae(e))??"grey",Ee=Object.freeze(["ashtan","cyrene","eleusis","hashan","mhaldor","targossas","(none)","(hidden)","underworld","garden"]),Re='<span style="color:#888888">No players are visible to Quick Who.</span>',Te="#aaaaaa",Me="#00B1D2",Pe="#888888",Ne='<span style="color:#666666">, </span>',ze="padding:0 10px 0 0;vertical-align:top;white-space:nowrap;min-width:5ch",Oe="#ffffff",De="#ff0000",toProperCase=e=>String(e).replace(/\b[a-z]/g,e=>e.toUpperCase()),resolveQuickWhoCity=e=>{const t=normalizePlayerCityKey(e);return Ee.includes(t)?t:"(none)"},renderQuickWhoName=({name:e,color:t,ally:g,enemy:n,cityEnemy:o})=>{const a=`<span style="${o?`color:${t};font-style:italic`:`color:${t}`}">${escapeHtml(e)}</span>`;if(g||n){const e=`<span style="color:${g?Oe:De};font-weight:bold">`;return`${e}(</span>${a}${e})</span>`}return a},renderQuickWhoHtml=(e,{totalLine:t}={})=>{const g=new Map;let n=0;for(const C of Array.isArray(e)?e:[]){if(!isNonEmptyString(C?.name))continue;const e=resolveQuickWhoCity(C.city);g.has(e)||g.set(e,[]),g.get(e).push({name:C.name.trim(),color:getPlayerCityColor(e),ally:!0===C.ally,enemy:!0===C.enemy,cityEnemy:!0===C.cityEnemy}),n+=1}if(0===n)return Re;const o=Ee.filter(e=>g.has(e)).map(e=>{const t=g.get(e),n=t.map(renderQuickWhoName).join(Ne);return`<tr><td style="color:${getPlayerCityColor(e)};font-weight:bold;padding:0 10px 0 0;vertical-align:top;white-space:nowrap">${escapeHtml(toProperCase(e))}</td><td style="color:${Te};${ze}">(${t.length})</td><td style="vertical-align:top">${n}</td></tr>`}).join(""),a=`text-align:left;color:${Me};padding:0 10px 3px 0;white-space:nowrap`;return`<table style="border-collapse:collapse"><thead><tr><th style="${a}">City</th><th style="${a};min-width:5ch">Count</th><th style="text-align:left;color:${Me};padding:0 0 3px 0;white-space:nowrap">Players</th></tr></thead><tbody>${o}<tr><td colspan="3" style="color:${Pe};padding-top:3px">${escapeHtml(isNonEmptyString(t)?t:`Total: ${n} player${1===n?"":"s"}`)}</td></tr></tbody></table>`},cloneProfileValue=e=>Array.isArray(e)||isPlainObject$2(e)?structuredClone(e):e,sanitizeProfilePatch=(e={})=>{if(!isPlainObject$2(e))return{};const t={};for(const[g,n]of Object.entries(e))"name"!==g&&"regex"!==g&&"user"!==g&&("loaded"!==g?"city"!==g?"fullname"!==g?"source"!==g?"loadedAt"!==g&&"remoteSyncedAt"!==g?null!=n&&("string"!=typeof n?("number"==typeof n||"boolean"==typeof n||Array.isArray(n)||isPlainObject$2(n))&&(t[g]=cloneProfileValue(n)):n.trim().length>0&&(t[g]=n.trim())):"number"==typeof n&&Number.isFinite(n)?t[g]=n:null===n&&(t[g]=null):"local"!==n&&"public"!==n&&"remote"!==n||(t.source=n):isNonEmptyString(n)&&(t.fullname=n.trim()):isNonEmptyString(n)&&(t.city=normalizePlayerCityKey(n)):t.loaded=!0===n);return t},resolveFetch$1=e=>"function"==typeof e?e:null,createPlayerDirectoryModel=({fetchImpl:e,now:t=()=>0}={})=>{const g=new Map,n=new Map,o=new Map,a=new Map,C=new Set;let I=0;const notifyListeners=()=>{I+=1,C.forEach(e=>{try{e()}catch{}})},upsertProfile=(e,t={})=>{const a=ae(e);if(!a)return;const C={...g.get(a)??{name:a,city:"",fullname:"",loaded:!1,source:"local",loadedAt:null,remoteSyncedAt:null},...sanitizeProfilePatch(t),name:a};g.set(a,C),o.set(normalizeLookupKey(a),a),isNonEmptyString(C.fullname)&&n.set(C.fullname.trim(),a),notifyListeners()},resolveStoredName=e=>{const t=ae(e);return t?g.has(t)?t:o.get(normalizeLookupKey(t))??t:""},getStoredProfileByNormalizedName=e=>e&&g.has(e)?g.get(e)??null:null,getPlayerProfile=e=>{const t=getStoredProfileByNormalizedName(resolveStoredName(e));return t?{...t}:null},fetchCharacterProfile=async g=>{const n=ae(g),o=resolveStoredName(g),C=normalizeLookupKey(g);if(!n)return null;if(a.has(C))return a.get(C);const I=resolveFetch$1(e);if("function"!=typeof I)return o?getPlayerProfile(o):null;const i=(async()=>{try{const e=await I(`https://api.achaea.com/characters/${n.toLowerCase()}.json`,{cache:"no-store"});if(!e.ok)return o?getPlayerProfile(o):null;const g=await e.json(),a=resolveStoredName(g?.name??n);return upsertProfile(a,{...g,loaded:!0,source:"public",loadedAt:t()}),getPlayerProfile(a)}catch{return o?getPlayerProfile(o):null}finally{a.delete(C)}})();return a.set(C,i),i},refreshPlayerProfile=async e=>{const t=await fetchCharacterProfile(e);if(t)return t;const g=resolveStoredName(e);return g?getPlayerProfile(g):null},subscribePlayerDirectory=e=>(C.add(e),()=>{C.delete(e)}),rememberPlayerStatus=({name:e,city:t,fullname:g,...n}={})=>{const o=ae(e);o&&upsertProfile(o,{...n,name:o,city:t,fullname:g,loaded:!0})},rememberChannelPlayers=e=>{Array.isArray(e)&&e.forEach(e=>{const t=ae(e?.name);t&&(upsertProfile(t,{fullname:e?.fullname}),g.get(t)?.loaded||fetchCharacterProfile(t))})},rememberRoomPlayers=e=>{Array.isArray(e)&&e.forEach(e=>{const t=ae(e?.name??e);t&&(upsertProfile(t,{fullname:e?.fullname}),g.get(t)?.loaded||fetchCharacterProfile(t))})},resolvePlayerNameFromFullname=e=>{if(!isNonEmptyString(e))return"";const t=e.trim();return n.get(t)||ae(t.split(/\s+/).at(-1))},getPlayerColorByNormalizedName=e=>{const t=getStoredProfileByNormalizedName(e);return t?.loaded&&t.city?getPlayerCityColor(t.city):"grey"},getPlayerColor=e=>getPlayerColorByNormalizedName(resolveStoredName(e)),resetPlayerDirectory=()=>{g.clear(),n.clear(),o.clear(),a.clear(),notifyListeners()},hydrateFromCacheEntries=e=>{Array.isArray(e)&&e.forEach(e=>{const t=ae(e?.name);t&&upsertProfile(t,{...e,loaded:!0})})},hydrateFromRemoteEntries=e=>{if(!Array.isArray(e))return;const g=t();e.forEach(e=>{const t=ae(e?.name);t&&upsertProfile(t,{...e,loaded:!0,source:"remote",remoteSyncedAt:g})})},getAllPlayerProfiles=()=>Array.from(g.values()).map(e=>({...e})),getKnownPlayerNames=()=>Array.from(g.keys()),destroy=()=>{g.clear(),n.clear(),o.clear(),a.clear(),C.clear()};return Object.freeze({getAllPlayerProfiles,getKnownPlayerNames,getPlayerColor,getPlayerColorByNormalizedName,getPlayerProfile,getVersion:()=>I,hydrateFromCacheEntries,hydrateFromRemoteEntries,refreshPlayerProfile,rememberChannelPlayers,rememberPlayerStatus,rememberRoomPlayers,resetPlayerDirectory,resolvePlayerNameFromFullname,subscribePlayerDirectory,destroy})},je=createPlayerDirectoryModel(),getDefaultPlayerDirectoryModel=()=>je,getPlayerProfile=e=>je.getPlayerProfile(e),updateSetMembership=(e,t,g)=>{if(!t)return!1;const n=e.has(t);return g&&!n?(e.add(t),!0):!(g||!n||(e.delete(t),0))},normalizeNames=e=>Array.isArray(e)?new Set(e.map(e=>ae(e)).filter(Boolean)):new Set,replaceSetContents=(e,t)=>{const g=normalizeNames(t);let n=!1;return[...e].forEach(t=>{g.has(t)||(e.delete(t),n=!0)}),g.forEach(t=>{e.has(t)||(e.add(t),n=!0)}),n},createPlayerRelationshipsModel=()=>{const e=new Set,t=new Set,g=new Set,n=new Set;let o=0;const notifyListeners=()=>{o+=1,n.forEach(e=>{try{e()}catch{}})},subscribePlayerRelationships=e=>(n.add(e),()=>{n.delete(e)}),rememberEnemyPlayer=g=>{const n=ae(g),o=updateSetMembership(e,n,!0),a=updateSetMembership(t,n,!1);(o||a)&¬ifyListeners()},rememberAllyPlayer=g=>{const n=ae(g),o=updateSetMembership(t,n,!0),a=updateSetMembership(e,n,!1);(o||a)&¬ifyListeners()},forgetEnemyPlayer=t=>{updateSetMembership(e,ae(t),!1)&¬ifyListeners()},forgetAllyPlayer=e=>{updateSetMembership(t,ae(e),!1)&¬ifyListeners()},rememberCityEnemyPlayer=e=>{updateSetMembership(g,ae(e),!0)&¬ifyListeners()},isEnemyPlayerByNormalizedName=t=>e.has(t),isAllyPlayerByNormalizedName=e=>t.has(e),isCityEnemyPlayerByNormalizedName=e=>g.has(e),isEnemyPlayer=e=>isEnemyPlayerByNormalizedName(ae(e)),isAllyPlayer=e=>isAllyPlayerByNormalizedName(ae(e)),isCityEnemyPlayer=e=>isCityEnemyPlayerByNormalizedName(ae(e)),replaceEnemyPlayers=g=>{const n=normalizeNames(g);let o=replaceSetContents(e,[...n]);n.forEach(e=>{o=updateSetMembership(t,e,!1)||o}),o&¬ifyListeners()},replaceAllyPlayers=g=>{const n=normalizeNames(g);let o=replaceSetContents(t,[...n]);n.forEach(t=>{o=updateSetMembership(e,t,!1)||o}),o&¬ifyListeners()},replaceCityEnemyPlayers=e=>{replaceSetContents(g,e)&¬ifyListeners()},trackRelationshipCommand=e=>{if(!isNonEmptyString(e))return;const t=e.trim(),g=t.match(/^enemy\s+(.+)$/i);if(g)return void rememberEnemyPlayer(g[1]);const n=t.match(/^ally\s+(.+)$/i);if(n)return void rememberAllyPlayer(n[1]);const o=t.match(/^city enemy\s+(.+)$/i);o&&rememberCityEnemyPlayer(o[1])},resetPlayerRelationships=()=>{e.clear(),t.clear(),g.clear(),notifyListeners()},destroy=()=>{e.clear(),t.clear(),g.clear(),n.clear()};return Object.freeze({forgetAllyPlayer,forgetEnemyPlayer,getVersion:()=>o,isAllyPlayer,isAllyPlayerByNormalizedName,isCityEnemyPlayer,isCityEnemyPlayerByNormalizedName,isEnemyPlayer,isEnemyPlayerByNormalizedName,rememberAllyPlayer,rememberCityEnemyPlayer,rememberEnemyPlayer,replaceAllyPlayers,replaceCityEnemyPlayers,replaceEnemyPlayers,resetPlayerRelationships,subscribePlayerRelationships,trackRelationshipCommand,destroy})},Le=createPlayerRelationshipsModel(),getDefaultPlayerRelationshipsModel=()=>Le,Ge=25,cloneDiagnosticValue=e=>Array.isArray(e)?e.map(e=>cloneDiagnosticValue(e)):isPlainObject$2(e)?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,cloneDiagnosticValue(t)])):e,toPublicEntry=({_signature:e,...t})=>cloneDiagnosticValue(t),buildSignature=({channel:e,action:t,status:g,name:n=null,detail:o=null})=>JSON.stringify([e,t,g,n,o]),createPlayerDirectoryDiagnosticsModel=({historyLimit:e=Ge,now:t=()=>0}={})=>{let g=[],n={};const recordPlayerDirectoryDiagnostic=({channel:o,action:a,status:C,name:I=null,detail:i=null})=>{const s=buildSignature({channel:o,action:a,status:C,name:I,detail:i}),l=t(),c=g.at(-1);if(c?._signature===s)return c.at=l,c.count+=1,void(n[o]=toPublicEntry(c));g.push({at:l,channel:o,action:a,status:C,...I?{name:I}:{},...null==i?{}:{detail:cloneDiagnosticValue(i)},count:1,_signature:s}),g.length>e&&g.splice(0,g.length-e),n[o]=toPublicEntry(g.at(-1))},getPlayerDirectoryDiagnosticsSnapshot=()=>({latest:cloneDiagnosticValue(n),history:g.map(e=>toPublicEntry(e))}),resetPlayerDirectoryDiagnostics=()=>{g=[],n={}};return Object.freeze({getPlayerDirectoryDiagnosticsSnapshot,recordPlayerDirectoryDiagnostic,resetPlayerDirectoryDiagnostics,destroy:resetPlayerDirectoryDiagnostics})},Be=createPlayerDirectoryDiagnosticsModel(),getDefaultPlayerDirectoryDiagnosticsModel=()=>Be,recordPlayerDirectoryDiagnostic=e=>Be.recordPlayerDirectoryDiagnostic(e);function $constructor(e,t,g){function init(g,n){if(g._zod||Object.defineProperty(g,"_zod",{value:{def:n,constr:_,traits:new Set},enumerable:!1}),g._zod.traits.has(e))return;g._zod.traits.add(e),t(g,n);const o=_.prototype,a=Object.keys(o);for(let e=0;e<a.length;e++){const t=a[e];t in g||(g[t]=o[t].bind(g))}}const n=g?.Parent??Object;class o extends n{}function _(e){var t;const n=g?.Parent?new o:this;init(n,e),(t=n._zod).deferred??(t.deferred=[]);for(const g of n._zod.deferred)g();return n}return Object.defineProperty(o,"name",{value:e}),Object.defineProperty(_,"init",{value:init}),Object.defineProperty(_,Symbol.hasInstance,{value:t=>!!(g?.Parent&&t instanceof g.Parent)||t?._zod?.traits?.has(e)}),Object.defineProperty(_,"name",{value:e}),_}var Fe=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},We=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name="ZodEncodeError"}};(xe=globalThis).__zod_globalConfig??(xe.__zod_globalConfig={});var Ve=globalThis.__zod_globalConfig;function config(e){return e&&Object.assign(Ve,e),Ve}function getEnumValues(e){const t=Object.values(e).filter(e=>"number"==typeof e);return Object.entries(e).filter(([e,g])=>-1===t.indexOf(+e)).map(([e,t])=>t)}function jsonStringifyReplacer(e,t){return"bigint"==typeof t?t.toString():t}function cached(e){return{get value(){{const t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function nullish(e){return null==e}function cleanRegex(e){const t=e.startsWith("^")?1:0,g=e.endsWith("$")?e.length-1:e.length;return e.slice(t,g)}function floatSafeRemainder(e,t){const g=e/t,n=Math.round(g),o=Number.EPSILON*Math.max(Math.abs(g),1);return Math.abs(g-n)<o?0:g-n}var _e=Symbol("evaluating");function defineLazy(e,t,g){let n;Object.defineProperty(e,t,{get(){if(n!==_e)return void 0===n&&(n=_e,n=g()),n},set(g){Object.defineProperty(e,t,{value:g})},configurable:!0})}function assignProp(e,t,g){Object.defineProperty(e,t,{value:g,writable:!0,enumerable:!0,configurable:!0})}function mergeDefs(...e){const t={};for(const g of e)Object.assign(t,Object.getOwnPropertyDescriptors(g));return Object.defineProperties({},t)}function esc(e){return JSON.stringify(e)}function slugify(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var Ue="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function isObject(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}var Ze=cached(()=>{if(Ve.jitless)return!1;if("undefined"!=typeof navigator&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(e){return!1}});function isPlainObject$1(e){if(!1===isObject(e))return!1;const t=e.constructor;if(void 0===t)return!0;if("function"!=typeof t)return!0;const g=t.prototype;return!1!==isObject(g)&&!1!==Object.prototype.hasOwnProperty.call(g,"isPrototypeOf")}function shallowClone(e){return isPlainObject$1(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var Ke=new Set(["string","number","symbol"]);function escapeRegex(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function clone$1(e,t,g){const n=new e._zod.constr(t??e._zod.def);return t&&!g?.parent||(n._zod.parent=e),n}function normalizeParams(e){const t=e;if(!t)return{};if("string"==typeof t)return{error:()=>t};if(void 0!==t?.message){if(void 0!==t?.error)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,"string"==typeof t.error?{...t,error:()=>t.error}:t}function optionalKeys(e){return Object.keys(e).filter(t=>"optional"===e[t]._zod.optin&&"optional"===e[t]._zod.optout)}var He={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function pick(e,t){const g=e._zod.def,n=g.checks;if(n&&n.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");return clone$1(e,mergeDefs(e._zod.def,{get shape(){const e={};for(const n in t){if(!(n in g.shape))throw new Error(`Unrecognized key: "${n}"`);t[n]&&(e[n]=g.shape[n])}return assignProp(this,"shape",e),e},checks:[]}))}function omit(e,t){const g=e._zod.def,n=g.checks;if(n&&n.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");return clone$1(e,mergeDefs(e._zod.def,{get shape(){const n={...e._zod.def.shape};for(const e in t){if(!(e in g.shape))throw new Error(`Unrecognized key: "${e}"`);t[e]&&delete n[e]}return assignProp(this,"shape",n),n},checks:[]}))}function extend(e,t){if(!isPlainObject$1(t))throw new Error("Invalid input to extend: expected a plain object");const g=e._zod.def.checks;if(g&&g.length>0){const g=e._zod.def.shape;for(const e in t)if(void 0!==Object.getOwnPropertyDescriptor(g,e))throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return clone$1(e,mergeDefs(e._zod.def,{get shape(){const g={...e._zod.def.shape,...t};return assignProp(this,"shape",g),g}}))}function safeExtend(e,t){if(!isPlainObject$1(t))throw new Error("Invalid input to safeExtend: expected a plain object");return clone$1(e,mergeDefs(e._zod.def,{get shape(){const g={...e._zod.def.shape,...t};return assignProp(this,"shape",g),g}}))}function merge(e,t){if(e._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");return clone$1(e,mergeDefs(e._zod.def,{get shape(){const g={...e._zod.def.shape,...t._zod.def.shape};return assignProp(this,"shape",g),g},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function partial(e,t,g){const n=t._zod.def.checks;if(n&&n.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");return clone$1(t,mergeDefs(t._zod.def,{get shape(){const n=t._zod.def.shape,o={...n};if(g)for(const t in g){if(!(t in n))throw new Error(`Unrecognized key: "${t}"`);g[t]&&(o[t]=e?new e({type:"optional",innerType:n[t]}):n[t])}else for(const t in n)o[t]=e?new e({type:"optional",innerType:n[t]}):n[t];return assignProp(this,"shape",o),o},checks:[]}))}function required(e,t,g){return clone$1(t,mergeDefs(t._zod.def,{get shape(){const n=t._zod.def.shape,o={...n};if(g)for(const t in g){if(!(t in o))throw new Error(`Unrecognized key: "${t}"`);g[t]&&(o[t]=new e({type:"nonoptional",innerType:n[t]}))}else for(const t in n)o[t]=new e({type:"nonoptional",innerType:n[t]});return assignProp(this,"shape",o),o}}))}function aborted(e,t=0){if(!0===e.aborted)return!0;for(let g=t;g<e.issues.length;g++)if(!0!==e.issues[g]?.continue)return!0;return!1}function explicitlyAborted(e,t=0){if(!0===e.aborted)return!0;for(let g=t;g<e.issues.length;g++)if(!1===e.issues[g]?.continue)return!0;return!1}function prefixIssues(e,t){return t.map(t=>{var g;return(g=t).path??(g.path=[]),t.path.unshift(e),t})}function unwrapMessage(e){return"string"==typeof e?e:e?.message}function finalizeIssue(e,t,g){const n=e.message?e.message:unwrapMessage(e.inst?._zod.def?.error?.(e))??unwrapMessage(t?.error?.(e))??unwrapMessage(g.customError?.(e))??unwrapMessage(g.localeError?.(e))??"Invalid input",{inst:o,continue:a,input:C,...I}=e;return I.path??(I.path=[]),I.message=n,t?.reportInput&&(I.input=C),I}function getLengthableOrigin(e){return Array.isArray(e)?"array":"string"==typeof e?"string":"unknown"}function issue(...e){const[t,g,n]=e;return"string"==typeof t?{message:t,code:"custom",input:g,inst:n}:{...t}}var initializer$1=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,jsonStringifyReplacer,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},Ye=$constructor("$ZodError",initializer$1),$e=$constructor("$ZodError",initializer$1,{Parent:Error});function flattenError(e,t=e=>e.message){const g={},n=[];for(const o of e.issues)o.path.length>0?(g[o.path[0]]=g[o.path[0]]||[],g[o.path[0]].push(t(o))):n.push(t(o));return{formErrors:n,fieldErrors:g}}function formatError(e,t=e=>e.message){const g={_errors:[]},processError=(e,n=[])=>{for(const o of e.issues)if("invalid_union"===o.code&&o.errors.length)o.errors.map(e=>processError({issues:e},[...n,...o.path]));else if("invalid_key"===o.code)processError({issues:o.issues},[...n,...o.path]);else if("invalid_element"===o.code)processError({issues:o.issues},[...n,...o.path]);else{const e=[...n,...o.path];if(0===e.length)g._errors.push(t(o));else{let n=g,a=0;for(;a<e.length;){const g=e[a];a!==e.length-1?n[g]=n[g]||{_errors:[]}:(n[g]=n[g]||{_errors:[]},n[g]._errors.push(t(o))),n=n[g],a++}}}};return processError(e),g}var _parse=e=>(t,g,n,o)=>{const a=n?{...n,async:!1}:{async:!1},C=t._zod.run({value:g,issues:[]},a);if(C instanceof Promise)throw new Fe;if(C.issues.length){const t=new(o?.Err??e)(C.issues.map(e=>finalizeIssue(e,a,config())));throw Ue(t,o?.callee),t}return C.value},_parseAsync=e=>async(t,g,n,o)=>{const a=n?{...n,async:!0}:{async:!0};let C=t._zod.run({value:g,issues:[]},a);if(C instanceof Promise&&(C=await C),C.issues.length){const t=new(o?.Err??e)(C.issues.map(e=>finalizeIssue(e,a,config())));throw Ue(t,o?.callee),t}return C.value},_safeParse=e=>(t,g,n)=>{const o=n?{...n,async:!1}:{async:!1},a=t._zod.run({value:g,issues:[]},o);if(a instanceof Promise)throw new Fe;return a.issues.length?{success:!1,error:new(e??Ye)(a.issues.map(e=>finalizeIssue(e,o,config())))}:{success:!0,data:a.value}},Qe=_safeParse($e),_safeParseAsync=e=>async(t,g,n)=>{const o=n?{...n,async:!0}:{async:!0};let a=t._zod.run({value:g,issues:[]},o);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>finalizeIssue(e,o,config())))}:{success:!0,data:a.value}},Xe=_safeParseAsync($e),_encode=e=>(t,g,n)=>{const o=n?{...n,direction:"backward"}:{direction:"backward"};return _parse(e)(t,g,o)},_decode=e=>(t,g,n)=>_parse(e)(t,g,n),_encodeAsync=e=>async(t,g,n)=>{const o=n?{...n,direction:"backward"}:{direction:"backward"};return _parseAsync(e)(t,g,o)},_decodeAsync=e=>async(t,g,n)=>_parseAsync(e)(t,g,n),_safeEncode=e=>(t,g,n)=>{const o=n?{...n,direction:"backward"}:{direction:"backward"};return _safeParse(e)(t,g,o)},_safeDecode=e=>(t,g,n)=>_safeParse(e)(t,g,n),_safeEncodeAsync=e=>async(t,g,n)=>{const o=n?{...n,direction:"backward"}:{direction:"backward"};return _safeParseAsync(e)(t,g,o)},_safeDecodeAsync=e=>async(t,g,n)=>_safeParseAsync(e)(t,g,n),Je=/^[cC][0-9a-z]{6,}$/,qe=/^[0-9a-z]+$/,et=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,tt=/^[0-9a-vA-V]{20}$/,gt=/^[A-Za-z0-9]{27}$/,nt=/^[a-zA-Z0-9_-]{21}$/,rt=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,ot=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,uuid=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,at=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,At="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function emoji(){return new RegExp(At,"u")}var Ct=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,It=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,it=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,st=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,lt=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,ct=/^[A-Za-z0-9_-]*$/,ut=/^https?$/,dt=/^\+[1-9]\d{6,14}$/,pt="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",mt=new RegExp(`^${pt}$`);function timeSource(e){const t="(?:[01]\\d|2[0-3]):[0-5]\\d";return"number"==typeof e.precision?-1===e.precision?`${t}`:0===e.precision?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function time$1(e){return new RegExp(`^${timeSource(e)}$`)}function datetime$1(e){const t=timeSource({precision:e.precision}),g=["Z"];e.local&&g.push(""),e.offset&&g.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const n=`${t}(?:${g.join("|")})`;return new RegExp(`^${pt}T(?:${n})$`)}var string$1=e=>new RegExp(`^${e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*"}$`),ft=/^-?\d+$/,ht=/^-?\d+(?:\.\d+)?$/,yt=/^[^A-Z]*$/,bt=/^[^a-z]*$/,vt=$constructor("$ZodCheck",(e,t)=>{var g;e._zod??(e._zod={}),e._zod.def=t,(g=e._zod).onattach??(g.onattach=[])}),xt={number:"number",bigint:"bigint",object:"date"},St=$constructor("$ZodCheckLessThan",(e,t)=>{vt.init(e,t);const g=xt[typeof t.value];e._zod.onattach.push(e=>{const g=e._zod.bag,n=(t.inclusive?g.maximum:g.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value<n&&(t.inclusive?g.maximum=t.value:g.exclusiveMaximum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value<=t.value:n.value<t.value)||n.issues.push({origin:g,code:"too_big",maximum:"object"==typeof t.value?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),wt=$constructor("$ZodCheckGreaterThan",(e,t)=>{vt.init(e,t);const g=xt[typeof t.value];e._zod.onattach.push(e=>{const g=e._zod.bag,n=(t.inclusive?g.minimum:g.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>n&&(t.inclusive?g.minimum=t.value:g.exclusiveMinimum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value>=t.value:n.value>t.value)||n.issues.push({origin:g,code:"too_small",minimum:"object"==typeof t.value?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),kt=$constructor("$ZodCheckMultipleOf",(e,t)=>{vt.init(e,t),e._zod.onattach.push(e=>{var g;(g=e._zod.bag).multipleOf??(g.multipleOf=t.value)}),e._zod.check=g=>{if(typeof g.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");("bigint"==typeof g.value?g.value%t.value!==BigInt(0):0!==floatSafeRemainder(g.value,t.value))&&g.issues.push({origin:typeof g.value,code:"not_multiple_of",divisor:t.value,input:g.value,inst:e,continue:!t.abort})}}),Et=$constructor("$ZodCheckNumberFormat",(e,t)=>{vt.init(e,t),t.format=t.format||"float64";const g=t.format?.includes("int"),n=g?"int":"number",[o,a]=He[t.format];e._zod.onattach.push(e=>{const n=e._zod.bag;n.format=t.format,n.minimum=o,n.maximum=a,g&&(n.pattern=ft)}),e._zod.check=C=>{const I=C.value;if(g){if(!Number.isInteger(I))return void C.issues.push({expected:n,format:t.format,code:"invalid_type",continue:!1,input:I,inst:e});if(!Number.isSafeInteger(I))return void(I>0?C.issues.push({input:I,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort}):C.issues.push({input:I,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort}))}I<o&&C.issues.push({origin:"number",input:I,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort}),I>a&&C.issues.push({origin:"number",input:I,code:"too_big",maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),Rt=$constructor("$ZodCheckMaxLength",(e,t)=>{var g;vt.init(e,t),(g=e._zod.def).when??(g.when=e=>{const t=e.value;return!nullish(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{const g=e._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<g&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=g=>{const n=g.value;if(n.length<=t.maximum)return;const o=getLengthableOrigin(n);g.issues.push({origin:o,code:"too_big",maximum:t.maximum,inclusive:!0,input:n,inst:e,continue:!t.abort})}}),Tt=$constructor("$ZodCheckMinLength",(e,t)=>{var g;vt.init(e,t),(g=e._zod.def).when??(g.when=e=>{const t=e.value;return!nullish(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{const g=e._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>g&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=g=>{const n=g.value;if(n.length>=t.minimum)return;const o=getLengthableOrigin(n);g.issues.push({origin:o,code:"too_small",minimum:t.minimum,inclusive:!0,input:n,inst:e,continue:!t.abort})}}),Mt=$constructor("$ZodCheckLengthEquals",(e,t)=>{var g;vt.init(e,t),(g=e._zod.def).when??(g.when=e=>{const t=e.value;return!nullish(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{const g=e._zod.bag;g.minimum=t.length,g.maximum=t.length,g.length=t.length}),e._zod.check=g=>{const n=g.value,o=n.length;if(o===t.length)return;const a=getLengthableOrigin(n),C=o>t.length;g.issues.push({origin:a,...C?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:g.value,inst:e,continue:!t.abort})}}),Pt=$constructor("$ZodCheckStringFormat",(e,t)=>{var g,n;vt.init(e,t),e._zod.onattach.push(e=>{const g=e._zod.bag;g.format=t.format,t.pattern&&(g.patterns??(g.patterns=new Set),g.patterns.add(t.pattern))}),t.pattern?(g=e._zod).check??(g.check=g=>{t.pattern.lastIndex=0,t.pattern.test(g.value)||g.issues.push({origin:"string",code:"invalid_format",format:t.format,input:g.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(n=e._zod).check??(n.check=()=>{})}),Nt=$constructor("$ZodCheckRegex",(e,t)=>{Pt.init(e,t),e._zod.check=g=>{t.pattern.lastIndex=0,t.pattern.test(g.value)||g.issues.push({origin:"string",code:"invalid_format",format:"regex",input:g.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),zt=$constructor("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=yt),Pt.init(e,t)}),Ot=$constructor("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=bt),Pt.init(e,t)}),Dt=$constructor("$ZodCheckIncludes",(e,t)=>{vt.init(e,t);const g=escapeRegex(t.includes),n=new RegExp("number"==typeof t.position?`^.{${t.position}}${g}`:g);t.pattern=n,e._zod.onattach.push(e=>{const t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(n)}),e._zod.check=g=>{g.value.includes(t.includes,t.position)||g.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:g.value,inst:e,continue:!t.abort})}}),jt=$constructor("$ZodCheckStartsWith",(e,t)=>{vt.init(e,t);const g=new RegExp(`^${escapeRegex(t.prefix)}.*`);t.pattern??(t.pattern=g),e._zod.onattach.push(e=>{const t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(g)}),e._zod.check=g=>{g.value.startsWith(t.prefix)||g.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:g.value,inst:e,continue:!t.abort})}}),Lt=$constructor("$ZodCheckEndsWith",(e,t)=>{vt.init(e,t);const g=new RegExp(`.*${escapeRegex(t.suffix)}$`);t.pattern??(t.pattern=g),e._zod.onattach.push(e=>{const t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(g)}),e._zod.check=g=>{g.value.endsWith(t.suffix)||g.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:g.value,inst:e,continue:!t.abort})}}),Gt=$constructor("$ZodCheckOverwrite",(e,t)=>{vt.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),Bt=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if("function"==typeof e)return e(this,{execution:"sync"}),void e(this,{execution:"async"});const t=e.split("\n").filter(e=>e),g=Math.min(...t.map(e=>e.length-e.trimStart().length)),n=t.map(e=>e.slice(g)).map(e=>" ".repeat(2*this.indent)+e);for(const o of n)this.content.push(o)}compile(){const e=Function,t=this?.args;return new e(...t,[...(this?.content??[""]).map(e=>` ${e}`)].join("\n"))}},Ft={major:4,minor:4,patch:3},Wt=$constructor("$ZodType",(e,t)=>{var g;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Ft;const n=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&n.unshift(e);for(const o of n)for(const t of o._zod.onattach)t(e);if(0===n.length)(g=e._zod).deferred??(g.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{const runChecks=(e,t,g)=>{let n,o=aborted(e);for(const a of t){if(a._zod.def.when){if(explicitlyAborted(e))continue;if(!a._zod.def.when(e))continue}else if(o)continue;const t=e.issues.length,C=a._zod.check(e);if(C instanceof Promise&&!1===g?.async)throw new Fe;if(n||C instanceof Promise)n=(n??Promise.resolve()).then(async()=>{await C,e.issues.length!==t&&(o||(o=aborted(e,t)))});else{if(e.issues.length===t)continue;o||(o=aborted(e,t))}}return n?n.then(()=>e):e},handleCanaryResult=(t,g,o)=>{if(aborted(t))return t.aborted=!0,t;const a=runChecks(g,n,o);if(a instanceof Promise){if(!1===o.async)throw new Fe;return a.then(t=>e._zod.parse(t,o))}return e._zod.parse(a,o)};e._zod.run=(t,g)=>{if(g.skipChecks)return e._zod.parse(t,g);if("backward"===g.direction){const n=e._zod.parse({value:t.value,issues:[]},{...g,skipChecks:!0});return n instanceof Promise?n.then(e=>handleCanaryResult(e,t,g)):handleCanaryResult(n,t,g)}const o=e._zod.parse(t,g);if(o instanceof Promise){if(!1===g.async)throw new Fe;return o.then(e=>runChecks(e,n,g))}return runChecks(o,n,g)}}defineLazy(e,"~standard",()=>({validate:t=>{try{const g=Qe(e,t);return g.success?{value:g.data}:{issues:g.error?.issues}}catch(g){return Xe(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:"zod",version:1}))}),Vt=$constructor("$ZodString",(e,t)=>{Wt.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??string$1(e._zod.bag),e._zod.parse=(g,n)=>{if(t.coerce)try{g.value=String(g.value)}catch(n){}return"string"==typeof g.value||g.issues.push({expected:"string",code:"invalid_type",input:g.value,inst:e}),g}}),_t=$constructor("$ZodStringFormat",(e,t)=>{Pt.init(e,t),Vt.init(e,t)}),Ut=$constructor("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=ot),_t.init(e,t)}),Zt=$constructor("$ZodUUID",(e,t)=>{if(t.version){const e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(void 0===e)throw new Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=uuid(e))}else t.pattern??(t.pattern=uuid());_t.init(e,t)}),Kt=$constructor("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=at),_t.init(e,t)}),Ht=$constructor("$ZodURL",(e,t)=>{_t.init(e,t),e._zod.check=g=>{try{const n=g.value.trim();if(!t.normalize&&t.protocol?.source===ut.source&&!/^https?:\/\//i.test(n))return void g.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:g.value,inst:e,continue:!t.abort});const o=new URL(n);return t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(o.hostname)||g.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:g.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(o.protocol.endsWith(":")?o.protocol.slice(0,-1):o.protocol)||g.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:g.value,inst:e,continue:!t.abort})),void(t.normalize?g.value=o.href:g.value=n)}catch(n){g.issues.push({code:"invalid_format",format:"url",input:g.value,inst:e,continue:!t.abort})}}}),Yt=$constructor("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=emoji()),_t.init(e,t)}),$t=$constructor("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=nt),_t.init(e,t)}),Qt=$constructor("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=Je),_t.init(e,t)}),Xt=$constructor("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=qe),_t.init(e,t)}),Jt=$constructor("$ZodULID",(e,t)=>{t.pattern??(t.pattern=et),_t.init(e,t)}),qt=$constructor("$ZodXID",(e,t)=>{t.pattern??(t.pattern=tt),_t.init(e,t)}),eg=$constructor("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=gt),_t.init(e,t)}),tg=$constructor("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=datetime$1(t)),_t.init(e,t)}),gg=$constructor("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=mt),_t.init(e,t)}),ng=$constructor("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=time$1(t)),_t.init(e,t)}),rg=$constructor("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=rt),_t.init(e,t)}),og=$constructor("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=Ct),_t.init(e,t),e._zod.bag.format="ipv4"}),ag=$constructor("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=It),_t.init(e,t),e._zod.bag.format="ipv6",e._zod.check=g=>{try{new URL(`http://[${g.value}]`)}catch{g.issues.push({code:"invalid_format",format:"ipv6",input:g.value,inst:e,continue:!t.abort})}}}),Ag=$constructor("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=it),_t.init(e,t)}),Cg=$constructor("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=st),_t.init(e,t),e._zod.check=g=>{const n=g.value.split("/");try{if(2!==n.length)throw new Error;const[e,t]=n;if(!t)throw new Error;const g=Number(t);if(`${g}`!==t)throw new Error;if(g<0||g>128)throw new Error;new URL(`http://[${e}]`)}catch{g.issues.push({code:"invalid_format",format:"cidrv6",input:g.value,inst:e,continue:!t.abort})}}});function isValidBase64(e){if(""===e)return!0;if(/\s/.test(e))return!1;if(e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var Ig=$constructor("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=lt),_t.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=g=>{isValidBase64(g.value)||g.issues.push({code:"invalid_format",format:"base64",input:g.value,inst:e,continue:!t.abort})}});function isValidBase64URL(e){if(!ct.test(e))return!1;const t=e.replace(/[-_]/g,e=>"-"===e?"+":"/");return isValidBase64(t.padEnd(4*Math.ceil(t.length/4),"="))}var ig=$constructor("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=ct),_t.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=g=>{isValidBase64URL(g.value)||g.issues.push({code:"invalid_format",format:"base64url",input:g.value,inst:e,continue:!t.abort})}}),sg=$constructor("$ZodE164",(e,t)=>{t.pattern??(t.pattern=dt),_t.init(e,t)});function isValidJWT(e,t=null){try{const g=e.split(".");if(3!==g.length)return!1;const[n]=g;if(!n)return!1;const o=JSON.parse(atob(n));return!("typ"in o&&"JWT"!==o?.typ||!o.alg||t&&(!("alg"in o)||o.alg!==t))}catch{return!1}}var lg=$constructor("$ZodJWT",(e,t)=>{_t.init(e,t),e._zod.check=g=>{isValidJWT(g.value,t.alg)||g.issues.push({code:"invalid_format",format:"jwt",input:g.value,inst:e,continue:!t.abort})}}),cg=$constructor("$ZodNumber",(e,t)=>{Wt.init(e,t),e._zod.pattern=e._zod.bag.pattern??ht,e._zod.parse=(g,n)=>{if(t.coerce)try{g.value=Number(g.value)}catch(C){}const o=g.value;if("number"==typeof o&&!Number.isNaN(o)&&Number.isFinite(o))return g;const a="number"==typeof o?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:"Infinity":void 0;return g.issues.push({expected:"number",code:"invalid_type",input:o,inst:e,...a?{received:a}:{}}),g}}),ug=$constructor("$ZodNumberFormat",(e,t)=>{Et.init(e,t),cg.init(e,t)}),dg=$constructor("$ZodUnknown",(e,t)=>{Wt.init(e,t),e._zod.parse=e=>e}),pg=$constructor("$ZodNever",(e,t)=>{Wt.init(e,t),e._zod.parse=(t,g)=>(t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:e}),t)});function handleArrayResult(e,t,g){e.issues.length&&t.issues.push(...prefixIssues(g,e.issues)),t.value[g]=e.value}var mg=$constructor("$ZodArray",(e,t)=>{Wt.init(e,t),e._zod.parse=(g,n)=>{const o=g.value;if(!Array.isArray(o))return g.issues.push({expected:"array",code:"invalid_type",input:o,inst:e}),g;g.value=Array(o.length);const a=[];for(let e=0;e<o.length;e++){const C=o[e],I=t.element._zod.run({value:C,issues:[]},n);I instanceof Promise?a.push(I.then(t=>handleArrayResult(t,g,e))):handleArrayResult(I,g,e)}return a.length?Promise.all(a).then(()=>g):g}});function handlePropertyResult(e,t,g,n,o,a){const C=g in n;if(e.issues.length){if(o&&a&&!C)return;t.issues.push(...prefixIssues(g,e.issues))}C||o?void 0===e.value?C&&(t.value[g]=void 0):t.value[g]=e.value:e.issues.length||t.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[g]})}function normalizeDef(e){const t=Object.keys(e.shape);for(const n of t)if(!e.shape?.[n]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${n}": expected a Zod schema`);const g=optionalKeys(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(g)}}function handleCatchall(e,t,g,n,o,a){const C=[],I=o.keySet,i=o.catchall._zod,s=i.def.type,l="optional"===i.optin,c="optional"===i.optout;for(const u in t){if("__proto__"===u)continue;if(I.has(u))continue;if("never"===s){C.push(u);continue}const o=i.run({value:t[u],issues:[]},n);o instanceof Promise?e.push(o.then(e=>handlePropertyResult(e,g,u,t,l,c))):handlePropertyResult(o,g,u,t,l,c)}return C.length&&g.issues.push({code:"unrecognized_keys",keys:C,input:t,inst:a}),e.length?Promise.all(e).then(()=>g):g}var fg=$constructor("$ZodObject",(e,t)=>{if(Wt.init(e,t),!Object.getOwnPropertyDescriptor(t,"shape")?.get){const e=t.shape;Object.defineProperty(t,"shape",{get:()=>{const g={...e};return Object.defineProperty(t,"shape",{value:g}),g}})}const g=cached(()=>normalizeDef(t));defineLazy(e._zod,"propValues",()=>{const e=t.shape,g={};for(const t in e){const n=e[t]._zod;if(n.values){g[t]??(g[t]=new Set);for(const e of n.values)g[t].add(e)}}return g});const n=isObject,o=t.catchall;let a;e._zod.parse=(t,C)=>{a??(a=g.value);const I=t.value;if(!n(I))return t.issues.push({expected:"object",code:"invalid_type",input:I,inst:e}),t;t.value={};const i=[],s=a.shape;for(const e of a.keys){const g=s[e],n="optional"===g._zod.optin,o="optional"===g._zod.optout,a=g._zod.run({value:I[e],issues:[]},C);a instanceof Promise?i.push(a.then(g=>handlePropertyResult(g,t,e,I,n,o))):handlePropertyResult(a,t,e,I,n,o)}return o?handleCatchall(i,I,t,C,g.value,e):i.length?Promise.all(i).then(()=>t):t}}),hg=$constructor("$ZodObjectJIT",(e,t)=>{fg.init(e,t);const g=e._zod.parse,n=cached(()=>normalizeDef(t)),generateFastpass=e=>{const t=new Bt(["shape","payload","ctx"]),g=n.value,parseStr=e=>{const t=esc(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write("const input = payload.value;");const o=Object.create(null);let a=0;for(const n of g.keys)o[n]="key_"+a++;t.write("const newResult = {};");for(const n of g.keys){const g=o[n],a=esc(n),C=e[n],I="optional"===C?._zod?.optin,i="optional"===C?._zod?.optout;t.write(`const ${g} = ${parseStr(n)};`),I&&i?t.write(`\n if (${g}.issues.length) {\n if (${a} in input) {\n payload.issues = payload.issues.concat(${g}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${a}, ...iss.path] : [${a}]\n })));\n }\n }\n \n if (${g}.value === undefined) {\n if (${a} in input) {\n newResult[${a}] = undefined;\n }\n } else {\n newResult[${a}] = ${g}.value;\n }\n \n `):I?t.write(`\n if (${g}.issues.length) {\n payload.issues = payload.issues.concat(${g}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${a}, ...iss.path] : [${a}]\n })));\n }\n \n if (${g}.value === undefined) {\n if (${a} in input) {\n newResult[${a}] = undefined;\n }\n } else {\n newResult[${a}] = ${g}.value;\n }\n \n `):t.write(`\n const ${g}_present = ${a} in input;\n if (${g}.issues.length) {\n payload.issues = payload.issues.concat(${g}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${a}, ...iss.path] : [${a}]\n })));\n }\n if (!${g}_present && !${g}.issues.length) {\n payload.issues.push({\n code: "invalid_type",\n expected: "nonoptional",\n input: undefined,\n path: [${a}]\n });\n }\n\n if (${g}_present) {\n if (${g}.value === undefined) {\n newResult[${a}] = undefined;\n } else {\n newResult[${a}] = ${g}.value;\n }\n }\n\n `)}t.write("payload.value = newResult;"),t.write("return payload;");const C=t.compile();return(t,g)=>C(e,t,g)};let o;const a=isObject,C=!Ve.jitless,I=C&&Ze.value,i=t.catchall;let s;e._zod.parse=(l,c)=>{s??(s=n.value);const u=l.value;return a(u)?C&&I&&!1===c?.async&&!0!==c.jitless?(o||(o=generateFastpass(t.shape)),l=o(l,c),i?handleCatchall([],u,l,c,s,e):l):g(l,c):(l.issues.push({expected:"object",code:"invalid_type",input:u,inst:e}),l)}});function handleUnionResults(e,t,g,n){for(const a of e)if(0===a.issues.length)return t.value=a.value,t;const o=e.filter(e=>!aborted(e));return 1===o.length?(t.value=o[0].value,o[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:g,errors:e.map(e=>e.issues.map(e=>finalizeIssue(e,n,config())))}),t)}var yg=$constructor("$ZodUnion",(e,t)=>{Wt.init(e,t),defineLazy(e._zod,"optin",()=>t.options.some(e=>"optional"===e._zod.optin)?"optional":void 0),defineLazy(e._zod,"optout",()=>t.options.some(e=>"optional"===e._zod.optout)?"optional":void 0),defineLazy(e._zod,"values",()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),defineLazy(e._zod,"pattern",()=>{if(t.options.every(e=>e._zod.pattern)){const e=t.options.map(e=>e._zod.pattern);return new RegExp(`^(${e.map(e=>cleanRegex(e.source)).join("|")})$`)}});const g=1===t.options.length?t.options[0]._zod.run:null;e._zod.parse=(n,o)=>{if(g)return g(n,o);let a=!1;const C=[];for(const e of t.options){const t=e._zod.run({value:n.value,issues:[]},o);if(t instanceof Promise)C.push(t),a=!0;else{if(0===t.issues.length)return t;C.push(t)}}return a?Promise.all(C).then(t=>handleUnionResults(t,n,e,o)):handleUnionResults(C,n,e,o)}}),bg=$constructor("$ZodIntersection",(e,t)=>{Wt.init(e,t),e._zod.parse=(e,g)=>{const n=e.value,o=t.left._zod.run({value:n,issues:[]},g),a=t.right._zod.run({value:n,issues:[]},g);return o instanceof Promise||a instanceof Promise?Promise.all([o,a]).then(([t,g])=>handleIntersectionResults(e,t,g)):handleIntersectionResults(e,o,a)}});function mergeValues(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e===+t)return{valid:!0,data:e};if(isPlainObject$1(e)&&isPlainObject$1(t)){const g=Object.keys(t),n=Object.keys(e).filter(e=>-1!==g.indexOf(e)),o={...e,...t};for(const a of n){const g=mergeValues(e[a],t[a]);if(!g.valid)return{valid:!1,mergeErrorPath:[a,...g.mergeErrorPath]};o[a]=g.data}return{valid:!0,data:o}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};const g=[];for(let n=0;n<e.length;n++){const o=mergeValues(e[n],t[n]);if(!o.valid)return{valid:!1,mergeErrorPath:[n,...o.mergeErrorPath]};g.push(o.data)}return{valid:!0,data:g}}return{valid:!1,mergeErrorPath:[]}}function handleIntersectionResults(e,t,g){const n=new Map;let o;for(const I of t.issues)if("unrecognized_keys"===I.code){o??(o=I);for(const e of I.keys)n.has(e)||n.set(e,{}),n.get(e).l=!0}else e.issues.push(I);for(const I of g.issues)if("unrecognized_keys"===I.code)for(const e of I.keys)n.has(e)||n.set(e,{}),n.get(e).r=!0;else e.issues.push(I);const a=[...n].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(a.length&&o&&e.issues.push({...o,keys:a}),aborted(e))return e;const C=mergeValues(t.value,g.value);if(!C.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(C.mergeErrorPath)}`);return e.value=C.data,e}var vg=$constructor("$ZodEnum",(e,t)=>{Wt.init(e,t);const g=getEnumValues(t.entries),n=new Set(g);e._zod.values=n,e._zod.pattern=new RegExp(`^(${g.filter(e=>Ke.has(typeof e)).map(e=>"string"==typeof e?escapeRegex(e):e.toString()).join("|")})$`),e._zod.parse=(t,o)=>{const a=t.value;return n.has(a)||t.issues.push({code:"invalid_value",values:g,input:a,inst:e}),t}}),xg=$constructor("$ZodTransform",(e,t)=>{Wt.init(e,t),e._zod.optin="optional",e._zod.parse=(g,n)=>{if("backward"===n.direction)throw new We(e.constructor.name);const o=t.transform(g.value,g);if(n.async)return(o instanceof Promise?o:Promise.resolve(o)).then(e=>(g.value=e,g.fallback=!0,g));if(o instanceof Promise)throw new Fe;return g.value=o,g.fallback=!0,g}});function handleOptionalResult(e,t){return void 0===t&&(e.issues.length||e.fallback)?{issues:[],value:void 0}:e}var Sg=$constructor("$ZodOptional",(e,t)=>{Wt.init(e,t),e._zod.optin="optional",e._zod.optout="optional",defineLazy(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),defineLazy(e._zod,"pattern",()=>{const e=t.innerType._zod.pattern;return e?new RegExp(`^(${cleanRegex(e.source)})?$`):void 0}),e._zod.parse=(e,g)=>{if("optional"===t.innerType._zod.optin){const n=e.value,o=t.innerType._zod.run(e,g);return o instanceof Promise?o.then(e=>handleOptionalResult(e,n)):handleOptionalResult(o,n)}return void 0===e.value?e:t.innerType._zod.run(e,g)}}),wg=$constructor("$ZodExactOptional",(e,t)=>{Sg.init(e,t),defineLazy(e._zod,"values",()=>t.innerType._zod.values),defineLazy(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(e,g)=>t.innerType._zod.run(e,g)}),kg=$constructor("$ZodNullable",(e,t)=>{Wt.init(e,t),defineLazy(e._zod,"optin",()=>t.innerType._zod.optin),defineLazy(e._zod,"optout",()=>t.innerType._zod.optout),defineLazy(e._zod,"pattern",()=>{const e=t.innerType._zod.pattern;return e?new RegExp(`^(${cleanRegex(e.source)}|null)$`):void 0}),defineLazy(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,g)=>null===e.value?e:t.innerType._zod.run(e,g)}),Eg=$constructor("$ZodDefault",(e,t)=>{Wt.init(e,t),e._zod.optin="optional",defineLazy(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,g)=>{if("backward"===g.direction)return t.innerType._zod.run(e,g);if(void 0===e.value)return e.value=t.defaultValue,e;const n=t.innerType._zod.run(e,g);return n instanceof Promise?n.then(e=>handleDefaultResult(e,t)):handleDefaultResult(n,t)}});function handleDefaultResult(e,t){return void 0===e.value&&(e.value=t.defaultValue),e}var Rg=$constructor("$ZodPrefault",(e,t)=>{Wt.init(e,t),e._zod.optin="optional",defineLazy(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,g)=>("backward"===g.direction||void 0===e.value&&(e.value=t.defaultValue),t.innerType._zod.run(e,g))}),Tg=$constructor("$ZodNonOptional",(e,t)=>{Wt.init(e,t),defineLazy(e._zod,"values",()=>{const e=t.innerType._zod.values;return e?new Set([...e].filter(e=>void 0!==e)):void 0}),e._zod.parse=(g,n)=>{const o=t.innerType._zod.run(g,n);return o instanceof Promise?o.then(t=>handleNonOptionalResult(t,e)):handleNonOptionalResult(o,e)}});function handleNonOptionalResult(e,t){return e.issues.length||void 0!==e.value||e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}var Mg=$constructor("$ZodCatch",(e,t)=>{Wt.init(e,t),e._zod.optin="optional",defineLazy(e._zod,"optout",()=>t.innerType._zod.optout),defineLazy(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,g)=>{if("backward"===g.direction)return t.innerType._zod.run(e,g);const n=t.innerType._zod.run(e,g);return n instanceof Promise?n.then(n=>(e.value=n.value,n.issues.length&&(e.value=t.catchValue({...e,error:{issues:n.issues.map(e=>finalizeIssue(e,g,config()))},input:e.value}),e.issues=[],e.fallback=!0),e)):(e.value=n.value,n.issues.length&&(e.value=t.catchValue({...e,error:{issues:n.issues.map(e=>finalizeIssue(e,g,config()))},input:e.value}),e.issues=[],e.fallback=!0),e)}}),Pg=$constructor("$ZodPipe",(e,t)=>{Wt.init(e,t),defineLazy(e._zod,"values",()=>t.in._zod.values),defineLazy(e._zod,"optin",()=>t.in._zod.optin),defineLazy(e._zod,"optout",()=>t.out._zod.optout),defineLazy(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(e,g)=>{if("backward"===g.direction){const n=t.out._zod.run(e,g);return n instanceof Promise?n.then(e=>handlePipeResult(e,t.in,g)):handlePipeResult(n,t.in,g)}const n=t.in._zod.run(e,g);return n instanceof Promise?n.then(e=>handlePipeResult(e,t.out,g)):handlePipeResult(n,t.out,g)}});function handlePipeResult(e,t,g){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues,fallback:e.fallback},g)}var Ng=$constructor("$ZodPreprocess",(e,t)=>{Pg.init(e,t)}),zg=$constructor("$ZodReadonly",(e,t)=>{Wt.init(e,t),defineLazy(e._zod,"propValues",()=>t.innerType._zod.propValues),defineLazy(e._zod,"values",()=>t.innerType._zod.values),defineLazy(e._zod,"optin",()=>t.innerType?._zod?.optin),defineLazy(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(e,g)=>{if("backward"===g.direction)return t.innerType._zod.run(e,g);const n=t.innerType._zod.run(e,g);return n instanceof Promise?n.then(handleReadonlyResult):handleReadonlyResult(n)}});function handleReadonlyResult(e){return e.value=Object.freeze(e.value),e}var Og,Dg=$constructor("$ZodCustom",(e,t)=>{vt.init(e,t),Wt.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=g=>{const n=g.value,o=t.fn(n);if(o instanceof Promise)return o.then(t=>handleRefineResult(t,g,n,e));handleRefineResult(o,g,n,e)}});function handleRefineResult(e,t,g,n){if(!e){const e={code:"custom",input:g,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};n._zod.def.params&&(e.params=n._zod.def.params),t.issues.push(issue(e))}}var jg=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){const g=t[0];return this._map.set(e,g),g&&"object"==typeof g&&"id"in g&&this._idmap.set(g.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){const t=this._map.get(e);return t&&"object"==typeof t&&"id"in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){const t=e._zod.parent;if(t){const g={...this.get(t)??{}};delete g.id;const n={...g,...this._map.get(e)};return Object.keys(n).length?n:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function registry(){return new jg}(Og=globalThis).__zod_globalRegistry??(Og.__zod_globalRegistry=registry());var Lg=globalThis.__zod_globalRegistry;function _string(e,t){return new e({type:"string",...normalizeParams(t)})}function _email(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...normalizeParams(t)})}function _guid(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...normalizeParams(t)})}function _uuid(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...normalizeParams(t)})}function _uuidv4(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...normalizeParams(t)})}function _uuidv6(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...normalizeParams(t)})}function _uuidv7(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...normalizeParams(t)})}function _url(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...normalizeParams(t)})}function _emoji(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...normalizeParams(t)})}function _nanoid(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...normalizeParams(t)})}function _cuid(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...normalizeParams(t)})}function _cuid2(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...normalizeParams(t)})}function _ulid(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...normalizeParams(t)})}function _xid(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...normalizeParams(t)})}function _ksuid(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...normalizeParams(t)})}function _ipv4(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...normalizeParams(t)})}function _ipv6(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...normalizeParams(t)})}function _cidrv4(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...normalizeParams(t)})}function _cidrv6(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...normalizeParams(t)})}function _base64(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...normalizeParams(t)})}function _base64url(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...normalizeParams(t)})}function _e164(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...normalizeParams(t)})}function _jwt(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...normalizeParams(t)})}function _isoDateTime(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...normalizeParams(t)})}function _isoDate(e,t){return new e({type:"string",format:"date",check:"string_format",...normalizeParams(t)})}function _isoTime(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...normalizeParams(t)})}function _isoDuration(e,t){return new e({type:"string",format:"duration",check:"string_format",...normalizeParams(t)})}function _number(e,t){return new e({type:"number",checks:[],...normalizeParams(t)})}function _int(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...normalizeParams(t)})}function _unknown(e){return new e({type:"unknown"})}function _never(e,t){return new e({type:"never",...normalizeParams(t)})}function _lt(e,t){return new St({check:"less_than",...normalizeParams(t),value:e,inclusive:!1})}function _lte(e,t){return new St({check:"less_than",...normalizeParams(t),value:e,inclusive:!0})}function _gt(e,t){return new wt({check:"greater_than",...normalizeParams(t),value:e,inclusive:!1})}function _gte(e,t){return new wt({check:"greater_than",...normalizeParams(t),value:e,inclusive:!0})}function _multipleOf(e,t){return new kt({check:"multiple_of",...normalizeParams(t),value:e})}function _maxLength(e,t){return new Rt({check:"max_length",...normalizeParams(t),maximum:e})}function _minLength(e,t){return new Tt({check:"min_length",...normalizeParams(t),minimum:e})}function _length(e,t){return new Mt({check:"length_equals",...normalizeParams(t),length:e})}function _regex(e,t){return new Nt({check:"string_format",format:"regex",...normalizeParams(t),pattern:e})}function _lowercase(e){return new zt({check:"string_format",format:"lowercase",...normalizeParams(e)})}function _uppercase(e){return new Ot({check:"string_format",format:"uppercase",...normalizeParams(e)})}function _includes(e,t){return new Dt({check:"string_format",format:"includes",...normalizeParams(t),includes:e})}function _startsWith(e,t){return new jt({check:"string_format",format:"starts_with",...normalizeParams(t),prefix:e})}function _endsWith(e,t){return new Lt({check:"string_format",format:"ends_with",...normalizeParams(t),suffix:e})}function _overwrite(e){return new Gt({check:"overwrite",tx:e})}function _normalize(e){return _overwrite(t=>t.normalize(e))}function _trim(){return _overwrite(e=>e.trim())}function _toLowerCase(){return _overwrite(e=>e.toLowerCase())}function _toUpperCase(){return _overwrite(e=>e.toUpperCase())}function _slugify(){return _overwrite(e=>slugify(e))}function _array(e,t,g){return new e({type:"array",element:t,...normalizeParams(g)})}function _refine(e,t,g){return new e({type:"custom",check:"custom",fn:t,...normalizeParams(g)})}function _superRefine(e,t){const g=_check(t=>(t.addIssue=e=>{if("string"==typeof e)t.issues.push(issue(e,t.value,g._zod.def));else{const n=e;n.fatal&&(n.continue=!1),n.code??(n.code="custom"),n.input??(n.input=t.value),n.inst??(n.inst=g),n.continue??(n.continue=!g._zod.def.abort),t.issues.push(issue(n))}},e(t.value,t)),t);return g}function _check(e,t){const g=new vt({check:"custom",...normalizeParams(t)});return g._zod.check=e,g}function initializeContext(e){let t=e?.target??"draft-2020-12";return"draft-4"===t&&(t="draft-04"),"draft-7"===t&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??Lg,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function process(e,t,g={path:[],schemaPath:[]}){var n;const o=e._zod.def,a=t.seen.get(e);if(a)return a.count++,g.schemaPath.includes(e)&&(a.cycle=g.path),a.schema;const C={schema:{},count:1,cycle:void 0,path:g.path};t.seen.set(e,C);const I=e._zod.toJSONSchema?.();if(I)C.schema=I;else{const n={...g,schemaPath:[...g.schemaPath,e],path:g.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,C.schema,n);else{const g=C.schema,a=t.processors[o.type];if(!a)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${o.type}`);a(e,t,g,n)}const a=e._zod.parent;a&&(C.ref||(C.ref=a),process(a,t,n),t.seen.get(a).isParent=!0)}const i=t.metadataRegistry.get(e);return i&&Object.assign(C.schema,i),"input"===t.io&&isTransforming(e)&&(delete C.schema.examples,delete C.schema.default),"input"===t.io&&"_prefault"in C.schema&&((n=C.schema).default??(n.default=C.schema._prefault)),delete C.schema._prefault,t.seen.get(e).schema}function extractDefs(e,t){const g=e.seen.get(t);if(!g)throw new Error("Unprocessed schema. This is a bug in Zod.");const n=new Map;for(const o of e.seen.entries()){const t=e.metadataRegistry.get(o[0])?.id;if(t){const e=n.get(t);if(e&&e!==o[0])throw new Error(`Duplicate schema id "${t}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);n.set(t,o[0])}}const makeURI=t=>{const n="draft-2020-12"===e.target?"$defs":"definitions";if(e.external){const g=e.external.registry.get(t[0])?.id,o=e.external.uri??(e=>e);if(g)return{ref:o(g)};const a=t[1].defId??t[1].schema.id??"schema"+e.counter++;return t[1].defId=a,{defId:a,ref:`${o("__shared")}#/${n}/${a}`}}if(t[1]===g)return{ref:"#"};const o=`#/${n}/`,a=t[1].schema.id??"__schema"+e.counter++;return{defId:a,ref:o+a}},extractToDef=e=>{if(e[1].schema.$ref)return;const t=e[1],{ref:g,defId:n}=makeURI(e);t.def={...t.schema},n&&(t.defId=n);const o=t.schema;for(const a in o)delete o[a];o.$ref=g};if("throw"===e.cycles)for(const o of e.seen.entries()){const e=o[1];if(e.cycle)throw new Error(`Cycle detected: #/${e.cycle?.join("/")}/<root>\n\nSet the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const o of e.seen.entries()){const g=o[1];if(t!==o[0]){if(e.external){const g=e.external.registry.get(o[0])?.id;if(t!==o[0]&&g){extractToDef(o);continue}}(e.metadataRegistry.get(o[0])?.id||g.cycle||g.count>1&&"ref"===e.reused)&&extractToDef(o)}else extractToDef(o)}}function finalize(e,t){const g=e.seen.get(t);if(!g)throw new Error("Unprocessed schema. This is a bug in Zod.");const flattenRef=t=>{const g=e.seen.get(t);if(null===g.ref)return;const n=g.def??g.schema,o={...n},a=g.ref;if(g.ref=null,a){flattenRef(a);const g=e.seen.get(a),C=g.schema;if(!C.$ref||"draft-07"!==e.target&&"draft-04"!==e.target&&"openapi-3.0"!==e.target?Object.assign(n,C):(n.allOf=n.allOf??[],n.allOf.push(C)),Object.assign(n,o),t._zod.parent===a)for(const e in n)"$ref"!==e&&"allOf"!==e&&(e in o||delete n[e]);if(C.$ref&&g.def)for(const e in n)"$ref"!==e&&"allOf"!==e&&e in g.def&&JSON.stringify(n[e])===JSON.stringify(g.def[e])&&delete n[e]}const C=t._zod.parent;if(C&&C!==a){flattenRef(C);const t=e.seen.get(C);if(t?.schema.$ref&&(n.$ref=t.schema.$ref,t.def))for(const e in n)"$ref"!==e&&"allOf"!==e&&e in t.def&&JSON.stringify(n[e])===JSON.stringify(t.def[e])&&delete n[e]}e.override({zodSchema:t,jsonSchema:n,path:g.path??[]})};for(const I of[...e.seen.entries()].reverse())flattenRef(I[0]);const n={};if("draft-2020-12"===e.target?n.$schema="https://json-schema.org/draft/2020-12/schema":"draft-07"===e.target?n.$schema="http://json-schema.org/draft-07/schema#":"draft-04"===e.target?n.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const g=e.external.registry.get(t)?.id;if(!g)throw new Error("Schema is missing an `id` property");n.$id=e.external.uri(g)}Object.assign(n,g.def??g.schema);const o=e.metadataRegistry.get(t)?.id;void 0!==o&&n.id===o&&delete n.id;const a=e.external?.defs??{};for(const I of e.seen.entries()){const e=I[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,a[e.defId]=e.def)}e.external||Object.keys(a).length>0&&("draft-2020-12"===e.target?n.$defs=a:n.definitions=a);try{const g=JSON.parse(JSON.stringify(n));return Object.defineProperty(g,"~standard",{value:{...t["~standard"],jsonSchema:{input:createStandardJSONSchemaMethod(t,"input",e.processors),output:createStandardJSONSchemaMethod(t,"output",e.processors)}},enumerable:!1,writable:!1}),g}catch(C){throw new Error("Error converting schema to JSON.")}}function isTransforming(e,t){const g=t??{seen:new Set};if(g.seen.has(e))return!1;g.seen.add(e);const n=e._zod.def;if("transform"===n.type)return!0;if("array"===n.type)return isTransforming(n.element,g);if("set"===n.type)return isTransforming(n.valueType,g);if("lazy"===n.type)return isTransforming(n.getter(),g);if("promise"===n.type||"optional"===n.type||"nonoptional"===n.type||"nullable"===n.type||"readonly"===n.type||"default"===n.type||"prefault"===n.type)return isTransforming(n.innerType,g);if("intersection"===n.type)return isTransforming(n.left,g)||isTransforming(n.right,g);if("record"===n.type||"map"===n.type)return isTransforming(n.keyType,g)||isTransforming(n.valueType,g);if("pipe"===n.type)return!!e._zod.traits.has("$ZodCodec")||isTransforming(n.in,g)||isTransforming(n.out,g);if("object"===n.type){for(const e in n.shape)if(isTransforming(n.shape[e],g))return!0;return!1}if("union"===n.type){for(const e of n.options)if(isTransforming(e,g))return!0;return!1}if("tuple"===n.type){for(const e of n.items)if(isTransforming(e,g))return!0;return!(!n.rest||!isTransforming(n.rest,g))}return!1}var createToJSONSchemaMethod=(e,t={})=>g=>{const n=initializeContext({...g,processors:t});return process(e,n),extractDefs(n,e),finalize(n,e)},createStandardJSONSchemaMethod=(e,t,g={})=>n=>{const{libraryOptions:o,target:a}=n??{},C=initializeContext({...o??{},target:a,io:t,processors:g});return process(e,C),extractDefs(C,e),finalize(C,e)},Gg={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},stringProcessor=(e,t,g,n)=>{const o=g;o.type="string";const{minimum:a,maximum:C,format:I,patterns:i,contentEncoding:s}=e._zod.bag;if("number"==typeof a&&(o.minLength=a),"number"==typeof C&&(o.maxLength=C),I&&(o.format=Gg[I]??I,""===o.format&&delete o.format,"time"===I&&delete o.format),s&&(o.contentEncoding=s),i&&i.size>0){const e=[...i];1===e.length?o.pattern=e[0].source:e.length>1&&(o.allOf=[...e.map(e=>({..."draft-07"===t.target||"draft-04"===t.target||"openapi-3.0"===t.target?{type:"string"}:{},pattern:e.source}))])}},numberProcessor=(e,t,g,n)=>{const o=g,{minimum:a,maximum:C,format:I,multipleOf:i,exclusiveMaximum:s,exclusiveMinimum:l}=e._zod.bag;"string"==typeof I&&I.includes("int")?o.type="integer":o.type="number";const c="number"==typeof l&&l>=(a??Number.NEGATIVE_INFINITY),u="number"==typeof s&&s<=(C??Number.POSITIVE_INFINITY),d="draft-04"===t.target||"openapi-3.0"===t.target;c?d?(o.minimum=l,o.exclusiveMinimum=!0):o.exclusiveMinimum=l:"number"==typeof a&&(o.minimum=a),u?d?(o.maximum=s,o.exclusiveMaximum=!0):o.exclusiveMaximum=s:"number"==typeof C&&(o.maximum=C),"number"==typeof i&&(o.multipleOf=i)},neverProcessor=(e,t,g,n)=>{g.not={}},unknownProcessor=(e,t,g,n)=>{},enumProcessor=(e,t,g,n)=>{const o=getEnumValues(e._zod.def.entries);o.every(e=>"number"==typeof e)&&(g.type="number"),o.every(e=>"string"==typeof e)&&(g.type="string"),g.enum=o},customProcessor=(e,t,g,n)=>{if("throw"===t.unrepresentable)throw new Error("Custom types cannot be represented in JSON Schema")},transformProcessor=(e,t,g,n)=>{if("throw"===t.unrepresentable)throw new Error("Transforms cannot be represented in JSON Schema")},arrayProcessor=(e,t,g,n)=>{const o=g,a=e._zod.def,{minimum:C,maximum:I}=e._zod.bag;"number"==typeof C&&(o.minItems=C),"number"==typeof I&&(o.maxItems=I),o.type="array",o.items=process(a.element,t,{...n,path:[...n.path,"items"]})},objectProcessor=(e,t,g,n)=>{const o=g,a=e._zod.def;o.type="object",o.properties={};const C=a.shape;for(const s in C)o.properties[s]=process(C[s],t,{...n,path:[...n.path,"properties",s]});const I=new Set(Object.keys(C)),i=new Set([...I].filter(e=>{const g=a.shape[e]._zod;return"input"===t.io?void 0===g.optin:void 0===g.optout}));i.size>0&&(o.required=Array.from(i)),"never"===a.catchall?._zod.def.type?o.additionalProperties=!1:a.catchall?a.catchall&&(o.additionalProperties=process(a.catchall,t,{...n,path:[...n.path,"additionalProperties"]})):"output"===t.io&&(o.additionalProperties=!1)},unionProcessor=(e,t,g,n)=>{const o=e._zod.def,a=!1===o.inclusive,C=o.options.map((e,g)=>process(e,t,{...n,path:[...n.path,a?"oneOf":"anyOf",g]}));a?g.oneOf=C:g.anyOf=C},intersectionProcessor=(e,t,g,n)=>{const o=e._zod.def,a=process(o.left,t,{...n,path:[...n.path,"allOf",0]}),C=process(o.right,t,{...n,path:[...n.path,"allOf",1]}),isSimpleIntersection=e=>"allOf"in e&&1===Object.keys(e).length;g.allOf=[...isSimpleIntersection(a)?a.allOf:[a],...isSimpleIntersection(C)?C.allOf:[C]]},nullableProcessor=(e,t,g,n)=>{const o=e._zod.def,a=process(o.innerType,t,n),C=t.seen.get(e);"openapi-3.0"===t.target?(C.ref=o.innerType,g.nullable=!0):g.anyOf=[a,{type:"null"}]},nonoptionalProcessor=(e,t,g,n)=>{const o=e._zod.def;process(o.innerType,t,n),t.seen.get(e).ref=o.innerType},defaultProcessor=(e,t,g,n)=>{const o=e._zod.def;process(o.innerType,t,n),t.seen.get(e).ref=o.innerType,g.default=JSON.parse(JSON.stringify(o.defaultValue))},prefaultProcessor=(e,t,g,n)=>{const o=e._zod.def;process(o.innerType,t,n),t.seen.get(e).ref=o.innerType,"input"===t.io&&(g._prefault=JSON.parse(JSON.stringify(o.defaultValue)))},catchProcessor=(e,t,g,n)=>{const o=e._zod.def;let a;process(o.innerType,t,n),t.seen.get(e).ref=o.innerType;try{a=o.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}g.default=a},pipeProcessor=(e,t,g,n)=>{const o=e._zod.def,a=o.in._zod.traits.has("$ZodTransform"),C="input"===t.io?a?o.out:o.in:o.out;process(C,t,n),t.seen.get(e).ref=C},readonlyProcessor=(e,t,g,n)=>{const o=e._zod.def;process(o.innerType,t,n),t.seen.get(e).ref=o.innerType,g.readOnly=!0},optionalProcessor=(e,t,g,n)=>{const o=e._zod.def;process(o.innerType,t,n),t.seen.get(e).ref=o.innerType},Bg=$constructor("ZodISODateTime",(e,t)=>{tg.init(e,t),An.init(e,t)});function datetime(e){return _isoDateTime(Bg,e)}var Fg=$constructor("ZodISODate",(e,t)=>{gg.init(e,t),An.init(e,t)});function date(e){return _isoDate(Fg,e)}var Wg=$constructor("ZodISOTime",(e,t)=>{ng.init(e,t),An.init(e,t)});function time(e){return _isoTime(Wg,e)}var Vg=$constructor("ZodISODuration",(e,t)=>{rg.init(e,t),An.init(e,t)});function duration$1(e){return _isoDuration(Vg,e)}var initializer=(e,t)=>{Ye.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:t=>formatError(e,t)},flatten:{value:t=>flattenError(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,jsonStringifyReplacer,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,jsonStringifyReplacer,2)}},isEmpty:{get:()=>0===e.issues.length}})},_g=$constructor("ZodError",initializer,{Parent:Error}),Ug=_parse(_g),Zg=_parseAsync(_g),Kg=_safeParse(_g),Hg=_safeParseAsync(_g),Yg=_encode(_g),$g=_decode(_g),Qg=_encodeAsync(_g),Xg=_decodeAsync(_g),Jg=_safeEncode(_g),qg=_safeDecode(_g),en=_safeEncodeAsync(_g),tn=_safeDecodeAsync(_g),gn=new WeakMap;function _installLazyMethods(e,t,g){const n=Object.getPrototypeOf(e);let o=gn.get(n);if(o||(o=new Set,gn.set(n,o)),!o.has(t)){o.add(t);for(const e in g){const t=g[e];Object.defineProperty(n,e,{configurable:!0,enumerable:!1,get(){const g=t.bind(this);return Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:g}),g},set(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:t})}})}}}var nn=$constructor("ZodType",(e,t)=>(Wt.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:createStandardJSONSchemaMethod(e,"input"),output:createStandardJSONSchemaMethod(e,"output")}}),e.toJSONSchema=createToJSONSchemaMethod(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.parse=(t,g)=>Ug(e,t,g,{callee:e.parse}),e.safeParse=(t,g)=>Kg(e,t,g),e.parseAsync=async(t,g)=>Zg(e,t,g,{callee:e.parseAsync}),e.safeParseAsync=async(t,g)=>Hg(e,t,g),e.spa=e.safeParseAsync,e.encode=(t,g)=>Yg(e,t,g),e.decode=(t,g)=>$g(e,t,g),e.encodeAsync=async(t,g)=>Qg(e,t,g),e.decodeAsync=async(t,g)=>Xg(e,t,g),e.safeEncode=(t,g)=>Jg(e,t,g),e.safeDecode=(t,g)=>qg(e,t,g),e.safeEncodeAsync=async(t,g)=>en(e,t,g),e.safeDecodeAsync=async(t,g)=>tn(e,t,g),_installLazyMethods(e,"ZodType",{check(...e){const t=this.def;return this.clone(mergeDefs(t,{checks:[...t.checks??[],...e.map(e=>"function"==typeof e?{_zod:{check:e,def:{check:"custom"},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return clone$1(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(refine(e,t))},superRefine(e,t){return this.check(superRefine(e,t))},overwrite(e){return this.check(_overwrite(e))},optional(){return optional(this)},exactOptional(){return exactOptional(this)},nullable(){return nullable(this)},nullish(){return optional(nullable(this))},nonoptional(e){return nonoptional(this,e)},array(){return array(this)},or(e){return union([this,e])},and(e){return intersection(this,e)},transform(e){return pipe(this,transform(e))},default(e){return _default(this,e)},prefault(e){return prefault(this,e)},catch(e){return _catch(this,e)},pipe(e){return pipe(this,e)},readonly(){return readonly(this)},describe(e){const t=this.clone();return Lg.add(t,{description:e}),t},meta(...e){if(0===e.length)return Lg.get(this);const t=this.clone();return Lg.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e){return e(this)}}),Object.defineProperty(e,"description",{get:()=>Lg.get(e)?.description,configurable:!0}),e)),rn=$constructor("_ZodString",(e,t)=>{Vt.init(e,t),nn.init(e,t),e._zod.processJSONSchema=(t,g,n)=>stringProcessor(e,t,g,n);const g=e._zod.bag;e.format=g.format??null,e.minLength=g.minimum??null,e.maxLength=g.maximum??null,_installLazyMethods(e,"_ZodString",{regex(...e){return this.check(_regex(...e))},includes(...e){return this.check(_includes(...e))},startsWith(...e){return this.check(_startsWith(...e))},endsWith(...e){return this.check(_endsWith(...e))},min(...e){return this.check(_minLength(...e))},max(...e){return this.check(_maxLength(...e))},length(...e){return this.check(_length(...e))},nonempty(...e){return this.check(_minLength(1,...e))},lowercase(e){return this.check(_lowercase(e))},uppercase(e){return this.check(_uppercase(e))},trim(){return this.check(_trim())},normalize(...e){return this.check(_normalize(...e))},toLowerCase(){return this.check(_toLowerCase())},toUpperCase(){return this.check(_toUpperCase())},slugify(){return this.check(_slugify())}})}),an=$constructor("ZodString",(e,t)=>{Vt.init(e,t),rn.init(e,t),e.email=t=>e.check(_email(Cn,t)),e.url=t=>e.check(_url(ln,t)),e.jwt=t=>e.check(_jwt(Rn,t)),e.emoji=t=>e.check(_emoji(cn,t)),e.guid=t=>e.check(_guid(In,t)),e.uuid=t=>e.check(_uuid(sn,t)),e.uuidv4=t=>e.check(_uuidv4(sn,t)),e.uuidv6=t=>e.check(_uuidv6(sn,t)),e.uuidv7=t=>e.check(_uuidv7(sn,t)),e.nanoid=t=>e.check(_nanoid(un,t)),e.guid=t=>e.check(_guid(In,t)),e.cuid=t=>e.check(_cuid(dn,t)),e.cuid2=t=>e.check(_cuid2(pn,t)),e.ulid=t=>e.check(_ulid(mn,t)),e.base64=t=>e.check(_base64(wn,t)),e.base64url=t=>e.check(_base64url(kn,t)),e.xid=t=>e.check(_xid(hn,t)),e.ksuid=t=>e.check(_ksuid(yn,t)),e.ipv4=t=>e.check(_ipv4(bn,t)),e.ipv6=t=>e.check(_ipv6(vn,t)),e.cidrv4=t=>e.check(_cidrv4(xn,t)),e.cidrv6=t=>e.check(_cidrv6(Sn,t)),e.e164=t=>e.check(_e164(En,t)),e.datetime=t=>e.check(datetime(t)),e.date=t=>e.check(date(t)),e.time=t=>e.check(time(t)),e.duration=t=>e.check(duration$1(t))});function string(e){return _string(an,e)}var An=$constructor("ZodStringFormat",(e,t)=>{_t.init(e,t),rn.init(e,t)}),Cn=$constructor("ZodEmail",(e,t)=>{Kt.init(e,t),An.init(e,t)}),In=$constructor("ZodGUID",(e,t)=>{Ut.init(e,t),An.init(e,t)}),sn=$constructor("ZodUUID",(e,t)=>{Zt.init(e,t),An.init(e,t)}),ln=$constructor("ZodURL",(e,t)=>{Ht.init(e,t),An.init(e,t)}),cn=$constructor("ZodEmoji",(e,t)=>{Yt.init(e,t),An.init(e,t)}),un=$constructor("ZodNanoID",(e,t)=>{$t.init(e,t),An.init(e,t)}),dn=$constructor("ZodCUID",(e,t)=>{Qt.init(e,t),An.init(e,t)}),pn=$constructor("ZodCUID2",(e,t)=>{Xt.init(e,t),An.init(e,t)}),mn=$constructor("ZodULID",(e,t)=>{Jt.init(e,t),An.init(e,t)}),hn=$constructor("ZodXID",(e,t)=>{qt.init(e,t),An.init(e,t)}),yn=$constructor("ZodKSUID",(e,t)=>{eg.init(e,t),An.init(e,t)}),bn=$constructor("ZodIPv4",(e,t)=>{og.init(e,t),An.init(e,t)}),vn=$constructor("ZodIPv6",(e,t)=>{ag.init(e,t),An.init(e,t)}),xn=$constructor("ZodCIDRv4",(e,t)=>{Ag.init(e,t),An.init(e,t)}),Sn=$constructor("ZodCIDRv6",(e,t)=>{Cg.init(e,t),An.init(e,t)}),wn=$constructor("ZodBase64",(e,t)=>{Ig.init(e,t),An.init(e,t)}),kn=$constructor("ZodBase64URL",(e,t)=>{ig.init(e,t),An.init(e,t)}),En=$constructor("ZodE164",(e,t)=>{sg.init(e,t),An.init(e,t)}),Rn=$constructor("ZodJWT",(e,t)=>{lg.init(e,t),An.init(e,t)}),Tn=$constructor("ZodNumber",(e,t)=>{cg.init(e,t),nn.init(e,t),e._zod.processJSONSchema=(t,g,n)=>numberProcessor(e,t,g,n),_installLazyMethods(e,"ZodNumber",{gt(e,t){return this.check(_gt(e,t))},gte(e,t){return this.check(_gte(e,t))},min(e,t){return this.check(_gte(e,t))},lt(e,t){return this.check(_lt(e,t))},lte(e,t){return this.check(_lte(e,t))},max(e,t){return this.check(_lte(e,t))},int(e){return this.check(int(e))},safe(e){return this.check(int(e))},positive(e){return this.check(_gt(0,e))},nonnegative(e){return this.check(_gte(0,e))},negative(e){return this.check(_lt(0,e))},nonpositive(e){return this.check(_lte(0,e))},multipleOf(e,t){return this.check(_multipleOf(e,t))},step(e,t){return this.check(_multipleOf(e,t))},finite(){return this}});const g=e._zod.bag;e.minValue=Math.max(g.minimum??Number.NEGATIVE_INFINITY,g.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(g.maximum??Number.POSITIVE_INFINITY,g.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(g.format??"").includes("int")||Number.isSafeInteger(g.multipleOf??.5),e.isFinite=!0,e.format=g.format??null});function number(e){return _number(Tn,e)}var Mn=$constructor("ZodNumberFormat",(e,t)=>{ug.init(e,t),Tn.init(e,t)});function int(e){return _int(Mn,e)}var Pn=$constructor("ZodUnknown",(e,t)=>{dg.init(e,t),nn.init(e,t),e._zod.processJSONSchema=(t,g,n)=>unknownProcessor(e,t,g,n)});function unknown(){return _unknown(Pn)}var Nn=$constructor("ZodNever",(e,t)=>{pg.init(e,t),nn.init(e,t),e._zod.processJSONSchema=(t,g,n)=>neverProcessor(e,t,g,n)});function never(e){return _never(Nn,e)}var zn=$constructor("ZodArray",(e,t)=>{mg.init(e,t),nn.init(e,t),e._zod.processJSONSchema=(t,g,n)=>arrayProcessor(e,t,g,n),e.element=t.element,_installLazyMethods(e,"ZodArray",{min(e,t){return this.check(_minLength(e,t))},nonempty(e){return this.check(_minLength(1,e))},max(e,t){return this.check(_maxLength(e,t))},length(e,t){return this.check(_length(e,t))},unwrap(){return this.element}})});function array(e,t){return _array(zn,e,t)}var On=$constructor("ZodObject",(e,t)=>{hg.init(e,t),nn.init(e,t),e._zod.processJSONSchema=(t,g,n)=>objectProcessor(e,t,g,n),defineLazy(e,"shape",()=>t.shape),_installLazyMethods(e,"ZodObject",{keyof(){return _enum(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:unknown()})},loose(){return this.clone({...this._zod.def,catchall:unknown()})},strict(){return this.clone({...this._zod.def,catchall:never()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return extend(this,e)},safeExtend(e){return safeExtend(this,e)},merge(e){return merge(this,e)},pick(e){return pick(this,e)},omit(e){return omit(this,e)},partial(...e){return partial(Bn,this,e[0])},required(...e){return required(Un,this,e[0])}})});function object(e,t){return new On({type:"object",shape:e??{},...normalizeParams(t)})}var Dn=$constructor("ZodUnion",(e,t)=>{yg.init(e,t),nn.init(e,t),e._zod.processJSONSchema=(t,g,n)=>unionProcessor(e,t,g,n),e.options=t.options});function union(e,t){return new Dn({type:"union",options:e,...normalizeParams(t)})}var jn=$constructor("ZodIntersection",(e,t)=>{bg.init(e,t),nn.init(e,t),e._zod.processJSONSchema=(t,g,n)=>intersectionProcessor(e,t,g,n)});function intersection(e,t){return new jn({type:"intersection",left:e,right:t})}var Ln=$constructor("ZodEnum",(e,t)=>{vg.init(e,t),nn.init(e,t),e._zod.processJSONSchema=(t,g,n)=>enumProcessor(e,t,g,n),e.enum=t.entries,e.options=Object.values(t.entries);const g=new Set(Object.keys(t.entries));e.extract=(e,n)=>{const o={};for(const a of e){if(!g.has(a))throw new Error(`Key ${a} not found in enum`);o[a]=t.entries[a]}return new Ln({...t,checks:[],...normalizeParams(n),entries:o})},e.exclude=(e,n)=>{const o={...t.entries};for(const t of e){if(!g.has(t))throw new Error(`Key ${t} not found in enum`);delete o[t]}return new Ln({...t,checks:[],...normalizeParams(n),entries:o})}});function _enum(e,t){return new Ln({type:"enum",entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...normalizeParams(t)})}var Gn=$constructor("ZodTransform",(e,t)=>{xg.init(e,t),nn.init(e,t),e._zod.processJSONSchema=(t,g,n)=>transformProcessor(e,t,g,n),e._zod.parse=(g,n)=>{if("backward"===n.direction)throw new We(e.constructor.name);g.addIssue=n=>{if("string"==typeof n)g.issues.push(issue(n,g.value,t));else{const t=n;t.fatal&&(t.continue=!1),t.code??(t.code="custom"),t.input??(t.input=g.value),t.inst??(t.inst=e),g.issues.push(issue(t))}};const o=t.transform(g.value,g);return o instanceof Promise?o.then(e=>(g.value=e,g.fallback=!0,g)):(g.value=o,g.fallback=!0,g)}});function transform(e){return new Gn({type:"transform",transform:e})}var Bn=$constructor("ZodOptional",(e,t)=>{Sg.init(e,t),nn.init(e,t),e._zod.processJSONSchema=(t,g,n)=>optionalProcessor(e,t,g,n),e.unwrap=()=>e._zod.def.innerType});function optional(e){return new Bn({type:"optional",innerType:e})}var Fn=$constructor("ZodExactOptional",(e,t)=>{wg.init(e,t),nn.init(e,t),e._zod.processJSONSchema=(t,g,n)=>optionalProcessor(e,t,g,n),e.unwrap=()=>e._zod.def.innerType});function exactOptional(e){return new Fn({type:"optional",innerType:e})}var Wn=$constructor("ZodNullable",(e,t)=>{kg.init(e,t),nn.init(e,t),e._zod.processJSONSchema=(t,g,n)=>nullableProcessor(e,t,g,n),e.unwrap=()=>e._zod.def.innerType});function nullable(e){return new Wn({type:"nullable",innerType:e})}var Vn=$constructor("ZodDefault",(e,t)=>{Eg.init(e,t),nn.init(e,t),e._zod.processJSONSchema=(t,g,n)=>defaultProcessor(e,t,g,n),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function _default(e,t){return new Vn({type:"default",innerType:e,get defaultValue(){return"function"==typeof t?t():shallowClone(t)}})}var _n=$constructor("ZodPrefault",(e,t)=>{Rg.init(e,t),nn.init(e,t),e._zod.processJSONSchema=(t,g,n)=>prefaultProcessor(e,t,g,n),e.unwrap=()=>e._zod.def.innerType});function prefault(e,t){return new _n({type:"prefault",innerType:e,get defaultValue(){return"function"==typeof t?t():shallowClone(t)}})}var Un=$constructor("ZodNonOptional",(e,t)=>{Tg.init(e,t),nn.init(e,t),e._zod.processJSONSchema=(t,g,n)=>nonoptionalProcessor(e,t,g,n),e.unwrap=()=>e._zod.def.innerType});function nonoptional(e,t){return new Un({type:"nonoptional",innerType:e,...normalizeParams(t)})}var Zn=$constructor("ZodCatch",(e,t)=>{Mg.init(e,t),nn.init(e,t),e._zod.processJSONSchema=(t,g,n)=>catchProcessor(e,t,g,n),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function _catch(e,t){return new Zn({type:"catch",innerType:e,catchValue:"function"==typeof t?t:()=>t})}var Kn=$constructor("ZodPipe",(e,t)=>{Pg.init(e,t),nn.init(e,t),e._zod.processJSONSchema=(t,g,n)=>pipeProcessor(e,t,g,n),e.in=t.in,e.out=t.out});function pipe(e,t){return new Kn({type:"pipe",in:e,out:t})}var Hn=$constructor("ZodPreprocess",(e,t)=>{Kn.init(e,t),Ng.init(e,t)}),Yn=$constructor("ZodReadonly",(e,t)=>{zg.init(e,t),nn.init(e,t),e._zod.processJSONSchema=(t,g,n)=>readonlyProcessor(e,t,g,n),e.unwrap=()=>e._zod.def.innerType});function readonly(e){return new Yn({type:"readonly",innerType:e})}var $n=$constructor("ZodCustom",(e,t)=>{Dg.init(e,t),nn.init(e,t),e._zod.processJSONSchema=(t,g,n)=>customProcessor(e,t,g,n)});function refine(e,t={}){return _refine($n,e,t)}function superRefine(e,t){return _superRefine(e,t)}function preprocess(e,t){return new Hn({type:"pipe",in:transform(e),out:t})}var toInt=e=>{if("number"==typeof e)return Number.isFinite(e)?Math.trunc(e):null;if("string"!=typeof e)return null;const t=e.trim().replace(/,/g,"").replace(/(\d)\s*[kK]\b/g,"$1000").replace(/(\d)\s*[mM]\b/g,"$1000000");if(!t)return null;const g=Number.parseInt(t,10);return Number.isNaN(g)?null:g},Qn=preprocess(e=>"string"==typeof e?e.trim():"",string()),Xn=preprocess(toInt,number().int().nullable()),Jn=object({name:preprocess(e=>"string"==typeof e?e.trim():"",string().min(1)),fullname:Qn,city:Qn,house:Qn,class:Qn,level:Xn,mob_kills:Xn,player_kills:Xn,xp_rank:Xn,explorer_rank:Xn,user:string().trim().min(1).optional()}),qn=Object.freeze({DISABLED:"disabled",OK:"ok",UNAVAILABLE:"unavailable",REJECTED:"rejected"}),httpStatusToRemoteStatus=e=>401===e||403===e?qn.REJECTED:e>=500||0===e?qn.UNAVAILABLE:e>=200&&e<300?qn.OK:qn.UNAVAILABLE,createNullRemotePlayerService=()=>({checkAvailability:async()=>qn.DISABLED,hydrateDirectory:async()=>({ok:!1,remoteStatus:qn.DISABLED}),upsertProfile:async()=>({ok:!1,remoteStatus:qn.DISABLED}),deleteProfile:async()=>({ok:!1,remoteStatus:qn.DISABLED}),queryCharacters:async()=>[]}),createLambdaRemotePlayerService=({apiUrl:e,apiKey:t="",fetchFn:g=null}={})=>{if("string"!=typeof e||!e.trim())return createNullRemotePlayerService();const n=e.trim(),o="function"==typeof g?g:null,call=async({method:e,params:g={},body:a})=>{const C=new URLSearchParams;for(const[t,n]of Object.entries(g))void 0!==n&&C.set(t,String(n));const I=C.toString()?`${n}?${C}`:n,i={"Content-Type":"application/json"};t&&(i["x-api-key"]=t);const s={method:e,headers:i};void 0!==a&&(s.body=JSON.stringify(a));const l=await o(I,s);return{status:l.status,ok:l.ok,response:l}};return{checkAvailability:async()=>{if("function"!=typeof o)return qn.UNAVAILABLE;try{const{status:e}=await call({method:"GET",params:{check:"auth"}});return httpStatusToRemoteStatus(e)}catch{return qn.UNAVAILABLE}},hydrateDirectory:async()=>{if("function"!=typeof o)return{ok:!1,remoteStatus:qn.UNAVAILABLE};try{const{status:e,ok:t,response:g}=await call({method:"GET"}),n=httpStatusToRemoteStatus(e);if(!t)return{ok:!1,remoteStatus:n};const o=await g.json();return{ok:!0,entries:Array.isArray(o)?o:[],remoteStatus:qn.OK}}catch{return{ok:!1,remoteStatus:qn.UNAVAILABLE}}},upsertProfile:async e=>{if("function"!=typeof o)return{ok:!1,remoteStatus:qn.UNAVAILABLE};const t=Jn.safeParse(e);if(!t.success)return{ok:!1,remoteStatus:qn.REJECTED};try{const{status:e,ok:g}=await call({method:"POST",body:t.data});return{ok:g,remoteStatus:httpStatusToRemoteStatus(e)}}catch{return{ok:!1,remoteStatus:qn.UNAVAILABLE}}},deleteProfile:async e=>{if("function"!=typeof o)return{ok:!1,remoteStatus:qn.UNAVAILABLE};try{const{status:t,ok:g}=await call({method:"DELETE",params:{name:e}});return{ok:g,remoteStatus:httpStatusToRemoteStatus(t)}}catch{return{ok:!1,remoteStatus:qn.UNAVAILABLE}}},queryCharacters:async e=>{if("function"!=typeof o)return[];if(!e||"object"!=typeof e||Array.isArray(e)||0===Object.keys(e).length)return[];try{const{ok:t,response:g}=await call({method:"GET",params:{filter:JSON.stringify(e)}});if(!t)return[];const n=await g.json();return Array.isArray(n)?n:[]}catch{return[]}}}},er="playerDirectory",tr="function"==typeof queueMicrotask?queueMicrotask:e=>Promise.resolve().then(e),resolvePlayerDirectory$1=e=>e??getDefaultPlayerDirectoryModel(),resolveDiagnostics=e=>e??getDefaultPlayerDirectoryDiagnosticsModel(),resolveCacheReader=(e,t)=>"function"==typeof e?e:"function"==typeof e?.readCache?e.readCache.bind(e):"function"==typeof t?t:null,resolveCacheWriter=(e,t)=>"function"==typeof e?e:"function"==typeof e?.writeCache?e.writeCache.bind(e):"function"==typeof t?t:null,parseStoredSnapshot=e=>Array.isArray(e)?e:null,createSnapshotSaver=(e,t)=>g=>{"function"==typeof g&&g(t,e.getAllPlayerProfiles().filter(e=>e.loaded&&(e.city||e.fullname)))},createPlayerDirectoryLifecycle=({playerDirectory:e,diagnostics:t,readCache:g,writeCache:n,storageKey:o=er}={})=>{const a=resolvePlayerDirectory$1(e),C=resolveDiagnostics(t),I=createSnapshotSaver(a,o);let i=!1,s=null,l=!1,c=!1;const recordDiagnostic=e=>C.recordPlayerDirectoryDiagnostic(e),isDirectorySeeded=()=>i,resetSeededFlag=()=>{i=!1},warmDirectoryFromCache=e=>{const t=resolveCacheReader(e,g);try{const e=t?.(o),g=parseStoredSnapshot(e);null!==g&&g.length>0&&a.hydrateFromCacheEntries(g)}catch{}finally{i=!0}},saveDirectorySnapshot=e=>{I(resolveCacheWriter(e,n))},subscribePersistence=e=>{const t=resolveCacheWriter(e,n);if(s?.(),s=null,l=!1,c=!0,"function"!=typeof t||"function"!=typeof a.subscribePlayerDirectory)return c=!1,()=>{};const scheduleSave=()=>{c&&!l&&(l=!0,tr(()=>{l=!1,c&&saveDirectorySnapshot(t)}))};return s=a.subscribePlayerDirectory(scheduleSave),()=>{c=!1,s?.(),s=null}},refreshDirectoryFromRemote=async(e,t)=>{try{const g=await e.hydrateDirectory(),n=Array.isArray(g?.entries)?g.entries.length:0;recordDiagnostic({channel:"remote",action:"hydrateDirectory",status:g?.remoteStatus??qn.UNAVAILABLE,detail:{ok:!0===g?.ok,entryCount:n}}),g.ok&&Array.isArray(g.entries)&&g.entries.length>0&&(a.hydrateFromRemoteEntries(g.entries),saveDirectorySnapshot(t))}catch{recordDiagnostic({channel:"remote",action:"hydrateDirectory",status:qn.UNAVAILABLE,detail:{ok:!1,exception:!0}})}},reset=()=>{i=!1,l=!1,c=!1,s?.(),s=null,C.resetPlayerDirectoryDiagnostics?.()};return Object.freeze({destroy:reset,isDirectorySeeded,refreshDirectoryFromRemote,reset,resetSeededFlag,saveDirectorySnapshot,subscribePersistence,warmDirectoryFromCache})},gr=createPlayerDirectoryLifecycle(),isDirectorySeeded=()=>gr.isDirectorySeeded(),ACHAEA_CHARACTER_URL=e=>`https://api.achaea.com/characters/${e.toLowerCase()}.json`,nr=Object.freeze({OK:"ok",AUTHORITATIVE_FAILURE:"authoritative_failure",TRANSIENT_FAILURE:"transient_failure"}),fetchPublicProfileForSync=async(e,{fetchFn:t=null}={})=>{if("function"!=typeof t)return{outcome:nr.TRANSIENT_FAILURE,data:null};try{const g=await t(ACHAEA_CHARACTER_URL(e),{method:"GET",cache:"no-store"});if(!g.ok)return{outcome:g.status>=500?nr.TRANSIENT_FAILURE:nr.AUTHORITATIVE_FAILURE,data:null};const n=await g.json();return{outcome:nr.OK,data:n}}catch{return{outcome:nr.TRANSIENT_FAILURE,data:null}}},normalizeCrowdsourceCity=(e,t,{getPlayerProfile:g=getPlayerProfile}={})=>{if("Romeo"===t||"Juliet"===t)return"garden";const n="string"==typeof e?.city?e.city:"";if(""===n)return"garden";if("(hidden)"===n.toLowerCase()){const e=g(t)?.city??"";return e&&"(hidden)"!==e?e:"(none)"}return n},createCrowdsourceSyncHandler=({remoteService:e,getSelfName:t=()=>null,getPlayerProfile:g=getPlayerProfile,isSeeded:n=isDirectorySeeded,recordDiagnostic:o=recordPlayerDirectoryDiagnostic,fetchFn:a=null,fetchProfileForSync:C=e=>fetchPublicProfileForSync(e,{fetchFn:a}),maxConcurrent:I=3})=>{let i=[];const s=new Set,l=[],processOneName=async n=>{const a=t();if(a&&n===a)return;const{outcome:I,data:i}=await C(n);if(I===nr.OK&&i){const t=normalizeCrowdsourceCity(i,n,{getPlayerProfile:g}),C={...i,city:t};a&&(C.user=a);const I=await e.upsertProfile(C);return void(I?.ok||o({channel:"crowdsource",action:"upsertProfile",status:I?.remoteStatus??"unavailable",name:n}))}if(I===nr.AUTHORITATIVE_FAILURE){o({channel:"crowdsource",action:"publicProfileFetch",status:nr.AUTHORITATIVE_FAILURE,name:n});const t=await e.deleteProfile(n);return void o({channel:"crowdsource",action:"deleteProfile",status:t?.remoteStatus??"unavailable",name:n,detail:{ok:!0===t?.ok}})}o({channel:"crowdsource",action:"publicProfileFetch",status:nr.TRANSIENT_FAILURE,name:n})},drainQueue=()=>{for(;s.size<I&&l.length>0;){const e=l.shift();e&&!s.has(e)&&(s.add(e),processOneName(e).finally(()=>{s.delete(e),drainQueue()}))}},enqueue=e=>{for(const t of e)s.has(t)||l.includes(t)||l.push(t);drainQueue()};return e=>{if(!n())return;if(!Array.isArray(e))return;const t=e.map(e=>"string"==typeof e?.name?e.name.trim():"").filter(Boolean),g=t.filter(e=>!i.includes(e));i=[...t],g.length>0&&enqueue(g)}},isPresent=e=>null!=e&&String(e).length>0,classAttribute=e=>isPresent(e)?` class="${escapeHtml(e)}"`:"",styleAttribute$1=(e={})=>{const t=Object.entries(e??{}).filter(([,e])=>isPresent(e)).map(([e,t])=>`${escapeHtml(e)}:${escapeHtml(t)}`).join(";");return t?` style="${t};"`:""},titleAttribute=e=>isPresent(e)?` title="${escapeHtml(e)}"`:"",span=(e,{className:t=null,style:g=null}={})=>`<span${classAttribute(t)}${styleAttribute$1(g)}>${e}</span>`,textNode=e=>({kind:"text",text:e}),classTextNode=(e,t)=>({kind:"class-text",className:e,text:t}),styledTextNode=(e,{className:t=null,fg:g=null,bg:n=null}={})=>({kind:"styled-text",className:t,text:e,fg:g,bg:n}),relationshipNameNode=e=>({kind:"relationship-name",descriptor:e}),iconBandingNode=({icon:e,colors:t,size:g,children:n})=>({kind:"icon-banding",icon:e,colors:t,size:g,children:n}),rr=Object.freeze({className:"ng-target-format",borderColor:"rgb(255, 0, 0)",boxShadow:"inset 0 0 0 1px rgb(255, 0, 0)",padding:"0 2px"}),or=Object.freeze({ally:Object.freeze({className:"ng-brkt ng-brkt-ally",color:"#ffffff",open:"(",close:")"}),enemy:Object.freeze({className:"ng-brkt ng-brkt-enemy",color:"#ff0000",open:"(",close:")"})}),createRelationshipNameDescriptor=(e,t={})=>{if(!isNonEmptyString(e))return null;const g={family:"inline-name",text:e.trim(),color:t.color??"grey",italic:Boolean(t.isCityEnemy),target:Boolean(t.isTarget),bracket:null,targetStyle:rr};return t.isAlly?g.bracket=or.ally:t.isEnemy&&(g.bracket=or.enemy),g},createPlayerRelationshipDescriptor=(e,t={})=>{if(!isNonEmptyString(e))return null;const g=e.trim(),n=isNonEmptyString(t.targetName)?t.targetName.trim():"",o=Boolean(t.isAlly),a=Boolean(t.isEnemy),C=Boolean(t.isCityEnemy),I=t.isTarget??(!1!==t.targetFormatting&&n.length>0&&n===g);return createRelationshipNameDescriptor(g,{color:t.color??"grey",isAlly:o,isEnemy:a,isCityEnemy:C,isTarget:I})},renderBracket=(e,t)=>`<span class="${e.className}"${styleAttribute$1({color:e.color,"font-weight":"bold"})}>${escapeHtml(t)}</span>`,renderRelationshipNameHtml=e=>{if(!e)return"";const t=`<span${styleAttribute$1({color:e.color,"font-style":e.italic?"italic":null})}>${escapeHtml(e.text)}</span>`,g=e.bracket?[renderBracket(e.bracket,e.bracket.open),t,renderBracket(e.bracket,e.bracket.close)].join(""):t;return e.target?`<span class="${e.targetStyle.className}"${styleAttribute$1({"box-shadow":e.targetStyle.boxShadow??`inset 0 0 0 1px ${e.targetStyle.borderColor}`,padding:e.targetStyle.padding})}>${g}</span>`:g},ar=Object.freeze({original:" ".repeat(8),adjusted:" ".repeat(6)}),Ar=new WeakMap,isAsciiUppercase=e=>{if("string"!=typeof e||0===e.length)return!1;const t=e.charCodeAt(0);return t>=65&&t<=90},isNameCharacter=e=>{if("string"!=typeof e||0===e.length)return!1;if("'"===e||"-"===e)return!0;const t=e.charCodeAt(0);return t>=65&&t<=90||t>=97&&t<=122},extractUniqueWords=e=>{const t="string"==typeof e?e.match(/[A-Z][A-Za-z'-]*/g):null;return t?[...new Set(t)]:[]},resolveDescriptorFactory=({createDescriptor:e,relationshipFormatter:t}={})=>"function"==typeof e?e:"function"==typeof t?t:"function"==typeof t?.createDescriptor?t.createDescriptor:null,resolveCompiledHighlighter=e=>{const t=e?.compiledHighlighter;return t&&Array.isArray(t.namesByLength)&&t.entries instanceof Map&&0!==t.entries.size?t:null},getCompiledInitialCharacters=e=>{const t=Ar.get(e);if(t)return t;const g=new Set;return e.entries.forEach((e,t)=>{"string"==typeof t&&t.length>0&&g.add(t.charAt(0))}),Ar.set(e,g),g},hasPotentialCompiledMatch=(e,t)=>{if("string"!=typeof e||0===e.length)return!1;const g=getCompiledInitialCharacters(t);for(let n=0;n<e.length;n+=1)if(g.has(e.charAt(n)))return!0;return!1},resolvePossessiveBaseName=(e,t)=>{if("string"!=typeof e||!(t instanceof Map))return null;const g=e.endsWith("'s")||e.endsWith("'S")?2:e.endsWith("'")?1:0;if(0===g)return null;const n=e.slice(0,e.length-g);return t.has(n)?n:null},applyCompiledHighlighting=(e,t,g)=>{if(!hasPotentialCompiledMatch(e.text(),t))return!1;const n=e.formatted();if("string"!=typeof n||0===n.length)return!1;let o=0,a=0,C=null,I=!1;for(;o<n.length;){const e=n.charAt(o);if("<"===e){const e=n.indexOf(">",o+1);if(-1===e)break;o=e+1;continue}if(!isAsciiUppercase(e)){o+=1;continue}let i=o+1;for(;i<n.length&&isNameCharacter(n.charAt(i));)i+=1;const s=n.slice(o,i),l=t.entries.has(s)?s:resolvePossessiveBaseName(s,t.entries),c=l?t.entries.get(l):null;c?(null===C?C=[n.slice(0,o)]:C.push(n.slice(a,o)),C.push(c.html),a=o+l.length,o=i,g&&c.adjustsMonospacePadding&&(I=!0)):o=i}if(null===C)return!1;let i=C.join("")+n.slice(a);return I&&(i=i.replace(ar.original,ar.adjusted)),e.formatted=()=>i,!0},buildReplacementMapFromDescriptors=(e,t)=>{const g=new Map;return e.forEach(e=>{const n=t(e);n&&"grey"!==n.color&&g.set(e,{html:renderRelationshipNameHtml(n),bracketed:Boolean(n.bracket),adjustsMonospacePadding:Boolean(n.bracket)})}),g},applyInlineNameHighlighting=(e,{createDescriptor:t,relationshipFormatter:g,monospace:n=!1}={})=>{if(!e||e.nexSkillReplacement||"function"!=typeof e.text||"function"!=typeof e.formatted)return!1;const o=resolveCompiledHighlighter(g);if(o)return applyCompiledHighlighting(e,o,n);const a=resolveDescriptorFactory({createDescriptor:t,relationshipFormatter:g});if(!a)return!1;const C=buildReplacementMapFromDescriptors(extractUniqueWords(e.text()),a);if(0===C.size)return!1;const I=e.formatted();if("string"!=typeof I||0===I.length)return!1;let i=I,s=!1;for(const l of[...C.keys()].sort((e,t)=>t.length-e.length)){const e=C.get(l);e&&i.includes(l)&&(i=i.split(l).join(e.html),n&&e.adjustsMonospacePadding&&(i=i.replace(ar.original,ar.adjusted)),s=!0)}return!!s&&(e.formatted=()=>i,!0)},sortNamesByLengthDesc=(e,t)=>t.length-e.length,normalizeKnownNames=e=>{if(!Array.isArray(e))return[];const t=new Set,g=[];return e.forEach(e=>{const n=ae(e);n&&!t.has(n)&&(t.add(n),g.push(n))}),g},createCompiledInlineHighlighter=({knownNames:e=[],createDescriptor:t}={})=>{const g=new Map,n=normalizeKnownNames(e);return"function"!=typeof t||0===n.length?Object.freeze({namesByLength:Object.freeze([]),entries:g}):(n.forEach(e=>{const n=t(e);n&&"grey"!==n.color&&g.set(e,Object.freeze({html:renderRelationshipNameHtml(n),bracketed:Boolean(n.bracket),adjustsMonospacePadding:Boolean(n.bracket)}))}),Object.freeze({namesByLength:Object.freeze(n.filter(e=>g.has(e)).sort(sortNamesByLengthDesc)),entries:g}))},callPredicate=(e,t)=>{if("function"!=typeof e)return!1;try{return Boolean(e(t))}catch{return!1}},callColorResolver=(e,t)=>{if("function"!=typeof e)return"grey";try{return e(t)??"grey"}catch{return"grey"}},readKnownNames=e=>{if(Array.isArray(e))return e;if("function"!=typeof e)return[];try{const t=e();return Array.isArray(t)?t:[]}catch{return[]}},createRelationshipNameFormatter=(e={})=>{const t=ae(e.targetName),g=!1!==e.allyEnemyFormatting,n=!1!==e.targetFormatting,o=e.getPlayerColorByNormalizedName??e.getPlayerColor,a=e.isAllyPlayerByNormalizedName??e.isAllyPlayer,C=e.isEnemyPlayerByNormalizedName??e.isEnemyPlayer,I=e.isCityEnemyPlayerByNormalizedName??e.isCityEnemyPlayer,i=Array.isArray(e.knownPlayerNames)||"function"==typeof e.getKnownPlayerNames,s=readKnownNames(e.knownPlayerNames??e.getKnownPlayerNames),l=new Set(s.map(ae).filter(Boolean)),createDescriptor=(e,s={})=>{const c=ae(e),u=ae(s.text)||c;if(!c||!u)return null;const d=s.isAlly??(g&&callPredicate(a,c)),p=s.isEnemy??callPredicate(C,c),m=s.isCityEnemy??callPredicate(I,c),h=s.isTarget??(n&&(!i||l.has(c))&&t.length>0&&t===c);return createPlayerRelationshipDescriptor(u,{color:s.color??callColorResolver(o,c),isAlly:d,isEnemy:p,isCityEnemy:m,isTarget:h})},c=createCompiledInlineHighlighter({knownNames:s,createDescriptor});return Object.freeze({compiledHighlighter:c,createDescriptor,renderHtml:(e,t={})=>renderRelationshipNameHtml(createDescriptor(e,t))})},getUiSettings$3=e=>e?.persistenceStore?.getAll?.()?.ui??{},getTargetState$1=e=>e?.stores?.target?.getState?.()??{},Cr=Object.freeze(["allyEnemyFormatting","targetFormatting","targetName","playerDirectory","playerDirectoryVersion","playerRelationships","playerRelationshipsVersion"]),Ir=new WeakMap,ir=null,readModelVersion=e=>{if("function"!=typeof e?.getVersion)return null;try{return e.getVersion()}catch{return null}},createFormatterSignature=(e,t={})=>{const g=getUiSettings$3(e),n=getTargetState$1(e),o=t.playerDirectory??e?.playerDirectory??null,a=t.playerRelationships??e?.playerRelationships??null;return{allyEnemyFormatting:!1!==g.allyEnemyFormatting,targetFormatting:!1!==g.targetFormatting,targetName:ae(t.targetName??(n.isPlayer?n.name:null)??null),playerDirectory:o,playerDirectoryVersion:readModelVersion(o),playerRelationships:a,playerRelationshipsVersion:readModelVersion(a)}},signaturesEqual$1=(e,t)=>null!==e&&null!==t&&Cr.every(g=>Object.is(e[g],t[g])),readCachedFormatter=e=>e&&"object"==typeof e?Ir.get(e)??null:ir,writeCachedFormatter=(e,t)=>e&&"object"==typeof e?(Ir.set(e,t),t):(ir=t,t),createFormatterFromSignature=e=>{const{playerDirectory:t,playerRelationships:g}=e;return createRelationshipNameFormatter({allyEnemyFormatting:e.allyEnemyFormatting,targetFormatting:e.targetFormatting,targetName:e.targetName,getKnownPlayerNames:t?.getKnownPlayerNames?.bind(t),getPlayerColor:t?.getPlayerColor?.bind(t),getPlayerColorByNormalizedName:t?.getPlayerColorByNormalizedName?.bind(t),isAllyPlayer:g?.isAllyPlayer?.bind(g),isAllyPlayerByNormalizedName:g?.isAllyPlayerByNormalizedName?.bind(g),isEnemyPlayer:g?.isEnemyPlayer?.bind(g),isEnemyPlayerByNormalizedName:g?.isEnemyPlayerByNormalizedName?.bind(g),isCityEnemyPlayer:g?.isCityEnemyPlayer?.bind(g),isCityEnemyPlayerByNormalizedName:g?.isCityEnemyPlayerByNormalizedName?.bind(g)})},clearRelationshipNameFormatterCache=e=>{e&&"object"==typeof e?Ir.delete(e):(void 0===e&&(Ir=new WeakMap),ir=null)},createRelationshipNameFormatterFromContext=(e,t={})=>{const g=createFormatterSignature(e,t),n=readCachedFormatter(e);if(signaturesEqual$1(n?.signature??null,g))return n.formatter;const o=createFormatterFromSignature(g);return writeCachedFormatter(e,{signature:g,formatter:o}),o},applyContextInlineNameHighlighting=(e,{contextValue:t=null,monospace:g=!1}={})=>applyInlineNameHighlighting(e,{relationshipFormatter:createRelationshipNameFormatterFromContext(t),monospace:g}),highlightInlineNamesInText=(e,{contextValue:t=null}={})=>{const g={text:()=>e,formatted:()=>e};return applyContextInlineNameHighlighting(g,{contextValue:t})?{content:g.formatted(),isHtml:!0}:{content:e,isHtml:void 0}},sr=deepFreeze([["a CRITICAL","2x"],["CRUSHING","4x"],["OBLITERATING","8x"],["ANNIHILATINGLY","16x"],["WORLD","32x"],["PLANE","64x"],["coalescence of power","MAYA"]]),lr=deepFreeze({"physical cutting":"#708090","physical blunt":"#708090",magical:"#FFFFFF",poison:"#9ACD32",psychic:"#663399",fire:"#8B0000",cold:"#87CEFA",electricity:"#FFD700",asphyxiation:"#D2B48C",raw:"#FFB6C1",unblockable:"#FFB6C1"}),cr=deepFreeze({attack:"orange",battlerage:"yellow",affliction:"red"}),ur=deepFreeze({attainment:"yellow",gear:"plum"}),dr=deepFreeze({eat:{id:"eat",fg:"gold",text:"Eat: ",banding:["{","}"]},smoke:{id:"smoke",fg:"orchid",text:"Smoke: ",banding:["{","}"]},apply:{id:"apply",fg:"aquamarine",text:"Apply: ",banding:["{","}"]},sip:{id:"sip",fg:"HotPink",text:"Sip: ",banding:["{","}"]},focus:{id:"focus",fg:"BlueViolet",text:"Focus",banding:["{","}"]},tattoo:{id:"tattoo",fg:"cornflowerBlue",text:"Tattoo: ",banding:["||","||"]},shield:{id:"shield",fg:"cyan",text:" Shield ",banding:{icon:"shield-cross",colors:["cyan","goldenrod"],size:16}},rebounding:{id:"rebounding",fg:"white",text:" Rebounding ",banding:{icon:"shield-cross",colors:["white","goldenrod"],size:16}},prismatic:{id:"prismatic",fg:"yellow",text:" Prismatic ",banding:{icon:"shield-cross",colors:["goldenrod","white"],size:16}},tree:{id:"tree",fg:"lawngreen",text:" Tree ",banding:{icon:"tree",colors:["green","brown"],size:16}},npcslain:{id:"npcslain",fg:"red",text:" SLAIN ",banding:{icon:"tombstone",colors:["grey","white"],size:18}}}),pr=deepFreeze({id:"default",fg:"grey",text:"Action",bg:"",banding:["[","]"]}),toDamageSlug$1=e=>e.toLowerCase().replace(/\s+/g,"-"),getSkillColor=e=>ur[e]??"orange",getSkillClass=e=>e&&ur[e]?`ng-skill-${e}`:"ng-skill-default",getUserActionDefinition=e=>dr[e]??{...pr,id:e},getUserActionClass=e=>e&&dr[e]?`ng-action-${e}`:"ng-action-default",getDamageClass=e=>e&&void 0!==lr[e]?`ng-dmg-${toDamageSlug$1(e)}`:"ng-dmg-unknown",hpPercentToColor=e=>{if(null==e||!Number.isFinite(e))return"grey";const t=Math.max(0,Math.min(100,e)),g=1.2*t,n=(t<75?50:Math.abs(t-100)/2+25)/100,k=e=>(e+g/30)%12,o=1*Math.min(n,1-n),f=e=>n-o*Math.max(-1,Math.min(k(e)-3,Math.min(9-k(e),1))),toHex=e=>Math.round(255*e).toString(16).padStart(2,"0");return`#${toHex(f(0))}${toHex(f(8))}${toHex(f(4))}`},mr="You",createSegment=(e,t=null,g=!1)=>({text:e,fg:t,bg:null,bold:g}),resolvePatternLength$1=e=>{const t=trimToEmpty(e?.matchType),g=e?.patterns?.[t];return Array.isArray(g)?g.length:0},createNameDescriptor=(e,{relationshipFormatter:t,selfName:g,selfText:n,targetName:o})=>{const a=trimToEmpty(e);return a?"self"===a||g&&a===g?createRelationshipNameDescriptor(n,{color:"lightpink",isTarget:o===a}):"function"==typeof t?.createDescriptor?t.createDescriptor(a,{text:a}):createRelationshipNameDescriptor(a,{color:"grey",isAlly:!1,isEnemy:!1,isCityEnemy:!1,isTarget:o===a}):null},createPreviewSegments=({actor:e,actionLabel:t,actionColor:g,target:n,info:o})=>{const a=[];if(e){const t=e.bracket?`${e.bracket.open}${e.text}${e.bracket.close}`:e.text;a.push(createSegment(t,e.color)),a.push(createSegment(" "))}if(isNonEmptyString(t)&&a.push(createSegment(t.trim(),g,!0)),n){a.push(createSegment(" "));const e=n.bracket?`${n.bracket.open}${n.text}${n.bracket.close}`:n.text;a.push(createSegment(e,n.color))}return isNonEmptyString(o)&&(a.push(createSegment(" ")),a.push(createSegment(`[${toDisplayName(o)}]`,"cadetblue"))),a},createReplacementDescriptor=(e,t,g={})=>{if("nexSkillMatch"!==e&&"nexSkillNpcMatch"!==e)return null;if(!t||"object"!=typeof t||Array.isArray(t))return null;const n=trimToEmpty(g.selfName),o=trimToEmpty(g.selfText)||mr,a=trimToEmpty(g.targetName),C=g.relationshipFormatter,I="nexSkillNpcMatch"===e?"npc":"user",i="user"===I?getUserActionDefinition(t.id):null,s=createNameDescriptor(t.user,{relationshipFormatter:C,selfName:n,selfText:o,targetName:a}),l=createNameDescriptor(t.target,{relationshipFormatter:C,selfName:n,selfText:o,targetName:a}),c=trimToEmpty(t.fullName)||toDisplayName(t.skill||t.id),u="npc"===I?Array.isArray(t.tags)&&t.tags.length>0?t.tags.map(toDisplayName).join(", "):c:trimToEmpty(i?.text)||c,d="npc"===I?"red":i?.fg??getSkillColor(t.skill),p=createPreviewSegments({actor:s,actionLabel:u,actionColor:d,target:l,info:t.info}),m=p.map(e=>e.text).join(""),h=Math.max(resolvePatternLength$1(t)-1,0);return{family:"skill",eventName:e,buffer:"combat",variant:I,id:trimToEmpty(t.id),matchType:trimToEmpty(t.matchType),skill:{id:trimToEmpty(t.skill),name:c,color:getSkillColor(t.skill)},actor:s,target:l,tags:Array.isArray(t.tags)?t.tags.map(trimToEmpty).filter(Boolean):[],info:isNonEmptyString(t.info)?t.info.trim():null,userAction:i,hostMutation:{replaceCurrentLine:!0,companionLineCount:h,tooltipSource:"npc"===I&&Array.isArray(t.tags)&&t.tags.includes("damage")&&"self"===t.target?"health-lost":null},preview:{tag:"npc"===I?"«npc»":"[act]",tagColor:d,text:m,segments:p},metadata:{actionTypeColors:cr,critLabels:sr,damageColors:lr}}},fr=Object.freeze({fg:null,bg:null,bold:!1}),createPlainSegment=e=>({text:e,...fr}),extractName=e=>extractNamedValue(e),createStructuredLine=(e,t,g,n,o,a={})=>({type:"combat"===o?"combat":"system",buffer:o,segments:[createPlainSegment(n)],metadata:{event:e,tag:t,tagColor:g,details:a}}),pickDefined=(e,t=null)=>void 0===e?t:e,resolveSkillReplacementDetails=(e,t)=>{if(!isPlainObject$2(t))return null;const g=isPlainObject$2(t.sourcePayload)?t.sourcePayload:t,n=isPlainObject$2(t.replacement)?t.replacement:createReplacementDescriptor(e,g);return n?{replacement:n,context:t.context??t.replacementContext,crit:pickDefined(t.crit),damage:pickDefined(t.damage),healthLost:Array.isArray(t.healthLost)?t.healthLost:[],tooltip:pickDefined(t.tooltip),originalLine:pickDefined(t.originalLine),matchType:"string"==typeof t.matchType?t.matchType:n.matchType,actorId:"string"==typeof t.actorId?t.actorId:"string"==typeof g.user?g.user.trim():null,targetHpText:pickDefined(t.targetHpText),targetHpPercent:pickDefined(t.targetHpPercent),hpDeltaText:pickDefined(t.hpDeltaText),sourcePayload:g}:null},createSkillReplacementLine=(e,t)=>{const g=resolveSkillReplacementDetails(e,t);if(!g)return null;const{replacement:n}=g,o=n.preview??{};return{type:"replacement",buffer:"system"===n.buffer?"system":"combat",segments:Array.isArray(o.segments)?o.segments:[],metadata:{event:e,tag:"string"==typeof o.tag?o.tag:"",tagColor:"string"==typeof o.tagColor?o.tagColor:null,details:g}}},parsePercent$1=e=>{if(null==e)return null;const t=Number.parseInt(String(e).replace("%",""),10);return Number.isNaN(t)?null:t},extractTargetEventId=e=>{if(!isPlainObject$2(e))return null;const t=e.id??e.target;return"number"==typeof t&&Number.isFinite(t)?String(t):toTrimmedString(t)},extractTargetEventLabel=e=>toTrimmedString(e?.short_desc)??toTrimmedString(e?.name)??toTrimmedString(e?.text)??(extractTargetEventId(e)?`Target ${extractTargetEventId(e)}`:null),getTargetHpValue=e=>e?.hpperc??e?.hpPercent??e?.hp??null,hasNexsysTargetIdentityChange=e=>{const t=isPlainObject$2(e?.changedFields)?e.changedFields:null;return!t||["id","target","text","name","short_desc"].some(e=>Object.prototype.hasOwnProperty.call(t,e))},createTargetLine=(e,t,g)=>createStructuredLine(e,"[Target]","red",g,"combat",{id:extractTargetEventId(t),hpPercent:parsePercent$1(getTargetHpValue(t)),shortDescription:toTrimmedString(t?.short_desc)??toTrimmedString(t?.text)}),parseStreamEventLine=(e,t)=>{switch(e){case"Char.Defences.Add":{const g=extractName(t);return g?createStructuredLine(e,"+def","lawngreen",toDisplayName(g),"system",{name:g,direction:"gained",description:t&&"object"==typeof t&&!Array.isArray(t)?t.desc??null:null}):null}case"Char.Defences.Remove":{const g=extractName(t);return g?createStructuredLine(e,"-def","crimson",toDisplayName(g),"system",{name:g,direction:"lost"}):null}case"Char.Afflictions.Add":{const g=extractName(t);return g?createStructuredLine(e,"+aff","crimson",toDisplayName(g),"system",{name:g,direction:"gained",description:t&&"object"==typeof t&&!Array.isArray(t)?t.desc??null:null}):null}case"Char.Afflictions.Remove":{const g=extractName(t);return g?createStructuredLine(e,"-aff","lawngreen",toDisplayName(g),"system",{name:g,direction:"lost"}):null}case"nexsys4.system.target.changed":{if(!isPlainObject$2(t)||!hasNexsysTargetIdentityChange(t))return null;const g=extractTargetEventLabel(t);return g?createTargetLine(e,t,g):null}case"nexsys4.serverside.aff.priority.set":case"nexsys4.serverside.def.priority.set":{if(!isPlainObject$2(t))return null;const g="string"==typeof t.id&&t.id.trim().length>0?t.id.trim():null,n="number"==typeof t.priority&&Number.isFinite(t.priority)?t.priority:null;return g&&null!=n?createStructuredLine(e,`[Prio] ${n}`,"deepskyblue",toDisplayName(g),"system",{id:g,priority:n,accepted:!0===t.accepted,kind:e.includes(".aff.")?"affliction":"defence"}):null}case"nexSkillMatch":case"nexSkillNpcMatch":return createSkillReplacementLine(e,t);default:return null}},styleAttribute=e=>{const t=Object.entries(e).filter(([,e])=>e);return 0===t.length?"":` style="${t.map(([e,t])=>`${e}: ${t}`).join("; ")}"`},renderChunk=e=>`<span${styleAttribute({color:e.fg,"background-color":e.bg,"font-weight":e.bold?"700":null})}>${escapeHtml(e.text)}</span>`,renderSegmentsHtml=e=>e.map(renderChunk).join(""),resolveTimestamp=e=>e.timestamp??e.metadata?.timestamp??Date.now(),createDisplayLine=({html:e,timestamp:t,isPrompt:g=!1,isMonospace:n=!1,shouldLog:o=!0,buffer:a="main"})=>({id:null,html:e,timestamp:t,isPrompt:g,isMonospace:n,shouldLog:o,buffer:a}),renderStructuredRowHtml=(e,t)=>{const g=e.metadata?.tag??"";return[`<span class="nexgui4-stream-row nexgui4-stream-row--${t}" style="display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: 0.5rem; align-items: baseline;">`,`<span class="nexgui4-stream-row__tag mono"${styleAttribute({color:e.metadata?.tagColor??null})}>${escapeHtml(g)}</span>`,`<span class="nexgui4-stream-row__payload">${renderSegmentsHtml(e.segments)}</span>`,"</span>"].join("")},renderColorLine=e=>{const t=resolveTimestamp(e);return createDisplayLine({html:`<span class="nexgui4-color-line">${renderSegmentsHtml(e.segments)}</span>`,timestamp:t,isPrompt:e.isPrompt??!1,isMonospace:e.isMonospace??!1,shouldLog:e.shouldLog??!0,buffer:"main"})},hasTagList=e=>Array.isArray(e),isPveDamageTags=e=>hasTagList(e)&&e.includes("pve")&&e.includes("damage"),hr=Object.freeze({options:Object.freeze({msgReplace:!0,damageNumbers:!0}),target:Object.freeze({hpText:null,hpPercent:null,hpDeltaText:null}),styles:Object.freeze({getAfflictionStyle:()=>({fg:"grey",bg:null}),resolveCureInfoStyle:(e,t="cadetblue")=>({fg:t,bg:null})}),icons:Object.freeze({dualTone:null})}),capitalize$1=e=>"string"==typeof e&&e.length>0?e.charAt(0).toUpperCase()+e.slice(1):"",getRuntimeStyle=e=>({fg:"string"==typeof e?.fg?e.fg:null,bg:"string"==typeof e?.bg?e.bg:null}),resolveRenderContext=(e={})=>{const t=e.context??e.replacementContext??{};return{options:{...hr.options,...t.options??{}},target:{...hr.target,...t.target??{}},styles:{...hr.styles,...t.styles??{}},icons:{...hr.icons,...t.icons??{}}}},withSeparators=(e,t)=>e.flatMap((e,g)=>0===g?[e]:[t,e]),createTitle=e=>{const t="string"==typeof e.originalLine?e.originalLine:null,g=[t?`Source: ${t}`:null,"string"==typeof e.tooltip?e.tooltip:null].filter(Boolean);return g.length>0?g.join("\n---\n"):null},createActorNodes=e=>e?[relationshipNameNode(e)]:[],createUserActionNodes=(e,t,g)=>{const{id:n,text:o,banding:a}=e,C=[classTextNode(getUserActionClass(n),o)];if(t){const{fg:n,bg:o}=getRuntimeStyle(g.styles.resolveCureInfoStyle?.(t,e.fg));C.push(styledTextNode(capitalize$1(t),{className:"ng-info-text",fg:n??e.fg,bg:o}))}if(Array.isArray(a)){const[e,t]=a;return[classTextNode("ng-brkt",e),...C,classTextNode("ng-brkt",t)]}return[iconBandingNode({icon:a.icon,colors:a.colors,size:a.size,children:C})]},createTargetHpValueNodes=(e,t)=>{const g="number"==typeof e.targetHpPercent?e.targetHpPercent:"number"==typeof t.target.hpPercent?t.target.hpPercent:null,n="string"==typeof e.targetHpText?e.targetHpText:"string"==typeof t.target.hpText?t.target.hpText:null;return null!=g?[styledTextNode(`${g}%`,{fg:hpPercentToColor(g)})]:n?[classTextNode("ng-muted",n)]:[]},createDamageValueNodes=(e,t)=>{const g=e.damage;return g&&"string"==typeof g.damage?[classTextNode(getDamageClass(g.type),g.damage)]:createTargetHpValueNodes(e,t)},createUserSkillAttackNodes=(e,t,g)=>{const{skill:n,info:o,tags:a,target:C}=e,I=[classTextNode("ng-brkt","["),classTextNode(getSkillClass(n.id),n.name),classTextNode("ng-brkt","]")];o&&I.push(textNode(" "),classTextNode("ng-info-text",capitalize$1(o)));const i=isPveDamageTags(a),s="firstPerson"===t.matchType||!t.actorId;if(i){const e="string"==typeof t.crit?t.crit:"Hit",n=s&&g.options.damageNumbers?createDamageValueNodes(t,g):createTargetHpValueNodes(t,g);I.push(classTextNode("ng-crit-separator",`: ${e} `)),n.length>0&&I.push(classTextNode("ng-dmg-bracket","("),...n,classTextNode("ng-dmg-bracket",")"))}return I},createUserActionColumnNodes=(e,t,g)=>{const{userAction:n,info:o}=e;return n&&dr[n.id]?createUserActionNodes(n,o??null,g):createUserSkillAttackNodes(e,t,g)},createNpcActionColumnNodes=(e,t,g)=>{const{tags:n,target:o,skill:a}=e;if(!n||0===n.length)return[classTextNode("ng-muted",a.name)];const C=n.map(e=>{if("damage"===e&&"You"===o?.text)return classTextNode("ng-hp-loss","string"==typeof t.hpDeltaText&&t.hpDeltaText?t.hpDeltaText:"string"==typeof g.target.hpDeltaText&&g.target.hpDeltaText?g.target.hpDeltaText:"-0%");const{fg:n,bg:a}=getRuntimeStyle(g.styles.getAfflictionStyle?.(e));return styledTextNode(capitalize$1(e),{fg:n??"grey",bg:a})});return[classTextNode("ng-npc-bracket","«"),...withSeparators(C,classTextNode("ng-muted",", ")),classTextNode("ng-npc-bracket","»")]},createTargetColumnNodes=(e,t,g)=>{if(!e)return[];const n=relationshipNameNode(e);if(!e.text.includes(" ")||"grey"!==e.color)return[n];const o="number"==typeof t.targetHpPercent?t.targetHpPercent:"number"==typeof g.target.hpPercent?g.target.hpPercent:null,a="string"==typeof t.targetHpText?t.targetHpText:"string"==typeof g.target.hpText?g.target.hpText:null;return null!=o?[classTextNode("ng-dmg-bracket","("),styledTextNode(`${o}%`,{fg:hpPercentToColor(o)}),classTextNode("ng-dmg-bracket",") "),n]:a?[classTextNode("ng-dmg-bracket","("),classTextNode("ng-muted",a),classTextNode("ng-dmg-bracket",") "),n]:[n]},createReplacementViewModel=(e,t={})=>{if(!e||"object"!=typeof e)return null;const g=resolveRenderContext(t),n="npc"===e.variant?createNpcActionColumnNodes(e,t,g):createUserActionColumnNodes(e,t,g);return{family:"skill",eventName:e.eventName,variant:e.variant,layout:"replacement-row",title:createTitle(t),previewText:"string"==typeof e.preview?.text?e.preview.text:"",columns:{actor:createActorNodes(e.actor),action:n,target:createTargetColumnNodes(e.target,t,g)},assets:{dualToneIcons:g.icons.dualTone},metadata:{skillId:e.skill?.id??"",actionId:e.userAction?.id??null,matchType:"string"==typeof t.matchType?t.matchType:e.matchType,actorId:"string"==typeof t.actorId?t.actorId:null,tags:Array.isArray(e.tags)?[...e.tags]:[]}}},yr=new Map,normalizeColors=e=>Array.isArray(e)?1===e.length?[e[0],e[0]]:[e[0]??"currentColor",e[1]??e[0]??"currentColor"]:[e??"currentColor",e??"currentColor"],buildIconHtml=(e,t,g=16,n=null)=>{const o=normalizeColors(t),a=n?.[e];if(!Array.isArray(a))return"";const[C,I,,,i]=a;if(!Array.isArray(i)||i.length<2)return"";const s=`${e}-${o.join(",")}-${g}-${C}-${I}-${i.join("|")}`,l=yr.get(s);if(l)return l;const[c,u]=o,d=['<svg xmlns="http://www.w3.org/2000/svg" class="svg-inline--fa icon" aria-hidden="true" focusable="false"',` style="height:${escapeHtml(String(g))}px; --ng-fill-1:${escapeHtml(c)}; --ng-fill-2:${escapeHtml(u)};"`,` viewBox="0 0 ${escapeHtml(String(C))} ${escapeHtml(String(I))}">`,'<g class="fa-group">',`<path class="ng-icon-fill-1" d="${escapeHtml(i[0])}"></path>`,`<path class="ng-icon-fill-2" d="${escapeHtml(i[1])}"></path>`,"</g>","</svg>"].join("");return yr.set(s,d),d},buildIconBandingHtml=(e,t,g,n,o=null)=>{const a=buildIconHtml(e,t,g,o);return a?`${a}${n}${a}`:`«${n}»`},renderStyledTextNode=e=>span(escapeHtml(e.text),{className:e.className,style:{color:e.fg,"background-color":e.bg}}),renderReplacementHtmlNode=(e,t={})=>{if(!e||"object"!=typeof e)return"";switch(e.kind){case"text":return escapeHtml(e.text);case"class-text":return span(escapeHtml(e.text),{className:e.className});case"styled-text":return renderStyledTextNode(e);case"relationship-name":return renderRelationshipNameHtml(e.descriptor);case"icon-banding":return buildIconBandingHtml(e.icon,e.colors,e.size,renderReplacementHtmlNodes(e.children,t),t.dualToneIcons??null);case"group":return renderReplacementHtmlNodes(e.children,t);default:return""}},renderReplacementHtmlNodes=(e,t={})=>Array.isArray(e)?e.map(e=>renderReplacementHtmlNode(e,t)).join(""):"",renderColumn=(e,t)=>`<span class="nexgui4-replacement-row__${t}">${renderReplacementHtmlNodes(e?.columns?.[t],e?.assets)}</span>`,renderReplacementHtml=e=>[`<span class="nexgui4-replacement-row"${titleAttribute(e?.title)}>`,'<span class="nexgui4-replacement-row__buffer"></span>',renderColumn(e,"actor"),renderColumn(e,"action"),renderColumn(e,"target"),"</span>"].join(""),colorText=(e,t)=>e?span(escapeHtml(t),{style:{color:e}}):escapeHtml(t),renderFallbackPreviewHtml=e=>`<span class="nexgui4-replacement-row">${Array.isArray(e.segments)?e.segments.map(e=>e.fg?colorText(e.fg,e.text):escapeHtml(e.text)).join(""):""}</span>`,generateReplacementHtml=(e,t={})=>renderReplacementHtml(createReplacementViewModel(e,t)),renderReplacementLine=e=>{const t=resolveTimestamp(e),g=e.metadata?.details??{},n=g.replacement??null;return createDisplayLine({html:n?generateReplacementHtml(n,g):renderFallbackPreviewHtml(e),timestamp:t,isPrompt:!1,isMonospace:!1,shouldLog:e.shouldLog??!0,buffer:"system"===e.buffer?"system":"combat"})},br=/^Health lost: (\d+) \((.+?)\)\.$/,vr=/^Damage dealt: (\d+) \((.+?)\)\.$/,xr=Object.freeze({crit:null,damage:null,healthLost:Object.freeze([]),tooltip:null,originalLine:null,consumedLineIndexes:Object.freeze([])}),getLineText=e=>e?"function"==typeof e.parsed_line?.text?e.parsed_line.text():"string"==typeof e.line?e.line:"":"",resolvePatternLength=e=>{const t="string"==typeof e.matchType?e.matchType.trim():"",g=e.patterns?.[t];return Array.isArray(g)?g.length:0},isPveDamageAction=e=>isPveDamageTags(e.tags),isNpcDamageToSelf=e=>Array.isArray(e.tags)&&e.tags.includes("damage")&&"self"===e.target,isFirstPersonOrActorless=e=>"firstPerson"===("string"==typeof e.matchType?e.matchType.trim():"")||("string"==typeof e.user?0===e.user.trim().length:!e.user),shouldCollectDamageDealt=(e,t)=>Boolean(t?.damageNumbers)&&isFirstPersonOrActorless(e),collectCrit=(e,t)=>{const g=getLineText(e?.[t]);for(const[n,o]of sr)if(g.includes(n))return{crit:o,consumedLineIndex:t};return{crit:"Hit",consumedLineIndex:null}},collectDamageDealt=(e,t)=>{const g=getLineText(e?.[t]).match(vr);return g?{damage:g[1],type:g[2],consumedLineIndex:t}:null},collectHealthLost=(e,t)=>{if(!Array.isArray(e))return{healthLost:[],consumedLineIndexes:[]};const g=[],n=[];for(let o=t;o<e.length-1;o++){const t=getLineText(e[o]).match(br);t&&(g.push({damage:t[1],type:t[2]}),n.push(o))}return{healthLost:g,consumedLineIndexes:n}},collectReplacementSideData=(e,t,g,n={})=>{if(!e||"object"!=typeof e||Array.isArray(e)||!Array.isArray(t)||!g||"number"!=typeof g.index)return{...xr,healthLost:[],consumedLineIndexes:[]};const o=e,a=new Set,C=getLineText(g)||null,I=resolvePatternLength(o),i=Math.max(I-1,0),s={crit:null,damage:null,healthLost:[],tooltip:null,originalLine:C};for(let l=1;l<=i;l++)a.add(g.index+l);if(isPveDamageAction(o)){const e=g.index+1,C=collectCrit(t,e);if(s.crit=C.crit,null!=C.consumedLineIndex&&a.add(C.consumedLineIndex),shouldCollectDamageDealt(o,n)){const g=collectDamageDealt(t,null!=C.consumedLineIndex?e+1:e);g&&(s.damage={damage:g.damage,type:g.type},a.add(g.consumedLineIndex))}}if(isNpcDamageToSelf(o)){const e=collectHealthLost(t,g.index+1);s.healthLost=e.healthLost,s.tooltip=e.healthLost.length>0?e.healthLost.map(({damage:e,type:t})=>`${e} (${t})`).join("\n"):null,e.consumedLineIndexes.forEach(e=>{a.add(e)})}return{...s,consumedLineIndexes:[...a].filter(e=>e!==g.index).sort((e,t)=>e-t)}},Sr="You",wr="cadetblue",kr=Object.freeze(["contextValue","persistenceStore","persistenceVersion","msgReplace","damageNumbers","selfName","targetName","hpText","hpPercent","hpDeltaText","playerDirectory","playerDirectoryVersion","playerRelationships","playerRelationshipsVersion","allyEnemyFormatting","targetFormatting","afflictionStyles","cureStyles","herbNames","herbMinerals","dualToneIcons"]),Er=null,Rr=null,toNullableString=e=>isNonEmptyString(e)?e.trim():null,parsePercent=e=>{if("number"==typeof e&&Number.isFinite(e))return e;if("string"!=typeof e)return null;const t=e.match(/-?\d+(?:\.\d+)?/),g=t?Number(t[0]):NaN;return Number.isFinite(g)?g:null},getGlobals$1=()=>globalThis,getContextValue$2=()=>getGlobals$1().nexGui?.__contextValue??null,getCharacterState$1=e=>e?.stores?.character?.getState?.()??{},getTargetState=e=>e?.stores?.target?.getState?.()??{},getUiSettings$2=e=>e?.persistenceStore?.getAll?.()?.ui??{},getPersistenceVersion=e=>"function"==typeof e?.persistenceStore?.getVersion?e.persistenceStore.getVersion():null,getModelVersion$2=e=>"function"==typeof e?.getVersion?e.getVersion():null,resolveUiSettings=(e,t)=>null!==t&&Er?.contextValue===e&&Er.persistenceStore===e?.persistenceStore&&Er.persistenceVersion===t?Er.uiSettings:getUiSettings$2(e),normalizeStyle=(e,t)=>({fg:toNullableString(e?.fg)??t,bg:toNullableString(e?.bg)}),createStyleResolvers=()=>({getAfflictionStyle:e=>normalizeStyle(getGlobals$1().nexSys?.prompt?.affAbbrev?.[e]??null,"grey"),resolveCureInfoStyle:(e,t=wr)=>{if(!isNonEmptyString(e))return{fg:t,bg:null};const g=getGlobals$1().nexSys,n=g?.tables?.herb_name_to_herb?.[e]??e,o=g?.prompt?.cureColors?.[n]??g?.prompt?.cureColors?.[g?.tables?.herb_to_mineral?.[n]]??null;return o?normalizeStyle(o,t):{fg:t,bg:null}}}),signaturesEqual=(e,t)=>null!==e&&null!==t&&kr.every(g=>Object.is(e[g],t[g])),readContextInputs=()=>{const e=getGlobals$1(),t=getContextValue$2(),g=resolveUiSettings(t,getPersistenceVersion(t)),n=getPersistenceVersion(t),o=t?.stores?.settings?.getState?.()?.options??g,a=getCharacterState$1(t),C=getTargetState(t),I=e.GMCP?.Target??{},i=e.nexSys??null,s=i?.prompt??null,l=i?.tables??null,c=toNullableString(I.HP)??toNullableString(I.hpperc)??toNullableString(I.lastHP)??toNullableString(C.hpText),u=parsePercent(I.HP??I.hpperc??I.lastHP??C.hpPercent),d=C.isPlayer?toNullableString(C.name):null,p=toNullableString(s?.vars?.diffhp?.text)??("number"==typeof I.hpChange?`${I.hpChange}%`:toNullableString(I.hpChange)),m=Boolean(o.msgReplace),h=Boolean(o.damageNumbers),y=toNullableString(a.name)??toNullableString(e.GMCP?.Char?.Status?.name)??"",b=e.window?.___FONT_AWESOME___?.styles?.fad??null;return{contextValue:t,persistenceStore:t?.persistenceStore??null,persistenceVersion:n,uiSettings:g,msgReplace:m,damageNumbers:h,selfName:y,targetName:d,hpText:c,hpPercent:u,hpDeltaText:p,playerDirectory:t?.playerDirectory??null,playerDirectoryVersion:getModelVersion$2(t?.playerDirectory),playerRelationships:t?.playerRelationships??null,playerRelationshipsVersion:getModelVersion$2(t?.playerRelationships),allyEnemyFormatting:g.allyEnemyFormatting,targetFormatting:g.targetFormatting,afflictionStyles:s?.affAbbrev??null,cureStyles:s?.cureColors??null,herbNames:l?.herb_name_to_herb??null,herbMinerals:l?.herb_to_mineral??null,dualToneIcons:b}},createContextFromInputs=e=>({options:{msgReplace:e.msgReplace,damageNumbers:e.damageNumbers},self:{name:e.selfName,label:Sr},target:{name:e.targetName,hpText:e.hpText,hpPercent:e.hpPercent,hpDeltaText:e.hpDeltaText},styles:createStyleResolvers(),icons:{dualTone:e.dualToneIcons},playerDirectory:e.playerDirectory,playerRelationships:e.playerRelationships,relationshipFormatter:createRelationshipNameFormatterFromContext(e.contextValue,{targetName:e.targetName})}),clearMessageReplacementContextCache=()=>{Er=null,Rr=null},createMessageReplacementContext=()=>{const e=readContextInputs();return signaturesEqual(Er,e)&&Rr?Rr:(Er=e,Rr=createContextFromInputs(e))},getGlobals=()=>globalThis,getHostBlock=()=>getGlobals().nexusclient?.current_block??null,getHostCurrentLine=()=>getGlobals().nexusclient?.current_line??null,createRenderContext=e=>({options:e.options,target:e.target,styles:e.styles,icons:e.icons}),createSkillReplacementPipelinePayload=(e,t,{context:g,sideData:n})=>{const o=createReplacementDescriptor(e,t,{relationshipFormatter:g.relationshipFormatter,selfName:g.self.name,selfText:g.self.label,targetName:g.target.name});return o?{kind:"nexgui4.skillReplacement",sourcePayload:t,replacement:o,context:createRenderContext(g),crit:n.crit,damage:n.damage,healthLost:n.healthLost,tooltip:n.tooltip,originalLine:n.originalLine,matchType:"string"==typeof t.matchType?t.matchType.trim():null,actorId:"string"==typeof t.user?t.user.trim():null,targetHpText:g.target.hpText,targetHpPercent:g.target.hpPercent,hpDeltaText:g.target.hpDeltaText}:null},renderPipelinePayloadForHost=(e,t)=>{const g=parseStreamEventLine(e,t);return g?renderReplacementLine(g).html:null},createSkillReplacementGagHandler=(e,t,{emitReplacement:g}={})=>n=>{if(!e())return;if(!n||"object"!=typeof n||Array.isArray(n))return;const o=n,a=getHostBlock(),C=getHostCurrentLine();if(!a||!C||"number"!=typeof C.index)return;const{index:I}=C,i=createMessageReplacementContext(),s=collectReplacementSideData(o,a,C,i.options),l=createSkillReplacementPipelinePayload(t,o,{context:i,sideData:s});if(!l)return;if(g?.(l),!C.parsed_line)return;const c=renderPipelinePayloadForHost(t,l);c&&(s.consumedLineIndexes.forEach(e=>{const t=a[e];t&&e!==I&&(t.gag=!0)}),C.parsed_line.nexSkillReplacement=!0,C.parsed_line.formatted=()=>c)},getOptions=()=>createMessageReplacementContext().options,isReplacementEnabled=()=>Boolean(getOptions().msgReplace),Tr="nexGui4",normalizeNexGuiClassReflexName=e=>{const t=toTrimmedString(e)?.replace(/\s+/g,"").toLowerCase();return t?`nexGui.${t}`:null},readCurrentHostClassName=(e=globalThis.GMCP)=>toTrimmedString(e?.Char?.Status?.class),runNexGuiClassReflex=(e,{nexusClient:t=globalThis.nexusclient,packageName:g=Tr}={})=>{const n=normalizeNexGuiClassReflexName(e);n&&t?.reflexes?.()?.run_function?.(n,{},g)},runNexGuiClassReflexForCurrentHostClass=(e={})=>runNexGuiClassReflex(readCurrentHostClassName(e.gmcp),e),Mr=new Set(["blindness","deafness","insomnia"]),Pr="https://api.achaea.com/characters.json",passthroughParser=e=>e,resolvePlayerDirectory=e=>e??getDefaultPlayerDirectoryModel(),getContextValue$1=()=>globalThis.nexGui?.__contextValue??null,resolvePlayerRelationships$1=e=>e??getContextValue$1()?.playerRelationships??getDefaultPlayerRelationshipsModel(),resolveFetch=e=>"function"==typeof e?e:"function"==typeof globalThis.fetch?globalThis.fetch.bind(globalThis):null,getUiSettings$1=()=>getContextValue$1()?.persistenceStore?.getAll?.()?.ui??{},getCharacterState=()=>getContextValue$1()?.stores?.character?.getState?.()??{},isLoginTrackerEnabled=()=>Boolean(getUiSettings$1()?.loginTracker),shouldEmitAffliction=e=>{const t=extractNamedValue(e);return!Mr.has(t)},extractChannelPlayerNames=e=>Array.isArray(e)?e.map(e=>e?.name).filter(isNonEmptyString).map(e=>e.trim()):[],fetchActiveCharacterNames=async(e=recordPlayerDirectoryDiagnostic,t=null)=>{if("function"!=typeof t)return e({channel:"presence",action:"charactersListFetch",status:"unavailable",detail:{fetchAvailable:!1}}),[];try{const g=await t(Pr,{cache:"no-store"});if(!g.ok)return e({channel:"presence",action:"charactersListFetch",status:"unavailable",detail:{httpStatus:g.status}}),[];const n=await g.json();return Array.isArray(n?.characters)?n.characters.map(e=>e?.name).filter(isNonEmptyString).map(e=>e.trim()):[]}catch{return e({channel:"presence",action:"charactersListFetch",status:"unavailable",detail:{exception:!0}}),[]}},createLoginTrackerNoticeHtml=(e,t,g,n)=>`<span>${createRelationshipNameFormatterFromContext(getContextValue$1(),{playerDirectory:g,playerRelationships:n}).renderHtml(e)} logged ${t}</span>`,emitBridgeEvent=({eventBus:e,topic:t,sourceEvent:g,payload:n,parser:o=passthroughParser,meta:a})=>{e.emit(t,{event:g,data:o(n),meta:a})},normalizeNexsysTargetChangedPayload=e=>isPlainObject$2(e)&&isPlainObject$2(e.current)?{...e.current,changedFields:isPlainObject$2(e.changedFields)?e.changedFields:{}}:e,Nr=["id","ID"],zr=["Text","text","short_desc"],readTargetField=(e,t)=>{if(!isPlainObject$2(e))return null;for(const g of t)if(Object.prototype.hasOwnProperty.call(e,g)){const t=e[g];return"number"==typeof t&&Number.isFinite(t)?String(t):isNonEmptyString(t)?t.trim():null}return null},createGatedTargetInfoEmitHandler=e=>{let t,g;return n=>{const o=readTargetField(n,Nr),a=readTargetField(n,zr);o===t&&a===g||(t=o,g=a,emitBridgeEvent({eventBus:e,topic:q.TARGET_CHANGED,sourceEvent:"IRE.Target.Info",payload:n,parser:passthroughParser}))}},parseCurrentHostClassChangedPayload=()=>({class:readCurrentHostClassName()}),createEmitHandler=(e,t)=>g=>{t.filter&&!t.filter(g)||(emitBridgeEvent({eventBus:e,topic:t.topic,sourceEvent:t.eventName,payload:g,parser:t.parser,meta:t.meta}),t.afterEmit?.(g))},createSkillReplacementEmitHandler=(e,t)=>createSkillReplacementGagHandler(isReplacementEnabled,t,{emitReplacement:g=>{emitBridgeEvent({eventBus:e,topic:q.STREAM_LINE,sourceEvent:t,payload:g,parser:passthroughParser,meta:{buffer:"combat",sourceModel:"replacement"}})}}),createLoginTrackerHandler=(e,t,g,n,o)=>{let a=[];return async C=>{if(!isLoginTrackerEnabled())return;const I=extractChannelPlayerNames(C),i=await fetchActiveCharacterNames(n,o),s=[...new Set([...I,...i])];if(0===a.length)return void(a=s);const l=[getCharacterState()?.name,globalThis.GMCP?.Char?.Status?.name].find(isNonEmptyString)?.trim(),c=a.filter(e=>!s.includes(e));s.filter(e=>!a.includes(e)).forEach(n=>{n!==l&&e.notice(createLoginTrackerNoticeHtml(n,"in",t,g),{html:!0})}),c.forEach(n=>{n!==l&&e.notice(createLoginTrackerNoticeHtml(n,"out",t,g),{html:!0})}),a=s}},seedCurrentRoomState=e=>{const t=globalThis.GMCP?.Room;isPlainObject$2(t?.Info)&&emitBridgeEvent({eventBus:e,topic:q.ROOM_UPDATED,sourceEvent:"Room.Info",payload:t.Info,parser:passthroughParser}),Array.isArray(t?.Players)&&emitBridgeEvent({eventBus:e,topic:q.ROOM_UPDATED,sourceEvent:"Room.Players",payload:t.Players,parser:passthroughParser})},Or=[{eventName:"nexsys4.system.target.changed",topic:q.TARGET_CHANGED,parser:normalizeNexsysTargetChangedPayload},{eventName:"Room.RemovePlayer",topic:q.ROOM_UPDATED,parser:passthroughParser},{eventName:"Room.Addplayer",topic:q.ROOM_UPDATED,parser:passthroughParser},{eventName:"Room.AddPlayer",topic:q.ROOM_UPDATED,parser:passthroughParser},{eventName:"Room.Players",topic:q.ROOM_UPDATED,parser:passthroughParser},{eventName:"Room.Info",topic:q.ROOM_UPDATED,parser:passthroughParser},{eventName:"Char.Items.List",topic:q.ROOM_UPDATED,parser:passthroughParser},{eventName:"Char.Items.Add",topic:q.ROOM_UPDATED,parser:passthroughParser},{eventName:"Char.Items.Remove",topic:q.ROOM_UPDATED,parser:passthroughParser},{eventName:"Char.Items.Update",topic:q.ROOM_UPDATED,parser:passthroughParser},{eventName:"Char.Defences.Add",topic:q.DEFENCE_GAINED,parser:passthroughParser},{eventName:"Char.Defences.Remove",topic:q.DEFENCE_LOST,parser:passthroughParser},{eventName:"Char.Afflictions.Add",topic:q.STREAM_LINE,parser:passthroughParser,filter:shouldEmitAffliction,meta:{buffer:"system"}},{eventName:"Char.Afflictions.Remove",topic:q.STREAM_LINE,parser:passthroughParser,filter:shouldEmitAffliction,meta:{buffer:"system"}},{eventName:"Char.Vitals",topic:q.STATS_UPDATED,parser:passthroughParser},{eventName:"nexsys4.system.class.changed",topic:q.CLASS_CHANGED,parser:parseCurrentHostClassChangedPayload,afterEmit:()=>runNexGuiClassReflexForCurrentHostClass()},{eventName:"Comm.Channel.Text",topic:q.STREAM_LINE,parser:passthroughParser},{eventName:"Char.Status",topic:q.STATS_UPDATED,parser:passthroughParser},{eventName:"IRE.Misc.Achievement",topic:q.STATS_UPDATED,parser:passthroughParser,meta:{sourceModel:"stats"}},{eventName:"IRE.Time.List",topic:q.STATS_UPDATED,parser:passthroughParser,meta:{sourceModel:"stats"}},{eventName:"nexSkillMatch",topic:q.TIMER_STARTED,parser:passthroughParser,meta:{sourceModel:"timers"}},{eventName:"nexsys4.serverside.aff.priority.set",topic:q.STREAM_LINE,parser:passthroughParser,meta:{buffer:"system"}},{eventName:"nexsys4.serverside.def.priority.set",topic:q.STREAM_LINE,parser:passthroughParser,meta:{buffer:"system"}}],createStartUpGagHandler=e=>function(){e.gagCurrentBlock()},registerGmcpBindings=({adapter:e,eventBus:t,playerDirectory:g,playerDirectoryLifecycle:n,playerRelationships:o,playerDirectoryDiagnostics:a,remoteService:C,fetchFn:I})=>{const i=resolvePlayerDirectory(g),s=resolvePlayerRelationships$1(o),l=a?.recordPlayerDirectoryDiagnostic??recordPlayerDirectoryDiagnostic,c=C??createNullRemotePlayerService(),u=resolveFetch(I),d=[],p=createStartUpGagHandler(e),m=createLoginTrackerHandler(e,i,s,l,u),h=createCrowdsourceSyncHandler({remoteService:c,getPlayerProfile:i.getPlayerProfile,isSeeded:n?.isDirectorySeeded,recordDiagnostic:l,fetchFn:u,getSelfName:()=>[getCharacterState()?.name,globalThis.GMCP?.Char?.Status?.name].find(isNonEmptyString)?.trim()??null});d.push(e.on("nexSkillMatch",createSkillReplacementEmitHandler(t,"nexSkillMatch"))),d.push(e.on("nexSkillNpcMatch",createSkillReplacementEmitHandler(t,"nexSkillNpcMatch")));for(const y of Or){const g=createEmitHandler(t,y);d.push(e.on(y.eventName,g))}return globalThis.nexSys||d.push(e.on("IRE.Target.Info",createGatedTargetInfoEmitHandler(t))),d.push(e.on("Comm.Channel.Players",e=>{i.rememberChannelPlayers(e),h(e)})),d.push(e.on("Comm.Channel.Players",m)),seedCurrentRoomState(t),d.push(e.on("IRE.Time.Update",()=>{e.sendGmcp("IRE.Time.Request")})),d.push(e.on("PromptEvent",p,{id:"nexGuiStartUpGag"})),d.push(e.on("nexGuiLoaded",()=>{e.off("PromptEvent","nexGuiStartUpGag"),e.notice("nexGui loaded using startup spam gag.")},{once:!0})),()=>{for(const e of d)e()}},emitStartupReadySignal=e=>{e.send("echo raiseEvent nexGuiLoaded")},createEventBus=({label:e="nexgui4.eventBus",debugEnabled:t=!1,traceLimit:g=500}={})=>{const n=new Map,o=[],pushTrace=(n,a)=>{const C={at:Date.now(),type:n,detail:a};return o.push(C),o.length>g&&o.splice(0,o.length-g),t&&console.log(`[${e}]`,n,a),C},on=(e,t)=>(n.has(e)||n.set(e,new Set),n.get(e).add(t),()=>off(e,t)),off=(e,t)=>n.get(e)?.delete(t);return{on,off,emit:(e,t)=>{pushTrace(e,t),n.get(e)?.forEach(e=>e(t))},clear:()=>{n.clear(),o.length=0},getTrace:()=>[...o],setDebugEnabled:e=>{t=e}}},joinFontFamily=(...e)=>e.join(", "),Dr=joinFontFamily('"Roboto Mono"',"Consolas","monospace"),jr=Object.freeze([Object.freeze({label:"Roboto Mono",value:Dr}),Object.freeze({label:"Consolas",value:joinFontFamily("Consolas","Monaco","monospace")}),Object.freeze({label:"JetBrains Mono",value:joinFontFamily('"JetBrains Mono"',"Consolas","monospace")}),Object.freeze({label:"Fira Code",value:joinFontFamily('"Fira Code"',"Consolas","monospace")}),Object.freeze({label:"Source Code Pro",value:joinFontFamily('"Source Code Pro"',"Consolas","monospace")}),Object.freeze({label:"Courier New",value:joinFontFamily('"Courier New"',"monospace")})]),normalizeDisplayFontFamily=e=>"string"!=typeof e?Dr:e.trim()||Dr,normalizeDisplayFontSize=(e,t=14)=>{if("number"==typeof e&&Number.isFinite(e)&&e>0)return Math.round(e);if("string"==typeof e){const t=Number.parseFloat(e);if(Number.isFinite(t)&&t>0)return Math.round(t)}return t},readHostDisplayFontFamily=(e={})=>normalizeDisplayFontFamily("function"==typeof e?.get_font_family?e.get_font_family():e?.font_family),readHostDisplayFontSize=(e={})=>normalizeDisplayFontSize(e?.font_size),Lr=1,clonePersistenceValue=e=>Array.isArray(e)?e.map(e=>clonePersistenceValue(e)):isPlainObject$2(e)?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,clonePersistenceValue(t)])):e,normalizeLeafValue=(e,t)=>"boolean"==typeof e?"boolean"==typeof t?t:e:"number"==typeof e?"number"==typeof t&&Number.isFinite(t)?t:e:"string"==typeof e?"string"==typeof t?t:e:clonePersistenceValue(e),applySchemaPatch=(e,t,g)=>{if(isPlainObject$2(g))for(const n of Object.keys(e)){if("version"===n||!Object.hasOwn(g,n))continue;const o=e[n],a=g[n];Array.isArray(o)?t[n]=Array.isArray(a)?clonePersistenceValue(a):clonePersistenceValue(o):isPlainObject$2(o)?applySchemaPatch(o,t[n],a):t[n]=normalizeLeafValue(o,a)}},createSchemaSnapshot=(e,...t)=>{const g=clonePersistenceValue(e);for(const n of t)applySchemaPatch(e,g,n);return Object.hasOwn(e,"version")&&(g.version=e.version),g},Gr="nexGui4Settings",Br=Object.freeze({SETTINGS:"settings",GAME_STATS:"gameStats",UI:"ui"}),Fr=deepFreeze({version:Lr,theme:{backgroundImage:"",fontSize:12,displayFontFamily:Dr,displayFontSize:14,backgroundOpacity:.5,hue:0},ui:{loginTracker:!1,msgReplace:!1,showCombatStream:!1,showSystemStream:!1,logoutDownload:!1,virtualizedLogs:!1,allyEnemyFormatting:!0,targetFormatting:!0,damageNumbers:!0,nativeDisplay:!1},party:{goldCollection:!0,targetCalls:!0,affCalls:!0,callTargets:!1,callAffs:!1,gagChat:!1}}),Wr=deepFreeze({version:Lr,kills:0,month:{deaths:0,goldCap:0,month:0,startingGold:0,startingKills:0,startingXp:0,currentXp:0,xpValue:0,year:0}}),Vr=deepFreeze({version:Lr,scrollbackModal:{width:600,height:400,x:0,y:0}}),normalizePersistenceFragment=(e,t)=>Array.isArray(e)?Array.isArray(t)?clonePersistenceValue(t):clonePersistenceValue(e):isPlainObject$2(e)?createSchemaSnapshot(e,t):normalizeLeafValue(e,t),migrateSettingsPersistence=e=>createSchemaSnapshot(Fr,e),migrateGameStatsPersistence=e=>createSchemaSnapshot(Wr,e),migrateUiPersistence=e=>createSchemaSnapshot(Vr,e),parseStoredValue$1=e=>{if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return e}},isEquivalentValue=(e,t)=>JSON.stringify(e)===JSON.stringify(t),_r="playerDirectory",readRootState=e=>{const t=e.getVariable(Gr);if(!t||"object"!=typeof t||Array.isArray(t))return{rootState:{},changed:void 0!==t};if(!Object.hasOwn(t,_r))return{rootState:t,changed:!1};const{[_r]:g,...n}=t;return{rootState:n,changed:!0}},createPersistenceStore=({adapter:e,sliceKey:t=Br.SETTINGS,schema:g=Fr,migrate:n=migrateSettingsPersistence}={})=>{const o=assertAdapterContract(e);let a=0;const markChanged=()=>{a+=1},assertSchemaKey=e=>{if("string"!=typeof e||"version"===e||!Object.hasOwn(g,e))throw new Error(`[nexGui4] Unknown persistence key "${String(e)}" for slice "${t}"`)},readState=()=>{const{rootState:e,changed:g}=readRootState(o),a=e[t],C=parseStoredValue$1(a),I=n(C);if(g||void 0===a||"string"==typeof a||!isEquivalentValue(C,I)){const g={...e,[t]:I};o.setVariable(Gr,g),markChanged()}return I};return{get:e=>(assertSchemaKey(e),clonePersistenceValue(readState()[e])),set:(e,n)=>{assertSchemaKey(e);const a={...readState(),version:g.version,[e]:normalizePersistenceFragment(g[e],n)},{rootState:C}=readRootState(o),I={...C,[t]:a};return o.setVariable(Gr,I),markChanged(),clonePersistenceValue(a[e])},getAll:()=>clonePersistenceValue(readState()),getVersion:()=>a,reset:()=>{const e=clonePersistenceValue(g),{rootState:n}=readRootState(o),a={...n,[t]:e};return o.setVariable(Gr,a),markChanged(),clonePersistenceValue(e)}}},bindFunction=(e,t)=>"function"==typeof e?.[t]?e[t].bind(e):null,noopTimer=()=>null,noopClearTimer=()=>{},getPublicDualToneIcons=e=>e.window?.___FONT_AWESOME___?.styles?.fad??null,createBrowserRuntimePorts=(e=globalThis)=>Object.freeze({fetch:bindFunction(e,"fetch"),now:()=>Date.now(),setTimeout:bindFunction(e,"setTimeout")??noopTimer,clearTimeout:bindFunction(e,"clearTimeout")??noopClearTimer,setInterval:bindFunction(e,"setInterval")??noopTimer,clearInterval:bindFunction(e,"clearInterval")??noopClearTimer,getPublicDualToneIcons:()=>getPublicDualToneIcons(e)}),freezePhaseList=e=>Object.freeze([...e]),Ur=Object.freeze({INIT:"INIT",PREPARING:"PREPARING",BOOTING:"BOOTING",MOUNTING_UI:"MOUNTING_UI",HYDRATING_LAYOUT:"HYDRATING_LAYOUT",RUNNING:"RUNNING",FAILED:"FAILED",DESTROYED:"DESTROYED"}),Zr=Object.freeze({[Ur.INIT]:freezePhaseList([Ur.PREPARING,Ur.DESTROYED]),[Ur.PREPARING]:freezePhaseList([Ur.BOOTING,Ur.FAILED,Ur.DESTROYED]),[Ur.BOOTING]:freezePhaseList([Ur.MOUNTING_UI,Ur.FAILED,Ur.DESTROYED]),[Ur.MOUNTING_UI]:freezePhaseList([Ur.HYDRATING_LAYOUT,Ur.FAILED,Ur.DESTROYED]),[Ur.HYDRATING_LAYOUT]:freezePhaseList([Ur.RUNNING,Ur.FAILED,Ur.DESTROYED]),[Ur.RUNNING]:freezePhaseList([Ur.FAILED,Ur.DESTROYED]),[Ur.FAILED]:freezePhaseList([Ur.PREPARING,Ur.DESTROYED]),[Ur.DESTROYED]:freezePhaseList([])}),isPhaseTransitionAllowed=(e,t)=>Zr[e]?.includes(t)??!1,Kr=Object.freeze([Ur.PREPARING,Ur.BOOTING,Ur.MOUNTING_UI,Ur.HYDRATING_LAYOUT,Ur.RUNNING]),Hr=3,Yr=250,toErrorMessage=e=>e instanceof Error&&e.message?e.message:"string"==typeof e&&e.length>0?e:"Unknown startup failure",getRetryDelayMs=(e,t)=>t*2**Math.max(0,e-1),createStartupOrchestrator=({adapter:e,eventBus:t,phaseHandlers:g={},maxAttempts:n=Hr,retryDelayMs:o=Yr,setTimeoutFn:a=setTimeout,clearTimeoutFn:C=clearTimeout})=>{let I=Ur.INIT,i=0,s=null,l=null,c=null,u=!1;const getState=()=>({phase:I,attempts:i,lastError:s}),transitionTo=(e,g={})=>{if(!isPhaseTransitionAllowed(I,e))throw new Error(`[nexGui4] Invalid startup phase transition: ${I} -> ${e}`);const n=I;return I=e,t.emit(te.SYSTEM_PHASE,{phase:e,previousPhase:n,attempt:g.attempt??i,...void 0!==g.error?{error:g.error}:{},...void 0!==g.retryDelayMs?{retryDelayMs:g.retryDelayMs}:{},...void 0!==g.permanent?{permanent:g.permanent}:{}}),e===Ur.RUNNING&&t.emit(te.SYSTEM_READY,{phase:e,previousPhase:n,attempt:g.attempt??i}),getState()},clearPendingRetry=()=>{c&&(C(c.timerId),c.resolve(),c=null)},waitForRetry=e=>new Promise(t=>{c={timerId:a(()=>{c=null,t()},e),resolve:t}}),runPhase=async n=>{const o=g[n];"function"==typeof o&&await o({phase:n,attempt:i,adapter:e,eventBus:t})},runAttempt=async()=>{i+=1;try{for(const e of Kr){if(u)return getState();transitionTo(e,{attempt:i}),await runPhase(e)}return s=null,getState()}catch(t){s=t;const g=i<n,a=g?getRetryDelayMs(i,o):0;if(transitionTo(Ur.FAILED,{attempt:i,error:t,...g?{retryDelayMs:a}:{permanent:!0}}),!g)throw e.notice(`[nexGui4] Startup failed after ${i} attempts: ${toErrorMessage(t)}`),t;return await waitForRetry(a),u?getState():runAttempt()}};return{start:()=>l||(u?Promise.reject(new Error("[nexGui4] Cannot start startupOrchestrator after destroy().")):I===Ur.RUNNING?Promise.resolve(getState()):(l=runAttempt().finally(()=>{l=null}),l)),destroy:()=>(I===Ur.DESTROYED||(u=!0,clearPendingRetry(),transitionTo(Ur.DESTROYED,{attempt:i})),getState()),getState}},$r="nexgui4_scrollback",Qr=1,Xr="session_lines",toSortedLines=e=>Array.from(e.values()).sort((e,t)=>e.id-t.id),resolveIndexedDb=e=>void 0!==e?e:globalThis.indexedDB,resolveKeyRange=e=>void 0!==e?e:globalThis.IDBKeyRange,createIndexedDbManager=({dbName:e=$r,dbVersion:t=Qr,storeName:g=Xr,indexedDb:n,keyRange:o,logger:a=null}={})=>{const C=resolveIndexedDb(n),I=resolveKeyRange(o);let i=null,s=null,l=new Map,c=!C||!I,u=!1;const debug=(...e)=>a?.debug?.(...e),warn=(...e)=>a?.warn?.(...e),switchToFallback=e=>{i&&(i.close?.(),i=null),c=!0,warn("[nexGui4] IndexedDB unavailable; using in-memory scrollback storage.",e)},assertActive=()=>{if(u)throw new Error("[nexGui4] IndexedDB manager has been destroyed.")},initialize=()=>(assertActive(),c||i?Promise.resolve():s||(s=new Promise(n=>{let o=!1;const settleWithFallback=e=>{o||(o=!0,s=null,switchToFallback(e),n())},settleWithDb=e=>{o?e?.close?.():(o=!0,i=e,debug("[nexGui4] IndexedDB scrollback storage initialized."),n())};let a;try{a=C.open(e,t)}catch(I){return void settleWithFallback(I)}a.onupgradeneeded=e=>{const t=e.target.result;t.objectStoreNames.contains(g)||t.createObjectStore(g,{keyPath:"id"})},a.onsuccess=e=>{settleWithDb(e.target.result)},a.onerror=e=>{settleWithFallback(e.target.error)},a.onblocked=e=>{settleWithFallback(e)}}),s)),ensureDb=async()=>(assertActive(),c?null:i||(await initialize(),i)),writeBatch=async e=>{if(assertActive(),0===e.length)return;if(c){for(const t of e)l.set(t.id,t);return}const t=await ensureDb();if(!c&&t)return new Promise((n,o)=>{const a=t.transaction([g],"readwrite"),C=a.objectStore(g);a.oncomplete=()=>{n()},a.onerror=e=>{o(e.target.error)},a.onabort=e=>{o(e.target.error)};for(const t of e)C.put(t)});await writeBatch(e)},readRange=async(e,t)=>{if(assertActive(),c)return toSortedLines(l).filter(g=>g.id>=e&&g.id<=t);const n=await ensureDb();return c||!n?readRange(e,t):new Promise((o,a)=>{const C=n.transaction([g],"readonly").objectStore(g),i=I.bound(e,t),s=C.getAll(i);s.onsuccess=()=>{o(s.result)},s.onerror=e=>{a(e.target.error)}})},readIds=async e=>{if(assertActive(),0===e.length)return[];if(c)return e.map(e=>l.get(e)).filter(Boolean);const t=await ensureDb();return c||!t?readIds(e):new Promise((n,o)=>{const a=t.transaction([g],"readonly"),C=a.objectStore(g),I=[];let i=!1;a.oncomplete=()=>{if(i)return;const t=new Map(I.map(e=>[e.id,e]));n(e.map(e=>t.get(e)).filter(Boolean))},a.onerror=e=>{i=!0,o(e.target.error)},a.onabort=e=>{i=!0,o(e.target.error)};for(const t of e){const e=C.get(t);e.onsuccess=()=>{void 0!==e.result&&I.push(e.result)}}})},readAll=async()=>{if(assertActive(),c)return toSortedLines(l);const e=await ensureDb();return c||!e?readAll():new Promise((t,n)=>{const o=e.transaction([g],"readonly").objectStore(g).getAll();o.onsuccess=()=>{t(o.result)},o.onerror=e=>{n(e.target.error)}})},clear=async()=>{if(assertActive(),c)return void l.clear();const e=await ensureDb();if(!c&&e)return new Promise((t,n)=>{const o=e.transaction([g],"readwrite").objectStore(g).clear();o.onsuccess=()=>{t()},o.onerror=e=>{n(e.target.error)}});await clear()},close=()=>{i?.close?.(),i=null,s=null},destroy=()=>{u||(close(),l=new Map,u=!0)};return{initialize,writeBatch,readRange,readIds,readAll,clear,close,destroy,isFallback:()=>c}},Jr=Object.freeze([]),normalizeEntries=e=>(Array.isArray(e)?e:[]).filter(e=>e&&"number"==typeof e.id).map(e=>({...e})),estimateSearchBytes=(e,t)=>2*t+32*e,createScrollbackSessionStore=({storage:e=createIndexedDbManager(),writeBatchSize:t=500,writeDebounceMs:g=$,setTimeoutFn:n=setTimeout,clearTimeoutFn:o=clearTimeout,logger:a=null}={})=>{let C=[],I=null,i=Promise.resolve(),s=[],l=0,c=!1,u=null;const reportAsyncError=e=>{a?.error?.("[nexGui4] Scrollback session operation failed.",e)},assertActive=()=>{if(c)throw new Error("[nexGui4] Scrollback session store has been destroyed.")},cancelFlushTimer=()=>{I&&(o(I),I=null)},enqueueOperation=e=>{const t=i.then(e);return i=t.catch(()=>{}),t},takePendingWrites=()=>{if(cancelFlushTimer(),0===C.length)return Jr;const e=C;return C=[],e},enqueuePendingWrite=()=>{const t=takePendingWrites();return 0===t.length?i:enqueueOperation(()=>e.writeBatch(t))},scheduleFlush=()=>{I||0===C.length||(I=n(()=>{I=null,enqueuePendingWrite().catch(reportAsyncError)},g))},resetSearchRecords=()=>{s=[],l=0},appendSearchRecords=e=>{for(const t of e){const e=stripHtml(t.html).toLowerCase();s.push({id:t.id,isPrompt:Boolean(t.isPrompt),text:e}),l+=e.length}},flush=()=>(assertActive(),enqueuePendingWrite()),readRange=async(t,g)=>(assertActive(),await flush(),enqueueOperation(()=>e.readRange(t,g))),readIds=async t=>(assertActive(),await flush(),Array.isArray(t)&&0!==t.length?enqueueOperation(()=>e.readIds(t)):[]),readAll=async()=>(assertActive(),await flush(),enqueueOperation(()=>e.readAll())),search=async(t,{includePrompts:g=!0}={})=>{assertActive();const n=String(t??"").trim().toLowerCase();if(await flush(),!n)return[];const o=s.filter(e=>g||!e.isPrompt).filter(e=>e.text.includes(n)).map(e=>e.id);return 0===o.length?[]:enqueueOperation(()=>e.readIds(o))};return{initialize:()=>(assertActive(),enqueueOperation(()=>e.initialize?.()??Promise.resolve())),append:e=>{if(c)return;const g=normalizeEntries(e);0!==g.length&&(appendSearchRecords(g),C.push(...g),C.length>=t?enqueuePendingWrite().catch(reportAsyncError):scheduleFlush())},flush,clear:()=>(assertActive(),cancelFlushTimer(),C=[],resetSearchRecords(),enqueueOperation(()=>e.clear())),readRange,readIds,readAll,search,getStats:()=>({pendingCount:C.length,pendingFlushScheduled:Boolean(I),storageFallback:Boolean(e.isFallback?.()),searchLineCount:s.length,searchTextChars:l,estimatedSearchBytes:estimateSearchBytes(s.length,l),writeBatchSize:t,writeDebounceMs:g,destroyed:c}),destroy:()=>{if(u)return u;const t=enqueuePendingWrite();return c=!0,u=t.catch(reportAsyncError).finally(()=>{cancelFlushTimer(),C=[],resetSearchRecords(),"function"==typeof e.destroy?e.destroy():e.close?.()}),u}}},EMPTY_QUERY=async()=>[],NULL_GET=async()=>null,createCdbApi=({query:e=EMPTY_QUERY,get:t=NULL_GET}={})=>Object.freeze({query:t=>e(t),get:e=>t(e)}),createCharacterApi=({characterModel:e=null}={})=>{const getCharacterSnapshot=()=>e?.snapshot?.()??{},t=Object.freeze({get:()=>getCharacterSnapshot().class??"",is:e=>normalizeLookupKey(getCharacterSnapshot().class)===normalizeLookupKey(e)});return Object.freeze({class:t})},EMPTY_ICON_HTML=()=>"",noopNotice=()=>{},createDisplayApi=({playerColor:e=()=>"grey",iconHtml:t=EMPTY_ICON_HTML,notice:g=noopNotice}={})=>{const n="function"==typeof t?t:EMPTY_ICON_HTML,o="function"==typeof g?g:noopNotice;return Object.freeze({playerColor:t=>e(t),iconHtml:(e,t,g)=>n(e,t,g),notice:(e,t)=>o(e,t)})},NOOP$6=()=>{},toFrozenList$1=e=>Object.freeze(Array.isArray(e)?[...e]:[]),createCustomizeApi=({setConfiguredDefences:e=NOOP$6,setClassBalanceType:t=NOOP$6,mountNativeDisplay:g=NOOP$6,unmountNativeDisplay:n=NOOP$6}={})=>{const o=Object.freeze({set:t=>toFrozenList$1(e(t))}),a=Object.freeze({set:e=>t(e)}),C=Object.freeze({mount:()=>{g()},unmount:()=>{n()}});return Object.freeze({defences:o,classBalance:a,nativeDisplay:C})},NOOP$5=()=>!1,toFrozenList=e=>Object.freeze(Array.isArray(e)?[...e]:[]),createLayoutApi=({presetIds:e=[],applyPreset:t=NOOP$5,saveLayout:g=NOOP$5,restoreLayout:n=NOOP$5,hasSavedLayout:o=()=>!1}={})=>{const a=toFrozenList(e);return Object.freeze({list:()=>a,apply:e=>Boolean(t(e)),save:()=>Boolean(g()),restore:()=>Boolean(n()),hasSaved:()=>Boolean(o())})},NOOP$4=()=>({members:[],leader:"",selfName:""}),createPartyApi=({getSnapshot:e=NOOP$4}={})=>{const isMember=t=>{const g=normalizeLookupKey(t);return!!g&&e().members.some(e=>normalizeLookupKey(e)===g)};return Object.freeze({isMember})},toReadOnlySnapshot=e=>e&&"object"==typeof e?deepFreeze(structuredClone(e)):e,createPlayersApi=({getPlayer:e=()=>null,getPlayerColor:t=()=>"grey",refreshPlayer:g=async()=>null,display:n=()=>{},isAlly:o=()=>!1,isEnemy:a=()=>!1,isCityEnemy:C=()=>!1}={})=>{const get=t=>{const g=e(t);return g?toReadOnlySnapshot(g):null},color=e=>t(e),fetch=async t=>{try{const e=await g(t);if(e)return toReadOnlySnapshot(e)}catch{}const n=e(t);return n?toReadOnlySnapshot(n):null},qwFormat=(t,g={})=>{const I=renderQuickWhoHtml((Array.isArray(t)?t:[]).map(t=>{const g="string"==typeof t?t:t?.name;return"string"!=typeof g||""===g.trim()?null:{name:g,city:t&&"object"==typeof t&&null!=t.city?t.city:e(g)?.city,ally:o(g),enemy:a(g),cityEnemy:C(g)}}).filter(Boolean),g);return n(I),I};return Object.freeze({get,color,fetch,qwFormat})},NOOP$3=()=>{},NOOP_LIST=()=>[],NOOP_GET=()=>null,qr=["text","color","background"],normalizeOverride=e=>{if(!e||"object"!=typeof e)return null;const t={};for(const g of qr)"string"==typeof e[g]&&e[g]&&(t[g]=e[g]);return Object.keys(t).length>0?Object.freeze(t):null},createRoomApi=({setItemOverride:e=NOOP$3,removeItemOverride:t=NOOP$3,listItemOverrides:g=NOOP_LIST,getItemOverride:n=NOOP_GET}={})=>{const o=Object.freeze({set:(t,g)=>{const n=normalizeOverride(g);return n?(e(t,n),n):null},remove:e=>{t(e)},get:e=>n(e),list:()=>Object.freeze(g().map(([e,t])=>Object.freeze({name:e,override:t})))});return Object.freeze({items:o})},isTranscriptModel=e=>Boolean(e&&"function"==typeof e.addLines&&"function"==typeof e.getSnapshot),assertHtml=e=>{if("string"!=typeof e||0===e.length)throw new TypeError('api.stream.add requires a non-empty "html" string.')},resolveTargetModel=(e,t,g)=>{if("system"===e)return t;if("combat"===e)return g;throw new RangeError('api.stream.add requires "stream" to be either "system" or "combat".')},toReadOnlyEntry=e=>e?Object.freeze({...e}):null,createStreamApi=({systemStream:e=null,combatStream:t=null,now:g=Date.now}={})=>{const add=({html:n,stream:o}={})=>{assertHtml(n);const a=resolveTargetModel(o,e,t);if(!isTranscriptModel(a))return null;const C=g();return a.addLines([{html:n,timestamp:C,isPrompt:!1,isMonospace:!1,shouldLog:!0,buffer:o}]),toReadOnlyEntry(a.getSnapshot().items.at(-1))};return Object.freeze({add})},NOOP$2=()=>{},normalizeTargetValue=e=>{if(null==e)return null;const t=String(e).trim();return t.length>0?t:null},normalizeTargetLookupKey=e=>null==e?"":normalizeLookupKey(String(e)),createTargetApi=({targetModel:e=null,setTarget:t=NOOP$2}={})=>{const readTarget=()=>e?.read?.()??{};return Object.freeze({get:()=>{const e=readTarget();return{id:e.id??null,name:e.name??null,isPlayer:Boolean(e.isPlayer)}},set:e=>{const g=normalizeTargetValue(e);return t(g),g},is:e=>{const t=normalizeTargetLookupKey(e);if(!t)return!1;const g=readTarget();return normalizeTargetLookupKey(g.id)===t||normalizeTargetLookupKey(g.name)===t}})},createNoopTimerModel=()=>({add:()=>null,clearAll:()=>0,get:()=>null,list:()=>[],remove:()=>null,reset:()=>null,start:()=>null,stop:()=>null}),hasListFilters=e=>"string"==typeof e||null!==e&&"object"==typeof e,resolveGroupId=e=>"string"==typeof e?e:e&&"object"==typeof e&&"string"==typeof e.groupId?e.groupId:null,createTimersApi=({timerModel:e}={})=>{const t=e??createNoopTimerModel(),get=e=>t.get(e),list=e=>{if(!hasListFilters(e))throw new TypeError("api.timers.list requires filters; read nexGui.state.timers.list for the unfiltered snapshot.");return t.list(e)},start=e=>t.start(e),stop=e=>t.stop(e),reset=e=>t.reset(e),remove=e=>t.remove(e),add=(e,g,n="",o)=>t.add(e,g,n,o),clear=e=>{const g=resolveGroupId(e);if(!g)return t.clearAll();const n=t.list({groupId:g});for(const o of n)t.remove(o.id);return n.length};return Object.freeze({add,clear,get,list,remove,reset,start,stop})},toFrozenSnapshot=e=>e&&"object"==typeof e?deepFreeze(structuredClone(e)):e,eo=Object.freeze({name:"",class:"",level:0,gender:null,balance:!1,equilibrium:!1,classBalanceType:null,classBalanceReady:null,currentAffs:Object.freeze([]),limbs:Object.freeze({})}),createCharacterState=({characterModel:e=null}={})=>()=>toFrozenSnapshot(e?.snapshot?.()??eo),createCustomizeState=({getConfiguredDefences:e=()=>[],classBalanceController:t=null}={})=>()=>{const g=e();return toFrozenSnapshot({defences:Array.isArray(g)?g:[],classBalance:t?.getType?.()??null})},to=Object.freeze({members:Object.freeze([]),leader:"",selfName:"",settings:Object.freeze({})}),createPartyState=({partyModel:e=null}={})=>()=>toFrozenSnapshot(e?.snapshot?.()??to),go=Object.freeze(new Map),no=Object.freeze({}),buildDirectoryMap=e=>{const t=e?.getAllPlayerProfiles?.();if(!Array.isArray(t)||0===t.length)return go;const g=new Map;for(const n of t){const e=ae(n?.name);e&&g.set(e,deepFreeze(structuredClone(n)))}return Object.freeze(g)},createPlayersState=({playerDirectory:e=null,cityPalette:t=no}={})=>{const g=t&&"object"==typeof t?deepFreeze(structuredClone(t)):no;let n=null,o=null;const snapshot=()=>{const t=e?.getVersion?.()??null;if(null!==o&&null!==t&&t===n)return o;const a=Object.freeze({directory:buildDirectoryMap(e),cityPalette:g});return n=t,o=a,a};return snapshot},ro=Object.freeze({ref:Object.freeze({id:"",name:""}),items:Object.freeze([]),occupants:Object.freeze({players:Object.freeze([]),npcs:Object.freeze([])})}),createRoomState=({roomModel:e=null}={})=>()=>{const t=e?.snapshot?.();return t?toFrozenSnapshot({ref:{id:t.roomId??"",name:t.roomName??""},items:Array.isArray(t.items)?t.items:[],occupants:{players:Array.isArray(t.players)?t.players:[],npcs:Array.isArray(t.npcs)?t.npcs:[]}}):ro},oo=Object.freeze({instance:Object.freeze({kills:0,goldGained:0,xpPercent:0,xpValue:0,deaths:0,startedAt:0}),session:Object.freeze({kills:0,goldGained:0,xpPercent:0,xpValue:0,deaths:0,startedAt:0}),month:Object.freeze({kills:0,goldGained:0,xpPercent:0,xpValue:0,deaths:0,startedAt:0,goldCap:0,year:0,month:0})}),createStatsState=({playStatsModel:e=null}={})=>()=>toFrozenSnapshot(e?.snapshot?.()??oo),createSystemState=({version:e="",isMounted:t=()=>!1,startupOrchestrator:g=null}={})=>()=>toFrozenSnapshot({version:e,mounted:Boolean(t()),phase:g?.getState?.().phase??"INIT"}),ao=Object.freeze(createEmptyTargetRecord()),createTargetState=({targetModel:e=null}={})=>()=>toFrozenSnapshot(e?.snapshot?.()??ao),createTimersState=({timerModel:e=null}={})=>()=>toFrozenSnapshot({list:e?.list?.()??[]}),composePublicApi=({version:e,startupOrchestrator:t,isMounted:g,character:n,target:o,timerModel:a,players:C,colors:I,display:i,customize:s,layout:l,party:c,room:u,stats:d,stream:p,cdb:m}={})=>{const h=createPlayersApi(C),y=createDisplayApi({playerColor:i?.playerColor??I?.playerColor??h.color,iconHtml:i?.iconHtml??I?.iconHtml,notice:i?.notice??I?.notice}),b={system:createSystemState({version:e,isMounted:g,startupOrchestrator:t}),character:createCharacterState({characterModel:n?.characterModel}),target:createTargetState({targetModel:o?.targetModel}),party:createPartyState({partyModel:c?.partyModel}),room:createRoomState({roomModel:u?.roomModel}),stats:createStatsState({playStatsModel:d?.playStatsModel}),players:createPlayersState({playerDirectory:C?.playerDirectory,cityPalette:I?.cityPalette}),timers:createTimersState({timerModel:a}),customize:createCustomizeState({getConfiguredDefences:s?.getConfiguredDefences,classBalanceController:s?.classBalanceController})},stateSnapshot=()=>Object.freeze({system:b.system(),character:b.character(),target:b.target(),party:b.party(),room:b.room(),stats:b.stats(),players:b.players(),timers:b.timers(),customize:b.customize()}),v=Object.freeze({character:createCharacterApi(n),target:createTargetApi(o),players:h,display:y,colors:y,timers:createTimersApi({timerModel:a}),customize:createCustomizeApi(s),layout:createLayoutApi(l),party:createPartyApi({getSnapshot:c?.getSnapshot}),room:createRoomApi(u),stream:createStreamApi(p),cdb:createCdbApi({query:m?.query,get:m?.get})}),x={};return Object.defineProperty(x,"state",{enumerable:!0,get:stateSnapshot}),Object.defineProperty(x,"api",{value:v,enumerable:!0}),Object.freeze(x)},Ao="feather-pointed",tab=(e,t={})=>({type:"tab",id:e,name:e,component:e,helpText:e,icon:Ao,...t}),hostTab=e=>({type:"tab",...e}),rightBorder=(e={})=>({type:"border",location:"right",...e}),Co={layout:{type:"row",id:"main",children:[{type:"row",id:"#f21df3e7-48ef-48f4-b77d-96a4cfc93903",weight:11.055408908360821,children:[{type:"tabset",id:"container_1",weight:6.080414549807837,children:[tab("nexDefences")]},{type:"tabset",id:"#fc94a4e0-6b58-42b5-826f-6e0c3bec80a7",weight:5.235912529001193,children:[tab("nexTimers")]},{type:"tabset",id:"#3251f844-bd3f-4ebb-aca9-9a4dfe9d0add",weight:5.49476101474438,children:[tab("nexTarget")]},{type:"tabset",id:"#5a449b58-0188-4ab9-9c98-023ed517a477",weight:5.316690055933218,children:[tab("nexStats",{borderWidth:725})]}]},{type:"row",id:"#70e4ecdf-81dc-40c6-b536-b62595eff99b",weight:54.4266284719302,children:[{type:"tabset",id:"#f85f4040-6d4a-49c7-94bd-7244f1a3b32d",weight:11.507047541573453,children:[hostTab({id:"all_comm",name:"All Comm",helpText:"Global Communication Window",component:"all_comm",icon:"message-lines"})]},{type:"tabset",id:"#fdd3f126-a4e3-4f24-9e2b-03b2f25825ec",weight:46.37955039657086,enableDrop:!1,enableTabStrip:!1,active:!0,children:[hostTab({id:"#90968890-c02d-44ac-947a-5651201350c8",component:"center"})]}]},{type:"row",id:"#105ad70c-29c2-4f15-b764-c2c124fd5e36",weight:41.18462928637565,children:[{type:"row",id:"#6c8d384b-ce25-444f-9ece-92e8d7c1c7f4",weight:26.295598569968487,children:[{type:"tabset",id:"#14f8b2aa-bc7c-4e2b-b6cb-b05931394b2a",weight:48.76712328767123,children:[tab("nexFeed")]},{type:"tabset",id:"#887e45a7-0b29-446f-862b-d6dde018fc96",weight:51.23287671232877,children:[tab("nexMetrics")]}]},{type:"row",id:"#64cee95d-aaef-477c-965e-76cdabd2a677",weight:35.830262173583016,children:[{type:"row",id:"#c365b5e0-6c0c-4de0-81f2-872ed286499d",weight:39.93115318416523,children:[{type:"tabset",id:"#01137e43-37f6-4f66-aa8a-b129d202fc29",weight:49.54337899543379,children:[tab("nexItems")]},{type:"tabset",id:"#e4c4c437-aba2-45ff-b168-f72896c253fa",weight:50.45662100456621,children:[tab("nexNpcs")]}]},{type:"tabset",id:"#59491b6a-bab3-415d-8367-25c562f46ae9",weight:60.06884681583477,selected:1,children:[hostTab({id:"map",name:"Map",helpText:"Map",component:"map",icon:"route"}),hostTab({id:"nexMap",name:"nexMap",helpText:"nexMap",component:"nexMap",icon:Ao})]}]},{type:"tabset",id:"#63176cb9-c8b3-452a-afff-1e828d13e678",weight:6.009664560737805,children:[tab("nexPlayers")]},{type:"row",id:"#9e30489f-3eaf-4afe-90f6-23087c97698d",weight:19.364474695710708,children:[{type:"tabset",id:"#688e21f9-7929-4c29-92ce-9a9500c8fb63",weight:34.47319574635062,children:[tab("nexCombat")]},{type:"tabset",id:"#a79f5a9f-83b7-4f6a-b3c9-1c3e5843cc7e",weight:34.83104898939232,children:[tab("nexSystem")]}]}]}]},borders:[rightBorder({size:700,children:[tab("nexOptions",{borderWidth:300}),tab("nexParty",{borderWidth:300})]}),{type:"border",location:"left",children:[]},{type:"border",location:"top",children:[]},{type:"border",location:"bottom",children:[]}]},Io={layout:{type:"row",id:"main",children:[{type:"row",id:"#70e4ecdf-81dc-40c6-b536-b62595eff99b",weight:57.26509774852639,children:[{type:"tabset",id:"#f85f4040-6d4a-49c7-94bd-7244f1a3b32d",weight:17.557736227615205,selected:1,children:[hostTab({id:"map",name:"Map",helpText:"Map",component:"map",icon:"route"}),hostTab({id:"nexMap",name:"nexMap",helpText:"nexMap",component:"nexMap",icon:Ao})]},{type:"row",id:"#bcb4f90b-4716-4f9b-9b22-ffd8741be626",weight:7.090289581370549,children:[{type:"tabset",id:"#b54bf1ab-4145-4041-9e67-8e6b789724b1",weight:11.363636363636363,children:[tab("nexPlayers")]},{type:"tabset",id:"#3df7c443-17f5-406e-9a45-54879deb731e",weight:26.79425837320574,children:[tab("nexNpcs")]},{type:"tabset",id:"#5c7c36a2-9496-4e6f-a1df-c581f898f7ac",weight:36.8421052631579,active:!0,children:[tab("nexItems")]}]},{type:"tabset",id:"#1eaac23b-4eae-486d-8915-90a25f41f9e0",weight:2.6494514015995967,children:[hostTab({id:"all_comm",name:"All Comm",helpText:"Global Communication Window",component:"all_comm",icon:"message-lines"})]},{type:"tabset",id:"#fdd3f126-a4e3-4f24-9e2b-03b2f25825ec",weight:30.58912072755898,enableDrop:!1,enableTabStrip:!1,children:[hostTab({id:"#90968890-c02d-44ac-947a-5651201350c8",component:"center"})]}]}]},borders:[rightBorder({size:700,children:[tab("nexOptions",{borderWidth:300}),tab("nexParty",{borderWidth:300}),tab("nexMetrics"),tab("nexStats",{borderWidth:725}),tab("nexCombat"),tab("nexSystem"),tab("nexTarget"),tab("nexDefences"),tab("nexTimers"),tab("nexFeed")]})]},io=Object.freeze({kDesktop:Co,mobile:Io}),so=Object.freeze(Object.keys(io)),getLayoutPreset=e=>io[e]??null,createCharacterStore=({characterModel:e,eventBus:t})=>{const g=create(()=>({...e.read(),updateCharacter:t=>e.update(t),setClass:t=>e.setClass(t)})),refreshCharacter=()=>{g.setState(e.read())};return t.on(J.CHARACTER_UPDATED,refreshCharacter),t.on(J.CLASS_CHANGED,refreshCharacter),g},createTargetStore=({targetModel:e,eventBus:t})=>{const g=create(()=>({...e.read()})),refreshTarget=()=>{g.setState(e.read())};return t.on(J.TARGET_CHANGED,refreshTarget),g},projectEntries=(e,t)=>e.length===t.length&&e.every((e,g)=>Object.is(e,t[g]))?e:t,createFeedStore=({feedModel:e})=>create((t,g)=>{const refresh=()=>{t({entries:projectEntries(g().entries,e.snapshot())})};return{entries:e.snapshot(),addEntry:t=>{e.add(t),refresh()},addEntries:t=>{if("function"==typeof e.addEntries)e.addEntries(t);else for(const g of t)e.add(g);refresh()},replaceEntries:t=>{if("function"==typeof e.replaceEntries)e.replaceEntries(t);else{e.clear();for(const g of t)e.add(g)}refresh()},clear:()=>{e.clear(),refresh()}}}),createPartyStore=({partyModel:e,eventBus:t})=>{const readParty=()=>e.read?.()??e.snapshot(),g=create(()=>({...readParty(),updateParty:t=>e.update(t),addMember:t=>e.addMember(t),removeMember:t=>e.removeMember(t),setLeader:t=>e.setLeader(t),setSelf:t=>e.setSelf(t),setSetting:(t,g)=>e.setSetting(t,g)})),refreshParty=()=>{g.setState(readParty())};return t.on(J.PARTY_UPDATED,refreshParty),t.on(J.PARTY_MEMBER_LEFT,refreshParty),g},lo=/^You have gained (\d+) experience\.$/,co=/^You have made (\d+) out of 450000 gold this month\.$/,toFiniteNumber=(e,t=null)=>{const g="number"==typeof e?e:"string"==typeof e&&e.trim().length>0?Number(e):NaN;return Number.isFinite(g)?g:t},toInteger=(e,t=null)=>{const g=toFiniteNumber(e,NaN);return Number.isFinite(g)?Math.trunc(g):t},toStatusXp=e=>{if(!e||"object"!=typeof e)return null;const t="string"==typeof e.level?Number.parseInt(e.level,10):toInteger(e.level,null),g=toFiniteNumber("string"==typeof e.xp?e.xp.replace("%",""):e.xp,null);return null==t||null==g?null:t+g/100},makeScope=e=>({kills:0,goldGained:0,xpPercent:0,xpValue:0,deaths:0,startedAt:e}),makeMonthScope=e=>({...makeScope(e),goldCap:0,year:0,month:0}),cloneSnapshot=e=>structuredClone(e),normalizePersistedStats=e=>migrateGameStatsPersistence(e??Wr),createPlayStatsModel=({persistedGameStats:e,now:t=()=>Date.now()}={})=>{const g=t(),n=normalizePersistedStats(e),o=n.month??Wr.month,a=toInteger(o.xpValue??o.xp,0);let C=toInteger(n.kills,0),I=null,i=toFiniteNumber(o.currentXp,null);const s=new Set,l=new Set,c=g,u={instance:{initialized:!1,startingGold:null,startingKills:C,startingXp:null,startedAt:g},session:{initialized:!1,startingGold:null,startingKills:C,startingXp:null,startedAt:g},month:{initialized:toInteger(o.year,0)>0&&toInteger(o.month,0)>0,startingGold:toInteger(o.startingGold,null),startingKills:toInteger(o.startingKills,C),startingXp:toFiniteNumber(o.startingXp,null),startedAt:c}};let d={instance:makeScope(g),session:makeScope(g),month:{...makeMonthScope(c),goldCap:toInteger(o.goldCap,0),year:toInteger(o.year,0),month:toInteger(o.month,0),xpValue:a,deaths:toInteger(o.deaths,0)}};const read=()=>d,updateScope=(e,t)=>{if(!t||"object"!=typeof t)return;const g=d[e],n={...g,...t};Object.keys(t).some(e=>!Object.prototype.hasOwnProperty.call(g,e)||!Object.is(g[e],n[e]))&&(d={...d,[e]:n})},toPersistenceSnapshot=()=>({kills:C,month:{deaths:d.month.deaths,goldCap:d.month.goldCap,month:d.month.month,startingGold:u.month.startingGold??0,startingKills:u.month.startingKills??C,startingXp:u.month.startingXp??0,currentXp:i??0,xpValue:d.month.xpValue,year:d.month.year}}),emitRead=()=>{const e=read();s.forEach(t=>t(e))},emitPersistenceSnapshot=()=>{const e=toPersistenceSnapshot();l.forEach(t=>t(e))},emitChange=({persist:e=!1}={})=>{emitRead(),e&&emitPersistenceSnapshot()},ensureScopeBaseline=e=>{const t=u[e];t.initialized||null==I||(t.initialized=!0,t.startingGold=I,t.startingKills=C,t.startingXp=i>0?i:null)},refreshScope=e=>{const t=u[e];if(!t.initialized||null==t.startingGold||null==I)return;const g={kills:C-t.startingKills,goldGained:I-t.startingGold};null==t.startingXp&&i>0&&(t.startingXp=i),null!=t.startingXp&&i>0&&(g.xpPercent=Number((100*(i-t.startingXp)).toFixed(2))),updateScope(e,g)},refreshAllScopes=()=>{ensureScopeBaseline("instance"),ensureScopeBaseline("session"),ensureScopeBaseline("month"),refreshScope("instance"),refreshScope("session"),refreshScope("month"),emitChange({persist:!0})},incrementXpValue=e=>{!Number.isFinite(e)||e<=0||(updateScope("instance",{xpValue:d.instance.xpValue+e}),updateScope("session",{xpValue:d.session.xpValue+e}),updateScope("month",{xpValue:d.month.xpValue+e}),emitChange({persist:!0}))},setMonthGoldCap=e=>{!Number.isFinite(e)||e<0||(updateScope("month",{goldCap:e}),emitChange({persist:!0}))};return{destroy:()=>{s.clear(),l.clear()},handleAchievement:e=>{if("TotalCreaturesKilled"!==e?.name)return{requestGoldCap:!1};const t=toInteger(e?.value,C);return null!=t&&(C=t,refreshAllScopes()),{requestGoldCap:!0}},handleStatus:e=>{I=toInteger(e?.gold,I),i=toStatusXp(e)??i,refreshAllScopes()},handleTimeList:e=>{const g=toInteger(e?.mon,null),n=toInteger(e?.year,null);if(null!=g){if(g!==d.month.month||null!=n&&n!==d.month.year){const e=t();return u.month={initialized:null!=I&&null!=i,startingGold:I,startingKills:C,startingXp:i,startedAt:e},d={...d,month:{...makeMonthScope(e),year:n??0,month:g}},void emitChange({persist:!0})}updateScope("month",{year:n??d.month.year,month:g}),emitChange({persist:!0})}},processStreamEntries:e=>{Array.isArray(e)&&0!==e.length&&e.forEach(e=>{if(e?.isPrompt)return;const t=stripHtml(e?.html).trim(),g=t.match(lo);if(g)return void incrementXpValue(toInteger(g[1],0));const n=t.match(co);n&&setMonthGoldCap(toInteger(n[1],0))})},read,resetInstance:()=>{const e=t();u.instance={initialized:null!=I&&null!=i,startingGold:I,startingKills:C,startingXp:i,startedAt:e},d={...d,instance:makeScope(e)},emitChange()},snapshot:()=>cloneSnapshot(d),subscribe:e=>(s.add(e),()=>s.delete(e)),subscribePersistence:e=>(l.add(e),()=>l.delete(e)),toPersistenceSnapshot,updateInstance:e=>{updateScope("instance",e),emitChange()},updateMonth:e=>{updateScope("month",e),emitChange()},updateSession:e=>{updateScope("session",e),emitChange()}}},createPlayStatsStore=({playStatsModel:e}={})=>{const t=e??createPlayStatsModel(),g=create(()=>({...t.read(),updateInstance:e=>t.updateInstance(e),updateSession:e=>t.updateSession(e),updateMonth:e=>t.updateMonth(e),resetInstance:()=>t.resetInstance()})),refreshStats=()=>{g.setState(t.read())},n=t.subscribe(refreshStats);return Object.defineProperty(g,"destroy",{value:()=>{n()},enumerable:!1}),g},createRoomStore=({roomModel:e,eventBus:t})=>{const readRoom=()=>e.read?.()??e.snapshot(),g=create(()=>({...readRoom(),updateRoom:t=>e.update(t)})),refreshRoom=()=>{g.setState(readRoom())};return t.on(J.ROOM_UPDATED,refreshRoom),g},createStatsStore=({statsModel:e,eventBus:t})=>{const g=create(()=>({...e.read(),updateStats:t=>e.update(t)})),refreshStats=()=>{g.setState(e.read())};return t.on(J.STATS_UPDATED,refreshStats),g},immerImpl=e=>(t,g,n)=>(n.setState=(e,g,...n)=>t("function"==typeof e?U(e):e,g,...n),e(n.setState,g,n)),uo=immerImpl,po=Object.freeze({purpleGalaxy:"https://cdn.pixabay.com/photo/2018/12/18/22/30/background-3883188_960_720.jpg",blueGalaxy:"https://cdn.pixabay.com/photo/2022/06/08/05/47/stars-7249785_960_720.jpg",orangeGalaxy:"https://cdn.pixabay.com/photo/2015/08/28/11/27/space-911785_960_720.jpg",greenGalaxy:"https://cdn.pixabay.com/photo/2017/08/15/08/23/stars-2643089_960_720.jpg",stars:"https://s3-us-west-2.amazonaws.com/s.cdpn.io/1231630/stars.png",darkForest:"https://i.pinimg.com/originals/44/6e/3b/446e3b79395a287ca32f7977dd83b290.jpg"}),mo=Object.freeze(Object.keys(po)),fo=new Map(Object.entries(po).map(([e,t])=>[t,e])),canonicalizeBackgroundImageValue=e=>{if("string"!=typeof e)return"";const t=e.trim();return t?Object.hasOwn(po,t)?t:fo.get(t)??t:""},resolveBackgroundImageSource=e=>{const t=canonicalizeBackgroundImageValue(e);return po[t]??t},ho=deepFreeze({background:{primary:"#0d0d0d",panel:"#141414",header:"#1a1a1a",modal:"#1e1e1e"},text:{primary:"#FFF5D6",secondary:"#C0B090",muted:"#706050",accent:"#FFD700"},game:{hp:"#e05555",mp:"#5588e0",ep:"#55c055",wp:"#e0a035",nl:"#a055e0",timerActive:"#55aaff",timerCritical:"#ff5533"},spacing:{unit:4},radius:{panel:4,tag:2},theme:{backgroundImage:"",fontSize:12,displayFontFamily:Dr,displayFontSize:14,backgroundOpacity:.5,hue:0},replacement:{bracketAllyColor:"#ffffff",bracketEnemyColor:"#ff0000",targetBorderColor:"rgb(255, 0, 0)",selfNameColor:"lightpink",infoColor:"cadetblue",unknownNameColor:"grey",npcTagBracketColor:"red",damageNumberBracketColor:"#808080"}}),cloneTokens$1=e=>structuredClone(e),mergeTokenPatch=(e,t)=>{const g=cloneTokens$1(e);if(!isPlainObject$2(t))return g;const applyPatch=(e,t)=>{for(const[g,n]of Object.entries(t))void 0!==n&&(Array.isArray(n)?e[g]=structuredClone(n):isPlainObject$2(n)&&isPlainObject$2(e[g])?applyPatch(e[g],n):e[g]=structuredClone(n))};return applyPatch(g,t),g},normalizeThemeTokens=e=>{if(!isPlainObject$2(e))return e;const t={...e};return Object.hasOwn(e,"backgroundImage")&&(t.backgroundImage=canonicalizeBackgroundImageValue(e.backgroundImage)),Object.hasOwn(e,"displayFontFamily")&&(t.displayFontFamily=normalizeDisplayFontFamily(e.displayFontFamily)),Object.hasOwn(e,"displayFontSize")&&(t.displayFontSize=normalizeDisplayFontSize(e.displayFontSize)),{...t}},normalizeTokens=e=>({...e,theme:normalizeThemeTokens(e.theme)}),createThemeStore=({eventBus:e,persistenceStore:t}={})=>{const g=normalizeTokens(mergeTokenPatch(ho,{theme:t&&"function"==typeof t.get?normalizeThemeTokens(t.get("theme")):void 0})),n=create(uo(()=>({tokens:g,updateTokens:g=>{const o=normalizeTokens(mergeTokenPatch(n.getState().tokens,g));t&&"function"==typeof t.set&&t.set("theme",o.theme),n.setState({tokens:o}),e.emit(te.THEME_CHANGED,{tokens:cloneTokens$1(o)})},resetTokens:()=>{const g=cloneTokens$1(ho);t&&"function"==typeof t.set&&t.set("theme",g.theme),n.setState({tokens:g}),e.emit(te.THEME_CHANGED,{tokens:cloneTokens$1(g)})}})));return n},createTimerStore=({timerModel:e,eventBus:t})=>{const readTimers=()=>e.read?.()??e.snapshot(),g=create(()=>({timers:readTimers(),addTimer:(t,g,n="",o)=>e.add(t,g,n,o),removeTimer:t=>e.remove(t),clearAll:()=>e.clearAll()})),refreshTimers=()=>{g.setState({timers:readTimers()})};return t.on(J.TIMER_STARTED,refreshTimers),t.on(J.TIMER_UPDATED,refreshTimers),t.on(J.TIMER_EXPIRED,refreshTimers),t.on(J.TIMER_CLEARED,refreshTimers),g},createUiStore=({persistenceStore:e}={})=>create(uo((t,g)=>({activeTab:{},modalOpen:null,settings:e?.get?.("ui")??{},netflixMode:!1,setActiveTab:(e,g)=>t(t=>{t.activeTab[e]=g}),openModal:e=>t({modalOpen:e}),closeModal:()=>t({modalOpen:null}),setSetting:(n,o)=>{const a={...g().settings,[n]:o};t(e=>{e.settings=a}),e?.set?.("ui",a)},setNetflixMode:e=>t(t=>{t.netflixMode=Boolean(e)})}))),fetchLiveCharacter=async(e,{fetchFn:t=null}={})=>{const g="string"==typeof e?e.trim():"";if(!g)return null;const{outcome:n,data:o}=await fetchPublicProfileForSync(g,{fetchFn:t});if(n!==nr.OK||!o)return null;const a=Jn.safeParse(o);return a.success?a.data:null},createMessageRegistry=()=>{const e=new Map,listTypes=()=>[...e.keys()].sort((e,t)=>e.localeCompare(t));return{register:(t,g)=>(e.set(t,g),g),lookup:t=>e.get(t)??null,listTypes}},yo=["#000000","#800000","#008000","#808000","#000080","#800080","#008080","#c0c0c0","#808080","#ff0000","#00ff00","#ffff00","#0000ff","#ff00ff","#00ffff","#ffffff"],bo=[0,95,135,175,215,255],hex2=e=>e.toString(16).padStart(2,"0"),vo={};for(let zp=0;zp<16;zp++)vo[zp]=yo[zp];for(let zp=16;zp<=231;zp++){const e=zp-16,t=Math.floor(e/36),g=Math.floor(e%36/6),n=e%6,o=bo[t],a=bo[g],C=bo[n];vo[zp]=`#${hex2(o)}${hex2(a)}${hex2(C)}`}for(let zp=232;zp<=255;zp++){const e=8+10*(zp-232);vo[zp]=`#${hex2(e)}${hex2(e)}${hex2(e)}`}var xo=/\x1b\[([0-9;]*)m|([^\x1b]+)/g,stdColor=(e,t)=>vo[t?e+8:e],parseAnsi=e=>{const t=[];let g,n=null,o=null,a=!1;for(xo.lastIndex=0;null!==(g=xo.exec(e));){if(void 0!==g[2]){t.push({text:g[2],fg:n,bg:o,bold:a});continue}const e=g[1],C=0===e.length?[0]:e.split(";").map(Number);let I=0;for(;I<C.length;){const e=C[I];0===e?(n=null,o=null,a=!1):1===e?a=!0:e>=30&&e<=37?n=stdColor(e-30,a):e>=40&&e<=47?o=stdColor(e-40,!1):e>=90&&e<=97?n=vo[e-90+8]:e>=100&&e<=107?o=vo[e-100+8]:38===e&&5===C[I+1]&&void 0!==C[I+2]?(n=vo[C[I+2]]??null,I+=2):48===e&&5===C[I+1]&&void 0!==C[I+2]&&(o=vo[C[I+2]]??null,I+=2),I++}}return t},So=/\x1b\[[0-9;]*m/g,wo=/^\d+h,\s*\d+m,\s*\d+e,\s*\d+w/,parsePromptLine=e=>{const t=e.replace(So,"").trim();return{isPrompt:wo.test(t),text:t}},renderCombatLine=e=>{const t=resolveTimestamp(e);return createDisplayLine({html:renderStructuredRowHtml(e,"combat"),timestamp:t,isPrompt:!1,isMonospace:!1,shouldLog:e.shouldLog??!0,buffer:"combat"})},renderSystemLine=e=>{const t=resolveTimestamp(e);return createDisplayLine({html:renderStructuredRowHtml(e,"system"),timestamp:t,isPrompt:!1,isMonospace:!1,shouldLog:e.shouldLog??!0,buffer:"system"})},ko=Object.freeze({main:renderColorLine,system:renderSystemLine,combat:renderCombatLine,replacement:renderReplacementLine}),isMessageInput=e=>Boolean(e&&"object"==typeof e&&!Array.isArray(e)&&"string"==typeof e.event&&Object.prototype.hasOwnProperty.call(e,"payload")),parseRawLine=(e,t,g)=>{const n=t(e),o=g(e);return{type:"main",buffer:"main",segments:n,metadata:{text:o.text,source:"raw"},isPrompt:o.isPrompt,isMonospace:o.isPrompt,shouldLog:!0}},withTimestamp=(e,t)=>null!=e.timestamp||null!=e.metadata?.timestamp?e:{...e,timestamp:t()},validateDependencies=(e,t,g)=>{if(!e||"function"!=typeof e.addLines)throw new TypeError("createMessagePipeline requires a streamModel with addLines(lines).");if(null!=g&&"function"!=typeof g.addLines)throw new TypeError("createMessagePipeline side transcript models must expose addLines(lines).");if(!t||"function"!=typeof t.register||"function"!=typeof t.lookup)throw new TypeError("createMessagePipeline requires a registry with register(type, renderer) and lookup(type).")},createMessagePipeline=({streamModel:e,registry:t=createMessageRegistry(),parseAnsi:g=parseAnsi,parsePromptLine:n=parsePromptLine,parseStreamEventLine:o=parseStreamEventLine,renderColorLine:a=ko.main,renderCombatLine:C=ko.combat,renderReplacementLine:I=ko.replacement,renderSystemLine:i=ko.system,systemStreamModel:s=null,combatStreamModel:l=null,now:c=Date.now})=>{validateDependencies(e,t,s),validateDependencies(e,t,l),t.register("main",a),t.register("system",i),t.register("combat",C),t.register("replacement",I);const resolveTargetModel=t=>"system"===t?s??e:"combat"===t?l??e:e,renderAndStore=e=>{if(!e)return null;const g=t.lookup(e.type);if(!g)return null;const n=g(withTimestamp(e,c));return resolveTargetModel(n?.buffer??e.buffer).addLines([n]),n};function process(e,t){return"string"==typeof e&&1===arguments.length?renderAndStore(parseRawLine(e,g,n)):"string"==typeof e&&arguments.length>1?renderAndStore(o(e,t)):isMessageInput(e)?renderAndStore(o(e.event,e.payload)):null}return{process,registry:t}},parseLevel=e=>{if("number"==typeof e&&Number.isFinite(e))return e;if("string"!=typeof e)return 0;const t=e.match(/\d+/);return t?Number.parseInt(t[0],10):0},buildVitalsStatsPatch=e=>isPlainObject$2(e)?{hp:{current:toNumber(e.hp),max:toNumber(e.maxhp)},mp:{current:toNumber(e.mp),max:toNumber(e.maxmp)},ep:{current:toNumber(e.ep),max:toNumber(e.maxep)},wp:{current:toNumber(e.wp),max:toNumber(e.maxwp)},nl:{current:toNumber(e.nl),max:toNumber(e.maxnl,100)}}:null,buildVitalsCharacterPatch=e=>isPlainObject$2(e)?{balance:toBooleanFlag(e.bal),equilibrium:toBooleanFlag(e.eq),...buildCharacterDetailPatch(e)??{}}:null,buildStatusSync=e=>{if(!isPlainObject$2(e))return null;const t=toPercent(e.xp),g=toTrimmedString(e.class);return{statsPatch:{gold:toNumber(e.gold),bank:toNumber(e.bank),...null==t?{}:{xp:t,xpToNext:Math.max(0,100-t)}},characterPatch:{...toTrimmedString(e.name)?{name:e.name.trim()}:{},level:parseLevel(e.level),...buildCharacterDetailPatch(e)??{}},className:g,city:toTrimmedString(e.city)}},isBridgeEnvelope=e=>isPlainObject$2(e)&&"string"==typeof e.event&&Object.prototype.hasOwnProperty.call(e,"data"),createGmcpIngressController=({adapter:e,eventBus:t,timerModel:g,streamModel:n,systemStreamModel:o,combatStreamModel:a,statsModel:C,partyModel:I,roomModel:i,characterModel:s,targetModel:l,defenceModel:c,classBalanceController:u,playerDirectory:d,roomOccupantsModel:p=createRoomOccupantsModel({roomModel:i,playerDirectory:d}),partyAutomationModel:m=createPartyAutomationModel({characterModel:s,partyModel:I,playerDirectory:d,sendCommand:t=>e.send(t)})}={})=>{const h=createMessagePipeline({streamModel:n,systemStreamModel:o,combatStreamModel:a}),y=[],subscribe=(e,g)=>{y.push(t.on(e,g))},processDisplayBridge=e=>{isBridgeEnvelope(e)&&h.process(e.event,e.data)};return subscribe(q.STREAM_LINE,e=>{isBridgeEnvelope(e)&&(applyCharacterAfflictionEvent(s,e.event,e.data),m.processEvent(e.event,e.data),processDisplayBridge(e))}),subscribe(q.TIMER_STARTED,e=>{if(!isBridgeEnvelope(e)||"nexSkillMatch"!==e.event)return;if("self"!==e.data?.user)return;const t=toTrimmedString(e.data?.id);if(!t)return;const n=g.get(t);n&&g.start(n.id)}),subscribe(q.DEFENCE_GAINED,e=>{if(!isBridgeEnvelope(e))return;const t=extractNamedValue(e.data);t&&c.gain(t),processDisplayBridge(e)}),subscribe(q.DEFENCE_LOST,e=>{if(!isBridgeEnvelope(e))return;const t=extractNamedValue(e.data);t&&c.lose(t),processDisplayBridge(e)}),subscribe(q.TARGET_CHANGED,e=>{isBridgeEnvelope(e)&&(l.setIdentity(e.data),processDisplayBridge(e))}),subscribe(q.STATS_UPDATED,e=>{if(isBridgeEnvelope(e)){if("Char.Vitals"===e.event){const t=buildVitalsStatsPatch(e.data),g=buildVitalsCharacterPatch(e.data),n=u.updateFromVitals(e.data);t&&C.update(t),(g||n)&&s.update({...g??{},...n??{}})}if("Char.Status"===e.event){const t=buildStatusSync(e.data);if(!t)return;C.update(t.statsPatch),s.update(t.characterPatch),I.setSelf(t.characterPatch.name??e.data?.name),d.rememberPlayerStatus({...e.data,name:t.characterPatch.name??e.data?.name,city:t.city,fullname:e.data?.fullname}),t.className&&s.setClass(t.className)}}}),subscribe(q.ROOM_UPDATED,e=>{isBridgeEnvelope(e)&&p.apply(e.event,e.data)}),subscribe(q.CLASS_CHANGED,e=>{if(!isBridgeEnvelope(e))return;const t=toTrimmedString(e.data?.class)??toTrimmedString(e.data);t&&s.setClass(t)}),Object.freeze({destroy:()=>{y.forEach(e=>e?.())}})},Eo=Object.freeze({}),areDisplayHostSettingsEqual=(e,t)=>e.showPrompts===t.showPrompts&&e.showTimestamps===t.showTimestamps,freezeDisplayHostSettings=e=>Object.freeze(e),readDisplayHostSettings=e=>{const t=e?.()??Eo;return freezeDisplayHostSettings({showPrompts:Boolean(t.show_prompts),showTimestamps:Boolean(t.show_timestamps)})},resolvePayloadSnapshot$2=(e,t)=>{if(!t||"object"!=typeof t||"string"!=typeof t.key)return null;if(!("value"in t))return null;switch(t.key){case"show_prompts":{const g=Boolean(t.value);return g===e.showPrompts?e:freezeDisplayHostSettings({...e,showPrompts:g})}case"single_prompt":{const g=!Boolean(t.value);return g===e.showPrompts?e:freezeDisplayHostSettings({...e,showPrompts:g})}case"show_timestamps":{const g=Boolean(t.value);return g===e.showTimestamps?e:freezeDisplayHostSettings({...e,showTimestamps:g})}default:return null}},createHostDisplaySettingsModel=({eventBus:e,readHostSettings:t})=>{if(!e||"function"!=typeof e.on)throw new Error("createHostDisplaySettingsModel requires an eventBus with on(topic, listener).");if("function"!=typeof t)throw new Error("createHostDisplaySettingsModel requires readHostSettings().");let g=readDisplayHostSettings(t);const n=new Set,notifyListeners=()=>{for(const e of n)e()},commitSnapshot=e=>(!e||areDisplayHostSettingsEqual(g,e)||(g=e,notifyListeners()),g),syncFromHost=()=>commitSnapshot(readDisplayHostSettings(t)),handleHostSettingsChanged=e=>{const t=resolvePayloadSnapshot$2(g,e);t&&commitSnapshot(t)},o=e.on(te.HOST_SETTINGS_CHANGED,handleHostSettingsChanged),a=e.on(te.SYSTEM_PHASE,syncFromHost),subscribe=e=>(n.add(e),()=>{n.delete(e)}),getSnapshot=()=>g,destroy=()=>{o?.(),a?.(),n.clear()};return Object.freeze({destroy,getSnapshot,subscribe})},Ro=Object.freeze({}),areHostSettingsEqual=(e,t)=>e.echo_input===t.echo_input&&e.echo_gmcp===t.echo_gmcp&&e.single_prompt===t.single_prompt&&e.show_timestamps===t.show_timestamps,freezeHostSettings=e=>Object.freeze(e),readHostSettingsFromHost=e=>{const t=e?.()??Ro;return freezeHostSettings({echo_input:Boolean(t.echo_input),echo_gmcp:Boolean(t.echo_gmcp),single_prompt:!Boolean(t.show_prompts),show_timestamps:Boolean(t.show_timestamps)})},resolvePayloadSnapshot$1=(e,t)=>{if(!t||"object"!=typeof t||"string"!=typeof t.key)return null;if(!("value"in t))return null;switch(t.key){case"echo_input":{const g=Boolean(t.value);return g===e.echo_input?e:freezeHostSettings({...e,echo_input:g})}case"echo_gmcp":{const g=Boolean(t.value);return g===e.echo_gmcp?e:freezeHostSettings({...e,echo_gmcp:g})}case"single_prompt":{const g=Boolean(t.value);return g===e.single_prompt?e:freezeHostSettings({...e,single_prompt:g})}case"show_prompts":{const g=!Boolean(t.value);return g===e.single_prompt?e:freezeHostSettings({...e,single_prompt:g})}case"show_timestamps":{const g=Boolean(t.value);return g===e.show_timestamps?e:freezeHostSettings({...e,show_timestamps:g})}default:return null}},createHostSettingsModel=({eventBus:e,readHostSettings:t})=>{if(!e||"function"!=typeof e.on)throw new Error("createHostSettingsModel requires an eventBus with on(topic, listener).");if("function"!=typeof t)throw new Error("createHostSettingsModel requires readHostSettings().");let g=readHostSettingsFromHost(t);const n=new Set,notifyListeners=()=>{for(const e of n)e()},commitSnapshot=e=>(!e||areHostSettingsEqual(g,e)||(g=e,notifyListeners()),g),syncFromHost=()=>commitSnapshot(readHostSettingsFromHost(t)),handleHostSettingsChanged=e=>{const t=resolvePayloadSnapshot$1(g,e);t&&commitSnapshot(t)},o=e.on(te.HOST_SETTINGS_CHANGED,handleHostSettingsChanged),a=e.on(te.SYSTEM_PHASE,syncFromHost),subscribe=e=>(n.add(e),()=>{n.delete(e)}),getSnapshot=()=>g,destroy=()=>{o?.(),a?.(),n.clear()};return Object.freeze({destroy,getSnapshot,subscribe})},To=Object.freeze({}),areHostLayoutsEqual=(e,t)=>e.display_tabstrip===t.display_tabstrip,freezeHostLayout=e=>Object.freeze(e),readHostLayoutFromHost=e=>{const t=e?.()??To;return freezeHostLayout({display_tabstrip:"boolean"!=typeof t.tabSetEnableTabStrip||t.tabSetEnableTabStrip})},resolvePayloadSnapshot=(e,t)=>{if(!t||"object"!=typeof t||"string"!=typeof t.key)return null;if(!("value"in t))return null;if("display_tabstrip"===t.key){const g=Boolean(t.value);return g===e.display_tabstrip?e:freezeHostLayout({...e,display_tabstrip:g})}return null},createHostLayoutModel=({eventBus:e,readHostLayout:t})=>{if(!e||"function"!=typeof e.on)throw new Error("createHostLayoutModel requires an eventBus with on(topic, listener).");if("function"!=typeof t)throw new Error("createHostLayoutModel requires readHostLayout().");let g=readHostLayoutFromHost(t);const n=new Set,notifyListeners=()=>{for(const e of n)e()},commitSnapshot=e=>(!e||areHostLayoutsEqual(g,e)||(g=e,notifyListeners()),g),syncFromHost=()=>commitSnapshot(readHostLayoutFromHost(t)),handleHostSettingsChanged=e=>{const t=resolvePayloadSnapshot(g,e);t?commitSnapshot(t):syncFromHost()},o=e.on(te.HOST_SETTINGS_CHANGED,handleHostSettingsChanged),a=e.on(te.SYSTEM_PHASE,syncFromHost),subscribe=e=>(n.add(e),()=>{n.delete(e)}),getSnapshot=()=>g,destroy=()=>{o?.(),a?.(),n.clear()};return Object.freeze({destroy,getSnapshot,subscribe})},hasPersistenceAdapter=e=>e&&"function"==typeof e.getVariable&&"function"==typeof e.setVariable,createPlayStatsPersistence=({adapter:e}={})=>{if(!hasPersistenceAdapter(e))return null;const t=createPersistenceStore({adapter:e,sliceKey:Br.GAME_STATS,schema:Wr,migrate:migrateGameStatsPersistence});return{read:()=>t.getAll(),write:e=>{t.set("kills",e?.kills??0),t.set("month",e?.month??{})}}},safeUnsubscribe=e=>{"function"==typeof e&&e()},resolveStreamEntries=(e,t)=>{const g=e.getSnapshot(),n=Array.isArray(g?.buffer)?g.buffer:[];if(0===n.length)return{entries:[],lastProcessedStreamId:-1};const o=n.filter(e=>e.id>t);return{entries:o,lastProcessedStreamId:o.length>0?o[o.length-1].id:t}},createPlayStatsController=({adapter:e,now:t,persistence:g=createPlayStatsPersistence({adapter:e}),streamModel:n}={})=>{const o=createPlayStatsModel({persistedGameStats:g?.read?.(),now:t}),a=[];let C=-1,I=!1;if(g&&"function"==typeof g.write&&a.push(o.subscribePersistence(e=>{g.write(e)})),e&&"function"==typeof e.on&&(a.push(e.on("Char.Status",o.handleStatus)),a.push(e.on("IRE.Misc.Achievement",t=>{o.handleAchievement(t)?.requestGoldCap&&"function"==typeof e.send&&e.send("goldcap")})),a.push(e.on("IRE.Time.List",o.handleTimeList))),n&&"function"==typeof n.subscribe&&"function"==typeof n.getSnapshot){const processStreamSnapshot=()=>{const e=resolveStreamEntries(n,C);C=e.lastProcessedStreamId,o.processStreamEntries(e.entries)};a.push(n.subscribe(processStreamSnapshot))}return{destroy:()=>{I||(I=!0,a.splice(0).forEach(safeUnsubscribe))},model:o}},Mo=(0,l.createContext)(null),useNexGui=()=>{const e=(0,l.useContext)(Mo);if(null===e)throw new Error("useNexGui must be used inside NexGuiContext.Provider");return e},NexGuiMountRoot=()=>null,createReactMountLifecycle=({contextValue:e,RootComponent:t=NexGuiMountRoot}={})=>{const n=new Map;let o=!1;const unmountContainer=e=>{const t=n.get(e);t&&(n.delete(e),t.unmount())},mount=a=>{if(o)throw new Error("[nexGui4] Cannot mount a destroyed nexGui instance.");if(!a||"object"!=typeof a||1!==a.nodeType)throw new TypeError("[nexGui4] mount(container) requires a DOM element container.");unmountContainer(a);const C=(0,g.createRoot)(a);return n.set(a,C),C.render((0,l.createElement)(Mo.Provider,{value:e},(0,l.createElement)(t))),{unmount:()=>{unmountContainer(a)}}},destroy=()=>{if(!o){o=!0;for(const e of[...n.keys()])unmountContainer(e)}};return Object.freeze({mount,destroy,isMounted:()=>n.size>0})},NOOP$1=()=>{},normalizeCommand=e=>"function"==typeof e?e:NOOP$1,createPlatformTabsController=()=>{let e=NOOP$1,t=NOOP$1,g=NOOP$1,n=NOOP$1,o=NOOP$1,hasSavedLayout=()=>!1;const resetNativeDisplayCommands=()=>{e=NOOP$1,t=NOOP$1},resetLayoutCommands=()=>{g=NOOP$1,n=NOOP$1,o=NOOP$1,hasSavedLayout=()=>!1};return Object.freeze({mountNativeDisplay:(...t)=>e(...t),unmountNativeDisplay:(...e)=>t(...e),configureNativeDisplayCommands:(g={})=>{const n=normalizeCommand(g.mountNativeDisplay),o=normalizeCommand(g.unmountNativeDisplay);return e=n,t=o,()=>{e===n&&t===o&&resetNativeDisplayCommands()}},resetNativeDisplayCommands,applyLayoutPreset:(...e)=>g(...e),saveLayout:(...e)=>n(...e),restoreLayout:(...e)=>o(...e),hasSavedLayout:(...e)=>hasSavedLayout(...e),configureLayoutCommands:(e={})=>{const t=normalizeCommand(e.applyLayoutPreset),a=normalizeCommand(e.saveLayout),C=normalizeCommand(e.restoreLayout),I="function"==typeof e.hasSavedLayout?e.hasSavedLayout:()=>!1;return g=t,n=a,o=C,hasSavedLayout=I,()=>{g===t&&n===a&&o===C&&hasSavedLayout===I&&resetLayoutCommands()}},resetLayoutCommands})};Z(!1);var Po="1.0.6",resolveRuntimePorts=(e={})=>{const t=createBrowserRuntimePorts(),g=e&&"object"==typeof e?e:{};return Object.freeze({...t,...g})},resolveConfiguredDefenceList=e=>normalizeConfiguredDefenceList(e.getConfiguredDefences?.()),resolveActiveDefenceList=(e,t=[])=>normalizeConfiguredDefenceList(e.getActiveDefences?.(t)),seedInitialDisplayTheme=({adapter:e,persistenceStore:t})=>{if(void 0!==e.getVariable("nexGui4Settings")?.settings)return;const g=e.getHostSettings?.()??{},n=t.get("theme");t.set("theme",{...n,displayFontFamily:readHostDisplayFontFamily(g),displayFontSize:readHostDisplayFontSize(g)})},withRelationshipCommandTracking=(e,t)=>{const g=assertAdapterContract(e);if(!t||"function"!=typeof t.trackRelationshipCommand)return g;const n=Object.create(g),o=g.send.bind(g);return Object.defineProperty(n,"send",{value:e=>(t.trackRelationshipCommand(e),o(e)),enumerable:!0}),assertAdapterContract(n)},resolveAdapter=({adapter:e,playerRelationships:t}={})=>withRelationshipCommandTracking(e??createNexusAdapter(),t),createNexGui=({adapter:e,debugEnabled:t=!1,traceLimit:g=500,autoStart:n=!0,playerDirectory:o,playerRelationships:a,startupPhaseHandlers:C,remoteService:I,runtimePorts:i}={})=>{const s=resolveRuntimePorts(i),l=a??createPlayerRelationshipsModel(),c=resolveAdapter({adapter:e,playerRelationships:l}),u=createEventBus({label:"nexgui4",debugEnabled:t,traceLimit:g}),d=o??createPlayerDirectoryModel({fetchImpl:s.fetch,now:s.now}),p=createPlayerDirectoryDiagnosticsModel({now:s.now}),m=createPlayerDirectoryLifecycle({playerDirectory:d,diagnostics:p}),h=createPlatformTabsController(),y=createHostDisplaySettingsModel({eventBus:u,readHostSettings:()=>c.getHostSettings?.()??{}}),b=createHostSettingsModel({eventBus:u,readHostSettings:()=>c.getHostSettings?.()??{}}),v=createHostLayoutModel({eventBus:u,readHostLayout:()=>c.getHostLayoutSnapshot?.()??{}}),x=createTimerModel({eventBus:u,now:s.now,setTimer:s.setTimeout,clearTimer:s.clearTimeout}),S=createScrollbackSessionStore({storage:createIndexedDbManager(),setTimeoutFn:s.setTimeout,clearTimeoutFn:s.clearTimeout,logger:console}),w=createStreamModel({onAppend:e=>S.append(e),onClear:()=>{S.clear().catch(e=>{console.error("[nexGui4] Failed to clear scrollback session.",e)})}}),E=createTranscriptModel({cap:5e3}),R=createTranscriptModel({cap:5e3}),T=createStatsModel({eventBus:u}),M=createPartyModel({eventBus:u}),P=createRoomModel({eventBus:u}),N=createCharacterModel({eventBus:u}),O=createTargetModel({eventBus:u}),D=createDefenceModel({eventBus:u}),j=createFeedModel({cap:5e3}),L=createClassBalanceController(),G=createRoomOccupantsModel({roomModel:P,playerDirectory:d}),B=createPlayStatsController({adapter:c,streamModel:w,now:s.now}),F=createPartyAutomationModel({characterModel:N,partyModel:M,playerDirectory:d,sendCommand:e=>c.send(e)}),W=resolveConfiguredDefenceList(c),V=resolveActiveDefenceList(c,W);D.replaceAll(V);const U=createPersistenceStore({adapter:c,sliceKey:Br.SETTINGS});seedInitialDisplayTheme({adapter:c,persistenceStore:U});const Z=createPersistenceStore({adapter:c,sliceKey:Br.UI,schema:Vr,migrate:migrateUiPersistence});for(const[q,te]of Object.entries(U.get("party")))M.setSetting(q,te);u.on(te.PARTY_UPDATED,({settings:e})=>{U.set("party",e)});const K=createGmcpIngressController({adapter:c,eventBus:u,timerModel:x,streamModel:w,systemStreamModel:E,combatStreamModel:R,statsModel:T,partyModel:M,roomModel:P,characterModel:N,targetModel:O,defenceModel:D,classBalanceController:L,playerDirectory:d,roomOccupantsModel:G,partyAutomationModel:F}),H=createDefenceStore({defenceModel:D,eventBus:u,configuredDefences:W}),Y=Object.freeze({timers:createTimerStore({timerModel:x,eventBus:u}),stream:w,stats:createStatsStore({statsModel:T,eventBus:u}),party:createPartyStore({partyModel:M,eventBus:u}),room:createRoomStore({roomModel:P,eventBus:u}),character:createCharacterStore({characterModel:N,eventBus:u}),target:createTargetStore({targetModel:O,eventBus:u}),defence:H,theme:createThemeStore({eventBus:u,persistenceStore:U}),ui:createUiStore({persistenceStore:U}),feed:createFeedStore({feedModel:j}),playStats:createPlayStatsStore({playStatsModel:B.model}),systemStream:E,combatStream:R});let $=!1,Q=null;const syncActiveDefencesFromHost=()=>{const e=Y.defence.getState().configuredDefences??[];D.replaceAll(resolveActiveDefenceList(c,e))},scheduleActiveDefenceResync=()=>{null!=Q&&s.clearTimeout(Q),Q=s.setTimeout(()=>{Q=null,$||syncActiveDefencesFromHost()},0)};u.on(q.CLASS_CHANGED,scheduleActiveDefenceResync);const X=registerGmcpBindings({adapter:c,eventBus:u,playerDirectory:d,playerDirectoryLifecycle:m,playerRelationships:l,playerDirectoryDiagnostics:p,remoteService:I,fetchFn:s.fetch}),J={adapter:c,eventBus:u,hostDisplaySettingsModel:y,hostSettingsModel:b,hostLayoutModel:v,playerDirectory:d,playerDirectoryLifecycle:m,playerDirectoryDiagnostics:p,playerRelationships:l,stores:Y,streamModel:w,scrollbackSession:S,persistenceStore:U,scrollbackLayoutStore:Z,platformTabs:h,formatInlineNames:e=>highlightInlineNamesInText(e,{contextValue:J})},ee=createReactMountLifecycle({contextValue:J});let ge=null;const initializeScrollbackSession=async()=>{try{if(await S.initialize(),$)return;await S.clear()}catch(e){if($)return;console.warn("[nexGui4] Scrollback session startup degraded; continuing.",e)}},ne=createStartupOrchestrator({adapter:c,eventBus:u,phaseHandlers:{...C,[Ur.PREPARING]:async e=>{await initializeScrollbackSession(),await(C?.[Ur.PREPARING]?.(e))}},setTimeoutFn:s.setTimeout,clearTimeoutFn:s.clearTimeout}),startRuntime=()=>(ge??=ne.start(),ge.catch(()=>{}),ge),mount=e=>{if($)throw new Error("[nexGui4] Cannot mount a destroyed nexGui instance.");return ee.mount(e)},destroy=()=>{$||($=!0,null!=Q&&(s.clearTimeout(Q),Q=null),ee.destroy(),ne.destroy(),y.destroy(),b.destroy(),v.destroy(),X?.(),K.destroy(),B.destroy(),Y.playStats.destroy?.(),u.emit(te.SYSTEM_DESTROYED,{version:Po}),x.destroy(),j.destroy(),M.destroy(),P.destroy(),T.destroy(),N.destroy(),O.destroy(),D.destroy(),B.model.destroy(),L.destroy(),S.destroy(),m.destroy?.(),d.destroy?.(),l.destroy?.(),clearRelationshipNameFormatterCache(J),clearMessageReplacementContextCache(),h.resetNativeDisplayCommands(),h.resetLayoutCommands(),c.destroy(),u.clear())},re=composePublicApi({version:Po,startupOrchestrator:ne,isMounted:()=>ee.isMounted(),character:{characterModel:N},target:{targetModel:O,setTarget:e=>{c.setTarget(e)}},timerModel:x,players:{playerDirectory:d,getPlayer:d.getPlayerProfile,getPlayerColor:d.getPlayerColor,refreshPlayer:d.refreshPlayerProfile,display:e=>c.displayHtmlLine(e),isAlly:l.isAllyPlayer,isEnemy:l.isEnemyPlayer,isCityEnemy:l.isCityEnemyPlayer},display:{notice:(e,t)=>c.notice(e,t)},colors:{cityPalette:ke,iconHtml:(e,t,g)=>buildIconHtml(e,t,g,s.getPublicDualToneIcons?.()??null)},customize:{getConfiguredDefences:()=>Y.defence.getState().configuredDefences,setConfiguredDefences:e=>(Y.defence.getState().setConfiguredDefences(normalizeConfiguredDefenceList(e)),Y.defence.getState().configuredDefences),classBalanceController:L,setClassBalanceType:e=>{const t=L.setType(e);return N.update(t),L.getType()},mountNativeDisplay:()=>h.mountNativeDisplay(),unmountNativeDisplay:()=>h.unmountNativeDisplay()},layout:{presetIds:so,applyPreset:e=>h.applyLayoutPreset(e),saveLayout:()=>h.saveLayout(),restoreLayout:()=>h.restoreLayout(),hasSavedLayout:()=>h.hasSavedLayout()},party:{partyModel:M,getSnapshot:()=>M.snapshot()},room:{roomModel:P,setItemOverride:setUserRoomItemOverride,removeItemOverride:removeUserRoomItemOverride,listItemOverrides:listUserRoomItemOverrides,getItemOverride:getUserRoomItemOverride},stats:{playStatsModel:B.model},stream:{systemStream:Y.systemStream,combatStream:Y.combatStream},cdb:{query:e=>I?.queryCharacters?.(e)??[],get:e=>fetchLiveCharacter(e,{fetchFn:s.fetch})}}),oe={version:Po,mount,stores:Y,debug:{getEventTrace:()=>u.getTrace(),setDebugEnabled:e=>u.setDebugEnabled(e),stream:{getStats:()=>({...w.getStats(),scrollbackSession:S.getStats()}),getScrollbackStats:()=>S.getStats(),getDbStats:async()=>{try{const e=await S.readAll(),t=S.getStats();return{fallback:t.storageFallback,count:e.length,firstId:e[0]?.id,lastId:e[e.length-1]?.id,scrollbackSession:t}}catch(e){return{error:e.message}}}},playerDirectory:{getSnapshot:()=>p.getPlayerDirectoryDiagnosticsSnapshot()}},destroy};return Object.defineProperty(oe,"state",{enumerable:!0,get:()=>re.state}),Object.defineProperty(oe,"api",{value:re.api,enumerable:!0}),Object.defineProperty(oe,"__contextValue",{value:J,enumerable:!1}),Object.defineProperty(oe,"__start",{value:startRuntime,enumerable:!1}),n&&startRuntime(),oe};function formatMuiErrorMessage(e,...t){const g=new URL(`https://mui.com/production-error/?code=${e}`);return t.forEach(e=>g.searchParams.append("args[]",e)),`Minified MUI error #${e}; visit ${g} for the full message.`}function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var g=arguments[t];for(var n in g)({}).hasOwnProperty.call(g,n)&&(e[n]=g[n])}return e},_extends.apply(null,arguments)}var No=!1;function sheetForTag(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]}function createStyleElement(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}var zo=function(){function StyleSheet(e){var t=this;this._insertTag=function(e){var g;g=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,g),t.tags.push(e)},this.isSpeedy=void 0===e.speedy?!No:e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var e=StyleSheet.prototype;return e.hydrate=function(e){e.forEach(this._insertTag)},e.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(createStyleElement(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var g=sheetForTag(t);try{g.insertRule(e,g.cssRules.length)}catch(n){}}else t.appendChild(document.createTextNode(e));this.ctr++},e.flush=function(){this.tags.forEach(function(e){var t;return null==(t=e.parentNode)?void 0:t.removeChild(e)}),this.tags=[],this.ctr=0},StyleSheet}(),Oo="-ms-",Do="-moz-",jo="-webkit-",Lo="comm",Go="rule",Bo="decl",Fo="@import",Wo="@keyframes",Vo="@layer",_o=Math.abs,Uo=String.fromCharCode,Zo=Object.assign;function hash$2(e,t){return 45^charat(e,0)?(((t<<2^charat(e,0))<<2^charat(e,1))<<2^charat(e,2))<<2^charat(e,3):0}function trim(e){return e.trim()}function match(e,t){return(e=t.exec(e))?e[0]:e}function replace(e,t,g){return e.replace(t,g)}function indexof(e,t){return e.indexOf(t)}function charat(e,t){return 0|e.charCodeAt(t)}function substr(e,t,g){return e.slice(t,g)}function strlen(e){return e.length}function sizeof(e){return e.length}function append(e,t){return t.push(e),e}function combine(e,t){return e.map(t).join("")}var Ko=1,Ho=1,Yo=0,$o=0,Qo=0,Xo="";function node(e,t,g,n,o,a,C){return{value:e,root:t,parent:g,type:n,props:o,children:a,line:Ko,column:Ho,length:C,return:""}}function copy(e,t){return Zo(node("",null,null,"",null,null,0),e,{length:-e.length},t)}function char(){return Qo}function prev(){return Qo=$o>0?charat(Xo,--$o):0,Ho--,10===Qo&&(Ho=1,Ko--),Qo}function next(){return Qo=$o<Yo?charat(Xo,$o++):0,Ho++,10===Qo&&(Ho=1,Ko++),Qo}function peek(){return charat(Xo,$o)}function caret(){return $o}function slice(e,t){return substr(Xo,e,t)}function token(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function alloc(e){return Ko=Ho=1,Yo=strlen(Xo=e),$o=0,[]}function dealloc(e){return Xo="",e}function delimit(e){return trim(slice($o-1,delimiter(91===e?e+2:40===e?e+1:e)))}function whitespace(e){for(;(Qo=peek())&&Qo<33;)next();return token(e)>2||token(Qo)>3?"":" "}function escaping(e,t){for(;--t&&next()&&!(Qo<48||Qo>102||Qo>57&&Qo<65||Qo>70&&Qo<97););return slice(e,caret()+(t<6&&32==peek()&&32==next()))}function delimiter(e){for(;next();)switch(Qo){case e:return $o;case 34:case 39:34!==e&&39!==e&&delimiter(Qo);break;case 40:41===e&&delimiter(e);break;case 92:next()}return $o}function commenter(e,t){for(;next()&&e+Qo!==57&&(e+Qo!==84||47!==peek()););return"/*"+slice(t,$o-1)+"*"+Uo(47===e?e:next())}function identifier(e){for(;!token(peek());)next();return slice(e,$o)}function compile(e){return dealloc(parse("",null,null,null,[""],e=alloc(e),0,[0],e))}function parse(e,t,g,n,o,a,C,I,i){for(var s=0,l=0,c=C,u=0,d=0,p=0,m=1,h=1,y=1,b=0,v="",x=o,S=a,w=n,E=v;h;)switch(p=b,b=next()){case 40:if(108!=p&&58==charat(E,c-1)){-1!=indexof(E+=replace(delimit(b),"&","&\f"),"&\f")&&(y=-1);break}case 34:case 39:case 91:E+=delimit(b);break;case 9:case 10:case 13:case 32:E+=whitespace(p);break;case 92:E+=escaping(caret()-1,7);continue;case 47:switch(peek()){case 42:case 47:append(comment(commenter(next(),caret()),t,g),i);break;default:E+="/"}break;case 123*m:I[s++]=strlen(E)*y;case 125*m:case 59:case 0:switch(b){case 0:case 125:h=0;case 59+l:-1==y&&(E=replace(E,/\f/g,"")),d>0&&strlen(E)-c&&append(d>32?declaration(E+";",n,g,c-1):declaration(replace(E," ","")+";",n,g,c-2),i);break;case 59:E+=";";default:if(append(w=ruleset(E,t,g,s,l,o,I,v,x=[],S=[],c),a),123===b)if(0===l)parse(E,t,w,w,x,a,c,I,S);else switch(99===u&&110===charat(E,3)?100:u){case 100:case 108:case 109:case 115:parse(e,w,w,n&&append(ruleset(e,w,w,0,0,o,I,v,o,x=[],c),S),o,S,c,I,n?x:S);break;default:parse(E,w,w,w,[""],S,0,I,S)}}s=l=d=0,m=y=1,v=E="",c=C;break;case 58:c=1+strlen(E),d=p;default:if(m<1)if(123==b)--m;else if(125==b&&0==m++&&125==prev())continue;switch(E+=Uo(b),b*m){case 38:y=l>0?1:(E+="\f",-1);break;case 44:I[s++]=(strlen(E)-1)*y,y=1;break;case 64:45===peek()&&(E+=delimit(next())),u=peek(),l=c=strlen(v=E+=identifier(caret())),b++;break;case 45:45===p&&2==strlen(E)&&(m=0)}}return a}function ruleset(e,t,g,n,o,a,C,I,i,s,l){for(var c=o-1,u=0===o?a:[""],d=sizeof(u),p=0,m=0,h=0;p<n;++p)for(var y=0,b=substr(e,c+1,c=_o(m=C[p])),v=e;y<d;++y)(v=trim(m>0?u[y]+" "+b:replace(b,/&\f/g,u[y])))&&(i[h++]=v);return node(e,t,g,0===o?Go:I,i,s,l)}function comment(e,t,g){return node(e,t,g,Lo,Uo(char()),substr(e,2,-2),0)}function declaration(e,t,g,n){return node(e,t,g,Bo,substr(e,0,n),substr(e,n+1,-1),n)}function serialize(e,t){for(var g="",n=sizeof(e),o=0;o<n;o++)g+=t(e[o],o,e,t)||"";return g}function stringify(e,t,g,n){switch(e.type){case Vo:if(e.children.length)break;case Fo:case Bo:return e.return=e.return||e.value;case Lo:return"";case Wo:return e.return=e.value+"{"+serialize(e.children,n)+"}";case Go:e.value=e.props.join(",")}return strlen(g=serialize(e.children,n))?e.return=e.value+"{"+g+"}":""}function middleware(e){var t=sizeof(e);return function(g,n,o,a){for(var C="",I=0;I<t;I++)C+=e[I](g,n,o,a)||"";return C}}function rulesheet(e){return function(t){t.root||(t=t.return)&&e(t)}}function memoize(e){var t=Object.create(null);return function(g){return void 0===t[g]&&(t[g]=e(g)),t[g]}}var identifierWithPointTracking=function(e,t,g){for(var n=0,o=0;n=o,o=peek(),38===n&&12===o&&(t[g]=1),!token(o);)next();return slice(e,$o)},toRules=function(e,t){var g=-1,n=44;do{switch(token(n)){case 0:38===n&&12===peek()&&(t[g]=1),e[g]+=identifierWithPointTracking($o-1,t,g);break;case 2:e[g]+=delimit(n);break;case 4:if(44===n){e[++g]=58===peek()?"&\f":"",t[g]=e[g].length;break}default:e[g]+=Uo(n)}}while(n=next());return e},getRules=function(e,t){return dealloc(toRules(alloc(e),t))},Jo=new WeakMap,compat=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,g=e.parent,n=e.column===g.column&&e.line===g.line;"rule"!==g.type;)if(!(g=g.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||Jo.get(g))&&!n){Jo.set(e,!0);for(var o=[],a=getRules(t,o),C=g.props,I=0,i=0;I<a.length;I++)for(var s=0;s<C.length;s++,i++)e.props[i]=o[I]?a[I].replace(/&\f/g,C[s]):C[s]+" "+a[I]}}},removeLabel=function(e){if("decl"===e.type){var t=e.value;108===t.charCodeAt(0)&&98===t.charCodeAt(2)&&(e.return="",e.value="")}};function prefix(e,t){switch(hash$2(e,t)){case 5103:return jo+"print-"+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return jo+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return jo+e+Do+e+Oo+e+e;case 6828:case 4268:return jo+e+Oo+e+e;case 6165:return jo+e+Oo+"flex-"+e+e;case 5187:return jo+e+replace(e,/(\w+).+(:[^]+)/,jo+"box-$1$2"+Oo+"flex-$1$2")+e;case 5443:return jo+e+Oo+"flex-item-"+replace(e,/flex-|-self/,"")+e;case 4675:return jo+e+Oo+"flex-line-pack"+replace(e,/align-content|flex-|-self/,"")+e;case 5548:return jo+e+Oo+replace(e,"shrink","negative")+e;case 5292:return jo+e+Oo+replace(e,"basis","preferred-size")+e;case 6060:return jo+"box-"+replace(e,"-grow","")+jo+e+Oo+replace(e,"grow","positive")+e;case 4554:return jo+replace(e,/([^-])(transform)/g,"$1"+jo+"$2")+e;case 6187:return replace(replace(replace(e,/(zoom-|grab)/,jo+"$1"),/(image-set)/,jo+"$1"),e,"")+e;case 5495:case 3959:return replace(e,/(image-set\([^]*)/,jo+"$1$`$1");case 4968:return replace(replace(e,/(.+:)(flex-)?(.*)/,jo+"box-pack:$3"+Oo+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+jo+e+e;case 4095:case 3583:case 4068:case 2532:return replace(e,/(.+)-inline(.+)/,jo+"$1$2")+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(strlen(e)-1-t>6)switch(charat(e,t+1)){case 109:if(45!==charat(e,t+4))break;case 102:return replace(e,/(.+:)(.+)-([^]+)/,"$1"+jo+"$2-$3$1"+Do+(108==charat(e,t+3)?"$3":"$2-$3"))+e;case 115:return~indexof(e,"stretch")?prefix(replace(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==charat(e,t+1))break;case 6444:switch(charat(e,strlen(e)-3-(~indexof(e,"!important")&&10))){case 107:return replace(e,":",":"+jo)+e;case 101:return replace(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+jo+(45===charat(e,14)?"inline-":"")+"box$3$1"+jo+"$2$3$1"+Oo+"$2box$3")+e}break;case 5936:switch(charat(e,t+11)){case 114:return jo+e+Oo+replace(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return jo+e+Oo+replace(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return jo+e+Oo+replace(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return jo+e+Oo+e+e}return e}var qo=[function(e,t,g,n){if(e.length>-1&&!e.return)switch(e.type){case Bo:e.return=prefix(e.value,e.length);break;case Wo:return serialize([copy(e,{value:replace(e.value,"@","@"+jo)})],n);case Go:if(e.length)return combine(e.props,function(t){switch(match(t,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return serialize([copy(e,{props:[replace(t,/:(read-\w+)/,":"+Do+"$1")]})],n);case"::placeholder":return serialize([copy(e,{props:[replace(t,/:(plac\w+)/,":"+jo+"input-$1")]}),copy(e,{props:[replace(t,/:(plac\w+)/,":"+Do+"$1")]}),copy(e,{props:[replace(t,/:(plac\w+)/,Oo+"input-$1")]})],n)}return""})}}],createCache=function(e){var t=e.key;if("css"===t){var g=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(g,function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))})}var n,o,a=e.stylisPlugins||qo,C={},I=[];n=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),function(e){for(var t=e.getAttribute("data-emotion").split(" "),g=1;g<t.length;g++)C[t[g]]=!0;I.push(e)});var i,s=[compat,removeLabel],l=[stringify,rulesheet(function(e){i.insert(e)})],c=middleware(s.concat(a,l)),stylis=function(e){return serialize(compile(e),c)};o=function(e,t,g,n){i=g,stylis(e?e+"{"+t.styles+"}":t.styles),n&&(u.inserted[t.name]=!0)};var u={key:t,sheet:new zo({key:t,container:n,nonce:e.nonce,speedy:e.speedy,prepend:e.prepend,insertionPoint:e.insertionPoint}),nonce:e.nonce,inserted:C,registered:{},insert:o};return u.sheet.hydrate(I),u},ea=__commonJSMin(e=>{var t="function"==typeof Symbol&&Symbol.for,g=t?Symbol.for("react.element"):60103,n=t?Symbol.for("react.portal"):60106,o=t?Symbol.for("react.fragment"):60107,a=t?Symbol.for("react.strict_mode"):60108,C=t?Symbol.for("react.profiler"):60114,I=t?Symbol.for("react.provider"):60109,i=t?Symbol.for("react.context"):60110,s=t?Symbol.for("react.async_mode"):60111,l=t?Symbol.for("react.concurrent_mode"):60111,c=t?Symbol.for("react.forward_ref"):60112,u=t?Symbol.for("react.suspense"):60113,d=t?Symbol.for("react.suspense_list"):60120,p=t?Symbol.for("react.memo"):60115,m=t?Symbol.for("react.lazy"):60116,h=t?Symbol.for("react.block"):60121,y=t?Symbol.for("react.fundamental"):60117,b=t?Symbol.for("react.responder"):60118,v=t?Symbol.for("react.scope"):60119;function z(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case g:switch(e=e.type){case s:case l:case o:case C:case a:case u:return e;default:switch(e=e&&e.$$typeof){case i:case c:case m:case p:case I:return e;default:return t}}case n:return t}}}function A(e){return z(e)===l}e.AsyncMode=s,e.ConcurrentMode=l,e.ContextConsumer=i,e.ContextProvider=I,e.Element=g,e.ForwardRef=c,e.Fragment=o,e.Lazy=m,e.Memo=p,e.Portal=n,e.Profiler=C,e.StrictMode=a,e.Suspense=u,e.isAsyncMode=function(e){return A(e)||z(e)===s},e.isConcurrentMode=A,e.isContextConsumer=function(e){return z(e)===i},e.isContextProvider=function(e){return z(e)===I},e.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===g},e.isForwardRef=function(e){return z(e)===c},e.isFragment=function(e){return z(e)===o},e.isLazy=function(e){return z(e)===m},e.isMemo=function(e){return z(e)===p},e.isPortal=function(e){return z(e)===n},e.isProfiler=function(e){return z(e)===C},e.isStrictMode=function(e){return z(e)===a},e.isSuspense=function(e){return z(e)===u},e.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===l||e===C||e===a||e===u||e===d||"object"==typeof e&&null!==e&&(e.$$typeof===m||e.$$typeof===p||e.$$typeof===I||e.$$typeof===i||e.$$typeof===c||e.$$typeof===y||e.$$typeof===b||e.$$typeof===v||e.$$typeof===h)},e.typeOf=z}),ta=__commonJSMin((e,t)=>{t.exports=ea()}),ga=__commonJSMin((e,t)=>{var g=ta(),n={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},C={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},I={};function getStatics(e){return g.isMemo(e)?C:I[e.$$typeof]||n}I[g.ForwardRef]=a,I[g.Memo]=C;var i=Object.defineProperty,s=Object.getOwnPropertyNames,l=Object.getOwnPropertySymbols,c=Object.getOwnPropertyDescriptor,u=Object.getPrototypeOf,d=Object.prototype;function hoistNonReactStatics(e,t,g){if("string"!=typeof t){if(d){var n=u(t);n&&n!==d&&hoistNonReactStatics(e,n,g)}var a=s(t);l&&(a=a.concat(l(t)));for(var C=getStatics(e),I=getStatics(t),p=0;p<a.length;++p){var m=a[p];if(!(o[m]||g&&g[m]||I&&I[m]||C&&C[m])){var h=c(t,m);try{i(e,m,h)}catch(y){}}}}return e}t.exports=hoistNonReactStatics}),na=!0;function getRegisteredStyles(e,t,g){var n="";return g.split(" ").forEach(function(g){void 0!==e[g]?t.push(e[g]+";"):g&&(n+=g+" ")}),n}var registerStyles=function(e,t,g){var n=e.key+"-"+t.name;!1!==g&&!1!==na||void 0!==e.registered[n]||(e.registered[n]=t.styles)},insertStyles=function(e,t,g){registerStyles(e,t,g);var n=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var o=t;do{e.insert(t===o?"."+n:"",o,e.sheet,!0),o=o.next}while(void 0!==o)}};function murmur2(e){for(var t,g=0,n=0,o=e.length;o>=4;++n,o-=4)t=1540483477*(65535&(t=255&e.charCodeAt(n)|(255&e.charCodeAt(++n))<<8|(255&e.charCodeAt(++n))<<16|(255&e.charCodeAt(++n))<<24))+(59797*(t>>>16)<<16),g=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&g)+(59797*(g>>>16)<<16);switch(o){case 3:g^=(255&e.charCodeAt(n+2))<<16;case 2:g^=(255&e.charCodeAt(n+1))<<8;case 1:g=1540483477*(65535&(g^=255&e.charCodeAt(n)))+(59797*(g>>>16)<<16)}return(((g=1540483477*(65535&(g^=g>>>13))+(59797*(g>>>16)<<16))^g>>>15)>>>0).toString(36)}var ra={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},oa=!1,aa=/[A-Z]|^ms/g,Aa=/_EMO_([^_]+?)_([^]*?)_EMO_/g,isCustomProperty=function(e){return 45===e.charCodeAt(1)},isProcessableValue=function(e){return null!=e&&"boolean"!=typeof e},Ca=memoize(function(e){return isCustomProperty(e)?e:e.replace(aa,"-$&").toLowerCase()}),processStyleValue=function(e,t){switch(e){case"animation":case"animationName":if("string"==typeof t)return t.replace(Aa,function(e,t,g){return ia={name:t,styles:g,next:ia},t})}return 1===ra[e]||isCustomProperty(e)||"number"!=typeof t||0===t?t:t+"px"},Ia="Component selectors can only be used in conjunction with @emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware compiler transform.";function handleInterpolation(e,t,g){if(null==g)return"";var n=g;if(void 0!==n.__emotion_styles)return n;switch(typeof g){case"boolean":return"";case"object":var o=g;if(1===o.anim)return ia={name:o.name,styles:o.styles,next:ia},o.name;var a=g;if(void 0!==a.styles){var C=a.next;if(void 0!==C)for(;void 0!==C;)ia={name:C.name,styles:C.styles,next:ia},C=C.next;return a.styles+";"}return createStringFromObject(e,t,g);case"function":if(void 0!==e){var I=ia,i=g(e);return ia=I,handleInterpolation(e,t,i)}}var s=g;if(null==t)return s;var l=t[s];return void 0!==l?l:s}function createStringFromObject(e,t,g){var n="";if(Array.isArray(g))for(var o=0;o<g.length;o++)n+=handleInterpolation(e,t,g[o])+";";else for(var a in g){var C=g[a];if("object"!=typeof C){var I=C;null!=t&&void 0!==t[I]?n+=a+"{"+t[I]+"}":isProcessableValue(I)&&(n+=Ca(a)+":"+processStyleValue(a,I)+";")}else{if("NO_COMPONENT_SELECTOR"===a&&oa)throw new Error(Ia);if(!Array.isArray(C)||"string"!=typeof C[0]||null!=t&&void 0!==t[C[0]]){var i=handleInterpolation(e,t,C);switch(a){case"animation":case"animationName":n+=Ca(a)+":"+i+";";break;default:n+=a+"{"+i+"}"}}else for(var s=0;s<C.length;s++)isProcessableValue(C[s])&&(n+=Ca(a)+":"+processStyleValue(a,C[s])+";")}}return n}var ia,sa=/label:\s*([^\s;{]+)\s*(;|$)/g;function serializeStyles(e,t,g){if(1===e.length&&"object"==typeof e[0]&&null!==e[0]&&void 0!==e[0].styles)return e[0];var n=!0,o="";ia=void 0;var a=e[0];null==a||void 0===a.raw?(n=!1,o+=handleInterpolation(g,t,a)):o+=a[0];for(var C=1;C<e.length;C++)o+=handleInterpolation(g,t,e[C]),n&&(o+=a[C]);sa.lastIndex=0;for(var I,i="";null!==(I=sa.exec(o));)i+="-"+I[1];return{name:murmur2(o)+i,styles:o,next:ia}}var la,ca,syncFallback=function(e){return e()},ua=!!t.useInsertionEffect&&t.useInsertionEffect,da=ua||syncFallback,pa=ua||t.useLayoutEffect,ma=t.createContext("undefined"!=typeof HTMLElement?createCache({key:"css"}):null),fa=ma.Provider,withEmotionCache=function(e){return(0,t.forwardRef)(function(g,n){return e(g,(0,t.useContext)(ma),n)})},ha=t.createContext({}),ya={}.hasOwnProperty,ba="__EMOTION_TYPE_PLEASE_DO_NOT_USE__",createEmotionProps=function(e,t){var g={};for(var n in t)ya.call(t,n)&&(g[n]=t[n]);return g[ba]=e,g},Insertion$1=function(e){var t=e.cache,g=e.serialized,n=e.isStringTag;return registerStyles(t,g,n),da(function(){return insertStyles(t,g,n)}),null},va=withEmotionCache(function(e,g,n){var o=e.css;"string"==typeof o&&void 0!==g.registered[o]&&(o=g.registered[o]);var a=e[ba],C=[o],I="";"string"==typeof e.className?I=getRegisteredStyles(g.registered,C,e.className):null!=e.className&&(I=e.className+" ");var i=serializeStyles(C,void 0,t.useContext(ha));I+=g.key+"-"+i.name;var s={};for(var l in e)ya.call(e,l)&&"css"!==l&&l!==ba&&(s[l]=e[l]);return s.className=I,n&&(s.ref=n),t.createElement(t.Fragment,null,t.createElement(Insertion$1,{cache:g,serialized:i,isStringTag:"string"==typeof a}),t.createElement(a,s))}),xa=(ga(),function(e,g){var n=arguments;if(null==g||!ya.call(g,"css"))return t.createElement.apply(void 0,n);var o=n.length,a=new Array(o);a[0]=va,a[1]=createEmotionProps(e,g);for(var C=2;C<o;C++)a[C]=n[C];return t.createElement.apply(null,a)});la=xa||(xa={}),ca||(ca=la.JSX||(la.JSX={}));var Sa=withEmotionCache(function(e,g){var n=serializeStyles([e.styles],void 0,t.useContext(ha)),o=t.useRef();return pa(function(){var e=g.key+"-global",t=new g.sheet.constructor({key:e,nonce:g.sheet.nonce,container:g.sheet.container,speedy:g.sheet.isSpeedy}),a=!1,C=document.querySelector('style[data-emotion="'+e+" "+n.name+'"]');return g.sheet.tags.length&&(t.before=g.sheet.tags[0]),null!==C&&(a=!0,C.setAttribute("data-emotion",e),t.hydrate([C])),o.current=[t,a],function(){t.flush()}},[g]),pa(function(){var e=o.current,t=e[0];e[1]?e[1]=!1:(void 0!==n.next&&insertStyles(g,n.next,!0),t.tags.length&&(t.before=t.tags[t.tags.length-1].nextElementSibling,t.flush()),g.insert("",n,t,!1))},[g,n.name]),null});function css(){for(var e=arguments.length,t=new Array(e),g=0;g<e;g++)t[g]=arguments[g];return serializeStyles(t)}function keyframes(){var e=css.apply(void 0,arguments),t="animation-"+e.name;return{name:t,styles:"@keyframes "+t+"{"+e.styles+"}",anim:1,toString:function(){return"_EMO_"+this.name+"_"+this.styles+"_EMO_"}}}var wa=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|popover|popoverTarget|popoverTargetAction|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,ka=!1,Ea=memoize(function(e){return wa.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91}),testOmitPropsOnComponent=function(e){return"theme"!==e},getDefaultShouldForwardProp=function(e){return"string"==typeof e&&e.charCodeAt(0)>96?Ea:testOmitPropsOnComponent},composeShouldForwardProps=function(e,t,g){var n;if(t){var o=t.shouldForwardProp;n=e.__emotion_forwardProp&&o?function(t){return e.__emotion_forwardProp(t)&&o(t)}:o}return"function"!=typeof n&&g&&(n=e.__emotion_forwardProp),n},Insertion=function(e){var t=e.cache,g=e.serialized,n=e.isStringTag;return registerStyles(t,g,n),da(function(){return insertStyles(t,g,n)}),null},Ra=function createStyled(e,g){var n,o,a=e.__emotion_real===e,C=a&&e.__emotion_base||e;void 0!==g&&(n=g.label,o=g.target);var I=composeShouldForwardProps(e,g,a),i=I||getDefaultShouldForwardProp(C),s=!i("as");return function(){var l=arguments,c=a&&void 0!==e.__emotion_styles?e.__emotion_styles.slice(0):[];if(void 0!==n&&c.push("label:"+n+";"),null==l[0]||void 0===l[0].raw)c.push.apply(c,l);else{var u=l[0];c.push(u[0]);for(var d=l.length,p=1;p<d;p++)c.push(l[p],u[p])}var m=withEmotionCache(function(e,g,n){var a=s&&e.as||C,l="",u=[],d=e;if(null==e.theme){for(var p in d={},e)d[p]=e[p];d.theme=t.useContext(ha)}"string"==typeof e.className?l=getRegisteredStyles(g.registered,u,e.className):null!=e.className&&(l=e.className+" ");var m=serializeStyles(c.concat(u),g.registered,d);l+=g.key+"-"+m.name,void 0!==o&&(l+=" "+o);var h=s&&void 0===I?getDefaultShouldForwardProp(a):i,y={};for(var b in e)s&&"as"===b||h(b)&&(y[b]=e[b]);return y.className=l,n&&(y.ref=n),t.createElement(t.Fragment,null,t.createElement(Insertion,{cache:g,serialized:m,isStringTag:"string"==typeof a}),t.createElement(a,y))});return m.displayName=void 0!==n?n:"Styled("+("string"==typeof C?C:C.displayName||C.name||"Component")+")",m.defaultProps=e.defaultProps,m.__emotion_real=m,m.__emotion_base=C,m.__emotion_styles=c,m.__emotion_forwardProp=I,Object.defineProperty(m,"toString",{value:function(){return void 0===o&&ka?"NO_COMPONENT_SELECTOR":"."+o}}),m.withComponent=function(e,t){return createStyled(e,_extends({},g,t,{shouldForwardProp:composeShouldForwardProps(m,t,!0)})).apply(void 0,c)},m}},Ta=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"],Ma=Ra.bind(null);Ta.forEach(function(e){Ma[e]=Ma(e)});var Pa,Na=__commonJSMin((e,t)=>{var g="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";t.exports=g}),za=__commonJSMin((e,t)=>{var g=Na();function emptyFunction(){}function emptyFunctionWithReset(){}emptyFunctionWithReset.resetWarningCache=emptyFunction,t.exports=function(){function shim(e,t,n,o,a,C){if(C!==g){var I=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw I.name="Invariant Violation",I}}function getShim(){return shim}shim.isRequired=shim;var e={array:shim,bigint:shim,bool:shim,func:shim,number:shim,object:shim,string:shim,symbol:shim,any:shim,arrayOf:getShim,element:shim,elementType:shim,instanceOf:getShim,node:shim,objectOf:getShim,oneOf:getShim,oneOfType:getShim,shape:getShim,exact:getShim,checkPropTypes:emptyFunctionWithReset,resetWarningCache:emptyFunction};return e.PropTypes=e,e}}),Oa=__commonJSMin((e,t)=>{t.exports=za()()}),Da=__commonJSMin(e=>{var t=Symbol.for("react.transitional.element");function jsxProd(e,g,n){var o=null;if(void 0!==n&&(o=""+n),void 0!==g.key&&(o=""+g.key),"key"in g)for(var a in n={},g)"key"!==a&&(n[a]=g[a]);else n=g;return g=n.ref,{$$typeof:t,type:e,key:o,ref:void 0!==g?g:null,props:n}}Symbol.for("react.fragment"),e.jsx=jsxProd,e.jsxs=jsxProd}),ja=__commonJSMin((e,t)=>{t.exports=Da()})(),La=new Map,Ga={insert:void 0},createEmotionCache=(e,t)=>{const g=createCache(e);return g.sheet=new t({key:g.key,nonce:g.sheet.nonce,container:g.sheet.container,speedy:g.sheet.isSpeedy,prepend:g.sheet.prepend,insertionPoint:g.sheet.insertionPoint}),g};if("object"==typeof document&&!(Pa=document.querySelector('[name="emotion-insertion-point"]'))){(Pa=document.createElement("meta")).setAttribute("name","emotion-insertion-point"),Pa.setAttribute("content","");const e=document.querySelector("head");e&&e.prepend(Pa)}function getCache(e,t){if(e||t){class g extends zo{insert(e,t){return Ga.insert?Ga.insert(e,t):(this.key&&this.key.endsWith("global")&&(this.before=Pa),super.insert(e,t))}}const n=createEmotionCache({key:"css",insertionPoint:e?Pa:void 0},g);if(t){const e=n.insert;n.insert=(...t)=>(t[1].styles.match(/^@layer\s+[^{]*$/)||(t[1].styles=`@layer mui {${t[1].styles}}`),e(...t))}return n}}function StyledEngineProvider(e){const{injectFirst:t,enableCssLayer:g,children:n}=e,o=l.useMemo(()=>{const e=`${t}-${g}`;if("object"==typeof document&&La.has(e))return La.get(e);const n=getCache(t,g);return La.set(e,n),n},[t,g]);return o?(0,ja.jsx)(fa,{value:o,children:n}):n}function isEmpty$2(e){return null==e||0===Object.keys(e).length}function GlobalStyles$2(e){const{styles:t,defaultTheme:g={}}=e;return(0,ja.jsx)(Sa,{styles:"function"==typeof t?e=>t(isEmpty$2(e)?g:e):t})}function styled$2(e,t){return Ma(e,t)}function internal_mutateStyles(e,t){Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))}var Ba=[];function internal_serializeStyles(e){return Ba[0]=e,serializeStyles(Ba)}var Fa=__commonJSMin(e=>{Symbol.for("react.transitional.element"),Symbol.for("react.portal");var t=Symbol.for("react.fragment"),g=Symbol.for("react.strict_mode"),n=Symbol.for("react.profiler"),o=Symbol.for("react.consumer"),a=Symbol.for("react.context"),C=Symbol.for("react.forward_ref"),I=Symbol.for("react.suspense"),i=Symbol.for("react.suspense_list"),s=Symbol.for("react.memo"),l=Symbol.for("react.lazy"),c=(Symbol.for("react.view_transition"),Symbol.for("react.client.reference"));e.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===t||e===n||e===g||e===I||e===i||"object"==typeof e&&null!==e&&(e.$$typeof===l||e.$$typeof===s||e.$$typeof===a||e.$$typeof===o||e.$$typeof===C||e.$$typeof===c||void 0!==e.getModuleId)}}),Wa=__commonJSMin((e,t)=>{t.exports=Fa()})();function isPlainObject(e){if("object"!=typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)}function deepClone(e){if(l.isValidElement(e)||(0,Wa.isValidElementType)(e)||!isPlainObject(e))return e;const t={};return Object.keys(e).forEach(g=>{t[g]=deepClone(e[g])}),t}function deepmerge(e,t,g={clone:!0}){const n=g.clone?{...e}:e;return isPlainObject(e)&&isPlainObject(t)&&Object.keys(t).forEach(o=>{l.isValidElement(t[o])||(0,Wa.isValidElementType)(t[o])?n[o]=t[o]:isPlainObject(t[o])&&Object.prototype.hasOwnProperty.call(e,o)&&isPlainObject(e[o])?n[o]=deepmerge(e[o],t[o],g):g.clone?n[o]=isPlainObject(t[o])?deepClone(t[o]):t[o]:n[o]=t[o]}),n}var sortBreakpointsValues=e=>{const t=Object.keys(e).map(t=>({key:t,val:e[t]}))||[];return t.sort((e,t)=>e.val-t.val),t.reduce((e,t)=>({...e,[t.key]:t.val}),{})};function createBreakpoints(e){const{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:g="px",step:n=5,...o}=e,a=sortBreakpointsValues(t),C=Object.keys(a);function up(e){return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${g})`}function down(e){return`@media (max-width:${("number"==typeof t[e]?t[e]:e)-n/100}${g})`}function between(e,o){const a=C.indexOf(o);return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${g}) and (max-width:${(-1!==a&&"number"==typeof t[C[a]]?t[C[a]]:o)-n/100}${g})`}function only(e){return C.indexOf(e)+1<C.length?between(e,C[C.indexOf(e)+1]):up(e)}function not(e){const t=C.indexOf(e);return 0===t?up(C[1]):t===C.length-1?down(C[t]):between(e,C[C.indexOf(e)+1]).replace("@media","@media not all and")}const I=[];for(let i=0;i<C.length;i+=1)I.push(up(C[i]));return{keys:C,values:a,up,down,between,only,not,unit:g,internal_mediaKeys:I,...o}}var Va=/min-width:\s*([0-9.]+)/;function sortContainerQueries(e,t){if(!e.containerQueries||!hasContainerQuery(t))return t;const g=[];for(const o in t)o.startsWith("@container")&&g.push(o);g.sort((e,t)=>+(e.match(Va)?.[1]||0)-+(t.match(Va)?.[1]||0));const n=t;for(let o=0;o<g.length;o+=1){const e=g[o],t=n[e];delete n[e],n[e]=t}return n}function hasContainerQuery(e){for(const t in e)if(t.startsWith("@container"))return!0;return!1}function isCqShorthand(e,t){return"@"===t||t.startsWith("@")&&(e.some(e=>t.startsWith(`@${e}`))||!!t.match(/^@\d/))}function getContainerQuery(e,t){const g=t.match(/^@([^/]+)?\/?(.+)?$/);if(!g)return null;const[,n,o]=g,a=Number.isNaN(+n)?n||0:+n;return e.containerQueries(o).up(a)}function cssContainerQueries(e){const toContainerQuery=(e,t)=>e.replace("@media",t?`@container ${t}`:"@container");function attachCq(t,g){t.up=(...t)=>toContainerQuery(e.breakpoints.up(...t),g),t.down=(...t)=>toContainerQuery(e.breakpoints.down(...t),g),t.between=(...t)=>toContainerQuery(e.breakpoints.between(...t),g),t.only=(...t)=>toContainerQuery(e.breakpoints.only(...t),g),t.not=(...t)=>{const n=toContainerQuery(e.breakpoints.not(...t),g);return n.includes("not all and")?n.replace("not all and ","").replace("min-width:","width<").replace("max-width:","width>").replace("and","or"):n}}const t={},containerQueries=e=>(attachCq(t,e),t);return attachCq(containerQueries),{...e,containerQueries}}var _a={borderRadius:4};function isObjectEmpty$2(e){if(null==e)return!0;for(const t in e)return!1;return!0}function fastDeepAssign(e,t){const g=Array.isArray(t),n=Array.isArray(e);return isPrimitive(t)?t:isPrimitiveOrBuiltIn(e)?clone(t):g&&n?mergeArray(e,t):g!==n?clone(t):mergeObject(e,t)}function cloneArray(e){let t=0;const g=e.length,n=new Array(g);for(t=0;t<g;t+=1)n[t]=clone(e[t]);return n}function cloneObject(e){const t={};for(const g in e)t[g]=clone(e[g]);return t}function mergeArray(e,t){const g=e.length;for(let n=0;n<t.length;n+=1)e[g+n]=clone(t[n]);return e}function isMergeableObject(e){return!("object"!=typeof e||null===e||e instanceof RegExp||e instanceof Date)}function isPrimitive(e){return"object"!=typeof e||null===e}function isPrimitiveOrBuiltIn(e){return"object"!=typeof e||null===e||e instanceof RegExp||e instanceof Date}function clone(e){return isMergeableObject(e)?Array.isArray(e)?cloneArray(e):cloneObject(e):e}function mergeObject(e,t){for(const g in t)e[g]=g in e?fastDeepAssign(e[g],t[g]):clone(t[g]);return e}var Ua={},Za={xs:0,sm:600,md:900,lg:1200,xl:1536},Ka=createBreakpoints({values:Za}),Ha={containerQueries:e=>({up:t=>{let g="number"==typeof t?t:Za[t]||t;return"number"==typeof g&&(g=`${g}px`),e?`@container ${e} (min-width:${g})`:`@container (min-width:${g})`}})};function handleBreakpoints(e,t,g){const n={};return iterateBreakpoints(n,e.theme,t,(e,t,o)=>{const a=g(t,o);e?n[e]=a:fastDeepAssign(n,a)})}function iterateBreakpoints(e,t,g,n){if(t??=Ua,Array.isArray(g)){const o=t.breakpoints??Ka;for(let t=0;t<g.length;t+=1)buildBreakpoint(e,o.up(o.keys[t]),g[t],void 0,n);return e}if("object"==typeof g){const o=t.breakpoints??Ka,a=o.values??Za;for(const C in g)if(isCqShorthand(o.keys,C)){const o=getContainerQuery(t.containerQueries?t:Ha,C);o&&buildBreakpoint(e,o,g[C],C,n)}else if(C in a)buildBreakpoint(e,o.up(C),g[C],C,n);else{const t=C;e[t]=g[t]}return e}return n(void 0,g),e}function buildBreakpoint(e,t,g,n,o){e[t]??={},o(t,g,n)}function createEmptyBreakpointObject(e=Ka){const{internal_mediaKeys:t}=e,g={};for(let n=0;n<t.length;n+=1)g[t[n]]={};return g}function removeUnusedBreakpoints(e,t){const g=e.internal_mediaKeys;for(let n=0;n<g.length;n+=1){const e=g[n];isObjectEmpty$2(t[e])&&delete t[e]}return t}function mergeBreakpointsInOrder(e,...t){return removeUnusedBreakpoints(e,[createEmptyBreakpointObject(e),...t].reduce((e,t)=>deepmerge(e,t),{}))}function computeBreakpointsBase(e,t){if("object"!=typeof e)return{};const g={},n=Object.keys(t);return Array.isArray(e)?n.forEach((t,n)=>{n<e.length&&(g[t]=!0)}):n.forEach(t=>{null!=e[t]&&(g[t]=!0)}),g}function resolveBreakpointValues({values:e,breakpoints:t,base:g}){const n=g||computeBreakpointsBase(e,t),o=Object.keys(n);if(0===o.length)return e;let a;return o.reduce((t,g,n)=>(Array.isArray(e)?(t[g]=null!=e[n]?e[n]:e[a],a=n):"object"==typeof e?(t[g]=null!=e[g]?e[g]:e[a],a=g):t[g]=e,t),{})}function hasBreakpoint(e,t){if(Array.isArray(t))return!0;if("object"==typeof t&&null!==t){for(let n=0;n<e.keys.length;n+=1)if(e.keys[n]in t)return!0;const g=Object.keys(t);for(let t=0;t<g.length;t+=1)if(isCqShorthand(e.keys,g[t]))return!0}return!1}function capitalize(e){if("string"!=typeof e)throw new Error(formatMuiErrorMessage(7));return e.charAt(0).toUpperCase()+e.slice(1)}function getStyleValue2(e,t,g,n){let o;return o="function"==typeof e?e(g):Array.isArray(e)?e[g]||g:"string"==typeof g&&getPath(e,g,!0,n)||g,t&&(o=t(o,g,e)),o}function getPath(e,t,g=!0,n=void 0){if(!e||!t)return null;const o=t.split(".");if(e.vars&&g){const t=getPathImpl(e.vars,o,n);if(null!=t)return t}return getPathImpl(e,o,n)}function getPathImpl(e,t,g=void 0){let n,o=e,a=0;for(;a<t.length;){if(null==o)return o;n=o,o=o[t[a]],a+=1}if(g&&void 0===o){const e=t[t.length-1],o=`${g}${"default"===e?"":capitalize(e)}`;return n?.[o]}return o}function style$2(e){const{prop:t,cssProperty:g=e.prop,themeKey:n,transform:o}=e,fn=e=>{if(null==e[t])return null;const a=e[t],C=getPath(e.theme,n)||{};return handleBreakpoints(e,a,e=>{const n=getStyleValue2(C,o,e,t);return!1===g?n:{[g]:n}})};return fn.propTypes={},fn.filterProps=[t],fn}var Ya={internal_cache:{}},$a={m:"margin",p:"padding"},Qa={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},Xa={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},Ja={};for(const zp in $a)Ja[zp]=[$a[zp]];for(const zp in $a)for(const e in Qa){const t=$a[zp],g=Qa[e],n=Array.isArray(g)?g.map(e=>t+e):[t+g];Ja[zp+e]=n}for(const zp in Xa)Ja[zp]=Ja[Xa[zp]];var qa=new Set(["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"]),eA=new Set(["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"]),tA=new Set([...qa,...eA]);function createUnaryUnit(e,t,g,n){const o=getPath(e,t,!0)??g;return"number"==typeof o||"string"==typeof o?e=>"string"==typeof e?e:"string"==typeof o?o.startsWith("var(")&&0===e?0:o.startsWith("var(")&&1===e?o:`calc(${e} * ${o})`:o*e:Array.isArray(o)?e=>{if("string"==typeof e)return e;const t=o[Math.abs(e)];return e>=0?t:"number"==typeof t?-t:"string"==typeof t&&t.startsWith("var(")?`calc(-1 * ${t})`:`-${t}`}:"function"==typeof o?o:()=>{}}function createUnarySpacing(e){return createUnaryUnit(e,"spacing",8,"spacing")}function getValue(e,t){return"string"==typeof t||null==t?t:e(t)}var gA=[""];function style$1(e,t){const g=e.theme??Ya,n=g?.internal_cache?.unarySpacing??createUnarySpacing(g),o={};for(const a in e){if(!t.has(a))continue;const g=Ja[a]??(gA[0]=a,gA),C=e[a];iterateBreakpoints(o,e.theme,C,(e,t)=>{const a=e?o[e]:o;for(let o=0;o<g.length;o+=1)a[g[o]]=getValue(n,t)})}return o}function margin(e){return style$1(e,qa)}function padding(e){return style$1(e,eA)}function spacing(e){return style$1(e,tA)}function createSpacing(e=8,t=createUnarySpacing({spacing:e})){if(e.mui)return e;const spacing=(...e)=>(0===e.length?[1]:e).map(e=>{const g=t(e);return"number"==typeof g?`${g}px`:g}).join(" ");return spacing.mui=!0,spacing}function compose(...e){const t=e.reduce((e,t)=>(t.filterProps.forEach(g=>{e[g]=t}),e),{}),fn=e=>{const g={};for(const n in e)t[n]&&fastDeepAssign(g,t[n](e));return g};return fn.propTypes={},fn.filterProps=e.reduce((e,t)=>e.concat(t.filterProps),[]),fn}function borderTransform(e){return"number"!=typeof e?e:`${e}px solid`}function createBorderStyle(e,t){return style$2({prop:e,themeKey:"borders",transform:t})}margin.propTypes={},margin.filterProps=qa,padding.propTypes={},padding.filterProps=eA,spacing.propTypes={},spacing.filterProps=tA;var nA=createBorderStyle("border",borderTransform),rA=createBorderStyle("borderTop",borderTransform),oA=createBorderStyle("borderRight",borderTransform),aA=createBorderStyle("borderBottom",borderTransform),AA=createBorderStyle("borderLeft",borderTransform),CA=createBorderStyle("borderColor"),IA=createBorderStyle("borderTopColor"),iA=createBorderStyle("borderRightColor"),sA=createBorderStyle("borderBottomColor"),lA=createBorderStyle("borderLeftColor"),cA=createBorderStyle("outline",borderTransform),uA=createBorderStyle("outlineColor"),borderRadius=e=>{if(void 0!==e.borderRadius&&null!==e.borderRadius){const t=createUnaryUnit(e.theme,"shape.borderRadius",4,"borderRadius"),styleFromPropValue=e=>({borderRadius:getValue(t,e)});return handleBreakpoints(e,e.borderRadius,styleFromPropValue)}return null};borderRadius.propTypes={},borderRadius.filterProps=["borderRadius"],compose(nA,rA,oA,aA,AA,CA,IA,iA,sA,lA,borderRadius,cA,uA);var gap=e=>{if(void 0!==e.gap&&null!==e.gap){const t=createUnaryUnit(e.theme,"spacing",8,"gap"),styleFromPropValue=e=>({gap:getValue(t,e)});return handleBreakpoints(e,e.gap,styleFromPropValue)}return null};gap.propTypes={},gap.filterProps=["gap"];var columnGap=e=>{if(void 0!==e.columnGap&&null!==e.columnGap){const t=createUnaryUnit(e.theme,"spacing",8,"columnGap"),styleFromPropValue=e=>({columnGap:getValue(t,e)});return handleBreakpoints(e,e.columnGap,styleFromPropValue)}return null};columnGap.propTypes={},columnGap.filterProps=["columnGap"];var rowGap=e=>{if(void 0!==e.rowGap&&null!==e.rowGap){const t=createUnaryUnit(e.theme,"spacing",8,"rowGap"),styleFromPropValue=e=>({rowGap:getValue(t,e)});return handleBreakpoints(e,e.rowGap,styleFromPropValue)}return null};function paletteTransform(e,t){return"grey"===t?t:e}function sizingTransform(e){return e<=1&&0!==e?100*e+"%":e}rowGap.propTypes={},rowGap.filterProps=["rowGap"],compose(gap,columnGap,rowGap,style$2({prop:"gridColumn"}),style$2({prop:"gridRow"}),style$2({prop:"gridAutoFlow"}),style$2({prop:"gridAutoColumns"}),style$2({prop:"gridAutoRows"}),style$2({prop:"gridTemplateColumns"}),style$2({prop:"gridTemplateRows"}),style$2({prop:"gridTemplateAreas"}),style$2({prop:"gridArea"})),compose(style$2({prop:"color",themeKey:"palette",transform:paletteTransform}),style$2({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:paletteTransform}),style$2({prop:"backgroundColor",themeKey:"palette",transform:paletteTransform}));var dA=style$2({prop:"width",transform:sizingTransform}),maxWidth=e=>{if(void 0!==e.maxWidth&&null!==e.maxWidth){const styleFromPropValue=t=>{const g=e.theme?.breakpoints?.values?.[t]||Za[t];return g?"px"!==e.theme?.breakpoints?.unit?{maxWidth:`${g}${e.theme.breakpoints.unit}`}:{maxWidth:g}:{maxWidth:sizingTransform(t)}};return handleBreakpoints(e,e.maxWidth,styleFromPropValue)}return null};maxWidth.filterProps=["maxWidth"];var pA=style$2({prop:"minWidth",transform:sizingTransform}),mA=style$2({prop:"height",transform:sizingTransform}),fA=style$2({prop:"maxHeight",transform:sizingTransform}),hA=style$2({prop:"minHeight",transform:sizingTransform}),yA=(style$2({prop:"size",cssProperty:"width",transform:sizingTransform}),style$2({prop:"size",cssProperty:"height",transform:sizingTransform}),compose(dA,maxWidth,pA,mA,fA,hA,style$2({prop:"boxSizing"})),{border:{themeKey:"borders",transform:borderTransform},borderTop:{themeKey:"borders",transform:borderTransform},borderRight:{themeKey:"borders",transform:borderTransform},borderBottom:{themeKey:"borders",transform:borderTransform},borderLeft:{themeKey:"borders",transform:borderTransform},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},outline:{themeKey:"borders",transform:borderTransform},outlineColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:borderRadius},color:{themeKey:"palette",transform:paletteTransform},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:paletteTransform},backgroundColor:{themeKey:"palette",transform:paletteTransform},p:{style:padding},pt:{style:padding},pr:{style:padding},pb:{style:padding},pl:{style:padding},px:{style:padding},py:{style:padding},padding:{style:padding},paddingTop:{style:padding},paddingRight:{style:padding},paddingBottom:{style:padding},paddingLeft:{style:padding},paddingX:{style:padding},paddingY:{style:padding},paddingInline:{style:padding},paddingInlineStart:{style:padding},paddingInlineEnd:{style:padding},paddingBlock:{style:padding},paddingBlockStart:{style:padding},paddingBlockEnd:{style:padding},m:{style:margin},mt:{style:margin},mr:{style:margin},mb:{style:margin},ml:{style:margin},mx:{style:margin},my:{style:margin},margin:{style:margin},marginTop:{style:margin},marginRight:{style:margin},marginBottom:{style:margin},marginLeft:{style:margin},marginX:{style:margin},marginY:{style:margin},marginInline:{style:margin},marginInlineStart:{style:margin},marginInlineEnd:{style:margin},marginBlock:{style:margin},marginBlockStart:{style:margin},marginBlockEnd:{style:margin},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:gap},rowGap:{style:rowGap},columnGap:{style:columnGap},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:sizingTransform},maxWidth:{style:maxWidth},minWidth:{transform:sizingTransform},height:{transform:sizingTransform},maxHeight:{transform:sizingTransform},minHeight:{transform:sizingTransform},boxSizing:{},font:{themeKey:"font"},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}}),bA={};function unstable_createStyleFunctionSx(){function styleFunctionSx(e){if(!e.sx)return null;const{sx:t,theme:g=bA,nested:n}=e,o=g.unstable_sxConfig??yA,a={sx:null,theme:g,nested:!0};function process(t){let C=t;if("function"==typeof t)C=t(g);else if("object"!=typeof t)return t;if(!C)return null;const I=g.breakpoints??Ka,i=createEmptyBreakpointObject(I);for(const n in C){const t=callIfFn(C[n],g);null!=t&&("object"==typeof t?o[n]?setThemeValue(i,n,t,g,o):hasBreakpoint(I,t)?iterateBreakpoints(i,e.theme,t,(e,t)=>{i[e][n]=t}):(a.sx=t,i[n]=styleFunctionSx(a)):setThemeValue(i,n,t,g,o))}return!n&&g.modularCssLayers?{"@layer sx":sortContainerQueries(g,removeUnusedBreakpoints(I,i))}:sortContainerQueries(g,removeUnusedBreakpoints(I,i))}return Array.isArray(t)?t.map(process):process(t)}return styleFunctionSx.filterProps=["sx"],styleFunctionSx}var vA=unstable_createStyleFunctionSx();function setThemeValue(e,t,g,n,o){const a=o[t];if(!a)return void(e[t]=g);if(null==g)return;const{themeKey:C}=a;if("typography"===C&&"inherit"===g)return void(e[t]=g);const{style:I}=a;if(I)return void fastDeepAssign(e,I({[t]:g,theme:n}));const{cssProperty:i=t,transform:s}=a,l=getPath(n,C);iterateBreakpoints(e,n,g,(g,n)=>{const o=getStyleValue2(l,s,n,t);!1===i?fastDeepAssign(g?e[g]:e,o):g?e[g][i]=o:e[i]=o})}function callIfFn(e,t){return"function"==typeof e?e(t):e}function applyStyles$1(e,t){const g=this;if(g.vars){if(!g.colorSchemes?.[e]||"function"!=typeof g.getColorSchemeSelector)return{};let n=g.getColorSchemeSelector(e);return"&"===n?t:((n.includes("data-")||n.includes("."))&&(n=`*:where(${n.replace(/\s*&$/,"")}) &`),{[n]:t})}return g.palette.mode===e?t:{}}function createTheme$1(e={},...t){const{breakpoints:g={},palette:n={},spacing:o,shape:a={},...C}=e;let I=deepmerge({breakpoints:createBreakpoints(g),direction:"ltr",components:{},palette:{mode:"light",...n},spacing:createSpacing(o),shape:{..._a,...a}},C);return I=cssContainerQueries(I),I.applyStyles=applyStyles$1,I=t.reduce((e,t)=>deepmerge(e,t),I),I.unstable_sxConfig={...yA,...C?.unstable_sxConfig},I.unstable_sx=function(e){return vA({sx:e,theme:this})},I.internal_cache={},I}function isObjectEmpty$1(e){return 0===Object.keys(e).length}function useTheme$4(e=null){const t=l.useContext(ha);return!t||isObjectEmpty$1(t)?e:t}var xA=createTheme$1();function useTheme$3(e=xA){return useTheme$4(e)}function wrapGlobalLayer(e){const t=internal_serializeStyles(e);return e!==t&&t.styles?(t.styles.match(/^@layer\s+[^{]*$/)||(t.styles=`@layer global{${t.styles}}`),t):e}function GlobalStyles$1({styles:e,themeId:t,defaultTheme:g={}}){const n=useTheme$3(g),o=t&&n[t]||n;let a="function"==typeof e?e(o):e;return o.modularCssLayers&&(a=Array.isArray(a)?a.map(e=>wrapGlobalLayer("function"==typeof e?e(o):e)):wrapGlobalLayer(a)),(0,ja.jsx)(GlobalStyles$2,{styles:a})}var defaultGenerator=e=>e,SA=(()=>{let e=defaultGenerator;return{configure(t){e=t},generate:t=>e(t),reset(){e=defaultGenerator}}})();function r(e){var t,g,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(g=r(e[t]))&&(n&&(n+=" "),n+=g)}else for(g in e)e[g]&&(n&&(n+=" "),n+=g);return n}function clsx(){for(var e,t,g=0,n="",o=arguments.length;g<o;g++)(e=arguments[g])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}function createBox(e={}){const{themeId:t,defaultTheme:g,defaultClassName:n="MuiBox-root",generateClassName:o}=e,a=styled$2("div",{shouldForwardProp:e=>"theme"!==e&&"sx"!==e&&"as"!==e})(vA);return l.forwardRef(function(e,C){const I=useTheme$3(g),{className:i,component:s="div",...l}=e;return(0,ja.jsx)(a,{as:s,ref:C,className:clsx(i,o?o(n):n),theme:t&&I[t]||I,...l})})}var wA={active:"active",checked:"checked",completed:"completed",disabled:"disabled",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",open:"open",readOnly:"readOnly",required:"required",selected:"selected"};function generateUtilityClass(e,t,g="Mui"){const n=wA[t];return n?`${g}-${n}`:`${SA.generate(e)}-${t}`}function generateUtilityClasses(e,t,g="Mui"){const n={};return t.forEach(t=>{n[t]=generateUtilityClass(e,t,g)}),n}function preprocessStyles(e){const{variants:t,...g}=e,n={variants:t,style:internal_serializeStyles(g),isProcessed:!0};return n.style===g||t&&t.forEach(e=>{"function"!=typeof e.style&&(e.style=internal_serializeStyles(e.style))}),n}var kA=createTheme$1();function shouldForwardProp(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}function shallowLayer(e,t){return t&&e&&"object"==typeof e&&e.styles&&!e.styles.startsWith("@layer")&&(e.styles=`@layer ${t}{${String(e.styles)}}`),e}function defaultOverridesResolver(e){return e?(t,g)=>g[e]:null}function attachTheme(e,t,g){e.theme=isObjectEmpty$2(e.theme)?g:e.theme[t]||e.theme}function processStyle(e,t,g){const n="function"==typeof t?t(e):t;if(Array.isArray(n))return n.flatMap(t=>processStyle(e,t,g));if(Array.isArray(n?.variants)){let t;if(n.isProcessed)t=g?shallowLayer(n.style,g):n.style;else{const{variants:e,...o}=n;t=g?shallowLayer(internal_serializeStyles(o),g):o}return processStyleVariants(e,n.variants,[t],g)}return n?.isProcessed?g?shallowLayer(internal_serializeStyles(n.style),g):n.style:g?shallowLayer(internal_serializeStyles(n),g):n}function processStyleVariants(e,t,g=[],n=void 0){let o;e:for(let a=0;a<t.length;a+=1){const C=t[a];if("function"==typeof C.props){if(o??={...e,...e.ownerState,ownerState:e.ownerState},!C.props(o))continue}else for(const t in C.props)if(e[t]!==C.props[t]&&e.ownerState?.[t]!==C.props[t])continue e;"function"==typeof C.style?(o??={...e,...e.ownerState,ownerState:e.ownerState},g.push(n?shallowLayer(internal_serializeStyles(C.style(o)),n):C.style(o))):g.push(n?shallowLayer(internal_serializeStyles(C.style),n):C.style)}return g}function createStyled(e={}){const{themeId:t,defaultTheme:g=kA,rootShouldForwardProp:n=shouldForwardProp,slotShouldForwardProp:o=shouldForwardProp}=e;function styleAttachTheme(e){attachTheme(e,t,g)}const styled=(e,t={})=>{internal_mutateStyles(e,e=>e.filter(e=>e!==vA));const{name:g,slot:a,skipVariantsResolver:C,skipSx:I,overridesResolver:i=defaultOverridesResolver(lowercaseFirstLetter(a)),...s}=t,l=g&&g.startsWith("Mui")||a?"components":"custom",c=void 0!==C?C:a&&"Root"!==a&&"root"!==a||!1,u=I||!1;let d=shouldForwardProp;"Root"===a||"root"===a?d=n:a?d=o:isStringTag(e)&&(d=void 0);const p=styled$2(e,{shouldForwardProp:d,label:generateStyledLabel(g,a),...s}),transformStyle=e=>{if(e.__emotion_real===e)return e;if("function"==typeof e)return function(t){return processStyle(t,e,t.theme.modularCssLayers?l:void 0)};if(isPlainObject(e)){const t=preprocessStyles(e);return function(e){return t.variants?processStyle(e,t,e.theme.modularCssLayers?l:void 0):e.theme.modularCssLayers?shallowLayer(t.style,l):t.style}}return e},muiStyledResolver=(...t)=>{const n=[],o=t.map(transformStyle),a=[];if(n.push(styleAttachTheme),g&&i&&a.push(function(e){const t=e.theme.components?.[g]?.styleOverrides;if(!t)return null;const n={};for(const g in t)n[g]=processStyle(e,t[g],e.theme.modularCssLayers?"theme":void 0);return i(e,n)}),g&&!c&&a.push(function(e){const t=e.theme?.components?.[g]?.variants;return t?processStyleVariants(e,t,[],e.theme.modularCssLayers?"theme":void 0):null}),u||a.push(vA),Array.isArray(o[0])){const e=o.shift(),t=new Array(n.length).fill(""),g=new Array(a.length).fill("");let C;C=[...t,...e,...g],C.raw=[...t,...e.raw,...g],n.unshift(C)}const C=p(...n,...o,...a);return e.muiName&&(C.muiName=e.muiName),C};return p.withConfig&&(muiStyledResolver.withConfig=p.withConfig),muiStyledResolver};return styled}function generateStyledLabel(e,t){}function isStringTag(e){return"string"==typeof e&&e.charCodeAt(0)>96}function lowercaseFirstLetter(e){return e?e.charAt(0).toLowerCase()+e.slice(1):e}var EA=createStyled();function resolveProps(e,t,g=!1){const n={...t};for(const o in e)if(Object.prototype.hasOwnProperty.call(e,o)){const a=o;if("components"===a||"slots"===a)n[a]={...e[a],...n[a]};else if("componentsProps"===a||"slotProps"===a){const o=e[a],C=t[a];if(C)if(o){n[a]={...C};for(const e in o)if(Object.prototype.hasOwnProperty.call(o,e)){const t=e;n[a][t]=resolveProps(o[t],C[t],g)}}else n[a]=C;else n[a]=o||{}}else"className"===a&&g&&void 0!==t.className?n.className=clsx(e?.className,t?.className):"style"===a&&g&&t.style?n.style={...e?.style,...t?.style}:void 0===n[a]&&(n[a]=e[a])}return n}function getThemeProps$1(e){const{theme:t,name:g,props:n}=e;return t&&t.components&&t.components[g]&&t.components[g].defaultProps?resolveProps(t.components[g].defaultProps,n):n}function useThemeProps({props:e,name:t,defaultTheme:g,themeId:n}){let o=useTheme$3(g);return n&&(o=o[n]||o),getThemeProps$1({theme:o,name:t,props:e})}var RA="undefined"!=typeof window?l.useLayoutEffect:l.useEffect;function clamp$2(e,t=Number.MIN_SAFE_INTEGER,g=Number.MAX_SAFE_INTEGER){return Math.max(t,Math.min(e,g))}function clampWrapper(e,t=0,g=1){return clamp$2(e,t,g)}function hexToRgb(e){e=e.slice(1);const t=new RegExp(`.{1,${e.length>=6?2:1}}`,"g");let g=e.match(t);return g&&1===g[0].length&&(g=g.map(e=>e+e)),g?`rgb${4===g.length?"a":""}(${g.map((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3).join(", ")})`:""}function decomposeColor(e){if(e.type)return e;if("#"===e.charAt(0))return decomposeColor(hexToRgb(e));const t=e.indexOf("("),g=e.substring(0,t);if(!["rgb","rgba","hsl","hsla","color"].includes(g))throw new Error(formatMuiErrorMessage(9,e));let n,o=e.substring(t+1,e.length-1);if("color"===g){if(o=o.split(" "),n=o.shift(),4===o.length&&"/"===o[3].charAt(0)&&(o[3]=o[3].slice(1)),!["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].includes(n))throw new Error(formatMuiErrorMessage(10,n))}else o=o.split(",");return o=o.map(e=>parseFloat(e)),{type:g,values:o,colorSpace:n}}var colorChannel=e=>{const t=decomposeColor(e);return t.values.slice(0,3).map((e,g)=>t.type.includes("hsl")&&0!==g?`${e}%`:e).join(" ")},private_safeColorChannel=(e,t)=>{try{return colorChannel(e)}catch(g){return e}};function recomposeColor(e){const{type:t,colorSpace:g}=e;let{values:n}=e;return t.includes("rgb")?n=n.map((e,t)=>t<3?parseInt(e,10):e):t.includes("hsl")&&(n[1]=`${n[1]}%`,n[2]=`${n[2]}%`),n=t.includes("color")?`${g} ${n.join(" ")}`:`${n.join(", ")}`,`${t}(${n})`}function hslToRgb(e){e=decomposeColor(e);const{values:t}=e,g=t[0],n=t[1]/100,o=t[2]/100,a=n*Math.min(o,1-o),f=(e,t=(e+g/30)%12)=>o-a*Math.max(Math.min(t-3,9-t,1),-1);let C="rgb";const I=[Math.round(255*f(0)),Math.round(255*f(8)),Math.round(255*f(4))];return"hsla"===e.type&&(C+="a",I.push(t[3])),recomposeColor({type:C,values:I})}function getLuminance(e){let t="hsl"===(e=decomposeColor(e)).type||"hsla"===e.type?decomposeColor(hslToRgb(e)).values:e.values;return t=t.map(t=>("color"!==e.type&&(t/=255),t<=.03928?t/12.92:((t+.055)/1.055)**2.4)),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function getContrastRatio(e,t){const g=getLuminance(e),n=getLuminance(t);return(Math.max(g,n)+.05)/(Math.min(g,n)+.05)}function alpha(e,t){return e=decomposeColor(e),t=clampWrapper(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]=`/${t}`:e.values[3]=t,recomposeColor(e)}function private_safeAlpha(e,t,g){try{return alpha(e,t)}catch(n){return e}}function darken(e,t){if(e=decomposeColor(e),t=clampWrapper(t),e.type.includes("hsl"))e.values[2]*=1-t;else if(e.type.includes("rgb")||e.type.includes("color"))for(let g=0;g<3;g+=1)e.values[g]*=1-t;return recomposeColor(e)}function private_safeDarken(e,t,g){try{return darken(e,t)}catch(n){return e}}function lighten(e,t){if(e=decomposeColor(e),t=clampWrapper(t),e.type.includes("hsl"))e.values[2]+=(100-e.values[2])*t;else if(e.type.includes("rgb"))for(let g=0;g<3;g+=1)e.values[g]+=(255-e.values[g])*t;else if(e.type.includes("color"))for(let g=0;g<3;g+=1)e.values[g]+=(1-e.values[g])*t;return recomposeColor(e)}function private_safeLighten(e,t,g){try{return lighten(e,t)}catch(n){return e}}function emphasize(e,t=.15){return getLuminance(e)>.5?darken(e,t):lighten(e,t)}function private_safeEmphasize(e,t,g){try{return emphasize(e,t)}catch(n){return e}}var TA=l.createContext(null);function useTheme$2(){return l.useContext(TA)}var MA="function"==typeof Symbol&&Symbol.for?Symbol.for("mui.nested"):"__THEME_NESTED__";function mergeOuterLocalTheme(e,t){return"function"==typeof t?t(e):{...e,...t}}function ThemeProvider$2(e){const{children:t,theme:g}=e,n=useTheme$2(),o=l.useMemo(()=>{const e=null===n?{...g}:mergeOuterLocalTheme(n,g);return null!=e&&(e[MA]=null!==n),e},[g,n]);return(0,ja.jsx)(TA.Provider,{value:o,children:t})}var PA=l.createContext();function RtlProvider({value:e,...t}){return(0,ja.jsx)(PA.Provider,{value:e??!0,...t})}var useRtl=()=>l.useContext(PA)??!1,NA=l.createContext(void 0);function DefaultPropsProvider({value:e,children:t}){return(0,ja.jsx)(NA.Provider,{value:e,children:t})}function getThemeProps(e){const{theme:t,name:g,props:n}=e;if(!t||!t.components||!t.components[g])return n;const o=t.components[g];return o.defaultProps?resolveProps(o.defaultProps,n,t.components.mergeClassNameAndStyle):o.styleOverrides||o.variants?n:resolveProps(o,n,t.components.mergeClassNameAndStyle)}function useDefaultProps$1({props:e,name:t}){return getThemeProps({props:e,name:t,theme:{components:l.useContext(NA)}})}var zA=0;function useGlobalId(e){const[t,g]=l.useState(e),n=e||t;return l.useEffect(()=>{null==t&&g(`mui-${zA+=1}`)},[t]),n}var OA={...l}.useId;function useId$1(e){if(void 0!==OA){const t=OA();return e??t}return useGlobalId(e)}function useLayerOrder(e){const t=useTheme$4(),g=useId$1()||"",{modularCssLayers:n}=e;let o="mui.global, mui.components, mui.theme, mui.custom, mui.sx";return o=n&&null===t?"string"==typeof n?n.replace(/mui(?!\.)/g,o):`@layer ${o};`:"",RA(()=>{const e=document.querySelector("head");if(!e)return;const t=e.firstChild;if(o){if(t&&t.hasAttribute?.("data-mui-layer-order")&&t.getAttribute("data-mui-layer-order")===g)return;const n=document.createElement("style");n.setAttribute("data-mui-layer-order",g),n.textContent=o,e.prepend(n)}else e.querySelector(`style[data-mui-layer-order="${g}"]`)?.remove()},[o,g]),o?(0,ja.jsx)(GlobalStyles$1,{styles:o}):null}var DA={};function useThemeScoping(e,t,g,n=!1){return l.useMemo(()=>{const o=e&&t[e]||t;if("function"==typeof g){const a=g(o),C=e?{...t,[e]:a}:a;return n?()=>C:C}return e?{...t,[e]:g}:{...t,...g}},[e,t,g,n])}function ThemeProvider$1(e){const{children:t,theme:g,themeId:n}=e,o=useTheme$4(DA),a=useTheme$2()||DA,C=useThemeScoping(n,o,g),I=useThemeScoping(n,a,g,!0),i="rtl"===(n?C[n]:C).direction,s=useLayerOrder(C);return(0,ja.jsx)(ThemeProvider$2,{theme:I,children:(0,ja.jsx)(ha.Provider,{value:C,children:(0,ja.jsx)(RtlProvider,{value:i,children:(0,ja.jsxs)(DefaultPropsProvider,{value:n?C[n].components:C.components,children:[s,t]})})})})}var jA={theme:void 0};function unstable_memoTheme(e){let t,g;return function(n){let o=t;return void 0!==o&&n.theme===g||(jA.theme=n.theme,o=preprocessStyles(e(jA)),t=o,g=n.theme),o}}var LA="mode",GA="color-scheme",BA="data-color-scheme";function InitColorSchemeScript(e){const{defaultMode:t="system",defaultLightColorScheme:g="light",defaultDarkColorScheme:n="dark",modeStorageKey:o=LA,colorSchemeStorageKey:a=GA,attribute:C=BA,colorSchemeNode:I="document.documentElement",nonce:i}=e||{};let s="",l=C;if("class"===C&&(l=".%s"),"data"===C&&(l="[data-%s]"),l.startsWith(".")){const e=l.substring(1);s+=`${I}.classList.remove('${e}'.replace('%s', light), '${e}'.replace('%s', dark));\n ${I}.classList.add('${e}'.replace('%s', colorScheme));`}const c=l.match(/\[([^[\]]+)\]/);if(c){const[e,t]=c[1].split("=");t||(s+=`${I}.removeAttribute('${e}'.replace('%s', light));\n ${I}.removeAttribute('${e}'.replace('%s', dark));`),s+=`\n ${I}.setAttribute('${e}'.replace('%s', colorScheme), ${t?`${t}.replace('%s', colorScheme)`:'""'});`}else".%s"!==l&&(s+=`${I}.setAttribute('${l}', colorScheme);`);return(0,ja.jsx)("script",{suppressHydrationWarning:!0,nonce:"undefined"==typeof window?i:"",dangerouslySetInnerHTML:{__html:`(function() {\ntry {\n let colorScheme = '';\n const mode = localStorage.getItem('${o}') || '${t}';\n const dark = localStorage.getItem('${a}-dark') || '${n}';\n const light = localStorage.getItem('${a}-light') || '${g}';\n if (mode === 'system') {\n // handle system mode\n const mql = window.matchMedia('(prefers-color-scheme: dark)');\n if (mql.matches) {\n colorScheme = dark\n } else {\n colorScheme = light\n }\n }\n if (mode === 'light') {\n colorScheme = light;\n }\n if (mode === 'dark') {\n colorScheme = dark;\n }\n if (colorScheme) {\n ${s}\n }\n} catch(e){}})();`}},"mui-color-scheme-init")}function noop$7(){}var localStorageManager=({key:e,storageWindow:t})=>(t||"undefined"==typeof window||(t=window),{get(g){if("undefined"==typeof window)return;if(!t)return g;let n;try{n=t.localStorage.getItem(e)}catch{}return n||g},set:g=>{if(t)try{t.localStorage.setItem(e,g)}catch{}},subscribe:g=>{if(!t)return noop$7;const listener=t=>{const n=t.newValue;t.key===e&&g(n)};return t.addEventListener("storage",listener),()=>{t.removeEventListener("storage",listener)}}});function noop$6(){}function getSystemMode(e){if("undefined"!=typeof window&&"function"==typeof window.matchMedia&&"system"===e)return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function processState(e,t){return"light"===e.mode||"system"===e.mode&&"light"===e.systemMode?t("light"):"dark"===e.mode||"system"===e.mode&&"dark"===e.systemMode?t("dark"):void 0}function getColorScheme(e){return processState(e,t=>"light"===t?e.lightColorScheme:"dark"===t?e.darkColorScheme:void 0)}function useCurrentColorScheme(e){const{defaultMode:t="light",defaultLightColorScheme:g,defaultDarkColorScheme:n,supportedColorSchemes:o=[],modeStorageKey:a=LA,colorSchemeStorageKey:C=GA,storageWindow:I=("undefined"==typeof window?void 0:window),storageManager:i=localStorageManager,noSsr:s=!1}=e,c=o.join(","),u=o.length>1,d=l.useMemo(()=>i?.({key:a,storageWindow:I}),[i,a,I]),p=l.useMemo(()=>i?.({key:`${C}-light`,storageWindow:I}),[i,C,I]),m=l.useMemo(()=>i?.({key:`${C}-dark`,storageWindow:I}),[i,C,I]),[h,y]=l.useState(()=>{const e=d?.get(t)||t,o=p?.get(g)||g,a=m?.get(n)||n;return{mode:e,systemMode:getSystemMode(e),lightColorScheme:o,darkColorScheme:a}}),[b,v]=l.useState(s||!u);l.useEffect(()=>{v(!0)},[]);const x=getColorScheme(h),S=l.useCallback(e=>{y(g=>{if(e===g.mode)return g;const n=e??t;return d?.set(n),{...g,mode:n,systemMode:getSystemMode(n)}})},[d,t]),w=l.useCallback(e=>{e?"string"==typeof e?e&&!c.includes(e)?console.error(`\`${e}\` does not exist in \`theme.colorSchemes\`.`):y(t=>{const g={...t};return processState(t,t=>{"light"===t&&(p?.set(e),g.lightColorScheme=e),"dark"===t&&(m?.set(e),g.darkColorScheme=e)}),g}):y(t=>{const o={...t},a=null===e.light?g:e.light,C=null===e.dark?n:e.dark;return a&&(c.includes(a)?(o.lightColorScheme=a,p?.set(a)):console.error(`\`${a}\` does not exist in \`theme.colorSchemes\`.`)),C&&(c.includes(C)?(o.darkColorScheme=C,m?.set(C)):console.error(`\`${C}\` does not exist in \`theme.colorSchemes\`.`)),o}):y(e=>(p?.set(g),m?.set(n),{...e,lightColorScheme:g,darkColorScheme:n}))},[c,p,m,g,n]),E=l.useCallback(e=>{"system"===h.mode&&y(t=>{const g=e?.matches?"dark":"light";return t.systemMode===g?t:{...t,systemMode:g}})},[h.mode]),R=l.useRef(E);return R.current=E,l.useEffect(()=>{if("function"!=typeof window.matchMedia||!u)return;const handler=(...e)=>R.current(...e),e=window.matchMedia("(prefers-color-scheme: dark)");return e.addListener(handler),handler(e),()=>{e.removeListener(handler)}},[u]),l.useEffect(()=>{if(u){const e=d?.subscribe(e=>{e&&!["light","dark","system"].includes(e)||S(e||t)})||noop$6,g=p?.subscribe(e=>{e&&!c.match(e)||w({light:e})})||noop$6,n=m?.subscribe(e=>{e&&!c.match(e)||w({dark:e})})||noop$6;return()=>{e(),g(),n()}}},[w,S,c,t,I,u,d,p,m]),{...h,mode:b?h.mode:void 0,systemMode:b?h.systemMode:void 0,colorScheme:b?x:void 0,setMode:S,setColorScheme:w}}var FA="*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function createCssVarsProvider(e){const{themeId:t,theme:g={},modeStorageKey:n=LA,colorSchemeStorageKey:o=GA,disableTransitionOnChange:a=!1,defaultColorScheme:C,resolveTheme:I}=e,i={allColorSchemes:[],colorScheme:void 0,darkColorScheme:void 0,lightColorScheme:void 0,mode:void 0,setColorScheme:()=>{},setMode:()=>{},systemMode:void 0},s=l.createContext(void 0),useColorScheme=()=>l.useContext(s)||i,c={},u={};function CssVarsProvider(e){const{children:i,theme:d,modeStorageKey:p=n,colorSchemeStorageKey:m=o,disableTransitionOnChange:h=a,storageManager:y,storageWindow:b=("undefined"==typeof window?void 0:window),documentNode:v=("undefined"==typeof document?void 0:document),colorSchemeNode:x=("undefined"==typeof document?void 0:document.documentElement),disableNestedContext:S=!1,disableStyleSheetGeneration:w=!1,defaultMode:E="system",forceThemeRerender:R=!1,noSsr:T}=e,M=l.useRef(!1),P=useTheme$2(),N=l.useContext(s),O=!!N&&!S,D=l.useMemo(()=>d||("function"==typeof g?g():g),[d]),j=D[t],L=j||D,{colorSchemes:G=c,components:B=u,cssVarPrefix:F}=L,W=Object.keys(G).filter(e=>!!G[e]).join(","),V=l.useMemo(()=>W.split(","),[W]),U="string"==typeof C?C:C.light,Z="string"==typeof C?C:C.dark,{mode:K,setMode:H,systemMode:Y,lightColorScheme:$,darkColorScheme:Q,colorScheme:X,setColorScheme:J}=useCurrentColorScheme({supportedColorSchemes:V,defaultLightColorScheme:U,defaultDarkColorScheme:Z,modeStorageKey:p,colorSchemeStorageKey:m,defaultMode:G[U]&&G[Z]?E:G[L.defaultColorScheme]?.palette?.mode||L.palette?.mode,storageManager:y,storageWindow:b,noSsr:T});let q=K,ee=X;O&&(q=N.mode,ee=N.colorScheme);let te=ee||L.defaultColorScheme;L.vars&&!R&&(te=L.defaultColorScheme);const ge=l.useMemo(()=>{const e=L.generateThemeVars?.()||L.vars,t={...L,components:B,colorSchemes:G,cssVarPrefix:F,vars:e};if("function"==typeof t.generateSpacing&&(t.spacing=t.generateSpacing()),te){const e=G[te];e&&"object"==typeof e&&Object.keys(e).forEach(g=>{e[g]&&"object"==typeof e[g]?t[g]={...t[g],...e[g]}:t[g]=e[g]})}return I?I(t):t},[L,te,B,G,F]),ne=L.colorSchemeSelector;RA(()=>{if(ee&&x&&ne&&"media"!==ne){const e=ne;let t=ne;if("class"===e&&(t=".%s"),"data"===e&&(t="[data-%s]"),e?.startsWith("data-")&&!e.includes("%s")&&(t=`[${e}="%s"]`),t.startsWith("."))x.classList.remove(...V.map(e=>t.substring(1).replace("%s",e))),x.classList.add(t.substring(1).replace("%s",ee));else{const e=t.replace("%s",ee).match(/\[([^\]]+)\]/);if(e){const[t,g]=e[1].split("=");g||V.forEach(e=>{x.removeAttribute(t.replace(ee,e))}),x.setAttribute(t,g?g.replace(/"|'/g,""):"")}else x.setAttribute(t,ee)}}},[ee,ne,x,V]),l.useEffect(()=>{let e;if(h&&M.current&&v){const t=v.createElement("style");t.appendChild(v.createTextNode(FA)),v.head.appendChild(t),window.getComputedStyle(v.body),e=setTimeout(()=>{v.head.removeChild(t)},1)}return()=>{clearTimeout(e)}},[ee,h,v]),l.useEffect(()=>(M.current=!0,()=>{M.current=!1}),[]);const re=l.useMemo(()=>({allColorSchemes:V,colorScheme:ee,darkColorScheme:Q,lightColorScheme:$,mode:q,setColorScheme:J,setMode:H,systemMode:Y}),[V,ee,Q,$,q,J,H,Y,ge.colorSchemeSelector]);let oe=!0;(w||!1===L.cssVariables||O&&P?.cssVarPrefix===F)&&(oe=!1);const ae=(0,ja.jsxs)(l.Fragment,{children:[(0,ja.jsx)(ThemeProvider$1,{themeId:j?t:void 0,theme:ge,children:i}),oe&&(0,ja.jsx)(GlobalStyles$2,{styles:ge.generateStyleSheets?.()||[]})]});return O?ae:(0,ja.jsx)(s.Provider,{value:re,children:ae})}const d="string"==typeof C?C:C.light,p="string"==typeof C?C:C.dark;return{CssVarsProvider,useColorScheme,getInitColorSchemeScript:e=>InitColorSchemeScript({colorSchemeStorageKey:o,defaultLightColorScheme:d,defaultDarkColorScheme:p,modeStorageKey:n,...e})}}function createGetCssVar$1(e=""){function appendVar(...t){if(!t.length)return"";const g=t[0];return"string"!=typeof g||g.match(/(#|\(|\)|(-?(\d*\.)?\d+)(px|em|%|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc))|^(-?(\d*\.)?\d+)$|(\d+ \d+ \d+)/)?`, ${g}`:`, var(--${e?`${e}-`:""}${g}${appendVar(...t.slice(1))})`}return(t,...g)=>`var(--${e?`${e}-`:""}${t}${appendVar(...g)})`}var assignNestedKeys=(e,t,g,n=[])=>{let o=e;t.forEach((e,a)=>{a===t.length-1?Array.isArray(o)?o[Number(e)]=g:o&&"object"==typeof o&&(o[e]=g):o&&"object"==typeof o&&(o[e]||(o[e]=n.includes(e)?[]:{}),o=o[e])})},walkObjectDeep=(e,t,g)=>{function recurse(e,n=[],o=[]){Object.entries(e).forEach(([e,a])=>{(!g||g&&!g([...n,e]))&&null!=a&&("object"==typeof a&&Object.keys(a).length>0?recurse(a,[...n,e],Array.isArray(a)?[...o,e]:o):t([...n,e],a,o))})}recurse(e)},getCssValue=(e,t)=>"number"==typeof t?["lineHeight","fontWeight","opacity","zIndex"].some(t=>e.includes(t))||e[e.length-1].toLowerCase().includes("opacity")?t:`${t}px`:t;function cssVarsParser(e,t){const{prefix:g,shouldSkipGeneratingVar:n}=t||{},o={},a={},C={};return walkObjectDeep(e,(e,t,I)=>{if(!("string"!=typeof t&&"number"!=typeof t||n&&n(e,t))){const n=`--${g?`${g}-`:""}${e.join("-")}`,i=getCssValue(e,t);Object.assign(o,{[n]:i}),assignNestedKeys(a,e,`var(${n})`,I),assignNestedKeys(C,e,`var(${n}, ${i})`,I)}},e=>"vars"===e[0]),{css:o,vars:a,varsWithDefaults:C}}function prepareCssVars(e,t={}){const{getSelector:g=defaultGetSelector,disableCssColorScheme:n,colorSchemeSelector:o,enableContrastVars:a}=t,{colorSchemes:C={},components:I,defaultColorScheme:i="light",...s}=e,{vars:l,css:c,varsWithDefaults:u}=cssVarsParser(s,t);let d=u;const p={},{[i]:m,...h}=C;if(Object.entries(h||{}).forEach(([e,g])=>{const{vars:n,css:o,varsWithDefaults:a}=cssVarsParser(g,t);d=deepmerge(d,a),p[e]={css:o,vars:n}}),m){const{css:e,vars:g,varsWithDefaults:n}=cssVarsParser(m,t);d=deepmerge(d,n),p[i]={css:e,vars:g}}function defaultGetSelector(t,g){let n=o;if("class"===o&&(n=".%s"),"data"===o&&(n="[data-%s]"),o?.startsWith("data-")&&!o.includes("%s")&&(n=`[${o}="%s"]`),t){if("media"===n)return e.defaultColorScheme===t?":root":{[`@media (prefers-color-scheme: ${C[t]?.palette?.mode||t})`]:{":root":g}};if(n)return e.defaultColorScheme===t?`:root, ${n.replace("%s",String(t))}`:n.replace("%s",String(t))}return":root"}const generateStyleSheets=()=>{const t=[],o=e.defaultColorScheme||"light";function insertStyleSheet(e,g){Object.keys(g).length&&t.push("string"==typeof e?{[e]:{...g}}:e)}insertStyleSheet(g(void 0,{...c}),c);const{[o]:I,...i}=p;if(I){const{css:e}=I,t=C[o]?.palette?.mode,a=!n&&t?{colorScheme:t,...e}:{...e};insertStyleSheet(g(o,{...a}),a)}return Object.entries(i).forEach(([e,{css:t}])=>{const o=C[e]?.palette?.mode,a=!n&&o?{colorScheme:o,...t}:{...t};insertStyleSheet(g(e,{...a}),a)}),a&&t.push({":root":{"--__l-threshold":"0.7","--__l":"clamp(0, (l / var(--__l-threshold) - 1) * -infinity, 1)","--__a":"clamp(0.87, (l / var(--__l-threshold) - 1) * -infinity, 1)"}}),t};return{vars:d,generateThemeVars:()=>{let e={...l};return Object.entries(p).forEach(([,{vars:t}])=>{e=deepmerge(e,t)}),e},generateStyleSheets}}function createGetColorSchemeSelector(e){return function(t){return"media"===e?`@media (prefers-color-scheme: ${t})`:e?e.startsWith("data-")&&!e.includes("%s")?`[${e}="${t}"] &`:"class"===e?`.${t} &`:"data"===e?`[data-${t}] &`:`${e.replace("%s",t)} &`:"&"}}function composeClasses(e,t,g=void 0){const n={};for(const o in e){const a=e[o];let C="",I=!0;for(let e=0;e<a.length;e+=1){const n=a[e];n&&(C+=(!0===I?"":" ")+t(n),I=!1,g&&g[n]&&(C+=" "+g[n]))}n[o]=C}return n}function isMuiElement(e,t){return l.isValidElement(e)&&-1!==t.indexOf(e.type.muiName??e.type?._payload?.value?.muiName)}var WA=createTheme$1(),VA=EA("div",{name:"MuiStack",slot:"Root"});function useThemePropsDefault(e){return useThemeProps({props:e,name:"MuiStack",defaultTheme:WA})}function joinChildren(e,t){const g=l.Children.toArray(e).filter(Boolean);return g.reduce((e,n,o)=>(e.push(n),o<g.length-1&&e.push(l.cloneElement(t,{key:`separator-${o}`})),e),[])}var getSideFromDirection=e=>({row:"Left","row-reverse":"Right",column:"Top","column-reverse":"Bottom"}[e]),style=({ownerState:e,theme:t})=>{let g={display:"flex",flexDirection:"column",...handleBreakpoints({theme:t},resolveBreakpointValues({values:e.direction,breakpoints:t.breakpoints.values}),e=>({flexDirection:e}))};if(e.spacing){const n=createUnarySpacing(t),o=Object.keys(t.breakpoints.values).reduce((t,g)=>(("object"==typeof e.spacing&&null!=e.spacing[g]||"object"==typeof e.direction&&null!=e.direction[g])&&(t[g]=!0),t),{}),a=resolveBreakpointValues({values:e.direction,base:o}),C=resolveBreakpointValues({values:e.spacing,base:o});"object"==typeof a&&Object.keys(a).forEach((e,t,g)=>{a[e]||(a[e]=t>0?a[g[t-1]]:"column")}),g=deepmerge(g,handleBreakpoints({theme:t},C,(t,g)=>e.useFlexGap?{gap:getValue(n,t)}:{"& > :not(style):not(style)":{margin:0},"& > :not(style) ~ :not(style)":{[`margin${getSideFromDirection(g?a[g]:e.direction)}`]:getValue(n,t)}}))}return g=mergeBreakpointsInOrder(t.breakpoints,g),g};function createStack(e={}){const{createStyledComponent:t=VA,useThemeProps:g=useThemePropsDefault,componentName:n="MuiStack"}=e,useUtilityClasses=()=>composeClasses({root:["root"]},e=>generateUtilityClass(n,e),{}),o=t(style);return l.forwardRef(function(e,t){const{component:n="div",direction:a="column",spacing:C=0,divider:I,children:i,className:s,useFlexGap:l=!1,...c}=g(e);return(0,ja.jsx)(o,{as:n,ownerState:{direction:a,spacing:C,useFlexGap:l},ref:t,className:clsx(useUtilityClasses().root,s),...c,children:I?joinChildren(i,I):i})})}var _A="$$material",UA={black:"#000",white:"#fff"},ZA={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"},KA={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff"},HA={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},YA={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},$A={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},QA={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea"},XA={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"};function getLight(){return{text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:UA.white,default:UA.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}}}var JA=getLight();function getDark(){return{text:{primary:UA.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:"#121212",default:"#121212"},action:{active:UA.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}}}var qA=getDark();function addLightOrDark(e,t,g,n){const o=n.light||n,a=n.dark||1.5*n;e[t]||(e.hasOwnProperty(g)?e[t]=e[g]:"light"===t?e.light=lighten(e.main,o):"dark"===t&&(e.dark=darken(e.main,a)))}function mixLightOrDark(e,t,g,n,o){const a=o.light||o,C=o.dark||1.5*o;t[g]||(t.hasOwnProperty(n)?t[g]=t[n]:"light"===g?t.light=`color-mix(in ${e}, ${t.main}, #fff ${(100*a).toFixed(0)}%)`:"dark"===g&&(t.dark=`color-mix(in ${e}, ${t.main}, #000 ${(100*C).toFixed(0)}%)`))}function getDefaultPrimary(e="light"){return"dark"===e?{main:$A[200],light:$A[50],dark:$A[400]}:{main:$A[700],light:$A[400],dark:$A[800]}}function getDefaultSecondary(e="light"){return"dark"===e?{main:KA[200],light:KA[50],dark:KA[400]}:{main:KA[500],light:KA[300],dark:KA[700]}}function getDefaultError(e="light"){return"dark"===e?{main:HA[500],light:HA[300],dark:HA[700]}:{main:HA[700],light:HA[400],dark:HA[800]}}function getDefaultInfo(e="light"){return"dark"===e?{main:QA[400],light:QA[300],dark:QA[700]}:{main:QA[700],light:QA[500],dark:QA[900]}}function getDefaultSuccess(e="light"){return"dark"===e?{main:XA[400],light:XA[300],dark:XA[700]}:{main:XA[800],light:XA[500],dark:XA[900]}}function getDefaultWarning(e="light"){return"dark"===e?{main:YA[400],light:YA[300],dark:YA[700]}:{main:"#ed6c02",light:YA[500],dark:YA[900]}}function contrastColor(e){return`oklch(from ${e} var(--__l) 0 h / var(--__a))`}function createPalette(e){const{mode:t="light",contrastThreshold:g=3,tonalOffset:n=.2,colorSpace:o,...a}=e,C=e.primary||getDefaultPrimary(t),I=e.secondary||getDefaultSecondary(t),i=e.error||getDefaultError(t),s=e.info||getDefaultInfo(t),l=e.success||getDefaultSuccess(t),c=e.warning||getDefaultWarning(t);function getContrastText(e){return o?contrastColor(e):getContrastRatio(e,qA.text.primary)>=g?qA.text.primary:JA.text.primary}const augmentColor=({color:e,name:t,mainShade:g=500,lightShade:a=300,darkShade:C=700})=>{if(!(e={...e}).main&&e[g]&&(e.main=e[g]),!e.hasOwnProperty("main"))throw new Error(formatMuiErrorMessage(11,t?` (${t})`:"",g));if("string"!=typeof e.main)throw new Error(formatMuiErrorMessage(12,t?` (${t})`:"",JSON.stringify(e.main)));return o?(mixLightOrDark(o,e,"light",a,n),mixLightOrDark(o,e,"dark",C,n)):(addLightOrDark(e,"light",a,n),addLightOrDark(e,"dark",C,n)),e.contrastText||(e.contrastText=getContrastText(e.main)),e};let u;return"light"===t?u=getLight():"dark"===t&&(u=getDark()),deepmerge({common:{...UA},mode:t,primary:augmentColor({color:C,name:"primary"}),secondary:augmentColor({color:I,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:augmentColor({color:i,name:"error"}),warning:augmentColor({color:c,name:"warning"}),info:augmentColor({color:s,name:"info"}),success:augmentColor({color:l,name:"success"}),grey:ZA,contrastThreshold:g,getContrastText,augmentColor,tonalOffset:n,...u},a)}function prepareTypographyVars(e){const t={};return Object.entries(e).forEach(e=>{const[g,n]=e;"object"==typeof n&&(t[g]=`${n.fontStyle?`${n.fontStyle} `:""}${n.fontVariant?`${n.fontVariant} `:""}${n.fontWeight?`${n.fontWeight} `:""}${n.fontStretch?`${n.fontStretch} `:""}${n.fontSize||""}${n.lineHeight?`/${n.lineHeight} `:""}${n.fontFamily||""}`)}),t}function createMixins(e,t){return{toolbar:{minHeight:56,[e.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[e.up("sm")]:{minHeight:64}},...t}}function round$2(e){return Math.round(1e5*e)/1e5}var eC={textTransform:"uppercase"},tC='"Roboto", "Helvetica", "Arial", sans-serif';function createTypography(e,t){const{fontFamily:g=tC,fontSize:n=14,fontWeightLight:o=300,fontWeightRegular:a=400,fontWeightMedium:C=500,fontWeightBold:I=700,htmlFontSize:i=16,allVariants:s,pxToRem:l,...c}="function"==typeof t?t(e):t,u=n/14,d=l||(e=>e/i*u+"rem"),buildVariant=(e,t,n,o,a)=>({fontFamily:g,fontWeight:e,fontSize:d(t),lineHeight:n,...g===tC?{letterSpacing:`${round$2(o/t)}em`}:{},...a,...s});return deepmerge({htmlFontSize:i,pxToRem:d,fontFamily:g,fontSize:n,fontWeightLight:o,fontWeightRegular:a,fontWeightMedium:C,fontWeightBold:I,h1:buildVariant(o,96,1.167,-1.5),h2:buildVariant(o,60,1.2,-.5),h3:buildVariant(a,48,1.167,0),h4:buildVariant(a,34,1.235,.25),h5:buildVariant(a,24,1.334,0),h6:buildVariant(C,20,1.6,.15),subtitle1:buildVariant(a,16,1.75,.15),subtitle2:buildVariant(C,14,1.57,.1),body1:buildVariant(a,16,1.5,.15),body2:buildVariant(a,14,1.43,.15),button:buildVariant(C,14,1.75,.4,eC),caption:buildVariant(a,12,1.66,.4),overline:buildVariant(a,12,2.66,1,eC),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}},c,{clone:!1})}var gC=.2,nC=.14,rC=.12;function createShadow(...e){return[`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px rgba(0,0,0,${gC})`,`${e[4]}px ${e[5]}px ${e[6]}px ${e[7]}px rgba(0,0,0,${nC})`,`${e[8]}px ${e[9]}px ${e[10]}px ${e[11]}px rgba(0,0,0,${rC})`].join(",")}var oC=["none",createShadow(0,2,1,-1,0,1,1,0,0,1,3,0),createShadow(0,3,1,-2,0,2,2,0,0,1,5,0),createShadow(0,3,3,-2,0,3,4,0,0,1,8,0),createShadow(0,2,4,-1,0,4,5,0,0,1,10,0),createShadow(0,3,5,-1,0,5,8,0,0,1,14,0),createShadow(0,3,5,-1,0,6,10,0,0,1,18,0),createShadow(0,4,5,-2,0,7,10,1,0,2,16,1),createShadow(0,5,5,-3,0,8,10,1,0,3,14,2),createShadow(0,5,6,-3,0,9,12,1,0,3,16,2),createShadow(0,6,6,-3,0,10,14,1,0,4,18,3),createShadow(0,6,7,-4,0,11,15,1,0,4,20,3),createShadow(0,7,8,-4,0,12,17,2,0,5,22,4),createShadow(0,7,8,-4,0,13,19,2,0,5,24,4),createShadow(0,7,9,-4,0,14,21,2,0,5,26,4),createShadow(0,8,9,-5,0,15,22,2,0,6,28,5),createShadow(0,8,10,-5,0,16,24,2,0,6,30,5),createShadow(0,8,11,-5,0,17,26,2,0,6,32,5),createShadow(0,9,11,-5,0,18,28,2,0,7,34,6),createShadow(0,9,12,-6,0,19,29,2,0,7,36,6),createShadow(0,10,13,-6,0,20,31,3,0,8,38,7),createShadow(0,10,13,-6,0,21,33,3,0,8,40,7),createShadow(0,10,14,-6,0,22,35,3,0,8,42,7),createShadow(0,11,14,-7,0,23,36,3,0,9,44,8),createShadow(0,11,15,-7,0,24,38,3,0,9,46,8)],aC={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},AC={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function formatMs(e){return`${Math.round(e)}ms`}function getAutoHeightDuration(e){if(!e)return 0;const t=e/36;return Math.min(Math.round(10*(4+15*t**.25+t/5)),3e3)}function createTransitions(e){const t={...aC,...e.easing},g={...AC,...e.duration};return{getAutoHeightDuration,create:(e=["all"],n={})=>{const{duration:o=g.standard,easing:a=t.easeInOut,delay:C=0,...I}=n;return(Array.isArray(e)?e:[e]).map(e=>`${e} ${"string"==typeof o?o:formatMs(o)} ${a} ${"string"==typeof C?C:formatMs(C)}`).join(",")},...e,easing:t,duration:g}}var CC={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};function isSerializable(e){return isPlainObject(e)||void 0===e||"string"==typeof e||"boolean"==typeof e||"number"==typeof e||Array.isArray(e)}function stringifyTheme(e={}){const t={...e};function serializeTheme(e){const t=Object.entries(e);for(let g=0;g<t.length;g++){const[n,o]=t[g];!isSerializable(o)||n.startsWith("unstable_")||n.startsWith("internal_")?delete e[n]:isPlainObject(o)&&(e[n]={...o},serializeTheme(e[n]))}}return serializeTheme(t),`import { unstable_createBreakpoints as createBreakpoints, createTransitions } from '@mui/material/styles';\n\nconst theme = ${JSON.stringify(t,null,2)};\n\ntheme.breakpoints = createBreakpoints(theme.breakpoints || {});\ntheme.transitions = createTransitions(theme.transitions || {});\n\nexport default theme;`}function coefficientToPercentage(e){return"number"==typeof e?`${(100*e).toFixed(0)}%`:`calc((${e}) * 100%)`}var parseAddition=e=>{if(!Number.isNaN(+e))return+e;const t=e.match(/\d*\.?\d+/g);if(!t)return 0;let g=0;for(let n=0;n<t.length;n+=1)g+=+t[n];return g};function attachColorManipulators(e){Object.assign(e,{alpha(t,g){const n=this||e;return n.colorSpace?`oklch(from ${t} l c h / ${"string"==typeof g?`calc(${g})`:g})`:n.vars?`rgba(${t.replace(/var\(--([^,\s)]+)(?:,[^)]+)?\)+/g,"var(--$1Channel)")} / ${"string"==typeof g?`calc(${g})`:g})`:alpha(t,parseAddition(g))},lighten(t,g){const n=this||e;return n.colorSpace?`color-mix(in ${n.colorSpace}, ${t}, #fff ${coefficientToPercentage(g)})`:lighten(t,g)},darken(t,g){const n=this||e;return n.colorSpace?`color-mix(in ${n.colorSpace}, ${t}, #000 ${coefficientToPercentage(g)})`:darken(t,g)}})}function createThemeNoVars(e={},...t){const{breakpoints:g,mixins:n={},spacing:o,palette:a={},transitions:C={},typography:I={},shape:i,colorSpace:s,...l}=e;if(e.vars&&void 0===e.generateThemeVars)throw new Error(formatMuiErrorMessage(22));const c=createPalette({...a,colorSpace:s}),u=createTheme$1(e);let d=deepmerge(u,{mixins:createMixins(u.breakpoints,n),palette:c,shadows:oC.slice(),typography:createTypography(c,I),transitions:createTransitions(C),zIndex:{...CC}});return d=deepmerge(d,l),d=t.reduce((e,t)=>deepmerge(e,t),d),d.unstable_sxConfig={...yA,...l?.unstable_sxConfig},d.unstable_sx=function(e){return vA({sx:e,theme:this})},d.toRuntimeSource=stringifyTheme,attachColorManipulators(d),d}function getOverlayAlpha(e){let t;return t=e<1?5.11916*e**2:4.5*Math.log(e+1)+2,Math.round(10*t)/1e3}var IC=[...Array(25)].map((e,t)=>{if(0===t)return"none";const g=getOverlayAlpha(t);return`linear-gradient(rgba(255 255 255 / ${g}), rgba(255 255 255 / ${g}))`});function getOpacity(e){return{inputPlaceholder:"dark"===e?.5:.42,inputUnderline:"dark"===e?.7:.42,switchTrackDisabled:"dark"===e?.2:.12,switchTrack:"dark"===e?.3:.38}}function getOverlays(e){return"dark"===e?IC:[]}function createColorScheme(e){const{palette:t={mode:"light"},opacity:g,overlays:n,colorSpace:o,...a}=e,C=createPalette({...t,colorSpace:o});return{palette:C,opacity:{...getOpacity(C.mode),...g},overlays:n||getOverlays(C.mode),...a}}function shouldSkipGeneratingVar(e){return!!e[0].match(/(cssVarPrefix|colorSchemeSelector|modularCssLayers|rootSelector|typography|mixins|breakpoints|direction|transitions)/)||!!e[0].match(/sxConfig$/)||"palette"===e[0]&&!!e[1]?.match(/(mode|contrastThreshold|tonalOffset)/)}var excludeVariablesFromRoot=e=>[...[...Array(25)].map((t,g)=>`--${e?`${e}-`:""}overlays-${g}`),`--${e?`${e}-`:""}palette-AppBar-darkBg`,`--${e?`${e}-`:""}palette-AppBar-darkColor`],createGetSelector_default=e=>(t,g)=>{const n=e.rootSelector||":root",o=e.colorSchemeSelector;let a=o;if("class"===o&&(a=".%s"),"data"===o&&(a="[data-%s]"),o?.startsWith("data-")&&!o.includes("%s")&&(a=`[${o}="%s"]`),e.defaultColorScheme===t){if("dark"===t){const o={};return excludeVariablesFromRoot(e.cssVarPrefix).forEach(e=>{o[e]=g[e],delete g[e]}),"media"===a?{[n]:g,"@media (prefers-color-scheme: dark)":{[n]:o}}:a?{[a.replace("%s",t)]:o,[`${n}, ${a.replace("%s",t)}`]:g}:{[n]:{...g,...o}}}if(a&&"media"!==a)return`${n}, ${a.replace("%s",String(t))}`}else if(t){if("media"===a)return{[`@media (prefers-color-scheme: ${String(t)})`]:{[n]:g}};if(a)return a.replace("%s",String(t))}return n};function assignNode(e,t){t.forEach(t=>{e[t]||(e[t]={})})}function setColor(e,t,g){!e[t]&&g&&(e[t]=g)}function toRgb(e){return"string"==typeof e&&e.startsWith("hsl")?hslToRgb(e):e}function setColorChannel(e,t){`${t}Channel`in e||(e[`${t}Channel`]=private_safeColorChannel(toRgb(e[t]),`MUI: Can't create \`palette.${t}Channel\` because \`palette.${t}\` is not one of these formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().\nTo suppress this warning, you need to explicitly provide the \`palette.${t}Channel\` as a string (in rgb format, for example "12 12 12") or undefined if you want to remove the channel token.`))}function getSpacingVal(e){return"number"==typeof e?`${e}px`:"string"==typeof e||"function"==typeof e||Array.isArray(e)?e:"8px"}var silent=e=>{try{return e()}catch(t){}},createGetCssVar=(e="mui")=>createGetCssVar$1(e);function attachColorScheme$1(e,t,g,n,o){if(!g)return;g=!0===g?{}:g;const a="dark"===o?"dark":"light";if(!n)return void(t[o]=createColorScheme({...g,palette:{mode:a,...g?.palette},colorSpace:e}));const{palette:C,...I}=createThemeNoVars({...n,palette:{mode:a,...g?.palette},colorSpace:e});return t[o]={...g,palette:C,opacity:{...getOpacity(a),...g?.opacity},overlays:g?.overlays||getOverlays(a)},I}function createThemeWithVars(e={},...t){const{colorSchemes:g={light:!0},defaultColorScheme:n,disableCssColorScheme:o=!1,cssVarPrefix:a="mui",nativeColor:C=!1,shouldSkipGeneratingVar:I=shouldSkipGeneratingVar,colorSchemeSelector:i=(g.light&&g.dark?"media":void 0),rootSelector:s=":root",...l}=e,c=Object.keys(g)[0],u=n||(g.light&&"light"!==c?"light":c),d=createGetCssVar(a),{[u]:p,light:m,dark:h,...y}=g,b={...y};let v,x=p;if(("dark"===u&&!("dark"in g)||"light"===u&&!("light"in g))&&(x=!0),!x)throw new Error(formatMuiErrorMessage(21,u));C&&(v="oklch");const S=attachColorScheme$1(v,b,x,l,u);m&&!b.light&&attachColorScheme$1(v,b,m,void 0,"light"),h&&!b.dark&&attachColorScheme$1(v,b,h,void 0,"dark");let w={defaultColorScheme:u,...S,cssVarPrefix:a,colorSchemeSelector:i,rootSelector:s,getCssVar:d,colorSchemes:b,font:{...prepareTypographyVars(S.typography),...S.font},spacing:getSpacingVal(l.spacing)};Object.keys(w.colorSchemes).forEach(e=>{const t=w.colorSchemes[e].palette,setCssVarColor=e=>{const g=e.split("-"),n=g[1],o=g[2];return d(e,t[n][o])};function colorMix(e,t,g){if(v){let n;return e===private_safeAlpha&&(n=`transparent ${(100*(1-g)).toFixed(0)}%`),e===private_safeDarken&&(n=`#000 ${(100*g).toFixed(0)}%`),e===private_safeLighten&&(n=`#fff ${(100*g).toFixed(0)}%`),`color-mix(in ${v}, ${t}, ${n})`}return e(t,g)}if("light"===t.mode&&(setColor(t.common,"background","#fff"),setColor(t.common,"onBackground","#000")),"dark"===t.mode&&(setColor(t.common,"background","#000"),setColor(t.common,"onBackground","#fff")),assignNode(t,["Alert","AppBar","Avatar","Button","Chip","FilledInput","LinearProgress","Skeleton","Slider","SnackbarContent","SpeedDialAction","StepConnector","StepContent","Switch","TableCell","Tooltip"]),"light"===t.mode){setColor(t.Alert,"errorColor",colorMix(private_safeDarken,C?d("palette-error-light"):t.error.light,.6)),setColor(t.Alert,"infoColor",colorMix(private_safeDarken,C?d("palette-info-light"):t.info.light,.6)),setColor(t.Alert,"successColor",colorMix(private_safeDarken,C?d("palette-success-light"):t.success.light,.6)),setColor(t.Alert,"warningColor",colorMix(private_safeDarken,C?d("palette-warning-light"):t.warning.light,.6)),setColor(t.Alert,"errorFilledBg",setCssVarColor("palette-error-main")),setColor(t.Alert,"infoFilledBg",setCssVarColor("palette-info-main")),setColor(t.Alert,"successFilledBg",setCssVarColor("palette-success-main")),setColor(t.Alert,"warningFilledBg",setCssVarColor("palette-warning-main")),setColor(t.Alert,"errorFilledColor",silent(()=>t.getContrastText(t.error.main))),setColor(t.Alert,"infoFilledColor",silent(()=>t.getContrastText(t.info.main))),setColor(t.Alert,"successFilledColor",silent(()=>t.getContrastText(t.success.main))),setColor(t.Alert,"warningFilledColor",silent(()=>t.getContrastText(t.warning.main))),setColor(t.Alert,"errorStandardBg",colorMix(private_safeLighten,C?d("palette-error-light"):t.error.light,.9)),setColor(t.Alert,"infoStandardBg",colorMix(private_safeLighten,C?d("palette-info-light"):t.info.light,.9)),setColor(t.Alert,"successStandardBg",colorMix(private_safeLighten,C?d("palette-success-light"):t.success.light,.9)),setColor(t.Alert,"warningStandardBg",colorMix(private_safeLighten,C?d("palette-warning-light"):t.warning.light,.9)),setColor(t.Alert,"errorIconColor",setCssVarColor("palette-error-main")),setColor(t.Alert,"infoIconColor",setCssVarColor("palette-info-main")),setColor(t.Alert,"successIconColor",setCssVarColor("palette-success-main")),setColor(t.Alert,"warningIconColor",setCssVarColor("palette-warning-main")),setColor(t.AppBar,"defaultBg",setCssVarColor("palette-grey-100")),setColor(t.Avatar,"defaultBg",setCssVarColor("palette-grey-400")),setColor(t.Button,"inheritContainedBg",setCssVarColor("palette-grey-300")),setColor(t.Button,"inheritContainedHoverBg",setCssVarColor("palette-grey-A100")),setColor(t.Chip,"defaultBorder",setCssVarColor("palette-grey-400")),setColor(t.Chip,"defaultAvatarColor",setCssVarColor("palette-grey-700")),setColor(t.Chip,"defaultIconColor",setCssVarColor("palette-grey-700")),setColor(t.FilledInput,"bg","rgba(0, 0, 0, 0.06)"),setColor(t.FilledInput,"hoverBg","rgba(0, 0, 0, 0.09)"),setColor(t.FilledInput,"disabledBg","rgba(0, 0, 0, 0.12)"),setColor(t.LinearProgress,"primaryBg",colorMix(private_safeLighten,C?d("palette-primary-main"):t.primary.main,.62)),setColor(t.LinearProgress,"secondaryBg",colorMix(private_safeLighten,C?d("palette-secondary-main"):t.secondary.main,.62)),setColor(t.LinearProgress,"errorBg",colorMix(private_safeLighten,C?d("palette-error-main"):t.error.main,.62)),setColor(t.LinearProgress,"infoBg",colorMix(private_safeLighten,C?d("palette-info-main"):t.info.main,.62)),setColor(t.LinearProgress,"successBg",colorMix(private_safeLighten,C?d("palette-success-main"):t.success.main,.62)),setColor(t.LinearProgress,"warningBg",colorMix(private_safeLighten,C?d("palette-warning-light"):t.warning.main,.62)),setColor(t.Skeleton,"bg",v?colorMix(private_safeAlpha,C?d("palette-text-primary"):t.text.primary,.11):`rgba(${setCssVarColor("palette-text-primaryChannel")} / 0.11)`),setColor(t.Slider,"primaryTrack",colorMix(private_safeLighten,C?d("palette-primary-main"):t.primary.main,.62)),setColor(t.Slider,"secondaryTrack",colorMix(private_safeLighten,C?d("palette-secondary-main"):t.secondary.main,.62)),setColor(t.Slider,"errorTrack",colorMix(private_safeLighten,C?d("palette-error-main"):t.error.main,.62)),setColor(t.Slider,"infoTrack",colorMix(private_safeLighten,C?d("palette-info-main"):t.info.main,.62)),setColor(t.Slider,"successTrack",colorMix(private_safeLighten,C?d("palette-success-main"):t.success.main,.62)),setColor(t.Slider,"warningTrack",colorMix(private_safeLighten,C?d("palette-warning-main"):t.warning.main,.62));const e=v?colorMix(private_safeDarken,C?d("palette-background-default"):t.background.default,.6825):private_safeEmphasize(t.background.default,.8);setColor(t.SnackbarContent,"bg",e),setColor(t.SnackbarContent,"color",silent(()=>v?qA.text.primary:t.getContrastText(e))),setColor(t.SpeedDialAction,"fabHoverBg",private_safeEmphasize(t.background.paper,.15)),setColor(t.StepConnector,"border",setCssVarColor("palette-grey-400")),setColor(t.StepContent,"border",setCssVarColor("palette-grey-400")),setColor(t.Switch,"defaultColor",setCssVarColor("palette-common-white")),setColor(t.Switch,"defaultDisabledColor",setCssVarColor("palette-grey-100")),setColor(t.Switch,"primaryDisabledColor",colorMix(private_safeLighten,C?d("palette-primary-main"):t.primary.main,.62)),setColor(t.Switch,"secondaryDisabledColor",colorMix(private_safeLighten,C?d("palette-secondary-main"):t.secondary.main,.62)),setColor(t.Switch,"errorDisabledColor",colorMix(private_safeLighten,C?d("palette-error-main"):t.error.main,.62)),setColor(t.Switch,"infoDisabledColor",colorMix(private_safeLighten,C?d("palette-info-main"):t.info.main,.62)),setColor(t.Switch,"successDisabledColor",colorMix(private_safeLighten,C?d("palette-success-main"):t.success.main,.62)),setColor(t.Switch,"warningDisabledColor",colorMix(private_safeLighten,C?d("palette-warning-main"):t.warning.main,.62)),setColor(t.TableCell,"border",colorMix(private_safeLighten,private_safeAlpha(C?d("palette-divider"):t.divider,1),.88)),setColor(t.Tooltip,"bg",colorMix(private_safeAlpha,C?d("palette-grey-700"):t.grey[700],.92))}if("dark"===t.mode){setColor(t.Alert,"errorColor",colorMix(private_safeLighten,C?d("palette-error-light"):t.error.light,.6)),setColor(t.Alert,"infoColor",colorMix(private_safeLighten,C?d("palette-info-light"):t.info.light,.6)),setColor(t.Alert,"successColor",colorMix(private_safeLighten,C?d("palette-success-light"):t.success.light,.6)),setColor(t.Alert,"warningColor",colorMix(private_safeLighten,C?d("palette-warning-light"):t.warning.light,.6)),setColor(t.Alert,"errorFilledBg",setCssVarColor("palette-error-dark")),setColor(t.Alert,"infoFilledBg",setCssVarColor("palette-info-dark")),setColor(t.Alert,"successFilledBg",setCssVarColor("palette-success-dark")),setColor(t.Alert,"warningFilledBg",setCssVarColor("palette-warning-dark")),setColor(t.Alert,"errorFilledColor",silent(()=>t.getContrastText(t.error.dark))),setColor(t.Alert,"infoFilledColor",silent(()=>t.getContrastText(t.info.dark))),setColor(t.Alert,"successFilledColor",silent(()=>t.getContrastText(t.success.dark))),setColor(t.Alert,"warningFilledColor",silent(()=>t.getContrastText(t.warning.dark))),setColor(t.Alert,"errorStandardBg",colorMix(private_safeDarken,C?d("palette-error-light"):t.error.light,.9)),setColor(t.Alert,"infoStandardBg",colorMix(private_safeDarken,C?d("palette-info-light"):t.info.light,.9)),setColor(t.Alert,"successStandardBg",colorMix(private_safeDarken,C?d("palette-success-light"):t.success.light,.9)),setColor(t.Alert,"warningStandardBg",colorMix(private_safeDarken,C?d("palette-warning-light"):t.warning.light,.9)),setColor(t.Alert,"errorIconColor",setCssVarColor("palette-error-main")),setColor(t.Alert,"infoIconColor",setCssVarColor("palette-info-main")),setColor(t.Alert,"successIconColor",setCssVarColor("palette-success-main")),setColor(t.Alert,"warningIconColor",setCssVarColor("palette-warning-main")),setColor(t.AppBar,"defaultBg",setCssVarColor("palette-grey-900")),setColor(t.AppBar,"darkBg",setCssVarColor("palette-background-paper")),setColor(t.AppBar,"darkColor",setCssVarColor("palette-text-primary")),setColor(t.Avatar,"defaultBg",setCssVarColor("palette-grey-600")),setColor(t.Button,"inheritContainedBg",setCssVarColor("palette-grey-800")),setColor(t.Button,"inheritContainedHoverBg",setCssVarColor("palette-grey-700")),setColor(t.Chip,"defaultBorder",setCssVarColor("palette-grey-700")),setColor(t.Chip,"defaultAvatarColor",setCssVarColor("palette-grey-300")),setColor(t.Chip,"defaultIconColor",setCssVarColor("palette-grey-300")),setColor(t.FilledInput,"bg","rgba(255, 255, 255, 0.09)"),setColor(t.FilledInput,"hoverBg","rgba(255, 255, 255, 0.13)"),setColor(t.FilledInput,"disabledBg","rgba(255, 255, 255, 0.12)"),setColor(t.LinearProgress,"primaryBg",colorMix(private_safeDarken,C?d("palette-primary-main"):t.primary.main,.5)),setColor(t.LinearProgress,"secondaryBg",colorMix(private_safeDarken,C?d("palette-secondary-main"):t.secondary.main,.5)),setColor(t.LinearProgress,"errorBg",colorMix(private_safeDarken,C?d("palette-error-main"):t.error.main,.5)),setColor(t.LinearProgress,"infoBg",colorMix(private_safeDarken,C?d("palette-info-main"):t.info.main,.5)),setColor(t.LinearProgress,"successBg",colorMix(private_safeDarken,C?d("palette-success-main"):t.success.main,.5)),setColor(t.LinearProgress,"warningBg",colorMix(private_safeDarken,C?d("palette-warning-main"):t.warning.main,.5)),setColor(t.Skeleton,"bg",v?colorMix(private_safeAlpha,C?d("palette-text-primary"):t.text.primary,.13):`rgba(${setCssVarColor("palette-text-primaryChannel")} / 0.13)`),setColor(t.Slider,"primaryTrack",colorMix(private_safeDarken,C?d("palette-primary-main"):t.primary.main,.5)),setColor(t.Slider,"secondaryTrack",colorMix(private_safeDarken,C?d("palette-secondary-main"):t.secondary.main,.5)),setColor(t.Slider,"errorTrack",colorMix(private_safeDarken,C?d("palette-error-main"):t.error.main,.5)),setColor(t.Slider,"infoTrack",colorMix(private_safeDarken,C?d("palette-info-main"):t.info.main,.5)),setColor(t.Slider,"successTrack",colorMix(private_safeDarken,C?d("palette-success-main"):t.success.main,.5)),setColor(t.Slider,"warningTrack",colorMix(private_safeDarken,C?d("palette-warning-light"):t.warning.main,.5));const e=v?colorMix(private_safeLighten,C?d("palette-background-default"):t.background.default,.985):private_safeEmphasize(t.background.default,.98);setColor(t.SnackbarContent,"bg",e),setColor(t.SnackbarContent,"color",silent(()=>v?JA.text.primary:t.getContrastText(e))),setColor(t.SpeedDialAction,"fabHoverBg",private_safeEmphasize(t.background.paper,.15)),setColor(t.StepConnector,"border",setCssVarColor("palette-grey-600")),setColor(t.StepContent,"border",setCssVarColor("palette-grey-600")),setColor(t.Switch,"defaultColor",setCssVarColor("palette-grey-300")),setColor(t.Switch,"defaultDisabledColor",setCssVarColor("palette-grey-600")),setColor(t.Switch,"primaryDisabledColor",colorMix(private_safeDarken,C?d("palette-primary-main"):t.primary.main,.55)),setColor(t.Switch,"secondaryDisabledColor",colorMix(private_safeDarken,C?d("palette-secondary-main"):t.secondary.main,.55)),setColor(t.Switch,"errorDisabledColor",colorMix(private_safeDarken,C?d("palette-error-main"):t.error.main,.55)),setColor(t.Switch,"infoDisabledColor",colorMix(private_safeDarken,C?d("palette-info-main"):t.info.main,.55)),setColor(t.Switch,"successDisabledColor",colorMix(private_safeDarken,C?d("palette-success-main"):t.success.main,.55)),setColor(t.Switch,"warningDisabledColor",colorMix(private_safeDarken,C?d("palette-warning-light"):t.warning.main,.55)),setColor(t.TableCell,"border",colorMix(private_safeDarken,private_safeAlpha(C?d("palette-divider"):t.divider,1),.68)),setColor(t.Tooltip,"bg",colorMix(private_safeAlpha,C?d("palette-grey-700"):t.grey[700],.92))}C||(setColorChannel(t.background,"default"),setColorChannel(t.background,"paper"),setColorChannel(t.common,"background"),setColorChannel(t.common,"onBackground"),setColorChannel(t,"divider")),Object.keys(t).forEach(e=>{const g=t[e];"tonalOffset"!==e&&!C&&g&&"object"==typeof g&&(g.main&&setColor(t[e],"mainChannel",private_safeColorChannel(toRgb(g.main))),g.light&&setColor(t[e],"lightChannel",private_safeColorChannel(toRgb(g.light))),g.dark&&setColor(t[e],"darkChannel",private_safeColorChannel(toRgb(g.dark))),g.contrastText&&setColor(t[e],"contrastTextChannel",private_safeColorChannel(toRgb(g.contrastText))),"text"===e&&(setColorChannel(t[e],"primary"),setColorChannel(t[e],"secondary")),"action"===e&&(g.active&&setColorChannel(t[e],"active"),g.selected&&setColorChannel(t[e],"selected")))})}),w=t.reduce((e,t)=>deepmerge(e,t),w);const E={prefix:a,disableCssColorScheme:o,shouldSkipGeneratingVar:I,getSelector:createGetSelector_default(w),enableContrastVars:C},{vars:R,generateThemeVars:T,generateStyleSheets:M}=prepareCssVars(w,E);return w.vars=R,Object.entries(w.colorSchemes[w.defaultColorScheme]).forEach(([e,t])=>{w[e]=t}),w.generateThemeVars=T,w.generateStyleSheets=M,w.generateSpacing=function(){return createSpacing(l.spacing,createUnarySpacing(this))},w.getColorSchemeSelector=createGetColorSchemeSelector(i),w.spacing=w.generateSpacing(),w.shouldSkipGeneratingVar=I,w.unstable_sxConfig={...yA,...l?.unstable_sxConfig},w.unstable_sx=function(e){return vA({sx:e,theme:this})},w.internal_cache={},w.toRuntimeSource=stringifyTheme,w}function attachColorScheme(e,t,g){e.colorSchemes&&g&&(e.colorSchemes[t]={...!0!==g&&g,palette:createPalette({...!0===g?{}:g.palette,mode:t})})}function createTheme(e={},...t){const{palette:g,cssVariables:n=!1,colorSchemes:o=(g?void 0:{light:!0}),defaultColorScheme:a=g?.mode,...C}=e,I=a||"light",i=o?.[I],s={...o,...g?{[I]:{..."boolean"!=typeof i&&i,palette:g}}:void 0};if(!1===n){if(!("colorSchemes"in e))return createThemeNoVars(e,...t);let n=g;"palette"in e||s[I]&&(!0!==s[I]?n=s[I].palette:"dark"===I&&(n={mode:"dark"}));const o=createThemeNoVars({...e,palette:n},...t);return o.defaultColorScheme=I,o.colorSchemes=s,"light"===o.palette.mode&&(o.colorSchemes.light={...!0!==s.light&&s.light,palette:o.palette},attachColorScheme(o,"dark",s.dark)),"dark"===o.palette.mode&&(o.colorSchemes.dark={...!0!==s.dark&&s.dark,palette:o.palette},attachColorScheme(o,"light",s.light)),o}return g||"light"in s||"light"!==I||(s.light=!0),createThemeWithVars({...C,colorSchemes:s,defaultColorScheme:I,..."boolean"!=typeof n&&n},...t)}var iC=createTheme();function useTheme$1(){const e=useTheme$3(iC);return e.$$material||e}function slotShouldForwardProp(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}var rootShouldForwardProp=e=>slotShouldForwardProp(e)&&"classes"!==e,sC=createStyled({themeId:_A,defaultTheme:iC,rootShouldForwardProp});function ThemeProviderNoVars({theme:e,...t}){const g="$$material"in e?e[_A]:void 0;return(0,ja.jsx)(ThemeProvider$1,{...t,themeId:g?_A:void 0,theme:g||e})}var lC={attribute:"data-mui-color-scheme",colorSchemeStorageKey:"mui-color-scheme",defaultLightColorScheme:"light",defaultDarkColorScheme:"dark",modeStorageKey:"mui-mode"},{CssVarsProvider:cC,useColorScheme:uC,getInitColorSchemeScript:dC}=createCssVarsProvider({themeId:_A,theme:()=>createTheme({cssVariables:!0}),colorSchemeStorageKey:lC.colorSchemeStorageKey,modeStorageKey:lC.modeStorageKey,defaultColorScheme:{light:lC.defaultLightColorScheme,dark:lC.defaultDarkColorScheme},resolveTheme:e=>{const t={...e,typography:createTypography(e.palette,e.typography)};return t.unstable_sx=function(e){return vA({sx:e,theme:this})},t}}),pC=cC;function ThemeProvider({theme:e,...t}){const g=l.useMemo(()=>{if("function"==typeof e)return e;const t="$$material"in e?e[_A]:e;return"colorSchemes"in t?null:"vars"in t?e:{...e,vars:null}},[e]);return g?(0,ja.jsx)(ThemeProviderNoVars,{theme:g,...t}):(0,ja.jsx)(pC,{theme:e,...t})}var mC=generateUtilityClasses("MuiBox",["root"]),fC=createBox({themeId:_A,defaultTheme:createTheme(),defaultClassName:mC.root,generateClassName:SA.generate}),cloneTokens=e=>structuredClone(e),buildHueFilter=e=>`hue-rotate(${e}deg)`,createMuiTheme=(e=ho)=>{const t=e??ho;return createTheme({spacing:t.spacing.unit,shape:{borderRadius:t.radius.panel},typography:{fontSize:t.theme.fontSize},palette:{mode:"dark",primary:{main:t.text.accent},background:{default:t.background.primary,paper:t.background.panel},text:{primary:t.text.primary,secondary:t.text.secondary,disabled:t.text.muted},hp:{main:t.game.hp},mp:{main:t.game.mp},ep:{main:t.game.ep},wp:{main:t.game.wp},nl:{main:t.game.nl},timerActive:{main:t.game.timerActive},timerCritical:{main:t.game.timerCritical}},components:{MuiTooltip:{defaultProps:{arrow:!0,placement:"top"}},MuiPaper:{defaultProps:{elevation:0}},MuiButton:{defaultProps:{size:"small"}},MuiSwitch:{defaultProps:{size:"small"}},MuiSlider:{defaultProps:{size:"small"}}},nexGui:{backgroundImage:resolveBackgroundImageSource(t.theme.backgroundImage),backgroundOpacity:t.theme.backgroundOpacity,backgroundFilter:buildHueFilter(t.theme.hue),radius:cloneTokens(t.radius),tokens:cloneTokens(t)}})};function GlobalStyles(e){return(0,ja.jsx)(GlobalStyles$1,{...e,defaultTheme:iC,themeId:_A})}function globalCss(e){return function(t){return(0,ja.jsx)(GlobalStyles,{styles:"function"==typeof e?g=>e({theme:g,...t}):e})}}var hC=unstable_memoTheme;function useDefaultProps(e){return useDefaultProps$1(e)}function getPaperUtilityClass(e){return generateUtilityClass("MuiPaper",e)}generateUtilityClasses("MuiPaper",["root","rounded","outlined","elevation","elevation0","elevation1","elevation2","elevation3","elevation4","elevation5","elevation6","elevation7","elevation8","elevation9","elevation10","elevation11","elevation12","elevation13","elevation14","elevation15","elevation16","elevation17","elevation18","elevation19","elevation20","elevation21","elevation22","elevation23","elevation24"]);var useUtilityClasses$38=e=>{const{square:t,elevation:g,variant:n,classes:o}=e;return composeClasses({root:["root",n,!t&&"rounded","elevation"===n&&`elevation${g}`]},getPaperUtilityClass,o)},yC=sC("div",{name:"MuiPaper",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.root,t[g.variant],!g.square&&t.rounded,"elevation"===g.variant&&t[`elevation${g.elevation}`]]}})(hC(({theme:e})=>({backgroundColor:(e.vars||e).palette.background.paper,color:(e.vars||e).palette.text.primary,transition:e.transitions.create("box-shadow"),variants:[{props:({ownerState:e})=>!e.square,style:{borderRadius:e.shape.borderRadius}},{props:{variant:"outlined"},style:{border:`1px solid ${(e.vars||e).palette.divider}`}},{props:{variant:"elevation"},style:{boxShadow:"var(--Paper-shadow)",backgroundImage:"var(--Paper-overlay)"}}]}))),bC=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiPaper"}),n=useTheme$1(),{className:o,component:a="div",elevation:C=1,square:I=!1,variant:i="elevation",...s}=g,l={...g,component:a,elevation:C,square:I,variant:i};return(0,ja.jsx)(yC,{as:a,ownerState:l,className:clsx(useUtilityClasses$38(l).root,o),ref:t,...s,style:{..."elevation"===i&&{"--Paper-shadow":(n.vars||n).shadows[C],...n.vars&&{"--Paper-overlay":n.vars.overlays?.[C]},...!n.vars&&"dark"===n.palette.mode&&{"--Paper-overlay":`linear-gradient(${alpha("#fff",getOverlayAlpha(C))}, ${alpha("#fff",getOverlayAlpha(C))})`}},...s.style}})}),vC=createStack({createStyledComponent:sC("div",{name:"MuiStack",slot:"Root"}),useThemeProps:e=>useDefaultProps({props:e,name:"MuiStack"})}),xC=__toESM(Oa(),1),DefenceTagComponent=({name:e})=>React.createElement(bC,{className:"defence-tag",elevation:3,sx:{fontFamily:"inherit",fontSize:"inherit",px:.75,py:"2px",textAlign:"center",width:"100%"}},e);DefenceTagComponent.displayName="DefenceTag",DefenceTagComponent.propTypes={name:xC.default.string.isRequired};var SC=(0,l.memo)(DefenceTagComponent);SC.displayName="DefenceTag",SC.propTypes=DefenceTagComponent.propTypes;var wC=capitalize;function hasCorrectMainProperty(e){return"string"==typeof e.main}function checkSimplePaletteColorValues(e,t=[]){if(!hasCorrectMainProperty(e))return!1;for(const g of t)if(!e.hasOwnProperty(g)||"string"!=typeof e[g])return!1;return!0}function createSimplePaletteValueFilter(e=[]){return([,t])=>t&&checkSimplePaletteColorValues(t,e)}function getTypographyUtilityClass(e){return generateUtilityClass("MuiTypography",e)}generateUtilityClasses("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom"]);var useUtilityClasses$37=e=>{const{align:t,gutterBottom:g,noWrap:n,variant:o,classes:a}=e;return composeClasses({root:["root",o,"inherit"!==e.align&&`align${wC(t)}`,g&&"gutterBottom",n&&"noWrap"]},getTypographyUtilityClass,a)},kC=sC("span",{name:"MuiTypography",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.root,g.variant&&t[g.variant],"inherit"!==g.align&&t[`align${wC(g.align)}`],g.noWrap&&t.noWrap,g.gutterBottom&&t.gutterBottom]}})(hC(({theme:e})=>({margin:0,variants:[{props:{variant:"inherit"},style:{font:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}},...Object.entries(e.typography).filter(([e,t])=>"inherit"!==e&&t&&"object"==typeof t).map(([e,t])=>({props:{variant:e},style:t})),...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})),...Object.entries(e.palette?.text||{}).filter(([,e])=>"string"==typeof e).map(([t])=>({props:{color:`text${wC(t)}`},style:{color:(e.vars||e).palette.text[t]}})),{props:({ownerState:e})=>"inherit"!==e.align,style:{textAlign:"var(--Typography-textAlign)"}},{props:({ownerState:e})=>e.noWrap,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},{props:({ownerState:e})=>e.gutterBottom,style:{marginBottom:"0.35em"}}]}))),EC={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},RC=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiTypography"}),{color:n,align:o="inherit",className:a,component:C,gutterBottom:I=!1,noWrap:i=!1,variant:s="body1",variantMapping:l=EC,...c}=g,u={...g,align:o,color:n,className:a,component:C,gutterBottom:I,noWrap:i,variant:s,variantMapping:l};return(0,ja.jsx)(kC,{as:C||l[s]||EC[s]||"span",ref:t,className:clsx(useUtilityClasses$37(u).root,a),...c,ownerState:u,style:{..."inherit"!==o&&{"--Typography-textAlign":o},...c.style}})}),getErrorMessage=e=>e instanceof Error&&e.message?e.message:"string"==typeof e&&e.length>0?e:"Unknown panel error.",TC=class extends l.Component{static displayName="PanelErrorBoundary";static propTypes={children:xC.default.node,panelName:xC.default.node.isRequired};static getDerivedStateFromError(e){return{error:e}}constructor(e){super(e),this.state={error:null}}componentDidCatch(){}render(){const{children:e,panelName:t}=this.props,{error:g}=this.state;return g?React.createElement(fC,{className:"nexgui4-panel-error-boundary",role:"alert",sx:{backgroundColor:"background.paper",border:1,borderColor:"divider",borderRadius:1,color:"text.primary",display:"flex",flex:1,flexDirection:"column",gap:1,minHeight:0,minWidth:0,p:1.5,width:"100%"}},React.createElement(RC,{component:"h2",sx:{fontSize:"0.95rem",fontWeight:700}},t),React.createElement(RC,{color:"text.secondary",variant:"body2"},"This panel failed to render."),React.createElement(RC,{sx:{fontFamily:"monospace",overflowWrap:"anywhere"},variant:"body2"},getErrorMessage(g))):e}},isIterable=e=>Symbol.iterator in e,hasIterableEntries=e=>"entries"in e,compareEntries=(e,t)=>{const g=e instanceof Map?e:new Map(e.entries()),n=t instanceof Map?t:new Map(t.entries());if(g.size!==n.size)return!1;for(const[o,a]of g)if(!n.has(o)||!Object.is(a,n.get(o)))return!1;return!0},compareIterables=(e,t)=>{const g=e[Symbol.iterator](),n=t[Symbol.iterator]();let o=g.next(),a=n.next();for(;!o.done&&!a.done;){if(!Object.is(o.value,a.value))return!1;o=g.next(),a=n.next()}return!!o.done&&!!a.done};function shallow(e,t){return!!Object.is(e,t)||"object"==typeof e&&null!==e&&"object"==typeof t&&null!==t&&Object.getPrototypeOf(e)===Object.getPrototypeOf(t)&&(isIterable(e)&&isIterable(t)?hasIterableEntries(e)&&hasIterableEntries(t)?compareEntries(e,t):compareIterables(e,t):compareEntries({entries:()=>Object.entries(e)},{entries:()=>Object.entries(t)}))}function useShallow(e){const t=l.default.useRef(void 0);return g=>{const n=e(g);return shallow(t.current,n)?t.current:t.current=n}}var selectDefenceSlice=e=>({configuredDefences:e.configuredDefences,defences:e.defences,gainDefence:e.gainDefence,loseDefence:e.loseDefence,resetDefences:e.resetDefences,setConfiguredDefences:e.setConfiguredDefences}),useDefence=()=>{const{stores:e}=useNexGui();return e.defence(useShallow(selectDefenceSlice))},getFlipTransform$10=e=>{switch(e){case 1:return"scaleX(-1) scaleY(-1)";case 2:return"scaleY(-1)";case 3:return"scaleX(-1)";default:return"none"}},DefencesPanelInner=()=>{const e=useTheme$1(),[t]=(0,l.useState)(()=>Math.floor(4*Math.random())),{configuredDefences:g,defences:n}=useDefence(),o=e?.nexGui?.backgroundImage??"",a=e?.nexGui?.backgroundOpacity??.5,C=e?.nexGui?.backgroundFilter??"none",I=new Set(n),i=g.filter(e=>!I.has(e)),s=i.length>0;return React.createElement(fC,{className:"defences-panel",sx:{color:"text.primary",fontFamily:e.typography.fontFamily,fontSize:e.typography.fontSize,height:"100%",overflow:"hidden",position:"relative",width:"100%"}},o?React.createElement(fC,{"aria-hidden":"true",className:"defences-panel__background",sx:{backgroundImage:`url(${o})`,backgroundPosition:"center",backgroundSize:"cover",filter:C,inset:0,opacity:a,position:"absolute",transform:getFlipTransform$10(t),zIndex:0}}):null,s?React.createElement(fC,{className:"defences-panel__content",sx:{height:"100%",overflowY:"auto",p:1,position:"relative",width:"100%",zIndex:1}},React.createElement(bC,{className:"defences-panel__surface",elevation:0,sx:{backgroundColor:alpha(e.palette.background.paper,.78),minHeight:"100%",p:1}},React.createElement(vC,{spacing:.5,sx:{position:"relative",width:"100%"}},i.map(e=>React.createElement(SC,{key:e,name:e}))))):null)};DefencesPanelInner.displayName="DefencesPanelInner";var DefencesPanel=()=>React.createElement(TC,{panelName:"Defences"},React.createElement(DefencesPanelInner,null));function createLazyMeasurementsView(e,t,g){const n=new Array(e);return new Proxy(n,{get(n,o,a){if("string"==typeof o){const a=o.charCodeAt(0);if(a>=48&&a<=57){const a=+o;if(Number.isInteger(a)&&a>=0&&a<e){let e=n[a];if(!e){const o=t[2*a];e=n[a]={index:a,key:g(a),start:o,size:t[2*a+1],end:o+t[2*a+1],lane:0}}return e}}if("length"===o)return e}return Reflect.get(n,o,a)}})}function memo$17(e,t,g){let n,o=g.initialDeps??[],a=!0;function memoizedFunction(){const C=e();return C.length!==o.length||C.some((e,t)=>o[t]!==e)?(o=C,n=t(...C),!(null==g?void 0:g.onChange)||a&&g.skipInitialOnChange||g.onChange(n),a=!1,n):n}return memoizedFunction.updateDeps=e=>{o=e},memoizedFunction}function notUndefined(e,t){if(void 0===e)throw new Error("Unexpected undefined"+(t?`: ${t}`:""));return e}DefencesPanel.displayName="DefencesPanel";var MC,approxEqual=(e,t)=>Math.abs(e-t)<1.01,debounce$2=(e,t,g)=>{let n;return function(...o){e.clearTimeout(n),n=e.setTimeout(()=>t.apply(this,o),g)}},isIOSWebKit=()=>{if(void 0!==MC)return MC;if("undefined"==typeof navigator)return MC=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return MC=!0;const e=navigator.maxTouchPoints;return MC="MacIntel"===navigator.platform&&void 0!==e&&e>0},getRect=e=>{const{offsetWidth:t,offsetHeight:g}=e;return{width:t,height:g}},defaultKeyExtractor=e=>e,defaultRangeExtractor=e=>{const t=Math.max(e.startIndex-e.overscan,0),g=Math.min(e.endIndex+e.overscan,e.count-1)-t+1,n=new Array(g);for(let o=0;o<g;o++)n[o]=t+o;return n},observeElementRect=(e,t)=>{const g=e.scrollElement;if(!g)return;const n=e.targetWindow;if(!n)return;const handler=e=>{const{width:g,height:n}=e;t({width:Math.round(g),height:Math.round(n)})};if(handler(getRect(g)),!n.ResizeObserver)return()=>{};const o=new n.ResizeObserver(t=>{const run=()=>{const e=t[0];if(null==e?void 0:e.borderBoxSize){const t=e.borderBoxSize[0];if(t)return void handler({width:t.inlineSize,height:t.blockSize})}handler(getRect(g))};e.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(run):run()});return o.observe(g,{box:"border-box"}),()=>{o.unobserve(g)}},PC={passive:!0},NC="undefined"==typeof window||"onscrollend"in window,observeOffset=(e,t,g)=>{const n=e.scrollElement;if(!n)return;const o=e.targetWindow;if(!o)return;const a=e.options.useScrollendEvent&&NC;let C=0;const I=a?null:debounce$2(o,()=>t(C,!1),e.options.isScrollingResetDelay),createHandler=e=>()=>{C=g(n),I?.(),t(C,e)},i=createHandler(!0),s=createHandler(!1);return n.addEventListener("scroll",i,PC),a&&n.addEventListener("scrollend",s,PC),()=>{n.removeEventListener("scroll",i),a&&n.removeEventListener("scrollend",s)}},observeElementOffset=(e,t)=>observeOffset(e,t,t=>{const{horizontal:g,isRtl:n}=e.options;return g?t.scrollLeft*(n?-1:1):t.scrollTop}),measureElement=(e,t,g)=>{if(null==t?void 0:t.borderBoxSize){const e=t.borderBoxSize[0];if(e)return Math.round(e[g.options.horizontal?"inlineSize":"blockSize"])}return e[g.options.horizontal?"offsetWidth":"offsetHeight"]},scrollWithAdjustments=(e,{adjustments:t=0,behavior:g},n)=>{var o,a;null==(a=null==(o=n.scrollElement)?void 0:o.scrollTo)||a.call(o,{[n.options.horizontal?"left":"top"]:e+t,behavior:g})},zC=scrollWithAdjustments,OC=class{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._flatMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.pendingScrollAnchor=null,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._intendedScrollOffset=null,this.elementsCache=new Map,this.now=()=>{var e,t,g;return(null==(g=null==(t=null==(e=this.targetWindow)?void 0:e.performance)?void 0:t.now)?void 0:g.call(t))??Date.now()},this.observer=(()=>{let e=null;const get=()=>e||(this.targetWindow&&this.targetWindow.ResizeObserver?e=new this.targetWindow.ResizeObserver(e=>{e.forEach(e=>{const run=()=>{const t=e.target,g=this.indexFromElement(t);if(t.isConnected)this.shouldMeasureDuringScroll(g)&&this.resizeItem(g,this.options.measureElement(t,e,this));else{this.observer.unobserve(t);for(const[e,g]of this.elementsCache)if(g===t){this.elementsCache.delete(e);break}}};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(run):run()})}):null);return{disconnect:()=>{var t;null==(t=get())||t.disconnect(),e=null},observe:e=>{var t;return null==(t=get())?void 0:t.observe(e,{box:"border-box"})},unobserve:e=>{var t;return null==(t=get())?void 0:t.unobserve(e)}}})(),this.range=null,this.setOptions=e=>{var t,g;const n={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:defaultKeyExtractor,rangeExtractor:defaultRangeExtractor,onChange:()=>{},measureElement,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,anchorTo:"start",followOnAppend:!1,scrollEndThreshold:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:"estimate"};for(const I in e){const t=e[I];void 0!==t&&(n[I]=t)}const o=this.options;let a=null,C=null;if(void 0!==o&&o.enabled&&n.enabled&&"end"===n.anchorTo&&null!==this.scrollElement){const e=o.count,I=n.count,i=this.getMeasurements(),s=e>0?(null==(t=i[0])?void 0:t.key)??o.getItemKey(0):null,l=e>0?(null==(g=i[e-1])?void 0:g.key)??o.getItemKey(e-1):null;if(I!==e||e>0&&I>0&&(n.getItemKey(0)!==s||n.getItemKey(I-1)!==l)){const t=e>0?this.getVirtualItemForOffset(this.getScrollOffset())??i[0]:null;t&&(a=[t.key,this.getScrollOffset()-t.start]);const g=!0===n.followOnAppend?"auto":n.followOnAppend||null;g&&I>e&&this.isAtEnd(o.scrollEndThreshold)&&(0===e||n.getItemKey(I-1)!==l)&&(C=g)}}this.options=n,(a||C)&&(this.pendingScrollAnchor=[(null==a?void 0:a[0])??null,(null==a?void 0:a[1])??0,C])},this.notify=e=>{var t,g;null==(g=(t=this.options).onChange)||g.call(t,this,e)},this.maybeNotify=memo$17(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),null!=this.rafId&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var e;const t=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==t){if(this.cleanup(),!t)return void this.maybeNotify();if(this.scrollElement=t,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=(null==(e=this.scrollElement)?void 0:e.window)??null,this.elementsCache.forEach(e=>{this.observer.observe(e)}),this.unsubs.push(this.options.observeElementRect(this,e=>{this.scrollRect=e,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(e,t)=>{null!==this._intendedScrollOffset&&Math.abs(e-this._intendedScrollOffset)<1.5&&(e=this._intendedScrollOffset),this._intendedScrollOffset=null,this.scrollAdjustments=0,this.scrollDirection=t?this.getScrollOffset()<e?"forward":"backward":null,this.scrollOffset=e,this.isScrolling=t,this._flushIosDeferredIfReady(),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),"addEventListener"in this.scrollElement){const e=this.scrollElement,onTouchStart=()=>{this._iosTouching=!0,this._iosJustTouchEnded=!1,null!==this._iosTouchEndTimerId&&null!=this.targetWindow&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)},onTouchEnd=()=>{this._iosTouching=!1,isIOSWebKit()&&null!=this.targetWindow&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};e.addEventListener("touchstart",onTouchStart,PC),e.addEventListener("touchend",onTouchEnd,PC),this.unsubs.push(()=>{e.removeEventListener("touchstart",onTouchStart),e.removeEventListener("touchend",onTouchEnd),null!==this._iosTouchEndTimerId&&null!=this.targetWindow&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)})}this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}const g=this.pendingScrollAnchor;if(this.pendingScrollAnchor=null,g&&this.scrollElement&&this.options.enabled){const[e,t,n]=g;if(null!==e){const{count:g,getItemKey:n}=this.options;let o=0;for(;o<g&&n(o)!==e;)o++;const a=o<g?this.getMeasurements()[o]:void 0;if(a){const e=a.start+t-this.getScrollOffset();approxEqual(e,0)||this.applyScrollAdjustment(e)}}n&&this.scrollToEnd({behavior:n})}},this._flushIosDeferredIfReady=()=>{if(0===this._iosDeferredAdjustment)return;if(this.isScrolling)return;if(this._iosTouching)return;if(this._iosJustTouchEnded)return;const e=this.getScrollOffset(),t=this.getMaxScrollOffset();if(e<0||e>t)return;const g=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(e,{adjustments:this.scrollAdjustments+=g,behavior:void 0})},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??("function"==typeof this.options.initialOffset?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(e,t)=>{const g=new Map,n=new Map;for(let o=t-1;o>=0;o--){const t=e[o];if(g.has(t.lane))continue;const a=n.get(t.lane);if(null==a||t.end>a.end?n.set(t.lane,t):t.end<a.end&&g.set(t.lane,!0),g.size===this.options.lanes)break}return n.size===this.options.lanes?Array.from(n.values()).sort((e,t)=>e.end===t.end?e.index-t.index:e.end-t.end)[0]:void 0},this.getMeasurementOptions=memo$17(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode],(e,t,g,n,o,a,C)=>(void 0!==this.prevLanes&&this.prevLanes!==a&&(this.lanesChangedFlag=!0),this.prevLanes=a,this.pendingMin=null,{count:e,paddingStart:t,scrollMargin:g,getItemKey:n,enabled:o,lanes:a,laneAssignmentMode:C}),{key:!1}),this.getMeasurements=memo$17(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:e,paddingStart:t,scrollMargin:g,getItemKey:n,enabled:o,lanes:a,laneAssignmentMode:C},I)=>{const i=this.itemSizeCache;if(!o)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(const u of this.laneAssignments.keys())u>=e&&this.laneAssignments.delete(u);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),0!==this.measurementsCache.length||this.lanesSettling||(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(e=>{this.itemSizeCache.set(e.key,e.size)}));const s=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1),1===a){const o=this.options.gap,a=2*e;let C,I=this._flatMeasurements;if(!I||I.length<a){const e=new Float64Array(a);I&&s>0&&e.set(I.subarray(0,2*s)),I=e,this._flatMeasurements=I}if(0===s)C=t+g;else{const e=s-1;C=I[2*e]+I[2*e+1]+o}for(let t=s;t<e;t++){const e=n(t),g=i.get(e),a="number"==typeof g?g:this.options.estimateSize(t);I[2*t]=C,I[2*t+1]=a,C+=a+o}const l=createLazyMeasurementsView(e,I,n);return this.measurementsCache=l,l}const l=this.measurementsCache.slice(0,s),c=new Array(a).fill(void 0);for(let u=0;u<s;u++){const e=l[u];e&&(c[e.lane]=u)}for(let u=s;u<e;u++){const e=n(u),o=this.laneAssignments.get(u);let a,I;const s="estimate"===C||i.has(e);if(void 0!==o&&this.options.lanes>1){a=o;const e=c[a],n=void 0!==e?l[e]:void 0;I=n?n.end+this.options.gap:t+g}else{const e=1===this.options.lanes?l[u-1]:this.getFurthestMeasurement(l,u);I=e?e.end+this.options.gap:t+g,a=e?e.lane:u%this.options.lanes,this.options.lanes>1&&s&&this.laneAssignments.set(u,a)}const d=i.get(e),p="number"==typeof d?d:this.options.estimateSize(u),m=I+p;l[u]={index:u,start:I,size:p,end:m,key:e,lane:a},c[a]=u}return this.measurementsCache=l,l},{key:!1,debug:()=>this.options.debug}),this.calculateRange=memo$17(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,g,n)=>this.range=e.length>0&&t>0?calculateRange({measurements:e,outerSize:t,scrollOffset:g,lanes:n,flat:1===n&&null!=this._flatMeasurements?this._flatMeasurements:null}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=memo$17(()=>{let e=null,t=null;const g=this.calculateRange();return g&&(e=g.startIndex,t=g.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,g,n,o)=>null===n||null===o?[]:e({startIndex:n,endIndex:o,overscan:t,count:g}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{const t=this.options.indexAttribute,g=e.getAttribute(t);return g?parseInt(g,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{var t;if(!this.scrollState||"smooth"!==this.scrollState.behavior)return!0;const g=this.scrollState.index??(null==(t=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))?void 0:t.index);if(void 0!==g&&this.range){const t=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),n=Math.max(0,g-t),o=Math.min(this.options.count-1,g+t);return e>=n&&e<=o}return!0},this.measureElement=e=>{if(!e)return void this.elementsCache.forEach((e,t)=>{e.isConnected||(this.observer.unobserve(e),this.elementsCache.delete(t))});const t=this.indexFromElement(e),g=this.options.getItemKey(t),n=this.elementsCache.get(g);n!==e&&(n&&this.observer.unobserve(n),this.observer.observe(e),this.elementsCache.set(g,e)),this.isScrolling&&!this.scrollState||!this.shouldMeasureDuringScroll(t)||this.resizeItem(t,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,t)=>{var g,n;if(e<0||e>=this.options.count)return;let o,a,C;const I=this._flatMeasurements;if(1===this.options.lanes&&null!==I)C=this.options.getItemKey(e),a=I[2*e],o=I[2*e+1];else{const t=this.measurementsCache[e];if(!t)return;C=t.key,a=t.start,o=t.size}const i=t-(this.itemSizeCache.get(C)??o);if(0!==i){const I="end"===this.options.anchorTo&&"smooth"!==(null==(g=this.scrollState)?void 0:g.behavior)&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,s=I?this.getTotalSize():0,l="smooth"!==(null==(n=this.scrollState)?void 0:n.behavior)&&(void 0!==this.shouldAdjustScrollPositionOnItemSizeChange?this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[e]??{index:e,key:C,start:a,size:o,end:a+o,lane:0},i,this):a<this.getScrollOffset()+this.scrollAdjustments&&"backward"!==this.scrollDirection);(null===this.pendingMin||e<this.pendingMin)&&(this.pendingMin=e),this.itemSizeCache.set(C,t),this.itemSizeCacheVersion++,I?this.applyScrollAdjustment(this.getTotalSize()-s):l&&this.applyScrollAdjustment(i),this.notify(!1)}},this.getVirtualItems=memo$17(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,t)=>{const g=[];for(let n=0,o=e.length;n<o;n++){const o=t[e[n]];g.push(o)}return g},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{const t=this.getMeasurements();if(0===t.length)return;const g=this._flatMeasurements,n=1===this.options.lanes&&null!=g;return notUndefined(t[findNearestBinarySearch(0,t.length-1,n?e=>g[2*e]:e=>notUndefined(t[e]).start,e)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{const e=this.scrollElement.document.documentElement;return this.options.horizontal?e.scrollWidth-this.scrollElement.innerWidth:e.scrollHeight-this.scrollElement.innerHeight}},this.getVirtualDistanceFromEnd=()=>Math.max(this.getTotalSize()-this.getSize()-this.getScrollOffset(),0),this.getDistanceFromEnd=()=>Math.max(this.getMaxScrollOffset()-this.getScrollOffset(),0),this.isAtEnd=(e=this.options.scrollEndThreshold)=>this.getDistanceFromEnd()<=e,this.getOffsetForAlignment=(e,t,g=0)=>{if(!this.scrollElement)return 0;const n=this.getSize(),o=this.getScrollOffset();"auto"===t&&(t=e>=o+n?"end":"start"),"center"===t?e+=(g-n)/2:"end"===t&&(e-=n);const a=this.getMaxScrollOffset();return Math.max(Math.min(a,e),0)},this.getOffsetForIndex=(e,t="auto")=>{e=Math.max(0,Math.min(e,this.options.count-1));const g=this.getSize(),n=this.getScrollOffset(),o=this.measurementsCache[e];if(!o)return;if("auto"===t)if(o.end>=n+g-this.options.scrollPaddingEnd)t="end";else{if(!(o.start<=n+this.options.scrollPaddingStart))return[n,t];t="start"}if("end"===t&&e===this.options.count-1)return[this.getMaxScrollOffset(),t];const a="end"===t?o.end+this.options.scrollPaddingEnd:o.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(a,t,o.size),t]},this.scrollToOffset=(e,{align:t="start",behavior:g="auto"}={})=>{const n=this.getOffsetForAlignment(e,t),o=this.now();this.scrollState={index:null,align:t,behavior:g,startedAt:o,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:g}),this.scheduleScrollReconcile()},this.scrollToIndex=(e,{align:t="auto",behavior:g="auto"}={})=>{e=Math.max(0,Math.min(e,this.options.count-1));const n=this.getOffsetForIndex(e,t);if(!n)return;const[o,a]=n,C=this.now();this.scrollState={index:e,align:a,behavior:g,startedAt:C,lastTargetOffset:o,stableFrames:0},this._scrollToOffset(o,{adjustments:void 0,behavior:g}),this.scheduleScrollReconcile()},this.scrollBy=(e,{behavior:t="auto"}={})=>{const g=this.getScrollOffset()+e,n=this.now();this.scrollState={index:null,align:"start",behavior:t,startedAt:n,lastTargetOffset:g,stableFrames:0},this._scrollToOffset(g,{adjustments:void 0,behavior:t}),this.scheduleScrollReconcile()},this.scrollToEnd=({behavior:e="auto"}={})=>{this.options.count>0?this.scrollToIndex(this.options.count-1,{align:"end",behavior:e}):this.scrollToOffset(Math.max(this.getTotalSize()-this.getSize(),0),{behavior:e})},this.getTotalSize=()=>{var e;const t=this.getMeasurements();let g;if(0===t.length)g=this.options.paddingStart;else if(1===this.options.lanes){const n=t.length-1,o=this._flatMeasurements;g=null!=o?o[2*n]+o[2*n+1]:(null==(e=t[n])?void 0:e.end)??0}else{const e=Array(this.options.lanes).fill(null);let n=t.length-1;for(;n>=0&&e.some(e=>null===e);){const g=t[n];null===e[g.lane]&&(e[g.lane]=g.end),n--}g=Math.max(...e.filter(e=>null!==e))}return Math.max(g-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{const e=[];if(0===this.itemSizeCache.size)return e;const t=this.getMeasurements();for(const g of t)g&&this.itemSizeCache.has(g.key)&&e.push({index:g.index,key:g.key,start:g.start,size:g.size,end:g.end,lane:g.lane});return e},this._scrollToOffset=(e,{adjustments:t,behavior:g})=>{this._intendedScrollOffset=e+(t??0),this.options.scrollToFn(e,{behavior:g,adjustments:t},this)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(e)}applyScrollAdjustment(e,t){0!==e&&(isIOSWebKit()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?this._iosDeferredAdjustment+=e:this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=e,behavior:t}))}scheduleScrollReconcile(){this.targetWindow?null==this.rafId&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()})):this.scrollState=null}reconcileScroll(){if(!this.scrollState)return;if(!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3)return void(this.scrollState=null);const e=null!=this.scrollState.index?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,t=e?e[0]:this.scrollState.lastTargetOffset,g=1,n=t!==this.scrollState.lastTargetOffset;if(!n&&approxEqual(t,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=g)return this.getScrollOffset()!==t&&this._scrollToOffset(t,{adjustments:void 0,behavior:"auto"}),void(this.scrollState=null)}else if(this.scrollState.stableFrames=0,n){const e=this.getSize()||600,g=Math.abs(t-this.getScrollOffset()),n="smooth"===this.scrollState.behavior&&g>e;this.scrollState.lastTargetOffset=t,n||(this.scrollState.behavior="auto"),this._scrollToOffset(t,{adjustments:void 0,behavior:n?"smooth":"auto"})}this.scheduleScrollReconcile()}},findNearestBinarySearch=(e,t,g,n)=>{for(;e<=t;){const o=(e+t)/2|0,a=g(o);if(a<n)e=o+1;else{if(!(a>n))return o;t=o-1}}return e>0?e-1:0};function calculateRange({measurements:e,outerSize:t,scrollOffset:g,lanes:n,flat:o}){const a=e.length-1,C=o?e=>o[2*e]:t=>e[t].start,I=o?e=>o[2*e]+o[2*e+1]:t=>e[t].end;if(e.length<=n)return{startIndex:0,endIndex:a};let i=findNearestBinarySearch(0,a,C,g),s=i;if(1===n)for(;s<a&&I(s)<g+t;)s++;else if(n>1){const o=Array(n).fill(0);for(;s<a&&o.some(e=>e<g+t);){const t=e[s];o[t.lane]=t.end,s++}const C=Array(n).fill(g+t);for(;i>=0&&C.some(e=>e>=g);){const t=e[i];C[t.lane]=t.start,i--}i=Math.max(0,i-i%n),s=Math.min(a,s+(n-1-s%n))}return{startIndex:i,endIndex:s}}var DC="undefined"!=typeof document?l.useLayoutEffect:l.useEffect;function useVirtualizerBase({useFlushSync:e=!0,...t}){const g=l.useReducer(e=>e+1,0)[1],n={...t,onChange:(n,o)=>{var a;e&&o?(0,c.flushSync)(g):g(),null==(a=t.onChange)||a.call(t,n,o)}},[o]=l.useState(()=>new OC(n));return o.setOptions(n),DC(()=>o._didMount(),[]),DC(()=>o._willUpdate()),o}function useVirtualizer(e){return useVirtualizerBase({observeElementRect,observeElementOffset,scrollToFn:zC,...e})}var jC=1,LC=24,GC=8,noop$5=()=>{},denyScrollPositionAdjustment=()=>!1,defaultEstimateSize=()=>48,defaultGetItemKey=(e,t)=>e?.id??t,joinClassNames=(...e)=>e.filter(Boolean).join(" "),getVirtualItemEnd=e=>Number.isFinite(e?.end)?e.end:Number.isFinite(e?.size)?e.start+e.size:e?.start??0,getElementWidth=(e,t=null)=>{const g=t?.contentRect?.width??e.getBoundingClientRect?.().width??e.clientWidth;return Number.isFinite(g)?g:0},getVerticalScrollbarGutterWidth=e=>{if(!e)return 0;const t=Number(e.offsetWidth),g=Number(e.clientWidth);return Number.isFinite(t)&&Number.isFinite(g)?Math.max(0,t-g):0},isNearBottom=e=>e.scrollHeight-e.scrollTop-e.clientHeight<=LC,isPinnedToDisplayTail=e=>e.scrollHeight-e.scrollTop-e.clientHeight<=jC,TranscriptViewportComponent=({items:e,renderItem:t,getItemKey:g=defaultGetItemKey,itemKeyVersion:n=null,displayPinKey:o=null,estimateSize:a=defaultEstimateSize,overscan:C=5,fontFamily:I="inherit",fontSize:i,border:s=!1,mode:c="panel",onRequestHistory:u=noop$5,onScrollLockChange:d=noop$5,activeMatchIndex:p=-1,footer:m=null,fallbackToAllItems:h=!1,onSendCommand:y=noop$5,showScrollLockBadge:b=!1,viewportSx:v,viewportTestId:x="virtual-scroll-viewport"},S)=>{const w=(0,l.useRef)(null),E=(0,l.useRef)(null),R=(0,l.useRef)({animationFrame:0,width:null}),T=(0,l.useRef)(e),M=(0,l.useRef)(g),P=(0,l.useRef)({getItemKey:null,itemKeyRevision:null,lookup:null}),[N,O]=(0,l.useState)(!1),[D,j]=(0,l.useState)(0),[L,G]=(0,l.useState)(0),B="display"===c,F=parseFontSize(i);T.current=e,M.current=g;const W=n??e;P.current.getItemKey===g&&P.current.itemKeyRevision===W||(P.current={getItemKey:g,itemKeyRevision:W,lookup:e=>M.current(T.current[e],e)});const V=P.current.lookup,U=(0,l.useCallback)(()=>w.current,[]),Z=useVirtualizer({count:e.length,initialRect:{height:400,width:0},getScrollElement:U,estimateSize:a,getItemKey:V,overscan:C,shouldAdjustScrollPositionOnItemSizeChange:B?void 0:denyScrollPositionAdjustment}),K=Z.getTotalSize(),H=Z.getVirtualItems(),Y=H[0]??null,$=H.at(-1)??null,Q=Y?Math.max(0,Y.start):0,X=$?Math.max(0,K-getVirtualItemEnd($)):0,J=h&&0===H.length&&e.length>0,q=joinClassNames("nexgui4-transcript-spacer",!J&&(B?"nexgui4-transcript-spacer--display":"nexgui4-transcript-spacer--panel")),ee=J?void 0:B?0===H.length?{height:`${K}px`}:{paddingBottom:`${X}px`,paddingTop:`${Q}px`}:{height:`${K}px`},te=null==i?void 0:"number"==typeof i?`${i}px`:i,ge=joinClassNames("nexgui4-transcript-scroll-viewport",B?"nexgui4-transcript-scroll-viewport--display":"nexgui4-transcript-scroll-viewport--panel"),ne={fontFamily:I,fontSize:te},re={right:`${GC+D}px`},oe=(0,l.useCallback)(e=>{const t=getVerticalScrollbarGutterWidth(e);j(e=>e===t?e:t)},[]),ae=(0,l.useCallback)(()=>{const e=w.current;e&&(e.scrollTop=e.scrollHeight)},[]);(0,l.useImperativeHandle)(S,()=>({scrollToBottom:ae,scrollToIndex:(e,t)=>Z.scrollToIndex(e,t)}),[Z,ae]),(0,l.useLayoutEffect)(()=>{if(!B)return void(E.current=null);const t=w.current;if(!t)return;const g={itemCount:e.length,scrollHeight:t.scrollHeight,totalSize:K},n=E.current;null!=n&&n.itemCount===g.itemCount&&n.scrollHeight===g.scrollHeight&&n.totalSize===g.totalSize&&isPinnedToDisplayTail(t)||(t.scrollTop=t.scrollHeight,E.current=g)},[o,L,B,e.length,K]),(0,l.useLayoutEffect)(()=>{B||N||0===e.length||Z.scrollToIndex(e.length-1,{align:"end"})},[B,N,e.length,Z]),(0,l.useLayoutEffect)(()=>{const e=Z.measure,t=window.ResizeObserver,g=R.current;if(!B)return g.width=null,void(g.animationFrame&&(window.cancelAnimationFrame(g.animationFrame),g.animationFrame=0));const n=w.current;if(!n||"function"!=typeof e||"function"!=typeof t)return;g.width=getElementWidth(n);const scheduleMeasure=t=>{g.width!==t&&(g.width=t,g.animationFrame&&window.cancelAnimationFrame(g.animationFrame),g.animationFrame=window.requestAnimationFrame(()=>{g.animationFrame=0,e(),G(e=>e+1)}))},o=new t(e=>{scheduleMeasure(getElementWidth(n,e[0]))});return o.observe(n),()=>{o.disconnect(),g.animationFrame&&(window.cancelAnimationFrame(g.animationFrame),g.animationFrame=0)}},[B,Z]),(0,l.useLayoutEffect)(()=>{if(B)return void j(0);const e=w.current;if(!e)return;oe(e);const t=window.ResizeObserver;if("function"!=typeof t)return;const g=new t(()=>{oe(e)});return g.observe(e),()=>{g.disconnect()}},[B,oe]),(0,l.useLayoutEffect)(()=>{B||oe(w.current)},[B,e.length,K,oe]),(0,l.useEffect)(()=>{0===e.length&&O(!1)},[e.length]),(0,l.useEffect)(()=>{d(N)},[N,d]);const Ae=(0,l.useCallback)(e=>{if(B)return;oe(e.currentTarget);const t=!isNearBottom(e.currentTarget);O(e=>e===t?e:t)},[B,oe]);(0,l.useEffect)(()=>{const e=w.current;if(!e)return;const handleWheel=e=>{!B||e.deltaY>=0||(e.preventDefault(),u())};return e.addEventListener("wheel",handleWheel,{passive:!1}),()=>e.removeEventListener("wheel",handleWheel)},[B,u]);const Ce=(0,l.useCallback)(e=>{if(!(e.target instanceof Element))return;const t=e.target.closest("a");if(!t||!e.currentTarget.contains(t))return;if(t.classList.contains("url_link"))return;const g=t.getAttribute("rel");g&&(e.preventDefault(),y(g))},[y]);return React.createElement(fC,{component:"section",sx:{border:s?1:0,borderColor:"divider",borderRadius:s?1:0,display:"flex",flex:1,flexDirection:"column",minHeight:0,position:"relative"}},b&&N?React.createElement(fC,{component:"div","data-testid":"scroll-lock-badge",role:"status",style:re,sx:{backgroundColor:"background.paper",border:1,borderColor:"divider",borderRadius:1,boxShadow:1,color:"text.secondary",fontSize:"0.75rem",px:1,py:.5,position:"absolute",top:8,zIndex:2}},"Scroll lock"):null,React.createElement(fC,{className:ge,component:"div",onClick:Ce,"data-testid":x,onScroll:Ae,ref:w,style:ne,sx:v},React.createElement("div",{className:q,"data-testid":"virtual-scroll-spacer",style:ee},J?e.map((e,n)=>React.createElement("div",{className:"nexgui4-transcript-row","data-index":n,key:g(e,n)},t(e,{fontSize:F,index:n,isActiveMatch:n===p}))):H.map(g=>{const n=e[g.index];return null==n?null:React.createElement("div",{className:joinClassNames("nexgui4-transcript-row",B?"nexgui4-transcript-row--display":"nexgui4-transcript-row--panel"),"data-index":g.index,key:g.key,ref:Z.measureElement,style:B?void 0:{transform:`translateY(${g.start}px)`}},t(n,{fontSize:F,index:g.index,isActiveMatch:g.index===p}))})),m))};TranscriptViewportComponent.displayName="TranscriptViewport",TranscriptViewportComponent.propTypes={activeMatchIndex:xC.default.number,border:xC.default.bool,displayPinKey:xC.default.oneOfType([xC.default.number,xC.default.string]),estimateSize:xC.default.func,fallbackToAllItems:xC.default.bool,fontFamily:xC.default.string,fontSize:xC.default.oneOfType([xC.default.number,xC.default.string]),footer:xC.default.node,getItemKey:xC.default.func,itemKeyVersion:xC.default.oneOfType([xC.default.number,xC.default.string]),items:xC.default.array.isRequired,mode:xC.default.oneOf(["panel","display"]),onRequestHistory:xC.default.func,onSendCommand:xC.default.func,onScrollLockChange:xC.default.func,overscan:xC.default.number,renderItem:xC.default.func.isRequired,showScrollLockBadge:xC.default.bool,viewportSx:xC.default.oneOfType([xC.default.array,xC.default.func,xC.default.object]),viewportTestId:xC.default.string};var BC=(0,l.forwardRef)(TranscriptViewportComponent);BC.displayName="TranscriptViewport",BC.propTypes=TranscriptViewportComponent.propTypes;var padTwo=e=>String(e).padStart(2,"0"),padThree=e=>String(e).padStart(3,"0"),formatNumericTimestamp=(e,t=!0)=>{const g=new Date(e),n=[padTwo(g.getHours()),padTwo(g.getMinutes()),padTwo(g.getSeconds())].join(":");return t?`${n}.${padThree(g.getMilliseconds())}`:n},resolveLabel=(e,t)=>"string"==typeof e&&e.length>0?e:Number.isFinite(e)?formatNumericTimestamp(e,t):null,resolveDateTime=e=>Number.isFinite(e)?new Date(e).toISOString():void 0,TimestampComponent=({timestamp:e,fontFamily:t=Dr,fontSize:g,highlight:n=!1,className:o="ng-timestamp timestamp mono no_out",includeMilliseconds:a=!0})=>{const C=resolveLabel(e,a);return null===C?null:React.createElement("time",{className:o,dateTime:resolveDateTime(e),style:n?{backgroundColor:"yellow",fontFamily:t,fontSize:g}:{fontFamily:t,fontSize:g}},C)};TimestampComponent.displayName="Timestamp",TimestampComponent.propTypes={className:xC.default.string,fontFamily:xC.default.string,fontSize:xC.default.oneOfType([xC.default.number,xC.default.string]),highlight:xC.default.bool,includeMilliseconds:xC.default.bool,timestamp:xC.default.oneOfType([xC.default.number,xC.default.string]).isRequired};var FC=(0,l.memo)(TimestampComponent);FC.displayName="Timestamp",FC.propTypes=TimestampComponent.propTypes;var WC=xC.default.shape({content:xC.default.node,id:xC.default.oneOfType([xC.default.number,xC.default.string]),isHtml:xC.default.bool,timestamp:xC.default.number}),renderContent=(e,t)=>null==e||!1===e?null:(0,l.isValidElement)(e)?e:t?React.createElement(RC,{component:"span",sx:{color:"text.primary",display:"inline",lineHeight:1.5},variant:"body2",dangerouslySetInnerHTML:{__html:e}}):React.createElement(RC,{component:"span",sx:{color:"text.primary",display:"inline",lineHeight:1.5},variant:"body2"},e),FeedEntryComponent=({entry:e,fontSize:t})=>React.createElement(fC,{className:"feed-entry","data-feed-entry-id":e.id??void 0,sx:{alignItems:"flex-start",columnGap:1,display:"flex",minWidth:0,py:.5,width:"100%"}},Number.isFinite(e.timestamp)?React.createElement(FC,{timestamp:e.timestamp,fontSize:t,includeMilliseconds:!1}):null,React.createElement(fC,{className:"feed-entry__content",sx:{flex:1,minWidth:0,overflowWrap:"anywhere"}},renderContent(e.content,e.isHtml)));FeedEntryComponent.displayName="FeedEntry",FeedEntryComponent.propTypes={entry:WC.isRequired,fontSize:xC.default.oneOfType([xC.default.number,xC.default.string])};var VC=(0,l.memo)(FeedEntryComponent);VC.displayName="FeedEntry",VC.propTypes=FeedEntryComponent.propTypes;var getFlipTransform$9=e=>{switch(e){case 1:return"scaleX(-1) scaleY(-1)";case 2:return"scaleY(-1)";case 3:return"scaleX(-1)";default:return"none"}},PanelBackgroundComponent=({backgroundClassName:e,children:t=null,component:g="div",contentClassName:n,contentSx:o,sx:a,...C})=>{const I=useTheme$1(),[i]=(0,l.useState)(()=>Math.floor(4*Math.random())),s=I?.nexGui?.backgroundImage??"",c=I?.nexGui?.backgroundOpacity??.5,u=I?.nexGui?.backgroundFilter??"none";return React.createElement(fC,{component:g,sx:[{display:"flex",flex:1,height:"100%",minHeight:0,minWidth:0,overflow:"hidden",position:"relative",width:"100%"},a],...C},s?React.createElement(fC,{"aria-hidden":"true",className:e,sx:{backgroundImage:`url(${s})`,backgroundPosition:"center",backgroundSize:"cover",filter:u,inset:0,opacity:c,position:"absolute",transform:getFlipTransform$9(i),zIndex:0}}):null,React.createElement(fC,{className:n,sx:[{display:"flex",flex:1,minHeight:0,minWidth:0,position:"relative",zIndex:1},o]},t))};PanelBackgroundComponent.displayName="PanelBackground",PanelBackgroundComponent.propTypes={backgroundClassName:xC.default.string,children:xC.default.node,component:xC.default.elementType,contentClassName:xC.default.string,contentSx:xC.default.oneOfType([xC.default.array,xC.default.func,xC.default.object]),sx:xC.default.oneOfType([xC.default.array,xC.default.func,xC.default.object])};var _C=(0,l.memo)(PanelBackgroundComponent);_C.displayName="PanelBackground",_C.propTypes=PanelBackgroundComponent.propTypes;var noopSubscribe$1=()=>()=>{},getModelVersion$1=e=>"function"==typeof e?.getVersion?e.getVersion():0,selectEntries=e=>e.entries,colorEntry=(e,t)=>{if("string"!=typeof e?.content||0===e.content.length||"function"!=typeof t)return e;const{content:g,isHtml:n}=t(e.content);return g!==e.content||n?{...e,content:g,isHtml:n}:e},useFeed=()=>{const{stores:e,playerDirectory:t,playerRelationships:g,formatInlineNames:n}=useNexGui(),o=e.feed(selectEntries),a=(0,l.useMemo)(()=>({subscribe:e=>{const n=t?.subscribePlayerDirectory?.(e)??noopSubscribe$1(),o=g?.subscribePlayerRelationships?.(e)??noopSubscribe$1();return()=>{n?.(),o?.()}},getSnapshot:()=>`${getModelVersion$1(t)}:${getModelVersion$1(g)}`}),[t,g]),C=(0,l.useSyncExternalStore)(a.subscribe,a.getSnapshot,a.getSnapshot),I=(0,l.useRef)(null);return null===I.current&&(I.current=new WeakMap),{entries:(0,l.useMemo)(()=>{const e=I.current;return o.map(t=>{if(null===t||"object"!=typeof t)return t;const g=e.get(t);if(g&&g.version===C)return g.value;const o=colorEntry(t,n);return g&&g.value.content===o.content&&g.value.isHtml===o.isHtml?(e.set(t,{version:C,value:g.value}),g.value):(e.set(t,{version:C,value:o}),o)})},[o,C,n])}},GameFeedInner=()=>{const e=useTheme$1(),{entries:t}=useFeed(),g=t.at(-1)?.id??t.length,n=(0,l.useCallback)((e,{fontSize:t}={})=>React.createElement(VC,{entry:e,fontSize:t}),[]);return 0===t.length?React.createElement(_C,{backgroundClassName:"game-feed__background",className:"game-feed game-feed--empty",contentClassName:"game-feed__content",contentSx:{alignItems:"center",color:"text.secondary",justifyContent:"center",p:2}},React.createElement(RC,{variant:"body2"},"No feed entries")):React.createElement(_C,{backgroundClassName:"game-feed__background",className:"game-feed",contentClassName:"game-feed__content",contentSx:{minHeight:0}},React.createElement(BC,{itemKeyVersion:g,items:t,fontFamily:e.typography.fontFamily,fontSize:e.typography.fontSize,renderItem:n,showScrollLockBadge:!1,viewportSx:{p:1}}))};GameFeedInner.displayName="GameFeedInner";var GameFeed=()=>React.createElement(TC,{panelName:"GameFeed"},React.createElement(GameFeedInner,null));GameFeed.displayName="GameFeed";var noop$4=()=>{},UC="nexgui4-structured-stream-panel__timestamp ng-timestamp timestamp mono no_out",ZC=xC.default.shape({hasMXP:xC.default.bool.isRequired,html:xC.default.string.isRequired,id:xC.default.number.isRequired,timestamp:xC.default.oneOfType([xC.default.number,xC.default.string]).isRequired}),buildLineClassName$1=e=>["nexgui4-structured-stream-panel__line",e.isMonospace?"mono":null].filter(Boolean).join(" "),StructuredStreamRowComponent=({line:e,onSendCommand:t=noop$4})=>{const handleMXP=e=>{if(!(e.target instanceof Element))return;const g=e.target.closest("a");if(!g||!e.currentTarget.contains(g))return;if(g.classList.contains("url_link"))return;const n=g.getAttribute("rel");n&&(e.preventDefault(),t(n))};return React.createElement(fC,{component:"div",className:buildLineClassName$1(e),"data-stream-entry-id":e.id,onClick:e.hasMXP?handleMXP:null,sx:{alignItems:"baseline",columnGap:"0.5rem",display:"grid",gridTemplateColumns:"12ch minmax(0, 1fr)",minWidth:0,width:"100%",zIndex:1,"& .nexgui4-structured-stream-panel__payload":{minWidth:0,overflowWrap:"anywhere"},"& .nexgui4-stream-row":{alignItems:"baseline",display:"grid",gridTemplateColumns:"auto minmax(0, 1fr)",columnGap:"0.5rem",width:"100%"},"& .nexgui4-replacement-row":{width:"100%"}}},React.createElement(FC,{className:UC,fontFamily:"inherit",timestamp:e.timestamp}),React.createElement(fC,{component:"span",className:"nexgui4-structured-stream-panel__payload",dangerouslySetInnerHTML:{__html:e.html}}))};StructuredStreamRowComponent.displayName="StructuredStreamRow",StructuredStreamRowComponent.propTypes={line:ZC.isRequired,onSendCommand:xC.default.func};var KC=(0,l.memo)(StructuredStreamRowComponent);KC.displayName="StructuredStreamRow",KC.propTypes=StructuredStreamRowComponent.propTypes;var StructuredStreamPanelComponent=({items:e,itemKeyVersion:t=null,onSendCommand:g=noop$4,className:n})=>{const o=useTheme$1(),a=(0,l.useCallback)(e=>React.createElement(KC,{line:e,onSendCommand:g}),[g]);return React.createElement(_C,{backgroundClassName:"nexgui4-structured-stream-panel__background",className:n,component:"section",contentClassName:"nexgui4-structured-stream-panel__content",contentSx:{color:"text.primary",fontFamily:"inherit",fontSize:"inherit"},"data-testid":"structured-stream-panel"},React.createElement(BC,{fontFamily:o.typography.fontFamily,fontSize:o.typography.fontSize,itemKeyVersion:t,items:e,renderItem:a,showScrollLockBadge:!1,viewportSx:{p:"5px"}}))};StructuredStreamPanelComponent.displayName="StructuredStreamPanel",StructuredStreamPanelComponent.propTypes={className:xC.default.string,itemKeyVersion:xC.default.oneOfType([xC.default.number,xC.default.string]),items:xC.default.arrayOf(ZC).isRequired,onSendCommand:xC.default.func};var HC=(0,l.memo)(StructuredStreamPanelComponent);HC.displayName="StructuredStreamPanel",HC.propTypes=StructuredStreamPanelComponent.propTypes;var YC=new WeakMap,assertTranscriptModel=e=>{if(!e||"function"!=typeof e.subscribe||"function"!=typeof e.getSnapshot)throw new Error("useTranscript requires a transcript model with subscribe(listener) and getSnapshot().")},getTranscriptModelBindings=e=>{assertTranscriptModel(e);let t=YC.get(e);if(!t){const subscribe=t=>e.subscribe(t),getSnapshot=()=>e.getSnapshot();t=Object.freeze({subscribe,getSnapshot}),YC.set(e,t)}return t},useTranscript=e=>{const{subscribe:t,getSnapshot:g}=getTranscriptModelBindings(e),n=(0,l.useSyncExternalStore)(t,g,g);return{version:n.version,items:n.items,totalLines:n.totalLines}},CombatStreamInner=()=>{const{adapter:e,stores:t}=useNexGui(),{items:g,version:n}=useTranscript(t.combatStream),o=(0,l.useCallback)(t=>e.send(t),[e]);return React.createElement(HC,{className:"nexgui4-combat-stream",itemKeyVersion:n,items:g,onSendCommand:o})};CombatStreamInner.displayName="CombatStreamInner";var CombatStream=()=>React.createElement(TC,{panelName:"Combat Stream"},React.createElement(CombatStreamInner,null));function useForkRef(...e){const t=l.useRef(void 0),g=l.useCallback(t=>{const g=e.map(e=>{if(null==e)return null;if("function"==typeof e){const g=e,n=g(t);return"function"==typeof n?n:()=>{g(null)}}return e.current=t,()=>{e.current=null}});return()=>{g.forEach(e=>e?.())}},e);return l.useMemo(()=>e.every(e=>null==e)?null:e=>{t.current&&(t.current(),t.current=void 0),null!=e&&(t.current=g(e))},e)}function isHostComponent(e){return"string"==typeof e}function appendOwnerState(e,t,g){return void 0===e||isHostComponent(e)?t:{...t,ownerState:{...t.ownerState,...g}}}function isEventHandler(e,t){const g=e.charCodeAt(2);return"o"===e[0]&&"n"===e[1]&&g>=65&&g<=90&&"function"==typeof t}function extractEventHandlers(e){if(void 0===e)return{};const t={};for(const g of Object.keys(e))isEventHandler(g,e[g])&&(t[g]=e[g]);return t}function omitEventHandlers(e){if(void 0===e)return{};const t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t])).forEach(g=>{t[g]=e[g]}),t}function mergeSlotProps$1(e){const{getSlotProps:t,additionalProps:g,externalSlotProps:n,externalForwardedProps:o,className:a}=e;if(!t){const e=clsx(g?.className,a,o?.className,n?.className),t={...g?.style,...o?.style,...n?.style},C={...g,...o,...n};return e.length>0&&(C.className=e),Object.keys(t).length>0&&(C.style=t),{props:C,internalRef:void 0}}const C=extractEventHandlers({...o,...n}),I=omitEventHandlers(n),i=omitEventHandlers(o),s=t(C),l=clsx(s?.className,g?.className,a,o?.className,n?.className),c={...s?.style,...g?.style,...o?.style,...n?.style},u={...s,...g,...i,...I};return l.length>0&&(u.className=l),Object.keys(c).length>0&&(u.style=c),{props:u,internalRef:s.ref}}function resolveComponentProps(e,t,g){return"function"==typeof e?e(t,g):e}function useSlotProps(e){const{elementType:t,externalSlotProps:g,ownerState:n,skipResolvingSlotProps:o=!1,...a}=e,C=o?{}:resolveComponentProps(g,n),{props:I,internalRef:i}=mergeSlotProps$1({...a,externalSlotProps:C});return appendOwnerState(t,{...I,ref:useForkRef(i,C?.ref,e.additionalProps?.ref)},n)}CombatStream.displayName="CombatStream";var $C=l.createContext(void 0);function useRovingTabIndexContext(){const e=l.useContext($C);if(void 0===e)throw new Error("MUI: RovingTabIndexContext is missing. Roving tab index items must be placed within a roving tab index provider.");return e}var QC=Object.is;function fastObjectShallowCompare(e,t){if(e===t)return!0;if(!(e instanceof Object&&t instanceof Object))return!1;let g=0,n=0;for(const o in e){if(g+=1,!QC(e[o],t[o]))return!1;if(!(o in t))return!1}for(const o in t)n+=1;return g===n}function activeElement(e){let t=e.activeElement;for(;null!=t?.shadowRoot?.activeElement;)t=t.shadowRoot.activeElement;return t}function ownerDocument(e){return e&&e.ownerDocument||document}function setRef(e,t){"function"==typeof e?e(t):e&&(e.current=t)}function useEventCallback(e){const t=l.useRef(e);return RA(()=>{t.current=e}),l.useRef((...e)=>(0,t.current)(...e)).current}var XC=["ArrowRight","ArrowLeft","ArrowUp","ArrowDown","Home","End"];function useRovingTabIndexRoot(e){const{activeItemId:t,getDefaultActiveItemId:g,orientation:n,isRtl:o=!1,isItemFocusable:a=isItemFocusable,wrap:C=!0}=e,[I,i]=l.useState(t),s=l.useRef(t);let c=I;t!==s.current&&(s.current=t,void 0!==t&&t!==I&&(c=t,i(t)));const u=l.useRef(null),d=l.useRef(new Map),[p,m]=l.useState(0),h=resolveActiveItemId(c,l.useMemo(()=>getOrderedItems(d.current),[p]),a,g),y=l.useRef(h);y.current=h;const b=l.useCallback(()=>{const e=getOrderedItems(d.current);return getItemById(e,resolveActiveItemId(y.current,e,a,g))},[g,a]),v=l.useCallback(()=>d.current,[]),x=useEventCallback(e=>{fastObjectShallowCompare(d.current.get(e.id)??null,e)||(d.current.set(e.id,e),m(e=>e+1))}),S=useEventCallback(e=>{d.current.delete(e)&&m(e=>e+1)}),w=useEventCallback(e=>{i(e)}),E=l.useCallback(e=>y.current===e,[]),R=l.useCallback((e,t,g,n)=>{const o=getNextActiveItem(getNavigableItemsSnapshot(d.current),e,t,g,n??a);return o?(o.element?.focus(),i(o.id),o):null},[a]),T=l.useCallback(e=>({onFocus:e=>{const t=getNavigableItemsSnapshot(d.current),g=findItemIndexByElement(t,e.target);-1!==g&&i(t[g].id)},onKeyDown:e=>{if(e.altKey||e.shiftKey||e.ctrlKey||e.metaKey)return;if(!XC.includes(e.key))return;let t="horizontal"===n?"ArrowLeft":"ArrowUp",g="horizontal"===n?"ArrowRight":"ArrowDown";"horizontal"===n&&o&&(t="ArrowRight",g="ArrowLeft");const a=getNavigableItemsSnapshot(d.current),I=activeElement(ownerDocument(u.current)),i=I===u.current;let s=getCurrentActiveItemIndex(a,I,y.current),l="next";switch(e.key){case t:l="previous",e.preventDefault(),i&&(s=a.length);break;case g:e.preventDefault(),i&&(s=-1);break;case"Home":e.preventDefault(),s=-1;break;case"End":e.preventDefault(),l="previous",s=a.length;break;default:return}R(s,l,C)},ref:handleRefs(e,e=>{u.current=e})}),[R,o,n,C]),M=l.useCallback(e=>{const t=getNavigableItemsSnapshot(d.current),g=activeElement(ownerDocument(u.current));return R(g===u.current?-1:getCurrentActiveItemIndex(t,g,y.current),"next",!0,e)?.id??null},[R]);return l.useMemo(()=>({activeItemId:h,focusNext:M,getActiveItem:b,getContainerProps:T,getItemMap:v,isItemActive:E,registerItem:x,setActiveItemId:w,unregisterItem:S}),[h,M,b,T,v,E,x,w,S])}function useRovingTabIndexItem(e){const{activeItemId:t,registerItem:g,unregisterItem:n}=useRovingTabIndexContext(),o=l.useRef(null),a=l.useMemo(()=>({disabled:e.disabled??!1,element:null,focusableWhenDisabled:e.focusableWhenDisabled??!1,id:e.id,selected:e.selected??!1,textValue:e.textValue}),[e.disabled,e.focusableWhenDisabled,e.id,e.selected,e.textValue]),C=l.useRef(a);C.current=a;const I=l.useCallback(t=>{o.current=t,null!=t?g({...C.current,element:t}):queueMicrotask(()=>{null==o.current&&n(e.id)})},[e.id,g,n]),i=useForkRef(e.ref,I);return RA(()=>{o.current&&g({...a,element:o.current})},[a,g]),RA(()=>{const t=e.id;return()=>{n(t)}},[e.id,n]),{ref:i,tabIndex:t===e.id?0:-1}}function resolveActiveItemId(e,t,g,n){return null!=e?resolveRequestedItemId(e,t,g):resolveDefaultItemId(t,g,n)}function resolveRequestedItemId(e,t,g){const n=findItemIndexById(t,e);return-1===n?getFirstFocusableItemId(t,g):g(t[n])?t[n].id:getNextActiveItem(t,n,"next",!1,g)?.id??null}function resolveDefaultItemId(e,t,g){const n=g?.(e);if(null!=n){const g=getItemById(e,n);if(g&&t(g))return g.id}return getFirstFocusableItemId(e,t)}function getCurrentActiveItemIndex(e,t,g){if(t){const g=findItemIndexByElement(e,t);if(-1!==g)return g}return findItemIndexById(e,g)}function getNextActiveItem(e,t,g,n,o){const a=e.length-1;if(-1===a)return null;let C=!1,I=getNextIndex(t,a,g,n);const i=I;for(;-1!==I;){if(I===i){if(C)return null;C=!0}const t=e[I];if(t&&o(t))return t;I=getNextIndex(I,a,g,n)}return null}function getFirstFocusableItemId(e,t){return e.find(e=>t(e))?.id??null}function getItemById(e,t){return null==t?null:e.find(e=>e.id===t)??null}function findItemIndexById(e,t){return null==t?-1:e.findIndex(e=>e.id===t)}function findItemIndexByElement(e,t){return t?e.findIndex(e=>e.element===t||e.element?.contains(t)):-1}function getOrderedItems(e){const t=Array.from(e.values());return t.every(e=>null==e.element)?t:[...t.filter(isConnectedItem).sort((e,t)=>sortByDocumentPosition(e.element,t.element)),...t.filter(e=>!isConnectedItem(e))]}function getNavigableItemsSnapshot(e){return getOrderedItems(e).filter(isConnectedItem)}function getNextIndex(e,t,g,n=!0){return"next"===g?e===t?n?0:-1:e+1:0===e?n?t:-1:e-1}function isItemFocusable(e){return!!e.element&&(!!e.focusableWhenDisabled||!e.disabled&&!e.element.hasAttribute("disabled")&&"true"!==e.element.getAttribute("aria-disabled")&&e.element.hasAttribute("tabindex"))}function isConnectedItem(e){return null!=e.element&&e.element.isConnected}function sortByDocumentPosition(e,t){if(e===t)return 0;const g=e.compareDocumentPosition(t);return g&Node.DOCUMENT_POSITION_FOLLOWING||g&Node.DOCUMENT_POSITION_CONTAINED_BY?-1:g&Node.DOCUMENT_POSITION_PRECEDING||g&Node.DOCUMENT_POSITION_CONTAINS?1:0}function handleRefs(...e){return t=>{e.forEach(e=>{setRef(e??null,t)})}}function contains$1(e,t){if(!e||!t)return!1;if(e.contains(t))return!0;const g=t.getRootNode?.();if(g&&g instanceof ShadowRoot){let g=t;for(;g;){if(e===g)return!0;g=g.parentNode??g.host??null}}return!1}var JC=contains$1,qC=ownerDocument,eI=activeElement;function getScrollbarSize(e=window){const t=e.document.documentElement.clientWidth;return e.innerWidth-t}var tI=getScrollbarSize;function focusWithVisible(e,t){if(null!=t)try{e.focus({focusVisible:"keyboard"===t})}catch(g){e.focus()}else e.focus()}var gI=useEventCallback,nI=useForkRef,rI=RA;function ownerWindow(e){return ownerDocument(e).defaultView||window}var oI=ownerWindow,aI=l.createContext({});function getListUtilityClass(e){return generateUtilityClass("MuiList",e)}generateUtilityClasses("MuiList",["root","padding","dense","subheader"]);var useUtilityClasses$36=e=>{const{classes:t,disablePadding:g,dense:n,subheader:o}=e;return composeClasses({root:["root",!g&&"padding",n&&"dense",o&&"subheader"]},getListUtilityClass,t)},AI=sC("ul",{name:"MuiList",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.root,!g.disablePadding&&t.padding,g.dense&&t.dense,g.subheader&&t.subheader]}})({listStyle:"none",margin:0,padding:0,position:"relative",variants:[{props:({ownerState:e})=>!e.disablePadding,style:{paddingTop:8,paddingBottom:8}},{props:({ownerState:e})=>e.subheader,style:{paddingTop:0,isolation:"isolate"}}]}),CI=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiList"}),{children:n,className:o,component:a="ul",dense:C=!1,disablePadding:I=!1,subheader:i,...s}=g,c=l.useMemo(()=>({dense:C}),[C]),u={...g,component:a,dense:C,disablePadding:I},d=useUtilityClasses$36(u);return(0,ja.jsx)(aI.Provider,{value:c,children:(0,ja.jsxs)(AI,{as:a,className:clsx(d.root,o),ref:t,ownerState:u,...s,children:[i,n]})})});function getOpenInteractionType(e){return e?"mousedown"===e.type||"pointerdown"===e.type||"touchstart"===e.type?"pointer":"keydown"===e.type||"click"===e.type&&0===e.detail?"keyboard":null:null}function isEmpty$1(e){return null==e||"string"==typeof e&&!e.trim()}function areEqualValues(e,t){return"object"==typeof t&&null!==t?e===t:String(e)===String(t)}var II=l.createContext(null);function useSelectFocusSource(){return l.useContext(II)}var iI=II.Provider,sI=l.createContext(void 0);function useMenuListContext(){const e=l.useContext(sI);if(void 0===e)throw new Error("MUI: MenuListContext is missing. MenuItems must be placed within Menu or MenuList.");return e}function getItemText(e){const t=e?.element??e;if(!t)return"";if(void 0!==e?.textValue)return e.textValue;let g=t.innerText;return void 0===g&&(g=t.textContent),g??""}function textCriteriaMatches(e,t){if(void 0===t)return!0;let g=getItemText(e);return g=g.trim().toLowerCase(),0!==g.length&&(t.repeating?g[0]===t.keys[0]:g.startsWith(t.keys.join("")))}function isItemFocusableWithTextCriteria(e,t){return!!textCriteriaMatches(e,t)&&isItemFocusable(e)}function focusInitialItem(e,t){focusWithVisible(e,t)}var lI=l.forwardRef(function(e,t){const{actions:g,autoFocus:n=!1,autoFocusItem:o=!1,children:a,className:C,disabledItemsFocusable:I=!1,disableListWrap:i=!1,onKeyDown:s,variant:c="selectedMenu",...u}=e,d=l.useRef(null),p=l.useRef(!1),[m,h]=l.useState(!1),y=useSelectFocusSource(),b=l.useRef({keys:[],repeating:!0,previousKeyMatched:!0,lastTime:null}),v=useRovingTabIndexRoot({activeItemId:void 0,getDefaultActiveItemId:l.useCallback(e=>"selectedMenu"===c?e.find(e=>e.selected&&isItemFocusable(e))?.id??e.find(e=>isItemFocusable(e))?.id??null:e.find(e=>isItemFocusable(e))?.id??null,[c]),orientation:"vertical",wrap:!i}),{activeItemId:x,focusNext:S,getActiveItem:w,getContainerProps:E,getItemMap:R}=v,T=gI((e=!1)=>{if(!d.current||!e&&p.current)return null;if(o){const e=w();if(e?.element){const t=Array.from(R().values()).some(e=>e.selected);return h("menu"===c&&t&&!e.selected&&null==y),focusInitialItem(e.element,y),p.current=!0,e.element}return n?(h(!1),d.current.focus(),d.current):null}return n?(h(!1),d.current.focus(),p.current=!0,d.current):(h(!1),null)});rI(()=>{if(!n&&!o)return p.current=!1,void h(!1);T()},[x,o,n,T]),l.useImperativeHandle(g,()=>({adjustStyleForScrollbar:(e,{direction:t})=>{const g=!d.current.style.width;if(e.clientHeight<d.current.clientHeight&&g){const g=`${tI(oI(e))}px`;d.current.style["rtl"===t?"paddingLeft":"paddingRight"]=g,d.current.style.width=`calc(100% + ${g})`}return d.current},focusInitialTarget:()=>{if(!d.current)return null;const e=eI(qC(d.current));return e&&JC(d.current,e)?e:T(!0)}}),[T]);const M=E(),P=nI(d,M.ref,t),N=l.useMemo(()=>({itemsFocusableWhenDisabled:I,suppressInitialFocusVisible:m,variant:c}),[I,m,c]);return(0,ja.jsx)(CI,{role:"menu",ref:P,className:C,onKeyDown:gI(e=>{if(m&&h(!1),(e.ctrlKey||e.metaKey||e.altKey)&&s)s(e);else{if(M.onKeyDown(e),1===e.key.length){const t=b.current,g=e.key.toLowerCase(),n=performance.now();t.keys.length>0&&(n-t.lastTime>500?(t.keys=[],t.repeating=!0,t.previousKeyMatched=!0):t.repeating&&g!==t.keys[0]&&(t.repeating=!1)),t.lastTime=n,t.keys.push(g);const o=eI(qC(d.current)),a=o&&!t.repeating&&textCriteriaMatches(o,t);t.previousKeyMatched&&(a||null!=S(e=>isItemFocusableWithTextCriteria(e,t)))?e.preventDefault():t.previousKeyMatched=!1}s&&s(e)}}),onFocus:M.onFocus,tabIndex:-1,...u,children:(0,ja.jsx)(sI.Provider,{value:N,children:(0,ja.jsx)($C.Provider,{value:v,children:a})})})});function debounce$1(e,t=166){let g;function debounced(...n){const later=()=>{e.apply(this,n)};clearTimeout(g),g=setTimeout(later,t)}return debounced.clear=()=>{clearTimeout(g)},debounced}var cI=debounce$1,uI={};function useLazyRef(e,t){const g=l.useRef(uI);return g.current===uI&&(g.current=e(t)),g}var dI=[];function useOnMount(e){l.useEffect(e,dI)}var pI=class e{static create(){return new e}currentId=null;start(e,t){this.clear(),this.currentId=setTimeout(()=>{this.currentId=null,t()},e)}clear=()=>{null!==this.currentId&&(clearTimeout(this.currentId),this.currentId=null)};disposeEffect=()=>this.clear};function useTimeout(){const e=useLazyRef(pI.create).current;return useOnMount(e.disposeEffect),e}function getReactElementRef(e){return parseInt(l.version,10)>=19?e?.props?.ref||null:e?.ref||null}function _objectWithoutPropertiesLoose(e,t){if(null==e)return{};var g={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;g[n]=e[n]}return g}function _setPrototypeOf(e,t){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},_setPrototypeOf(e,t)}function _inheritsLoose(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,_setPrototypeOf(e,t)}var mI={disabled:!1},fI=t.default.createContext(null),forceReflow=function(e){return e.scrollTop},hI="unmounted",yI="exited",bI="entering",vI="entered",xI="exiting",SI=function(e){function Transition(t,g){var n,o=e.call(this,t,g)||this,a=g&&!g.isMounting?t.enter:t.appear;return o.appearStatus=null,t.in?a?(n=yI,o.appearStatus=bI):n=vI:n=t.unmountOnExit||t.mountOnEnter?hI:yI,o.state={status:n},o.nextCallback=null,o}_inheritsLoose(Transition,e),Transition.getDerivedStateFromProps=function(e,t){return e.in&&"unmounted"===t.status?{status:yI}:null};var g=Transition.prototype;return g.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},g.componentDidUpdate=function(e){var t=null;if(e!==this.props){var g=this.state.status;this.props.in?"entering"!==g&&"entered"!==g&&(t=bI):"entering"!==g&&"entered"!==g||(t=xI)}this.updateStatus(!1,t)},g.componentWillUnmount=function(){this.cancelNextCallback()},g.getTimeouts=function(){var e,t,g=this.props.timeout,n=e=t=g;return null!=g&&"number"!=typeof g&&(n=g.exit,e=g.enter,t=void 0!==g.appear?g.appear:e),{exit:n,enter:e,appear:t}},g.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t)if(this.cancelNextCallback(),"entering"===t){if(this.props.unmountOnExit||this.props.mountOnEnter){var g=this.props.nodeRef?this.props.nodeRef.current:n.default.findDOMNode(this);g&&forceReflow(g)}this.performEnter(e)}else this.performExit();else this.props.unmountOnExit&&"exited"===this.state.status&&this.setState({status:hI})},g.performEnter=function(e){var t=this,g=this.props.enter,o=this.context?this.context.isMounting:e,a=this.props.nodeRef?[o]:[n.default.findDOMNode(this),o],C=a[0],I=a[1],i=this.getTimeouts(),s=o?i.appear:i.enter;!e&&!g||mI.disabled?this.safeSetState({status:vI},function(){t.props.onEntered(C)}):(this.props.onEnter(C,I),this.safeSetState({status:bI},function(){t.props.onEntering(C,I),t.onTransitionEnd(s,function(){t.safeSetState({status:vI},function(){t.props.onEntered(C,I)})})}))},g.performExit=function(){var e=this,t=this.props.exit,g=this.getTimeouts(),o=this.props.nodeRef?void 0:n.default.findDOMNode(this);t&&!mI.disabled?(this.props.onExit(o),this.safeSetState({status:xI},function(){e.props.onExiting(o),e.onTransitionEnd(g.exit,function(){e.safeSetState({status:yI},function(){e.props.onExited(o)})})})):this.safeSetState({status:yI},function(){e.props.onExited(o)})},g.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},g.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},g.setNextCallback=function(e){var t=this,g=!0;return this.nextCallback=function(n){g&&(g=!1,t.nextCallback=null,e(n))},this.nextCallback.cancel=function(){g=!1},this.nextCallback},g.onTransitionEnd=function(e,t){this.setNextCallback(t);var g=this.props.nodeRef?this.props.nodeRef.current:n.default.findDOMNode(this),o=null==e&&!this.props.addEndListener;if(g&&!o){if(this.props.addEndListener){var a=this.props.nodeRef?[this.nextCallback]:[g,this.nextCallback],C=a[0],I=a[1];this.props.addEndListener(C,I)}null!=e&&setTimeout(this.nextCallback,e)}else setTimeout(this.nextCallback,0)},g.render=function(){var e=this.state.status;if("unmounted"===e)return null;var g=this.props,n=g.children;g.in,g.mountOnEnter,g.unmountOnExit,g.appear,g.enter,g.exit,g.timeout,g.addEndListener,g.onEnter,g.onEntering,g.onEntered,g.onExit,g.onExiting,g.onExited,g.nodeRef;var o=_objectWithoutPropertiesLoose(g,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]);return t.default.createElement(fI.Provider,{value:null},"function"==typeof n?n(e,o):t.default.cloneElement(t.default.Children.only(n),o))},Transition}(t.default.Component);function noop$3(){}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function getChildMapping(e,g){var mapper=function(e){return g&&(0,t.isValidElement)(e)?g(e):e},n=Object.create(null);return e&&t.Children.map(e,function(e){return e}).forEach(function(e){n[e.key]=mapper(e)}),n}function mergeChildMappings(e,t){function getValueForKey(g){return g in t?t[g]:e[g]}e=e||{},t=t||{};var g,n=Object.create(null),o=[];for(var a in e)a in t?o.length&&(n[a]=o,o=[]):o.push(a);var C={};for(var I in t){if(n[I])for(g=0;g<n[I].length;g++){var i=n[I][g];C[n[I][g]]=getValueForKey(i)}C[I]=getValueForKey(I)}for(g=0;g<o.length;g++)C[o[g]]=getValueForKey(o[g]);return C}function getProp(e,t,g){return null!=g[t]?g[t]:e.props[t]}function getInitialChildMapping(e,g){return getChildMapping(e.children,function(n){return(0,t.cloneElement)(n,{onExited:g.bind(null,n),in:!0,appear:getProp(n,"appear",e),enter:getProp(n,"enter",e),exit:getProp(n,"exit",e)})})}function getNextChildMapping(e,g,n){var o=getChildMapping(e.children),a=mergeChildMappings(g,o);return Object.keys(a).forEach(function(C){var I=a[C];if((0,t.isValidElement)(I)){var i=C in g,s=C in o,l=g[C],c=(0,t.isValidElement)(l)&&!l.props.in;!s||i&&!c?s||!i||c?s&&i&&(0,t.isValidElement)(l)&&(a[C]=(0,t.cloneElement)(I,{onExited:n.bind(null,I),in:l.props.in,exit:getProp(I,"exit",e),enter:getProp(I,"enter",e)})):a[C]=(0,t.cloneElement)(I,{in:!1}):a[C]=(0,t.cloneElement)(I,{onExited:n.bind(null,I),in:!0,exit:getProp(I,"exit",e),enter:getProp(I,"enter",e)})}}),a}SI.contextType=fI,SI.propTypes={},SI.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:noop$3,onEntering:noop$3,onEntered:noop$3,onExit:noop$3,onExiting:noop$3,onExited:noop$3},SI.UNMOUNTED=hI,SI.EXITED=yI,SI.ENTERING=bI,SI.ENTERED=vI,SI.EXITING=xI;var wI=Object.values||function(e){return Object.keys(e).map(function(t){return e[t]})},kI={component:"div",childFactory:function(e){return e}},EI=function(e){function TransitionGroup(t,g){var n=e.call(this,t,g)||this;return n.state={contextValue:{isMounting:!0},handleExited:n.handleExited.bind(_assertThisInitialized(n)),firstRender:!0},n}_inheritsLoose(TransitionGroup,e);var g=TransitionGroup.prototype;return g.componentDidMount=function(){this.mounted=!0,this.setState({contextValue:{isMounting:!1}})},g.componentWillUnmount=function(){this.mounted=!1},TransitionGroup.getDerivedStateFromProps=function(e,t){var g=t.children,n=t.handleExited;return{children:t.firstRender?getInitialChildMapping(e,n):getNextChildMapping(e,g,n),firstRender:!1}},g.handleExited=function(e,t){var g=getChildMapping(this.props.children);e.key in g||(e.props.onExited&&e.props.onExited(t),this.mounted&&this.setState(function(t){var g=_extends({},t.children);return delete g[e.key],{children:g}}))},g.render=function(){var e=this.props,g=e.component,n=e.childFactory,o=_objectWithoutPropertiesLoose(e,["component","childFactory"]),a=this.state.contextValue,C=wI(this.state.children).map(n);return delete o.appear,delete o.enter,delete o.exit,null===g?t.default.createElement(fI.Provider,{value:a},C):t.default.createElement(fI.Provider,{value:a},t.default.createElement(g,o,C))},TransitionGroup}(t.default.Component);EI.propTypes={},EI.defaultProps=kI;var reflow=e=>e.scrollTop;function normalizedTransitionCallback(e,t){return g=>{if(t){const n=e.current;void 0===g?t(n):t(n,g)}}}function getTransitionChildStyle(e,t,g,n,o,a){const C="exited"!==e||t?g[e]||g.exited:n;return o||a?{...C,...o,...a}:C}function getTransitionProps(e,t){const{timeout:g,easing:n,style:o={}}=e;return{duration:o.transitionDuration??("number"==typeof g?g:g[t.mode]||0),easing:o.transitionTimingFunction??("object"==typeof n?n[t.mode]:n),delay:o.transitionDelay}}function getScale(e){return`scale(${e}, ${e**2})`}var RI={entering:{opacity:1,transform:getScale(1)},entered:{opacity:1,transform:"none"},exiting:{opacity:0,transform:getScale(.75)},exited:{opacity:0,transform:getScale(.75)}},TI={opacity:0,transform:getScale(.75),visibility:"hidden"},MI=l.forwardRef(function(e,t){const{addEndListener:g,appear:n=!0,children:o,easing:a,in:C,onEnter:I,onEntered:i,onEntering:s,onExit:c,onExited:u,onExiting:d,style:p,timeout:m="auto",...h}=e,y=useTimeout(),b=l.useRef(),v=useTheme$1(),x=l.useRef(null),S=nI(x,getReactElementRef(o),t),w=normalizedTransitionCallback(x,s),E=normalizedTransitionCallback(x,(e,t)=>{reflow(e);const{duration:g,delay:n,easing:o}=getTransitionProps({style:p,timeout:m,easing:a},{mode:"enter"});let C;"auto"===m?(C=v.transitions.getAutoHeightDuration(e.clientHeight),b.current=C):C=g,e.style.transition=[v.transitions.create("opacity",{duration:C,delay:n}),v.transitions.create("transform",{duration:.666*C,delay:n,easing:o})].join(","),I&&I(e,t)}),R=normalizedTransitionCallback(x,i),T=normalizedTransitionCallback(x,d),M=normalizedTransitionCallback(x,e=>{const{duration:t,delay:g,easing:n}=getTransitionProps({style:p,timeout:m,easing:a},{mode:"exit"});let o;"auto"===m?(o=v.transitions.getAutoHeightDuration(e.clientHeight),b.current=o):o=t,e.style.transition=[v.transitions.create("opacity",{duration:o,delay:g}),v.transitions.create("transform",{duration:.666*o,delay:g||.333*o,easing:n})].join(","),e.style.opacity=0,e.style.transform=getScale(.75),c&&c(e)}),P=normalizedTransitionCallback(x,e=>{e.style.transition="",u&&u(e)}),handleAddEndListener=e=>{"auto"===m&&y.start(b.current||0,e),g&&g(x.current,e)};return(0,ja.jsx)(SI,{appear:n,in:C,nodeRef:x,onEnter:E,onEntered:R,onEntering:w,onExit:M,onExited:P,onExiting:T,addEndListener:handleAddEndListener,timeout:"auto"===m?null:m,...h,children:(e,{ownerState:t,...g})=>{const n=getTransitionChildStyle(e,C,RI,TI,p,o.props.style);return l.cloneElement(o,{style:n,ref:S,...g})}})});function isOverflowing(e){const t=ownerDocument(e);return t.body===e?ownerWindow(e).innerWidth>t.documentElement.clientWidth:e.scrollHeight>e.clientHeight}function ariaHidden(e,t){t?e.setAttribute("aria-hidden","true"):e.removeAttribute("aria-hidden")}function getPaddingRight(e){return parseFloat(ownerWindow(e).getComputedStyle(e).paddingRight)||0}function isAriaHiddenForbiddenOnElement(e){const t=["TEMPLATE","SCRIPT","STYLE","LINK","MAP","META","NOSCRIPT","PICTURE","COL","COLGROUP","PARAM","SLOT","SOURCE","TRACK"].includes(e.tagName),g="INPUT"===e.tagName&&"hidden"===e.getAttribute("type");return t||g}function ariaHiddenSiblings(e,t,g,n,o){const a=[t,g,...n];[].forEach.call(e.children,e=>{const t=!a.includes(e),g=!isAriaHiddenForbiddenOnElement(e);t&&g&&ariaHidden(e,o)})}function findIndexOf(e,t){let g=-1;return e.some((e,n)=>!!t(e)&&(g=n,!0)),g}function handleContainer(e,t){const g=[],n=e.container;if(!t.disableScrollLock){if(isOverflowing(n)){const e=getScrollbarSize(ownerWindow(n));g.push({value:n.style.paddingRight,property:"padding-right",el:n}),n.style.paddingRight=`${getPaddingRight(n)+e}px`;const t=ownerDocument(n).querySelectorAll(".mui-fixed");[].forEach.call(t,t=>{g.push({value:t.style.paddingRight,property:"padding-right",el:t}),t.style.paddingRight=`${getPaddingRight(t)+e}px`})}let e;if(n.parentNode instanceof DocumentFragment)e=ownerDocument(n).body;else{const t=n.parentElement,g=ownerWindow(n);e="HTML"===t?.nodeName&&"scroll"===g.getComputedStyle(t).overflowY?t:n}g.push({value:e.style.overflow,property:"overflow",el:e},{value:e.style.overflowX,property:"overflow-x",el:e},{value:e.style.overflowY,property:"overflow-y",el:e}),e.style.overflow="hidden"}return()=>{g.forEach(({value:e,el:t,property:g})=>{e?t.style.setProperty(g,e):t.style.removeProperty(g)})}}function getHiddenSiblings(e){const t=[];return[].forEach.call(e.children,e=>{"true"===e.getAttribute("aria-hidden")&&t.push(e)}),t}MI&&(MI.muiSupportAuto=!0);var PI=class{constructor(){this.modals=[],this.containers=[]}add(e,t){let g=this.modals.indexOf(e);if(-1!==g)return g;g=this.modals.length,this.modals.push(e),e.modalRef&&ariaHidden(e.modalRef,!1);const n=getHiddenSiblings(t);ariaHiddenSiblings(t,e.mount,e.modalRef,n,!0);const o=findIndexOf(this.containers,e=>e.container===t);return-1!==o?(this.containers[o].modals.push(e),g):(this.containers.push({modals:[e],container:t,restore:null,hiddenSiblings:n}),g)}mount(e,t){const g=findIndexOf(this.containers,t=>t.modals.includes(e)),n=this.containers[g];n.restore||(n.restore=handleContainer(n,t))}remove(e,t=!0){const g=this.modals.indexOf(e);if(-1===g)return g;const n=findIndexOf(this.containers,t=>t.modals.includes(e)),o=this.containers[n];if(o.modals.splice(o.modals.indexOf(e),1),this.modals.splice(g,1),0===o.modals.length)o.restore&&o.restore(),e.modalRef&&ariaHidden(e.modalRef,t),ariaHiddenSiblings(o.container,e.mount,e.modalRef,o.hiddenSiblings,!1),this.containers.splice(n,1);else{const e=o.modals[o.modals.length-1];e.modalRef&&ariaHidden(e.modalRef,!1)}return g}isTopModal(e){return this.modals.length>0&&this.modals[this.modals.length-1]===e}},NI="data-mui-focusable";function getFocusTarget(e){return e?e.hasAttribute("data-mui-focusable")?e:e.querySelector(`[${NI}]`):null}var zI=["input","select","textarea","a[href]","button","[tabindex]","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])'].join(",");function getTabIndex(e){const t=parseInt(e.getAttribute("tabindex")||"",10);return Number.isNaN(t)?"true"===e.contentEditable||("AUDIO"===e.nodeName||"VIDEO"===e.nodeName||"DETAILS"===e.nodeName)&&null===e.getAttribute("tabindex")?0:e.tabIndex:t}function isNonTabbableRadio(e){if("INPUT"!==e.tagName||"radio"!==e.type)return!1;if(!e.name)return!1;const getRadio=t=>e.ownerDocument.querySelector(`input[type="radio"]${t}`);let t=getRadio(`[name="${e.name}"]:checked`);return t||(t=getRadio(`[name="${e.name}"]`)),t!==e}function isNodeMatchingSelectorFocusable(e){return!(e.disabled||"INPUT"===e.tagName&&"hidden"===e.type||isNonTabbableRadio(e))}function defaultGetTabbable(e){const t=[],g=[];return Array.from(e.querySelectorAll(zI)).forEach((e,n)=>{const o=getTabIndex(e);-1!==o&&isNodeMatchingSelectorFocusable(e)&&(0===o?t.push(e):g.push({documentOrder:n,tabIndex:o,node:e}))}),g.sort((e,t)=>e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex).map(e=>e.node).concat(t)}function defaultIsEnabled(){return!0}function FocusTrap(e){const{children:t,disableAutoFocus:g=!1,disableEnforceFocus:n=!1,disableRestoreFocus:o=!1,getTabbable:a=defaultGetTabbable,isEnabled:C=defaultIsEnabled,open:I}=e,i=l.useRef(!1),s=l.useRef(null),c=l.useRef(null),u=l.useRef(null),d=l.useRef(null),p=l.useRef(!1),m=l.useRef(null),h=useForkRef(getReactElementRef(t),m),y=l.useRef(null);l.useEffect(()=>{I&&m.current&&(p.current=!g)},[g,I]),l.useEffect(()=>{if(i.current=!1,!I||!m.current)return;const e=eI(ownerDocument(m.current)),t=getFocusTarget(m.current)??m.current;return JC(m.current,e)||(t.hasAttribute("tabIndex")||t.setAttribute("tabIndex","-1"),p.current&&t.focus()),()=>{!o&&u.current&&(i.current=!0,u.current.focus(),u.current=null)}},[I]),l.useEffect(()=>{if(!I||!m.current)return;const e=ownerDocument(m.current),loopFocus=t=>{y.current=t,!n&&C()&&"Tab"===t.key&&eI(e)===m.current&&t.shiftKey&&(i.current=!0,c.current&&c.current.focus())},contain=()=>{const t=m.current;if(null===t)return;const g=eI(e);if(!e.hasFocus()||!C()||i.current)return void(i.current=!1);if(JC(t,g))return;if(n&&g!==s.current&&g!==c.current)return;if(g!==d.current)d.current=null;else if(null!==d.current)return;if(!p.current)return;let o=[];if(g!==s.current&&g!==c.current||(o=a(m.current)),o.length>0){const e=Boolean(y.current?.shiftKey&&"Tab"===y.current?.key),t=o[0],g=o[o.length-1];"string"!=typeof t&&"string"!=typeof g&&(e?g.focus():t.focus())}else t.focus()};e.addEventListener("focusin",contain),e.addEventListener("keydown",loopFocus,!0);const t=setInterval(()=>{const t=eI(e);t&&"BODY"===t.tagName&&contain()},50);return()=>{clearInterval(t),e.removeEventListener("focusin",contain),e.removeEventListener("keydown",loopFocus,!0)}},[g,n,o,C,I,a]);const onFocus=e=>{null===u.current&&(u.current=e.relatedTarget),p.current=!0,d.current=e.target;const g=t.props.onFocus;g&&g(e)},handleFocusSentinel=e=>{null===u.current&&(u.current=e.relatedTarget),p.current=!0};return(0,ja.jsxs)(l.Fragment,{children:[(0,ja.jsx)("div",{tabIndex:I?0:-1,onFocus:handleFocusSentinel,ref:s,"data-testid":"sentinelStart"}),l.cloneElement(t,{ref:h,onFocus}),(0,ja.jsx)("div",{tabIndex:I?0:-1,onFocus:handleFocusSentinel,ref:c,"data-testid":"sentinelEnd"})]})}function getContainer$1(e){return"function"==typeof e?e():e}var OI=l.forwardRef(function(e,t){const{children:g,container:n,disablePortal:o=!1}=e,[a,C]=l.useState(null),I=useForkRef(l.isValidElement(g)?getReactElementRef(g):null,t);if(RA(()=>{o||C(getContainer$1(n)||document.body)},[n,o]),RA(()=>{if(a&&!o)return setRef(t,a),()=>{setRef(t,null)}},[t,a,o]),o){if(l.isValidElement(g)){const e={ref:I};return l.cloneElement(g,e)}return g}return a?c.createPortal(g,a):a});function useSlot(e,t){const{className:g,elementType:n,ownerState:o,externalForwardedProps:a,internalForwardedProps:C,shouldForwardComponentProp:I=!1,...i}=t,{component:s,slots:l={[e]:void 0},slotProps:c={[e]:void 0},...u}=a,d=l[e]||n,p=resolveComponentProps(c[e],o),{props:{component:m,...h},internalRef:y}=mergeSlotProps$1({className:g,...i,externalForwardedProps:"root"===e?u:void 0,externalSlotProps:p}),b=useForkRef(y,p?.ref,t.ref),v="root"===e?m||s:m;return[d,appendOwnerState(d,{..."root"===e&&!s&&!l[e]&&C,..."root"!==e&&!l[e]&&C,...h,...v&&!I&&{as:v},...v&&I&&{component:v},ref:b},o)]}var DI={entering:{opacity:1},entered:{opacity:1},exiting:{opacity:0},exited:{opacity:0}},jI={opacity:0,visibility:"hidden"},LI=l.forwardRef(function(e,t){const g=useTheme$1(),n={enter:g.transitions.duration.enteringScreen,exit:g.transitions.duration.leavingScreen},{addEndListener:o,appear:a=!0,children:C,easing:I,in:i,onEnter:s,onEntered:c,onEntering:u,onExit:d,onExited:p,onExiting:m,style:h,timeout:y=n,...b}=e,v=l.useRef(null),x=nI(v,getReactElementRef(C),t),S=normalizedTransitionCallback(v,u),w=normalizedTransitionCallback(v,(e,t)=>{reflow(e);const n=getTransitionProps({style:h,timeout:y,easing:I},{mode:"enter"});e.style.transition=g.transitions.create("opacity",n),s&&s(e,t)}),E=normalizedTransitionCallback(v,c),R=normalizedTransitionCallback(v,m),T=normalizedTransitionCallback(v,e=>{const t=getTransitionProps({style:h,timeout:y,easing:I},{mode:"exit"});e.style.transition=g.transitions.create("opacity",t),d&&d(e)}),M=normalizedTransitionCallback(v,e=>{e.style.transition="",p&&p(e)}),handleAddEndListener=e=>{o&&o(v.current,e)};return(0,ja.jsx)(SI,{appear:a,in:i,nodeRef:v,onEnter:w,onEntered:E,onEntering:S,onExit:T,onExited:M,onExiting:R,addEndListener:handleAddEndListener,timeout:y,...b,children:(e,{ownerState:t,...g})=>{const n=getTransitionChildStyle(e,i,DI,jI,h,C.props.style);return l.cloneElement(C,{style:n,ref:x,...g})}})});function getBackdropUtilityClass(e){return generateUtilityClass("MuiBackdrop",e)}generateUtilityClasses("MuiBackdrop",["root","invisible"]);var useUtilityClasses$35=e=>{const{classes:t,invisible:g}=e;return composeClasses({root:["root",g&&"invisible"]},getBackdropUtilityClass,t)},GI=sC("div",{name:"MuiBackdrop",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.root,g.invisible&&t.invisible]}})({position:"fixed",display:"flex",alignItems:"center",justifyContent:"center",right:0,bottom:0,top:0,left:0,backgroundColor:"rgba(0, 0, 0, 0.5)",WebkitTapHighlightColor:"transparent",variants:[{props:{invisible:!0},style:{backgroundColor:"transparent"}}]}),BI=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiBackdrop"}),{children:n,className:o,component:a="div",invisible:C=!1,open:I,slotProps:i={},slots:s={},transitionDuration:l,...c}=g,u={...g,component:a,invisible:C},d=useUtilityClasses$35(u),p={component:a,slots:s,slotProps:i},[m,h]=useSlot("root",{elementType:GI,externalForwardedProps:p,className:clsx(d.root,o),ownerState:u}),[y,b]=useSlot("transition",{elementType:LI,externalForwardedProps:p,ownerState:u});return(0,ja.jsx)(y,{in:I,timeout:l,...c,...b,children:(0,ja.jsx)(m,{...h,ref:t,children:n})})});function createChainedFunction(...e){return e.reduce((e,t)=>null==t?e:function(...g){e.apply(this,g),t.apply(this,g)},()=>{})}function getContainer(e){return"function"==typeof e?e():e}function getHasTransition(e){return!!e&&e.props.hasOwnProperty("in")}var noop$2=()=>{},FI=new PI;function useModal(e){const{container:t,disableScrollLock:g=!1,closeAfterTransition:n=!1,onTransitionEnter:o,onTransitionExited:a,children:C,onClose:I,open:i,rootRef:s}=e,c=l.useRef({}),u=l.useRef(null),d=l.useRef(null),p=useForkRef(d,s),[m,h]=l.useState(!i),y=getHasTransition(C);let b=!0;"false"!==e["aria-hidden"]&&!1!==e["aria-hidden"]||(b=!1);const getDoc=()=>ownerDocument(u.current),getModal=()=>(c.current.modalRef=d.current,c.current.mount=u.current,c.current),handleMounted=()=>{FI.mount(getModal(),{disableScrollLock:g}),d.current&&(d.current.scrollTop=0)},v=useEventCallback(()=>{const e=getContainer(t)||getDoc().body;FI.add(getModal(),e),d.current&&handleMounted()}),isTopModal=()=>FI.isTopModal(getModal()),x=useEventCallback(e=>{u.current=e,e&&(i&&isTopModal()?handleMounted():d.current&&ariaHidden(d.current,b))}),S=l.useCallback(()=>{FI.remove(getModal(),b)},[b]);l.useEffect(()=>()=>{S()},[S]),l.useEffect(()=>{i?v():y&&n||S()},[i,S,y,n,v]);const createHandleKeyDown=e=>t=>{e.onKeyDown?.(t),"Escape"===t.key&&229!==t.which&&isTopModal()&&(t.stopPropagation(),I&&I(t,"escapeKeyDown"))},createHandleBackdropClick=e=>t=>{e.onClick?.(t),t.target===t.currentTarget&&I&&I(t,"backdropClick")};return{getRootProps:(t={})=>{const g=extractEventHandlers(e);delete g.onTransitionEnter,delete g.onTransitionExited;const n={...g,...t};return{role:"presentation",...n,onKeyDown:createHandleKeyDown(n),ref:p}},getBackdropProps:(e={})=>{const t=e;return{"aria-hidden":!0,...t,onClick:createHandleBackdropClick(t),open:i}},getTransitionProps:()=>{const handleExited=()=>{h(!0),a&&a(),n&&S()};return{onEnter:createChainedFunction(()=>{h(!1),o&&o()},C?.props.onEnter??noop$2),onExited:createChainedFunction(handleExited,C?.props.onExited??noop$2)}},rootRef:p,portalRef:x,isTopModal,exited:m,hasTransition:y}}function getModalUtilityClass(e){return generateUtilityClass("MuiModal",e)}generateUtilityClasses("MuiModal",["root","hidden","backdrop"]);var useUtilityClasses$34=e=>{const{open:t,exited:g,classes:n}=e;return composeClasses({root:["root",!t&&g&&"hidden"],backdrop:["backdrop"]},getModalUtilityClass,n)},WI=sC("div",{name:"MuiModal",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.root,!g.open&&g.exited&&t.hidden]}})(hC(({theme:e})=>({position:"fixed",zIndex:(e.vars||e).zIndex.modal,right:0,bottom:0,top:0,left:0,variants:[{props:({ownerState:e})=>!e.open&&e.exited,style:{visibility:"hidden"}}]}))),VI=sC(BI,{name:"MuiModal",slot:"Backdrop"})({zIndex:-1}),_I=l.forwardRef(function(e,t){const g=useDefaultProps({name:"MuiModal",props:e}),{classes:n,className:o,closeAfterTransition:a=!1,children:C,container:I,component:i,disableAutoFocus:s=!1,disableEnforceFocus:c=!1,disablePortal:u=!1,disableRestoreFocus:d=!1,disableScrollLock:p=!1,hideBackdrop:m=!1,keepMounted:h=!1,onClose:y,onTransitionEnter:b,onTransitionExited:v,open:x,slotProps:S={},slots:w={},theme:E,...R}=g,T={...g,closeAfterTransition:a,disableAutoFocus:s,disableEnforceFocus:c,disablePortal:u,disableRestoreFocus:d,disableScrollLock:p,hideBackdrop:m,keepMounted:h},{getRootProps:M,getBackdropProps:P,getTransitionProps:N,portalRef:O,isTopModal:D,exited:j,hasTransition:L}=useModal({...T,rootRef:t}),G={...T,exited:j},B=useUtilityClasses$34(G),F={};if(void 0===C.props.tabIndex&&(F.tabIndex="-1"),L){const{onEnter:e,onExited:t}=N();F.onEnter=e,F.onExited=t}const W={slots:w,slotProps:S},[V,U]=useSlot("root",{ref:t,elementType:WI,externalForwardedProps:{...W,...R,component:i},getSlotProps:M,ownerState:G,className:clsx(o,B?.root,!G.open&&G.exited&&B?.hidden)}),[Z,K]=useSlot("backdrop",{elementType:VI,externalForwardedProps:W,shouldForwardComponentProp:!0,getSlotProps:e=>P({...e,onClick:t=>{e?.onClick&&e.onClick(t)}}),className:B?.backdrop,ownerState:G});return h||x||L&&!j?(0,ja.jsx)(OI,{ref:O,container:I,disablePortal:u,children:(0,ja.jsxs)(V,{...U,children:[m?null:(0,ja.jsx)(Z,{...K}),(0,ja.jsx)(FocusTrap,{disableEnforceFocus:c,disableAutoFocus:s,disableRestoreFocus:d,isEnabled:D,open:x,children:l.cloneElement(C,F)})]})}):null});function getPopoverUtilityClass(e){return generateUtilityClass("MuiPopover",e)}function mergeSlotProps(e,t){if(!e)return t;function extractHandlers(e,t){const g={};return Object.keys(t).forEach(n=>{isEventHandler(n,t[n])&&"function"==typeof e[n]&&(g[n]=(...g)=>{e[n](...g),t[n](...g)})}),g}if("function"==typeof e||"function"==typeof t)return g=>{const n="function"==typeof t?t(g):t,o="function"==typeof e?e({...g,...n}):e,a=clsx(g?.className,n?.className,o?.className),C=extractHandlers(o,n);return{...n,...o,...C,...!!a&&{className:a},...n?.style&&o?.style&&{style:{...n.style,...o.style}},...n?.sx&&o?.sx&&{sx:[...Array.isArray(n.sx)?n.sx:[n.sx],...Array.isArray(o.sx)?o.sx:[o.sx]]}}};const g=t,n=extractHandlers(e,g),o=clsx(g?.className,e?.className);return{...t,...e,...n,...!!o&&{className:o},...g?.style&&e?.style&&{style:{...g.style,...e.style}},...g?.sx&&e?.sx&&{sx:[...Array.isArray(g.sx)?g.sx:[g.sx],...Array.isArray(e.sx)?e.sx:[e.sx]]}}}function getOffsetTop(e,t){let g=0;return"number"==typeof t?g=t:"center"===t?g=e.height/2:"bottom"===t&&(g=e.height),g}function getOffsetLeft(e,t){let g=0;return"number"==typeof t?g=t:"center"===t?g=e.width/2:"right"===t&&(g=e.width),g}function getTransformOriginValue(e){return[e.horizontal,e.vertical].map(e=>"number"==typeof e?`${e}px`:e).join(" ")}function resolveAnchorEl$1(e){return"function"==typeof e?e():e}generateUtilityClasses("MuiPopover",["root","paper"]);var useUtilityClasses$33=e=>{const{classes:t}=e;return composeClasses({root:["root"],paper:["paper"]},getPopoverUtilityClass,t)},UI=sC(_I,{name:"MuiPopover",slot:"Root"})({}),ZI=sC(bC,{name:"MuiPopover",slot:"Paper"})({position:"absolute",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",outline:0}),KI=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiPopover"}),{action:n,anchorEl:o,anchorOrigin:a={vertical:"top",horizontal:"left"},anchorPosition:C,anchorReference:I="anchorEl",children:i,className:s,container:c,disableAutoFocus:u=!1,elevation:d=8,marginThreshold:p=16,open:m,slots:h={},slotProps:y={},transformOrigin:b={vertical:"top",horizontal:"left"},transitionDuration:v="auto",disableScrollLock:x=!1,...S}=g,w=l.useRef(),E={...g,anchorOrigin:a,anchorReference:I,elevation:d,marginThreshold:p,transformOrigin:b,transitionDuration:v},R=useUtilityClasses$33(E),T=l.useCallback(()=>{if("anchorPosition"===I)return C;const e=resolveAnchorEl$1(o),t=(e&&1===e.nodeType?e:qC(w.current).body).getBoundingClientRect();return{top:t.top+getOffsetTop(t,a.vertical),left:t.left+getOffsetLeft(t,a.horizontal)}},[o,a.horizontal,a.vertical,C,I]),M=l.useCallback(e=>({vertical:getOffsetTop(e,b.vertical),horizontal:getOffsetLeft(e,b.horizontal)}),[b.horizontal,b.vertical]),P=l.useCallback(e=>{const t={width:e.offsetWidth,height:e.offsetHeight},g=M(t);if("none"===I)return{top:null,left:null,transformOrigin:getTransformOriginValue(g)};const n=T();let a=n.top-g.vertical,C=n.left-g.horizontal;const i=a+t.height,s=C+t.width,l=oI(resolveAnchorEl$1(o)),c=l.innerHeight-p,u=l.innerWidth-p;if(null!=p&&a<p){const e=a-p;a-=e,g.vertical+=e}else if(null!=p&&i>c){const e=i-c;a-=e,g.vertical+=e}if(null!=p&&C<p){const e=C-p;C-=e,g.horizontal+=e}else if(s>u){const e=s-u;C-=e,g.horizontal+=e}return{top:`${Math.round(a)}px`,left:`${Math.round(C)}px`,transformOrigin:getTransformOriginValue(g)}},[o,I,T,M,p]),[N,O]=l.useState(m),D=l.useCallback(()=>{const e=w.current;if(!e)return;const t=P(e);null!=t.top&&e.style.setProperty("top",t.top),null!=t.left&&(e.style.left=t.left),e.style.transformOrigin=t.transformOrigin,O(!0)},[P]);l.useEffect(()=>(x&&window.addEventListener("scroll",D),()=>window.removeEventListener("scroll",D)),[o,x,D]);const handleEntering=()=>{D()},handleExited=()=>{O(!1)};l.useEffect(()=>{m&&D()}),l.useImperativeHandle(n,()=>m?{updatePosition:()=>{D()}}:null,[m,D]),l.useEffect(()=>{if(!m)return;const e=cI(()=>{D()}),t=oI(resolveAnchorEl$1(o));return t.addEventListener("resize",e),()=>{e.clear(),t.removeEventListener("resize",e)}},[o,m,D]);let j=v;const L={slots:h,slotProps:y},[G,B]=useSlot("transition",{elementType:MI,externalForwardedProps:L,ownerState:E,getSlotProps:e=>({...e,onEntering:(t,g)=>{e.onEntering?.(t,g),handleEntering()},onExited:t=>{e.onExited?.(t),handleExited()}}),additionalProps:{appear:!0,in:m}});"auto"!==v||G.muiSupportAuto||(j=void 0);const F=c||(o?qC(resolveAnchorEl$1(o)).body:void 0),[W,{slots:V,slotProps:U,...Z}]=useSlot("root",{ref:t,elementType:UI,externalForwardedProps:{...L,...S},shouldForwardComponentProp:!0,additionalProps:{slots:{backdrop:h.backdrop},slotProps:{backdrop:mergeSlotProps("function"==typeof y.backdrop?y.backdrop(E):y.backdrop,{invisible:!0})},container:F,open:m},ownerState:E,className:clsx(R.root,s)}),[K,H]=useSlot("paper",{ref:w,className:R.paper,elementType:ZI,externalForwardedProps:L,shouldForwardComponentProp:!0,additionalProps:{elevation:d,style:N?void 0:{opacity:0}},ownerState:E});return(0,ja.jsx)(W,{...Z,...!isHostComponent(W)&&{slots:V,slotProps:U,disableAutoFocus:u,disableScrollLock:x},children:(0,ja.jsx)(G,{...B,timeout:j,children:(0,ja.jsx)(K,{...H,children:i})})})});function getMenuUtilityClass(e){return generateUtilityClass("MuiMenu",e)}generateUtilityClasses("MuiMenu",["root","paper","list"]);var HI={vertical:"top",horizontal:"right"},YI={vertical:"top",horizontal:"left"},useUtilityClasses$32=e=>{const{classes:t}=e;return composeClasses({root:["root"],paper:["paper"],list:["list"]},getMenuUtilityClass,t)},$I=sC(KI,{shouldForwardProp:e=>rootShouldForwardProp(e)||"classes"===e,name:"MuiMenu",slot:"Root"})({}),QI=sC(ZI,{name:"MuiMenu",slot:"Paper"})({maxHeight:"calc(100% - 96px)",WebkitOverflowScrolling:"touch"}),XI=sC(lI,{name:"MuiMenu",slot:"List"})({outline:0}),JI=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiMenu"}),{autoFocus:n=!0,children:o,className:a,disableAutoFocusItem:C=!1,onClose:I,open:i,PopoverClasses:s,transitionDuration:c="auto",variant:u="selectedMenu",slots:d={},slotProps:p={},...m}=g,h=useRtl(),y={...g,autoFocus:n,disableAutoFocusItem:C,transitionDuration:c,variant:u},b=useUtilityClasses$32(y),v=n&&i,x=v&&!C,S=l.useRef(null),handleEntering=(e,t)=>{S.current&&(S.current.adjustStyleForScrollbar(e,{direction:h?"rtl":"ltr"}),v&&S.current.focusInitialTarget?.())},handleListKeyDown=e=>{"Tab"===e.key&&(e.preventDefault(),I&&I(e,"tabKeyDown"))},w={slots:d,slotProps:p},E=useSlotProps({elementType:d.root,externalSlotProps:p.root,ownerState:y,className:[b.root,a]}),[R,T]=useSlot("paper",{className:b.paper,elementType:QI,externalForwardedProps:w,shouldForwardComponentProp:!0,ownerState:y}),[M,P]=useSlot("list",{className:b.list,elementType:XI,shouldForwardComponentProp:!0,externalForwardedProps:w,getSlotProps:e=>({...e,onKeyDown:t=>{handleListKeyDown(t),e.onKeyDown?.(t)}}),ownerState:y}),N="function"==typeof p.transition?p.transition(y):p.transition;return(0,ja.jsx)($I,{disableAutoFocus:n,onClose:I,anchorOrigin:{vertical:"bottom",horizontal:h?"right":"left"},transformOrigin:h?HI:YI,slots:{root:d.root,paper:R,backdrop:d.backdrop,transition:d.transition},slotProps:{root:E,paper:T,backdrop:"function"==typeof p.backdrop?p.backdrop(y):p.backdrop,transition:{...N,onEntering:(...e)=>{handleEntering(...e),N?.onEntering?.(...e)}}},open:i,ref:t,transitionDuration:c,ownerState:y,...m,classes:s,children:(0,ja.jsx)(M,{actions:S,autoFocus:v,autoFocusItem:x,variant:u,...P,children:o})})});function isFocusVisible(e){try{return e.matches(":focus-visible")}catch(t){}return!1}function useFocusableWhenDisabled(e){const{focusableWhenDisabled:t,disabled:g,composite:n=!1,tabIndex:o=0,isNativeButton:a}=e,C=n&&!1!==t,I=n&&!1===t;return l.useMemo(()=>{const e={onKeyDown(e){g&&t&&"Tab"!==e.key&&e.preventDefault()}};return n||(e.tabIndex=o,!a&&g&&(e.tabIndex=t?o:-1)),(a&&(t||C)||!a&&g)&&(e["aria-disabled"]=g),!a||t&&!I||(e.disabled=g),e},[n,g,t,C,I,a,o])}var qI={};function useButtonBase(e){const{nativeButton:t,nativeButtonProp:g,internalNativeButton:n=t,allowInferredHostMismatch:o=!1,disabled:a,type:C,hasFormAction:I=!1,tabIndex:i=0,focusableWhenDisabled:s,stopEventPropagation:c=!1,onBeforeKeyDown:u,onBeforeKeyUp:d}=e,p=l.useRef(null),m=!0===s,h=useFocusableWhenDisabled({focusableWhenDisabled:m,disabled:a,isNativeButton:t,tabIndex:i}),y=l.useCallback(()=>{const e=p.current;return null==e?t:"BUTTON"===e.tagName||Boolean("A"===e.tagName&&e.href)},[t]),b=l.useMemo(()=>{const e=m?{}:{tabIndex:a?-1:i};return t?(e.type=void 0!==C||I?C:"button",m||(e.disabled=a)):(e.role="button",!m&&a&&(e["aria-disabled"]=a)),m?{...e,...h}:e},[a,m,h,I,t,i,C]);return{getButtonProps:l.useCallback((e=qI)=>{const{onClick:t,onKeyDown:g,onKeyUp:n,...o}=e,handleClick=e=>{c&&e.stopPropagation(),a?e.preventDefault():t?.(e)},handleKeyDown=e=>{m&&h.onKeyDown(e),a||(u?.(e),g?.(e),e.target!==e.currentTarget||y()||(" "!==e.key?"Enter"===e.key&&(e.preventDefault(),e.currentTarget.click()):e.preventDefault()))},handleKeyUp=e=>{a||(d?.(e),n?.(e),e.target!==e.currentTarget||y()||" "!==e.key||e.defaultPrevented||e.currentTarget.click())};return{...b,...o,onClick:handleClick,onKeyDown:handleKeyDown,onKeyUp:handleKeyUp}},[b,a,m,h,y,u,d,c]),rootRef:p}}var ei=class e{static create(){return new e}static use(){const t=useLazyRef(e.create).current,[g,n]=l.useState(!1);return t.shouldMount=g,t.setShouldMount=n,l.useEffect(t.mountEffect,[g]),t}constructor(){this.ref={current:null},this.mounted=null,this.didMount=!1,this.shouldMount=!1,this.setShouldMount=null}mount(){return this.mounted||(this.mounted=createControlledPromise(),this.shouldMount=!0,this.setShouldMount(this.shouldMount)),this.mounted}mountEffect=()=>{this.shouldMount&&!this.didMount&&null!==this.ref.current&&(this.didMount=!0,this.mounted.resolve())};start(...e){this.mount().then(()=>this.ref.current?.start(...e))}stop(...e){this.mount().then(()=>this.ref.current?.stop(...e))}pulsate(...e){this.mount().then(()=>this.ref.current?.pulsate(...e))}};function useLazyRipple(){return ei.use()}function createControlledPromise(){let e,t;const g=new Promise((g,n)=>{e=g,t=n});return g.resolve=e,g.reject=t,g}function Ripple(e){const{className:t,classes:g,pulsate:n=!1,rippleX:o,rippleY:a,rippleSize:C,in:I,onExited:i,timeout:s}=e,[c,u]=l.useState(!1),d=clsx(t,g.ripple,g.rippleVisible,n&&g.ripplePulsate),p={width:C,height:C,top:-C/2+a,left:-C/2+o},m=clsx(g.child,c&&g.childLeaving,n&&g.childPulsate);return I||c||u(!0),l.useEffect(()=>{if(!I&&null!=i){const e=setTimeout(i,s);return()=>{clearTimeout(e)}}},[i,I,s]),(0,ja.jsx)("span",{className:d,style:p,children:(0,ja.jsx)("span",{className:m})})}var ti=generateUtilityClasses("MuiTouchRipple",["root","ripple","rippleVisible","ripplePulsate","child","childLeaving","childPulsate"]),gi=550,ni=keyframes`
|
|
2
|
-
0% {
|
|
3
|
-
transform: scale(0);
|
|
4
|
-
opacity: 0.1;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
100% {
|
|
8
|
-
transform: scale(1);
|
|
9
|
-
opacity: 0.3;
|
|
10
|
-
}
|
|
11
|
-
`,ri=keyframes`
|
|
12
|
-
0% {
|
|
13
|
-
opacity: 1;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
100% {
|
|
17
|
-
opacity: 0;
|
|
18
|
-
}
|
|
19
|
-
`,oi=keyframes`
|
|
20
|
-
0% {
|
|
21
|
-
transform: scale(1);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
50% {
|
|
25
|
-
transform: scale(0.92);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
100% {
|
|
29
|
-
transform: scale(1);
|
|
30
|
-
}
|
|
31
|
-
`,ai=sC("span",{name:"MuiTouchRipple",slot:"Root"})({overflow:"hidden",pointerEvents:"none",position:"absolute",zIndex:0,top:0,right:0,bottom:0,left:0,borderRadius:"inherit"}),Ai=sC(Ripple,{name:"MuiTouchRipple",slot:"Ripple"})`
|
|
32
|
-
opacity: 0;
|
|
33
|
-
position: absolute;
|
|
34
|
-
|
|
35
|
-
&.${ti.rippleVisible} {
|
|
36
|
-
opacity: 0.3;
|
|
37
|
-
transform: scale(1);
|
|
38
|
-
animation-name: ${ni};
|
|
39
|
-
animation-duration: ${gi}ms;
|
|
40
|
-
animation-timing-function: ${({theme:e})=>e.transitions.easing.easeInOut};
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
&.${ti.ripplePulsate} {
|
|
44
|
-
animation-duration: ${({theme:e})=>e.transitions.duration.shorter}ms;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
& .${ti.child} {
|
|
48
|
-
opacity: 1;
|
|
49
|
-
display: block;
|
|
50
|
-
width: 100%;
|
|
51
|
-
height: 100%;
|
|
52
|
-
border-radius: 50%;
|
|
53
|
-
background-color: currentColor;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
& .${ti.childLeaving} {
|
|
57
|
-
opacity: 0;
|
|
58
|
-
animation-name: ${ri};
|
|
59
|
-
animation-duration: ${gi}ms;
|
|
60
|
-
animation-timing-function: ${({theme:e})=>e.transitions.easing.easeInOut};
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
& .${ti.childPulsate} {
|
|
64
|
-
position: absolute;
|
|
65
|
-
/* @noflip */
|
|
66
|
-
left: 0px;
|
|
67
|
-
top: 0;
|
|
68
|
-
animation-name: ${oi};
|
|
69
|
-
animation-duration: 2500ms;
|
|
70
|
-
animation-timing-function: ${({theme:e})=>e.transitions.easing.easeInOut};
|
|
71
|
-
animation-iteration-count: infinite;
|
|
72
|
-
animation-delay: 200ms;
|
|
73
|
-
}
|
|
74
|
-
`,Ci=l.forwardRef(function(e,t){const{center:g=!1,classes:n={},className:o,...a}=useDefaultProps({props:e,name:"MuiTouchRipple"}),[C,I]=l.useState([]),i=l.useRef(0),s=l.useRef(null);l.useEffect(()=>{s.current&&(s.current(),s.current=null)},[C]);const c=l.useRef(!1),u=useTimeout(),d=l.useRef(null),p=l.useRef(null),m=l.useCallback(e=>{const{pulsate:t,rippleX:g,rippleY:o,rippleSize:a,cb:C}=e;I(e=>[...e,(0,ja.jsx)(Ai,{classes:{ripple:clsx(n.ripple,ti.ripple),rippleVisible:clsx(n.rippleVisible,ti.rippleVisible),ripplePulsate:clsx(n.ripplePulsate,ti.ripplePulsate),child:clsx(n.child,ti.child),childLeaving:clsx(n.childLeaving,ti.childLeaving),childPulsate:clsx(n.childPulsate,ti.childPulsate)},timeout:gi,pulsate:t,rippleX:g,rippleY:o,rippleSize:a},i.current)]),i.current+=1,s.current=C},[n]),h=l.useCallback((e={},t={},n=()=>{})=>{const{pulsate:o=!1,center:a=g||t.pulsate,fakeElement:C=!1}=t;if("mousedown"===e?.type&&c.current)return void(c.current=!1);"touchstart"===e?.type&&(c.current=!0);const I=C?null:p.current,i=I?I.getBoundingClientRect():{width:0,height:0,left:0,top:0};let s,l,h;if(a||void 0===e||0===e.clientX&&0===e.clientY||!e.clientX&&!e.touches)s=Math.round(i.width/2),l=Math.round(i.height/2);else{const{clientX:t,clientY:g}=e.touches&&e.touches.length>0?e.touches[0]:e;s=Math.round(t-i.left),l=Math.round(g-i.top)}if(a)h=Math.sqrt((2*i.width**2+i.height**2)/3),h%2==0&&(h+=1);else{const e=2*Math.max(Math.abs((I?I.clientWidth:0)-s),s)+2,t=2*Math.max(Math.abs((I?I.clientHeight:0)-l),l)+2;h=Math.sqrt(e**2+t**2)}e?.touches?null===d.current&&(d.current=()=>{m({pulsate:o,rippleX:s,rippleY:l,rippleSize:h,cb:n})},u.start(80,()=>{d.current&&(d.current(),d.current=null)})):m({pulsate:o,rippleX:s,rippleY:l,rippleSize:h,cb:n})},[g,m,u]),y=l.useCallback(()=>{h({},{pulsate:!0})},[h]),b=l.useCallback((e,t)=>{if(u.clear(),"touchend"===e?.type&&d.current)return d.current(),d.current=null,void u.start(0,()=>{b(e,t)});d.current=null,I(e=>e.length>0?e.slice(1):e),s.current=t},[u]);return l.useImperativeHandle(t,()=>({pulsate:y,start:h,stop:b}),[y,h,b]),(0,ja.jsx)(ai,{className:clsx(ti.root,n.root,o),ref:p,...a,children:(0,ja.jsx)(EI,{component:null,exit:!0,children:C})})});function getButtonBaseUtilityClass(e){return generateUtilityClass("MuiButtonBase",e)}var Ii=generateUtilityClasses("MuiButtonBase",["root","disabled","focusVisible"]),useUtilityClasses$31=e=>{const{disabled:t,focusVisible:g,focusVisibleClassName:n,suppressFocusVisible:o,classes:a}=e,C=composeClasses({root:["root",t&&"disabled",g&&!o&&"focusVisible"]},getButtonBaseUtilityClass,a);return g&&!o&&n&&(C.root+=` ${n}`),C},ii=sC("button",{name:"MuiButtonBase",slot:"Root"})({display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",boxSizing:"border-box",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none",textDecoration:"none",color:"inherit","&::-moz-focus-inner":{borderStyle:"none"},[`&.${Ii.disabled}`]:{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}}),si=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiButtonBase"}),{action:n,centerRipple:o=!1,children:a,className:C,component:I="button",disabled:i=!1,disableRipple:s=!1,disableTouchRipple:c=!1,focusRipple:u=!1,focusVisibleClassName:d,focusableWhenDisabled:p,suppressFocusVisible:m=!1,internalNativeButton:h,LinkComponent:y="a",nativeButton:b,onBlur:v,onClick:x,onContextMenu:S,onDragLeave:w,onFocus:E,onFocusVisible:R,onKeyDown:T,onKeyUp:M,onMouseDown:P,onMouseLeave:N,onMouseUp:O,onTouchEnd:D,onTouchMove:j,onTouchStart:L,tabIndex:G=0,TouchRippleProps:B,touchRippleRef:F,type:W,...V}=g,U=Boolean(V.href||V.to),Z=Boolean(V.formAction);let K=I;"button"===K&&U&&(K=y);const H="string"==typeof K?"button"===K:h??!1,Y=b??H,$=useLazyRipple(),Q=nI($.ref,F),[X,J]=l.useState(!1);(i||m)&&X&&J(!1);const q=gI(e=>{u&&!e.repeat&&X&&" "===e.key&&$.stop(e,()=>{$.start(e)})}),ee=gI(e=>{u&&" "===e.key&&X&&!e.defaultPrevented&&$.stop(e,()=>{$.pulsate(e)})}),{getButtonProps:te,rootRef:ge}=useButtonBase({nativeButton:Y,nativeButtonProp:b,internalNativeButton:H,allowInferredHostMismatch:U||"string"==typeof K,disabled:i,type:W,hasFormAction:Z,tabIndex:G,onBeforeKeyDown:q,onBeforeKeyUp:ee}),{onClick:ne,onKeyDown:re,onKeyUp:oe,...ae}=te({onClick:x,onKeyDown:T,onKeyUp:M});l.useImperativeHandle(n,()=>({focusVisible:()=>{J(!0),ge.current.focus()}}),[ge]);const Ae=$.shouldMount&&!s&&!i;l.useEffect(()=>{X&&u&&!s&&$.pulsate()},[s,u,X,$]);const Ce=useRippleHandler($,"start",P,c),Ie=useRippleHandler($,"stop",S,c),ie=useRippleHandler($,"stop",w,c),se=useRippleHandler($,"stop",O,c),le=useRippleHandler($,"stop",e=>{X&&e.preventDefault(),N&&N(e)},c),ce=useRippleHandler($,"start",L,c),ue=useRippleHandler($,"stop",D,c),de=useRippleHandler($,"stop",j,c),pe=useRippleHandler($,"stop",e=>{isFocusVisible(e.target)||J(!1),v&&v(e)},!1),me=gI(e=>{ge.current||(ge.current=e.currentTarget),!m&&isFocusVisible(e.target)&&(J(!0),R&&R(e)),E&&E(e)}),fe={};U&&(fe.tabIndex=i?-1:G,i&&(fe["aria-disabled"]=i),fe.type=W);const he=nI(t,ge),ye={...g,centerRipple:o,component:I,disabled:i,disableRipple:s,disableTouchRipple:c,focusRipple:u,suppressFocusVisible:m,tabIndex:G,focusVisible:X},be=useUtilityClasses$31(ye);return(0,ja.jsxs)(ii,{as:K,className:clsx(be.root,C),ownerState:ye,onBlur:pe,onClick:ne,onContextMenu:Ie,onFocus:me,onKeyDown:re,onKeyUp:oe,onMouseDown:Ce,onMouseLeave:le,onMouseUp:se,onDragLeave:ie,onTouchEnd:ue,onTouchMove:de,onTouchStart:ce,ref:he,...U?fe:ae,...V,children:[a,Ae?(0,ja.jsx)(Ci,{ref:Q,center:o,...B}):null]})});function useRippleHandler(e,t,g,n=!1){return gI(o=>(g&&g(o),n||e[t](o),!0))}var li=useId$1;function getDividerUtilityClass(e){return generateUtilityClass("MuiDivider",e)}var ci=generateUtilityClasses("MuiDivider",["root","absolute","fullWidth","inset","middle","flexItem","vertical","withChildren","textAlignRight","textAlignLeft","wrapper","wrapperVertical"]),useUtilityClasses$30=e=>{const{absolute:t,children:g,classes:n,flexItem:o,orientation:a,textAlign:C,variant:I}=e;return composeClasses({root:["root",t&&"absolute",I,"vertical"===a&&"vertical",o&&"flexItem",g&&"withChildren","right"===C&&"vertical"!==a&&"textAlignRight","left"===C&&"vertical"!==a&&"textAlignLeft"],wrapper:["wrapper","vertical"===a&&"wrapperVertical"]},getDividerUtilityClass,n)},ui=sC("div",{name:"MuiDivider",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.root,g.absolute&&t.absolute,t[g.variant],"vertical"===g.orientation&&t.vertical,g.flexItem&&t.flexItem,g.children&&t.withChildren,"right"===g.textAlign&&"vertical"!==g.orientation&&t.textAlignRight,"left"===g.textAlign&&"vertical"!==g.orientation&&t.textAlignLeft]}})(hC(({theme:e})=>({margin:0,flexShrink:0,borderWidth:0,borderStyle:"solid",borderColor:(e.vars||e).palette.divider,borderBottomWidth:"thin",variants:[{props:{absolute:!0},style:{position:"absolute",bottom:0,left:0,width:"100%"}},{props:{variant:"inset"},style:{marginLeft:72}},{props:{variant:"middle",orientation:"horizontal"},style:{marginLeft:e.spacing(2),marginRight:e.spacing(2)}},{props:{variant:"middle",orientation:"vertical"},style:{marginTop:e.spacing(1),marginBottom:e.spacing(1)}},{props:{orientation:"vertical"},style:{height:"100%",borderBottomWidth:0,borderRightWidth:"thin"}},{props:{flexItem:!0},style:{alignSelf:"stretch",height:"auto"}},{props:({ownerState:e})=>!!e.children,style:{display:"flex",textAlign:"center",border:0,borderTopStyle:"solid",borderLeftStyle:"solid","&::before, &::after":{content:'""',alignSelf:"center"}}},{props:({ownerState:e})=>e.children&&"vertical"!==e.orientation,style:{"&::before, &::after":{width:"100%",borderTop:`thin solid ${(e.vars||e).palette.divider}`,borderTopStyle:"inherit"}}},{props:({ownerState:e})=>"vertical"===e.orientation&&e.children,style:{flexDirection:"column","&::before, &::after":{height:"100%",borderLeft:`thin solid ${(e.vars||e).palette.divider}`,borderLeftStyle:"inherit"}}},{props:({ownerState:e})=>"right"===e.textAlign&&"vertical"!==e.orientation,style:{"&::before":{width:"90%"},"&::after":{width:"10%"}}},{props:({ownerState:e})=>"left"===e.textAlign&&"vertical"!==e.orientation,style:{"&::before":{width:"10%"},"&::after":{width:"90%"}}}]}))),di=sC("span",{name:"MuiDivider",slot:"Wrapper",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.wrapper,"vertical"===g.orientation&&t.wrapperVertical]}})(hC(({theme:e})=>({display:"inline-block",paddingLeft:`calc(${e.spacing(1)} * 1.2)`,paddingRight:`calc(${e.spacing(1)} * 1.2)`,whiteSpace:"nowrap",variants:[{props:{orientation:"vertical"},style:{paddingTop:`calc(${e.spacing(1)} * 1.2)`,paddingBottom:`calc(${e.spacing(1)} * 1.2)`}}]}))),pi=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiDivider"}),{absolute:n=!1,children:o,className:a,orientation:C="horizontal",component:I=(o||"vertical"===C?"div":"hr"),flexItem:i=!1,role:s=("hr"!==I?"separator":void 0),textAlign:l="center",variant:c="fullWidth",...u}=g,d={...g,absolute:n,component:I,flexItem:i,orientation:C,role:s,textAlign:l,variant:c},p=useUtilityClasses$30(d);return(0,ja.jsx)(ui,{as:I,className:clsx(p.root,a),role:s,ref:t,ownerState:d,"aria-orientation":"separator"!==s||"hr"===I&&"vertical"!==C?void 0:C,...u,children:o?(0,ja.jsx)(di,{className:p.wrapper,ownerState:d,children:o}):null})}),mi=generateUtilityClasses("MuiListItemIcon",["root","alignItemsFlexStart"]),fi=generateUtilityClasses("MuiListItemText",["root","multiline","dense","inset","primary","secondary"]);function getMenuItemUtilityClass(e){return generateUtilityClass("MuiMenuItem",e)}var hi=generateUtilityClasses("MuiMenuItem",["root","focusVisible","dense","disabled","divider","gutters","selected"]),overridesResolver=(e,t)=>{const{ownerState:g}=e;return[t.root,g.dense&&t.dense,g.divider&&t.divider,!g.disableGutters&&t.gutters]},useUtilityClasses$29=e=>{const{disabled:t,dense:g,divider:n,disableGutters:o,selected:a,classes:C}=e,I=composeClasses({root:["root",g&&"dense",t&&"disabled",!o&&"gutters",n&&"divider",a&&"selected"]},getMenuItemUtilityClass,C);return{...C,...I}},yi=sC(si,{shouldForwardProp:e=>rootShouldForwardProp(e)||"classes"===e,name:"MuiMenuItem",slot:"Root",overridesResolver})(hC(({theme:e})=>({...e.typography.body1,display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minHeight:48,paddingTop:6,paddingBottom:6,boxSizing:"border-box",whiteSpace:"nowrap","&:hover":{textDecoration:"none",backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${hi.selected}`]:{backgroundColor:e.alpha((e.vars||e).palette.primary.main,(e.vars||e).palette.action.selectedOpacity),[`&.${hi.focusVisible}`]:{backgroundColor:e.alpha((e.vars||e).palette.primary.main,`${(e.vars||e).palette.action.selectedOpacity} + ${(e.vars||e).palette.action.focusOpacity}`)}},[`&.${hi.selected}:hover`]:{backgroundColor:e.alpha((e.vars||e).palette.primary.main,`${(e.vars||e).palette.action.selectedOpacity} + ${(e.vars||e).palette.action.hoverOpacity}`),"@media (hover: none)":{backgroundColor:e.alpha((e.vars||e).palette.primary.main,(e.vars||e).palette.action.selectedOpacity)}},[`&.${hi.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${hi.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},[`& + .${ci.root}`]:{marginTop:e.spacing(1),marginBottom:e.spacing(1)},[`& + .${ci.inset}`]:{marginLeft:52},[`& .${fi.root}`]:{marginTop:0,marginBottom:0},[`& .${fi.inset}`]:{paddingLeft:36},[`& .${mi.root}`]:{minWidth:36},variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:e})=>e.divider,style:{borderBottom:`1px solid ${(e.vars||e).palette.divider}`,backgroundClip:"padding-box"}},{props:({ownerState:e})=>!e.dense,style:{[e.breakpoints.up("sm")]:{minHeight:"auto"}}},{props:({ownerState:e})=>e.dense,style:{minHeight:32,paddingTop:4,paddingBottom:4,...e.typography.body2,[`& .${mi.root} svg`]:{fontSize:"1.25rem"}}}]}))),bi=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiMenuItem"}),{autoFocus:n=!1,component:o="li",dense:a=!1,divider:C=!1,disableGutters:I=!1,focusVisibleClassName:i,role:s="menuitem",tabIndex:c,className:u,...d}=g,p=useSelectFocusSource(),m=l.useContext(aI),h=l.useMemo(()=>({dense:a||m.dense||!1,disableGutters:I}),[m.dense,a,I]),y=useMenuListContext(),b=li(),v=y.suppressInitialFocusVisible,x=y.itemsFocusableWhenDisabled,S=l.useRef(null);rI(()=>{n&&S.current&&focusWithVisible(S.current,p)},[n]);const w={...g,dense:h.dense,divider:C,disableGutters:I},E=useUtilityClasses$29(g),{root:R,...T}=E,M=useRovingTabIndexItem({id:b,ref:t,disabled:g.disabled,focusableWhenDisabled:x,selected:g.selected}),P=nI(S,M.ref);let N;return void 0!==c?N=c:"selectedMenu"===y.variant?N=M.tabIndex:g.disabled&&!x||(N=-1),(0,ja.jsx)(aI.Provider,{value:h,children:(0,ja.jsx)(yi,{ref:P,role:s,tabIndex:N,component:o,internalNativeButton:!1,focusableWhenDisabled:x,suppressFocusVisible:v,focusVisibleClassName:clsx(E.focusVisible,i),className:clsx(E.root,u),...d,ownerState:w,classes:T})})}),getRoomItemLookupEntry=e=>e&&"object"==typeof e?getRoomItemOverride(e):null,getRoomItemBackground=e=>getRoomItemLookupEntry(e)?.background??void 0,getRoomItemColor=e=>{const t=getRoomItemLookupEntry(e);return t?t.color:"t"===e?.attrib?"orange":void 0},getRoomItemLabel=e=>{if("string"==typeof e)return e;const t=getRoomItemLookupEntry(e);return t?t.text:e?.name},getRoomItemCommands=e=>{const t=["Probe"];return"string"==typeof e?.attrib&&e.attrib.includes("t")&&t.unshift("Get"),t},sortRoomItemsLikeNexGui3=e=>[...e].sort((e,t)=>{const g=getRoomItemLookupEntry(e);return getRoomItemLookupEntry(t)&&!g?-1:"t"!==t?.attrib||"t"===e?.attrib||g?1:-1}),selectRoomSlice=e=>({players:e.players,npcs:e.npcs,items:e.items,roomName:e.roomName,roomId:e.roomId,updateRoom:e.updateRoom}),useRoom=()=>{const{stores:e}=useNexGui();return e.room(useShallow(selectRoomSlice))},toDisplayItem=(e,t)=>"string"==typeof e?{commands:[],id:null,key:`room-item-string-${t}-${e}`,label:getRoomItemLabel(e),name:e,raw:e,rowBackground:void 0,rowColor:void 0}:e&&"object"==typeof e?{commands:null==e.id?[]:getRoomItemCommands(e),id:e.id??null,key:`room-item-${e.id??`${t}-${e.name??"unknown"}`}`,label:getRoomItemLabel(e)??e.name??"",name:e.name??"",raw:e,rowBackground:getRoomItemBackground(e),rowColor:getRoomItemColor(e)}:null,useRoomItemsViewModel=()=>{const{adapter:e}=useNexGui(),{items:t}=useRoom(),[g,n]=(0,l.useState)(0);(0,l.useEffect)(()=>subscribeToRoomItemOverrides(()=>n(e=>e+1)),[]);const o=(0,l.useMemo)(()=>sortRoomItemsLikeNexGui3((t??[]).filter(e=>!isRoomNpcItem(e))).map((e,t)=>toDisplayItem(e,t)).filter(Boolean),[t,g]),a=(0,l.useCallback)((t,g)=>{null!=g?.id&&e?.send?.(`${t} ${g.id}`)},[e]);return(0,l.useMemo)(()=>({items:o,sendItemCommand:a}),[o,a])},getFlipTransform$8=e=>{switch(e){case 1:return"scaleX(-1) scaleY(-1)";case 2:return"scaleY(-1)";case 3:return"scaleX(-1)";default:return"none"}},ItemsPanelInner=()=>{const e=useTheme$1(),{items:t,sendItemCommand:g}=useRoomItemsViewModel(),[n]=(0,l.useState)(()=>Math.floor(4*Math.random())),[o,a]=(0,l.useState)(null),[C,I]=(0,l.useState)(null),i=e?.nexGui?.backgroundImage??"",s=e?.nexGui?.backgroundOpacity??.5,c=e?.nexGui?.backgroundFilter??"none",u=Boolean(o),d=C?.commands??[],handleCloseMenu=()=>{a(null),I(null)},handleOpenMenu=(e,t)=>{t&&null!=t.id&&0!==t.commands.length&&(I(t),a(e.currentTarget))},handleCommandClick=e=>{null!=C?.id?(g(e,C),handleCloseMenu()):handleCloseMenu()};return React.createElement(fC,{className:"items-panel",sx:{color:"text.primary",fontFamily:e.typography.fontFamily,fontSize:e.typography.fontSize,height:"100%",overflow:"hidden",position:"relative",width:"100%"}},i?React.createElement(fC,{"aria-hidden":"true",className:"items-panel__background",sx:{backgroundImage:`url(${i})`,backgroundPosition:"center",backgroundSize:"cover",filter:c,height:"100%",inset:0,left:0,opacity:s,position:"absolute",top:0,transform:getFlipTransform$8(n),width:"100%",zIndex:0}}):null,React.createElement(fC,{className:"items-panel__content","data-testid":"items-panel-content",sx:{display:"flex",flexDirection:"column-reverse",height:"100%",overflow:"auto",position:"relative",width:"100%",zIndex:1}},t.length>0?React.createElement(fC,{className:"items-panel__rows",sx:{display:"table",m:"10px",maxWidth:"100%",p:"1px",position:"relative",textAlign:"left"}},t.map(e=>{const t=null!=e.id&&e.commands.length>0;return React.createElement(fC,{key:e.key,className:["items-panel__row",t?"items-panel__row--interactive":""].filter(Boolean).join(" "),onClick:t?t=>handleOpenMenu(t,e):void 0,onContextMenu:t?t=>{t.preventDefault(),handleOpenMenu(t,e)}:void 0,sx:{backgroundColor:e.rowBackground??"transparent",cursor:t?"pointer":"inherit",display:"table-row"}},React.createElement(fC,{component:"div",sx:{color:"cyan",display:"table-cell",padding:"0px 5px 0px 2px",whiteSpace:"nowrap"}},React.createElement(RC,{component:"span",sx:{color:"inherit",fontVariantNumeric:"tabular-nums"},variant:"body2"},e.id??"")),React.createElement(fC,{component:"div",sx:{display:"table-cell",padding:0,width:"100%"}},React.createElement(RC,{component:"span",sx:{color:e.rowColor??"text.primary"},variant:"body2"},e.label)))})):null),React.createElement(JI,{anchorEl:o,onClose:handleCloseMenu,open:u,slotProps:{paper:{sx:{backgroundColor:"#000000",border:"1px solid #ffffff"}}}},d.map(e=>React.createElement(bi,{key:e,onClick:()=>handleCommandClick(e)},e))))};ItemsPanelInner.displayName="ItemsPanelInner";var ItemsPanel=()=>React.createElement(TC,{panelName:"Items"},React.createElement(ItemsPanelInner,null));function getSvgIconUtilityClass(e){return generateUtilityClass("MuiSvgIcon",e)}ItemsPanel.displayName="ItemsPanel",generateUtilityClasses("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);var useUtilityClasses$28=e=>{const{color:t,fontSize:g,classes:n}=e;return composeClasses({root:["root","inherit"!==t&&`color${wC(t)}`,`fontSize${wC(g)}`]},getSvgIconUtilityClass,n)},vi=sC("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.root,"inherit"!==g.color&&t[`color${wC(g.color)}`],t[`fontSize${wC(g.fontSize)}`]]}})(hC(({theme:e})=>({userSelect:"none",width:"1em",height:"1em",display:"inline-block",flexShrink:0,transition:e.transitions?.create?.("fill",{duration:(e.vars??e).transitions?.duration?.shorter}),variants:[{props:e=>!e.hasSvgAsChild,style:{fill:"currentColor"}},{props:{fontSize:"inherit"},style:{fontSize:"inherit"}},{props:{fontSize:"small"},style:{fontSize:e.typography?.pxToRem?.(20)||"1.25rem"}},{props:{fontSize:"medium"},style:{fontSize:e.typography?.pxToRem?.(24)||"1.5rem"}},{props:{fontSize:"large"},style:{fontSize:e.typography?.pxToRem?.(35)||"2.1875rem"}},...Object.entries((e.vars??e).palette).filter(([,e])=>e&&e.main).map(([t])=>({props:{color:t},style:{color:(e.vars??e).palette?.[t]?.main}})),{props:{color:"action"},style:{color:(e.vars??e).palette?.action?.active}},{props:{color:"disabled"},style:{color:(e.vars??e).palette?.action?.disabled}},{props:{color:"inherit"},style:{color:void 0}}]}))),xi=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiSvgIcon"}),{children:n,className:o,color:a="inherit",component:C="svg",fontSize:I="medium",htmlColor:i,inheritViewBox:s=!1,titleAccess:c,viewBox:u="0 0 24 24",...d}=g,p=l.isValidElement(n)&&"svg"===n.type,m={...g,color:a,component:C,fontSize:I,instanceFontSize:e.fontSize,inheritViewBox:s,viewBox:u,hasSvgAsChild:p},h={};return s||(h.viewBox=u),(0,ja.jsxs)(vi,{as:C,className:clsx(useUtilityClasses$28(m).root,o),focusable:"false",color:i,"aria-hidden":!c||void 0,role:c?"img":void 0,ref:t,...h,...d,...p&&n.props,ownerState:m,children:[p?n.props.children:n,c?(0,ja.jsx)("title",{children:c}):null]})});function createSvgIcon(e,t){function Component(t,g){return(0,ja.jsx)(xi,{"data-testid":void 0,ref:g,...t,children:e})}return Component.muiName=xi.muiName,l.memo(l.forwardRef(Component))}xi.muiName="SvgIcon";var Si=isMuiElement;function useControlled(e){const{controlled:t,default:g,name:n,state:o="value"}=e,{current:a}=l.useRef(void 0!==t),[C,I]=l.useState(g);return[a?t:C,l.useCallback(e=>{a||I(e)},[])]}var wi=useControlled;function getCircularProgressUtilityClass(e){return generateUtilityClass("MuiCircularProgress",e)}generateUtilityClasses("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","track","circle","circleDisableShrink"]);var ki=44,Ei=keyframes`
|
|
75
|
-
0% {
|
|
76
|
-
transform: rotate(0deg);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
100% {
|
|
80
|
-
transform: rotate(360deg);
|
|
81
|
-
}
|
|
82
|
-
`,Ri=keyframes`
|
|
83
|
-
0% {
|
|
84
|
-
stroke-dasharray: 1px, 200px;
|
|
85
|
-
stroke-dashoffset: 0;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
50% {
|
|
89
|
-
stroke-dasharray: 100px, 200px;
|
|
90
|
-
stroke-dashoffset: -15px;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
100% {
|
|
94
|
-
stroke-dasharray: 1px, 200px;
|
|
95
|
-
stroke-dashoffset: -126px;
|
|
96
|
-
}
|
|
97
|
-
`,Ti="string"!=typeof Ei?css`
|
|
98
|
-
animation: ${Ei} 1.4s linear infinite;
|
|
99
|
-
`:null,Mi="string"!=typeof Ri?css`
|
|
100
|
-
animation: ${Ri} 1.4s ease-in-out infinite;
|
|
101
|
-
`:null,useUtilityClasses$27=e=>{const{classes:t,variant:g,color:n,disableShrink:o}=e;return composeClasses({root:["root",g,`color${wC(n)}`],svg:["svg"],track:["track"],circle:["circle",o&&"circleDisableShrink"]},getCircularProgressUtilityClass,t)},Pi=sC("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.root,t[g.variant],t[`color${wC(g.color)}`]]}})(hC(({theme:e})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:Ti||{animation:`${Ei} 1.4s linear infinite`}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}}))]}))),Ni=sC("svg",{name:"MuiCircularProgress",slot:"Svg"})({display:"block"}),zi=sC("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.circle,g.disableShrink&&t.circleDisableShrink]}})(hC(({theme:e})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink,style:Mi||{animation:`${Ri} 1.4s ease-in-out infinite`}}]}))),Oi=sC("circle",{name:"MuiCircularProgress",slot:"Track"})(hC(({theme:e})=>({stroke:"currentColor",opacity:(e.vars||e).palette.action.activatedOpacity}))),Di=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiCircularProgress"}),{className:n,color:o="primary",disableShrink:a=!1,enableTrackSlot:C=!1,min:I,max:i,size:s=40,style:l,thickness:c=3.6,value:u=g.min??0,variant:d="indeterminate",...p}=g,m=I??0,h=i??100,y={...g,color:o,disableShrink:a,size:s,thickness:c,value:u,variant:d,enableTrackSlot:C},b=useUtilityClasses$27(y),v={},x={},S={};if("determinate"===d){const e=2*Math.PI*((ki-c)/2),t=h-m;v.strokeDasharray=e.toFixed(3),v.strokeDashoffset=t>0?`${((h-u)/t*e).toFixed(3)}px`:`${e.toFixed(3)}px`,x.transform="rotate(-90deg)",S["aria-valuenow"]=u,S["aria-valuemin"]=m,S["aria-valuemax"]=h}return(0,ja.jsx)(Pi,{className:clsx(b.root,n),style:{width:s,height:s,...x,...l},ownerState:y,ref:t,role:"progressbar",...S,...p,children:(0,ja.jsxs)(Ni,{className:b.svg,ownerState:y,viewBox:`${ki/2} ${ki/2} ${ki} ${ki}`,children:[C?(0,ja.jsx)(Oi,{className:b.track,ownerState:y,cx:ki,cy:ki,r:(ki-c)/2,fill:"none",strokeWidth:c,"aria-hidden":"true"}):null,(0,ja.jsx)(zi,{className:b.circle,style:v,ownerState:y,cx:ki,cy:ki,r:(ki-c)/2,fill:"none",strokeWidth:c})]})})});function getButtonUtilityClass(e){return generateUtilityClass("MuiButton",e)}var ji=generateUtilityClasses("MuiButton",["root","text","outlined","contained","disableElevation","focusVisible","disabled","colorInherit","colorPrimary","colorSecondary","colorSuccess","colorError","colorInfo","colorWarning","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","icon","loading","loadingWrapper","loadingIconPlaceholder","loadingIndicator","loadingPositionCenter","loadingPositionStart","loadingPositionEnd"]),Li=l.createContext({}),Gi=l.createContext(void 0),useUtilityClasses$26=e=>{const{color:t,disableElevation:g,fullWidth:n,size:o,variant:a,loading:C,loadingPosition:I,classes:i}=e,s=composeClasses({root:["root",C&&"loading",a,`size${wC(o)}`,`color${wC(t)}`,g&&"disableElevation",n&&"fullWidth",C&&`loadingPosition${wC(I)}`],startIcon:["icon","startIcon"],endIcon:["icon","endIcon"],loadingIndicator:["loadingIndicator"],loadingWrapper:["loadingWrapper"]},getButtonUtilityClass,i);return{...i,...s}},Bi=[{props:{size:"small"},style:{"& > *:nth-of-type(1)":{fontSize:18}}},{props:{size:"medium"},style:{"& > *:nth-of-type(1)":{fontSize:20}}},{props:{size:"large"},style:{"& > *:nth-of-type(1)":{fontSize:22}}}],Fi=sC(si,{shouldForwardProp:e=>rootShouldForwardProp(e)||"classes"===e,name:"MuiButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.root,t[g.variant],t[`size${wC(g.size)}`],"inherit"===g.color&&t.colorInherit,g.disableElevation&&t.disableElevation,g.fullWidth&&t.fullWidth,g.loading&&t.loading]}})(hC(({theme:e})=>{const t="light"===e.palette.mode?e.palette.grey[300]:e.palette.grey[800],g="light"===e.palette.mode?e.palette.grey.A100:e.palette.grey[700];return{...e.typography.button,minWidth:64,padding:"6px 16px",border:0,borderRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create(["background-color","box-shadow","border-color","color"],{duration:e.transitions.duration.short}),"&:hover":{textDecoration:"none"},[`&.${ji.disabled}`]:{color:(e.vars||e).palette.action.disabled},variants:[{props:({ownerState:e})=>e.startIcon||e.loading&&"start"===e.loadingPosition,style:{"&::before":{content:'"\\200b"',width:0,overflow:"hidden"}}},{props:{variant:"contained"},style:{color:"var(--variant-containedColor)",backgroundColor:"var(--variant-containedBg)",boxShadow:(e.vars||e).shadows[2],"&:hover":{boxShadow:(e.vars||e).shadows[4],"@media (hover: none)":{boxShadow:(e.vars||e).shadows[2]}},"&:active":{boxShadow:(e.vars||e).shadows[8]},[`&.${ji.focusVisible}`]:{boxShadow:(e.vars||e).shadows[6]},[`&.${ji.disabled}`]:{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground}}},{props:{variant:"outlined"},style:{padding:"5px 15px",border:"1px solid currentColor",borderColor:"var(--variant-outlinedBorder, currentColor)",backgroundColor:"var(--variant-outlinedBg)",color:"var(--variant-outlinedColor)",[`&.${ji.disabled}`]:{border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`}}},{props:{variant:"text"},style:{padding:"6px 8px",color:"var(--variant-textColor)",backgroundColor:"var(--variant-textBg)"}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t},style:{"--variant-textColor":(e.vars||e).palette[t].main,"--variant-outlinedColor":(e.vars||e).palette[t].main,"--variant-outlinedBorder":e.alpha((e.vars||e).palette[t].main,.5),"--variant-containedColor":(e.vars||e).palette[t].contrastText,"--variant-containedBg":(e.vars||e).palette[t].main,"@media (hover: hover)":{"&:hover":{"--variant-containedBg":(e.vars||e).palette[t].dark,"--variant-textBg":e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.hoverOpacity),"--variant-outlinedBorder":(e.vars||e).palette[t].main,"--variant-outlinedBg":e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.hoverOpacity)}}}})),{props:{color:"inherit"},style:{color:"inherit",borderColor:"currentColor","--variant-containedBg":e.vars?e.vars.palette.Button.inheritContainedBg:t,"@media (hover: hover)":{"&:hover":{"--variant-containedBg":e.vars?e.vars.palette.Button.inheritContainedHoverBg:g,"--variant-textBg":e.alpha((e.vars||e).palette.text.primary,(e.vars||e).palette.action.hoverOpacity),"--variant-outlinedBg":e.alpha((e.vars||e).palette.text.primary,(e.vars||e).palette.action.hoverOpacity)}}}},{props:{size:"small",variant:"text"},style:{padding:"4px 5px",fontSize:e.typography.pxToRem(13)}},{props:{size:"large",variant:"text"},style:{padding:"8px 11px",fontSize:e.typography.pxToRem(15)}},{props:{size:"small",variant:"outlined"},style:{padding:"3px 9px",fontSize:e.typography.pxToRem(13)}},{props:{size:"large",variant:"outlined"},style:{padding:"7px 21px",fontSize:e.typography.pxToRem(15)}},{props:{size:"small",variant:"contained"},style:{padding:"4px 10px",fontSize:e.typography.pxToRem(13)}},{props:{size:"large",variant:"contained"},style:{padding:"8px 22px",fontSize:e.typography.pxToRem(15)}},{props:{disableElevation:!0},style:{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${ji.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${ji.disabled}`]:{boxShadow:"none"}}},{props:{fullWidth:!0},style:{width:"100%"}},{props:{loadingPosition:"center"},style:{transition:e.transitions.create(["background-color","box-shadow","border-color"],{duration:e.transitions.duration.short}),[`&.${ji.loading}`]:{color:"transparent"}}}]}})),Wi=sC("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.startIcon,g.loading&&t.startIconLoadingStart]}})(({theme:e})=>({display:"inherit",marginRight:8,marginLeft:-4,variants:[{props:{size:"small"},style:{marginLeft:-2}},{props:{loadingPosition:"start",loading:!0},style:{transition:e.transitions.create(["opacity"],{duration:e.transitions.duration.short}),opacity:0}},{props:{loadingPosition:"start",loading:!0,fullWidth:!0},style:{marginRight:-8}},...Bi]})),Vi=sC("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.endIcon,g.loading&&t.endIconLoadingEnd]}})(({theme:e})=>({display:"inherit",marginRight:-4,marginLeft:8,variants:[{props:{size:"small"},style:{marginRight:-2}},{props:{loadingPosition:"end",loading:!0},style:{transition:e.transitions.create(["opacity"],{duration:e.transitions.duration.short}),opacity:0}},{props:{loadingPosition:"end",loading:!0,fullWidth:!0},style:{marginLeft:-8}},...Bi]})),_i=sC("span",{name:"MuiButton",slot:"LoadingIndicator"})(({theme:e})=>({display:"none",position:"absolute",visibility:"visible",variants:[{props:{loading:!0},style:{display:"flex"}},{props:{loadingPosition:"start"},style:{left:14}},{props:{loadingPosition:"start",size:"small"},style:{left:10}},{props:{variant:"text",loadingPosition:"start"},style:{left:6}},{props:{loadingPosition:"center"},style:{left:"50%",transform:"translate(-50%)",color:(e.vars||e).palette.action.disabled}},{props:{loadingPosition:"end"},style:{right:14}},{props:{loadingPosition:"end",size:"small"},style:{right:10}},{props:{variant:"text",loadingPosition:"end"},style:{right:6}},{props:{loadingPosition:"start",fullWidth:!0},style:{position:"relative",left:-10}},{props:{loadingPosition:"end",fullWidth:!0},style:{position:"relative",right:-10}}]})),Ui=sC("span",{name:"MuiButton",slot:"LoadingIconPlaceholder"})({display:"inline-block",width:"1em",height:"1em"}),Zi=l.forwardRef(function(e,t){const g=l.useContext(Li),n=l.useContext(Gi),o=useDefaultProps({props:resolveProps(g,e),name:"MuiButton"}),{children:a,color:C="primary",component:I="button",className:i,disabled:s=!1,disableElevation:c=!1,disableFocusRipple:u=!1,endIcon:d,focusVisibleClassName:p,fullWidth:m=!1,id:h,loading:y=null,loadingIndicator:b,loadingPosition:v="center",size:x="medium",startIcon:S,type:w,variant:E="text",...R}=o,T=li(h),M=b??(0,ja.jsx)(Di,{"aria-labelledby":T,color:"inherit",size:16}),P={...o,color:C,component:I,disabled:s,disableElevation:c,disableFocusRipple:u,fullWidth:m,loading:y,loadingIndicator:M,loadingPosition:v,size:x,type:w,variant:E},N=useUtilityClasses$26(P),O=(S||y&&"start"===v)&&(0,ja.jsx)(Wi,{className:N.startIcon,ownerState:P,children:S||(0,ja.jsx)(Ui,{className:N.loadingIconPlaceholder,ownerState:P})}),D=(d||y&&"end"===v)&&(0,ja.jsx)(Vi,{className:N.endIcon,ownerState:P,children:d||(0,ja.jsx)(Ui,{className:N.loadingIconPlaceholder,ownerState:P})}),j=n||"",L="boolean"==typeof y?(0,ja.jsx)("span",{className:N.loadingWrapper,style:{display:"contents"},children:y&&(0,ja.jsx)(_i,{className:N.loadingIndicator,ownerState:P,children:M})}):null,{root:G,...B}=N;return(0,ja.jsxs)(Fi,{ownerState:P,className:clsx(g.className,N.root,i,j),component:I,disabled:s||y,focusRipple:!u,focusVisibleClassName:clsx(N.focusVisible,p),ref:t,internalNativeButton:!0,type:w,id:y?T:h,...R,classes:B,children:[O,"end"!==v&&L,a,"end"===v&&L,D]})});function getDialogUtilityClass(e){return generateUtilityClass("MuiDialog",e)}generateUtilityClasses("MuiDialog",["root","backdrop","scrollPaper","scrollBody","container","paper","paperWidthFalse","paperWidthXs","paperWidthSm","paperWidthMd","paperWidthLg","paperWidthXl","paperFullWidth","paperFullScreen"]);var Ki=l.createContext({}),Hi=sC(BI,{name:"MuiDialog",slot:"Backdrop"})({zIndex:-1}),useUtilityClasses$25=e=>{const{classes:t,scroll:g,maxWidth:n,fullWidth:o,fullScreen:a}=e;return composeClasses({root:["root"],backdrop:["backdrop"],container:["container",`scroll${wC(g)}`],paper:["paper",`paperWidth${wC(String(n))}`,o&&"paperFullWidth",a&&"paperFullScreen"]},getDialogUtilityClass,t)},Yi=sC(_I,{name:"MuiDialog",slot:"Root"})({"@media print":{position:"absolute !important"}}),$i=sC("div",{name:"MuiDialog",slot:"Container",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.container,t[`scroll${wC(g.scroll)}`]]}})({height:"100%","@media print":{height:"auto"},outline:0,variants:[{props:{scroll:"paper"},style:{display:"flex",justifyContent:"center",alignItems:"center"}},{props:{scroll:"body"},style:{overflowY:"auto",overflowX:"hidden",textAlign:"center","&::after":{content:'""',display:"inline-block",verticalAlign:"middle",height:"100%",width:"0"}}}]}),Qi=sC(bC,{name:"MuiDialog",slot:"Paper",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.paper,t[`paperWidth${wC(String(g.maxWidth))}`],g.fullWidth&&t.paperFullWidth,g.fullScreen&&t.paperFullScreen]}})(hC(({theme:e})=>({margin:32,position:"relative",overflowY:"auto","@media print":{overflowY:"visible",boxShadow:"none"},variants:[{props:{scroll:"paper"},style:{display:"flex",flexDirection:"column",maxHeight:"calc(100% - 64px)"}},{props:{scroll:"body"},style:{display:"inline-block",verticalAlign:"middle",textAlign:"initial"}},{props:({ownerState:e})=>!e.maxWidth,style:{maxWidth:"calc(100% - 64px)"}},{props:{maxWidth:"xs"},style:{maxWidth:"px"===e.breakpoints.unit?Math.max(e.breakpoints.values.xs,444):`max(${e.breakpoints.values.xs}${e.breakpoints.unit}, 444px)`}},{props:{maxWidth:"xs",scroll:"body"},style:{[e.breakpoints.down(Math.max(e.breakpoints.values.xs,444)+64)]:{maxWidth:"calc(100% - 64px)"}}},...Object.keys(e.breakpoints.values).filter(e=>"xs"!==e).map(t=>({props:{maxWidth:t},style:{maxWidth:`${e.breakpoints.values[t]}${e.breakpoints.unit}`}})),...Object.keys(e.breakpoints.values).filter(e=>"xs"!==e).map(t=>({props:{maxWidth:t,scroll:"body"},style:{[e.breakpoints.down(e.breakpoints.values[t]+64)]:{maxWidth:"calc(100% - 64px)"}}})),{props:({ownerState:e})=>e.fullWidth,style:{width:"calc(100% - 64px)"}},{props:({ownerState:e})=>e.fullScreen,style:{margin:0,width:"100%",maxWidth:"100%",height:"100%",maxHeight:"none",borderRadius:0}},{props:({ownerState:e})=>e.fullScreen&&"body"===e.scroll,style:{margin:0,maxWidth:"100%"}}]}))),Xi=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiDialog"}),n=useTheme$1(),o={enter:n.transitions.duration.enteringScreen,exit:n.transitions.duration.leavingScreen},{"aria-describedby":a,"aria-labelledby":C,"aria-modal":I=!0,children:i,className:s,fullScreen:c=!1,fullWidth:u=!1,maxWidth:d="sm",onClick:p,onClose:m,open:h,PaperComponent:y=bC,role:b="dialog",scroll:v="paper",slots:x={},slotProps:S={},transitionDuration:w=o,...E}=g,R={...g,fullScreen:c,fullWidth:u,maxWidth:d,scroll:v},T=useUtilityClasses$25(R),M=l.useRef(),handleMouseDown=e=>{M.current=e.target===e.currentTarget},handleBackdropClick=e=>{p&&p(e),M.current&&(M.current=null,m&&m(e,"backdropClick"))},P=useId$1(C),N=l.useMemo(()=>({titleId:P}),[P]),O={slots:x,slotProps:S},[D,j]=useSlot("root",{elementType:Yi,shouldForwardComponentProp:!0,externalForwardedProps:O,ownerState:R,className:clsx(T.root,s),ref:t}),[L,G]=useSlot("backdrop",{elementType:Hi,shouldForwardComponentProp:!0,externalForwardedProps:O,ownerState:R,className:T.backdrop}),[B,F]=useSlot("paper",{elementType:Qi,shouldForwardComponentProp:!0,externalForwardedProps:O,ownerState:R,className:T.paper,additionalProps:{elevation:24,role:b,"aria-describedby":a,"aria-labelledby":P,"aria-modal":I,tabIndex:-1,[NI]:""}}),[W,V]=useSlot("container",{elementType:$i,externalForwardedProps:O,ownerState:R,className:T.container}),[U,Z]=useSlot("transition",{elementType:LI,externalForwardedProps:O,ownerState:R,additionalProps:{appear:!0,in:h,timeout:w,role:"presentation"}});return(0,ja.jsx)(D,{closeAfterTransition:!0,slots:{backdrop:L},slotProps:{backdrop:{transitionDuration:w,...G}},onClose:m,open:h,onClick:handleBackdropClick,...j,...E,children:(0,ja.jsx)(U,{...Z,children:(0,ja.jsx)(W,{onMouseDown:handleMouseDown,...V,children:(0,ja.jsx)(B,{as:y,...F,children:(0,ja.jsx)(Ki.Provider,{value:N,children:i})})})})})});function getDialogActionsUtilityClass(e){return generateUtilityClass("MuiDialogActions",e)}generateUtilityClasses("MuiDialogActions",["root","spacing"]);var useUtilityClasses$24=e=>{const{classes:t,disableSpacing:g}=e;return composeClasses({root:["root",!g&&"spacing"]},getDialogActionsUtilityClass,t)},Ji=sC("div",{name:"MuiDialogActions",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.root,!g.disableSpacing&&t.spacing]}})({display:"flex",alignItems:"center",padding:8,justifyContent:"flex-end",flex:"0 0 auto",variants:[{props:({ownerState:e})=>!e.disableSpacing,style:{"& > :not(style) ~ :not(style)":{marginLeft:8}}}]}),qi=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiDialogActions"}),{className:n,disableSpacing:o=!1,...a}=g,C={...g,disableSpacing:o};return(0,ja.jsx)(Ji,{className:clsx(useUtilityClasses$24(C).root,n),ownerState:C,ref:t,...a})});function getDialogContentUtilityClass(e){return generateUtilityClass("MuiDialogContent",e)}function getDialogTitleUtilityClass(e){return generateUtilityClass("MuiDialogTitle",e)}generateUtilityClasses("MuiDialogContent",["root","dividers"]);var es=generateUtilityClasses("MuiDialogTitle",["root"]),useUtilityClasses$23=e=>{const{classes:t,dividers:g}=e;return composeClasses({root:["root",g&&"dividers"]},getDialogContentUtilityClass,t)},ts=sC("div",{name:"MuiDialogContent",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.root,g.dividers&&t.dividers]}})(hC(({theme:e})=>({flex:"1 1 auto",WebkitOverflowScrolling:"touch",overflowY:"auto",padding:"20px 24px",variants:[{props:({ownerState:e})=>e.dividers,style:{padding:"16px 24px",borderTop:`1px solid ${(e.vars||e).palette.divider}`,borderBottom:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>!e.dividers,style:{[`.${es.root} + &`]:{paddingTop:0}}}]}))),gs=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiDialogContent"}),{className:n,dividers:o=!1,...a}=g,C={...g,dividers:o};return(0,ja.jsx)(ts,{className:clsx(useUtilityClasses$23(C).root,n),ownerState:C,ref:t,...a})}),useUtilityClasses$22=e=>{const{classes:t}=e;return composeClasses({root:["root"]},getDialogTitleUtilityClass,t)},ns=sC(RC,{name:"MuiDialogTitle",slot:"Root"})({padding:"16px 24px",flex:"0 0 auto"}),rs=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiDialogTitle"}),{className:n,id:o,...a}=g,C=g,I=useUtilityClasses$22(C),{titleId:i=o}=l.useContext(Ki);return(0,ja.jsx)(ns,{component:"h2",className:clsx(I.root,n),ownerState:C,ref:t,variant:"h6",id:o??i,...a})}),os=l.createContext(void 0);function useFormControl(){return l.useContext(os)}function useFormControlState({props:e,states:t}){const g=l.useContext(os),n={};return t.forEach(t=>{const o=e[t];n[t]=void 0===o&&g?g[t]:o}),[n,g]}function getFormControlLabelUtilityClasses(e){return generateUtilityClass("MuiFormControlLabel",e)}var as=generateUtilityClasses("MuiFormControlLabel",["root","labelPlacementStart","labelPlacementTop","labelPlacementBottom","disabled","label","error","required","asterisk"]),useUtilityClasses$21=e=>{const{classes:t,disabled:g,labelPlacement:n,error:o,required:a}=e;return composeClasses({root:["root",g&&"disabled",`labelPlacement${wC(n)}`,o&&"error",a&&"required"],label:["label",g&&"disabled"],asterisk:["asterisk",o&&"error"]},getFormControlLabelUtilityClasses,t)},As=sC("label",{name:"MuiFormControlLabel",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[{[`& .${as.label}`]:t.label},t.root,t[`labelPlacement${wC(g.labelPlacement)}`]]}})(hC(({theme:e})=>({display:"inline-flex",alignItems:"center",cursor:"pointer",verticalAlign:"middle",WebkitTapHighlightColor:"transparent",marginLeft:-11,marginRight:16,[`&.${as.disabled}`]:{cursor:"default"},[`& .${as.label}`]:{[`&.${as.disabled}`]:{color:(e.vars||e).palette.text.disabled}},variants:[{props:{labelPlacement:"start"},style:{flexDirection:"row-reverse",marginRight:-11}},{props:{labelPlacement:"top"},style:{flexDirection:"column-reverse"}},{props:{labelPlacement:"bottom"},style:{flexDirection:"column"}},{props:({labelPlacement:e})=>"start"===e||"top"===e||"bottom"===e,style:{marginLeft:16}}]}))),Cs=sC("span",{name:"MuiFormControlLabel",slot:"Asterisk"})(hC(({theme:e})=>({[`&.${as.error}`]:{color:(e.vars||e).palette.error.main}}))),Is=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiFormControlLabel"}),{checked:n,className:o,control:a,disabled:C,disableTypography:I,inputRef:i,label:s,labelPlacement:c="end",name:u,onChange:d,required:p,slots:m={},slotProps:h={},value:y,...b}=g,[v,x]=useFormControlState({props:g,states:["error"]}),S=C??a.props.disabled??x?.disabled,w=p??a.props.required,E={disabled:S,required:w};["checked","name","onChange","value","inputRef"].forEach(e=>{void 0===a.props[e]&&void 0!==g[e]&&(E[e]=g[e])});const R={...g,disabled:S,labelPlacement:c,required:w,error:v.error},T=useUtilityClasses$21(R),[M,P]=useSlot("typography",{elementType:RC,externalForwardedProps:{slots:m,slotProps:h},ownerState:R});let N=s;return null==N||N.type===RC||I||(N=(0,ja.jsx)(M,{component:"span",...P,className:clsx(T.label,P?.className),children:N})),(0,ja.jsxs)(As,{className:clsx(T.root,o),ownerState:R,ref:t,...b,children:[l.cloneElement(a,E),w?(0,ja.jsxs)("div",{children:[N,(0,ja.jsxs)(Cs,{ownerState:R,"aria-hidden":!0,className:T.asterisk,children:[" ","*"]})]}):N]})});function getSwitchBaseUtilityClass(e){return generateUtilityClass("PrivateSwitchBase",e)}generateUtilityClasses("PrivateSwitchBase",["root","checked","disabled","input","edgeStart","edgeEnd"]);var useUtilityClasses$20=e=>{const{classes:t,checked:g,disabled:n,edge:o}=e;return composeClasses({root:["root",g&&"checked",n&&"disabled",o&&`edge${wC(o)}`],input:["input"]},getSwitchBaseUtilityClass,t)},is=sC(si,{name:"MuiSwitchBase"})({padding:9,borderRadius:"50%",variants:[{props:{edge:"start",size:"small"},style:{marginLeft:-3}},{props:({edge:e,ownerState:t})=>"start"===e&&"small"!==t.size,style:{marginLeft:-12}},{props:{edge:"end",size:"small"},style:{marginRight:-3}},{props:({edge:e,ownerState:t})=>"end"===e&&"small"!==t.size,style:{marginRight:-12}}]}),ss=sC("input",{name:"MuiSwitchBase",shouldForwardProp:rootShouldForwardProp})({cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1}),ls=l.forwardRef(function(e,t){const{autoFocus:g,checked:n,checkedIcon:o,defaultChecked:a,disabled:C,disableFocusRipple:I=!1,edge:i=!1,icon:s,id:l,name:c,onBlur:u,onChange:d,onFocus:p,readOnly:m,required:h=!1,tabIndex:y,type:b,value:v,slots:x={},slotProps:S={},...w}=e,{nativeButton:E,...R}=w,[T,M]=wi({controlled:n,default:Boolean(a),name:"SwitchBase",state:"checked"}),P=useFormControl(),handleFocus=e=>{p&&p(e),P&&P.onFocus&&P.onFocus(e)},handleBlur=e=>{u&&u(e),P&&P.onBlur&&P.onBlur(e)},handleInputChange=e=>{if(e.nativeEvent.defaultPrevented||m)return;const t=e.target.checked;M(t),d&&d(e,t)};let N=C;P&&void 0===N&&(N=P.disabled);const O="checkbox"===b||"radio"===b,D={...e,checked:T,disabled:N,disableFocusRipple:I,edge:i},j=useUtilityClasses$20(D),L={slots:x,slotProps:S},[G,B]=useSlot("root",{ref:t,elementType:is,className:j.root,shouldForwardComponentProp:!0,externalForwardedProps:{...L,component:"span",...R},getSlotProps:e=>({...e,onFocus:t=>{e.onFocus?.(t),handleFocus(t)},onBlur:t=>{e.onBlur?.(t),handleBlur(t)}}),ownerState:D,additionalProps:{centerRipple:!0,focusRipple:!I,role:void 0,tabIndex:null}}),[F,W]=useSlot("input",{elementType:ss,className:j.input,externalForwardedProps:L,getSlotProps:e=>({...e,onChange:t=>{e.onChange?.(t),handleInputChange(t)}}),ownerState:D,additionalProps:{autoFocus:g,checked:n,defaultChecked:a,disabled:N,id:O?l:void 0,name:c,readOnly:m,required:h,tabIndex:y,type:b,..."checkbox"===b&&void 0===v?{}:{value:v}}});return(0,ja.jsxs)(G,{...B,children:[(0,ja.jsx)(F,{...W}),T?o:s]})});function getSwitchUtilityClass(e){return generateUtilityClass("MuiSwitch",e)}var cs=generateUtilityClasses("MuiSwitch",["root","edgeStart","edgeEnd","switchBase","colorPrimary","colorSecondary","sizeSmall","sizeMedium","checked","disabled","input","thumb","track"]),useUtilityClasses$19=e=>{const{classes:t,edge:g,size:n,color:o,checked:a,disabled:C}=e,I=composeClasses({root:["root",g&&`edge${wC(g)}`,`size${wC(n)}`],switchBase:["switchBase",`color${wC(o)}`,a&&"checked",C&&"disabled"],thumb:["thumb"],track:["track"],input:["input"]},getSwitchUtilityClass,t);return{...t,...I}},us=sC("span",{name:"MuiSwitch",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.root,g.edge&&t[`edge${wC(g.edge)}`],t[`size${wC(g.size)}`]]}})({display:"inline-flex",width:58,height:38,overflow:"hidden",padding:12,boxSizing:"border-box",position:"relative",flexShrink:0,zIndex:0,verticalAlign:"middle","@media print":{colorAdjust:"exact"},variants:[{props:{edge:"start"},style:{marginLeft:-8}},{props:{edge:"end"},style:{marginRight:-8}},{props:{size:"small"},style:{width:40,height:24,padding:7,[`& .${cs.thumb}`]:{width:16,height:16},[`& .${cs.switchBase}`]:{padding:4,[`&.${cs.checked}`]:{transform:"translateX(16px)"}}}}]}),ds=sC(ls,{name:"MuiSwitch",slot:"SwitchBase",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.switchBase,{[`& .${cs.input}`]:t.input},"default"!==g.color&&t[`color${wC(g.color)}`]]}})(hC(({theme:e})=>({position:"absolute",top:0,left:0,zIndex:1,color:e.vars?e.vars.palette.Switch.defaultColor:`${"light"===e.palette.mode?e.palette.common.white:e.palette.grey[300]}`,transition:e.transitions.create(["left","transform"],{duration:e.transitions.duration.shortest}),[`&.${cs.checked}`]:{transform:"translateX(20px)"},[`&.${cs.disabled}`]:{color:e.vars?e.vars.palette.Switch.defaultDisabledColor:`${"light"===e.palette.mode?e.palette.grey[100]:e.palette.grey[600]}`},[`&.${cs.checked} + .${cs.track}`]:{opacity:.5},[`&.${cs.disabled} + .${cs.track}`]:{opacity:e.vars?e.vars.opacity.switchTrackDisabled:""+("light"===e.palette.mode?.12:.2)},[`& .${cs.input}`]:{left:"-100%",width:"300%"}})),hC(({theme:e})=>({"&:hover":{backgroundColor:e.alpha((e.vars||e).palette.action.active,(e.vars||e).palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},variants:[...Object.entries(e.palette).filter(createSimplePaletteValueFilter(["light"])).map(([t])=>({props:{color:t},style:{[`&.${cs.checked}`]:{color:(e.vars||e).palette[t].main,"&:hover":{backgroundColor:e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${cs.disabled}`]:{color:e.vars?e.vars.palette.Switch[`${t}DisabledColor`]:`${"light"===e.palette.mode?e.lighten(e.palette[t].main,.62):e.darken(e.palette[t].main,.55)}`}},[`&.${cs.checked} + .${cs.track}`]:{backgroundColor:(e.vars||e).palette[t].main}}}))]}))),ps=sC("span",{name:"MuiSwitch",slot:"Track"})(hC(({theme:e})=>({height:"100%",width:"100%",borderRadius:7,zIndex:-1,transition:e.transitions.create(["opacity","background-color"],{duration:e.transitions.duration.shortest}),"@media (forced-colors: active)":{boxSizing:"border-box",border:"1px solid ButtonBorder"},backgroundColor:e.vars?e.vars.palette.common.onBackground:`${"light"===e.palette.mode?e.palette.common.black:e.palette.common.white}`,opacity:e.vars?e.vars.opacity.switchTrack:""+("light"===e.palette.mode?.38:.3)}))),ms=sC("span",{name:"MuiSwitch",slot:"Thumb"})(hC(({theme:e})=>({boxShadow:(e.vars||e).shadows[1],backgroundColor:"currentColor",boxSizing:"border-box",border:"1px solid transparent",width:20,height:20,borderRadius:"50%"}))),fs=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiSwitch"}),{className:n,color:o="primary",edge:a=!1,size:C="medium",sx:I,slots:i={},slotProps:s={},...l}=g,c={...g,color:o,edge:a,size:C},u=useUtilityClasses$19(c),d=s.input,p={slots:i,slotProps:s},[m,h]=useSlot("root",{className:clsx(u.root,n),elementType:us,externalForwardedProps:p,ownerState:c,additionalProps:{sx:I}}),[y,b]=useSlot("thumb",{className:u.thumb,elementType:ms,externalForwardedProps:p,ownerState:c}),v=(0,ja.jsx)(y,{...b}),[x,S]=useSlot("track",{className:u.track,elementType:ps,externalForwardedProps:p,ownerState:c});return(0,ja.jsxs)(m,{...h,children:[(0,ja.jsx)(ds,{type:"checkbox",icon:v,checkedIcon:v,ref:t,ownerState:c,...l,classes:{...u,root:u.switchBase},slots:{...i.switchBase&&{root:i.switchBase},...i.input&&{input:i.input}},slotProps:{...s.switchBase&&{root:"function"==typeof s.switchBase?s.switchBase(c):s.switchBase},input:mergeSlotProps("function"==typeof d?d(c):d,{role:"switch"})}}),(0,ja.jsx)(x,{...S})]})});function getStyleValue(e){return parseInt(e,10)||0}var hs={shadow:{visibility:"hidden",position:"absolute",overflow:"hidden",height:0,top:0,left:0,transform:"translateZ(0)"}};function isObjectEmpty(e){for(const t in e)return!1;return!0}function isEmpty(e){return isObjectEmpty(e)||0===e.outerHeightStyle&&!e.overflowing}var ys=l.forwardRef(function(e,t){const{onChange:g,maxRows:n,minRows:o=1,style:a,value:C,...I}=e,{current:i}=l.useRef(null!=C),s=l.useRef(null),c=useForkRef(t,s),u=l.useRef(null),d=l.useRef(null),p=l.useCallback(()=>{const t=s.current,g=d.current;if(!t||!g)return;const a=ownerWindow(t).getComputedStyle(t);if("0px"===a.width)return{outerHeightStyle:0,overflowing:!1};g.style.width=a.width,g.value=t.value||e.placeholder||"x","\n"===g.value.slice(-1)&&(g.value+=" ");const C=a.boxSizing,I=getStyleValue(a.paddingBottom)+getStyleValue(a.paddingTop),i=getStyleValue(a.borderBottomWidth)+getStyleValue(a.borderTopWidth),l=g.scrollHeight;g.value="x";const c=g.scrollHeight;let u=l;return o&&(u=Math.max(Number(o)*c,u)),n&&(u=Math.min(Number(n)*c,u)),u=Math.max(u,c),{outerHeightStyle:u+("border-box"===C?I+i:0),overflowing:Math.abs(u-l)<=1}},[n,o,e.placeholder]),m=useEventCallback(()=>{const e=s.current,t=p();if(!e||!t||isEmpty(t))return!1;const g=t.outerHeightStyle;return null!=u.current&&u.current!==g}),h=l.useCallback(()=>{const e=s.current,t=p();if(!e||!t||isEmpty(t))return;const g=t.outerHeightStyle;u.current!==g&&(u.current=g,e.style.height=`${g}px`),e.style.overflow=t.overflowing?"hidden":""},[p]),y=l.useRef(-1);RA(()=>{const e=debounce$1(h),t=s?.current;if(!t)return;const g=ownerWindow(t);let n;return g.addEventListener("resize",e),"undefined"!=typeof ResizeObserver&&(n=new ResizeObserver(()=>{m()&&(n.unobserve(t),cancelAnimationFrame(y.current),h(),y.current=requestAnimationFrame(()=>{n.observe(t)}))}),n.observe(t)),()=>{e.clear(),cancelAnimationFrame(y.current),g.removeEventListener("resize",e),n&&n.disconnect()}},[p,h,m]),RA(()=>{h()});const handleChange=e=>{i||h();const t=e.target,n=t.value.length,o=t.value.endsWith("\n"),a=t.selectionStart===n;o&&a&&t.setSelectionRange(n,n),g&&g(e)};return(0,ja.jsxs)(l.Fragment,{children:[(0,ja.jsx)("textarea",{value:C,onChange:handleChange,ref:c,rows:o,style:a,...I}),(0,ja.jsx)("textarea",{"aria-hidden":!0,className:e.className,readOnly:!0,ref:d,tabIndex:-1,style:{...hs.shadow,...a,paddingTop:0,paddingBottom:0}})]})});function hasValue(e){return null!=e&&!(Array.isArray(e)&&0===e.length)}function isFilled(e,t=!1){return e&&(hasValue(e.value)&&""!==e.value||t&&hasValue(e.defaultValue)&&""!==e.defaultValue)}function isAdornedStart(e){return e.startAdornment}function getInputBaseUtilityClass(e){return generateUtilityClass("MuiInputBase",e)}var bs,vs=generateUtilityClasses("MuiInputBase",["root","formControl","focused","disabled","adornedStart","adornedEnd","error","sizeSmall","multiline","colorSecondary","fullWidth","hiddenLabel","readOnly","input","inputTypeSearch"]),xs="mui-auto-fill",Ss="mui-auto-fill-cancel",rootOverridesResolver=(e,t)=>{const{ownerState:g}=e;return[t.root,g.formControl&&t.formControl,g.startAdornment&&t.adornedStart,g.endAdornment&&t.adornedEnd,g.error&&t.error,"small"===g.size&&t.sizeSmall,g.multiline&&t.multiline,g.color&&t[`color${wC(g.color)}`],g.fullWidth&&t.fullWidth,g.hiddenLabel&&t.hiddenLabel]},inputOverridesResolver=(e,t)=>{const{ownerState:g}=e;return[t.input,"search"===g.type&&t.inputTypeSearch]},useUtilityClasses$18=e=>{const{classes:t,color:g,disabled:n,error:o,endAdornment:a,focused:C,formControl:I,fullWidth:i,hiddenLabel:s,multiline:l,readOnly:c,size:u,startAdornment:d,type:p}=e;return composeClasses({root:["root",`color${wC(g)}`,n&&"disabled",o&&"error",i&&"fullWidth",C&&"focused",I&&"formControl",u&&"medium"!==u&&`size${wC(u)}`,l&&"multiline",d&&"adornedStart",a&&"adornedEnd",s&&"hiddenLabel",c&&"readOnly"],input:["input",n&&"disabled","search"===p&&"inputTypeSearch",c&&"readOnly"]},getInputBaseUtilityClass,t)},ws=sC("div",{name:"MuiInputBase",slot:"Root",overridesResolver:rootOverridesResolver})(hC(({theme:e})=>({...e.typography.body1,color:(e.vars||e).palette.text.primary,lineHeight:"1.4375em",boxSizing:"border-box",position:"relative",cursor:"text",display:"inline-flex",alignItems:"center",[`&.${vs.disabled}`]:{color:(e.vars||e).palette.text.disabled,cursor:"default"},variants:[{props:({ownerState:e})=>e.multiline,style:{padding:"4px 0 5px"}},{props:({ownerState:e,size:t})=>e.multiline&&"small"===t,style:{paddingTop:1}},{props:({ownerState:e})=>e.fullWidth,style:{width:"100%"}}]}))),ks=sC("input",{name:"MuiInputBase",slot:"Input",overridesResolver:inputOverridesResolver})(hC(({theme:e})=>{const t="light"===e.palette.mode,g={color:"currentColor",...e.vars?{opacity:e.vars.opacity.inputPlaceholder}:{opacity:t?.42:.5},transition:e.transitions.create("opacity",{duration:e.transitions.duration.shorter})},n={opacity:"0 !important"},o=e.vars?{opacity:e.vars.opacity.inputPlaceholder}:{opacity:t?.42:.5};return{font:"inherit",letterSpacing:"inherit",color:"currentColor",padding:"4px 0 5px",border:0,boxSizing:"content-box",background:"none",height:"1.4375em",margin:0,WebkitTapHighlightColor:"transparent",display:"block",minWidth:0,width:"100%","&::-webkit-input-placeholder":g,"&::-moz-placeholder":g,"&::-ms-input-placeholder":g,"&:focus":{outline:0},"&:invalid":{boxShadow:"none"},"&::-webkit-search-decoration":{WebkitAppearance:"none"},[`label[data-shrink=false] + .${vs.formControl} &`]:{"&::-webkit-input-placeholder":n,"&::-moz-placeholder":n,"&::-ms-input-placeholder":n,"&:focus::-webkit-input-placeholder":o,"&:focus::-moz-placeholder":o,"&:focus::-ms-input-placeholder":o},[`&.${vs.disabled}`]:{opacity:1,WebkitTextFillColor:(e.vars||e).palette.text.disabled},variants:[{props:({ownerState:e})=>!e.disableInjectingGlobalStyles,style:{animationName:Ss,animationDuration:"10ms","&:-webkit-autofill":{animationDuration:"5000s",animationName:xs}}},{props:{size:"small"},style:{paddingTop:1}},{props:({ownerState:e})=>e.multiline,style:{height:"auto",resize:"none",padding:0,paddingTop:0}},{props:{type:"search"},style:{MozAppearance:"textfield"}}]}})),Es=globalCss({[`@keyframes ${xs}`]:{from:{animationName:xs}},[`@keyframes ${Ss}`]:{from:{animationName:Ss}}}),Rs=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiInputBase"}),{"aria-describedby":n,"aria-label":o,autoComplete:a,autoFocus:C,className:I,color:i,defaultValue:s,disabled:c,disableInjectingGlobalStyles:u,endAdornment:d,error:p,fullWidth:m=!1,id:h,inputComponent:y="input",inputProps:b={},inputRef:v,margin:x,maxRows:S,minRows:w,multiline:E=!1,name:R,onBlur:T,onChange:M,onClick:P,onFocus:N,onKeyDown:O,onKeyUp:D,placeholder:j,readOnly:L,renderSuffix:G,rows:B,size:F,slotProps:W={},slots:V={},startAdornment:U,type:Z="text",value:K,...H}=g,Y=null!=b.value?b.value:K,{current:$}=l.useRef(null!=Y),Q=l.useRef(),X=l.useCallback(e=>{},[]),J=nI(Q,v,b.ref,X),[q,ee]=l.useState(!1),[te,ge]=useFormControlState({props:g,states:["color","disabled","error","hiddenLabel","size","required","filled"]});te.focused=ge?ge.focused:q,l.useEffect(()=>{!ge&&c&&q&&(ee(!1),T&&T())},[ge,c,q,T]);const ne=ge&&ge.onFilled,re=ge&&ge.onEmpty,oe=l.useCallback(e=>{isFilled(e)?ne&&ne():re&&re()},[ne,re]);rI(()=>{$&&oe({value:Y})},[Y,oe,$]),rI(()=>{if(!C)return;const e=Q.current;if(!e)return;const t=qC(e),g=eI(t),n=null==g||g===t.body||g===t.documentElement;e===g?ge&&ge.onFocus?ge.onFocus():ee(!0):n&&e.focus()},[C]);const handleFocus=e=>{N&&N(e),b.onFocus&&b.onFocus(e),ge&&ge.onFocus?ge.onFocus(e):ee(!0)},handleBlur=e=>{T&&T(e),b.onBlur&&b.onBlur(e),ge&&ge.onBlur?ge.onBlur(e):ee(!1)},handleChange=(e,...t)=>{if(!$){const t=e.target||Q.current;if(null==t)throw new Error(formatMuiErrorMessage(1));oe({value:t.value})}b.onChange&&b.onChange(e,...t),M&&M(e,...t)};l.useEffect(()=>{oe(Q.current)},[]);const handleClick=e=>{Q.current&&e.currentTarget===e.target&&Q.current.focus(),P&&P(e)};let ae=y,Ae=b;E&&"input"===ae&&(Ae=B?{type:void 0,minRows:B,maxRows:B,...Ae}:{type:void 0,maxRows:S,minRows:w,...Ae},ae=ys);const handleAutoFill=e=>{oe(e.animationName===Ss?Q.current:{value:"x"})};l.useEffect(()=>{ge&&ge.setAdornedStart(Boolean(U))},[ge,U]);const Ce={...g,color:te.color||"primary",disabled:te.disabled,endAdornment:d,error:te.error,focused:te.focused,formControl:ge,fullWidth:m,hiddenLabel:te.hiddenLabel,multiline:E,size:te.size,startAdornment:U,type:Z},Ie=useUtilityClasses$18(Ce),ie=V.root||ws,se=W.root||{},le=V.input||ks;return Ae={...Ae,...W.input},(0,ja.jsxs)(l.Fragment,{children:[!u&&"function"==typeof Es&&(bs||(bs=(0,ja.jsx)(Es,{}))),(0,ja.jsxs)(ie,{...se,ref:t,onClick:handleClick,...H,...!isHostComponent(ie)&&{ownerState:{...Ce,...se.ownerState}},className:clsx(Ie.root,se.className,I,L&&"MuiInputBase-readOnly"),children:[U,(0,ja.jsx)(os.Provider,{value:null,children:(0,ja.jsx)(le,{"aria-invalid":te.error,"aria-describedby":n,"aria-label":o,autoComplete:a,autoFocus:C,defaultValue:s,disabled:te.disabled,id:h,onAnimationStart:handleAutoFill,name:R,placeholder:j,readOnly:L,required:te.required,rows:B,value:Y,onKeyDown:O,onKeyUp:D,type:Z,...Ae,...!isHostComponent(le)&&{as:ae,ownerState:{...Ce,...Ae.ownerState}},ref:J,className:clsx(Ie.input,Ae.className,L&&"MuiInputBase-readOnly"),onBlur:handleBlur,onChange:handleChange,onFocus:handleFocus})}),d,G?G({...te,startAdornment:U}):null]})]})});function getInputLabelUtilityClasses(e){return generateUtilityClass("MuiInputLabel",e)}var Ts=generateUtilityClasses("MuiInputLabel",["root","focused","disabled","error","required","asterisk","formControl","sizeSmall","shrink","animated","standard","filled","outlined"]);function getInputUtilityClass(e){return generateUtilityClass("MuiInput",e)}var Ms={...vs,...generateUtilityClasses("MuiInput",["root","underline","input"])},useUtilityClasses$17=e=>{const{classes:t,disableUnderline:g}=e,n=composeClasses({root:["root",!g&&"underline"],input:["input"]},getInputUtilityClass,t);return{...t,...n}},Ps=sC(ws,{shouldForwardProp:e=>rootShouldForwardProp(e)||"classes"===e,name:"MuiInput",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[...rootOverridesResolver(e,t),!g.disableUnderline&&t.underline]}})(hC(({theme:e})=>{let t="light"===e.palette.mode?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)";return e.vars&&(t=e.alpha(e.vars.palette.common.onBackground,e.vars.opacity.inputUnderline)),{position:"relative",variants:[{props:({ownerState:e})=>e.formControl,style:{[`label + &, .${Ts.root} + &`]:{marginTop:16}}},{props:({ownerState:e})=>!e.disableUnderline,style:{"&::after":{left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:e.transitions.create("transform",{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut}),pointerEvents:"none"},[`&.${Ms.focused}:after`]:{transform:"scaleX(1) translateX(0)"},[`&.${Ms.error}`]:{"&::before, &::after":{borderBottomColor:(e.vars||e).palette.error.main}},"&::before":{borderBottom:`1px solid ${t}`,left:0,bottom:0,content:'""',position:"absolute",right:0,transition:e.transitions.create("border-bottom-color",{duration:e.transitions.duration.shorter}),pointerEvents:"none"},[`&:hover:not(.${Ms.disabled}, .${Ms.error}):before`]:{borderBottom:`2px solid ${(e.vars||e).palette.text.primary}`,"@media (hover: none)":{borderBottom:`1px solid ${t}`}},[`&.${Ms.disabled}:before`]:{borderBottomStyle:"dotted"}}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t,disableUnderline:!1},style:{"&::after":{borderBottom:`2px solid ${(e.vars||e).palette[t].main}`}}}))]}})),Ns=sC(ks,{name:"MuiInput",slot:"Input",overridesResolver:inputOverridesResolver})({}),zs=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiInput"}),{disableUnderline:n=!1,fullWidth:o=!1,inputComponent:a="input",multiline:C=!1,notched:I,slotProps:i,slots:s={},type:l="text",...c}=g,u=useUtilityClasses$17(g),d={root:{ownerState:{disableUnderline:n}}},p=i?deepmerge(i,d):d;return(0,ja.jsx)(Rs,{slots:{root:s.root??Ps,input:s.input??Ns},slotProps:p,fullWidth:o,inputComponent:a,multiline:C,ref:t,type:l,...c,classes:u})});function getFilledInputUtilityClass(e){return generateUtilityClass("MuiFilledInput",e)}zs.muiName="Input";var Os,Ds={...vs,...generateUtilityClasses("MuiFilledInput",["root","underline","input","adornedStart","adornedEnd","sizeSmall","multiline","hiddenLabel"])},useUtilityClasses$16=e=>{const{classes:t,disableUnderline:g,startAdornment:n,endAdornment:o,size:a,hiddenLabel:C,multiline:I}=e,i=composeClasses({root:["root",!g&&"underline",n&&"adornedStart",o&&"adornedEnd","small"===a&&`size${wC(a)}`,C&&"hiddenLabel",I&&"multiline"],input:["input"]},getFilledInputUtilityClass,t);return{...t,...i}},js=sC(ws,{shouldForwardProp:e=>rootShouldForwardProp(e)||"classes"===e,name:"MuiFilledInput",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[...rootOverridesResolver(e,t),!g.disableUnderline&&t.underline]}})(hC(({theme:e})=>{const t="light"===e.palette.mode,g=t?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)",n=t?"rgba(0, 0, 0, 0.06)":"rgba(255, 255, 255, 0.09)",o=t?"rgba(0, 0, 0, 0.09)":"rgba(255, 255, 255, 0.13)",a=t?"rgba(0, 0, 0, 0.12)":"rgba(255, 255, 255, 0.12)";return{position:"relative",backgroundColor:e.vars?e.vars.palette.FilledInput.bg:n,borderTopLeftRadius:(e.vars||e).shape.borderRadius,borderTopRightRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create("background-color",{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut}),"&:hover":{backgroundColor:e.vars?e.vars.palette.FilledInput.hoverBg:o,"@media (hover: none)":{backgroundColor:e.vars?e.vars.palette.FilledInput.bg:n}},[`&.${Ds.focused}`]:{backgroundColor:e.vars?e.vars.palette.FilledInput.bg:n},[`&.${Ds.disabled}`]:{backgroundColor:e.vars?e.vars.palette.FilledInput.disabledBg:a},variants:[{props:({ownerState:e})=>!e.disableUnderline,style:{"&::after":{left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:e.transitions.create("transform",{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut}),pointerEvents:"none"},[`&.${Ds.focused}:after`]:{transform:"scaleX(1) translateX(0)"},[`&.${Ds.error}`]:{"&::before, &::after":{borderBottomColor:(e.vars||e).palette.error.main}},"&::before":{borderBottom:`1px solid ${e.vars?e.alpha(e.vars.palette.common.onBackground,e.vars.opacity.inputUnderline):g}`,left:0,bottom:0,content:'""',position:"absolute",right:0,transition:e.transitions.create("border-bottom-color",{duration:e.transitions.duration.shorter}),pointerEvents:"none"},[`&:hover:not(.${Ds.disabled}, .${Ds.error}):before`]:{borderBottom:`1px solid ${(e.vars||e).palette.text.primary}`},[`&.${Ds.disabled}:before`]:{borderBottomStyle:"dotted"}}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{disableUnderline:!1,color:t},style:{"&::after":{borderBottom:`2px solid ${(e.vars||e).palette[t]?.main}`}}})),{props:({ownerState:e})=>e.startAdornment,style:{paddingLeft:12}},{props:({ownerState:e})=>e.endAdornment,style:{paddingRight:12}},{props:({ownerState:e})=>e.multiline,style:{padding:"25px 12px 8px"}},{props:({ownerState:e,size:t})=>e.multiline&&"small"===t,style:{paddingTop:21,paddingBottom:4}},{props:({ownerState:e})=>e.multiline&&e.hiddenLabel,style:{paddingTop:16,paddingBottom:17}},{props:({ownerState:e})=>e.multiline&&e.hiddenLabel&&"small"===e.size,style:{paddingTop:8,paddingBottom:9}}]}})),Ls=sC(ks,{name:"MuiFilledInput",slot:"Input",overridesResolver:inputOverridesResolver})(hC(({theme:e})=>({paddingTop:25,paddingRight:12,paddingBottom:8,paddingLeft:12,"&:-webkit-autofill":{...!e.vars&&{WebkitBoxShadow:"light"===e.palette.mode?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:"light"===e.palette.mode?null:"#fff",caretColor:"light"===e.palette.mode?null:"#fff"},borderTopLeftRadius:"inherit",borderTopRightRadius:"inherit",...e.vars&&e.applyStyles("dark",{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"})},variants:[{props:{size:"small"},style:{paddingTop:21,paddingBottom:4}},{props:({ownerState:e})=>e.hiddenLabel,style:{paddingTop:16,paddingBottom:17}},{props:({ownerState:e})=>e.startAdornment,style:{paddingLeft:0}},{props:({ownerState:e})=>e.endAdornment,style:{paddingRight:0}},{props:({ownerState:e})=>e.hiddenLabel&&"small"===e.size,style:{paddingTop:8,paddingBottom:9}},{props:({ownerState:e})=>e.multiline,style:{paddingTop:0,paddingBottom:0,paddingLeft:0,paddingRight:0}}]}))),Gs=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiFilledInput"}),{disableUnderline:n=!1,fullWidth:o=!1,hiddenLabel:a,inputComponent:C="input",multiline:I=!1,notched:i,slotProps:s,slots:l={},type:c="text",...u}=g,d={...g,disableUnderline:n,fullWidth:o,inputComponent:C,multiline:I,type:c},p=useUtilityClasses$16(g),m={root:{ownerState:d},input:{ownerState:d}},h=s?deepmerge(m,s):m;return(0,ja.jsx)(Rs,{slots:{root:l.root??js,input:l.input??Ls},slotProps:h,fullWidth:o,inputComponent:C,multiline:I,ref:t,type:c,...u,classes:p})});Gs.muiName="Input";var Bs=sC("fieldset",{name:"MuiNotchedOutlined",shouldForwardProp:rootShouldForwardProp})({textAlign:"left",position:"absolute",bottom:0,right:0,top:-5,left:0,margin:0,padding:"0 8px",pointerEvents:"none",borderRadius:"inherit",borderStyle:"solid",borderWidth:1,overflow:"hidden",minWidth:"0%"}),Fs=sC("legend",{name:"MuiNotchedOutlined",shouldForwardProp:rootShouldForwardProp})(hC(({theme:e})=>({float:"unset",width:"auto",overflow:"hidden",variants:[{props:({ownerState:e})=>!e.withLabel,style:{padding:0,lineHeight:"11px",transition:e.transitions.create("width",{duration:150,easing:e.transitions.easing.easeOut})}},{props:({ownerState:e})=>e.withLabel,style:{display:"block",padding:0,height:11,fontSize:"0.75em",visibility:"hidden",maxWidth:.01,transition:e.transitions.create("max-width",{duration:50,easing:e.transitions.easing.easeOut}),whiteSpace:"nowrap","& > span":{paddingLeft:5,paddingRight:5,display:"inline-block",opacity:0,visibility:"visible"}}},{props:({ownerState:e})=>e.withLabel&&e.notched,style:{maxWidth:"100%",transition:e.transitions.create("max-width",{duration:100,easing:e.transitions.easing.easeOut,delay:50})}}]})));function NotchedOutline(e){const{children:t,classes:g,className:n,label:o,notched:a,...C}=e,I=null!=o&&""!==o,i={...e,notched:a,withLabel:I};return(0,ja.jsx)(Bs,{"aria-hidden":!0,className:n,ownerState:i,...C,children:(0,ja.jsx)(Fs,{ownerState:i,children:I?(0,ja.jsx)("span",{children:o}):Os||(Os=(0,ja.jsx)("span",{className:"notranslate","aria-hidden":!0,children:""}))})})}function getOutlinedInputUtilityClass(e){return generateUtilityClass("MuiOutlinedInput",e)}var Ws={...vs,...generateUtilityClasses("MuiOutlinedInput",["root","notchedOutline","input"])},useUtilityClasses$15=e=>{const{classes:t}=e,g=composeClasses({root:["root"],notchedOutline:["notchedOutline"],input:["input"]},getOutlinedInputUtilityClass,t);return{...t,...g}},Vs=sC(ws,{shouldForwardProp:e=>rootShouldForwardProp(e)||"classes"===e,name:"MuiOutlinedInput",slot:"Root",overridesResolver:rootOverridesResolver})(hC(({theme:e})=>{const t="light"===e.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return{position:"relative",borderRadius:(e.vars||e).shape.borderRadius,[`&:hover .${Ws.notchedOutline}`]:{borderColor:(e.vars||e).palette.text.primary},"@media (hover: none)":{[`&:hover .${Ws.notchedOutline}`]:{borderColor:e.vars?e.alpha(e.vars.palette.common.onBackground,.23):t}},[`&.${Ws.focused} .${Ws.notchedOutline}`]:{borderWidth:2},variants:[...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t},style:{[`&.${Ws.focused} .${Ws.notchedOutline}`]:{borderColor:(e.vars||e).palette[t].main}}})),{props:{},style:{[`&.${Ws.error} .${Ws.notchedOutline}`]:{borderColor:(e.vars||e).palette.error.main},[`&.${Ws.disabled} .${Ws.notchedOutline}`]:{borderColor:(e.vars||e).palette.action.disabled}}},{props:({ownerState:e})=>e.startAdornment,style:{paddingLeft:14}},{props:({ownerState:e})=>e.endAdornment,style:{paddingRight:14}},{props:({ownerState:e})=>e.multiline,style:{padding:"16.5px 14px"}},{props:({ownerState:e,size:t})=>e.multiline&&"small"===t,style:{padding:"8.5px 14px"}}]}})),_s=sC(NotchedOutline,{name:"MuiOutlinedInput",slot:"NotchedOutline"})(hC(({theme:e})=>{const t="light"===e.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return{borderColor:e.vars?e.alpha(e.vars.palette.common.onBackground,.23):t}})),Us=sC(ks,{name:"MuiOutlinedInput",slot:"Input",overridesResolver:inputOverridesResolver})(hC(({theme:e})=>({padding:"16.5px 14px","&:-webkit-autofill":{...!e.vars&&{WebkitBoxShadow:"light"===e.palette.mode?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:"light"===e.palette.mode?null:"#fff",caretColor:"light"===e.palette.mode?null:"#fff"},borderRadius:"inherit",...e.vars&&e.applyStyles("dark",{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"})},variants:[{props:{size:"small"},style:{padding:"8.5px 14px"}},{props:({ownerState:e})=>e.multiline,style:{padding:0}},{props:({ownerState:e})=>e.startAdornment,style:{paddingLeft:0}},{props:({ownerState:e})=>e.endAdornment,style:{paddingRight:0}}]}))),Zs=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiOutlinedInput"}),{fullWidth:n=!1,inputComponent:o="input",label:a,multiline:C=!1,notched:I,slots:i={},slotProps:s={},type:c="text",...u}=g,d=useUtilityClasses$15(g),[p,m]=useFormControlState({props:g,states:["color","disabled","error","focused","hiddenLabel","size","required"]}),h={...g,color:p.color||"primary",disabled:p.disabled,error:p.error,focused:p.focused,formControl:m,fullWidth:n,hiddenLabel:p.hiddenLabel,multiline:C,size:p.size,type:c},y=i.root??Vs,b=i.input??Us,[v,x]=useSlot("notchedOutline",{elementType:_s,className:d.notchedOutline,shouldForwardComponentProp:!0,ownerState:h,externalForwardedProps:{slots:i,slotProps:s},additionalProps:{label:null!=a&&""!==a&&p.required?(0,ja.jsxs)(l.Fragment,{children:[a," ","*"]}):a}});return(0,ja.jsx)(Rs,{slots:{root:y,input:b},slotProps:s,renderSuffix:e=>(0,ja.jsx)(v,{...x,notched:void 0!==I?I:Boolean(e.startAdornment||e.filled||e.focused)}),fullWidth:n,inputComponent:o,multiline:C,ref:t,type:c,...u,classes:{...d,notchedOutline:null}})});function getFormLabelUtilityClasses(e){return generateUtilityClass("MuiFormLabel",e)}Zs.muiName="Input";var Ks=generateUtilityClasses("MuiFormLabel",["root","colorSecondary","focused","disabled","error","filled","required","asterisk"]),useUtilityClasses$14=e=>{const{classes:t,color:g,focused:n,disabled:o,error:a,filled:C,required:I}=e;return composeClasses({root:["root",`color${wC(g)}`,o&&"disabled",a&&"error",C&&"filled",n&&"focused",I&&"required"],asterisk:["asterisk",a&&"error"]},getFormLabelUtilityClasses,t)},Hs=sC("label",{name:"MuiFormLabel",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.root,"secondary"===g.color&&t.colorSecondary,g.filled&&t.filled]}})(hC(({theme:e})=>({color:(e.vars||e).palette.text.secondary,...e.typography.body1,lineHeight:"1.4375em",padding:0,position:"relative",variants:[...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t},style:{[`&.${Ks.focused}`]:{color:(e.vars||e).palette[t].main}}})),{props:{},style:{[`&.${Ks.disabled}`]:{color:(e.vars||e).palette.text.disabled},[`&.${Ks.error}`]:{color:(e.vars||e).palette.error.main}}}]}))),Ys=sC("span",{name:"MuiFormLabel",slot:"Asterisk"})(hC(({theme:e})=>({[`&.${Ks.error}`]:{color:(e.vars||e).palette.error.main}}))),useUtilityClasses$13=e=>{const{classes:t,formControl:g,size:n,shrink:o,disableAnimation:a,variant:C,required:I}=e,i=composeClasses({root:["root",g&&"formControl",!a&&"animated",o&&"shrink",n&&"medium"!==n&&`size${wC(n)}`,C],asterisk:[I&&"asterisk"]},getInputLabelUtilityClasses,t);return{...t,...i}},$s=sC(l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiFormLabel"}),{children:n,className:o,color:a,component:C="label",disabled:I,error:i,filled:s,focused:l,required:c,...u}=g,[d]=useFormControlState({props:g,states:["color","required","focused","disabled","error","filled"]}),p={...g,color:d.color||"primary",component:C,disabled:d.disabled,error:d.error,filled:d.filled,focused:d.focused,required:d.required},m=useUtilityClasses$14(p);return(0,ja.jsxs)(Hs,{as:C,ownerState:p,className:clsx(m.root,o),ref:t,...u,children:[n,d.required&&(0,ja.jsxs)(Ys,{ownerState:p,"aria-hidden":!0,className:m.asterisk,children:[" ","*"]})]})}),{shouldForwardProp:e=>rootShouldForwardProp(e)||"classes"===e,name:"MuiInputLabel",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[{[`& .${Ks.asterisk}`]:t.asterisk},t.root,g.formControl&&t.formControl,"small"===g.size&&t.sizeSmall,g.shrink&&t.shrink,!g.disableAnimation&&t.animated,g.focused&&t.focused,t[g.variant]]}})(hC(({theme:e})=>({display:"block",transformOrigin:"top left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%",variants:[{props:({ownerState:e})=>e.formControl,style:{position:"absolute",left:0,top:0,transform:"translate(0, 20px) scale(1)"}},{props:{size:"small"},style:{transform:"translate(0, 17px) scale(1)"}},{props:({ownerState:e})=>e.shrink,style:{transform:"translate(0, -1.5px) scale(0.75)",transformOrigin:"top left",maxWidth:"133%"}},{props:({ownerState:e})=>!e.disableAnimation,style:{transition:e.transitions.create(["color","transform","max-width"],{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut})}},{props:{variant:"filled"},style:{zIndex:1,pointerEvents:"none",transform:"translate(12px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"}},{props:{variant:"filled",size:"small"},style:{transform:"translate(12px, 13px) scale(1)"}},{props:({variant:e,ownerState:t})=>"filled"===e&&t.shrink,style:{userSelect:"none",pointerEvents:"auto",transform:"translate(12px, 7px) scale(0.75)",maxWidth:"calc(133% - 24px)"}},{props:({variant:e,ownerState:t,size:g})=>"filled"===e&&t.shrink&&"small"===g,style:{transform:"translate(12px, 4px) scale(0.75)"}},{props:{variant:"outlined"},style:{zIndex:1,pointerEvents:"none",transform:"translate(14px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"}},{props:{variant:"outlined",size:"small"},style:{transform:"translate(14px, 9px) scale(1)"}},{props:({variant:e,ownerState:t})=>"outlined"===e&&t.shrink,style:{userSelect:"none",pointerEvents:"auto",maxWidth:"calc(133% - 32px)",transform:"translate(14px, -9px) scale(0.75)"}}]}))),Qs=l.forwardRef(function(e,t){const g=useDefaultProps({name:"MuiInputLabel",props:e}),{disableAnimation:n=!1,margin:o,shrink:a,variant:C,className:I,...i}=g,[s,l]=useFormControlState({props:g,states:["size","variant","required","focused"]});let c=a;void 0===c&&l&&(c=l.filled||l.focused||l.adornedStart);const u={...g,disableAnimation:n,formControl:l,shrink:c,size:s.size,variant:s.variant,required:s.required,focused:s.focused},d=useUtilityClasses$13(u);return(0,ja.jsx)($s,{"data-shrink":c,ref:t,className:clsx(d.root,I),...i,ownerState:u,classes:d})});function getFormControlUtilityClasses(e){return generateUtilityClass("MuiFormControl",e)}generateUtilityClasses("MuiFormControl",["root","marginNone","marginNormal","marginDense","fullWidth","disabled"]);var useUtilityClasses$12=e=>{const{classes:t,margin:g,fullWidth:n}=e;return composeClasses({root:["root","none"!==g&&`margin${wC(g)}`,n&&"fullWidth"]},getFormControlUtilityClasses,t)},Xs=sC("div",{name:"MuiFormControl",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.root,t[`margin${wC(g.margin)}`],g.fullWidth&&t.fullWidth]}})({display:"inline-flex",flexDirection:"column",position:"relative",minWidth:0,padding:0,margin:0,border:0,verticalAlign:"top",variants:[{props:{margin:"normal"},style:{marginTop:16,marginBottom:8}},{props:{margin:"dense"},style:{marginTop:8,marginBottom:4}},{props:{fullWidth:!0},style:{width:"100%"}}]}),Js=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiFormControl"}),{children:n,className:o,color:a="primary",component:C="div",disabled:I=!1,error:i=!1,focused:s,fullWidth:c=!1,hiddenLabel:u=!1,margin:d="none",required:p=!1,size:m="medium",variant:h="outlined",...y}=g,b={...g,color:a,component:C,disabled:I,error:i,fullWidth:c,hiddenLabel:u,margin:d,required:p,size:m,variant:h},v=useUtilityClasses$12(b),[x,S]=l.useState(()=>{let e=!1;return n&&l.Children.forEach(n,t=>{if(!Si(t,["Input","Select"]))return;const g=Si(t,["Select"])?t.props.input:t;g&&isAdornedStart(g.props)&&(e=!0)}),e}),[w,E]=l.useState(()=>{let e=!1;return n&&l.Children.forEach(n,t=>{Si(t,["Input","Select"])&&(isFilled(t.props,!0)||isFilled(t.props.inputProps,!0))&&(e=!0)}),e}),[R,T]=l.useState(!1);I&&R&&T(!1);const M=void 0===s||I?R:s;let P;l.useRef(!1);const N=l.useCallback(()=>{E(!0)},[]),O=l.useCallback(()=>{E(!1)},[]),D=l.useMemo(()=>({adornedStart:x,setAdornedStart:S,color:a,disabled:I,error:i,filled:w,focused:M,fullWidth:c,hiddenLabel:u,size:m,onBlur:()=>{T(!1)},onFocus:()=>{T(!0)},onEmpty:O,onFilled:N,registerEffect:P,required:p,variant:h}),[x,a,I,i,w,M,c,u,P,O,N,p,m,h]);return(0,ja.jsx)(os.Provider,{value:D,children:(0,ja.jsx)(Xs,{as:C,ownerState:b,className:clsx(v.root,o),ref:t,...y,children:n})})});function getFormHelperTextUtilityClasses(e){return generateUtilityClass("MuiFormHelperText",e)}var qs,el=generateUtilityClasses("MuiFormHelperText",["root","error","disabled","sizeSmall","sizeMedium","contained","focused","filled","required"]),useUtilityClasses$11=e=>{const{classes:t,contained:g,size:n,disabled:o,error:a,filled:C,focused:I,required:i}=e;return composeClasses({root:["root",o&&"disabled",a&&"error",n&&`size${wC(n)}`,g&&"contained",I&&"focused",C&&"filled",i&&"required"]},getFormHelperTextUtilityClasses,t)},tl=sC("p",{name:"MuiFormHelperText",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.root,g.size&&t[`size${wC(g.size)}`],g.contained&&t.contained,g.filled&&t.filled]}})(hC(({theme:e})=>({color:(e.vars||e).palette.text.secondary,...e.typography.caption,textAlign:"left",marginTop:3,marginRight:0,marginBottom:0,marginLeft:0,[`&.${el.disabled}`]:{color:(e.vars||e).palette.text.disabled},[`&.${el.error}`]:{color:(e.vars||e).palette.error.main},variants:[{props:{size:"small"},style:{marginTop:4}},{props:({ownerState:e})=>e.contained,style:{marginLeft:14,marginRight:14}}]}))),gl=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiFormHelperText"}),{children:n,className:o,component:a="p",disabled:C,error:I,filled:i,focused:s,margin:l,required:c,variant:u,...d}=g,[p]=useFormControlState({props:g,states:["variant","size","disabled","error","filled","focused","required"]}),m={...g,component:a,contained:"filled"===p.variant||"outlined"===p.variant,variant:p.variant,size:p.size,disabled:p.disabled,error:p.error,filled:p.filled,focused:p.focused,required:p.required};return delete m.ownerState,(0,ja.jsx)(tl,{as:a,className:clsx(useUtilityClasses$11(m).root,o),ref:t,...d,ownerState:m,children:" "===n?qs||(qs=(0,ja.jsx)("span",{className:"notranslate","aria-hidden":!0,children:""})):n})});function getNativeSelectUtilityClasses(e){return generateUtilityClass("MuiNativeSelect",e)}var nl=generateUtilityClasses("MuiNativeSelect",["root","select","multiple","filled","outlined","standard","disabled","icon","iconOpen","iconFilled","iconOutlined","iconStandard","nativeInput","error"]),useUtilityClasses$10=e=>{const{classes:t,variant:g,disabled:n,multiple:o,open:a,error:C}=e;return composeClasses({select:["select",g,n&&"disabled",o&&"multiple",C&&"error"],icon:["icon",`icon${wC(g)}`,a&&"iconOpen",n&&"disabled"]},getNativeSelectUtilityClasses,t)},rl=sC("select",{name:"MuiNativeSelect"})(({theme:e})=>({MozAppearance:"none",WebkitAppearance:"none",userSelect:"none",borderRadius:0,cursor:"pointer","&:focus":{borderRadius:0},[`&.${nl.disabled}`]:{cursor:"default"},"&[multiple]":{height:"auto"},"&:not([multiple]) option, &:not([multiple]) optgroup":{backgroundColor:(e.vars||e).palette.background.paper},variants:[{props:({ownerState:e})=>"filled"!==e.variant&&"outlined"!==e.variant,style:{"&&&":{paddingRight:24,minWidth:16}}},{props:{variant:"filled"},style:{"&&&":{paddingRight:32}}},{props:{variant:"outlined"},style:{borderRadius:(e.vars||e).shape.borderRadius,"&:focus":{borderRadius:(e.vars||e).shape.borderRadius},"&&&":{paddingRight:32}}}]})),ol=sC(rl,{name:"MuiNativeSelect",slot:"Select",shouldForwardProp:rootShouldForwardProp,overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.select,t[g.variant],g.error&&t.error,{[`&.${nl.multiple}`]:t.multiple}]}})({}),al=sC("svg",{name:"MuiNativeSelect"})(({theme:e})=>({position:"absolute",right:0,top:"calc(50% - .5em)",pointerEvents:"none",color:(e.vars||e).palette.action.active,[`&.${nl.disabled}`]:{color:(e.vars||e).palette.action.disabled},variants:[{props:({ownerState:e})=>e.open,style:{transform:"rotate(180deg)"}},{props:{variant:"filled"},style:{right:7}},{props:{variant:"outlined"},style:{right:7}}]})),Al=sC(al,{name:"MuiNativeSelect",slot:"Icon",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.icon,g.variant&&t[`icon${wC(g.variant)}`],g.open&&t.iconOpen]}})({}),Cl=l.forwardRef(function(e,t){const{className:g,disabled:n,error:o,IconComponent:a,inputRef:C,variant:I="standard",...i}=e,s={...e,disabled:n,variant:I,error:o},c=useUtilityClasses$10(s);return(0,ja.jsxs)(l.Fragment,{children:[(0,ja.jsx)(ol,{ownerState:s,className:clsx(c.select,g),disabled:n,ref:C||t,...i}),e.multiple?null:(0,ja.jsx)(Al,{as:a,ownerState:s,className:c.icon})]})});function getSelectUtilityClasses(e){return generateUtilityClass("MuiSelect",e)}var Il,il=generateUtilityClasses("MuiSelect",["root","select","multiple","filled","outlined","standard","disabled","focused","icon","iconOpen","nativeInput","error"]),sl=2,ll=400,cl=200;function isMouseEventInsideElement(e,t){if(!t)return!1;if(e.composedPath().includes(t))return!0;if(e.target?.nodeType&&t.contains(e.target))return!0;const g=t.getBoundingClientRect();return(0!==g.width||0!==g.height)&&e.clientX>=g.left-sl&&e.clientX<=g.right+sl&&e.clientY>=g.top-sl&&e.clientY<=g.bottom+sl}var ul=sC(rl,{name:"MuiSelect",slot:"Select",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[{[`&.${il.select}`]:t.select},{[`&.${il.select}`]:t[g.variant]},{[`&.${il.error}`]:t.error},{[`&.${il.multiple}`]:t.multiple}]}})({[`&.${il.select}`]:{height:"auto",minHeight:"1.4375em",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"}}),dl=sC(al,{name:"MuiSelect",slot:"Icon",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.icon,g.open&&t.iconOpen]}})({}),pl=sC("input",{shouldForwardProp:e=>slotShouldForwardProp(e)&&"classes"!==e,name:"MuiSelect",slot:"NativeInput"})({bottom:0,left:0,position:"absolute",opacity:0,pointerEvents:"none",width:"100%",boxSizing:"border-box"}),useUtilityClasses$9=e=>{const{classes:t,variant:g,disabled:n,multiple:o,open:a,error:C}=e;return composeClasses({select:["select",g,n&&"disabled",o&&"multiple",C&&"error"],icon:["icon",a&&"iconOpen",n&&"disabled"],nativeInput:["nativeInput"]},getSelectUtilityClasses,t)},ml=l.forwardRef(function(e,t){const{"aria-describedby":g,"aria-label":n,autoFocus:o,autoWidth:a,children:C,className:I,defaultOpen:i,defaultValue:s,disabled:c,displayEmpty:u,error:d=!1,IconComponent:p,inputRef:m,labelId:h,MenuProps:y={},multiple:b,name:v,onBlur:x,onChange:S,onClose:w,onFocus:E,onKeyDown:R,onMouseDown:T,onOpen:M,open:P,readOnly:N,renderValue:O,required:D,SelectDisplayProps:j={},tabIndex:L,type:G,value:B,variant:F="standard",...W}=e,[V,U]=wi({controlled:B,default:s,name:"Select"}),[Z,K]=wi({controlled:P,default:i,name:"Select"}),H=l.useRef(null),Y=l.useRef(null),$=l.useRef(null),Q=l.useRef(!1),X=l.useRef(!1),J=l.useRef(null),q=l.useRef(!1),ee=l.useRef({allowSelectedMouseUp:!1,allowUnselectedMouseUp:!1}),te=useTimeout(),ge=useTimeout(),[ne,re]=l.useState(null),{current:oe}=l.useRef(null!=P),[ae,Ae]=l.useState(),[Ce,Ie]=l.useState(null),ie=nI(t,m),se=l.useCallback(e=>{Y.current=e,e&&re(e)},[]),le=ne?.parentNode;l.useImperativeHandle(ie,()=>({focus:()=>{Y.current.focus()},node:H.current,value:V}),[V]);const ce=null!==ne&&Z;rI(()=>{Q.current=ce},[ce]);const ue=l.useCallback(()=>{te.clear(),ge.clear()},[te,ge]),de=l.useCallback(()=>{ue(),q.current=!1,ee.current={allowSelectedMouseUp:!1,allowUnselectedMouseUp:!1}},[ue]),pe=l.useCallback(()=>{J.current&&(J.current(),J.current=null)},[]);l.useEffect(()=>{ce||(de(),pe())},[ce,de,pe]),l.useEffect(()=>()=>{de(),pe()},[de,pe]),l.useEffect(()=>{if(!ce||!le||a)return;if("undefined"==typeof ResizeObserver)return;const e=new ResizeObserver(()=>{Ae(le.clientWidth)});return e.observe(le),()=>{e.disconnect()}},[ce,le,a]),l.useEffect(()=>{i&&Z&&ne&&!oe&&(Ae(a?null:le.clientWidth),Y.current.focus())},[ne,a]),l.useEffect(()=>{o&&Y.current.focus()},[o]),l.useEffect(()=>{if(!h)return;const e=qC(Y.current).getElementById(h);if(e){const handler=()=>{getSelection().isCollapsed&&Y.current.focus()};return e.addEventListener("click",handler),()=>{e.removeEventListener("click",handler)}}},[h]);const me=gI((e,t)=>{e||(de(),pe()),e?(Ie(getOpenInteractionType(t)),M&&M(t)):(Ie(null),w&&w(t)),oe||(Q.current=e,Ae(a?null:le.clientWidth),K(e))}),scheduleMouseUpSelection=()=>{de(),X.current?ge.start(cl,()=>{ee.current.allowUnselectedMouseUp=!0,te.start(cl,()=>{ee.current.allowSelectedMouseUp=!0})}):te.start(ll,()=>{ee.current.allowSelectedMouseUp=!0,ee.current.allowUnselectedMouseUp=!0})},handleMouseDown=e=>{if(T?.(e),0!==e.button)return;e.preventDefault(),Y.current.focus();const t=qC(e.currentTarget);scheduleMouseUpSelection(),pe();const handleMouseUp=e=>{J.current=null,Y.current&&(isMouseEventInsideElement(e,Y.current)||isMouseEventInsideElement(e,$.current)||!Q.current&&oe||me(!1,e))};t.addEventListener("mouseup",handleMouseUp,{capture:!0,once:!0}),J.current=()=>{t.removeEventListener("mouseup",handleMouseUp,!0)},me(!0,e)},handleClose=e=>{me(!1,e)},fe=l.Children.toArray(C),handleChange=e=>{const t=fe.find(t=>t.props.value===e.target.value);void 0!==t&&(U(t.props.value),S&&S(e,t))},handleItemClick=e=>t=>{let g;if(q.current=!1,t.currentTarget.hasAttribute("tabindex")){if(b){g=Array.isArray(V)?V.slice():[];const t=V.indexOf(e.props.value);-1===t?g.push(e.props.value):g.splice(t,1)}else g=e.props.value;if(e.props.onClick&&e.props.onClick(t),V!==g&&(U(g),S)){const n=t.nativeEvent||t,o=new n.constructor(n.type,n);Object.defineProperty(o,"target",{writable:!0,value:{value:g,name:v}}),S(o,e)}b||me(!1,t)}},handleItemMouseUp=(e,t)=>g=>{if(e.props.onMouseUp?.(g),q.current)return void(q.current=!1);const n=!ee.current.allowSelectedMouseUp&&t,o=!ee.current.allowUnselectedMouseUp&&!t;n||o||g.currentTarget.click()},handleKeyDown=e=>{N||([" ","ArrowUp","ArrowDown","Enter"].includes(e.key)&&(e.preventDefault(),me(!0,e)),R?.(e))},handleBlur=e=>{!ce&&x&&(Object.defineProperty(e,"target",{writable:!0,value:{value:V,name:v}}),x(e))};let he,ye;delete W["aria-invalid"];const be=[];let ve=!1,xe=!1;(isFilled({value:V})||u)&&(O?he=O(V):ve=!0);const Se=fe.map(e=>{if(!l.isValidElement(e))return null;let t;if(b){if(!Array.isArray(V))throw new Error(formatMuiErrorMessage(2));t=V.some(t=>areEqualValues(t,e.props.value)),t&&ve&&be.push(e.props.children)}else t=areEqualValues(V,e.props.value),t&&ve&&(ye=e.props.children);return t&&(xe=!0),l.cloneElement(e,{"aria-selected":t?"true":"false",onMouseDown:t=>{q.current=!0,e.props.onMouseDown?.(t)},onPointerDown:t=>{q.current=!0,e.props.onPointerDown?.(t)},onClick:handleItemClick(e),onMouseUp:handleItemMouseUp(e,t),onKeyUp:t=>{" "===t.key&&t.preventDefault(),e.props.onKeyUp&&e.props.onKeyUp(t)},role:"option",selected:t,value:void 0,"data-value":e.props.value})});rI(()=>{X.current=xe},[xe]),ve&&(he=b?0===be.length?null:be.reduce((e,t,g)=>(e.push(t),g<be.length-1&&e.push(", "),e),[]):ye);let we,ke=ae;!a&&oe&&ne&&(ke=le.clientWidth),we=void 0!==L?L:c?null:0;const Ee=j.id||(v?`mui-component-select-${v}`:void 0),Re={...e,variant:F,value:V,open:ce,error:d},Te=useUtilityClasses$9(Re),Me="function"==typeof y.slotProps?.paper?y.slotProps.paper(Re):y.slotProps?.paper,Pe=nI(Me?.ref,$),Ne="function"==typeof y.slotProps?.list?y.slotProps.list(Re):y.slotProps?.list,ze=useId$1(),Oe=useId$1();return(0,ja.jsxs)(l.Fragment,{children:[(0,ja.jsx)(ul,{as:"div",ref:se,tabIndex:we,role:"combobox","aria-controls":ce?ze:void 0,"aria-disabled":c?"true":void 0,"aria-expanded":ce?"true":"false","aria-haspopup":"listbox","aria-label":n,"aria-labelledby":h,"aria-describedby":g,"aria-required":D?"true":void 0,"aria-invalid":d?"true":void 0,onKeyDown:handleKeyDown,onMouseDown:c||N?null:handleMouseDown,onBlur:handleBlur,onFocus:E,...j,ownerState:Re,className:clsx(j.className,Te.select,I),id:Ee,children:isEmpty$1(he)?Il||(Il=(0,ja.jsx)("span",{className:"notranslate","aria-hidden":!0,children:""})):he}),(0,ja.jsx)(pl,{"aria-invalid":d,value:Array.isArray(V)?V.join(","):V,name:v,ref:H,"aria-hidden":!0,onChange:handleChange,tabIndex:-1,disabled:c,className:Te.nativeInput,autoFocus:o,required:D,...W,id:W.id??Oe,ownerState:Re}),(0,ja.jsx)(dl,{as:p,className:Te.icon,ownerState:Re}),(0,ja.jsx)(iI,{value:Ce,children:(0,ja.jsx)(JI,{id:`menu-${v||""}`,anchorEl:le,open:ce,onClose:handleClose,anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},...y,slotProps:{...y.slotProps,list:{"aria-labelledby":h,role:"listbox","aria-multiselectable":b?"true":void 0,disableListWrap:!0,id:ze,...Ne},paper:{...Me,ref:Pe,style:{minWidth:ke,...Me?.style}}},children:Se})})]})}),fl=createSvgIcon((0,ja.jsx)("path",{d:"M7 10l5 5 5-5z"}),"ArrowDropDown"),useUtilityClasses$8=e=>{const{classes:t}=e,g=composeClasses({root:["root"]},getSelectUtilityClasses,t);return{...t,...g}},hl={name:"MuiSelect",slot:"Root",shouldForwardProp:e=>rootShouldForwardProp(e)&&"variant"!==e},yl=sC(zs,hl)(""),bl=sC(Zs,hl)(""),vl=sC(Gs,hl)(""),xl=l.forwardRef(function(e,t){const g=useDefaultProps({name:"MuiSelect",props:e}),{autoWidth:n=!1,children:o,classes:a={},className:C,defaultOpen:I=!1,displayEmpty:i=!1,IconComponent:s=fl,id:c,input:u,inputProps:d,label:p,labelId:m,MenuProps:h,multiple:y=!1,native:b=!1,onClose:v,onOpen:x,open:S,renderValue:w,SelectDisplayProps:E,variant:R="outlined",...T}=g,M=b?Cl:ml,[P]=useFormControlState({props:g,states:["variant","error"]}),N=P.variant||R,O={...g,variant:N,classes:a},D=useUtilityClasses$8(O),{root:j,...L}=D,G=u||{standard:(0,ja.jsx)(yl,{ownerState:O}),outlined:(0,ja.jsx)(bl,{label:p,ownerState:O}),filled:(0,ja.jsx)(vl,{ownerState:O})}[N],B=nI(t,getReactElementRef(G));return(0,ja.jsx)(l.Fragment,{children:l.cloneElement(G,{inputComponent:M,inputProps:{children:o,error:P.error,IconComponent:s,variant:N,type:void 0,multiple:y,...b?{id:c}:{autoWidth:n,defaultOpen:I,displayEmpty:i,labelId:m,MenuProps:h,onClose:v,onOpen:x,open:S,renderValue:w,SelectDisplayProps:{id:c,...E}},...d,classes:d?deepmerge(L,d.classes):L,...u?u.props.inputProps:{}},...(y&&b||i)&&"outlined"===N?{notched:!0}:{},ref:B,className:clsx(G.props.className,C,D.root),...!u&&{variant:N},...T})})});function getTextFieldUtilityClass(e){return generateUtilityClass("MuiTextField",e)}xl.muiName="Select",generateUtilityClasses("MuiTextField",["root"]);var Sl={standard:zs,filled:Gs,outlined:Zs},useUtilityClasses$7=e=>{const{classes:t}=e;return composeClasses({root:["root"]},getTextFieldUtilityClass,t)},wl=sC(Js,{name:"MuiTextField",slot:"Root"})({}),kl=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiTextField"}),{autoComplete:n,autoFocus:o=!1,children:a,className:C,color:I="primary",defaultValue:i,disabled:s=!1,error:l=!1,fullWidth:c=!1,helperText:u,id:d,inputRef:p,label:m,maxRows:h,minRows:y,multiline:b=!1,name:v,onBlur:x,onChange:S,onFocus:w,placeholder:E,required:R=!1,rows:T,select:M=!1,slots:P={},slotProps:N={},type:O,value:D,variant:j="outlined",...L}=g,G={...g,autoFocus:o,color:I,disabled:s,error:l,fullWidth:c,multiline:b,required:R,select:M,variant:j},B=useUtilityClasses$7(G),F=useId$1(d),W=u&&F?`${F}-helper-text`:void 0,V=m&&F?`${F}-label`:void 0,U=Sl[j],Z={slots:P,slotProps:N},[K,H]=useSlot("select",{elementType:xl,externalForwardedProps:Z,ownerState:G}),Y=M&&H.native,$={},Q=Z.slotProps.inputLabel;"outlined"===j&&(Q&&void 0!==Q.shrink&&($.notched=Q.shrink),$.label=m),M&&(Y||($.id=void 0),$["aria-describedby"]=void 0);const[X,J]=useSlot("root",{elementType:wl,shouldForwardComponentProp:!0,externalForwardedProps:{...Z,...L},ownerState:G,className:clsx(B.root,C),ref:t,additionalProps:{disabled:s,error:l,fullWidth:c,required:R,color:I,variant:j}}),[q,ee]=useSlot("input",{elementType:U,externalForwardedProps:Z,additionalProps:$,ownerState:G}),[te,ge]=useSlot("inputLabel",{elementType:Qs,externalForwardedProps:Z,ownerState:G}),[ne,re]=useSlot("htmlInput",{elementType:"input",externalForwardedProps:Z,ownerState:G}),[oe,ae]=useSlot("formHelperText",{elementType:gl,externalForwardedProps:Z,ownerState:G}),Ae=(0,ja.jsx)(q,{"aria-describedby":W,autoComplete:n,autoFocus:o,defaultValue:i,fullWidth:c,multiline:b,name:v,rows:T,maxRows:h,minRows:y,type:O,value:D,id:F,inputRef:p,onBlur:x,onChange:S,onFocus:w,placeholder:E,inputProps:re,slots:{input:P.htmlInput?ne:void 0},...ee});return(0,ja.jsxs)(X,{...J,children:[null!=m&&""!==m&&(0,ja.jsx)(te,{htmlFor:M&&!Y?void 0:F,id:V,...M&&!Y&&{component:"div"},...ge,children:m}),M?(0,ja.jsx)(K,{"aria-describedby":W,id:F,labelId:V,value:D,input:Ae,...H,children:a}):Ae,u&&(0,ja.jsx)(oe,{id:W,...ae,children:u})]})}),El=600,Rl=400,clampScrollbackGeometryValue=(e,t,g)=>Math.min(Math.max(e,t),g),parseStoredValue=e=>{if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return e}},hasUsablePersistenceAdapter=e=>"function"==typeof e?.getVariable&&"function"==typeof e?.setVariable,hasSavedGeometry=e=>!!hasUsablePersistenceAdapter(e)&&isPlainObject$2(parseStoredValue((e.getVariable("nexGui4Settings")||{})[Br.UI])?.scrollbackModal),getScrollbackViewportBounds=()=>"undefined"==typeof window?{width:800,height:600}:{width:Math.max(320,window.innerWidth),height:Math.max(240,window.innerHeight)},getMinimumScrollbackGeometry=()=>{const e=getScrollbackViewportBounds();return{width:Math.min(El,e.width),height:Math.min(Rl,e.height)}},getDefaultScrollbackGeometry=()=>{const e=getScrollbackViewportBounds(),t=getMinimumScrollbackGeometry(),g=clampScrollbackGeometryValue(Math.round(.7*e.width),t.width,e.width),n=clampScrollbackGeometryValue(Math.round(.7*e.height),t.height,e.height);return{x:Math.round((e.width-g)/2),y:Math.round((e.height-n)/2),width:g,height:n}},normalizeScrollbackGeometry=e=>{const t=getDefaultScrollbackGeometry(),g=getScrollbackViewportBounds(),n=getMinimumScrollbackGeometry(),o=clampScrollbackGeometryValue(Number(e?.width)||t.width,n.width,g.width),a=clampScrollbackGeometryValue(Number(e?.height)||t.height,n.height,g.height);return{x:clampScrollbackGeometryValue(Number(e?.x)||0,0,Math.max(0,g.width-o)),y:clampScrollbackGeometryValue(Number(e?.y)||0,0,Math.max(0,g.height-a)),width:o,height:a}},useScrollbackLayout=()=>{const e=(0,l.useContext)(Mo),t=e?.adapter,g=e?.scrollbackLayoutStore,n=e?.persistenceStore?.getAll?.()?.ui??{},o=(0,l.useMemo)(()=>g&&hasSavedGeometry(t)?normalizeScrollbackGeometry(g.get("scrollbackModal")):getDefaultScrollbackGeometry(),[t,g]),a=(0,l.useCallback)(e=>{g?.set("scrollbackModal",normalizeScrollbackGeometry(e))},[g]);return{focusHostInput:(0,l.useCallback)(()=>{t?.focusInput?.()},[t]),initialGeometry:o,persistGeometry:a,useVirtualizedLogs:Boolean(n.virtualizedLogs)}},Tl=.8,useScrollbackHydration=({items:e,open:t,scrollbackSession:g,getViewportElement:n,dispatchViewportScroll:o,setScrollLock:a,onViewportOpened:C})=>{const[I,i]=(0,l.useState)([]),[s,c]=(0,l.useState)(!1),[u,d]=(0,l.useState)(!0),p=(0,l.useRef)([]);p.current=I;const m=(0,l.useRef)({hasMore:!0,isLoading:!1});m.current={hasMore:u,isLoading:s},(0,l.useEffect)(()=>{if(!t)return i([]),void d(!0);i(t=>{if(0===e.length)return[];if(0===t.length)return[...e];const g=t[t.length-1]?.id??-1,n=e.filter(e=>e.id>g);return n.length>0?[...t,...n]:t})},[e,t]);const h=(0,l.useCallback)(async()=>{if(!m.current.hasMore||m.current.isLoading)return;const e=p.current[0]?.id;if(void 0===e||e<=0)return m.current={...m.current,hasMore:!1},void d(!1);if(!g?.readRange)return m.current={...m.current,hasMore:!1},void d(!1);m.current={...m.current,isLoading:!0},c(!0);try{const t=Math.max(0,e-500),o=e-1,a=await g.readRange(t,o);if(0===a.length)return m.current={...m.current,hasMore:!1},void d(!1);i(e=>{const t=new Set(e.map(e=>e.id));return[...a.filter(e=>!t.has(e.id)),...e]});const C=n();if(C){const e=C.scrollHeight,t=C.scrollTop;window.requestAnimationFrame(()=>{C.scrollTop=t+(C.scrollHeight-e)})}}catch(t){console.error("[nexGui4] Failed to load older lines",t)}finally{m.current={...m.current,isLoading:!1},c(!1)}},[n,g]);return(0,l.useEffect)(()=>{if(!t)return;let e=!0,g=null,I=null;const i=window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>{if(!e)return;const t=n();if(!t)return;g=t;const i=Math.max(0,t.scrollHeight-t.clientHeight),s=t.clientHeight*Tl,l=Math.max(0,i-s);t.scrollTop=l,o(t),a(l<i),C?.(),I=()=>{const{hasMore:e,isLoading:g}=m.current;t.scrollTop<300&&e&&!g&&h()},t.addEventListener("scroll",I,{passive:!0})})});return()=>{e=!1,window.cancelAnimationFrame(i),g&&I&&g.removeEventListener("scroll",I)}},[o,n,h,C,t,a]),{hydratedItems:I,hasMore:u,isLoadingMore:s}},useScrollbackSearch=({scrollbackSession:e,open:t,showPrompts:g,onCursorChange:n})=>{const[o,a]=(0,l.useState)(""),[C,I]=(0,l.useState)(""),[i,s]=(0,l.useState)([]),[c,u]=(0,l.useState)(!1),[d,p]=(0,l.useState)(-1),m=(0,l.useCallback)(()=>{a(""),I(""),p(-1)},[]);(0,l.useEffect)(()=>{t||(m(),s([]),u(!1))},[t,m]),(0,l.useEffect)(()=>{if(!C)return s([]),void u(!1);let t=!0;return u(!0),(async()=>{try{if(e?.search){const g=await e.search(C,{includePrompts:!0});return void(t&&s(g))}t&&s([])}catch(g){console.error("[nexGui4] Failed searching scrollback session",g)}finally{t&&u(!1)}})(),()=>{t=!1}},[C,e]);const h=(0,l.useMemo)(()=>C?g?i:i.filter(e=>!e.isPrompt):[],[C,i,g]),y=h.length;(0,l.useEffect)(()=>{t&&C&&0!==y?(p(0),n?.(0)):p(-1)},[C,n,t,y]);const b=(0,l.useCallback)(e=>{a(e.target.value)},[]),v=(0,l.useCallback)(e=>{if("Enter"!==e.key)return;const t=e.target.value??"";if(t!==C)return void I(t);if(0===y)return;const g=d+1>=y?0:d+1;p(g),n?.(g)},[C,n,d,y]),x=C.length>0,S=x&&o.length>0&&0===y;return{searchBarText:o,setSearchBarText:a,committedSearchTerm:C,searchResults:h,isSearching:c,isSearchActive:x,searchMatchCount:y,searchCursor:d,hasNoMatch:S,searchStatusText:c?"Searching...":S?"No match":y>0&&d>=0?`${d+1}/${y}`:"",resetSearch:m,handleSearchInput:b,handleSearchKeyDown:v}},Ml=1500,useScrollbackSelection=({visibleItems:e})=>{const[t,g]=(0,l.useState)(null),[n,o]=(0,l.useState)(null),[a,C]=(0,l.useState)(!1),I=(0,l.useRef)({a:null,b:null});I.current={a:t,b:n};const i=(0,l.useCallback)(e=>{const{a:t,b:n}=I.current;t===e||n===e?(g(null),o(null)):null===t?g(e):null===n?o(e):(g(e),o(null))},[]),s=(0,l.useMemo)(()=>{if(null==t||null==n)return null;const g=Math.min(t,n),o=Math.max(t,n);return e.filter(e=>e.id>=g&&e.id<=o)},[t,n,e]);return{selectionA:t,selectionB:n,selectedRangeItems:s,copyConfirmed:a,handleLineSelect:i,handleCopyRange:(0,l.useCallback)(async()=>{if(!s?.length)return;const e=s.map(e=>stripHtml(e.html)).join("\n");try{await navigator.clipboard.writeText(e),C(!0),window.setTimeout(()=>C(!1),Ml)}catch{}},[s]),isLineSelected:(0,l.useCallback)(e=>{const g=e===t||e===n;return null==t||null==n?{isEndpoint:g,inRange:!1}:{isEndpoint:g,inRange:e>=Math.min(t,n)&&e<=Math.max(t,n)}},[t,n])}},Pl="nexgui4-log.html",Nl="text/html;charset=utf-8",toDate=e=>{if(e instanceof Date)return Number.isNaN(e.getTime())?null:e;if("number"==typeof e&&Number.isFinite(e)){const t=new Date(e);return Number.isNaN(t.getTime())?null:t}return null},formatTimestamp$1=e=>{const t="string"==typeof e&&e.trim().length>0?e:null;if(t)return t;const g=toDate(e)??new Date,pad=(e,t=2)=>String(e).padStart(t,"0");return[pad(g.getHours()),pad(g.getMinutes()),pad(g.getSeconds())].join(":")+`.${pad(g.getMilliseconds(),3)}`},formatLogDate=(e=new Date)=>`${e.getFullYear()}-${e.getMonth()+1}-${e.getDate()}`,resolveCssFontSize$1=e=>null==e?"14px":"number"==typeof e?`${e}px`:String(e),collectPaletteCss=()=>{if("undefined"==typeof document)return"";try{return Array.from(document.getElementById("ng-palette")?.sheet?.cssRules??[]).map(e=>e.cssText).join("\n")}catch{return""}},collectNexGuiStyles=()=>"undefined"==typeof document?"":document.getElementById("nexGuicss")?.outerHTML??"",normalizeLogLine=(e,t)=>({html:String(e?.html??""),id:Number.isFinite(Number(e?.id))&&null!==e?.id?Number(e.id):t,isMonospace:Boolean(e?.isMonospace),isPrompt:Boolean(e?.isPrompt),shouldLog:Boolean(e?.shouldLog),timestamp:formatTimestamp$1(e?.timestamp)}),normalizeLogLines=e=>e.map((e,t)=>normalizeLogLine(e,t)),serializeJsonForInlineScript=e=>JSON.stringify(e).replace(/</g,"\\u003c").replace(/>/g,"\\u003e").replace(/&/g,"\\u0026").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029"),buildLogTitle=e=>e&&String(e).trim().length>0?String(e):`nexGui4 Scrollback - ${formatLogDate()}`,buildBaseStyle=({fontFamily:e,fontSize:t})=>`\n html,\n body {\n background: black;\n color: #ccc;\n margin: 0;\n min-height: 100%;\n }\n\n body {\n box-sizing: border-box;\n font-family: ${e};\n font-size: ${t};\n padding: 12px;\n }\n\n .nexgui4-log-line {\n box-sizing: border-box;\n font-family: ${e};\n font-size: ${t};\n line-height: 1.2;\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n }\n\n .nexgui4-log-line.mono,\n .nexgui4-log-line .mono {\n font-family: ${e};\n }\n\n .nexgui4-log-timestamp {\n color: #555;\n font-family: ${e};\n margin-right: 1ch;\n }\n\n .nexgui4-log-payload {\n min-width: 0;\n }\n`,buildHead=({title:e,fontFamily:t,fontSize:g})=>{const n=collectPaletteCss(),o=collectNexGuiStyles();return`<head>\n <meta charset="utf-8" />\n <title>${escapeHtml(e)}</title>\n <style>\n${buildBaseStyle({fontFamily:t,fontSize:g})}\n </style>\n <style id="ng-palette">${n}</style>\n ${o}\n </head>`},buildLogLineClassName=e=>["nexgui4-log-line",e.isPrompt?"prompt textline":"textline",e.isMonospace?"mono":null].filter(Boolean).join(" "),renderStaticLogRow=e=>`<div class="${buildLogLineClassName(e)}"><span class="nexgui4-log-timestamp timestamp mono no_out">${escapeHtml(e.timestamp)} </span><span class="nexgui4-log-payload">${e.html}</span></div>`,buildStandardHtmlLog=(e,{fontFamily:t=Dr,fontSize:g,title:n}={})=>{const o=resolveCssFontSize$1(g),a=buildLogTitle(n),C=normalizeLogLines(e).map(renderStaticLogRow).join("\n");return`<!doctype html>\n<html>\n ${buildHead({title:a,fontFamily:t,fontSize:o})}\n <body>\n${C}\n </body>\n</html>`},buildVirtualizedLogScript=(e,t)=>`\n (() => {\n const allLines = ${serializeJsonForInlineScript(e)};\n const viewport = document.getElementById("nexgui4-log-viewport");\n const spacer = document.getElementById("nexgui4-log-spacer");\n const rows = document.getElementById("nexgui4-log-rows");\n const searchInput = document.getElementById("nexgui4-log-search");\n const status = document.getElementById("nexgui4-log-search-status");\n const timestampToggle = document.getElementById("nexgui4-log-timestamps");\n const promptToggle = document.getElementById("nexgui4-log-prompts");\n\n let showTimestamps = true;\n let showPrompts = true;\n let displayLines = allLines;\n let heights = [];\n let offsets = [];\n let searchTerm = "";\n let searchMatches = [];\n let searchIndex = -1;\n let renderFrame = 0;\n const overscan = 8;\n const lineTextCache = new WeakMap();\n const textProbe = document.createElement("div");\n\n const estimate = Math.max(18, ${Math.max(18,t)});\n const escapeText = (value) =>\n String(value ?? "")\n .replaceAll("&", "&")\n .replaceAll("<", "<")\n .replaceAll(">", ">")\n .replaceAll('"', """)\n .replaceAll("'", "'");\n\n const readLineText = (line) => {\n if (lineTextCache.has(line)) {\n return lineTextCache.get(line);\n }\n\n textProbe.innerHTML = line.html ?? "";\n const text = (textProbe.textContent || "").toLowerCase();\n lineTextCache.set(line, text);\n return text;\n };\n\n const rebuildMetrics = () => {\n offsets = new Array(displayLines.length + 1);\n offsets[0] = 0;\n for (let index = 0; index < displayLines.length; index += 1) {\n offsets[index + 1] = offsets[index] + (heights[index] || estimate);\n }\n spacer.style.height = (offsets[offsets.length - 1] || 0) + "px";\n };\n\n const findIndexAt = (offset) => {\n let low = 0;\n let high = displayLines.length;\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n if (offsets[mid + 1] < offset) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return low;\n };\n\n const updateStatus = () => {\n if (!searchTerm) {\n status.textContent = "";\n return;\n }\n\n status.textContent = searchMatches.length\n ? "(" + (searchIndex + 1) + " of " + searchMatches.length + ") Line: " + searchMatches[searchIndex]\n : "No entry found";\n };\n\n const classNameForLine = (line) =>\n "nexgui4-log-line " +\n (line.isPrompt ? "prompt textline" : "textline") +\n (line.isMonospace ? " mono" : "");\n\n const render = () => {\n renderFrame = 0;\n const top = viewport.scrollTop;\n const bottom = top + viewport.clientHeight;\n const start = Math.max(0, findIndexAt(top) - overscan);\n const end = Math.min(displayLines.length, findIndexAt(bottom) + overscan + 1);\n const activeDisplayIndex = searchMatches[searchIndex] ?? -1;\n let html = "";\n\n for (let index = start; index < end; index += 1) {\n const line = displayLines[index];\n const timestamp = showTimestamps\n ? '<span class="nexgui4-log-timestamp timestamp mono no_out">' +\n escapeText(line.timestamp) +\n " </span>"\n : "";\n const activeClass = activeDisplayIndex === index ? " nexgui4-log-line--active" : "";\n\n html +=\n '<div class="' +\n classNameForLine(line) +\n activeClass +\n '" data-index="' +\n index +\n '" style="transform:translateY(' +\n offsets[index] +\n 'px)">' +\n timestamp +\n '<span class="nexgui4-log-payload">' +\n line.html +\n "</span></div>";\n }\n\n rows.innerHTML = html;\n window.requestAnimationFrame(measureRenderedRows);\n };\n\n const requestRender = () => {\n if (renderFrame) {\n return;\n }\n\n renderFrame = window.requestAnimationFrame(render);\n };\n\n const measureRenderedRows = () => {\n let changed = false;\n\n rows.querySelectorAll("[data-index]").forEach((row) => {\n const index = Number(row.getAttribute("data-index"));\n const measured = Math.ceil(row.getBoundingClientRect().height);\n\n if (Number.isFinite(index) && measured > 0 && Math.abs((heights[index] || estimate) - measured) > 1) {\n heights[index] = measured;\n changed = true;\n }\n });\n\n if (changed) {\n rebuildMetrics();\n requestRender();\n }\n };\n\n const rebuildDisplayLines = () => {\n displayLines = showPrompts ? allLines : allLines.filter((line) => !line.isPrompt);\n heights = new Array(displayLines.length);\n searchMatches = [];\n searchIndex = -1;\n\n if (searchTerm) {\n searchMatches = displayLines.reduce((matches, line, index) => {\n if (readLineText(line).includes(searchTerm)) {\n matches.push(index);\n }\n return matches;\n }, []);\n searchIndex = searchMatches.length > 0 ? 0 : -1;\n }\n\n rebuildMetrics();\n updateStatus();\n requestRender();\n };\n\n const scrollToActiveSearchMatch = () => {\n if (searchIndex < 0) {\n return;\n }\n\n viewport.scrollTop = Math.max(\n 0,\n offsets[searchMatches[searchIndex]] - viewport.clientHeight / 2,\n );\n requestRender();\n };\n\n const runSearch = () => {\n const nextTerm = searchInput.value.trim().toLowerCase();\n\n if (nextTerm !== searchTerm) {\n searchTerm = nextTerm;\n rebuildDisplayLines();\n } else if (searchMatches.length > 0) {\n searchIndex = (searchIndex + 1) % searchMatches.length;\n updateStatus();\n requestRender();\n }\n\n scrollToActiveSearchMatch();\n };\n\n viewport.addEventListener("scroll", requestRender, { passive: true });\n window.addEventListener("resize", () => {\n heights = new Array(displayLines.length);\n rebuildMetrics();\n requestRender();\n });\n searchInput.addEventListener("keydown", (event) => {\n if (event.key === "Enter") {\n runSearch();\n }\n });\n timestampToggle.addEventListener("change", () => {\n showTimestamps = timestampToggle.checked;\n heights = new Array(displayLines.length);\n rebuildMetrics();\n requestRender();\n });\n promptToggle.addEventListener("change", () => {\n showPrompts = promptToggle.checked;\n rebuildDisplayLines();\n });\n\n rebuildDisplayLines();\n viewport.scrollTop = Math.max(0, spacer.offsetHeight - viewport.clientHeight);\n requestRender();\n })();\n`,buildVirtualizedHtmlLog=(e,{fontFamily:t=Dr,fontSize:g,title:n}={})=>{const o=resolveCssFontSize$1(g),a=Number.parseFloat(o)||14,C=buildLogTitle(n),I=normalizeLogLines(e);return`<!doctype html>\n<html>\n ${buildHead({title:C,fontFamily:t,fontSize:o})}\n <body class="nexgui4-log-body--virtual">\n <div class="nexgui4-log-toolbar">\n <input id="nexgui4-log-search" aria-label="Search log" placeholder="Search" />\n <span id="nexgui4-log-search-status" aria-live="polite"></span>\n <label><input id="nexgui4-log-timestamps" type="checkbox" checked /> Timestamps</label>\n <label><input id="nexgui4-log-prompts" type="checkbox" checked /> Prompts</label>\n </div>\n <div id="nexgui4-log-viewport" class="nexgui4-log-viewport">\n <div id="nexgui4-log-spacer" class="nexgui4-log-spacer">\n <div id="nexgui4-log-rows" class="nexgui4-log-rows"></div>\n </div>\n </div>\n <style>\n .nexgui4-log-body--virtual {\n height: 100vh;\n overflow: hidden;\n padding: 0;\n }\n\n .nexgui4-log-toolbar {\n align-items: center;\n background: #050505;\n border-bottom: 1px solid #333;\n box-sizing: border-box;\n display: flex;\n gap: 12px;\n height: 42px;\n padding: 6px 10px;\n }\n\n .nexgui4-log-toolbar input[type="text"],\n #nexgui4-log-search {\n background: #111;\n border: 1px solid #444;\n color: #eee;\n font: inherit;\n padding: 4px 6px;\n width: 24ch;\n }\n\n #nexgui4-log-search-status {\n color: #aaa;\n min-width: 18ch;\n }\n\n .nexgui4-log-toolbar label {\n align-items: center;\n display: inline-flex;\n gap: 4px;\n white-space: nowrap;\n }\n\n .nexgui4-log-viewport {\n height: calc(100vh - 42px);\n overflow-y: auto;\n position: relative;\n }\n\n .nexgui4-log-spacer {\n position: relative;\n width: 100%;\n }\n\n .nexgui4-log-rows {\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n }\n\n .nexgui4-log-rows .nexgui4-log-line {\n left: 0;\n padding: 0 12px;\n position: absolute;\n top: 0;\n width: 100%;\n }\n\n .nexgui4-log-line--active {\n background: #e5e7eb;\n color: #111827;\n }\n </style>\n <script>\n${buildVirtualizedLogScript(I,1.5*a+26)}\n <\/script>\n </body>\n</html>`},buildHtmlLog=(e,t,g={})=>t?buildVirtualizedHtmlLog(e,g):buildStandardHtmlLog(e,g),downloadBuffer=(e,t,{fontFamily:g=Dr,fontSize:n,title:o}={})=>{if("undefined"==typeof document||"undefined"==typeof Blob||"undefined"==typeof URL||"function"!=typeof URL.createObjectURL||0===e.length)return;const a=buildHtmlLog(e,t,{fontFamily:g,fontSize:n,title:o}),C=URL.createObjectURL(new Blob([a],{type:Nl})),I=document.createElement("a");I.href=C,I.download=Pl,I.style.display="none",document.body.append(I),I.click(),I.remove(),URL.revokeObjectURL(C)},useScrollbackDownload=({scrollbackSession:e,visibleItems:t,isSearchActive:g,useVirtualizedLogs:n,fontFamily:o,fontSize:a})=>({handleDownload:(0,l.useCallback)(async()=>{let C=t;if(!g&&e?.readAll)try{const t=await e.readAll();t&&t.length>0&&(C=t)}catch(I){console.error("[nexGui4] Failed to read all lines for download",I)}downloadBuffer(C,n,{fontFamily:o,fontSize:a})},[o,a,g,e,n,t])}),zl=12,Ol=18,Dl={height:"--nexgui4-scrollback-height",width:"--nexgui4-scrollback-width",x:"--nexgui4-scrollback-left",y:"--nexgui4-scrollback-top"},jl=[{direction:"n",sx:{cursor:"n-resize",height:zl,left:Ol,right:Ol,top:-6}},{direction:"s",sx:{bottom:-6,cursor:"s-resize",height:zl,left:Ol,right:Ol}},{direction:"e",sx:{bottom:Ol,cursor:"e-resize",right:-6,top:Ol,width:zl}},{direction:"w",sx:{bottom:Ol,cursor:"w-resize",left:-6,top:Ol,width:zl}},{direction:"ne",sx:{cursor:"ne-resize",height:Ol,right:-6,top:-6,width:Ol}},{direction:"nw",sx:{cursor:"nw-resize",height:Ol,left:-6,top:-6,width:Ol}},{direction:"se",sx:{bottom:-6,cursor:"se-resize",height:Ol,right:-6,width:Ol}},{direction:"sw",sx:{bottom:-6,cursor:"sw-resize",height:Ol,left:-6,width:Ol}}],areScrollbackGeometriesEqual=(e,t)=>e?.x===t?.x&&e?.y===t?.y&&e?.width===t?.width&&e?.height===t?.height,getScrollbackPaperGeometryStyle=e=>({[Dl.height]:`${e.height}px`,[Dl.width]:`${e.width}px`,[Dl.x]:`${e.x}px`,[Dl.y]:`${e.y}px`}),applyScrollbackPaperGeometry=(e,t)=>{e&&t&&Object.entries(getScrollbackPaperGeometryStyle(t)).forEach(([t,g])=>{e.style.setProperty(t,g)})},useScrollbackGeometry=({initialGeometry:e,persistGeometry:t,contentRef:g})=>{const n=(0,l.useRef)(null),o=(0,l.useRef)(e),a=(0,l.useRef)(e),[C,I]=(0,l.useState)(()=>getScrollbackPaperGeometryStyle(e)),i=(0,l.useCallback)(()=>n.current??g.current?.closest('[data-testid="scrollback-dialog-paper"]')??g.current?.closest(".MuiDialog-paper")??null,[g]),s=(0,l.useCallback)(e=>{const t=normalizeScrollbackGeometry("function"==typeof e?e(a.current):e);return a.current=t,applyScrollbackPaperGeometry(i(),t),t},[i]),c=(0,l.useCallback)(e=>{const t=s(e);return areScrollbackGeometriesEqual(o.current,t)||(o.current=t,I(getScrollbackPaperGeometryStyle(t))),t},[s]),u=(0,l.useCallback)((e,g)=>{const n=document.body.style.userSelect;document.body.style.userSelect="none";const handlePointerMove=e=>{g(e)},handlePointerUp=()=>{document.body.style.userSelect=n,document.removeEventListener("pointermove",handlePointerMove),document.removeEventListener("pointerup",handlePointerUp),t(c(a.current))};document.addEventListener("pointermove",handlePointerMove),document.addEventListener("pointerup",handlePointerUp),e.currentTarget.setPointerCapture?.(e.pointerId)},[c,t]);return{paperRef:n,paperGeometryStyle:C,handleDragPointerDown:(0,l.useCallback)(e=>{if(0!==e.button)return;e.preventDefault();const t=a.current,g=e.clientX-t.x,n=e.clientY-t.y;u(e,e=>{s({...t,x:e.clientX-g,y:e.clientY-n})})},[s,u]),handleResizePointerDown:(0,l.useCallback)(e=>t=>{if(0!==t.button)return;t.preventDefault(),t.stopPropagation();const g=a.current,n=t.clientX,o=t.clientY,C=g.x+g.width,I=g.y+g.height,i=getMinimumScrollbackGeometry();u(t,t=>{let a=g;if(e.includes("e")&&(a={...a,width:clampScrollbackGeometryValue(g.width+(t.clientX-n),i.width,getScrollbackViewportBounds().width-g.x)}),e.includes("s")&&(a={...a,height:clampScrollbackGeometryValue(g.height+(t.clientY-o),i.height,getScrollbackViewportBounds().height-g.y)}),e.includes("w")){const e=clampScrollbackGeometryValue(g.x+(t.clientX-n),0,C-i.width);a={...a,x:e,width:C-e}}if(e.includes("n")){const e=clampScrollbackGeometryValue(g.y+(t.clientY-o),0,I-i.height);a={...a,y:e,height:I-e}}s(a)})},[s,u]),reaffirmCommittedGeometry:(0,l.useCallback)(()=>{c(e=>e)},[c])}},Ll={id:xC.default.number.isRequired,html:xC.default.string.isRequired,timestamp:xC.default.string.isRequired,isPrompt:xC.default.bool.isRequired,isMonospace:xC.default.bool.isRequired,shouldLog:xC.default.bool.isRequired},Gl=xC.default.exact(Ll),buildLineClassName=e=>["nexgui4-virtual-scroll-line",e.isPrompt?"prompt textline":"textline",e.isMonospace?"mono":null,e.shouldLog?"nexguilog":null].filter(Boolean).join(" "),VirtualScrollLineComponent=({fontFamily:e,line:t,isActiveMatch:g=!1,timestampClassName:n,showTimestamp:o=!0})=>React.createElement("div",{className:buildLineClassName(t)},o?React.createElement(FC,{fontFamily:e,timestamp:t.timestamp,highlight:g,className:n}):null,React.createElement("span",{className:"nexgui4-virtual-scroll-line__payload",dangerouslySetInnerHTML:{__html:t.html}}));VirtualScrollLineComponent.displayName="VirtualScrollLine",VirtualScrollLineComponent.propTypes={fontFamily:xC.default.string,isActiveMatch:xC.default.bool,line:Gl.isRequired,showTimestamp:xC.default.bool,timestampClassName:xC.default.string};var areVirtualScrollLinePropsEqual=(e,t)=>e.line.id===t.line.id&&e.fontFamily===t.fontFamily&&e.showTimestamp===t.showTimestamp&&e.isActiveMatch===t.isActiveMatch&&e.timestampClassName===t.timestampClassName,Bl=(0,l.memo)(VirtualScrollLineComponent,areVirtualScrollLinePropsEqual);Bl.displayName="VirtualScrollLine",Bl.propTypes=VirtualScrollLineComponent.propTypes;var Fl=xC.default.oneOfType([Gl,xC.default.oneOf([null])]),PromptLineComponent=({fontFamily:e,promptLine:t=null,show:g=!1,showTimestamp:n=!0,timestampClassName:o})=>g&&t?React.createElement("div",{className:"nexgui4-prompt-line"},React.createElement(Bl,{fontFamily:e,line:t,showTimestamp:n,timestampClassName:o})):null;PromptLineComponent.displayName="PromptLine",PromptLineComponent.propTypes={fontFamily:xC.default.string,promptLine:Fl,show:xC.default.bool.isRequired,showTimestamp:xC.default.bool,timestampClassName:xC.default.string};var Wl=(0,l.memo)(PromptLineComponent);Wl.displayName="PromptLine",Wl.propTypes=PromptLineComponent.propTypes;var Vl="mixed",_l="single-line",noop$1=()=>{},Ul=xC.default.oneOfType([Gl,xC.default.oneOf([null])]),estimateLineSize=(e,t)=>t===_l?Math.ceil(1.25*e):1.5*e+26,VirtualScrollBufferComponent=({items:e,promptLine:t=null,showPromptInline:g=!0,showTimestamp:n=!0,onSendCommand:o=noop$1,fontFamily:a=Dr,fontSize:C=14,itemKeyVersion:I=null,border:i=!0,onRequestScrollback:s=noop$1,onScrollLockChange:c=noop$1,activeMatchIndex:u=-1,timestampClassName:d,estimateSizeMode:p=Vl,overscan:m=5,renderItem:h},y)=>{const b=parseFontSize(C,14),v=(0,l.useCallback)(()=>estimateLineSize(b,p),[p,b]),x=(0,l.useCallback)((e,t)=>e?.id??t,[]),S=i?null:`${e.length}:${e.at(-1)?.id??""}:${g?"":t?.id??""}`,w=(0,l.useCallback)((e,{isActiveMatch:t})=>React.createElement(Bl,{fontFamily:a,line:e,isActiveMatch:t,showTimestamp:n,timestampClassName:d}),[a,n,d]);return React.createElement(BC,{ref:y,activeMatchIndex:u,border:i,displayPinKey:S,estimateSize:v,fontFamily:a,fontSize:C,footer:React.createElement(Wl,{fontFamily:a,promptLine:t,show:Boolean(t)&&!g,showTimestamp:n,timestampClassName:d}),getItemKey:x,itemKeyVersion:I,items:e,mode:i?"panel":"display",onRequestHistory:s,onSendCommand:o,onScrollLockChange:c,overscan:m,renderItem:h??w,showScrollLockBadge:i})};VirtualScrollBufferComponent.displayName="VirtualScrollBuffer",VirtualScrollBufferComponent.propTypes={activeMatchIndex:xC.default.number,border:xC.default.bool,estimateSizeMode:xC.default.oneOf([Vl,_l]),fontFamily:xC.default.string,fontSize:xC.default.oneOfType([xC.default.number,xC.default.string]),itemKeyVersion:xC.default.oneOfType([xC.default.number,xC.default.string]),items:xC.default.arrayOf(Gl).isRequired,onRequestScrollback:xC.default.func,onScrollLockChange:xC.default.func,onSendCommand:xC.default.func,overscan:xC.default.number,promptLine:Ul,renderItem:xC.default.func,showPromptInline:xC.default.bool,showTimestamp:xC.default.bool,timestampClassName:xC.default.string};var Zl=(0,l.forwardRef)(VirtualScrollBufferComponent);Zl.displayName="VirtualScrollBuffer",Zl.propTypes=VirtualScrollBufferComponent.propTypes;var Kl=xC.default.oneOfType([Gl,xC.default.oneOf([null])]),noop=()=>{},Hl=.8,Yl=1,$l=2,Ql=48,Xl="nexgui4-scrollback-timestamp ng-timestamp timestamp mono no_out",resolveCssFontSize=e=>null==e?"14px":"number"==typeof e?`${e}px`:String(e),getScrollbackWheelDeltaPixels=(e,t)=>{const g=Number(e?.deltaY);if(!Number.isFinite(g)||0===g)return 0;if(e?.deltaMode===Yl)return g*Ql;if(e?.deltaMode===$l){const e=Number(t?.clientHeight);return g*Math.max(0,Number.isFinite(e)?e:0)*Hl}return g},resolveDialogSurfaceBackground=e=>e.nexGui?.tokens?.background?.modal??e.palette.background.paper,resolveModalBackground=e=>e.palette.common.black,resolveHeaderBackground=e=>e.nexGui?.tokens?.background?.header??e.palette.background.default,Jl=(0,l.memo)(({isEndpoint:e,inRange:t,onClick:g})=>React.createElement(fC,{"aria-label":"Select line for copy range",component:"button",onClick:g,sx:g=>({alignSelf:"flex-start",bgcolor:e?g.palette.primary.main:"transparent",borderRadius:"50%",borderStyle:"solid",borderWidth:2,borderColor:e?g.palette.primary.main:g.palette.divider,boxSizing:"border-box",cursor:"pointer",display:"block",flexShrink:0,height:12,lineHeight:1,mr:"6px",mt:"2px",opacity:e?1:t?.6:.25,outline:"none",p:0,transition:"opacity 0.12s, background-color 0.12s, border-color 0.12s",width:12,"&:hover":{borderColor:g.palette.primary.main,opacity:1},"&:focus-visible":{outline:`2px solid ${g.palette.primary.main}`,outlineOffset:2}})}));Jl.displayName="SelectionBubble",Jl.propTypes={inRange:xC.default.bool.isRequired,isEndpoint:xC.default.bool.isRequired,onClick:xC.default.func.isRequired};var ScrollbackModalDialog=({open:e,onClose:t,items:g,filteredItems:n=g,itemKeyVersion:o=null,scrollbackSession:a=null,promptLine:C=null,onSendCommand:I=noop,fontFamily:i=Dr,fontSize:s=14,showTimestamp:c=!0})=>{const[u,d]=(0,l.useState)(!0),[p,m]=(0,l.useState)(c),[h,y]=(0,l.useState)(!1),{focusHostInput:b,initialGeometry:v,persistGeometry:x,useVirtualizedLogs:S}=useScrollbackLayout(),w=(0,l.useRef)(null),E=(0,l.useRef)(null),R=(0,l.useCallback)(()=>E.current?.querySelector('[data-testid="virtual-scroll-viewport"]')??null,[]),T=(0,l.useCallback)(e=>{e.dispatchEvent(new Event("scroll",{bubbles:!0}))},[]),M=(0,l.useCallback)(e=>{const t=R();if(!t)return!1;const g=Math.max(0,t.scrollHeight-t.clientHeight);return t.scrollTop=clampScrollbackGeometryValue(t.scrollTop+e,0,g),!0},[R]),P=(0,l.useCallback)(()=>{const e=R();e?(e.scrollTop=e.scrollHeight,T(e)):w.current?.scrollToBottom?.(),y(!1)},[T,R]),N=(0,l.useCallback)(e=>{e<0||(w.current?.scrollToIndex?.(e,{align:"center"}),y(!0))},[]),{hydratedItems:O,isLoadingMore:D}=useScrollbackHydration({items:g,open:e,scrollbackSession:a,getViewportElement:R,dispatchViewportScroll:T,setScrollLock:y}),{paperRef:j,paperGeometryStyle:L,handleDragPointerDown:G,handleResizePointerDown:B,reaffirmCommittedGeometry:F}=useScrollbackGeometry({initialGeometry:v,persistGeometry:x,contentRef:E}),{searchBarText:W,searchResults:V,isSearchActive:U,searchCursor:Z,searchStatusText:K,hasNoMatch:H,resetSearch:Y,handleSearchInput:$,handleSearchKeyDown:Q}=useScrollbackSearch({scrollbackSession:a,open:e,showPrompts:u,onCursorChange:N}),X=(0,l.useMemo)(()=>U?V:u?O:O.filter(e=>!e.isPrompt),[O,U,V,u]),J=U?Z:-1,q=resolveCssFontSize(s),{selectionA:ee,selectionB:te,selectedRangeItems:ge,copyConfirmed:ne,handleLineSelect:re,handleCopyRange:oe,isLineSelected:ae}=useScrollbackSelection({visibleItems:X}),{handleDownload:Ae}=useScrollbackDownload({scrollbackSession:a,visibleItems:X,isSearchActive:U,useVirtualizedLogs:S,fontFamily:i,fontSize:s}),Ce=(0,l.useCallback)((e,{isActiveMatch:t})=>{const{isEndpoint:g,inRange:n}=ae(e.id);return React.createElement(fC,{sx:e=>({alignItems:"flex-start",bgcolor:n?g?e.palette.action.selected:e.palette.action.hover:void 0,display:"flex"})},React.createElement(Jl,{isEndpoint:g,inRange:n,onClick:()=>re(e.id)}),React.createElement(fC,{sx:{flex:1,minWidth:0}},React.createElement(Bl,{fontFamily:i,isActiveMatch:t,line:e,showTimestamp:p,timestampClassName:Xl})))},[i,re,ae,p]);(0,l.useEffect)(()=>{h||Y()},[Y,h]),(0,l.useEffect)(()=>{e?F():y(!1)},[e,F]),(0,l.useEffect)(()=>{if(!e)return;const t=R();if(!t)return;const handleWheel=e=>{if(e.ctrlKey)return;const g=getScrollbackWheelDeltaPixels(e,t);0!==g&&(e.preventDefault(),e.stopPropagation(),M(g))};return t.addEventListener("wheel",handleWheel,{passive:!1}),()=>{t.removeEventListener("wheel",handleWheel)}},[R,e,M]),(0,l.useEffect)(()=>{if(!e)return;const handleWindowKeyDown=e=>"PageUp"===e.key?(e.preventDefault(),e.stopPropagation(),void M(-(R()?.clientHeight??0)*Hl)):"PageDown"===e.key?(e.preventDefault(),e.stopPropagation(),void M((R()?.clientHeight??0)*Hl)):void("Escape"===e.key&&(e.preventDefault(),e.stopPropagation(),t(),window.setTimeout(()=>{b()},0)));return window.addEventListener("keydown",handleWindowKeyDown,!0),()=>{window.removeEventListener("keydown",handleWindowKeyDown,!0)}},[b,R,t,e,M]);const Ie=(0,l.useCallback)((e,t)=>{d(t)},[]),ie=(0,l.useCallback)((e,t)=>{m(t)},[]),se=(0,l.useCallback)(()=>{P()},[P]),le=(0,l.useCallback)((e,g)=>{"backdropClick"!==g&&(t(),window.setTimeout(()=>{b()},0))},[b,t]),ce=a?.getStats?.(),ue=U?X.length:ce?.searchLineCount??X.length;return React.createElement(Xi,{open:e,onClose:le,disableEnforceFocus:!0,disableAutoFocus:!0,maxWidth:!1,sx:e=>({pointerEvents:"auto",zIndex:e.zIndex.modal+10,"& .MuiDialog-container":{alignItems:"flex-start",justifyContent:"flex-start",pointerEvents:"none"},"& .MuiDialogTitle-root":{cursor:"grab",fontFamily:i,fontSize:q,userSelect:"none"},"& .MuiDialogTitle-root:active":{cursor:"grabbing"},"& .MuiButton-root, & .MuiInputBase-root, & .MuiInputLabel-root":{fontFamily:i,fontSize:q}}),slotProps:{backdrop:{invisible:!0},paper:{"data-testid":"scrollback-dialog-paper",ref:j,style:L,sx:e=>({backgroundImage:"none",backgroundColor:resolveDialogSurfaceBackground(e),border:1,borderColor:"divider",boxShadow:24,color:"text.primary",isolation:"isolate",position:"fixed",pointerEvents:"auto",left:`var(${Dl.x})`,top:`var(${Dl.y})`,width:`var(${Dl.width})`,height:`var(${Dl.height})`,m:0,maxWidth:"none",maxHeight:"none",display:"flex",flexDirection:"column",fontFamily:i,fontSize:q,overflow:"hidden",zIndex:e.zIndex.modal+11})}}},React.createElement(rs,{onPointerDown:G,sx:e=>({backgroundColor:resolveHeaderBackground(e),borderBottom:1,borderColor:"divider",backgroundImage:"none",p:1,touchAction:"none"})},"Scrollback Buffer"),React.createElement(gs,{ref:E,sx:e=>({backgroundColor:resolveModalBackground(e),backgroundImage:"none",color:"text.primary",display:"flex",flex:1,minHeight:0,overflow:"hidden",p:0,position:"relative"})},D?React.createElement(fC,{sx:{position:"absolute",top:8,left:"50%",transform:"translateX(-50%)",zIndex:10,backgroundColor:"rgba(0, 0, 0, 0.7)",borderRadius:"4px",padding:"4px 8px",display:"flex",alignItems:"center",gap:"8px",color:"primary.main",fontSize:"0.75rem",border:"1px solid",borderColor:"divider"}},React.createElement(Di,{size:12,thickness:5}),"Loading history..."):null,React.createElement(Zl,{activeMatchIndex:J,border:!0,fontFamily:i,fontSize:s,itemKeyVersion:o,items:X,onSendCommand:I,onScrollLockChange:y,promptLine:C,ref:w,renderItem:Ce,showPromptInline:!0,showTimestamp:p,timestampClassName:Xl})),React.createElement(qi,null,React.createElement(kl,{size:"small",label:"Search",value:W,onInput:$,onKeyDown:Q,error:H,slotProps:{htmlInput:{"aria-label":"Search scrollback"}},sx:{width:"20ch"}}),K?React.createElement(fC,{"aria-live":"polite",component:"div",role:"status",sx:e=>({color:H?e.palette.error.main:e.palette.text.secondary,fontSize:e.typography.pxToRem(12),lineHeight:1.2,whiteSpace:"nowrap"})},K):null,React.createElement(fC,{sx:{flex:1}}),React.createElement(Is,{control:React.createElement(fs,{checked:u,onChange:Ie,size:"small"}),label:"Show Prompts",sx:{mr:1,userSelect:"none"}}),React.createElement(Is,{control:React.createElement(fs,{checked:p,onChange:ie,size:"small"}),label:"Show Timestamps",sx:{mr:1,userSelect:"none"}}),null!=ge?React.createElement(Zi,{color:ne?"success":"primary",onClick:oe,size:"small",variant:"outlined"},ne?"Copied!":`Copy (${ge.length})`):null,h?React.createElement(Zi,{onClick:se,size:"small",variant:"outlined"},"Bottom"):null,React.createElement(Zi,{onClick:Ae,size:"small",variant:"outlined"},"Download (#",ue,")"),React.createElement(Zi,{onClick:le,size:"small"},"Close")),jl.map(e=>React.createElement(fC,{component:"span","data-testid":`scrollback-resize-handle-${e.direction}`,key:e.direction,onPointerDown:B(e.direction),sx:{position:"absolute",touchAction:"none",zIndex:2,...e.sx}})))};ScrollbackModalDialog.displayName="ScrollbackModalDialog";var ql={fontFamily:xC.default.string,fontSize:xC.default.oneOfType([xC.default.number,xC.default.string]),filteredItems:xC.default.arrayOf(Gl),itemKeyVersion:xC.default.oneOfType([xC.default.number,xC.default.string]),scrollbackSession:xC.default.object,items:xC.default.arrayOf(Gl).isRequired,onClose:xC.default.func.isRequired,onSendCommand:xC.default.func,open:xC.default.bool.isRequired,promptLine:Kl,showTimestamp:xC.default.bool};ScrollbackModalDialog.propTypes=ql;var ScrollbackModalComponent=e=>e.open?React.createElement(ScrollbackModalDialog,e):null;ScrollbackModalComponent.displayName="ScrollbackModal",ScrollbackModalComponent.propTypes=ql;var ec=(0,l.memo)(ScrollbackModalComponent);ec.displayName="ScrollbackModal",ec.propTypes=ScrollbackModalComponent.propTypes;var identity=e=>e,useHostDisplaySetting=(e=identity,t=Object.is)=>{const{hostDisplaySettingsModel:g}=useNexGui();if(!g||"function"!=typeof g.subscribe||"function"!=typeof g.getSnapshot)throw new Error("useHostDisplaySetting requires NexGuiContext hostDisplaySettingsModel with subscribe(listener) and getSnapshot().");const n=(0,l.useMemo)(()=>{let n=e(g.getSnapshot());const getSnapshot=()=>{const o=e(g.getSnapshot());return t(n,o)||(n=o),n},subscribe=o=>g.subscribe(()=>{const a=e(g.getSnapshot());t(n,a)||(n=a,o())});return Object.freeze({getSnapshot,subscribe})},[g,t,e]);return(0,l.useSyncExternalStore)(n.subscribe,n.getSnapshot,n.getSnapshot)},useHostDisplaySettings=()=>useHostDisplaySetting(),tc=Object.freeze({}),gc=Object.freeze({}),createHostBridge=e=>Object.freeze({getSettings:()=>e?.getHostSettings?.()??tc,setSetting:(t,g)=>{e?.setHostSetting?.(t,g)},getLayoutSnapshot:()=>e?.getHostLayoutSnapshot?.()??gc,updateLayoutAttributes:t=>{e?.updateHostLayoutAttributes?.(t)},focusInput:()=>{e?.focusInput?.()}}),useHostBridge=()=>{const{adapter:e}=useNexGui();return(0,l.useMemo)(()=>createHostBridge(e),[e])},useHostFocus=()=>{const e=useHostBridge();return(0,l.useCallback)(()=>{e.focusInput()},[e])},nc=new WeakMap,assertStreamModel=e=>{if(!e||"function"!=typeof e.subscribe||"function"!=typeof e.getSnapshot)throw new Error("useStream requires NexGuiContext streamModel with subscribe(listener) and getSnapshot().")},getStreamModelBindings=e=>{assertStreamModel(e);let t=nc.get(e);if(!t){const subscribe=t=>e.subscribe(t),getSnapshot=()=>e.getSnapshot();t=Object.freeze({subscribe,getSnapshot}),nc.set(e,t)}return t},useStreamSnapshot=()=>{const{streamModel:e}=useNexGui(),{subscribe:t,getSnapshot:g}=getStreamModelBindings(e);return(0,l.useSyncExternalStore)(t,g,g)},selectUiSlice=e=>({activeTab:e.activeTab,modalOpen:e.modalOpen,setActiveTab:e.setActiveTab,openModal:e.openModal,closeModal:e.closeModal}),useUi=()=>{const{stores:e}=useNexGui();return e.ui(useShallow(selectUiSlice))},rc="scrollback",getPromptShownTailStartIndex=(e,t,g)=>{const n=Math.max(0,e.length-g);let o=0;for(let a=e.length-1;a>=n;a--)if(!e[a]?.isPrompt&&(o++,o===t))return a;return n},selectMainDisplayLiveTailItems=({allItems:e,filteredItems:t,showPrompts:g,nonPromptLimit:n=100,totalItemLimit:o=100})=>{const a=g?e:t;if(a.length<=n)return a;if(!g)return a.slice(-n);const C=getPromptShownTailStartIndex(a,n,o);return 0===C?a:a.slice(C)},useMainDisplayViewModel=()=>{const{adapter:e,scrollbackSession:t}=useNexGui(),g=useHostFocus(),{showPrompts:n,showTimestamps:o}=useHostDisplaySettings(),{buffer:a,filteredBuffer:C,promptLine:I,version:i}=useStreamSnapshot(),{modalOpen:s,openModal:c,closeModal:u}=useUi(),d=(0,l.useMemo)(()=>selectMainDisplayLiveTailItems({allItems:a,filteredItems:C,showPrompts:n}),[a,C,n]),p=n?null:I,m=d.at(-1),h=`${n?"all":"filtered"}:${d.length}:${m?.id??"none"}`,y=(0,l.useCallback)(()=>{s!==rc&&c(rc)},[s,c]),b=(0,l.useCallback)(()=>{u()},[u]),v=(0,l.useCallback)(t=>{e?.send?.(t)},[e]);return{allItems:a,closeScrollback:b,displayItems:d,displayItemKeyVersion:h,displayPromptLine:p,filteredItems:C,focusHostInput:g,openScrollback:y,promptLine:I,scrollbackOpen:s===rc,sendCommand:v,showTimestamps:o,scrollbackItemKeyVersion:i,scrollbackSession:t}},selectThemeSlice=e=>({tokens:e.tokens,updateTokens:e.updateTokens,resetTokens:e.resetTokens}),useTheme=()=>{const{stores:e}=useNexGui(),t=e.theme(useShallow(selectThemeSlice)),g=(0,l.useMemo)(()=>createMuiTheme(t.tokens),[t.tokens]);return(0,l.useMemo)(()=>({...t,theme:g}),[t,g])},oc="nexgui4-main-display-timestamp ng-timestamp timestamp mono no_out",ac=10,MainDisplayInner=()=>{const e=(0,l.useRef)(null),{tokens:t}=useTheme(),{allItems:g,closeScrollback:n,displayItems:o,displayItemKeyVersion:a,displayPromptLine:C,filteredItems:I,focusHostInput:i,openScrollback:s,promptLine:c,scrollbackItemKeyVersion:u,scrollbackOpen:d,scrollbackSession:p,sendCommand:m,showTimestamps:h}=useMainDisplayViewModel(),y=t.theme.displayFontFamily,b=t.theme.displayFontSize,v=(0,l.useCallback)(()=>{s()},[s]),x=(0,l.useCallback)(()=>{n(),e.current?.scrollToBottom(),i()},[n,i]);return React.createElement(fC,{className:"main-display main-display__content",sx:{display:"flex",flex:1,minHeight:0,minWidth:0,overflow:"hidden",position:"relative",width:"100%"}},React.createElement(fC,{"data-testid":"main-display-buffer",sx:{display:"flex",flex:1,minHeight:0,position:"relative"}},React.createElement(Zl,{ref:e,border:!1,estimateSizeMode:"single-line",fontFamily:y,fontSize:b,itemKeyVersion:a,items:o,onRequestScrollback:v,onSendCommand:m,overscan:ac,promptLine:C,showPromptInline:!1,showTimestamp:h,timestampClassName:oc})),React.createElement(ec,{fontFamily:y,fontSize:b,filteredItems:I,items:g,itemKeyVersion:u,scrollbackSession:p,onClose:x,onSendCommand:m,open:d,promptLine:c,showTimestamp:h}))};MainDisplayInner.displayName="MainDisplayInner";var MainDisplay=()=>React.createElement(TC,{panelName:"Main Display"},React.createElement(MainDisplayInner,null));function getLinearProgressUtilityClass(e){return generateUtilityClass("MuiLinearProgress",e)}MainDisplay.displayName="MainDisplay",generateUtilityClasses("MuiLinearProgress",["root","colorPrimary","colorSecondary","determinate","indeterminate","buffer","query","dashed","bar","bar1","bar2"]);var Ac=4,Cc=keyframes`
|
|
102
|
-
0% {
|
|
103
|
-
left: -35%;
|
|
104
|
-
right: 100%;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
60% {
|
|
108
|
-
left: 100%;
|
|
109
|
-
right: -90%;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
100% {
|
|
113
|
-
left: 100%;
|
|
114
|
-
right: -90%;
|
|
115
|
-
}
|
|
116
|
-
`,Ic="string"!=typeof Cc?css`
|
|
117
|
-
animation: ${Cc} 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;
|
|
118
|
-
`:null,ic=keyframes`
|
|
119
|
-
0% {
|
|
120
|
-
left: -200%;
|
|
121
|
-
right: 100%;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
60% {
|
|
125
|
-
left: 107%;
|
|
126
|
-
right: -8%;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
100% {
|
|
130
|
-
left: 107%;
|
|
131
|
-
right: -8%;
|
|
132
|
-
}
|
|
133
|
-
`,sc="string"!=typeof ic?css`
|
|
134
|
-
animation: ${ic} 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite;
|
|
135
|
-
`:null,lc=keyframes`
|
|
136
|
-
0% {
|
|
137
|
-
opacity: 1;
|
|
138
|
-
background-position: 0 -23px;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
60% {
|
|
142
|
-
opacity: 0;
|
|
143
|
-
background-position: 0 -23px;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
100% {
|
|
147
|
-
opacity: 1;
|
|
148
|
-
background-position: -200px -23px;
|
|
149
|
-
}
|
|
150
|
-
`,cc="string"!=typeof lc?css`
|
|
151
|
-
animation: ${lc} 3s infinite linear;
|
|
152
|
-
`:null,useUtilityClasses$6=e=>{const{classes:t,variant:g,color:n}=e;return composeClasses({root:["root",`color${wC(n)}`,g],dashed:["dashed"],bar1:["bar","bar1"],bar2:["bar","bar2","buffer"===g&&`color${wC(n)}`]},getLinearProgressUtilityClass,t)},getColorShade=(e,t)=>e.vars?e.vars.palette.LinearProgress[`${t}Bg`]:"light"===e.palette.mode?e.lighten(e.palette[t].main,.62):e.darken(e.palette[t].main,.5),uc=sC("span",{name:"MuiLinearProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.root,t[`color${wC(g.color)}`],t[g.variant]]}})(hC(({theme:e})=>({position:"relative",overflow:"hidden",display:"block",height:4,zIndex:0,"@media print":{colorAdjust:"exact"},variants:[...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t},style:{backgroundColor:getColorShade(e,t)}})),{props:({ownerState:e})=>"inherit"===e.color&&"buffer"!==e.variant,style:{"&::before":{content:'""',position:"absolute",left:0,top:0,right:0,bottom:0,backgroundColor:"currentColor",opacity:.3}}},{props:{variant:"buffer"},style:{backgroundColor:"transparent"}},{props:{variant:"query"},style:{transform:"rotate(180deg)"}}]}))),dc=sC("span",{name:"MuiLinearProgress",slot:"Dashed"})(hC(({theme:e})=>({position:"absolute",marginTop:0,height:"100%",width:"100%",backgroundSize:"10px 10px",backgroundPosition:"0 -23px",variants:[{props:{color:"inherit"},style:{opacity:.3,backgroundImage:"radial-gradient(currentColor 0%, currentColor 16%, transparent 42%)"}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>{const g=getColorShade(e,t);return{props:{color:t},style:{backgroundImage:`radial-gradient(${g} 0%, ${g} 16%, transparent 42%)`}}})]})),cc||{animation:`${lc} 3s infinite linear`}),pc=sC("span",{name:"MuiLinearProgress",slot:"Bar1",overridesResolver:(e,t)=>[t.bar,t.bar1]})(hC(({theme:e})=>({width:"100%",position:"absolute",left:0,bottom:0,top:0,transition:"transform 0.2s linear",transformOrigin:"left",variants:[{props:{color:"inherit"},style:{backgroundColor:"currentColor"}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t},style:{backgroundColor:(e.vars||e).palette[t].main}})),{props:{variant:"determinate"},style:{transition:`transform .${Ac}s linear`}},{props:{variant:"buffer"},style:{zIndex:1,transition:`transform .${Ac}s linear`}},{props:({ownerState:e})=>"indeterminate"===e.variant||"query"===e.variant,style:{width:"auto"}},{props:({ownerState:e})=>"indeterminate"===e.variant||"query"===e.variant,style:Ic||{animation:`${Cc} 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite`}}]}))),mc=sC("span",{name:"MuiLinearProgress",slot:"Bar2",overridesResolver:(e,t)=>[t.bar,t.bar2]})(hC(({theme:e})=>({width:"100%",position:"absolute",left:0,bottom:0,top:0,transition:"transform 0.2s linear",transformOrigin:"left",variants:[...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t},style:{"--LinearProgressBar2-barColor":(e.vars||e).palette[t].main}})),{props:({ownerState:e})=>"buffer"!==e.variant&&"inherit"!==e.color,style:{backgroundColor:"var(--LinearProgressBar2-barColor, currentColor)"}},{props:({ownerState:e})=>"buffer"!==e.variant&&"inherit"===e.color,style:{backgroundColor:"currentColor"}},{props:{color:"inherit"},style:{opacity:.3}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t,variant:"buffer"},style:{backgroundColor:getColorShade(e,t),transition:`transform .${Ac}s linear`}})),{props:({ownerState:e})=>"indeterminate"===e.variant||"query"===e.variant,style:{width:"auto"}},{props:({ownerState:e})=>"indeterminate"===e.variant||"query"===e.variant,style:sc||{animation:`${ic} 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite`}}]}))),fc=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiLinearProgress"}),{className:n,color:o="primary",max:a,min:C,value:I,valueBuffer:i,variant:s="indeterminate",...l}=g,c={...g,color:o,variant:s},u=C??0,d=a??100,p=useUtilityClasses$6(c),m=useRtl(),h={},y={bar1:{},bar2:{}};if(("determinate"===s||"buffer"===s)&&void 0!==I){const e=d-u;let t=(I-u)/e*100-100;m&&(t=-t),y.bar1.transform=e>0?`translateX(${t}%)`:"translateX(-100%)",h["aria-valuenow"]=I,h["aria-valuemin"]=u,h["aria-valuemax"]=d}if("buffer"===s&&void 0!==i){const e=d-u;let t=(i-u)/e*100-100;m&&(t=-t),y.bar2.transform=e>0?`translateX(${t}%)`:"translateX(-100%)"}return(0,ja.jsxs)(uc,{className:clsx(p.root,n),ownerState:c,role:"progressbar",...h,ref:t,...l,children:["buffer"===s?(0,ja.jsx)(dc,{className:p.dashed,ownerState:c}):null,(0,ja.jsx)(pc,{className:p.bar1,ownerState:c,style:y.bar1}),"determinate"===s?null:(0,ja.jsx)(mc,{className:p.bar2,ownerState:c,style:y.bar2})]})});function getTabUtilityClass(e){return generateUtilityClass("MuiTab",e)}var hc=generateUtilityClasses("MuiTab",["root","labelIcon","textColorInherit","textColorPrimary","textColorSecondary","selected","disabled","fullWidth","wrapped","icon"]),useUtilityClasses$5=e=>{const{classes:t,textColor:g,fullWidth:n,wrapped:o,icon:a,label:C,selected:I,disabled:i}=e;return composeClasses({root:["root",a&&C&&"labelIcon",`textColor${wC(g)}`,n&&"fullWidth",o&&"wrapped",I&&"selected",i&&"disabled"],icon:["icon"]},getTabUtilityClass,t)},yc=sC(si,{name:"MuiTab",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.root,g.label&&g.icon&&t.labelIcon,t[`textColor${wC(g.textColor)}`],g.fullWidth&&t.fullWidth,g.wrapped&&t.wrapped,{[`& .${hc.icon}`]:t.icon}]}})(hC(({theme:e})=>({...e.typography.button,maxWidth:360,minWidth:90,position:"relative",minHeight:48,flexShrink:0,padding:"12px 16px",overflow:"hidden",whiteSpace:"normal",textAlign:"center",lineHeight:1.25,variants:[{props:({ownerState:e})=>e.label&&("top"===e.iconPosition||"bottom"===e.iconPosition),style:{flexDirection:"column"}},{props:({ownerState:e})=>e.label&&"top"!==e.iconPosition&&"bottom"!==e.iconPosition,style:{flexDirection:"row"}},{props:({ownerState:e})=>e.icon&&e.label,style:{minHeight:72,paddingTop:9,paddingBottom:9}},{props:({ownerState:e,iconPosition:t})=>e.icon&&e.label&&"top"===t,style:{[`& > .${hc.icon}`]:{marginBottom:6}}},{props:({ownerState:e,iconPosition:t})=>e.icon&&e.label&&"bottom"===t,style:{[`& > .${hc.icon}`]:{marginTop:6}}},{props:({ownerState:e,iconPosition:t})=>e.icon&&e.label&&"start"===t,style:{[`& > .${hc.icon}`]:{marginRight:e.spacing(1)}}},{props:({ownerState:e,iconPosition:t})=>e.icon&&e.label&&"end"===t,style:{[`& > .${hc.icon}`]:{marginLeft:e.spacing(1)}}},{props:{textColor:"inherit"},style:{color:"inherit",opacity:.6,[`&.${hc.selected}`]:{opacity:1},[`&.${hc.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity}}},{props:{textColor:"primary"},style:{color:(e.vars||e).palette.text.secondary,[`&.${hc.selected}`]:{color:(e.vars||e).palette.primary.main},[`&.${hc.disabled}`]:{color:(e.vars||e).palette.text.disabled}}},{props:{textColor:"secondary"},style:{color:(e.vars||e).palette.text.secondary,[`&.${hc.selected}`]:{color:(e.vars||e).palette.secondary.main},[`&.${hc.disabled}`]:{color:(e.vars||e).palette.text.disabled}}},{props:({ownerState:e})=>e.fullWidth,style:{flexShrink:1,flexGrow:1,flexBasis:0,maxWidth:"none"}},{props:({ownerState:e})=>e.wrapped,style:{fontSize:e.typography.pxToRem(12)}}]}))),bc=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiTab"}),{className:n,disabled:o=!1,disableFocusRipple:a=!1,fullWidth:C,icon:I,iconPosition:i="top",indicator:s,label:c,onChange:u,onClick:d,onFocus:p,selected:m,selectionFollowsFocus:h,textColor:y="inherit",value:b,wrapped:v=!1,...x}=g,S=useRovingTabIndexContext(),w=useRovingTabIndexItem({id:b,ref:t,disabled:o,selected:m}),E=0===S.getItemMap().size&&m?0:w.tabIndex,R={...g,disabled:o,disableFocusRipple:a,selected:m,icon:!!I,iconPosition:i,label:!!c,fullWidth:C,textColor:y,wrapped:v},T=useUtilityClasses$5(R),M=I&&c&&l.isValidElement(I)?l.cloneElement(I,{className:clsx(T.icon,I.props.className)}):I,handleClick=e=>{!m&&u&&u(e,b),d&&d(e)},handleFocus=e=>{h&&!m&&u&&u(e,b),p&&p(e)};return(0,ja.jsxs)(yc,{internalNativeButton:!0,focusRipple:!a,className:clsx(T.root,n),ref:w.ref,role:"tab","aria-selected":m,disabled:o,onClick:handleClick,onFocus:handleFocus,tabIndex:E,ownerState:R,...x,children:["top"===i||"start"===i?(0,ja.jsxs)(l.Fragment,{children:[M,c]}):(0,ja.jsxs)(l.Fragment,{children:[c,M]}),s]})});function easeInOutSin(e){return(1+Math.sin(Math.PI*e-Math.PI/2))/2}function animate(e,t,g,n={},o=()=>{}){const{ease:a=easeInOutSin,duration:C=300}=n;let I=null;const i=t[e];let s=!1;const cancel=()=>{s=!0},step=n=>{if(s)return void o(new Error("Animation cancelled"));null===I&&(I=n);const l=Math.min(1,(n-I)/C);t[e]=a(l)*(g-i)+i,l>=1?requestAnimationFrame(()=>{o(null)}):requestAnimationFrame(step)};return i===g?(o(new Error("Element already at target position")),cancel):(requestAnimationFrame(step),cancel)}var vc={width:99,height:99,position:"absolute",top:-9999,overflow:"scroll",pointerEvents:"none"};function ScrollbarSize(e){const{onChange:t,...g}=e,n=l.useRef(),o=l.useRef(null),setMeasurements=()=>{n.current=o.current.offsetHeight-o.current.clientHeight};return rI(()=>{const e=cI(()=>{const e=n.current;setMeasurements(),e!==n.current&&t(n.current)}),g=oI(o.current);return g.addEventListener("resize",e),()=>{e.clear(),g.removeEventListener("resize",e)}},[t]),l.useEffect(()=>{setMeasurements(),t(n.current)},[t]),(0,ja.jsx)("div",{style:vc,...g,ref:o})}var xc=createSvgIcon((0,ja.jsx)("path",{d:"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"}),"KeyboardArrowLeft"),Sc=createSvgIcon((0,ja.jsx)("path",{d:"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"}),"KeyboardArrowRight");function getTabScrollButtonUtilityClass(e){return generateUtilityClass("MuiTabScrollButton",e)}var wc=generateUtilityClasses("MuiTabScrollButton",["root","vertical","horizontal","disabled"]),useUtilityClasses$4=e=>{const{classes:t,orientation:g,disabled:n}=e;return composeClasses({root:["root",g,n&&"disabled"]},getTabScrollButtonUtilityClass,t)},kc=sC(si,{name:"MuiTabScrollButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.root,g.orientation&&t[g.orientation]]}})({width:40,flexShrink:0,opacity:.8,[`&.${wc.disabled}`]:{opacity:0},variants:[{props:{orientation:"vertical"},style:{width:"100%",height:40,"& svg":{transform:"var(--TabScrollButton-svgRotate)"}}}]}),Ec=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiTabScrollButton"}),{className:n,slots:o={},slotProps:a={},direction:C,orientation:I,disabled:i,...s}=g,{nativeButton:l,...c}=s,u=useRtl(),d={isRtl:u,...g},p=useUtilityClasses$4(d),m=o.StartScrollButtonIcon??xc,h=o.EndScrollButtonIcon??Sc,y=useSlotProps({elementType:m,externalSlotProps:a.startScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:d}),b=useSlotProps({elementType:h,externalSlotProps:a.endScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:d});return(0,ja.jsx)(kc,{component:"div",className:clsx(p.root,n),ref:t,role:null,ownerState:d,tabIndex:null,...c,style:{...c.style,..."vertical"===I&&{"--TabScrollButton-svgRotate":`rotate(${u?-90:90}deg)`}},children:"left"===C?(0,ja.jsx)(m,{...y}):(0,ja.jsx)(h,{...b})})});function getTabsUtilityClass(e){return generateUtilityClass("MuiTabs",e)}var Rc=generateUtilityClasses("MuiTabs",["root","vertical","list","centered","scroller","fixed","scrollableX","scrollableY","hideScrollbar","scrollButtons","scrollButtonsHideMobile","indicator"]),useUtilityClasses$3=e=>{const{vertical:t,fixed:g,hideScrollbar:n,scrollableX:o,scrollableY:a,centered:C,scrollButtonsHideMobile:I,classes:i}=e;return composeClasses({root:["root",t&&"vertical"],scroller:["scroller",g&&"fixed",n&&"hideScrollbar",o&&"scrollableX",a&&"scrollableY"],list:["list",t&&"vertical",C&&"centered"],indicator:["indicator"],scrollButtons:["scrollButtons",I&&"scrollButtonsHideMobile"],scrollableX:[o&&"scrollableX"],hideScrollbar:[n&&"hideScrollbar"]},getTabsUtilityClass,i)},Tc=sC("div",{name:"MuiTabs",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[{[`& .${Rc.scrollButtons}`]:t.scrollButtons},{[`& .${Rc.scrollButtons}`]:g.scrollButtonsHideMobile&&t.scrollButtonsHideMobile},t.root,g.vertical&&t.vertical]}})(hC(({theme:e})=>({overflow:"hidden",minHeight:48,WebkitOverflowScrolling:"touch",display:"flex",variants:[{props:({ownerState:e})=>e.vertical,style:{flexDirection:"column"}},{props:({ownerState:e})=>e.scrollButtonsHideMobile,style:{[`& .${Rc.scrollButtons}`]:{[e.breakpoints.down("sm")]:{display:"none"}}}}]}))),Mc=sC("div",{name:"MuiTabs",slot:"Scroller",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.scroller,g.fixed&&t.fixed,g.hideScrollbar&&t.hideScrollbar,g.scrollableX&&t.scrollableX,g.scrollableY&&t.scrollableY]}})({position:"relative",display:"inline-block",flex:"1 1 auto",whiteSpace:"nowrap",variants:[{props:({ownerState:e})=>e.fixed,style:{overflowX:"hidden",width:"100%"}},{props:({ownerState:e})=>e.hideScrollbar,style:{scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}},{props:({ownerState:e})=>e.scrollableX,style:{overflowX:"auto",overflowY:"hidden"}},{props:({ownerState:e})=>e.scrollableY,style:{overflowY:"auto",overflowX:"hidden"}}]}),Pc=sC("div",{name:"MuiTabs",slot:"List",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.list,g.centered&&t.centered]}})({display:"flex",variants:[{props:({ownerState:e})=>e.vertical,style:{flexDirection:"column"}},{props:({ownerState:e})=>e.centered,style:{justifyContent:"center"}}]}),Nc=sC("span",{name:"MuiTabs",slot:"Indicator"})(hC(({theme:e})=>({position:"absolute",height:2,bottom:0,width:"100%",transition:e.transitions.create(),variants:[{props:{indicatorColor:"primary"},style:{backgroundColor:(e.vars||e).palette.primary.main}},{props:{indicatorColor:"secondary"},style:{backgroundColor:(e.vars||e).palette.secondary.main}},{props:({ownerState:e})=>e.vertical,style:{height:"100%",width:2,right:0}}]}))),zc=sC(ScrollbarSize)({overflowX:"auto",overflowY:"hidden",scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}),Oc={},Dc=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiTabs"}),n=useTheme$1(),o=useRtl(),{"aria-label":a,"aria-labelledby":C,action:I,centered:i=!1,children:s,className:c,component:u="div",allowScrollButtonsMobile:d=!1,indicatorColor:p="primary",onChange:m,orientation:h="horizontal",scrollButtons:y="auto",selectionFollowsFocus:b,slots:v={},slotProps:x={},textColor:S="primary",value:w,variant:E="standard",visibleScrollbar:R=!1,...T}=g,M="scrollable"===E,P="vertical"===h,N=P?"scrollTop":"scrollLeft",O=P?"top":"left",D=P?"bottom":"right",j=P?"clientHeight":"clientWidth",L=P?"height":"width",G={...g,component:u,allowScrollButtonsMobile:d,indicatorColor:p,orientation:h,vertical:P,scrollButtons:y,textColor:S,variant:E,visibleScrollbar:R,fixed:!M,hideScrollbar:M&&!R,scrollableX:M&&!P,scrollableY:M&&P,centered:i&&!M,scrollButtonsHideMobile:!d},B=useUtilityClasses$3(G),F=useSlotProps({elementType:v.startScrollButtonIcon,externalSlotProps:x.startScrollButtonIcon,ownerState:G}),W=useSlotProps({elementType:v.endScrollButtonIcon,externalSlotProps:x.endScrollButtonIcon,ownerState:G}),[V,U]=l.useState(!1),[Z,K]=l.useState(Oc),[H,Y]=l.useState(!1),[$,Q]=l.useState(!1),[X,J]=l.useState(!1),q=!1===w?null:w,[ee,te]=l.useState(!1),[ge,ne]=l.useState({overflow:"hidden",scrollbarWidth:0}),re=new Map,oe=l.useRef(null),ae=l.useRef(null),Ae={slots:v,slotProps:x},getTabsMeta=()=>{const e=oe.current;let t,g;if(e){const g=e.getBoundingClientRect();t={clientWidth:e.clientWidth,scrollLeft:e.scrollLeft,scrollTop:e.scrollTop,scrollWidth:e.scrollWidth,top:g.top,bottom:g.bottom,left:g.left,right:g.right}}if(e&&!1!==w){const e=ae.current.children;if(e.length>0){const t=e[re.get(w)];g=t?t.getBoundingClientRect():null}}return{tabsMeta:t,tabMeta:g}},Ce=gI(()=>{const{tabsMeta:e,tabMeta:t}=getTabsMeta();let g,n=0;P?(g="top",t&&e&&(n=t.top-e.top+e.scrollTop)):(g=o?"right":"left",t&&e&&(n=(o?-1:1)*(t[g]-e[g]+e.scrollLeft)));const a={[g]:n,[L]:t?t[L]:0};if("number"!=typeof Z[g]||"number"!=typeof Z[L])K(a);else{const e=Math.abs(Z[g]-a[g]),t=Math.abs(Z[L]-a[L]);(e>=1||t>=1)&&K(a)}}),scroll=(e,{animation:t=!0}={})=>{t?animate(N,oe.current,e,{duration:n.transitions.duration.standard}):oe.current[N]=e},moveTabsScroll=e=>{let t=oe.current[N];t+=P?e:e*(o?-1:1),scroll(t)},getScrollSize=()=>{const e=oe.current[j];let t=0;const g=Array.from(ae.current.children);for(let n=0;n<g.length;n+=1){const o=g[n];if(t+o[j]>e){0===n&&(t=e);break}t+=o[j]}return t},handleStartScrollClick=()=>{moveTabsScroll(-1*getScrollSize())},handleEndScrollClick=()=>{moveTabsScroll(getScrollSize())},[Ie,{onChange:ie,...se}]=useSlot("scrollbar",{className:clsx(B.scrollableX,B.hideScrollbar),elementType:zc,shouldForwardComponentProp:!0,externalForwardedProps:Ae,ownerState:G}),le=l.useCallback(e=>{ie?.(e),ne({overflow:null,scrollbarWidth:e})},[ie]),[ce,ue]=useSlot("scrollButtons",{className:B.scrollButtons,elementType:Ec,externalForwardedProps:Ae,ownerState:G,additionalProps:{orientation:h,slots:{StartScrollButtonIcon:v.startScrollButtonIcon,EndScrollButtonIcon:v.endScrollButtonIcon},slotProps:{startScrollButtonIcon:F,endScrollButtonIcon:W}}}),getConditionalElements=()=>{const e={};e.scrollbarSizeListener=M?(0,ja.jsx)(Ie,{...se,onChange:le}):null;const t=M&&("auto"===y&&(H||$)||!0===y);return e.scrollButtonStart=t?(0,ja.jsx)(ce,{direction:o?"right":"left",onClick:handleStartScrollClick,disabled:!H,...ue}):null,e.scrollButtonEnd=t?(0,ja.jsx)(ce,{direction:o?"left":"right",onClick:handleEndScrollClick,disabled:!$,...ue}):null,e},de=gI(e=>{const{tabsMeta:t,tabMeta:g}=getTabsMeta();g&&t&&(g[O]<t[O]?scroll(t[N]+(g[O]-t[O]),{animation:e}):g[D]>t[D]&&scroll(t[N]+(g[D]-t[D]),{animation:e}))}),pe=gI(()=>{M&&!1!==y&&J(!X)});l.useEffect(()=>{const e=cI(()=>{oe.current&&Ce()});let t;const handleMutation=g=>{g.forEach(e=>{e.removedNodes.forEach(e=>{t?.unobserve(e)}),e.addedNodes.forEach(e=>{t?.observe(e)})}),e(),pe()},g=oI(oe.current);let n;return g.addEventListener("resize",e),"undefined"!=typeof ResizeObserver&&(t=new ResizeObserver(e),Array.from(ae.current.children).forEach(e=>{t.observe(e)})),"undefined"!=typeof MutationObserver&&(n=new MutationObserver(handleMutation),n.observe(ae.current,{childList:!0})),()=>{e.clear(),g.removeEventListener("resize",e),n?.disconnect(),t?.disconnect()}},[Ce,pe]),l.useEffect(()=>{const e=Array.from(ae.current.children),t=e.length;if("undefined"!=typeof IntersectionObserver&&t>0&&M&&!1!==y){const g=e[0],n=e[t-1],o={root:oe.current,threshold:.99},a=new IntersectionObserver(e=>{Y(!e[0].isIntersecting)},o);a.observe(g);const C=new IntersectionObserver(e=>{Q(!e[0].isIntersecting)},o);return C.observe(n),()=>{a.disconnect(),C.disconnect()}}},[M,y,X,s?.length]),l.useEffect(()=>{U(!0)},[]),l.useEffect(()=>{Ce()}),l.useEffect(()=>{de(Oc!==Z)},[de,Z]),l.useImperativeHandle(I,()=>({updateIndicator:Ce,updateScrollButtons:pe}),[Ce,pe]);const[me,fe]=useSlot("indicator",{className:B.indicator,elementType:Nc,externalForwardedProps:Ae,ownerState:G,additionalProps:{style:Z}}),he=(0,ja.jsx)(me,{...fe}),ye=useRovingTabIndexRoot({activeItemId:ee?void 0:q,orientation:h,isRtl:o}),be=ye.getContainerProps(),ve=l.Children.toArray(s).filter(l.isValidElement).map((e,t)=>{const g=void 0===e.props.value?t:e.props.value;return re.set(g,t),{child:e,index:t,childValue:g}}).map(({child:e,childValue:t})=>{const g=t===w;return l.cloneElement(e,{fullWidth:"fullWidth"===E,indicator:g&&!V&&he,selected:g,selectionFollowsFocus:b,onChange:m,textColor:S,value:t})}),xe=getConditionalElements(),[Se,we]=useSlot("root",{ref:t,className:clsx(B.root,c),elementType:Tc,externalForwardedProps:{...Ae,...T,component:u},ownerState:G}),[ke,Ee]=useSlot("scroller",{ref:oe,className:B.scroller,elementType:Mc,externalForwardedProps:Ae,ownerState:G,additionalProps:{style:{overflow:ge.overflow,[P?"margin"+(o?"Left":"Right"):"marginBottom"]:R?void 0:-ge.scrollbarWidth}}}),Re=nI(be.ref,ae),handleKeyDown=e=>{const t=ae.current;"tab"===eI(qC(t))?.getAttribute("role")&&be.onKeyDown(e)},[Te,Me]=useSlot("list",{ref:Re,className:B.list,elementType:Pc,externalForwardedProps:Ae,ownerState:G,getSlotProps:e=>({...e,onBlur:t=>{JC(t.currentTarget,t.relatedTarget)||te(!1),e.onBlur?.(t)},onKeyDown:t=>{handleKeyDown(t),e.onKeyDown?.(t)},onFocus:t=>{te(!0),be.onFocus(t),e.onFocus?.(t)}})});return(0,ja.jsxs)(Se,{...we,children:[xe.scrollButtonStart,xe.scrollbarSizeListener,(0,ja.jsxs)(ke,{...Ee,children:[(0,ja.jsx)(Te,{"aria-label":a,"aria-labelledby":C,"aria-orientation":"vertical"===h?"vertical":null,role:"tablist",...Me,children:(0,ja.jsx)($C.Provider,{value:ye,children:ve})}),V&&he]}),xe.scrollButtonEnd]})}),selectPlayStatsSlice=e=>({instance:e.instance,session:e.session,month:e.month,updateInstance:e.updateInstance,updateSession:e.updateSession,updateMonth:e.updateMonth,resetInstance:e.resetInstance}),usePlayStats=()=>{const{stores:e}=useNexGui();return e.playStats(useShallow(selectPlayStatsSlice))},jc="metrics",Lc=Object.freeze(["instance","session","month"]),Gc=Object.freeze({instance:"Instance",session:"Session",month:"Month"}),Bc=1e3,Fc=35e4,Wc=45e4,getFlipTransform$7=e=>{switch(e){case 1:return"scaleX(-1) scaleY(-1)";case 2:return"scaleY(-1)";case 3:return"scaleX(-1)";default:return"none"}},formatNumber$1=e=>e.toLocaleString("en-US"),formatPercent=e=>`${e.toFixed(2)}%`,formatElapsed=(e,t=Date.now())=>{const g=Math.max(0,t-e),n=Math.floor(g/1e3),o=Math.floor(n/3600),a=Math.floor(n%3600/60);return[o>0?`${o}h`:null,o>0||a>0?`${a}m`:null,n%60+"s"].filter(Boolean).join(" ")},formatPerHour=(e,t,g=Date.now())=>{const n=Math.max(0,g-t)/36e5,o=parseInt(e/n,10);return o>0?formatNumber$1(o):"0"},resolveActiveTabId$2=e=>"string"==typeof e&&Lc.includes(e)?e:"number"==typeof e?Lc[e]??"month":"month",Vc={kills:xC.default.number.isRequired,goldGained:xC.default.number.isRequired,xpPercent:xC.default.number.isRequired,xpValue:xC.default.number.isRequired,deaths:xC.default.number.isRequired,startedAt:xC.default.number.isRequired},_c=xC.default.shape(Vc),Uc=xC.default.shape({...Vc,goldCap:xC.default.number.isRequired,year:xC.default.number,month:xC.default.number}),StatTable=({rows:e})=>React.createElement(fC,{component:"table",sx:{borderCollapse:"collapse","& td":{pb:.5,pr:2,verticalAlign:"top"},"& td:last-of-type":{fontVariantNumeric:"tabular-nums"}}},React.createElement("tbody",null,e.map((e,t)=>React.createElement("tr",{key:`${e.label}-${t}`},React.createElement("td",null,e.label),React.createElement("td",null,e.value)))));StatTable.displayName="MetricsPanelStatTable",StatTable.propTypes={rows:xC.default.arrayOf(xC.default.shape({label:xC.default.string.isRequired,value:xC.default.node.isRequired})).isRequired};var LinearProgressWithLabel=({label:e,value:t})=>React.createElement(fC,{sx:{mt:2}},React.createElement(fC,{sx:{fontSize:"9px",mb:.25}},e),React.createElement(fC,{sx:{alignItems:"center",display:"flex"}},React.createElement(fC,{sx:{mr:1,width:"100%"}},React.createElement(fc,{"aria-label":e,sx:{borderRadius:5,height:5},value:t,variant:"determinate"})),React.createElement(fC,{sx:{minWidth:35}},React.createElement(RC,{color:"text.secondary",variant:"body2"},`${t}%`))));LinearProgressWithLabel.displayName="MetricsPanelLinearProgressWithLabel",LinearProgressWithLabel.propTypes={label:xC.default.string.isRequired,value:xC.default.number.isRequired};var MonthGoldCap=({goldCap:e})=>React.createElement(fC,{sx:{mt:1}},React.createElement(LinearProgressWithLabel,{label:"Soft Gold Cap",value:e<=Fc?parseInt(e/Fc*100,10):100}),React.createElement(LinearProgressWithLabel,{label:"Hard Gold Cap",value:e<=Wc?parseInt(e/Wc*100,10):100}));MonthGoldCap.displayName="MetricsPanelMonthGoldCap",MonthGoldCap.propTypes={goldCap:xC.default.number.isRequired};var ScopeContent=({now:e,onReset:t,scope:g,scopeKey:n})=>{const o=(0,l.useMemo)(()=>{const t=[{label:"Total Kills:",value:formatNumber$1(g.kills)},{label:"Total Gold:",value:formatNumber$1(g.goldGained)},{label:"Total XP:",value:formatPercent(g.xpPercent)},{label:"Total XP:",value:formatNumber$1(g.xpValue)},{label:"Total Deaths:",value:formatNumber$1(g.deaths)}];return"month"!==n?[...t,{label:"Time:",value:formatElapsed(g.startedAt,e)},{label:"XP/Hr:",value:formatPerHour(g.xpValue,g.startedAt,e)},{label:"Gold/Hr:",value:formatPerHour(g.goldGained,g.startedAt,e)}]:[...t,{label:"Gold Cap:",value:formatNumber$1(g.goldCap)}]},[e,g,n]);return React.createElement(fC,null,React.createElement(StatTable,{rows:o}),"instance"===n?React.createElement(Zi,{onClick:t,sx:{mt:1},variant:"outlined"},"Reset"):null,"month"===n?React.createElement(MonthGoldCap,{goldCap:g.goldCap}):null)};ScopeContent.displayName="MetricsPanelScopeContent",ScopeContent.propTypes={now:xC.default.number.isRequired,onReset:xC.default.func.isRequired,scope:xC.default.oneOfType([_c,Uc]).isRequired,scopeKey:xC.default.oneOf(["instance","session","month"]).isRequired};var MetricsPanelInner=()=>{const e=useTheme$1(),{activeTab:t,setActiveTab:g}=useUi(),{instance:n,session:o,month:a,resetInstance:C}=usePlayStats(),[I]=(0,l.useState)(()=>Math.floor(4*Math.random())),[i,s]=(0,l.useState)(()=>Date.now()),c=e?.nexGui?.backgroundImage??"",u=e?.nexGui?.backgroundOpacity??.5,d=e?.nexGui?.backgroundFilter??"none",p=resolveActiveTabId$2(t[jc]),m={instance:n,session:o,month:a};(0,l.useEffect)(()=>{if("month"===p)return void s(Date.now());s(Date.now());const e=window.setInterval(()=>{s(Date.now())},Bc);return()=>{window.clearInterval(e)}},[p]);const handleTabChange=(e,t)=>{const n=Lc.indexOf(t);n>=0&&g(jc,n)};return React.createElement(fC,{className:"metrics-panel",sx:{color:"text.primary",height:"100%",overflow:"hidden",position:"relative",width:"100%"}},c?React.createElement(fC,{"aria-hidden":"true",className:"metrics-panel__background",sx:{backgroundImage:`url(${c})`,backgroundPosition:"center",backgroundSize:"cover",filter:d,inset:0,opacity:u,position:"absolute",transform:getFlipTransform$7(I),zIndex:0}}):null,React.createElement(fC,{className:"metrics-panel__content",sx:{display:"flex",flexDirection:"column",fontFamily:e.typography.fontFamily,fontSize:e.nexusFontSize??e.typography.fontSize,height:"100%",position:"relative",width:"100%",zIndex:1}},React.createElement(fC,{sx:{borderBottom:1,borderColor:"divider"}},React.createElement(Dc,{"aria-label":"stats tabs",onChange:handleTabChange,value:p},Lc.map(e=>React.createElement(bc,{key:e,label:Gc[e],value:e})))),React.createElement(fC,{sx:{flex:1,overflowY:"auto",p:2}},React.createElement(RC,{component:"div",sx:{color:"text.primary",fontFamily:"inherit",fontSize:"inherit",position:"relative"}},React.createElement(ScopeContent,{now:i,onReset:C,scope:m[p],scopeKey:p})))))};MetricsPanelInner.displayName="MetricsPanelInner";var MetricsPanel=()=>React.createElement(TC,{panelName:"Metrics"},React.createElement(MetricsPanelInner,null));MetricsPanel.displayName="MetricsPanel";var Zc={id:xC.default.oneOfType([xC.default.number,xC.default.string]).isRequired,name:xC.default.string.isRequired},Kc=xC.default.shape(Zc),RoomNpcRowComponent=({indent:e=0,interactive:t=!1,isTarget:g=!1,npc:n,onContextMenu:o,onSelect:a})=>{const C=e>0?e:0,I=e>0?e:2;return React.createElement(fC,{className:["room-npc-row",t?"room-npc-row--interactive":"",g?"room-npc-row--target":""].filter(Boolean).join(" "),onClick:t?()=>a?.(n):void 0,onContextMenu:t?e=>{o?.(e,n)}:void 0,sx:{cursor:t?"pointer":"inherit",display:"table-row",outline:g?"1px solid red":""}},React.createElement(fC,{component:"div",sx:{color:"cyan",display:"table-cell",padding:`0px 5px 0px ${I}px`,whiteSpace:"nowrap"}},React.createElement(RC,{component:"span",sx:{color:"inherit",fontVariantNumeric:"tabular-nums"},variant:"body2"},n.id)),React.createElement(fC,{component:"div",sx:{display:"table-cell",padding:`0px 5px 0px ${C}px`,width:"100%"}},React.createElement(RC,{component:"span",sx:{color:"text.primary"},variant:"body2"},n.name)))};RoomNpcRowComponent.displayName="RoomNpcRow",RoomNpcRowComponent.propTypes={npc:Kc.isRequired,indent:xC.default.number,interactive:xC.default.bool,isTarget:xC.default.bool,onContextMenu:xC.default.func,onSelect:xC.default.func};var Hc=(0,l.memo)(RoomNpcRowComponent);Hc.displayName="RoomNpcRow",Hc.propTypes=RoomNpcRowComponent.propTypes;var selectTargetSlice=e=>({id:e.id,name:e.name,isPlayer:e.isPlayer,hpPercent:e.hpPercent,hpText:e.hpText,hpDelta:e.hpDelta,gender:e.gender,currentAffs:e.currentAffs,limbs:e.limbs}),useTarget=()=>{const{stores:e}=useNexGui();return e.target(useShallow(selectTargetSlice))},Yc=[/a dervish/,/a sharp-toothed gremlin/,/a chaos orb/,/a bloodleech/,/a minion of chaos/,/a worm/,/a green slime/,/a soulmaster/,/a humbug/,/a chimera/,/a bubonis/,/a chaos storm/,/a chaos hound/,/a withered crone/,/a pathfinder/,/a doppleganger/,/an ethereal firelord/,/a simpering sycophant/,/a water weird/,/an eldritch abomination/,/Khaseem/],$c=[/a shipmate/,/a spectral shipmate/],Qc=[/a swarthy swashbuckler/],Xc=new Set(["guard","person-military-pointing"]),Jc=new Set(["face-angry-horns","fiend","monster"]),qc=new Set(["humanoid","person"]),getFlipTransform$6=e=>{switch(e){case 1:return"scaleX(-1) scaleY(-1)";case 2:return"scaleY(-1)";case 3:return"scaleX(-1)";default:return"none"}},partition=(e,t)=>e.reduce((e,g,n,o)=>(t(g,n,o)?e[0].push(g):e[1].push(g),e),[[],[]]),toNpcEntry=e=>e&&"object"==typeof e&&"string"==typeof e.name?{...e,id:e.id??e.name}:"string"==typeof e?{attrib:"m",id:e,name:e}:null,matchesPatternList=(e,t)=>"string"==typeof e&&t.some(t=>t.test(e)),isVisibleNpc=e=>"m"===e?.attrib||"mx"===e?.attrib,isGuardNpc=e=>Xc.has(e?.icon??"")&&"mx"===e?.attrib,isEntityNpc=e=>Jc.has(e?.icon??"")&&matchesPatternList(e?.name,Yc),isShipmateNpc=e=>matchesPatternList(e?.name,$c),isSwashbucklerNpc=e=>qc.has(e?.icon??"")&&matchesPatternList(e?.name,Qc),isTargetNpc=(e,t)=>!t.isPlayer&&null!=e?.id&&null!=t.id&&String(e.id)===String(t.id),NpcGroupHeader=({count:e,expanded:t,onToggle:g,title:n})=>e<1?null:React.createElement(fC,{className:"npcs-panel__group-header",onClick:g,sx:{cursor:"pointer",display:"table-row"}},React.createElement(fC,{component:"div",sx:{color:"cyan",display:"table-cell",fontFamily:"monospace",padding:"0px 5px 0px 0px",pl:"1rem",whiteSpace:"nowrap"}},React.createElement(RC,{component:"span",sx:{color:"inherit",fontFamily:"inherit"},variant:"body2"},t?"-":"+ ")),React.createElement(fC,{component:"div",sx:{display:"table-cell"}},React.createElement(RC,{component:"span",sx:{color:"text.primary"},variant:"body2"},"(",e,") ",n)));NpcGroupHeader.displayName="NpcGroupHeader",NpcGroupHeader.propTypes={count:xC.default.number.isRequired,expanded:xC.default.bool.isRequired,onToggle:xC.default.func.isRequired,title:xC.default.string.isRequired};var NpcsPanelInner=()=>{const e=useTheme$1(),{adapter:t}=useNexGui(),{npcs:g}=useRoom(),n=useTarget(),[o]=(0,l.useState)(()=>Math.floor(4*Math.random())),[a,C]=(0,l.useState)(!1),[I,i]=(0,l.useState)(!1),[s,c]=(0,l.useState)(!1),[u,d]=(0,l.useState)(!1),p=e?.nexGui?.backgroundImage??"",m=e?.nexGui?.backgroundOpacity??.5,h=e?.nexGui?.backgroundFilter??"none",y=(0,l.useMemo)(()=>(g??[]).map(e=>toNpcEntry(e)).filter(Boolean),[g]),b=(0,l.useMemo)(()=>{let e=[],t=[],g=[],n=[],o=y;return[e,o]=partition(o,isGuardNpc),[t,o]=partition(o,isEntityNpc),[g,o]=partition(o,isShipmateNpc),[n,o]=partition(o,isSwashbucklerNpc),{guards:e,entities:t,shipmates:g,swashbucklers:n,npcs:o.filter(isVisibleNpc)}},[y]),handleNpcSelect=e=>{null!=e?.id&&t.send(`settarget ${e.id}`)},handleNpcContextMenu=e=>{e.preventDefault(),t.notice?.("RIGHT CLICK RIGHT CLICK RIGHT CLICK")};return React.createElement(fC,{className:"npcs-panel",sx:{height:"100%",overflow:"hidden",position:"relative",width:"100%"}},p?React.createElement(fC,{"aria-hidden":"true",className:"npcs-panel__background",sx:{backgroundImage:`url(${p})`,backgroundPosition:"center",backgroundSize:"cover",filter:h,inset:0,opacity:m,position:"absolute",transform:getFlipTransform$6(o),zIndex:0}}):null,React.createElement(fC,{className:"npcs-panel__content",sx:{background:`linear-gradient(180deg, ${alpha("#050505",.18)} 0%, ${alpha("#050505",.36)} 100%)`,color:"text.primary",height:"100%",overflow:"auto",position:"relative",width:"100%",zIndex:1}},React.createElement(fC,{className:"npcs-panel__rows",sx:{cursor:"pointer",display:"table",fontSize:e.typography.fontSize,m:"10px",maxWidth:"100%",p:"1px",position:"relative",textAlign:"left"}},React.createElement(NpcGroupHeader,{count:b.guards.length,expanded:I,onToggle:()=>i(e=>!e),title:"City Guards"}),I?b.guards.map(e=>React.createElement(Hc,{key:`guard-${e.id}`,indent:12,isTarget:isTargetNpc(e,n),npc:e})):null,React.createElement(NpcGroupHeader,{count:b.entities.length,expanded:a,onToggle:()=>C(e=>!e),title:"Entities"}),a?b.entities.map(e=>React.createElement(Hc,{key:`entity-${e.id}`,indent:12,isTarget:isTargetNpc(e,n),npc:e})):null,React.createElement(NpcGroupHeader,{count:b.shipmates.length,expanded:s,onToggle:()=>c(e=>!e),title:"Shipmates"}),s?b.shipmates.map(e=>React.createElement(Hc,{key:`shipmate-${e.id}`,indent:12,isTarget:isTargetNpc(e,n),npc:e})):null,React.createElement(NpcGroupHeader,{count:b.swashbucklers.length,expanded:u,onToggle:()=>d(e=>!e),title:"Swashbucklers"}),u?b.swashbucklers.map(e=>React.createElement(Hc,{key:`swashbuckler-${e.id}`,indent:12,isTarget:isTargetNpc(e,n),npc:e})):null,b.npcs.map(e=>React.createElement(Hc,{key:`npc-${e.id}`,interactive:!0,isTarget:isTargetNpc(e,n),npc:e,onContextMenu:handleNpcContextMenu,onSelect:handleNpcSelect})))))};NpcsPanelInner.displayName="NpcsPanelInner";var NpcsPanel=()=>React.createElement(TC,{panelName:"NPCs"},React.createElement(NpcsPanelInner,null));NpcsPanel.displayName="NpcsPanel";var eu=Object.freeze([]),tu=xC.default.shape({content:xC.default.node,id:xC.default.string.isRequired,label:xC.default.node.isRequired}),resolveActiveTabId$1=(e,t)=>e.some(e=>e.id===t)?t:e[0]?.id??!1,getFlipTransform$5=e=>{switch(e){case 1:return"scaleX(-1) scaleY(-1)";case 2:return"scaleY(-1)";case 3:return"scaleX(-1)";default:return"none"}},TabContainerComponent=({tabs:e=eu,activeTab:t=null,backgroundImage:g="",backgroundOpacity:n=.5,backgroundFilter:o="none",onTabChange:a})=>{const[C]=(0,l.useState)(()=>Math.floor(4*Math.random())),I=resolveActiveTabId$1(e,t),i=e.find(e=>e.id===I)??null;return 0===e.length?null:React.createElement(fC,{className:"nexgui4-tab-container",sx:{display:"flex",flex:1,flexDirection:"column",height:"100%",minHeight:0,minWidth:0,overflow:"hidden",position:"relative",width:"100%"}},g?React.createElement(fC,{"aria-hidden":"true",className:"nexgui4-tab-container__background",sx:{backgroundImage:`url(${g})`,backgroundPosition:"center",backgroundSize:"cover",filter:o,inset:0,opacity:n,position:"absolute",transform:getFlipTransform$5(C),zIndex:0}}):null,React.createElement(fC,{className:"nexgui4-tab-container__surface",sx:{display:"flex",flex:1,flexDirection:"column",minHeight:0,minWidth:0,position:"relative",zIndex:1}},React.createElement(Dc,{allowScrollButtonsMobile:!0,"aria-label":"Panel tabs",className:"nexgui4-tab-container__tabs",onChange:(e,t)=>a(t),scrollButtons:"auto",sx:{borderBottom:1,borderColor:"divider",minHeight:40,"& .MuiTab-root":{minHeight:40,textTransform:"none"}},value:I,variant:"scrollable"},e.map(e=>React.createElement(bc,{"aria-controls":`nexgui4-tab-panel-${e.id}`,id:`nexgui4-tab-${e.id}`,key:e.id,label:e.label,value:e.id}))),React.createElement(fC,{"aria-labelledby":i?`nexgui4-tab-${i.id}`:void 0,className:"nexgui4-tab-container__tabpanel",id:i?`nexgui4-tab-panel-${i.id}`:void 0,role:"tabpanel",sx:{display:"flex",flex:1,minHeight:0,minWidth:0,overflow:"auto",p:2,position:"relative",zIndex:1}},i?.content??null)))};TabContainerComponent.displayName="TabContainer",TabContainerComponent.propTypes={activeTab:xC.default.oneOfType([xC.default.string,xC.default.oneOf([null])]),backgroundFilter:xC.default.string,backgroundImage:xC.default.string,backgroundOpacity:xC.default.number,onTabChange:xC.default.func.isRequired,tabs:xC.default.arrayOf(tu)};var gu=(0,l.memo)(TabContainerComponent);gu.displayName="TabContainer",gu.propTypes=TabContainerComponent.propTypes;var nu="bottom",ru="right",ou="left",au="auto",Au=["top",nu,ru,ou],Cu="start",Iu="clippingParents",iu="viewport",su="popper",lu="reference",cu=Au.reduce(function(e,t){return e.concat([t+"-"+Cu,t+"-end"])},[]),uu=[].concat(Au,[au]).reduce(function(e,t){return e.concat([t,t+"-"+Cu,t+"-end"])},[]),du=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function getNodeName(e){return e?(e.nodeName||"").toLowerCase():null}function getWindow(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function isElement(e){return e instanceof getWindow(e).Element||e instanceof Element}function isHTMLElement$1(e){return e instanceof getWindow(e).HTMLElement||e instanceof HTMLElement}function isShadowRoot(e){return"undefined"!=typeof ShadowRoot&&(e instanceof getWindow(e).ShadowRoot||e instanceof ShadowRoot)}function applyStyles(e){var t=e.state;Object.keys(t.elements).forEach(function(e){var g=t.styles[e]||{},n=t.attributes[e]||{},o=t.elements[e];isHTMLElement$1(o)&&getNodeName(o)&&(Object.assign(o.style,g),Object.keys(n).forEach(function(e){var t=n[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)}))})}function effect$2(e){var t=e.state,g={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,g.popper),t.styles=g,t.elements.arrow&&Object.assign(t.elements.arrow.style,g.arrow),function(){Object.keys(t.elements).forEach(function(e){var n=t.elements[e],o=t.attributes[e]||{},a=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:g[e]).reduce(function(e,t){return e[t]="",e},{});isHTMLElement$1(n)&&getNodeName(n)&&(Object.assign(n.style,a),Object.keys(o).forEach(function(e){n.removeAttribute(e)}))})}}var pu={name:"applyStyles",enabled:!0,phase:"write",fn:applyStyles,effect:effect$2,requires:["computeStyles"]};function getBasePlacement(e){return e.split("-")[0]}var mu=Math.max,fu=Math.min,hu=Math.round;function getUAString(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function isLayoutViewport(){return!/^((?!chrome|android).)*safari/i.test(getUAString())}function getBoundingClientRect(e,t,g){void 0===t&&(t=!1),void 0===g&&(g=!1);var n=e.getBoundingClientRect(),o=1,a=1;t&&isHTMLElement$1(e)&&(o=e.offsetWidth>0&&hu(n.width)/e.offsetWidth||1,a=e.offsetHeight>0&&hu(n.height)/e.offsetHeight||1);var C=(isElement(e)?getWindow(e):window).visualViewport,I=!isLayoutViewport()&&g,i=(n.left+(I&&C?C.offsetLeft:0))/o,s=(n.top+(I&&C?C.offsetTop:0))/a,l=n.width/o,c=n.height/a;return{width:l,height:c,top:s,right:i+l,bottom:s+c,left:i,x:i,y:s}}function getLayoutRect(e){var t=getBoundingClientRect(e),g=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-g)<=1&&(g=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:g,height:n}}function contains(e,t){var g=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(g&&isShadowRoot(g)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function getComputedStyle(e){return getWindow(e).getComputedStyle(e)}function isTableElement(e){return["table","td","th"].indexOf(getNodeName(e))>=0}function getDocumentElement(e){return((isElement(e)?e.ownerDocument:e.document)||window.document).documentElement}function getParentNode(e){return"html"===getNodeName(e)?e:e.assignedSlot||e.parentNode||(isShadowRoot(e)?e.host:null)||getDocumentElement(e)}function getTrueOffsetParent(e){return isHTMLElement$1(e)&&"fixed"!==getComputedStyle(e).position?e.offsetParent:null}function getContainingBlock(e){var t=/firefox/i.test(getUAString());if(/Trident/i.test(getUAString())&&isHTMLElement$1(e)&&"fixed"===getComputedStyle(e).position)return null;var g=getParentNode(e);for(isShadowRoot(g)&&(g=g.host);isHTMLElement$1(g)&&["html","body"].indexOf(getNodeName(g))<0;){var n=getComputedStyle(g);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||t&&"filter"===n.willChange||t&&n.filter&&"none"!==n.filter)return g;g=g.parentNode}return null}function getOffsetParent(e){for(var t=getWindow(e),g=getTrueOffsetParent(e);g&&isTableElement(g)&&"static"===getComputedStyle(g).position;)g=getTrueOffsetParent(g);return g&&("html"===getNodeName(g)||"body"===getNodeName(g)&&"static"===getComputedStyle(g).position)?t:g||getContainingBlock(e)||t}function getMainAxisFromPlacement(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function within(e,t,g){return mu(e,fu(t,g))}function withinMaxClamp(e,t,g){var n=within(e,t,g);return n>g?g:n}function getFreshSideObject(){return{top:0,right:0,bottom:0,left:0}}function mergePaddingObject(e){return Object.assign({},getFreshSideObject(),e)}function expandToHashMap(e,t){return t.reduce(function(t,g){return t[g]=e,t},{})}var toPaddingObject=function(e,t){return mergePaddingObject("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:expandToHashMap(e,Au))};function arrow(e){var t,g=e.state,n=e.name,o=e.options,a=g.elements.arrow,C=g.modifiersData.popperOffsets,I=getBasePlacement(g.placement),i=getMainAxisFromPlacement(I),s=["left","right"].indexOf(I)>=0?"height":"width";if(a&&C){var l=toPaddingObject(o.padding,g),c=getLayoutRect(a),u="y"===i?"top":ou,d="y"===i?nu:ru,p=g.rects.reference[s]+g.rects.reference[i]-C[i]-g.rects.popper[s],m=C[i]-g.rects.reference[i],h=getOffsetParent(a),y=h?"y"===i?h.clientHeight||0:h.clientWidth||0:0,b=p/2-m/2,v=l[u],x=y-c[s]-l[d],S=y/2-c[s]/2+b,w=within(v,S,x),E=i;g.modifiersData[n]=((t={})[E]=w,t.centerOffset=w-S,t)}}function effect$1(e){var t=e.state,g=e.options.element,n=void 0===g?"[data-popper-arrow]":g;null!=n&&("string"!=typeof n||(n=t.elements.popper.querySelector(n)))&&contains(t.elements.popper,n)&&(t.elements.arrow=n)}function getVariation(e){return e.split("-")[1]}var yu={top:"auto",right:"auto",bottom:"auto",left:"auto"};function roundOffsetsByDPR(e,t){var g=e.x,n=e.y,o=t.devicePixelRatio||1;return{x:hu(g*o)/o||0,y:hu(n*o)/o||0}}function mapToStyles(e){var t,g=e.popper,n=e.popperRect,o=e.placement,a=e.variation,C=e.offsets,I=e.position,i=e.gpuAcceleration,s=e.adaptive,l=e.roundOffsets,c=e.isFixed,u=C.x,d=void 0===u?0:u,p=C.y,m=void 0===p?0:p,h="function"==typeof l?l({x:d,y:m}):{x:d,y:m};d=h.x,m=h.y;var y=C.hasOwnProperty("x"),b=C.hasOwnProperty("y"),v=ou,x="top",S=window;if(s){var w=getOffsetParent(g),E="clientHeight",R="clientWidth";w===getWindow(g)&&"static"!==getComputedStyle(w=getDocumentElement(g)).position&&"absolute"===I&&(E="scrollHeight",R="scrollWidth"),("top"===o||("left"===o||"right"===o)&&"end"===a)&&(x=nu,m-=(c&&w===S&&S.visualViewport?S.visualViewport.height:w[E])-n.height,m*=i?1:-1),"left"!==o&&("top"!==o&&"bottom"!==o||"end"!==a)||(v=ru,d-=(c&&w===S&&S.visualViewport?S.visualViewport.width:w[R])-n.width,d*=i?1:-1)}var T,M=Object.assign({position:I},s&&yu),P=!0===l?roundOffsetsByDPR({x:d,y:m},getWindow(g)):{x:d,y:m};return d=P.x,m=P.y,i?Object.assign({},M,((T={})[x]=b?"0":"",T[v]=y?"0":"",T.transform=(S.devicePixelRatio||1)<=1?"translate("+d+"px, "+m+"px)":"translate3d("+d+"px, "+m+"px, 0)",T)):Object.assign({},M,((t={})[x]=b?m+"px":"",t[v]=y?d+"px":"",t.transform="",t))}function computeStyles(e){var t=e.state,g=e.options,n=g.gpuAcceleration,o=void 0===n||n,a=g.adaptive,C=void 0===a||a,I=g.roundOffsets,i=void 0===I||I,s={placement:getBasePlacement(t.placement),variation:getVariation(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,mapToStyles(Object.assign({},s,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:C,roundOffsets:i})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,mapToStyles(Object.assign({},s,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:i})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var bu={passive:!0};function effect(e){var t=e.state,g=e.instance,n=e.options,o=n.scroll,a=void 0===o||o,C=n.resize,I=void 0===C||C,i=getWindow(t.elements.popper),s=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&s.forEach(function(e){e.addEventListener("scroll",g.update,bu)}),I&&i.addEventListener("resize",g.update,bu),function(){a&&s.forEach(function(e){e.removeEventListener("scroll",g.update,bu)}),I&&i.removeEventListener("resize",g.update,bu)}}var vu={left:"right",right:"left",bottom:"top",top:"bottom"};function getOppositePlacement(e){return e.replace(/left|right|bottom|top/g,function(e){return vu[e]})}var xu={start:"end",end:"start"};function getOppositeVariationPlacement(e){return e.replace(/start|end/g,function(e){return xu[e]})}function getWindowScroll(e){var t=getWindow(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function getWindowScrollBarX(e){return getBoundingClientRect(getDocumentElement(e)).left+getWindowScroll(e).scrollLeft}function getViewportRect(e,t){var g=getWindow(e),n=getDocumentElement(e),o=g.visualViewport,a=n.clientWidth,C=n.clientHeight,I=0,i=0;if(o){a=o.width,C=o.height;var s=isLayoutViewport();(s||!s&&"fixed"===t)&&(I=o.offsetLeft,i=o.offsetTop)}return{width:a,height:C,x:I+getWindowScrollBarX(e),y:i}}function getDocumentRect(e){var t,g=getDocumentElement(e),n=getWindowScroll(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=mu(g.scrollWidth,g.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),C=mu(g.scrollHeight,g.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),I=-n.scrollLeft+getWindowScrollBarX(e),i=-n.scrollTop;return"rtl"===getComputedStyle(o||g).direction&&(I+=mu(g.clientWidth,o?o.clientWidth:0)-a),{width:a,height:C,x:I,y:i}}function isScrollParent(e){var t=getComputedStyle(e),g=t.overflow,n=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(g+o+n)}function getScrollParent(e){return["html","body","#document"].indexOf(getNodeName(e))>=0?e.ownerDocument.body:isHTMLElement$1(e)&&isScrollParent(e)?e:getScrollParent(getParentNode(e))}function listScrollParents(e,t){var g;void 0===t&&(t=[]);var n=getScrollParent(e),o=n===(null==(g=e.ownerDocument)?void 0:g.body),a=getWindow(n),C=o?[a].concat(a.visualViewport||[],isScrollParent(n)?n:[]):n,I=t.concat(C);return o?I:I.concat(listScrollParents(getParentNode(C)))}function rectToClientRect(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function getInnerBoundingClientRect(e,t){var g=getBoundingClientRect(e,!1,"fixed"===t);return g.top=g.top+e.clientTop,g.left=g.left+e.clientLeft,g.bottom=g.top+e.clientHeight,g.right=g.left+e.clientWidth,g.width=e.clientWidth,g.height=e.clientHeight,g.x=g.left,g.y=g.top,g}function getClientRectFromMixedType(e,t,g){return"viewport"===t?rectToClientRect(getViewportRect(e,g)):isElement(t)?getInnerBoundingClientRect(t,g):rectToClientRect(getDocumentRect(getDocumentElement(e)))}function getClippingParents(e){var t=listScrollParents(getParentNode(e)),g=["absolute","fixed"].indexOf(getComputedStyle(e).position)>=0&&isHTMLElement$1(e)?getOffsetParent(e):e;return isElement(g)?t.filter(function(e){return isElement(e)&&contains(e,g)&&"body"!==getNodeName(e)}):[]}function getClippingRect(e,t,g,n){var o="clippingParents"===t?getClippingParents(e):[].concat(t),a=[].concat(o,[g]),C=a[0],I=a.reduce(function(t,g){var o=getClientRectFromMixedType(e,g,n);return t.top=mu(o.top,t.top),t.right=fu(o.right,t.right),t.bottom=fu(o.bottom,t.bottom),t.left=mu(o.left,t.left),t},getClientRectFromMixedType(e,C,n));return I.width=I.right-I.left,I.height=I.bottom-I.top,I.x=I.left,I.y=I.top,I}function computeOffsets(e){var t,g=e.reference,n=e.element,o=e.placement,a=o?getBasePlacement(o):null,C=o?getVariation(o):null,I=g.x+g.width/2-n.width/2,i=g.y+g.height/2-n.height/2;switch(a){case"top":t={x:I,y:g.y-n.height};break;case nu:t={x:I,y:g.y+g.height};break;case ru:t={x:g.x+g.width,y:i};break;case ou:t={x:g.x-n.width,y:i};break;default:t={x:g.x,y:g.y}}var s=a?getMainAxisFromPlacement(a):null;if(null!=s){var l="y"===s?"height":"width";switch(C){case Cu:t[s]=t[s]-(g[l]/2-n[l]/2);break;case"end":t[s]=t[s]+(g[l]/2-n[l]/2)}}return t}function detectOverflow(e,t){void 0===t&&(t={});var g=t,n=g.placement,o=void 0===n?e.placement:n,a=g.strategy,C=void 0===a?e.strategy:a,I=g.boundary,i=void 0===I?Iu:I,s=g.rootBoundary,l=void 0===s?iu:s,c=g.elementContext,u=void 0===c?su:c,d=g.altBoundary,p=void 0!==d&&d,m=g.padding,h=void 0===m?0:m,y=mergePaddingObject("number"!=typeof h?h:expandToHashMap(h,Au)),b="popper"===u?lu:su,v=e.rects.popper,x=e.elements[p?b:u],S=getClippingRect(isElement(x)?x:x.contextElement||getDocumentElement(e.elements.popper),i,l,C),w=getBoundingClientRect(e.elements.reference),E=computeOffsets({reference:w,element:v,strategy:"absolute",placement:o}),R=rectToClientRect(Object.assign({},v,E)),T="popper"===u?R:w,M={top:S.top-T.top+y.top,bottom:T.bottom-S.bottom+y.bottom,left:S.left-T.left+y.left,right:T.right-S.right+y.right},P=e.modifiersData.offset;if("popper"===u&&P){var N=P[o];Object.keys(M).forEach(function(e){var t=["right","bottom"].indexOf(e)>=0?1:-1,g=["top","bottom"].indexOf(e)>=0?"y":"x";M[e]+=N[g]*t})}return M}function computeAutoPlacement(e,t){void 0===t&&(t={});var g=t,n=g.placement,o=g.boundary,a=g.rootBoundary,C=g.padding,I=g.flipVariations,i=g.allowedAutoPlacements,s=void 0===i?uu:i,l=getVariation(n),c=l?I?cu:cu.filter(function(e){return getVariation(e)===l}):Au,u=c.filter(function(e){return s.indexOf(e)>=0});0===u.length&&(u=c);var d=u.reduce(function(t,g){return t[g]=detectOverflow(e,{placement:g,boundary:o,rootBoundary:a,padding:C})[getBasePlacement(g)],t},{});return Object.keys(d).sort(function(e,t){return d[e]-d[t]})}function getExpandedFallbackPlacements(e){if("auto"===getBasePlacement(e))return[];var t=getOppositePlacement(e);return[getOppositeVariationPlacement(e),t,getOppositeVariationPlacement(t)]}function flip(e){var t=e.state,g=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var o=g.mainAxis,a=void 0===o||o,C=g.altAxis,I=void 0===C||C,i=g.fallbackPlacements,s=g.padding,l=g.boundary,c=g.rootBoundary,u=g.altBoundary,d=g.flipVariations,p=void 0===d||d,m=g.allowedAutoPlacements,h=t.options.placement,y=getBasePlacement(h)===h,b=i||(y||!p?[getOppositePlacement(h)]:getExpandedFallbackPlacements(h)),v=[h].concat(b).reduce(function(e,g){return e.concat("auto"===getBasePlacement(g)?computeAutoPlacement(t,{placement:g,boundary:l,rootBoundary:c,padding:s,flipVariations:p,allowedAutoPlacements:m}):g)},[]),x=t.rects.reference,S=t.rects.popper,w=new Map,E=!0,R=v[0],T=0;T<v.length;T++){var M=v[T],P=getBasePlacement(M),N=getVariation(M)===Cu,O=["top",nu].indexOf(P)>=0,D=O?"width":"height",j=detectOverflow(t,{placement:M,boundary:l,rootBoundary:c,altBoundary:u,padding:s}),L=O?N?ru:ou:N?nu:"top";x[D]>S[D]&&(L=getOppositePlacement(L));var G=getOppositePlacement(L),B=[];if(a&&B.push(j[P]<=0),I&&B.push(j[L]<=0,j[G]<=0),B.every(function(e){return e})){R=M,E=!1;break}w.set(M,B)}if(E)for(var _loop=function(e){var t=v.find(function(t){var g=w.get(t);if(g)return g.slice(0,e).every(function(e){return e})});if(t)return R=t,"break"},F=p?3:1;F>0&&"break"!==_loop(F);F--);t.placement!==R&&(t.modifiersData[n]._skip=!0,t.placement=R,t.reset=!0)}}function getSideOffsets(e,t,g){return void 0===g&&(g={x:0,y:0}),{top:e.top-t.height-g.y,right:e.right-t.width+g.x,bottom:e.bottom-t.height+g.y,left:e.left-t.width-g.x}}function isAnySideFullyClipped(e){return["top",ru,nu,ou].some(function(t){return e[t]>=0})}function hide(e){var t=e.state,g=e.name,n=t.rects.reference,o=t.rects.popper,a=t.modifiersData.preventOverflow,C=detectOverflow(t,{elementContext:"reference"}),I=detectOverflow(t,{altBoundary:!0}),i=getSideOffsets(C,n),s=getSideOffsets(I,o,a),l=isAnySideFullyClipped(i),c=isAnySideFullyClipped(s);t.modifiersData[g]={referenceClippingOffsets:i,popperEscapeOffsets:s,isReferenceHidden:l,hasPopperEscaped:c},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":l,"data-popper-escaped":c})}function distanceAndSkiddingToXY(e,t,g){var n=getBasePlacement(e),o=["left","top"].indexOf(n)>=0?-1:1,a="function"==typeof g?g(Object.assign({},t,{placement:e})):g,C=a[0],I=a[1];return C=C||0,I=(I||0)*o,["left","right"].indexOf(n)>=0?{x:I,y:C}:{x:C,y:I}}function offset(e){var t=e.state,g=e.options,n=e.name,o=g.offset,a=void 0===o?[0,0]:o,C=uu.reduce(function(e,g){return e[g]=distanceAndSkiddingToXY(g,t.rects,a),e},{}),I=C[t.placement],i=I.x,s=I.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=i,t.modifiersData.popperOffsets.y+=s),t.modifiersData[n]=C}function popperOffsets(e){var t=e.state,g=e.name;t.modifiersData[g]=computeOffsets({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}function getAltAxis(e){return"x"===e?"y":"x"}function preventOverflow(e){var t=e.state,g=e.options,n=e.name,o=g.mainAxis,a=void 0===o||o,C=g.altAxis,I=void 0!==C&&C,i=g.boundary,s=g.rootBoundary,l=g.altBoundary,c=g.padding,u=g.tether,d=void 0===u||u,p=g.tetherOffset,m=void 0===p?0:p,h=detectOverflow(t,{boundary:i,rootBoundary:s,padding:c,altBoundary:l}),y=getBasePlacement(t.placement),b=getVariation(t.placement),v=!b,x=getMainAxisFromPlacement(y),S=getAltAxis(x),w=t.modifiersData.popperOffsets,E=t.rects.reference,R=t.rects.popper,T="function"==typeof m?m(Object.assign({},t.rects,{placement:t.placement})):m,M="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),P=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,N={x:0,y:0};if(w){if(a){var O,D="y"===x?"top":ou,j="y"===x?nu:ru,L="y"===x?"height":"width",G=w[x],B=G+h[D],F=G-h[j],W=d?-R[L]/2:0,V="start"===b?E[L]:R[L],U="start"===b?-R[L]:-E[L],Z=t.elements.arrow,K=d&&Z?getLayoutRect(Z):{width:0,height:0},H=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:getFreshSideObject(),Y=H[D],$=H[j],Q=within(0,E[L],K[L]),X=v?E[L]/2-W-Q-Y-M.mainAxis:V-Q-Y-M.mainAxis,J=v?-E[L]/2+W+Q+$+M.mainAxis:U+Q+$+M.mainAxis,q=t.elements.arrow&&getOffsetParent(t.elements.arrow),ee=q?"y"===x?q.clientTop||0:q.clientLeft||0:0,te=null!=(O=null==P?void 0:P[x])?O:0,ge=G+J-te,ne=within(d?fu(B,G+X-te-ee):B,G,d?mu(F,ge):F);w[x]=ne,N[x]=ne-G}if(I){var re,oe="x"===x?"top":ou,ae="x"===x?nu:ru,Ae=w[S],Ce="y"===S?"height":"width",Ie=Ae+h[oe],ie=Ae-h[ae],se=-1!==["top",ou].indexOf(y),le=null!=(re=null==P?void 0:P[S])?re:0,ce=se?Ie:Ae-E[Ce]-R[Ce]-le+M.altAxis,ue=se?Ae+E[Ce]+R[Ce]-le-M.altAxis:ie,de=d&&se?withinMaxClamp(ce,Ae,ue):within(d?ce:Ie,Ae,d?ue:ie);w[S]=de,N[S]=de-Ae}t.modifiersData[n]=N}}function getHTMLElementScroll(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function getNodeScroll(e){return e!==getWindow(e)&&isHTMLElement$1(e)?getHTMLElementScroll(e):getWindowScroll(e)}function isElementScaled(e){var t=e.getBoundingClientRect(),g=hu(t.width)/e.offsetWidth||1,n=hu(t.height)/e.offsetHeight||1;return 1!==g||1!==n}function getCompositeRect(e,t,g){void 0===g&&(g=!1);var n=isHTMLElement$1(t),o=isHTMLElement$1(t)&&isElementScaled(t),a=getDocumentElement(t),C=getBoundingClientRect(e,o,g),I={scrollLeft:0,scrollTop:0},i={x:0,y:0};return(n||!n&&!g)&&(("body"!==getNodeName(t)||isScrollParent(a))&&(I=getNodeScroll(t)),isHTMLElement$1(t)?((i=getBoundingClientRect(t,!0)).x+=t.clientLeft,i.y+=t.clientTop):a&&(i.x=getWindowScrollBarX(a))),{x:C.left+I.scrollLeft-i.x,y:C.top+I.scrollTop-i.y,width:C.width,height:C.height}}function order(e){var t=new Map,g=new Set,n=[];function sort(e){g.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach(function(e){if(!g.has(e)){var n=t.get(e);n&&sort(n)}}),n.push(e)}return e.forEach(function(e){t.set(e.name,e)}),e.forEach(function(e){g.has(e.name)||sort(e)}),n}function orderModifiers(e){var t=order(e);return du.reduce(function(e,g){return e.concat(t.filter(function(e){return e.phase===g}))},[])}function debounce(e){var t;return function(){return t||(t=new Promise(function(g){Promise.resolve().then(function(){t=void 0,g(e())})})),t}}function mergeByName(e){var t=e.reduce(function(e,t){var g=e[t.name];return e[t.name]=g?Object.assign({},g,t,{options:Object.assign({},g.options,t.options),data:Object.assign({},g.data,t.data)}):t,e},{});return Object.keys(t).map(function(e){return t[e]})}var Su={placement:"bottom",modifiers:[],strategy:"absolute"};function areValidElements(){for(var e=arguments.length,t=new Array(e),g=0;g<e;g++)t[g]=arguments[g];return!t.some(function(e){return!(e&&"function"==typeof e.getBoundingClientRect)})}function popperGenerator(e){void 0===e&&(e={});var t=e,g=t.defaultModifiers,n=void 0===g?[]:g,o=t.defaultOptions,a=void 0===o?Su:o;return function(e,t,g){void 0===g&&(g=a);var o={placement:"bottom",orderedModifiers:[],options:Object.assign({},Su,a),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},C=[],I=!1,i={state:o,setOptions:function(g){var C="function"==typeof g?g(o.options):g;cleanupModifierEffects(),o.options=Object.assign({},a,o.options,C),o.scrollParents={reference:isElement(e)?listScrollParents(e):e.contextElement?listScrollParents(e.contextElement):[],popper:listScrollParents(t)};var I=orderModifiers(mergeByName([].concat(n,o.options.modifiers)));return o.orderedModifiers=I.filter(function(e){return e.enabled}),runModifierEffects(),i.update()},forceUpdate:function(){if(!I){var e=o.elements,t=e.reference,g=e.popper;if(areValidElements(t,g)){o.rects={reference:getCompositeRect(t,getOffsetParent(g),"fixed"===o.options.strategy),popper:getLayoutRect(g)},o.reset=!1,o.placement=o.options.placement,o.orderedModifiers.forEach(function(e){return o.modifiersData[e.name]=Object.assign({},e.data)});for(var n=0;n<o.orderedModifiers.length;n++)if(!0!==o.reset){var a=o.orderedModifiers[n],C=a.fn,s=a.options,l=void 0===s?{}:s,c=a.name;"function"==typeof C&&(o=C({state:o,options:l,name:c,instance:i})||o)}else o.reset=!1,n=-1}}},update:debounce(function(){return new Promise(function(e){i.forceUpdate(),e(o)})}),destroy:function(){cleanupModifierEffects(),I=!0}};if(!areValidElements(e,t))return i;function runModifierEffects(){o.orderedModifiers.forEach(function(e){var t=e.name,g=e.options,n=void 0===g?{}:g,a=e.effect;if("function"==typeof a){var I=a({state:o,name:t,instance:i,options:n});C.push(I||function(){})}})}function cleanupModifierEffects(){C.forEach(function(e){return e()}),C=[]}return i.setOptions(g).then(function(e){!I&&g.onFirstUpdate&&g.onFirstUpdate(e)}),i}}var wu=popperGenerator({defaultModifiers:[{name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect,data:{}},{name:"popperOffsets",enabled:!0,phase:"read",fn:popperOffsets,data:{}},{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:computeStyles,data:{}},pu,{name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:offset},{name:"flip",enabled:!0,phase:"main",fn:flip,requiresIfExists:["offset"],data:{_skip:!1}},{name:"preventOverflow",enabled:!0,phase:"main",fn:preventOverflow,requiresIfExists:["offset"]},{name:"arrow",enabled:!0,phase:"main",fn:arrow,effect:effect$1,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:hide}]});function getPopperUtilityClass(e){return generateUtilityClass("MuiPopper",e)}function flipPlacement(e,t){if("ltr"===t)return e;switch(e){case"bottom-end":return"bottom-start";case"bottom-start":return"bottom-end";case"top-end":return"top-start";case"top-start":return"top-end";default:return e}}function resolveAnchorEl(e){return"function"==typeof e?e():e}function isHTMLElement(e){return void 0!==e.nodeType}generateUtilityClasses("MuiPopper",["root"]);var useUtilityClasses$2=e=>{const{classes:t}=e;return composeClasses({root:["root"]},getPopperUtilityClass,t)},ku={},Eu=l.forwardRef(function(e,t){const{anchorEl:g,children:n,direction:o,disablePortal:a,modifiers:C,open:I,placement:i,popperOptions:s,popperRef:c,slotProps:u={},slots:d={},TransitionProps:p,ownerState:m,...h}=e,y=l.useRef(null),b=useForkRef(y,t),v=l.useRef(null),x=useForkRef(v,c),S=l.useRef(x);RA(()=>{S.current=x},[x]),l.useImperativeHandle(c,()=>v.current,[]);const w=flipPlacement(i,o),[E,R]=l.useState(w),[T,M]=l.useState(resolveAnchorEl(g));l.useEffect(()=>{v.current&&v.current.forceUpdate()}),l.useEffect(()=>{g&&M(resolveAnchorEl(g))},[g]),RA(()=>{if(!T||!I)return;const handlePopperUpdate=e=>{R(e.placement)};let e=[{name:"preventOverflow",options:{altBoundary:a}},{name:"flip",options:{altBoundary:a}},{name:"onUpdate",enabled:!0,phase:"afterWrite",fn:({state:e})=>{handlePopperUpdate(e)}}];null!=C&&(e=e.concat(C)),s&&null!=s.modifiers&&(e=e.concat(s.modifiers));const t=wu(T,y.current,{placement:w,...s,modifiers:e});S.current(t);const g=y.current;return()=>{if(g){const{style:e}=g,n=e.position,o=e.top,a=e.left,C=e.transform;t.destroy(),e.position=n,e.top=o,e.left=a,e.transform=C}else t.destroy();S.current(null)}},[T,a,C,I,s,w]);const P={placement:E};null!==p&&(P.TransitionProps=p);const N=useUtilityClasses$2(e),O=d.root??"div";return(0,ja.jsx)(O,{...useSlotProps({elementType:O,externalSlotProps:u.root,externalForwardedProps:h,additionalProps:{role:"tooltip",ref:b},ownerState:e,className:N.root}),children:"function"==typeof n?n(P):n})}),Ru=l.forwardRef(function(e,t){const{anchorEl:g,children:n,container:o,direction:a="ltr",disablePortal:C=!1,keepMounted:I=!1,modifiers:i,open:s,placement:c="bottom",popperOptions:u=ku,popperRef:d,style:p,transition:m=!1,slotProps:h={},slots:y={},...b}=e,[v,x]=l.useState(!0),handleEnter=()=>{x(!1)},handleExited=()=>{x(!0)};if(!I&&!s&&(!m||v))return null;let S;if(o)S=o;else if(g){const e=resolveAnchorEl(g);S=e&&isHTMLElement(e)?ownerDocument(e).body:ownerDocument(null).body}const w=s||!I||m&&!v?void 0:"none",E=m?{in:s,onEnter:handleEnter,onExited:handleExited}:void 0;return(0,ja.jsx)(OI,{disablePortal:C,container:S,children:(0,ja.jsx)(Eu,{anchorEl:g,direction:a,disablePortal:C,modifiers:i,ref:t,open:m?!v:s,placement:c,popperOptions:u,popperRef:d,slotProps:h,slots:y,...b,style:{position:"fixed",top:0,left:0,display:w,...p},TransitionProps:E,children:n})})}),Tu=sC(Ru,{name:"MuiPopper",slot:"Root"})({}),Mu=l.forwardRef(function(e,t){const g=useRtl(),{anchorEl:n,component:o,container:a,disablePortal:C,keepMounted:I,modifiers:i,open:s,placement:l,popperOptions:c,popperRef:u,transition:d,slots:p,slotProps:m,...h}=useDefaultProps({props:e,name:"MuiPopper"}),y={anchorEl:n,container:a,disablePortal:C,keepMounted:I,modifiers:i,open:s,placement:l,popperOptions:c,popperRef:u,transition:d,...h};return(0,ja.jsx)(Tu,{as:o,direction:g?"rtl":"ltr",slots:p,slotProps:m,...y,ref:t})});function getTooltipUtilityClass(e){return generateUtilityClass("MuiTooltip",e)}var Pu=generateUtilityClasses("MuiTooltip",["popper","popperInteractive","popperArrow","popperClose","tooltip","tooltipArrow","touch","tooltipPlacementLeft","tooltipPlacementRight","tooltipPlacementTop","tooltipPlacementBottom","arrow"]);function round(e){return Math.round(1e5*e)/1e5}var useUtilityClasses$1=e=>{const{classes:t,disableInteractive:g,arrow:n,touch:o,placement:a}=e;return composeClasses({popper:["popper",!g&&"popperInteractive",n&&"popperArrow"],tooltip:["tooltip",n&&"tooltipArrow",o&&"touch",`tooltipPlacement${wC(a.split("-")[0])}`],arrow:["arrow"]},getTooltipUtilityClass,t)},Nu=sC(Mu,{name:"MuiTooltip",slot:"Popper",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.popper,!g.disableInteractive&&t.popperInteractive,g.arrow&&t.popperArrow,!g.open&&t.popperClose]}})(hC(({theme:e})=>({zIndex:(e.vars||e).zIndex.tooltip,pointerEvents:"none",variants:[{props:({ownerState:e,open:t})=>t&&!e.disableInteractive,style:{pointerEvents:"auto"}},{props:({ownerState:e})=>e.arrow,style:{[`&[data-popper-placement*="bottom"] .${Pu.arrow}`]:{top:0,marginTop:"-0.71em","&::before":{transformOrigin:"0 100%"}},[`&[data-popper-placement*="top"] .${Pu.arrow}`]:{bottom:0,marginBottom:"-0.71em","&::before":{transformOrigin:"100% 0"}},[`&[data-popper-placement*="right"] .${Pu.arrow}`]:{height:"1em",width:"0.71em",insetInlineStart:0,marginInlineStart:"-0.71em","&::before":{transformOrigin:"100% 100%"}},[`&[data-popper-placement*="left"] .${Pu.arrow}`]:{height:"1em",width:"0.71em",insetInlineEnd:0,marginInlineEnd:"-0.71em","&::before":{transformOrigin:"0 0"}}}}]}))),zu=sC("div",{name:"MuiTooltip",slot:"Tooltip",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.tooltip,g.touch&&t.touch,g.arrow&&t.tooltipArrow,t[`tooltipPlacement${wC(g.placement.split("-")[0])}`]]}})(hC(({theme:e})=>({backgroundColor:e.vars?e.vars.palette.Tooltip.bg:e.alpha(e.palette.grey[700],.92),borderRadius:(e.vars||e).shape.borderRadius,color:(e.vars||e).palette.common.white,fontFamily:e.typography.fontFamily,padding:"4px 8px",fontSize:e.typography.pxToRem(11),maxWidth:300,margin:2,wordWrap:"break-word",fontWeight:e.typography.fontWeightMedium,[`.${Pu.popper}[data-popper-placement*="left"] &`]:{transformOrigin:"right center",marginInlineEnd:"14px"},[`.${Pu.popper}[data-popper-placement*="right"] &`]:{transformOrigin:"left center",marginInlineStart:"14px"},[`.${Pu.popper}[data-popper-placement*="top"] &`]:{transformOrigin:"center bottom",marginBottom:"14px"},[`.${Pu.popper}[data-popper-placement*="bottom"] &`]:{transformOrigin:"center top",marginTop:"14px"},variants:[{props:({ownerState:e})=>e.arrow,style:{position:"relative",marginBlock:0}},{props:({ownerState:e})=>e.touch,style:{padding:"8px 16px",fontSize:e.typography.pxToRem(14),lineHeight:`${round(16/14)}em`,fontWeight:e.typography.fontWeightRegular}},{props:({ownerState:e})=>e.touch,style:{[`.${Pu.popper}[data-popper-placement*="left"] &`]:{marginInlineEnd:"24px"},[`.${Pu.popper}[data-popper-placement*="right"] &`]:{marginInlineStart:"24px"},[`.${Pu.popper}[data-popper-placement*="top"] &`]:{marginBottom:"24px"},[`.${Pu.popper}[data-popper-placement*="bottom"] &`]:{marginTop:"24px"}}}]}))),Ou=sC("span",{name:"MuiTooltip",slot:"Arrow"})(hC(({theme:e})=>({overflow:"hidden",position:"absolute",width:"1em",height:"0.71em",boxSizing:"border-box",color:e.vars?e.vars.palette.Tooltip.bg:e.alpha(e.palette.grey[700],.9),"&::before":{content:'""',margin:"auto",display:"block",width:"100%",height:"100%",backgroundColor:"currentColor",transform:"rotate(45deg)"}}))),Du=!1,ju=new pI,Lu={x:0,y:0};function composeEventHandler(e,t){return(g,...n)=>{t&&t(g,...n),e(g,...n)}}var Gu=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiTooltip"}),{arrow:n=!1,children:o,classes:a,describeChild:C=!1,disableFocusListener:I=!1,disableHoverListener:i=!1,disableInteractive:s=!1,disableTouchListener:c=!1,enterDelay:u=100,enterNextDelay:d=0,enterTouchDelay:p=700,followCursor:m=!1,id:h,leaveDelay:y=0,leaveTouchDelay:b=1500,onClose:v,onOpen:x,open:S,placement:w="bottom",slotProps:E={},slots:R={},title:T,...M}=g,P=l.isValidElement(o)?o:(0,ja.jsx)("span",{children:o}),N=useTheme$1(),[O,D]=l.useState(),[j,L]=l.useState(null),G=l.useRef(!1),B=s||m,F=useTimeout(),W=useTimeout(),V=useTimeout(),U=useTimeout(),[Z,K]=wi({controlled:S,default:!1,name:"Tooltip",state:"open"});let H=Z;const Y=li(h),$=l.useRef(),Q=gI(()=>{void 0!==$.current&&(document.body.style.WebkitUserSelect=$.current,$.current=void 0),U.clear()});l.useEffect(()=>Q,[Q]);const handleOpen=e=>{ju.clear(),Du=!0,K(!0),x&&!H&&x(e)},X=gI(e=>{ju.start(800+y,()=>{Du=!1}),K(!1),v&&H&&v(e),F.start(N.transitions.duration.shortest,()=>{G.current=!1})}),handleMouseOver=e=>{G.current&&"touchstart"!==e.type||(O&&O.removeAttribute("title"),W.clear(),V.clear(),u||Du&&d?W.start(Du?d:u,()=>{handleOpen(e)}):handleOpen(e))},handleMouseLeave=e=>{W.clear(),V.start(y,()=>{X(e)})},[,J]=l.useState(!1),handleBlur=e=>{const t=e?.target??O;if(!t||t.disabled||!isFocusVisible(t)){J(!1);const g=e??new Event("blur");!e&&t&&(Object.defineProperty(g,"target",{value:t}),Object.defineProperty(g,"currentTarget",{value:t})),handleMouseLeave(g)}},handleFocus=e=>{if(O||D(e.currentTarget),isFocusVisible(e.target)){const handleNativeBlur=e=>{e.target.disabled&&handleBlur(e),e.target.removeEventListener("blur",handleNativeBlur)};e.target.addEventListener("blur",handleNativeBlur),J(!0),handleMouseOver(e)}},detectTouchStart=e=>{G.current=!0;const t=P.props;t.onTouchStart&&t.onTouchStart(e)},handleTouchStart=e=>{detectTouchStart(e),V.clear(),F.clear(),Q(),$.current=document.body.style.WebkitUserSelect,document.body.style.WebkitUserSelect="none",U.start(p,()=>{document.body.style.WebkitUserSelect=$.current,handleMouseOver(e)})},handleTouchEnd=e=>{P.props.onTouchEnd&&P.props.onTouchEnd(e),Q(),V.start(b,()=>{X(e)})};l.useEffect(()=>{if(H)return document.addEventListener("keydown",handleKeyDown),()=>{document.removeEventListener("keydown",handleKeyDown)};function handleKeyDown(e){"Escape"===e.key&&X(e)}},[X,H]);const q=nI(getReactElementRef(P),D,t);T||0===T||(H=!1);const ee=l.useRef(),handleMouseMove=e=>{const t=P.props;t.onMouseMove&&t.onMouseMove(e),Lu={x:e.clientX,y:e.clientY},ee.current&&ee.current.update()},te={},ge="string"==typeof T;C?(te.title=H||!ge||i?null:T,te["aria-describedby"]=H?Y:null):(te["aria-label"]=ge?T:null,te["aria-labelledby"]=H&&!ge?Y:null);const ne={...te,...M,...P.props,className:clsx(M.className,P.props.className),onTouchStart:detectTouchStart,ref:q,...m?{onMouseMove:handleMouseMove}:{}},re={};c||(ne.onTouchStart=handleTouchStart,ne.onTouchEnd=handleTouchEnd),i||(ne.onMouseOver=composeEventHandler(handleMouseOver,ne.onMouseOver),ne.onMouseLeave=composeEventHandler(handleMouseLeave,ne.onMouseLeave),B||(re.onMouseOver=handleMouseOver,re.onMouseLeave=handleMouseLeave)),I||(ne.onFocus=composeEventHandler(handleFocus,ne.onFocus),ne.onBlur=composeEventHandler(handleBlur,ne.onBlur),B||(re.onFocus=handleFocus,re.onBlur=handleBlur));const oe={...g,arrow:n,disableInteractive:B,placement:w,touch:G.current},ae="function"==typeof E.popper?E.popper(oe):E.popper,Ae=l.useMemo(()=>{let e=[{name:"arrow",enabled:Boolean(j),options:{element:j,padding:4}}];return ae?.popperOptions?.modifiers&&(e=e.concat(ae.popperOptions.modifiers)),{...ae?.popperOptions,modifiers:e}},[j,ae?.popperOptions]),Ce=useUtilityClasses$1(oe),Ie={slots:R,slotProps:{arrow:E.arrow,popper:ae,tooltip:E.tooltip,transition:E.transition}},[ie,se]=useSlot("popper",{elementType:Nu,externalForwardedProps:Ie,ownerState:oe,className:Ce.popper}),[le,ce]=useSlot("transition",{elementType:MI,externalForwardedProps:Ie,ownerState:oe}),[ue,de]=useSlot("tooltip",{elementType:zu,className:Ce.tooltip,externalForwardedProps:Ie,ownerState:oe}),[pe,me]=useSlot("arrow",{elementType:Ou,className:Ce.arrow,externalForwardedProps:Ie,ownerState:oe,ref:L});return(0,ja.jsxs)(l.Fragment,{children:[l.cloneElement(P,ne),(0,ja.jsx)(ie,{as:Mu,placement:w,anchorEl:m?{getBoundingClientRect:()=>({top:Lu.y,left:Lu.x,right:Lu.x,bottom:Lu.y,width:0,height:0})}:O,popperRef:ee,open:!!O&&H,id:Y,transition:!0,...re,...se,popperOptions:Ae,children:({TransitionProps:e})=>(0,ja.jsx)(le,{timeout:N.transitions.duration.shorter,...e,...ce,children:(0,ja.jsxs)(ue,{...de,children:[T,n?(0,ja.jsx)(pe,{...me}):null]})})})]})}),Bu="title",Fu="popover",Wu={cursor:"help",display:"inline-flex",maxWidth:"100%"},renderLabel=(e,t,g)=>{const n=React.createElement(RC,{component:"span",variant:"body2"},e);return t?g===Bu?React.createElement(fC,{component:"span",sx:Wu,title:t},n):React.createElement(Gu,{describeChild:!0,placement:"top-start",title:t},React.createElement(fC,{component:"span",sx:Wu},n)):n},ConfigToggleComponent=({label:e,value:t,onChange:g,tooltip:n="",tooltipMode:o=Fu})=>React.createElement(Is,{control:React.createElement(fs,{checked:t,onChange:()=>g(!t)}),label:renderLabel(e,n,o),sx:{alignItems:"center",gap:1,justifyContent:"space-between",m:0,width:"100%","& .MuiFormControlLabel-label":{flex:1}}});ConfigToggleComponent.displayName="ConfigToggle",ConfigToggleComponent.propTypes={label:xC.default.string.isRequired,onChange:xC.default.func.isRequired,tooltip:xC.default.string,tooltipMode:xC.default.oneOf([Fu,Bu]),value:xC.default.bool.isRequired};var Vu=(0,l.memo)(ConfigToggleComponent);Vu.displayName="ConfigToggle",Vu.propTypes=ConfigToggleComponent.propTypes;var NOOP=()=>{},resolveCommand=e=>"function"==typeof e?e:NOOP,createNativeDisplayCommands=e=>Object.freeze({mount:resolveCommand(e?.mountNativeDisplay),unmount:resolveCommand(e?.unmountNativeDisplay)}),useNativeDisplayCommands=()=>{const{platformTabs:e}=useNexGui();return(0,l.useMemo)(()=>createNativeDisplayCommands(e),[e])},_u="sfx/arcade sound",Uu="nexGui4.netflixMode",Zu="nexGui4.netflixMode",Ku="https://images.ctfassets.net/y2ske730sjqp/821Wg4N9hJD8vs5FBcCGg/9eaf66123397cc61be14e40174123c40/Vector__3_.svg?w=460",Hu="netflixModeEmoteColor",Yu="netflixModeScenarios",$u="#afffff",Qu=/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/,resolveNetflixEmoteColor=e=>"string"==typeof e&&Qu.test(e.trim())?e.trim():$u,resolveNetflixScenarioEnabled=(e,t)=>{const g=e?.[t];return"boolean"!=typeof g||g},renderNetflixNoticeHtml=e=>`<span style="height:15px;overflow:hidden"><img src="${Ku}" style="height:16px"/> Mode ${e}.</span>`,resolveSelfName=e=>{const t=e?.getState?.()?.name;if(isNonEmptyString(t))return t.trim().toLowerCase();const g=globalThis.GMCP?.Char?.Status?.name;return isNonEmptyString(g)?g.trim().toLowerCase():null},Xu=Object.freeze([{id:"nameMentioned",label:"Name Mentioned",predicate:(e,{selfName:t})=>!(!t||"string"!=typeof e?.text)&&e.text.toLowerCase().includes(t)},{id:"saysChannel",label:"Says",predicate:e=>"says"===e?.channel},{id:"tellsChannel",label:"Tells",predicate:e=>"tells"===e?.channel}]),Ju=Object.freeze([{id:"emote",label:"Emote",regex:/^/,resolveFg:({emoteColor:e})=>e}]),qu=Object.freeze([{id:"affGot",label:"Aff Got",eventName:"nexsys4.aff.got"},{id:"defLost",label:"Def Lost",eventName:"nexsys4.def.lost"},{id:"damage",label:"Damage",eventName:"nexsys4.system.health.changed"},{id:"roomChanged",label:"Room Changed",eventName:"nexsys4.system.room.changed"}]),ed=Object.freeze([...Xu.map(({id:e,label:t})=>({id:e,label:t,source:"commChannel"})),...qu.map(({id:e,label:t})=>({id:e,label:t,source:"event"})),...Ju.map(({id:e,label:t})=>({id:e,label:t,source:"trigger"}))]),playNetflixSound=()=>{nexusclient.ui?.()?.sounds?.()?.play_sound?.(_u)},evaluateCommChannelPayload=(e,t,g)=>{for(const n of Xu)if(resolveNetflixScenarioEnabled(g,n.id)&&n.predicate(e??{},t))return!0;return!1},attachCommChannelListener=(e,t)=>{const handler=g=>{const n=resolveSelfName(e),o=t();evaluateCommChannelPayload(g,{selfName:n},o)&&playNetflixSound()};return eventStream.registerEvent("Comm.Channel.Text",handler,{id:Uu}),()=>{eventStream.removeListener("Comm.Channel.Text",Uu)}},attachTriggerScenarios=(e,t)=>{for(const g of Ju){if(!resolveNetflixScenarioEnabled(t,g.id))continue;const n=g.resolveFg?.({emoteColor:e})??g.fg;nexAction.triggers.add({id:`${Zu}.${g.id}`,regex:g.regex,tags:[Zu],fg:n,action:playNetflixSound})}return()=>{nexAction.triggers.remove([Zu])}},areTriggerScenarioOverridesEqual=(e,t)=>{for(const g of Ju)if(resolveNetflixScenarioEnabled(e,g.id)!==resolveNetflixScenarioEnabled(t,g.id))return!1;return!0},attachEventScenarios=e=>{const t=[];for(const g of qu){const n=`${Uu}.eventScenario.${g.id}`,handler=t=>{resolveNetflixScenarioEnabled(e(),g.id)&&(g.predicate&&!g.predicate(t)||playNetflixSound())};eventStream.registerEvent(g.eventName,handler,{id:n}),t.push(()=>eventStream.removeListener(g.eventName,n))}return()=>{for(const e of t)e()}},readEmoteColorFromUiState=e=>resolveNetflixEmoteColor(e?.settings?.[Hu]),readScenarioOverridesFromUiState=e=>e?.settings?.netflixModeScenarios??null,createNetflixModeController=({adapter:e,uiStore:t,characterStore:g})=>{if(!t||"function"!=typeof t.getState||"function"!=typeof t.subscribe)return()=>{};let n=null,o=null,a=null,C=!1,I=null,i=null;const getScenarioOverrides=()=>readScenarioOverridesFromUiState(t.getState()),enable=(t,s)=>{C||(n=attachCommChannelListener(g,getScenarioOverrides),o=attachTriggerScenarios(t,s),a=attachEventScenarios(getScenarioOverrides),I=t,i=s,C=!0,e?.notice?.(renderNetflixNoticeHtml("Enabled"),{html:!0}))},disable=()=>{C&&(n?.(),o?.(),a?.(),n=null,o=null,a=null,I=null,i=null,C=!1,e?.notice?.(renderNetflixNoticeHtml("Disabled"),{html:!0}))},reattachTriggers=(e,t)=>{o?.(),o=attachTriggerScenarios(e,t),I=e,i=t},sync=e=>{const t=readEmoteColorFromUiState(e),g=readScenarioOverridesFromUiState(e);if(e?.netflixMode){if(!C)return void enable(t,g);const e=t!==I,n=!areTriggerScenarioOverridesEqual(g,i);(e||n)&&reattachTriggers(t,g)}else disable()};sync(t.getState());const s=t.subscribe((e,t)=>{const g=Boolean(e?.netflixMode),n=Boolean(t?.netflixMode),o=readEmoteColorFromUiState(e),a=readEmoteColorFromUiState(t),C=readScenarioOverridesFromUiState(e),I=readScenarioOverridesFromUiState(t);g===n&&o===a&&C===I||sync(e)});return()=>{s(),C&&(n?.(),o?.(),a?.(),n=null,o=null,a=null,I=null,i=null,C=!1)}},useNetflixModeSettings=()=>{const{stores:e}=useNexGui(),t=e.ui(e=>e.netflixMode),g=e.ui(e=>e.setNetflixMode),n=e.ui(e=>e.settings?.[Hu]),o=e.ui(e=>e.settings?.[Yu]),a=e.ui(e=>e.setSetting),C=(0,l.useCallback)(e=>{a(Hu,resolveNetflixEmoteColor(e))},[a]),I=(0,l.useCallback)((t,g)=>{a(Yu,{...e.ui.getState().settings?.netflixModeScenarios??{},[t]:Boolean(g)})},[a,e]),i=(0,l.useMemo)(()=>ed.map(({id:e,label:t})=>({id:e,label:t,enabled:resolveNetflixScenarioEnabled(o,e),setEnabled:t=>I(e,t)})),[o,I]);return{enabled:Boolean(t),setEnabled:g,emoteColor:resolveNetflixEmoteColor(n),defaultEmoteColor:$u,setEmoteColor:C,logoUrl:Ku,scenarios:i}},td=[{key:"loginTracker",label:"Login Tracker",tooltip:"Show formatted login/logout notices by diffing the who list against Achaea's public character roster. Uses ally/enemy and target name formatting, and excludes your own character."},{key:"logoutDownload",label:"Auto-Download Log on Logout",tooltip:"Automatically download the scrollback buffer as an HTML log when you disconnect."},{key:"virtualizedLogs",label:"Virtualized HTML Logs",tooltip:"Download logs as an interactive virtualized HTML viewer for long sessions."}],NetflixModeSection=()=>{const{enabled:e,setEnabled:t,emoteColor:g,setEmoteColor:n,logoUrl:o,scenarios:a}=useNetflixModeSettings();return React.createElement(fC,{sx:{display:"flex",flexDirection:"column",gap:1}},React.createElement(RC,{gutterBottom:!0,sx:{alignItems:"center",display:"flex",gap:.75},variant:"subtitle2"},React.createElement(fC,{alt:"Netflix",component:"img",src:o,sx:{display:"block",height:14,width:"auto"}}),"Mode"),React.createElement(Vu,{label:"Enabled",onChange:t,tooltip:"Play an attention chime on enabled catches below. Resets to off each session.",tooltipMode:"title",value:e}),React.createElement(fC,{sx:{display:"flex",flexDirection:"column",gap:.25,pl:1}},React.createElement(RC,{color:"text.secondary",sx:{mb:.25},variant:"caption"},"Catches"),a.map(e=>React.createElement(Vu,{key:e.id,label:e.label,onChange:e.setEnabled,tooltipMode:"title",value:e.enabled}))),React.createElement(fC,{sx:{display:"flex",flexDirection:"column",gap:.5},title:"Color used by the emote attention trigger. Set this to your configured emote line color so the trigger matches emotes in your room."},React.createElement(RC,{variant:"body2"},"Emote Color"),React.createElement(fC,{sx:{alignItems:"center",display:"flex",gap:1}},React.createElement(fC,{component:"input","aria-label":"Netflix Mode emote color",onChange:e=>n(e.target.value),sx:{background:"transparent",border:"1px solid rgba(255,255,255,0.2)",borderRadius:1,cursor:"pointer",height:28,padding:0,width:40},type:"color",value:g}),React.createElement(RC,{sx:{fontFamily:"monospace"},variant:"caption"},g))))};NetflixModeSection.displayName="NetflixModeSection";var OptionsAdvancedInner=()=>{const{stores:e}=useNexGui(),t=useNativeDisplayCommands(),g=e.ui(e=>e.settings),n=e.ui(e=>e.setSetting),[o,a]=(0,l.useState)(!1),handleToggle=(e,t)=>{n(e,t)},handleNativeDisplay=e=>{handleToggle("nativeDisplay",e),e?t.mount():t.unmount()};return React.createElement(fC,{className:"options-advanced",sx:{display:"flex",flexDirection:"column",gap:1.5,p:1.5}},React.createElement(RC,{gutterBottom:!0,variant:"subtitle2"},"Advanced Options"),React.createElement(pi,{sx:{mb:1}}),React.createElement(fC,{sx:{columnGap:3,display:"grid",gridTemplateColumns:{xs:"minmax(0, 1fr)",md:"repeat(2, minmax(0, 1fr))"},rowGap:1.5}},React.createElement(fC,{sx:{display:"flex",flexDirection:"column",gap:.5,minWidth:0}},td.map(({key:e,label:t,tooltip:n})=>React.createElement(Vu,{key:e,label:t,onChange:t=>handleToggle(e,t),tooltip:n,tooltipMode:"title",value:Boolean(g[e])})),React.createElement(pi,{sx:{my:1}}),React.createElement(RC,{gutterBottom:!0,variant:"subtitle2"},"Experimental"),React.createElement(Vu,{label:"Native Display Override",onChange:handleNativeDisplay,tooltip:"Mount the nexGui display in the Nexus output area instead of a panel tab. Applies immediately; the tab panel is hidden on the next reload.",tooltipMode:"title",value:Boolean(g.nativeDisplay)}),React.createElement(pi,{sx:{my:1}}),React.createElement(RC,{gutterBottom:!0,variant:"subtitle2"},"Debug"),React.createElement(Vu,{label:"Event Bus Debug Mode",onChange:a,tooltip:"Log all internal events to the browser console. Session-only.",tooltipMode:"title",value:o})),React.createElement(fC,{sx:{display:"flex",flexDirection:"column",gap:.5,minWidth:0}},React.createElement(NetflixModeSection,null))))};OptionsAdvancedInner.displayName="OptionsAdvancedInner";var OptionsAdvanced=()=>React.createElement(TC,{panelName:"Options Advanced"},React.createElement(OptionsAdvancedInner,null));OptionsAdvanced.displayName="OptionsAdvanced";var gd={border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",whiteSpace:"nowrap",width:"1px"};function areArraysEqual(e,t,g=(e,t)=>e===t){return e.length===t.length&&e.every((e,n)=>g(e,t[n]))}var nd=2,rd=[],od={};function getNewValue(e,t,g,n,o){return 1===g?Math.min(e+t,o):Math.max(e-t,n)}function asc(e,t){return e-t}function findClosest(e,t,g=-1){const{index:n}=e.reduce((e,g,n)=>{const o=Math.abs(t-g);return null==e||o<=e.distance?{distance:o,index:n}:e},null)??od;return null==n?n:g>=0&&e[g]===e[n]?g:n}function trackFinger(e,t){if(null!=t.current&&e.changedTouches){const g=e;for(let e=0;e<g.changedTouches.length;e+=1){const n=g.changedTouches[e];if(n.identifier===t.current)return{x:n.clientX,y:n.clientY}}return!1}return{x:e.clientX,y:e.clientY}}function valueToPercent(e,t,g){return 100*(e-t)/(g-t)}function percentToValue(e,t,g){return(g-t)*e+t}function getDecimalPrecision(e){if(Math.abs(e)<1){const t=e.toExponential().split("e-"),g=t[0].split(".")[1];return(g?g.length:0)+parseInt(t[1],10)}const t=e.toString().split(".")[1];return t?t.length:0}function roundValueToStep(e,t,g){const n=Math.round((e-g)/t)*t+g;return Number(n.toFixed(getDecimalPrecision(t)))}function setValueIndex(e,t,g){const n=e.slice();return n[g]=t,n.sort(asc)}function focusThumb(e,t,g,n){const o=eI(ownerDocument(e.current));if(!JC(e.current,o)||Number(o?.getAttribute("data-index"))!==t){const g=e.current?.querySelector(`[type="range"][data-index="${t}"]`);null!=g&&(null==n?g.focus({preventScroll:!0}):g.focus({preventScroll:!0,focusVisible:n}))}g&&g(t)}function areValuesEqual(e,t){return"number"==typeof e&&"number"==typeof t?e===t:"object"==typeof e&&"object"==typeof t&&areArraysEqual(e,t)}var ad={horizontal:{offset:e=>({left:`${e}%`}),leap:e=>({width:`${e}%`})},"horizontal-reverse":{offset:e=>({right:`${e}%`}),leap:e=>({width:`${e}%`})},vertical:{offset:e=>({bottom:`${e}%`}),leap:e=>({height:`${e}%`})}},Identity$1=e=>e;function useSlider(e){const{"aria-labelledby":t,defaultValue:g,disabled:n=!1,disableSwap:o=!1,isRtl:a=!1,marks:C=!1,max:I=100,min:i=0,name:s,onChange:c,onChangeCommitted:u,orientation:d="horizontal",rootRef:p,scale:m=Identity$1,step:h=1,shiftStep:y=10,tabIndex:b,value:v}=e,x=l.useRef(void 0),S=l.useRef(null),[w,E]=l.useState(-1),[R,T]=l.useState(-1),[M,P]=l.useState(!1),N=l.useRef(0),O=l.useRef(-1),D=l.useRef(!1),j=l.useRef(-1),L=useEventCallback(()=>{null!=S.current&&(cancelAnimationFrame(S.current),S.current=null)}),G=l.useRef(null),[B,F]=useControlled({controlled:v,default:g??i,name:"Slider"}),W=useEventCallback((e,t,g)=>{const n="nativeEvent"in e?e.nativeEvent:e,o=new n.constructor(n.type,n);Object.defineProperty(o,"target",{writable:!0,value:{value:t,name:s}}),G.current=t,c?.(o,t,g)}),V=Array.isArray(B),U=l.useMemo(()=>{if("number"==typeof B)return[clamp$2(B,i,I)];if(null==B)return[i];const e=B.slice().sort(asc);for(let t=0;t<e.length;t+=1){const g=e[t];e[t]=null==g?i:clamp$2(g,i,I)}return e},[B,i,I]),Z=l.useMemo(()=>{if(!0===C&&null!=h){const e=new Array(Math.floor((I-i)/h)+1);for(let t=0;t<e.length;t+=1)e[t]={value:i+h*t};return e}return Array.isArray(C)?C:rd},[C,h,i,I]),K=l.useMemo(()=>{const e=new Array(Z.length);for(let t=0;t<Z.length;t+=1)e[t]=Z[t].value;return e},[Z]),[H,Y]=l.useState(-1),$=l.useRef(null),Q=useForkRef(p,$),createHandleHiddenInputFocus=e=>t=>{const g=Number(t.currentTarget.getAttribute("data-index"));isFocusVisible(t.target)&&Y(g),T(g),e?.onFocus?.(t)},createHandleHiddenInputBlur=e=>t=>{isFocusVisible(t.target)||Y(-1),T(-1),e?.onBlur?.(t)},changeValue=(e,t)=>{const g=Number(e.currentTarget.getAttribute("data-index")),n=U[g],a=K.indexOf(n);let C=t;if(Z&&null==h){const e=K[K.length-1];C=C>=e?e:C<=K[0]?K[0]:C<n?K[a-1]:K[a+1]}if(C=clamp$2(C,i,I),V){o&&(C=clamp$2(C,U[g-1]||-1/0,U[g+1]||1/0));const e=C;C=setValueIndex(U,C,g);let t=g;o||(t=C.indexOf(e)),focusThumb($,t)}F(C),Y(g),c&&!areValuesEqual(C,B)&&W(e,C,g),u&&u(e,G.current??C)},createHandleHiddenInputKeyDown=e=>t=>{if(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","PageUp","PageDown","Home","End"].includes(t.key)){t.preventDefault();const e=U[Number(t.currentTarget.getAttribute("data-index"))];let g=null;if(null!=h){const n=t.shiftKey?y:h;switch(t.key){case"ArrowUp":g=getNewValue(e,n,1,i,I);break;case"ArrowRight":g=getNewValue(e,n,a?-1:1,i,I);break;case"ArrowDown":g=getNewValue(e,n,-1,i,I);break;case"ArrowLeft":g=getNewValue(e,n,a?1:-1,i,I);break;case"PageUp":g=getNewValue(e,y,1,i,I);break;case"PageDown":g=getNewValue(e,y,-1,i,I);break;case"Home":g=i;break;case"End":g=I}}else if(Z){const n=K[K.length-1],o=K.indexOf(e),C=[a?"ArrowLeft":"ArrowRight","ArrowUp","PageUp","End"];[a?"ArrowRight":"ArrowLeft","ArrowDown","PageDown","Home"].includes(t.key)?g=0===o?K[0]:K[o-1]:C.includes(t.key)&&(g=o===K.length-1?n:K[o+1])}null!=g&&changeValue(t,g)}e?.onKeyDown?.(t)};RA(()=>{const e=eI(ownerDocument($.current));n&&JC($.current,e)&&null!=e&&"blur"in e&&e.blur()},[n]),n&&-1!==w&&E(-1),n&&-1!==H&&Y(-1);const createHandleHiddenInputChange=e=>t=>{e.onChange?.(t),changeValue(t,t.currentTarget.valueAsNumber)},X=l.useRef(void 0);let J=d;a&&"horizontal"===d&&(J+="-reverse");const getValueAtFinger=e=>{const{current:t}=$;if(!t)return null;const{width:g,height:n,bottom:a,left:C}=t.getBoundingClientRect();let s,l;s=J.startsWith("vertical")?(a-e.y)/n:(e.x-C)/g,J.includes("-reverse")&&(s=1-s),l=percentToValue(s,i,I),l=h?roundValueToStep(l,h,i):K[findClosest(K,l)],l=clamp$2(l,i,I);let c=0;if(V){const e=-1!==X.current;c=e?X.current:findClosest(U,l,O.current),o&&(l=clamp$2(l,U[c-1]||-1/0,U[c+1]||1/0));const t=l;l=setValueIndex(U,l,c),o&&e||(c=l.indexOf(t),X.current=c)}return{newValue:l,activeIndex:c}},q=useEventCallback(e=>{if("pointerId"in e&&e.pointerId!==j.current)return;const t=trackFinger(e,x);if(!t)return;if(N.current+=1,"pointermove"===e.type&&0===e.buttons)return void ee(e);const g=getValueAtFinger(t);g&&(focusThumb($,g.activeIndex,E,!1),O.current=g.activeIndex,F(g.newValue),!M&&N.current>nd&&P(!0),c&&!areValuesEqual(g.newValue,B)&&W(e,g.newValue,g.activeIndex))}),ee=useEventCallback(e=>{if("pointerId"in e&&e.pointerId!==j.current)return;const t=trackFinger(e,x);if(P(!1),!t)return;const g=getValueAtFinger(t);E(-1),"touchend"===e.type&&T(-1),g&&u&&u(e,G.current??g.newValue),"pointerType"in e&&$.current?.hasPointerCapture(e.pointerId)&&$.current.releasePointerCapture(e.pointerId),x.current=void 0,j.current=-1,ge()}),te=useEventCallback(e=>{if(n)return;if(D.current){D.current=!1;const t=e.changedTouches[0];return void(null!=t&&(x.current=t.identifier))}const t=e.changedTouches[0];null!=t&&(x.current=t.identifier);const g=trackFinger(e,x);if(!1!==g){X.current=-1;const t=getValueAtFinger(g);t&&(focusThumb($,t.activeIndex,E,!1),O.current=t.activeIndex,F(t.newValue),c&&!areValuesEqual(t.newValue,B)&&W(e,t.newValue,t.activeIndex))}N.current=0;const o=ownerDocument($.current);o.addEventListener("touchmove",q,{passive:!0}),o.addEventListener("touchend",ee,{passive:!0})}),ge=l.useCallback(()=>{const e=ownerDocument($.current);e.removeEventListener("pointermove",q),e.removeEventListener("pointerup",ee),e.removeEventListener("touchmove",q),e.removeEventListener("touchend",ee)},[ee,q]);l.useEffect(()=>{const e=$.current;if(e)return e.addEventListener("touchstart",te,{passive:!0}),()=>{e.removeEventListener("touchstart",te),L(),ge()}},[ge,te,L]),l.useEffect(()=>{n&&(ge(),L())},[n,ge,L]);const createHandlePointerDown=e=>t=>{if(e.onPointerDown?.(t),"touch"===t.pointerType&&(D.current=!0),n||t.defaultPrevented||0!==t.button)return;const g=trackFinger(t,x);if(!1!==g){X.current=-1;const e=getValueAtFinger(g);if(e){const g=$.current?.querySelector(`input[type="range"][data-index="${e.activeIndex}"]`),n=ownerDocument($.current),o=null!=g&&g===eI(n);E(e.activeIndex),O.current=e.activeIndex,o?t.preventDefault():(L(),S.current=requestAnimationFrame(()=>{S.current=null,focusThumb($,e.activeIndex,void 0,!1)})),F(e.newValue),c&&!areValuesEqual(e.newValue,B)&&W(t,e.newValue,e.activeIndex)}}N.current=0,j.current=t.pointerId;const o=ownerDocument($.current);try{t.currentTarget.setPointerCapture(t.pointerId)}catch{}o.addEventListener("pointermove",q,{passive:!0}),o.addEventListener("pointerup",ee)},ne=valueToPercent(V?U[0]:i,i,I),re=valueToPercent(U[U.length-1],i,I)-ne,createHandleMouseOver=e=>t=>{e.onMouseOver?.(t),T(Number(t.currentTarget.getAttribute("data-index")))},createHandleMouseLeave=e=>t=>{e.onMouseLeave?.(t),T(-1)},getThumbStyle=e=>{let t;return V?w===e?t=2:O.current===e&&(t=1):w===e&&(t=1),{pointerEvents:-1!==w&&w!==e?"none":void 0,zIndex:t}};let oe;return"vertical"===d&&(oe=a?"vertical-rl":"vertical-lr"),{active:w,axis:J,axisProps:ad,dragging:M,focusedThumbIndex:H,getHiddenInputProps:(g=od)=>{const o=extractEventHandlers(g),C={onChange:createHandleHiddenInputChange(o),onFocus:createHandleHiddenInputFocus(o),onBlur:createHandleHiddenInputBlur(o),onKeyDown:createHandleHiddenInputKeyDown(o)},l={...o,...C};return{tabIndex:b,"aria-labelledby":t,"aria-orientation":d,"aria-valuemax":m(I),"aria-valuemin":m(i),name:s,type:"range",min:e.min,max:e.max,step:null===e.step&&e.marks?"any":e.step??void 0,disabled:n,...g,...l,style:{...gd,direction:a?"rtl":"ltr",width:"100%",height:"100%",writingMode:oe}}},getRootProps:(e=od)=>{const t=extractEventHandlers(e),g={onPointerDown:createHandlePointerDown(t)},n={...t,...g};return{...e,ref:Q,...n}},getThumbProps:(e=od)=>{const t=extractEventHandlers(e),g={onMouseOver:createHandleMouseOver(t),onMouseLeave:createHandleMouseLeave(t)};return{...e,...t,...g}},marks:Z,open:R,range:V,rootRef:Q,trackLeap:re,trackOffset:ne,values:U,getThumbStyle}}function getSliderUtilityClass(e){return generateUtilityClass("MuiSlider",e)}var Ad=generateUtilityClasses("MuiSlider",["root","active","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","disabled","dragging","focusVisible","mark","markActive","marked","markLabel","markLabelActive","rail","sizeSmall","thumb","track","trackInverted","trackFalse","valueLabel","valueLabelOpen","valueLabelCircle","valueLabelLabel","vertical"]),useValueLabelClasses=e=>{const{open:t}=e;return{offset:clsx(t&&Ad.valueLabelOpen),circle:Ad.valueLabelCircle,label:Ad.valueLabelLabel}};function SliderValueLabel$1(e){const{children:t,className:g,value:n}=e,o=useValueLabelClasses(e);return t?l.cloneElement(t,{className:t.props.className},(0,ja.jsxs)(l.Fragment,{children:[t.props.children,(0,ja.jsx)("span",{className:clsx(o.offset,g),"aria-hidden":!0,children:(0,ja.jsx)("span",{className:o.circle,children:(0,ja.jsx)("span",{className:o.label,children:n})})})]})):null}function Identity(e){return e}var Cd=sC("span",{name:"MuiSlider",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:g}=e;return[t.root,t[`color${wC(g.color)}`],"medium"!==g.size&&t[`size${wC(g.size)}`],g.marked&&t.marked,"vertical"===g.orientation&&t.vertical,"inverted"===g.track&&t.trackInverted,!1===g.track&&t.trackFalse]}})(hC(({theme:e})=>({borderRadius:12,boxSizing:"content-box",display:"inline-block",position:"relative",cursor:"pointer",touchAction:"none",WebkitTapHighlightColor:"transparent","@media print":{colorAdjust:"exact"},[`&.${Ad.disabled}`]:{pointerEvents:"none",cursor:"default",color:(e.vars||e).palette.grey[400]},[`&.${Ad.dragging}`]:{[`& .${Ad.thumb}, & .${Ad.track}`]:{transition:"none"}},variants:[...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})),{props:{orientation:"horizontal"},style:{height:4,width:"100%",padding:"13px 0","@media (pointer: coarse)":{padding:"20px 0"}}},{props:{orientation:"horizontal",size:"small"},style:{height:2}},{props:{orientation:"horizontal",marked:!0},style:{marginBottom:20}},{props:{orientation:"vertical"},style:{height:"100%",width:4,padding:"0 13px","@media (pointer: coarse)":{padding:"0 20px"}}},{props:{orientation:"vertical",size:"small"},style:{width:2}},{props:{orientation:"vertical",marked:!0},style:{marginRight:44}}]}))),Id=sC("span",{name:"MuiSlider",slot:"Rail"})({display:"block",position:"absolute",borderRadius:"inherit",backgroundColor:"currentColor",opacity:.38,"@media (forced-colors: active)":{border:"1px solid transparent",boxSizing:"border-box"},variants:[{props:{orientation:"horizontal"},style:{width:"100%",height:"inherit",top:"50%",transform:"translateY(-50%)"}},{props:{orientation:"vertical"},style:{height:"100%",width:"inherit",left:"50%",transform:"translateX(-50%)"}},{props:{track:"inverted"},style:{opacity:1}}]}),id=sC("span",{name:"MuiSlider",slot:"Track"})(hC(({theme:e})=>({display:"block",position:"absolute",borderRadius:"inherit",border:"1px solid currentColor",backgroundColor:"currentColor",transition:e.transitions.create(["left","width","bottom","height"],{duration:e.transitions.duration.shortest}),variants:[{props:{size:"small"},style:{"@media (forced-colors: none)":{border:"none"}}},{props:{orientation:"horizontal"},style:{height:"inherit",top:"50%",transform:"translateY(-50%)"}},{props:{orientation:"vertical"},style:{width:"inherit",left:"50%",transform:"translateX(-50%)"}},{props:{track:!1},style:{display:"none"}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t,track:"inverted"},style:{...e.vars?{backgroundColor:e.vars.palette.Slider[`${t}Track`],borderColor:e.vars.palette.Slider[`${t}Track`]}:{backgroundColor:e.lighten(e.palette[t].main,.62),borderColor:e.lighten(e.palette[t].main,.62),...e.applyStyles("dark",{backgroundColor:e.darken(e.palette[t].main,.5)}),...e.applyStyles("dark",{borderColor:e.darken(e.palette[t].main,.5)})}}}))]}))),sd=sC("span",{name:"MuiSlider",slot:"Thumb"})(hC(({theme:e})=>({position:"absolute",width:20,height:20,boxSizing:"border-box",borderRadius:"50%",outline:0,backgroundColor:"currentColor",display:"flex",alignItems:"center",justifyContent:"center",transition:e.transitions.create(["box-shadow","left","bottom"],{duration:e.transitions.duration.shortest}),"@media (forced-colors: active)":{border:"1px solid ButtonBorder"},"&::before":{position:"absolute",content:'""',borderRadius:"inherit",width:"100%",height:"100%",boxShadow:(e.vars||e).shadows[2]},"&::after":{position:"absolute",content:'""',borderRadius:"50%",width:42,height:42,top:"50%",left:"50%",transform:"translate(-50%, -50%)"},[`&.${Ad.disabled}`]:{"&:hover":{boxShadow:"none"}},variants:[{props:{size:"small"},style:{width:12,height:12,"&::before":{boxShadow:"none"}}},{props:{orientation:"horizontal"},style:{top:"50%",transform:"translate(-50%, -50%)"}},{props:{orientation:"vertical"},style:{left:"50%",transform:"translate(-50%, 50%)"}},...Object.entries(e.palette).filter(createSimplePaletteValueFilter()).map(([t])=>({props:{color:t},style:{[`&:hover, &.${Ad.focusVisible}`]:{boxShadow:`0px 0px 0px 8px ${e.alpha((e.vars||e).palette[t].main,.16)}`,"@media (hover: none)":{boxShadow:"none"}},[`&.${Ad.active}`]:{boxShadow:`0px 0px 0px 14px ${e.alpha((e.vars||e).palette[t].main,.16)}`}}}))]}))),ld=sC(SliderValueLabel$1,{name:"MuiSlider",slot:"ValueLabel"})(hC(({theme:e})=>({zIndex:1,whiteSpace:"nowrap",...e.typography.body2,fontWeight:500,transition:e.transitions.create(["transform"],{duration:e.transitions.duration.shortest}),position:"absolute",backgroundColor:(e.vars||e).palette.grey[600],borderRadius:2,color:(e.vars||e).palette.common.white,display:"flex",alignItems:"center",justifyContent:"center",padding:"0.25rem 0.75rem",variants:[{props:{orientation:"horizontal"},style:{transform:"translateY(-100%) scale(0)",top:"-10px",transformOrigin:"bottom center","&::before":{position:"absolute",content:'""',width:8,height:8,transform:"translate(-50%, 50%) rotate(45deg)",backgroundColor:"inherit",bottom:0,left:"50%"},[`&.${Ad.valueLabelOpen}`]:{transform:"translateY(-100%) scale(1)"}}},{props:{orientation:"vertical"},style:{transform:"translateY(-50%) scale(0)",right:"30px",top:"50%",transformOrigin:"right center","&::before":{position:"absolute",content:'""',width:8,height:8,transform:"translate(-50%, -50%) rotate(45deg)",backgroundColor:"inherit",right:-8,top:"50%"},[`&.${Ad.valueLabelOpen}`]:{transform:"translateY(-50%) scale(1)"}}},{props:{size:"small"},style:{fontSize:e.typography.pxToRem(12),padding:"0.25rem 0.5rem"}},{props:{orientation:"vertical",size:"small"},style:{right:"20px"}}]}))),cd=sC("span",{name:"MuiSlider",slot:"Mark",shouldForwardProp:e=>slotShouldForwardProp(e)&&"markActive"!==e,overridesResolver:(e,t)=>{const{markActive:g}=e;return[t.mark,g&&t.markActive]}})(hC(({theme:e})=>({position:"absolute",width:2,height:2,borderRadius:1,backgroundColor:"currentColor",variants:[{props:{orientation:"horizontal"},style:{top:"50%",transform:"translate(-1px, -50%)"}},{props:{orientation:"vertical"},style:{left:"50%",transform:"translate(-50%, 1px)"}},{props:{markActive:!0},style:{backgroundColor:(e.vars||e).palette.background.paper,opacity:.8}}]}))),ud=sC("span",{name:"MuiSlider",slot:"MarkLabel",shouldForwardProp:e=>slotShouldForwardProp(e)&&"markLabelActive"!==e})(hC(({theme:e})=>({...e.typography.body2,color:(e.vars||e).palette.text.secondary,position:"absolute",whiteSpace:"nowrap",variants:[{props:{orientation:"horizontal"},style:{top:30,transform:"translateX(-50%)","@media (pointer: coarse)":{top:40}}},{props:{orientation:"vertical"},style:{left:36,transform:"translateY(50%)","@media (pointer: coarse)":{left:44}}},{props:{markLabelActive:!0},style:{color:(e.vars||e).palette.text.primary}}]}))),useUtilityClasses=e=>{const{disabled:t,dragging:g,marked:n,orientation:o,track:a,classes:C,color:I,size:i}=e;return composeClasses({root:["root",t&&"disabled",g&&"dragging",n&&"marked","vertical"===o&&"vertical","inverted"===a&&"trackInverted",!1===a&&"trackFalse",I&&`color${wC(I)}`,i&&`size${wC(i)}`],rail:["rail"],track:["track"],mark:["mark"],markActive:["markActive"],markLabel:["markLabel"],markLabelActive:["markLabelActive"],valueLabel:["valueLabel"],thumb:["thumb",t&&"disabled"],active:["active"],disabled:["disabled"],focusVisible:["focusVisible"]},getSliderUtilityClass,C)},Forward=({children:e})=>e,dd=l.forwardRef(function(e,t){const g=useDefaultProps({props:e,name:"MuiSlider"}),n=useRtl(),{"aria-label":o,"aria-valuetext":a,"aria-labelledby":C,color:I="primary",classes:i,className:s,disableSwap:c=!1,disabled:u=!1,getAriaLabel:d,getAriaValueText:p,marks:m=!1,max:h=100,min:y=0,name:b,onChange:v,onChangeCommitted:x,orientation:S="horizontal",shiftStep:w=10,size:E="medium",step:R=1,scale:T=Identity,slotProps:M={},slots:P={},tabIndex:N,track:O="normal",value:D,valueLabelDisplay:j="off",valueLabelFormat:L=Identity,...G}=g,B={...g,isRtl:n,max:h,min:y,classes:i,disabled:u,disableSwap:c,orientation:S,marks:m,color:I,size:E,step:R,shiftStep:w,scale:T,track:O,valueLabelDisplay:j,valueLabelFormat:L},{axisProps:F,getRootProps:W,getHiddenInputProps:V,getThumbProps:U,open:Z,active:K,axis:H,focusedThumbIndex:Y,range:$,dragging:Q,marks:X,values:J,trackOffset:q,trackLeap:ee,getThumbStyle:te}=useSlider({...B,rootRef:t});B.marked=X.length>0&&X.some(e=>e.label),B.dragging=Q,B.focusedThumbIndex=Y;const ge=useUtilityClasses(B),ne={slots:P,slotProps:M},[re,oe]=useSlot("root",{elementType:Cd,getSlotProps:W,externalForwardedProps:{...ne,...G},ownerState:B,className:[ge.root,s]}),[ae,Ae]=useSlot("rail",{elementType:Id,externalForwardedProps:ne,ownerState:B,className:ge.rail}),[Ce,Ie]=useSlot("track",{elementType:id,externalForwardedProps:ne,additionalProps:{style:{...F[H].offset(q),...F[H].leap(ee)}},ownerState:B,className:ge.track}),[ie,se]=useSlot("thumb",{elementType:sd,getSlotProps:U,externalForwardedProps:ne,ownerState:B,className:ge.thumb}),[le,ce]=useSlot("valueLabel",{elementType:ld,externalForwardedProps:ne,ownerState:B,className:ge.valueLabel}),[ue,de]=useSlot("mark",{elementType:cd,externalForwardedProps:ne,ownerState:B,className:ge.mark}),[pe,me]=useSlot("markLabel",{elementType:ud,externalForwardedProps:ne,ownerState:B,className:ge.markLabel}),[fe,he]=useSlot("input",{elementType:"input",getSlotProps:V,externalForwardedProps:ne,ownerState:B});return(0,ja.jsxs)(re,{...oe,children:[(0,ja.jsx)(ae,{...Ae}),(0,ja.jsx)(Ce,{...Ie}),X.filter(e=>e.value>=y&&e.value<=h).map((e,t)=>{const g=valueToPercent(e.value,y,h),n=F[H].offset(g);let o;return o=!1===O?J.includes(e.value):"normal"===O&&($?e.value>=J[0]&&e.value<=J[J.length-1]:e.value<=J[0])||"inverted"===O&&($?e.value<=J[0]||e.value>=J[J.length-1]:e.value>=J[0]),(0,ja.jsxs)(l.Fragment,{children:[(0,ja.jsx)(ue,{"data-index":t,...de,...!isHostComponent(ue)&&{markActive:o},style:{...n,...de.style},className:clsx(de.className,o&&ge.markActive)}),null!=e.label?(0,ja.jsx)(pe,{"aria-hidden":!0,"data-index":t,...me,...!isHostComponent(pe)&&{markLabelActive:o},style:{...n,...me.style},className:clsx(ge.markLabel,me.className,o&&ge.markLabelActive),children:e.label}):null]},t)}),J.map((e,t)=>{const g=valueToPercent(e,y,h),n=F[H].offset(g),I="off"===j?Forward:le;return(0,ja.jsx)(I,{...!isHostComponent(I)&&{valueLabelFormat:L,valueLabelDisplay:j,value:"function"==typeof L?L(T(e),t):L,index:t,open:Z===t||K===t||"on"===j,disabled:u},...ce,children:(0,ja.jsx)(ie,{"data-index":t,...se,className:clsx(ge.thumb,se.className,K===t&&ge.active,Y===t&&ge.focusVisible),style:{...n,...te(t),...se.style},children:(0,ja.jsx)(fe,{"data-index":t,"aria-label":d?d(t):o,"aria-valuenow":T(e),"aria-labelledby":C,"aria-valuetext":p?p(T(e),t):a,value:J[t],...he})})},t)})]})}),usePersistence=()=>{const{persistenceStore:e}=useNexGui();return e},resolveSliderValue$1=e=>Array.isArray(e)?e[0]??0:e,OptionsDisplayInner=()=>{const{tokens:e,updateTokens:t}=useTheme(),g=usePersistence(),[n,o]=(0,l.useState)(()=>g.get("ui")??{}),a=(0,l.useMemo)(()=>{const t=e.theme.displayFontFamily;return jr.some(({value:e})=>e===t)?jr:[{label:t,value:t},...jr]},[e.theme.displayFontFamily]),handleUiToggle=(e,t)=>{const a={...n,[e]:t};g.set("ui",a),o(a)},handleDisplayFontFamily=e=>{t({theme:{displayFontFamily:e.target.value}})},handleDisplayFontSize=(e,g)=>{t({theme:{displayFontSize:resolveSliderValue$1(g)}})};return React.createElement(fC,{className:"options-display",sx:{display:"flex",flexDirection:"column",gap:1.5,p:1.5}},React.createElement(RC,{gutterBottom:!0,variant:"subtitle2"},"Main Display / Scrollback Style"),React.createElement(pi,null),React.createElement(Js,{fullWidth:!0,size:"small"},React.createElement(Qs,{id:"display-font-family-select-label"},"Font Family"),React.createElement(xl,{label:"Font Family",labelId:"display-font-family-select-label",onChange:handleDisplayFontFamily,value:e.theme.displayFontFamily},a.map(e=>React.createElement(bi,{key:e.value,value:e.value},e.label)))),React.createElement(fC,{sx:{display:"flex",flexDirection:"column",gap:1}},React.createElement(RC,{variant:"caption",color:"text.secondary"},"Display Font Size: ",e.theme.displayFontSize,"px"),React.createElement(dd,{"aria-label":"Display font size",max:20,min:8,onChange:handleDisplayFontSize,step:1,value:e.theme.displayFontSize})),React.createElement(pi,{sx:{mt:.5}}),React.createElement(RC,{gutterBottom:!0,variant:"subtitle2"},"Formatting"),React.createElement(Vu,{label:"Ally / Enemy Formatting",onChange:e=>handleUiToggle("allyEnemyFormatting",e),tooltip:"Apply ally and enemy markers to recognised player names in panels and game output.",tooltipMode:"title",value:Boolean(n.allyEnemyFormatting)}),React.createElement(Vu,{label:"Target Formatting",onChange:e=>handleUiToggle("targetFormatting",e),tooltip:"Highlight your current target in game output.",tooltipMode:"title",value:Boolean(n.targetFormatting)}))};OptionsDisplayInner.displayName="OptionsDisplayInner";var OptionsDisplay=()=>React.createElement(TC,{panelName:"Options Display"},React.createElement(OptionsDisplayInner,null));OptionsDisplay.displayName="OptionsDisplay";var pd=Object.freeze([{key:"showCombatStream",label:"Combat Stream",tooltip:"Route combat messages to a separate stream panel."},{key:"showSystemStream",label:"System Stream",tooltip:"Route system messages to a separate stream panel."},{key:"damageNumbers",label:"Damage Numbers",tooltip:"Show damage number overlays on combat output."},{key:"msgReplace",label:"Message Replace",tooltip:"Apply structured replacement rows for skill actions (nexSkillMatch / nexSkillNpcMatch). Inline name highlighting is controlled separately by the Ally/Enemy Formatting toggle."}]),useGameOptionToggles=()=>{const{stores:e}=useNexGui(),t=e.ui(e=>e.settings),g=e.ui(e=>e.setSetting);return(0,l.useMemo)(()=>pd.map(e=>({key:e.key,label:e.label,tooltip:e.tooltip,value:Boolean(t[e.key]),onChange:t=>g(e.key,t)})),[g,t])},md=Object.freeze([{key:"echo_input",label:"Echo Input",tooltip:"Mirror your typed commands into the game output stream.",setValue:(e,t)=>{e.setSetting("echo_input",t)}},{key:"echo_gmcp",label:"Display GMCP",tooltip:"Show inbound GMCP payloads in the output stream.",setValue:(e,t)=>{e.setSetting("echo_gmcp",t)}},{key:"single_prompt",label:"Single Prompt",tooltip:"Collapse the duplicate Nexus prompt line into a single prompt.",setValue:(e,t)=>{e.setSetting("show_prompts",!t)}},{key:"show_timestamps",label:"Display Timestamps",tooltip:"Show Nexus timestamps in the main output stream.",setValue:(e,t)=>{e.setSetting("show_timestamps",t)}},{key:"display_tabstrip",label:"Display Tabstrip",tooltip:"Show the FlexLayout tab strip for docked Nexus tabs.",setValue:(e,t)=>{e.updateLayoutAttributes({tabSetEnableTabStrip:t})}}]),useHostSettingsToggles=()=>{const{eventBus:e,hostSettingsModel:t,hostLayoutModel:g}=useNexGui(),n=useHostBridge(),o=(0,l.useSyncExternalStore)(t.subscribe,t.getSnapshot),a=(0,l.useSyncExternalStore)(g.subscribe,g.getSnapshot),C=(0,l.useCallback)(({key:t,setValue:g},o)=>{g(n,o),e.emit(te.HOST_SETTINGS_CHANGED,{key:t,value:o})},[e,n]);return(0,l.useMemo)(()=>md.map(e=>({key:e.key,label:e.label,tooltip:e.tooltip,value:"display_tabstrip"===e.key?Boolean(a.display_tabstrip):Boolean(o[e.key]),onChange:t=>C(e,t)})),[o,a,C])},OptionsGameInner=()=>{const e=useHostSettingsToggles(),t=useGameOptionToggles();return React.createElement(fC,{className:"options-game",sx:{display:"flex",flexDirection:"column",gap:.5,p:1.5}},React.createElement(RC,{gutterBottom:!0,variant:"subtitle2"},"Game Options"),React.createElement(pi,{sx:{mb:1}}),React.createElement(fC,{sx:{columnGap:3,display:"grid",gridTemplateColumns:{xs:"minmax(0, 1fr)",md:"repeat(2, minmax(0, 1fr))"},rowGap:1.5}},React.createElement(fC,{sx:{display:"flex",flexDirection:"column",gap:.5,minWidth:0}},React.createElement(RC,{gutterBottom:!0,variant:"subtitle2"},"Nexus Config"),e.map(({key:e,label:t,tooltip:g,value:n,onChange:o})=>React.createElement(Vu,{key:e,label:t,onChange:o,tooltip:g,tooltipMode:"title",value:n}))),React.createElement(fC,{sx:{display:"flex",flexDirection:"column",gap:.5,minWidth:0}},React.createElement(RC,{gutterBottom:!0,variant:"subtitle2"},"nexGui Config"),t.map(({key:e,label:t,tooltip:g,value:n,onChange:o})=>React.createElement(Vu,{key:e,label:t,onChange:o,tooltip:g,tooltipMode:"title",value:n})))))};OptionsGameInner.displayName="OptionsGameInner";var OptionsGame=()=>React.createElement(TC,{panelName:"Options Game"},React.createElement(OptionsGameInner,null));OptionsGame.displayName="OptionsGame";var fd="__none__",hd="__custom__",resolveSliderValue=e=>Array.isArray(e)?e[0]??0:e,OptionsStyleInner=()=>{const{tokens:e,updateTokens:t}=useTheme(),g=canonicalizeBackgroundImageValue(e.theme.backgroundImage),n=mo.includes(g)?g:g?hd:fd,handleFontSize=(e,g)=>{t({theme:{fontSize:resolveSliderValue(g)}})},handleOpacity=(e,g)=>{t({theme:{backgroundOpacity:resolveSliderValue(g)}})},handleHue=(e,g)=>{t({theme:{hue:resolveSliderValue(g)}})},handleCustomBgImage=e=>{t({theme:{backgroundImage:e.target.value}})},handleBackgroundImageSelect=e=>{const{value:g}=e.target;g!==fd?g!==hd?t({theme:{backgroundImage:g}}):n!==hd&&t({theme:{backgroundImage:""}}):t({theme:{backgroundImage:""}})};return React.createElement(fC,{className:"options-style",sx:{display:"flex",flexDirection:"column",gap:1.5,p:1.5}},React.createElement(RC,{gutterBottom:!0,variant:"subtitle2"},"Panel Display Style"),React.createElement(pi,null),React.createElement(fC,{sx:{display:"flex",flexDirection:"column",gap:1}},React.createElement(RC,{variant:"caption",color:"text.secondary"},"Panel Font Size: ",e.theme.fontSize,"px"),React.createElement(dd,{"aria-label":"Panel font size",max:20,min:8,onChange:handleFontSize,step:1,value:e.theme.fontSize})),React.createElement(fC,{sx:{display:"flex",flexDirection:"column",gap:1}},React.createElement(RC,{variant:"caption",color:"text.secondary"},"Background Opacity: ",Math.round(100*e.theme.backgroundOpacity),"%"),React.createElement(dd,{"aria-label":"Background opacity",max:1,min:0,onChange:handleOpacity,step:.01,value:e.theme.backgroundOpacity})),React.createElement(fC,{sx:{display:"flex",flexDirection:"column",gap:1}},React.createElement(RC,{variant:"caption",color:"text.secondary"},"Hue Shift: ",e.theme.hue,"°"),React.createElement(dd,{"aria-label":"Hue shift",max:360,min:0,onChange:handleHue,step:1,value:e.theme.hue})),React.createElement(Js,{fullWidth:!0,size:"small"},React.createElement(Qs,{id:"background-image-select-label"},"Background Image"),React.createElement(xl,{label:"Background Image",labelId:"background-image-select-label",onChange:handleBackgroundImageSelect,value:n},React.createElement(bi,{value:fd},"None"),mo.map(e=>React.createElement(bi,{key:e,value:e},e)),React.createElement(bi,{value:hd},"Custom URL"))),React.createElement(kl,{InputLabelProps:{shrink:!0},fullWidth:!0,label:"Background Image URL",onChange:handleCustomBgImage,placeholder:"https://...",size:"small",value:e.theme.backgroundImage,variant:"outlined"}))};OptionsStyleInner.displayName="OptionsStyleInner";var OptionsStyle=()=>React.createElement(TC,{panelName:"Options Panels"},React.createElement(OptionsStyleInner,null));OptionsStyle.displayName="OptionsStyle";var yd="options",bd=Object.freeze([{content:React.createElement(OptionsGame,null),id:"game",label:"Game"},{content:React.createElement(OptionsStyle,null),id:"style",label:"Panels"},{content:React.createElement(OptionsDisplay,null),id:"display",label:"Display"},{content:React.createElement(OptionsAdvanced,null),id:"advanced",label:"Advanced"}]),resolveActiveTabId=e=>"string"==typeof e?e:"number"==typeof e?bd[e]?.id??bd[0].id:bd[0].id,OptionsPanelInner=()=>{const e=useTheme(),{activeTab:t,setActiveTab:g}=useUi(),n=e.theme?.nexGui?.backgroundImage??"",o=e.theme?.nexGui?.backgroundOpacity??.5,a=e.theme?.nexGui?.backgroundFilter??"none",handleTabChange=e=>{const t=bd.findIndex(t=>t.id===e);t>=0&&g(yd,t)};return React.createElement(gu,{activeTab:resolveActiveTabId(t[yd]),backgroundFilter:a,backgroundImage:n,backgroundOpacity:o,onTabChange:handleTabChange,tabs:bd})};OptionsPanelInner.displayName="OptionsPanelInner";var OptionsPanel=()=>React.createElement(TC,{panelName:"Options"},React.createElement(OptionsPanelInner,null));OptionsPanel.displayName="OptionsPanel";var PartyMemberRowComponent=({name:e,color:t="text.primary",disabled:g=!1,onClick:n=null})=>{const o="function"==typeof n&&!g;return React.createElement(fC,{className:"party-member-row",onClick:o?()=>n(e):void 0,role:o?"button":void 0,sx:{alignItems:"center",cursor:o?"pointer":"default",display:"flex",minHeight:24,px:.5},tabIndex:o?0:void 0},React.createElement(RC,{component:"span",sx:{color:t,fontWeight:500,lineHeight:1.35},variant:"body2"},e))};PartyMemberRowComponent.displayName="PartyMemberRow",PartyMemberRowComponent.propTypes={color:xC.default.string,disabled:xC.default.bool,name:xC.default.string.isRequired,onClick:xC.default.func};var vd=(0,l.memo)(PartyMemberRowComponent);vd.displayName="PartyMemberRow",vd.propTypes=PartyMemberRowComponent.propTypes;var selectPartySlice=e=>({members:e.members,leader:e.leader,selfName:e.selfName,settings:e.settings,updateParty:e.updateParty,addMember:e.addMember,removeMember:e.removeMember,setLeader:e.setLeader,setSelf:e.setSelf,setSetting:e.setSetting}),useParty=()=>{const{stores:e}=useNexGui();return e.party(useShallow(selectPartySlice))},noopSubscribe=()=>()=>{},fallbackFalse=()=>!1,fallbackNull=()=>null,fallbackName=()=>"",fallbackColor=()=>"grey",getModelVersion=e=>"function"==typeof e?.getVersion?e.getVersion():0,createDirectoryBinding=(e,t)=>{const subscribe=g=>{const n=e?.subscribePlayerDirectory?.(g)??noopSubscribe(),o=t?.subscribePlayerRelationships?.(g)??noopSubscribe();return()=>{n?.(),o?.()}},getSnapshot=()=>`${getModelVersion(e)}:${getModelVersion(t)}`;return Object.freeze({getSnapshot,subscribe})},usePlayerDirectory=()=>{const{playerDirectory:e,playerRelationships:t}=useNexGui(),g=(0,l.useMemo)(()=>createDirectoryBinding(e,t),[e,t]),n=(0,l.useSyncExternalStore)(g.subscribe,g.getSnapshot,g.getSnapshot);return(0,l.useMemo)(()=>Object.freeze({version:n,getPlayerColor:e?.getPlayerColor?.bind(e)??fallbackColor,getPlayerProfile:e?.getPlayerProfile?.bind(e)??fallbackNull,isAllyPlayer:t?.isAllyPlayer?.bind(t)??fallbackFalse,isCityEnemyPlayer:t?.isCityEnemyPlayer?.bind(t)??fallbackFalse,isEnemyPlayer:t?.isEnemyPlayer?.bind(t)??fallbackFalse,resolvePlayerNameFromFullname:e?.resolvePlayerNameFromFullname?.bind(e)??fallbackName}),[e,t,n])},usePartyViewModel=()=>{const e=usePlayerDirectory(),{members:t,leader:g,selfName:n,settings:o,setLeader:a,addMember:C,removeMember:I,setSetting:i}=useParty();return(0,l.useMemo)(()=>{e.version;const s=t.map(t=>({color:e.getPlayerColor(t),disabled:t===n,name:t})),l=t.map(t=>({color:e.getPlayerColor(t),name:t})),c=re.map(({key:e,label:t,tooltip:g})=>({key:e,label:t,tooltip:g,value:Boolean(o?.[e]),onChange:t=>i(e,t)}));return{addMember:C,leader:g&&t.includes(g)?g:"",leaderColor:g?e.getPlayerColor(g):null,leaderOptions:l,memberRows:s,members:t,removeMember:I,selfName:n,setLeader:a,toggles:c}},[C,g,t,e,I,n,a,i,o])},getFlipTransform$4=e=>{switch(e){case 1:return"scaleX(-1) scaleY(-1)";case 2:return"scaleY(-1)";case 3:return"scaleX(-1)";default:return"none"}},PartyPanelInner=()=>{const e=useTheme$1(),[t]=(0,l.useState)(()=>Math.floor(4*Math.random())),[g,n]=(0,l.useState)(""),{addMember:o,leader:a,leaderColor:C,leaderOptions:I,memberRows:i,members:s,removeMember:c,setLeader:u,toggles:d}=usePartyViewModel(),p=e?.nexGui?.backgroundImage??"",m=e?.nexGui?.backgroundOpacity??.5,h=e?.nexGui?.backgroundFilter??"none",y=(0,l.useCallback)(e=>{"Enter"===e.key&&g.trim()&&(o(g.trim()),n(""))},[o,g]);return React.createElement(fC,{className:"party-panel",sx:{height:"100%",overflow:"hidden",position:"relative",width:"100%"}},p?React.createElement(fC,{"aria-hidden":"true",className:"party-panel__background",sx:{backgroundImage:`url(${p})`,backgroundPosition:"center",backgroundSize:"cover",filter:h,inset:0,opacity:m,position:"absolute",transform:getFlipTransform$4(t),zIndex:0}}):null,React.createElement(fC,{className:"party-panel__content",sx:{background:`linear-gradient(180deg, ${alpha("#050505",.28)} 0%, ${alpha("#050505",.56)} 100%)`,display:"grid",gridTemplateColumns:"1fr 1fr",gap:2,height:"100%",overflowY:"auto",p:1.25,position:"relative",width:"100%",zIndex:1}},React.createElement(fC,{sx:{display:"flex",flexDirection:"column",gap:.5,minWidth:0}},React.createElement(kl,{label:"Add member",onChange:e=>n(e.target.value),onKeyDown:y,size:"small",sx:{mb:.5,width:"15ch"},value:g}),React.createElement(RC,{component:"span",sx:{color:"text.secondary",fontSize:11,fontWeight:700,letterSpacing:.4,pb:.25,textTransform:"uppercase"}},"Party Members"),s.length>0?i.map(e=>React.createElement(vd,{color:e.color,disabled:e.disabled,key:e.name,name:e.name,onClick:c})):React.createElement(RC,{color:"text.secondary",variant:"body2"},"No party members")),React.createElement(fC,{sx:{display:"flex",flexDirection:"column",gap:1}},React.createElement(Js,{fullWidth:!0,size:"small"},React.createElement(Qs,{id:"nexgui4-party-leader-label"},"Party Leader"),React.createElement(xl,{disabled:0===s.length,label:"Party Leader",labelId:"nexgui4-party-leader-label",onChange:e=>u(e.target.value),sx:{color:C??"text.primary",minWidth:"18ch"},value:a},I.map(e=>React.createElement(bi,{key:e.name,sx:{color:e.color},value:e.name},e.name)))),React.createElement(pi,{sx:{my:.5}}),React.createElement(RC,{component:"span",sx:{color:"text.secondary",fontSize:11,fontWeight:700,letterSpacing:.4,textTransform:"uppercase"}},"Party Behaviour"),d.map(({key:e,label:t,tooltip:g,value:n,onChange:o})=>React.createElement(Vu,{key:e,label:t,onChange:o,tooltip:g,value:n})))))};PartyPanelInner.displayName="PartyPanelInner";var PartyPanel=()=>React.createElement(TC,{panelName:"Party"},React.createElement(PartyPanelInner,null));PartyPanel.displayName="PartyPanel";var xd={color:xC.default.string.isRequired,isAlly:xC.default.bool,isEnemy:xC.default.bool,isTarget:xC.default.bool,name:xC.default.string.isRequired},Sd=xC.default.exact(xd),RoomPlayerRowComponent=({onHover:e,onLeave:t,onSelect:g,player:n})=>{const o=n.isEnemy?"#ff0000":"#ffffff",a=n.isAlly||n.isEnemy;return React.createElement(fC,{className:"room-player-row",onClick:()=>g(n.name),onMouseEnter:e,onMouseLeave:t,sx:{alignItems:"center",cursor:"pointer",display:"inline-flex",gap:.125,margin:"2px 4px",minHeight:e=>`${Number(e.typography.fontSize)+8}px`,outline:n.isTarget?"1px solid red":"",px:.25,py:.125,position:"relative",zIndex:1}},a?React.createElement(RC,{component:"span",sx:{color:o,fontWeight:700},variant:"body2"},"("):null,React.createElement(RC,{component:"span",sx:{color:n.color,fontWeight:700},variant:"body2"},n.name),a?React.createElement(RC,{component:"span",sx:{color:o,fontWeight:700},variant:"body2"},")"):null)};RoomPlayerRowComponent.displayName="RoomPlayerRow",RoomPlayerRowComponent.propTypes={onHover:xC.default.func.isRequired,onLeave:xC.default.func.isRequired,onSelect:xC.default.func.isRequired,player:Sd.isRequired};var wd=(0,l.memo)(RoomPlayerRowComponent);wd.displayName="RoomPlayerRow",wd.propTypes=RoomPlayerRowComponent.propTypes;var kd=new Set(["regex","user","time","loaded"]),formatCellValue=e=>Array.isArray(e)?e.join(", "):null!==e&&"object"==typeof e?JSON.stringify(e):String(e),Ed=xC.default.objectOf(xC.default.oneOfType([xC.default.string,xC.default.number,xC.default.bool,xC.default.array,xC.default.object])),PlayerPopoverComponent=({anchorEl:e=null,onClose:t,player:g})=>{const n=(0,l.useMemo)(()=>Object.entries(g??{}).flatMap(([e,t])=>kd.has(e)||null==t?[]:React.createElement("tr",{key:e},React.createElement("td",{style:{color:"cyan",padding:"0 5px 0 2px"}},e),React.createElement("td",{style:{padding:0}},formatCellValue(t)))),[g]);return g?React.createElement(KI,{anchorEl:e,anchorOrigin:{horizontal:"left",vertical:"top"},disableRestoreFocus:!0,onClose:t,open:Boolean(e),sx:{pointerEvents:"none"},slotProps:{paper:{sx:{backgroundColor:"#000000",border:"1px solid #ffffff"}}},transformOrigin:{horizontal:"right",vertical:"bottom"}},React.createElement("table",{style:{background:"black",borderSpacing:"0px",fontSize:"13px",margin:"10px",maxWidth:"100%",padding:"1px",textAlign:"left"}},React.createElement("thead",null,React.createElement("tr",null,React.createElement("th",{style:{width:"auto"}}),React.createElement("th",{style:{width:"auto"}}))),React.createElement("tbody",null,n))):null};PlayerPopoverComponent.displayName="PlayerPopover",PlayerPopoverComponent.propTypes={anchorEl:xC.default.instanceOf(Element),onClose:xC.default.func.isRequired,player:Ed},PlayerPopoverComponent.defaultProps={player:null};var Rd=(0,l.memo)(PlayerPopoverComponent);Rd.displayName="PlayerPopover",Rd.propTypes=PlayerPopoverComponent.propTypes;var selectCharacterSlice=e=>({name:e.name,class:e.class,level:e.level,gender:e.gender,balance:e.balance,equilibrium:e.equilibrium,currentAffs:e.currentAffs,limbs:e.limbs,updateCharacter:e.updateCharacter,setClass:e.setClass}),useCharacter=()=>{const{stores:e}=useNexGui();return e.character(useShallow(selectCharacterSlice))},resolvePlayerProfile=(e,t,g)=>mergePlayerPresentationProfile(g.getPlayerProfile(t),buildFallbackPlayerProfile(e,t)),useRoomPlayersViewModel=()=>{const{adapter:e}=useNexGui(),{players:t}=useRoom(),{name:g}=useCharacter(),{isPlayer:n,name:o}=useTarget(),{members:a}=useParty(),C=usePlayerDirectory(),I=(0,l.useMemo)(()=>{C.version;const e=new Set((a??[]).filter(e=>"string"==typeof e&&e.length>0&&e!==g)),I=C.getPlayerProfile(g)?.city??"";return[...t??[]].map(t=>{const g=resolveRoomPlayerName(t,C);if(!g)return null;const a=resolvePlayerProfile(t,g,C),i=!0===a?.loaded,s=C.isEnemyPlayer(g),l=C.isAllyPlayer(g)||e.has(g);let c=5;return i&&(c=s?0:l?1:a.city===I?2:"garden"===a.city?3:4),{color:resolvePlayerPresentationColor({name:g,profile:a,playerDirectory:C}),isAlly:l,isEnemy:s,isTarget:n&&g===o,loaded:i,name:g,profile:a,priority:c}}).filter(Boolean).sort((e,t)=>e.priority!==t.priority?e.priority-t.priority:e.name.localeCompare(t.name))},[a,C,t,g,n,o]),i=(0,l.useCallback)(t=>{e?.send?.(`settarget ${t}`)},[e]);return(0,l.useMemo)(()=>({players:I,selectPlayer:i}),[I,i])},getFlipTransform$3=e=>{switch(e){case 1:return"scaleX(-1) scaleY(-1)";case 2:return"scaleY(-1)";case 3:return"scaleX(-1)";default:return"none"}},PlayersPanelInner=()=>{const e=useTheme$1(),{players:t,selectPlayer:g}=useRoomPlayersViewModel(),[n]=(0,l.useState)(()=>Math.floor(4*Math.random())),[o,a]=(0,l.useState)(null),[C,I]=(0,l.useState)(""),i=e?.nexGui?.backgroundImage??"",s=e?.nexGui?.backgroundOpacity??.5,c=e?.nexGui?.backgroundFilter??"none",u=C?t.find(e=>e.name===C)?.profile??null:null;(0,l.useEffect)(()=>{o&&(C&&t.some(e=>e.name===C)||(a(null),I("")))},[o,C,t]);const handleClosePopover=()=>{a(null),I("")};return 0===t.length?React.createElement(fC,{className:"players-panel players-panel--empty",sx:{alignItems:"center",color:"text.secondary",display:"flex",flex:1,justifyContent:"center",p:2}},React.createElement(RC,{variant:"body2"},"No players in room")):React.createElement(fC,{className:"players-panel",sx:{height:"100%",overflow:"hidden",position:"relative",width:"100%"}},i?React.createElement(fC,{"aria-hidden":"true",className:"players-panel__background",sx:{backgroundImage:`url(${i})`,backgroundPosition:"center",backgroundSize:"cover",filter:c,inset:0,opacity:s,position:"absolute",transform:getFlipTransform$3(n),zIndex:0}}):null,React.createElement(fC,{className:"players-panel__content",sx:{alignContent:"flex-start",background:`linear-gradient(180deg, ${alpha("#050505",.28)} 0%, ${alpha("#050505",.56)} 100%)`,color:"text.primary",display:"flex",flexDirection:"row",flexWrap:"wrap",height:"100%",overflowY:"auto",position:"relative",width:"100%",zIndex:1}},t.map((e,t)=>React.createElement(wd,{key:`${e.name}-${t}`,onHover:t=>{e.loaded?(a(t.currentTarget),I(e.name)):handleClosePopover()},onLeave:handleClosePopover,onSelect:g,player:e}))),React.createElement(Rd,{anchorEl:o,onClose:handleClosePopover,player:u?.loaded?u:null}))};PlayersPanelInner.displayName="PlayersPanelInner";var PlayersPanel=()=>React.createElement(TC,{panelName:"Players"},React.createElement(PlayersPanelInner,null));PlayersPanel.displayName="PlayersPanel";var Td="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI0AAADUCAYAAACh36CaAAAACXBIWXMAAA7EAAAOxAGVKw4bAAA4HGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMjEgNzkuMTU0OTExLCAyMDEzLzEwLzI5LTExOjQ3OjE2ICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE1LTA0LTA2VDExOjM1OjI4LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTUtMDQtMDZUMTM6NTY6MzktMDc6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE1LTA0LTA2VDEzOjU2OjM5LTA3OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjkwNzk4Nzk4LTRlOWItMTM0YS04MzBjLTQ2MTJlNWVhZDJjYTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDo5MDc5ODc5OC00ZTliLTEzNGEtODMwYy00NjEyZTVlYWQyY2E8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDo5MDc5ODc5OC00ZTliLTEzNGEtODMwYy00NjEyZTVlYWQyY2E8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6OTA3OTg3OTgtNGU5Yi0xMzRhLTgzMGMtNDYxMmU1ZWFkMmNhPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE1LTA0LTA2VDExOjM1OjI4LTA3OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjk2MDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+OTYwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xNDE8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjEyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz6NaNPuAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAVqSURBVHja7Nt/TNRlHMDxz07vjjt+DqVAHJJmYaxWkQj+GP7MCbg0c5WuNdOtVVstbKw/ZLMWTnNaKrOmqBCRLuEYiCHoJbaFyB1igIaIDg7CBGbyQzAiP/3RMK1kXP35fX+3977/fJ9/nr32PHf3fE9UVYi8iUkg0BBoCDQEGgINEWgINAQaAg2BhsjIaO6+QkOCJXpqpDwcGS4h44Ls05+MmvP6K8tWfZi6bvXWtLdemB37xNPhoeOtPlaLjA8OlOAg/3vGg8ZgaEwmk/j52iRyYqjMmv548ttrV+7ZszXVVZS1uf1k3s6rZQe3N+/b/n556purdj86JSLZbB4rFosZNEZfacIeCH5k96aU+q7aYtXOStXOMzrYfFJ7Lx3Xm5eOq3ZUql47rR0/FGlG+ru1gf6+k0BjbDRRR7I//lV/b9AbPx7TVrdDPe58bXU7/sr15737Yqnq7Yuan5neIyKRoDEomnfWrizSW/XaVl2gHpfjXix/y+PK15/OFqj21+obry4vAI0x0YSfcmQM6s8V6nHljwjmbjh67bR++/WOWyISBhqDofHztcfXObO1//KJUYEZrv/yCa0p2682H0s8aAyGxm7zWXi2dL8OXHF6icaprpJMtVrM80BjPDQz/guagStOrfpmr1rMY2NAYzA0Ex4c/1itM1tver09OdVdknnbajFPBo2B0AT4+yY8t3hOZWXxnsGbTd6h6W0s0wvlX2pcTPRhi3nsctAYBI3JZIrNSE/p62s6rlfPFXqFpqv+qHbUFeuS+XGH7TZrEmiMsz35rFu1tGao9ZTXaHoay7Thu1x9KCIsVUQmgMY4aKI+3/xep3ad8QpMq9uhHXXF2t90Qte+lJw1bWpkAmiMg8a++vlnK9wlmdrdUDrqH/eGt6daZ7bGx0Sv97P7sNIY7RhhzYuJn3i72ui1Cn152cJPOUYwKJqQcUHzz5/M0d7GslGB6W44pk3fH9KJYSGzQWMwNEsXzZSkBXES+9S0iCPZW3SwpXxUaIY8p7Qkd1u3iASDxmBopkwKl8kRE8RqMY85+NnGy9pVpS1VI3+uaXHlq153afaODQ0iIjabVfx8baAx4ktYK5PnbdHuam2vKbzv6xEel0PbawpVb1TrisSEDSIiY0wmGWMygcaIaETEt9yR0aSD57Wt2vGPb1IeV762VReo/nZBS3K3NYqIlTf3QCM+VktMwb5NQ9pfq531R7X5TJ62uh3aXJWnXfVHVQfqNG/vR3cOKUEDmuHrmQ/Wv9atv7hV+86pXnfduW9MWdMjIrP+bRBojI1GRCQwcUH8oZxdaX05u9K6vti5oXfx3BlfiUjA/QaABjQSFOifmLxoVtaKpLmZSQtnHgjwsy8Z6XnQ8A9LAg2BhkBDoCHQEIGGQEOgIdAQaIhAQ6Ah0BBoCDREoCHQEGgINAQaAg2TQKAh0BBoCDQEGiLQEGgINAQaAg0RaAg0BBoCDYGGCDQEGgINgYZAQ6AhAg2BhkBDoCHQEIGGQEOgIdAQaIhAQ6Ah0BBoCDREoCHQEGgINAQaAg0RaAg0BBoCDYGGCDQEGgINgYZAQwQaAg2BhkBDoCECDYGGQEOgIdAQaIhAQ6Ah0BBoCDREoCHQEGgINAQaItAQaAg0BBoCDRGTQKAh0BBoCDQEGiLQEGgINAQaAg0RaAg0BBoCDYGGCDQEGgINgYZAQ6BhEgg0BBoCDYGGQEMEGgINgYZAQ6AhAg2BhkBDoCHQEIGGQEOgIdAQaAg0RKAh0BBoCDQEGiLQEGgINAQaAg0RaAg0BBoCDYGGCDQEGgINgYZAQ6AhAg2BhkBDoCHQEIGGQEOgIdAQaIhAQ/+zPwYASIhrmburemkAAAAASUVORK5CYII=",Md="data:image/png;base64,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",Pd="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI0AAADUCAYAAACh36CaAAAACXBIWXMAAA7EAAAOxAGVKw4bAAA4HGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMjEgNzkuMTU0OTExLCAyMDEzLzEwLzI5LTExOjQ3OjE2ICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE1LTA0LTA2VDExOjI4OjM0LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTUtMDQtMDZUMTM6NTY6MzctMDc6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE1LTA0LTA2VDEzOjU2OjM3LTA3OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjM2YjMxYTk5LTUwNTYtZTY0OC04OTZkLWI5NTYxMzk2MjViMjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDozNmIzMWE5OS01MDU2LWU2NDgtODk2ZC1iOTU2MTM5NjI1YjI8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDozNmIzMWE5OS01MDU2LWU2NDgtODk2ZC1iOTU2MTM5NjI1YjI8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6MzZiMzFhOTktNTA1Ni1lNjQ4LTg5NmQtYjk1NjEzOTYyNWIyPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE1LTA0LTA2VDExOjI4OjM0LTA3OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjk2MDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+OTYwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xNDE8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjEyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg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",Nd="data:image/png;base64,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vmXxPHQEOiGK5+82m9WCprYgkqqu3uVyDWrX5YqiXMVzzz23Ue5v3LRu3XfQEwpnnA5OJFMoneDFdL8/mLFojCjKZZw4cWLO0sULW++cX7ruqae+hVBrB5LJFETx4oFIs8mA3r4BDEajeb0f87rZ/xfNzc3T1j215vOP3/mniltvvxkdDa2QpPSFp60/MhmNCPcPoqcnfOXvDrlGFOUStm7det+Pn3nUoHc70Xa2FRCEzEP1IxIpCb4iN5Lx4TF/fng0inIJgbbWGU6rGcGzrVf8SpB4PIGyUh+KPAWCLMuXn3iNKMolxIYi1TabBYeOfKEwxqDTnb+b2MjZRVEQRk42CgBjkFXFGI/Hr/bdIVmjKBptbW0V86dPuDktpbHn0yM6k9GAdFqGTqeDfuTb8RgwEoZBb9BDTUuefH6BNEXRsNvtw5KMuMNpQ3nphGgsnoSgE+XheDImKyq6+yJSe2dvymYxw2QwAIzBYjHHbTZbTLtXriiKhtfrDSuW0vWv/PvW9B1LF8pOuw1ed4EcHY6nFEVBSZFXL+p1amNbBwKdIZjtVljM1jF/WGI0inIJf/P00z87fKrtzNw5lW6mqqn3dh4cSiaT1orJpbBajaoegmA1GVHgdkJKSegKR8Z8Cng0inIZQ0NxFukbgN5g0JtNeuv8eTPMwWAIJ+vbBixWk2Iym1B/ugWrH/sRnlj71D9q14/FuP5DaVfS0NBQ9b21j7+Tjg/OuXv5IrQHe5CUJEQGoqieVoZAsAct3cP7X3rppSfnzp17TLt+LCjKFSiKoovH49a6urrZX3zxxcydO3feVVpaGjSZTGmj0Sht3Ljx+9o1+UBROESvKRyiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKBz6X15rejmpXenZAAAAAElFTkSuQmCC",zd="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI0AAADUCAYAAACh36CaAAAACXBIWXMAAA7EAAAOxAGVKw4bAAA4HGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMjEgNzkuMTU0OTExLCAyMDEzLzEwLzI5LTExOjQ3OjE2ICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE1LTA0LTA2VDExOjM0OjUwLTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTUtMDQtMDZUMTM6NTY6MzktMDc6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE1LTA0LTA2VDEzOjU2OjM5LTA3OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjE0Y2RkMDRhLWU2OGMtYzM0My1iYjJmLWYxNDE5ZjAxMDRmYTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDoxNGNkZDA0YS1lNjhjLWMzNDMtYmIyZi1mMTQxOWYwMTA0ZmE8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDoxNGNkZDA0YS1lNjhjLWMzNDMtYmIyZi1mMTQxOWYwMTA0ZmE8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6MTRjZGQwNGEtZTY4Yy1jMzQzLWJiMmYtZjE0MTlmMDEwNGZhPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE1LTA0LTA2VDExOjM0OjUwLTA3OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjk2MDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+OTYwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xNDE8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjEyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg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",Od="data:image/png;base64,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",Dd="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI0AAADUCAYAAACh36CaAAAACXBIWXMAAA7EAAAOxAGVKw4bAAA4HGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMjEgNzkuMTU0OTExLCAyMDEzLzEwLzI5LTExOjQ3OjE2ICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE1LTA0LTA2VDExOjI5OjIyLTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTUtMDQtMDZUMTM6NTY6MzctMDc6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE1LTA0LTA2VDEzOjU2OjM3LTA3OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjcxZWY1OGIzLTljYTItOTc0Zi05YmNjLTMxMTg4ZGY0NTk4ZDwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDo3MWVmNThiMy05Y2EyLTk3NGYtOWJjYy0zMTE4OGRmNDU5OGQ8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDo3MWVmNThiMy05Y2EyLTk3NGYtOWJjYy0zMTE4OGRmNDU5OGQ8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NzFlZjU4YjMtOWNhMi05NzRmLTliY2MtMzExODhkZjQ1OThkPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE1LTA0LTA2VDExOjI5OjIyLTA3OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjk2MDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+OTYwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xNDE8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjEyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg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",jd="data:image/png;base64,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",Ld="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI0AAADUCAYAAACh36CaAAAACXBIWXMAAA7EAAAOxAGVKw4bAAA4HGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMjEgNzkuMTU0OTExLCAyMDEzLzEwLzI5LTExOjQ3OjE2ICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE1LTA0LTA2VDExOjMwOjIwLTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTUtMDQtMDZUMTM6NTY6NDAtMDc6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE1LTA0LTA2VDEzOjU2OjQwLTA3OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjk1NjQ4ZGJmLTljNTUtZTY0Zi1iNDAxLWNlOTdkZGIxYzQ5NjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDo5NTY0OGRiZi05YzU1LWU2NGYtYjQwMS1jZTk3ZGRiMWM0OTY8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDo5NTY0OGRiZi05YzU1LWU2NGYtYjQwMS1jZTk3ZGRiMWM0OTY8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6OTU2NDhkYmYtOWM1NS1lNjRmLWI0MDEtY2U5N2RkYjFjNDk2PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE1LTA0LTA2VDExOjMwOjIwLTA3OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjk2MDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+OTYwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xNDE8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjEyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg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",Gd="data:image/png;base64,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",Bd="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI0AAADUCAYAAACh36CaAAAACXBIWXMAAA7EAAAOxAGVKw4bAAA4HGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMjEgNzkuMTU0OTExLCAyMDEzLzEwLzI5LTExOjQ3OjE2ICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE1LTA0LTA2VDExOjM1OjU2LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTUtMDQtMDZUMTM6NTY6MzgtMDc6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE1LTA0LTA2VDEzOjU2OjM4LTA3OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjFiYTIzODgyLWRmMjYtMGQ0OS04YzU4LTMzMzU4ZWMwZDE2YzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDoxYmEyMzg4Mi1kZjI2LTBkNDktOGM1OC0zMzM1OGVjMGQxNmM8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDoxYmEyMzg4Mi1kZjI2LTBkNDktOGM1OC0zMzM1OGVjMGQxNmM8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6MWJhMjM4ODItZGYyNi0wZDQ5LThjNTgtMzMzNThlYzBkMTZjPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE1LTA0LTA2VDExOjM1OjU2LTA3OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjk2MDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+OTYwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xNDE8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjEyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg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",Fd="data:image/png;base64,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",Wd=Object.freeze([{key:"head",label:"H:"},{key:"torso",label:"T:"},{key:"leftarm",label:"LA:"},{key:"rightarm",label:"RA:"},{key:"leftleg",label:"LL:"},{key:"rightleg",label:"RL:"}]),normalizeValue=e=>{const t=Number(e);return Number.isFinite(t)?`${Math.round(t)}`:"0"},Vd=xC.default.shape({head:xC.default.oneOfType([xC.default.number,xC.default.string]).isRequired,torso:xC.default.oneOfType([xC.default.number,xC.default.string]).isRequired,leftarm:xC.default.oneOfType([xC.default.number,xC.default.string]).isRequired,rightarm:xC.default.oneOfType([xC.default.number,xC.default.string]).isRequired,leftleg:xC.default.oneOfType([xC.default.number,xC.default.string]).isRequired,rightleg:xC.default.oneOfType([xC.default.number,xC.default.string]).isRequired}),LimbColumnComponent=({values:e})=>React.createElement(fC,{"aria-hidden":"true",className:"nexus-man__limb-column",sx:{color:"text.primary",display:"flex",flexDirection:"column",fontSize:13,lineHeight:1.5,minWidth:"8ch",width:"8ch"}},Wd.map(({key:t,label:g})=>React.createElement(fC,{className:`nexus-man__limb-row nexus-man__limb-row--${t}`,key:t,sx:{display:"flex",justifyContent:"space-between",width:"8ch"}},React.createElement(RC,{component:"span",sx:{color:"text.primary",fontFamily:"inherit",fontSize:"inherit",width:"3ch"}},g),React.createElement(RC,{component:"span",sx:{color:"text.primary",fontFamily:"inherit",fontSize:"inherit",textAlign:"left",width:"5ch"}},normalizeValue(e[t])))));LimbColumnComponent.displayName="LimbColumn",LimbColumnComponent.propTypes={values:Vd.isRequired};var _d=(0,l.memo)(LimbColumnComponent);_d.displayName="LimbColumn",_d.propTypes=LimbColumnComponent.propTypes;var Ud=Object.freeze({male:Object.freeze({head:Md,torso:Fd,leftarm:Nd,rightarm:jd,leftleg:Od,rightleg:Gd}),female:Object.freeze({head:Td,torso:Bd,leftarm:Pd,rightarm:Dd,leftleg:zd,rightleg:Ld})}),Zd=Object.freeze([{key:"leftleg",label:"left leg"},{key:"rightleg",label:"right leg"},{key:"torso",label:"torso"},{key:"head",label:"head"},{key:"leftarm",label:"left arm"},{key:"rightarm",label:"right arm"}]),Kd=xC.default.shape({percent:xC.default.oneOfType([xC.default.number,xC.default.string]),value:xC.default.oneOfType([xC.default.number,xC.default.string]),damagePercent:xC.default.oneOfType([xC.default.number,xC.default.string])}),normalizeGender=e=>"string"==typeof e&&"female"===e.trim().toLowerCase()?"female":"male",normalizeAfflictions=e=>Array.isArray(e)?e.map(e=>"string"==typeof e?e.trim().toLowerCase():`${e??""}`.trim().toLowerCase()).filter(e=>e.length>0):[],toNumericValue=e=>{const t=Number(e);return Number.isFinite(t)?t:0},getLimbEntry=(e,t)=>{const g=[t];"leftarm"===t?g.push("leftArm"):"rightarm"===t?g.push("rightArm"):"leftleg"===t?g.push("leftLeg"):"rightleg"===t&&g.push("rightLeg");for(const n of g)if(e?.[n])return e[n];return{}},buildLimbValues=e=>({head:toNumericValue(getLimbEntry(e,"head").percent??getLimbEntry(e,"head").value),torso:toNumericValue(getLimbEntry(e,"torso").percent??getLimbEntry(e,"torso").value),leftarm:toNumericValue(getLimbEntry(e,"leftarm").percent??getLimbEntry(e,"leftarm").value),rightarm:toNumericValue(getLimbEntry(e,"rightarm").percent??getLimbEntry(e,"rightarm").value),leftleg:toNumericValue(getLimbEntry(e,"leftleg").percent??getLimbEntry(e,"leftleg").value),rightleg:toNumericValue(getLimbEntry(e,"rightleg").percent??getLimbEntry(e,"rightleg").value)}),getLimbState=(e,t)=>{if("torso"===t){if(e.includes("mildtrauma"))return"mild-trauma";if(e.includes("serioustrauma"))return"serious-trauma"}return e.includes(`broken${t}`)?"broken":e.includes(`damaged${t}`)?"damaged":e.includes(`mangled${t}`)?"mangled":"healthy"},getFilterReference=(e,t)=>"broken"===e?`url(#${t.yellow})`:"damaged"===e||"mild-trauma"===e?`url(#${t.orange})`:"mangled"===e||"serious-trauma"===e?`url(#${t.red})`:"",NexusManComponent=({currentAffs:e=[],gender:t="male",limbs:g={}})=>{const n=(0,l.useId)().replace(/[:]/g,""),o={yellow:`${n}-yellowShift`,orange:`${n}-orangeShift`,red:`${n}-redShift`},a=normalizeGender(t),C=Ud[a],I=normalizeAfflictions(e),i=buildLimbValues(g);return React.createElement(fC,{"aria-label":"NexusMan body status display",className:"nexus-man","data-gender":a,role:"img",sx:{alignItems:"center",display:"flex",flexDirection:"row",gap:1,justifyContent:"center",width:"100%"}},React.createElement("svg",{"aria-hidden":"true",height:"0",width:"0"},React.createElement("defs",null,React.createElement("filter",{id:o.yellow},React.createElement("feColorMatrix",{type:"matrix",values:"1 0 0 0 0\n 0 1 0 0 0\n 0 0 0 0 0\n 0 0 0 1 0"})),React.createElement("filter",{id:o.orange},React.createElement("feColorMatrix",{type:"matrix",values:"1 1 0 0 0\n 0 0.45 0 0 0\n 0 0 0 0 0\n 0 0 0 1 0"})),React.createElement("filter",{id:o.red},React.createElement("feColorMatrix",{type:"matrix",values:"1 0 0 0 0\n 0 0 0 0 0\n 0 0 0 0 0\n 0 0 0 1 0"})))),React.createElement(fC,{className:"nexus-man__figure",sx:{flex:"1 1 auto",height:"100%",maxWidth:"202px",minHeight:"120px",overflow:"hidden",position:"relative",width:"100%"}},Zd.map(({key:e,label:t})=>{const g=getLimbState(I,e),n=getFilterReference(g,o);return React.createElement(fC,{alt:"","aria-hidden":"true",className:`nexus-man__layer nexus-man__layer--${e}`,component:"img","data-damage-state":g,"data-limb":e,key:e,src:C[e],sx:{filter:n,height:"100%",left:0,objectFit:"contain",position:"absolute",top:0,width:"100%"},title:t})})),React.createElement(_d,{values:i}))};NexusManComponent.displayName="NexusMan",NexusManComponent.propTypes={currentAffs:xC.default.arrayOf(xC.default.string),gender:xC.default.oneOf(["male","female"]),limbs:xC.default.objectOf(Kd)};var Hd=(0,l.memo)(NexusManComponent);Hd.displayName="NexusMan",Hd.propTypes=NexusManComponent.propTypes;var Yd=Object.freeze(["hp","mp","ep","wp","nl"]),clamp$1=(e,t,g)=>Math.min(g,Math.max(t,e)),normalizeNumber$2=e=>{const t=Number(e);return Number.isFinite(t)?t:0},formatNumber=e=>normalizeNumber$2(e).toLocaleString(),getBaseColor=(e,t)=>e?.palette?.[t]?.main??e?.nexGui?.tokens?.game?.[t]??ho.game[t],getPercentage=(e,t)=>{const g=normalizeNumber$2(e),n=normalizeNumber$2(t);return n<=0?0:clamp$1(g/n*100,0,100)},getHpColor=e=>e<=25?"#d9534f":e<=50?"#d9832e":e<=75?"#b7b33d":"#2fa35a",getGaugeColor=(e,t,g)=>"hp"===t?getHpColor(g):getBaseColor(e,t),StatBarComponent=({type:e,current:t,max:g,label:n=e.toUpperCase()})=>{const o=useTheme$1(),a=normalizeNumber$2(t),C=normalizeNumber$2(g),I=getPercentage(a,C),i=getGaugeColor(o,e,I),s=`${Math.round(I)}%`;return React.createElement(fC,{className:`stat-bar stat-bar--${e}`,sx:{minWidth:0,width:"100%"}},React.createElement(fC,{"aria-label":n,"aria-valuemax":100,"aria-valuemin":0,"aria-valuenow":Math.round(I),className:`stat-bar__progress stat-bar__progress--${e}`,role:"progressbar",sx:{backgroundColor:alpha(i,.14),border:`1px solid ${alpha(i,.48)}`,borderRadius:1,minHeight:22,overflow:"hidden",position:"relative",width:"100%"}},React.createElement(fC,{"aria-hidden":"true",sx:{backgroundColor:i,bottom:0,left:0,opacity:.68,position:"absolute",top:0,transition:"width 180ms ease",width:`${I}%`}}),React.createElement(fC,{sx:{alignItems:"center",color:"text.primary",display:"flex",gap:1,justifyContent:"space-between",minHeight:22,px:.75,position:"relative",zIndex:1}},React.createElement(RC,{component:"span",sx:{color:"text.primary",fontSize:11,fontWeight:700,letterSpacing:.5,textTransform:"uppercase"}},n),React.createElement(RC,{component:"span",sx:{color:"text.primary",fontSize:11,fontVariantNumeric:"tabular-nums",textShadow:"0 0 3px rgba(0, 0, 0, 0.85)"}},formatNumber(a)," / ",formatNumber(C)," (",s,")"))))};StatBarComponent.displayName="StatBar",StatBarComponent.propTypes={current:xC.default.number.isRequired,label:xC.default.string,max:xC.default.number.isRequired,type:xC.default.oneOf(Yd).isRequired};var $d=(0,l.memo)(StatBarComponent);$d.displayName="StatBar",$d.propTypes=StatBarComponent.propTypes;var selectStatsSlice=e=>({hp:e.hp,mp:e.mp,ep:e.ep,wp:e.wp,nl:e.nl,gold:e.gold,bank:e.bank,xp:e.xp,xpToNext:e.xpToNext,updateStats:e.updateStats}),useStats=()=>{const{stores:e}=useNexGui();return e.stats(useShallow(selectStatsSlice))},Qd=Object.freeze([{type:"hp",label:"HP"},{type:"mp",label:"MP"},{type:"ep",label:"EP"},{type:"wp",label:"WP"},{type:"nl",label:"NL"}]),getFlipTransform$2=e=>{switch(e){case 1:return"scaleX(-1) scaleY(-1)";case 2:return"scaleY(-1)";case 3:return"scaleX(-1)";default:return"none"}},Indicator=({className:e,label:t,ready:g})=>React.createElement(fC,{className:e,sx:{alignItems:"center",backgroundColor:g?"rgba(18, 42, 26, 0.82)":"rgba(24, 24, 24, 0.82)",border:"1px solid",borderColor:g?"rgba(102, 221, 144, 0.7)":"rgba(192, 176, 144, 0.22)",borderRadius:999,color:g?"#66dd90":"text.disabled",display:"inline-flex",gap:.5,px:1,py:.25}},React.createElement(fC,{"aria-hidden":"true",sx:{backgroundColor:g?"#66dd90":"rgba(192, 176, 144, 0.35)",borderRadius:"50%",boxShadow:g?"0 0 8px rgba(102, 221, 144, 0.5)":"none",flexShrink:0,height:6,width:6}}),React.createElement(RC,{component:"span",sx:{color:"inherit",fontSize:11,fontWeight:700,letterSpacing:.5,textTransform:"uppercase"}},t)),StatsPanelInner=()=>{const e=useTheme$1(),[t]=(0,l.useState)(()=>Math.floor(4*Math.random())),{hp:g,mp:n,ep:o,wp:a,nl:C}=useStats(),{balance:I,currentAffs:i,equilibrium:s,gender:c,limbs:u}=useCharacter(),d=e?.nexGui?.backgroundImage??"",p=e?.nexGui?.backgroundOpacity??.5,m=e?.nexGui?.backgroundFilter??"none";return React.createElement(fC,{className:"stats-panel",sx:{height:"100%",overflow:"hidden",position:"relative",width:"100%"}},d?React.createElement(fC,{"aria-hidden":"true",className:"stats-panel__background",sx:{backgroundImage:`url(${d})`,backgroundPosition:"center",backgroundSize:"cover",filter:m,inset:0,opacity:p,position:"absolute",transform:getFlipTransform$2(t),zIndex:0}}):null,React.createElement(fC,{className:"stats-panel__content",sx:{background:`linear-gradient(180deg, ${alpha("#050505",.3)} 0%, ${alpha("#050505",.55)} 100%)`,display:"flex",flexDirection:"column",gap:1,height:"100%",p:1,position:"relative",width:"100%",zIndex:1}},React.createElement(fC,{className:"stats-panel__body",sx:{alignItems:"center",display:"flex",justifyContent:"center",minHeight:120}},React.createElement(Hd,{currentAffs:i,gender:c??"male",limbs:u})),React.createElement(fC,{className:"stats-panel__indicators",sx:{display:"flex",gap:1,justifyContent:"center"}},React.createElement(Indicator,{className:"stats-panel__balance stats-panel__balance--"+(I?"ready":"waiting"),label:"Balance",ready:I}),React.createElement(Indicator,{className:"stats-panel__equilibrium stats-panel__equilibrium--"+(s?"ready":"waiting"),label:"Equilibrium",ready:s})),React.createElement(fC,{className:"stats-panel__bars",sx:{display:"flex",flex:"1 1 auto",flexDirection:"column",gap:.75,justifyContent:"flex-end"}},Qd.map(({type:e,label:t})=>{const I={hp:g,mp:n,ep:o,wp:a,nl:C}[e]??{current:0,max:0};return React.createElement($d,{current:I.current??0,key:e,label:t,max:I.max??0,type:e})}))))};Indicator.displayName="StatsPanelIndicator",Indicator.propTypes={className:xC.default.string.isRequired,label:xC.default.string.isRequired,ready:xC.default.bool.isRequired},StatsPanelInner.displayName="StatsPanelInner";var StatsPanel=()=>React.createElement(TC,{panelName:"Stats"},React.createElement(StatsPanelInner,null));StatsPanel.displayName="StatsPanel";var SystemStreamInner=()=>{const{adapter:e,stores:t}=useNexGui(),{items:g,version:n}=useTranscript(t.systemStream),o=(0,l.useCallback)(t=>e.send(t),[e]);return React.createElement(HC,{className:"nexgui4-system-stream",itemKeyVersion:n,items:g,onSendCommand:o})};SystemStreamInner.displayName="SystemStreamInner";var SystemStream=()=>React.createElement(TC,{panelName:"System Stream"},React.createElement(SystemStreamInner,null));SystemStream.displayName="SystemStream";var getFlipTransform$1=e=>{switch(e){case 1:return"scaleX(-1) scaleY(-1)";case 2:return"scaleY(-1)";case 3:return"scaleX(-1)";default:return"none"}},TargetPanelInner=()=>{const e=useTheme$1(),[t]=(0,l.useState)(()=>Math.floor(4*Math.random())),g=e?.nexGui?.backgroundImage??"",n=e?.nexGui?.backgroundOpacity??.5,o=e?.nexGui?.backgroundFilter??"none";return React.createElement(fC,{className:"target-panel",sx:{height:"100%",overflow:"hidden",position:"relative",width:"100%"}},g?React.createElement(fC,{"aria-hidden":"true",className:"target-panel__background",sx:{backgroundImage:`url(${g})`,backgroundPosition:"center",backgroundSize:"cover",filter:o,inset:0,opacity:n,position:"absolute",transform:getFlipTransform$1(t),zIndex:0}}):null,React.createElement(fC,{className:"target-panel__content",sx:{background:`linear-gradient(180deg, ${alpha("#050505",.18)} 0%, ${alpha("#050505",.36)} 100%)`,display:"flex",flexDirection:"column",height:"100%",minHeight:0,position:"relative",width:"100%",zIndex:1}},React.createElement(fC,{className:"target-panel__body",sx:{alignItems:"center",display:"flex",flex:1,justifyContent:"center",minHeight:0,p:1}},React.createElement(Hd,{currentAffs:[],gender:"male",limbs:{}}))))};TargetPanelInner.displayName="TargetPanelInner";var TargetPanel=()=>React.createElement(TC,{panelName:"Target"},React.createElement(TargetPanelInner,null));TargetPanel.displayName="TargetPanel";var clamp=(e,t,g)=>Math.min(g,Math.max(t,e)),normalizeNumber$1=e=>{const t=Number(e);return Number.isFinite(t)?t:0},normalizeDirection=(e,t)=>"countup"===e||!1===t?"countup":"countdown",getElapsedMs=(e,t)=>Math.max(0,normalizeNumber$1(t)-normalizeNumber$1(e)),getElapsedPercentage=(e,t)=>{const g=Math.max(0,Math.abs(normalizeNumber$1(t)));return g<=0?100:clamp(e/g*100,0,100)},formatTimerValue=e=>{const t=Math.max(0,normalizeNumber$1(e))/1e3;return t<10?`${t.toFixed(1)}s`:t<=60?`${t.toFixed(0)}s`:`${Math.floor(t/60)}m ${(t%60).toFixed(0)}s`},hslToHex=(e,t=100,g=50)=>{const n=g/100,k=t=>(t+e/30)%12,o=t/100*Math.min(n,1-n),f=e=>n-o*Math.max(-1,Math.min(k(e)-3,Math.min(9-k(e),1)));return"#"+[f(0),f(8),f(4)].map(e=>Math.round(255*e).toString(16).padStart(2,"0")).join("")},getGradientColor=e=>hslToHex(1.2*clamp(normalizeNumber$1(e),0,100),100,e<75?50:Math.abs(e-100)/2+25),getProgressValue=(e,t,g)=>{const n=getElapsedPercentage(e,t);return"countup"===g?n:clamp(100-n,0,100)},TimerBarComponent=({id:e,label:t,durationMs:g,startedAt:n,elapsedMs:o=0,now:a,tickIntervalMs:C,running:I=!0,direction:i="countdown",countDown:s})=>{const l=useTheme$1(),c=Math.max(0,Math.abs(normalizeNumber$1(g))),u=normalizeDirection(i,s),d=clamp(!1!==I&&null!=n?getElapsedMs(n,a):normalizeNumber$1(o),0,c),p=getProgressValue(d,c,u),m=formatTimerValue(c-d),h=t?.trim()||e,y=getGradientColor(p),b=Math.max(22,normalizeNumber$1(l?.typography?.fontSize)+10),v=`${h} (${m})`,x=Math.max(0,normalizeNumber$1(C)),S=0===p||100===p?"none":`transform ${x}ms linear, background-color ${x}ms linear`;return React.createElement(fC,{className:`timer-bar timer-bar--${u}`,"data-timer-id":e,sx:{border:"1.5px solid #aaa",borderRadius:"6px",fontSize:l.typography.fontSize,margin:"3px 0",overflow:"hidden",position:"relative",width:"100%"}},React.createElement(fc,{"aria-label":h,"aria-valuetext":v,className:`timer-bar__progress timer-bar__progress--${u}`,sx:{backgroundColor:"transparent",height:b,"& .MuiLinearProgress-bar":{backgroundColor:y,borderRadius:"4px",transition:S}},value:p,variant:"determinate"}),React.createElement(fC,{sx:{alignItems:"center",color:"#FFF5D6",display:"flex",inset:0,px:1.25,pointerEvents:"none",position:"absolute"}},React.createElement(RC,{component:"span",sx:{color:"inherit",fontSize:"inherit",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",textShadow:"-1px -1px 1px #000, 1px -1px 1px #000, -1px 1px 1px #000, 1px 1px 1px #000",whiteSpace:"nowrap"},variant:"body2"},v)))};TimerBarComponent.displayName="TimerBar",TimerBarComponent.propTypes={countDown:xC.default.bool,direction:xC.default.oneOf(["countup","countdown"]),durationMs:xC.default.number.isRequired,elapsedMs:xC.default.number,id:xC.default.string.isRequired,label:xC.default.string.isRequired,now:xC.default.number.isRequired,running:xC.default.bool,startedAt:xC.default.number,tickIntervalMs:xC.default.number.isRequired};var Xd=(0,l.memo)(TimerBarComponent);Xd.displayName="TimerBar",Xd.propTypes=TimerBarComponent.propTypes;var Jd=[],normalizeNumber=e=>{const t=Number(e);return Number.isFinite(t)?t:0},isRunningTimer=e=>!1!==e?.running&&null!=e?.startedAt,getRemainingMs=(e,t)=>{const g=Math.max(0,Math.abs(normalizeNumber(e.durationMs))),n=Math.max(0,normalizeNumber(t)-normalizeNumber(e.startedAt));return Math.max(0,g-n)},getClockState=(e,t)=>{let g=1/0,n=!1;for(const o of e??[])isRunningTimer(o)&&(n=!0,g=Math.min(g,getRemainingMs(o,t)));return{isTicking:n,tickIntervalMs:n&&g<1e4?100:500}},useTimerClock=(e=Jd)=>{const[t,g]=(0,l.useState)(()=>Date.now()),{isTicking:n,tickIntervalMs:o}=(0,l.useMemo)(()=>getClockState(e,t),[t,e]);return(0,l.useEffect)(()=>{if(!n)return;const tick=()=>g(Date.now());tick();const e=setInterval(tick,o);return()=>clearInterval(e)},[n,o]),(0,l.useMemo)(()=>({now:t,tickIntervalMs:o,isTicking:n}),[n,t,o])},selectTimerView=({id:e,durationMs:t,startedAt:g,label:n,direction:o,position:a,stayVisible:C,enabled:I,running:i,elapsedMs:s,remainingMs:l})=>({id:e,durationMs:t,startedAt:g,label:n,direction:o,position:a,stayVisible:C,enabled:I,running:i,elapsedMs:s,remainingMs:l}),selectTimersSlice=e=>({timerEntries:e.timers,addTimer:e.addTimer,removeTimer:e.removeTimer,clearAll:e.clearAll}),useTimers=()=>{const{stores:e}=useNexGui(),{timerEntries:t,addTimer:g,removeTimer:n,clearAll:o}=e.timers(useShallow(selectTimersSlice)),a=(0,l.useMemo)(()=>t.map(selectTimerView),[t]);return(0,l.useMemo)(()=>({timers:a,addTimer:g,removeTimer:n,clearAll:o}),[g,o,n,a])},getFlipTransform=e=>{switch(e){case 1:return"scaleX(-1) scaleY(-1)";case 2:return"scaleY(-1)";case 3:return"scaleX(-1)";default:return"none"}},normalizePosition=e=>"bottom"===e?"bottom":"top",partitionTimers=e=>e.reduce((e,t)=>(e[normalizePosition(t.position)].push(t),e),{top:[],bottom:[]}),TimersPanelInner=()=>{const e=useTheme$1(),{timers:t}=useTimers(),[g]=(0,l.useState)(()=>Math.floor(4*Math.random())),n=e?.nexGui?.backgroundImage??"",o=e?.nexGui?.backgroundOpacity??.5,a=e?.nexGui?.backgroundFilter??"none",{now:C,tickIntervalMs:I}=useTimerClock(t),{top:i,bottom:s}=(0,l.useMemo)(()=>partitionTimers(t),[t]);return React.createElement(fC,{className:"timers-panel",sx:{color:"text.primary",fontFamily:e.typography.fontFamily,fontSize:e.typography.fontSize,height:"100%",overflow:"hidden",position:"relative",width:"100%"}},n?React.createElement(fC,{"aria-hidden":"true",className:"timers-panel__background",sx:{backgroundImage:`url(${n})`,backgroundPosition:"center",backgroundSize:"cover",filter:a,inset:0,opacity:o,position:"absolute",transform:getFlipTransform(g),zIndex:0}}):null,React.createElement(fC,{className:"timers-panel__content","data-testid":"timers-panel",sx:{display:"flex",flexDirection:"column",height:"100%",justifyContent:"space-between",overflowY:"auto",p:1,position:"relative",width:"100%",zIndex:1}},React.createElement(fC,{className:"timers-panel__stack timers-panel__stack--top","data-testid":"timers-panel-top",sx:{display:"flex",flexDirection:"column"}},i.map(e=>React.createElement(Xd,{key:e.id,countDown:e.countDown,direction:e.direction,durationMs:e.durationMs,elapsedMs:e.elapsedMs,id:e.id,label:e.label,now:C,running:e.running,startedAt:e.startedAt,tickIntervalMs:I}))),React.createElement(fC,{className:"timers-panel__stack timers-panel__stack--bottom","data-testid":"timers-panel-bottom",sx:{display:"flex",flexDirection:"column"}},s.map(e=>React.createElement(Xd,{key:e.id,countDown:e.countDown,direction:e.direction,durationMs:e.durationMs,elapsedMs:e.elapsedMs,id:e.id,label:e.label,now:C,running:e.running,startedAt:e.startedAt,tickIntervalMs:I})))))};TimersPanelInner.displayName="TimersPanelInner";var TimersPanel=()=>React.createElement(TC,{panelName:"Timers"},React.createElement(TimersPanelInner,null));TimersPanel.displayName="TimersPanel";var qd=Object.freeze(["nexTimers","nexParty","nexPlayers","nexNpcs","nexItems","nexStats","nexSystem","nexCombat","nexDefences","nexFeed","nexTarget","nexOptions","nexMetrics"]),getTabComponents=()=>({nexTimers:TimersPanel,nexParty:PartyPanel,nexPlayers:PlayersPanel,nexNpcs:NpcsPanel,nexItems:ItemsPanel,nexStats:StatsPanel,nexSystem:SystemStream,nexCombat:CombatStream,nexDefences:DefencesPanel,nexFeed:GameFeed,nexTarget:TargetPanel,nexOptions:OptionsPanel,nexMetrics:MetricsPanel}),getLayout$1=()=>nexusclient.ui().layout(),getStoredLayout=e=>nexusclient._ui?._layout??e,createTabNode=e=>({type:"tab",id:e,name:e,component:e,icon:"feather-pointed",helpText:e}),resolveContextValue=e=>{const t=e??globalThis.nexGui?.__contextValue;if(!t)throw new Error("[nexGui4] initializeTabs requires a NexGuiContext value from the active runtime.");return t},selectThemeTokens=e=>e.tokens,NexusTabRoot=({Component:e,contextValue:t})=>{const g=t.stores.theme(selectThemeTokens),n=l.useMemo(()=>createMuiTheme(g),[g]);return l.createElement(Mo.Provider,{value:t},l.createElement(StyledEngineProvider,{injectFirst:!0},l.createElement(ThemeProvider,{theme:n},l.createElement(fC,{className:"nexgui4-panel-root",sx:{display:"flex",flex:1,height:"100%",minHeight:0,minWidth:0,width:"100%"}},l.createElement(e)))))},registerTabFactory=(e,t,g,n)=>{e.nexoverrides[t]=e=>l.createElement(NexusTabRoot,{Component:g,contextValue:n})},generateTabs=({skipIds:e=[]}={})=>{const t=getLayout$1().flexModel,g=t.getNodeById("map");if(!g)return console.warn("[nexGui4] generateTabs(): map node not found in layout model."),[...qd];const n=g.getParent?.()?.getId?.()||"root";return qd.forEach(g=>{e.includes(g)||t.getNodeById(g)||t.doAction({type:"FlexLayout_AddNode",data:{json:createTabNode(g),toNode:n,location:"center"}})}),[...qd]},mountNativeDisplay=({contextValue:e}={})=>{const t=resolveContextValue(e),g=getLayout$1();void 0===g.nexoverrides&&(g.nexoverrides={}),g.nexoverrides.output_main=e=>l.createElement(NexusTabRoot,{Component:MainDisplay,contextValue:t});try{nexusclient.buffer().limit=100}catch{}},unmountNativeDisplay=()=>{const e=getLayout$1();delete e?.nexoverrides?.output_main;try{nexusclient.buffer().limit=0}catch{}},initializeTabs=({contextValue:e}={})=>{const t=resolveContextValue(e),g=getLayout$1(),n=getStoredLayout(g),o=g.flexModel;return void 0===g.get_tab_object_original&&(g.get_tab_object_original=g.get_tab_object),void 0===n.get_tab_object_original&&(n.get_tab_object_original=g.get_tab_object_original),void 0===g.nexoverrides&&(g.nexoverrides={}),Object.entries(getTabComponents()).forEach(([e,n])=>{registerTabFactory(g,e,n,t)}),g.get_tab_object=function(e,t){return this.nexoverrides[e]?this.nexoverrides[e](t):nexusclient._ui._layout.get_tab_object_original(e,t)},o.doAction({data:{tabNode:"map"},type:"FlexLayout_SelectTab"}),g.nexoverrides},ep="nexGuiLayout",getLayout=()=>nexusclient.ui().layout(),setModelPreservingGlobal=({layout:e,borders:t})=>{const g=getLayout(),n=g.flexModel.toJson();g.set_model({global:n.global,borders:t,layout:e})},applyLayoutPreset=e=>{const t=getLayoutPreset(e);return!!t&&(setModelPreservingGlobal(t),!0)},saveCurrentLayout=()=>{const e=getLayout().model();return nexusclient.variables().vars[ep]={layout:JSON.stringify(e.layout),borders:JSON.stringify(e.borders)},!0},readSavedLayout=()=>{const e=nexusclient.variables?.()?.vars?.[ep];if(!e?.layout||!e?.borders)return null;try{return{layout:JSON.parse(e.layout),borders:JSON.parse(e.borders)}}catch{return null}},hasSavedLayout=()=>null!==readSavedLayout(),restoreSavedLayout=()=>{const e=readSavedLayout();return!!e&&(setModelPreservingGlobal(e),!0)},getRawText=e=>e?"function"==typeof e.parsed_line?.text?e.parsed_line.text():"string"==typeof e.line?e.line:"":"",getFormattedHtml=e=>e?"function"==typeof e.parsed_line?.formatted?e.parsed_line.formatted():getRawText(e):"",patchFormatted=(e,t)=>{e?.parsed_line&&"object"==typeof e.parsed_line&&(e.parsed_line.formatted=()=>t)},createIconRenderer=()=>{const e=createMessageReplacementContext();return t=>buildIconHtml(t.id,t.colors,t.size,e.icons.dualTone)},lineContains=(e,t)=>!!getRawText(e).includes(t)||!("string"!=typeof e?.line||!e.line.includes(t)),findBlockIndex=(e,t)=>e.findIndex(e=>lineContains(e,t)),applyRoomReplacements=e=>{if(!Array.isArray(e)||0===e.length)return;const t=findBlockIndex(e,"<RName");if(t<0)return;const g=e[t],n=e[t+1];if(!n)return;const o=getFormattedHtml(n),a=replaceRoomText(o,{iconRenderer:createIconRenderer()});if(a!==o&&patchFormatted(n,a),(getRawText(g)||getFormattedHtml(g)).includes("Flying above"))return;const C=globalThis.nexMap;if(!C?.status?.loaded)return;const I=findBlockIndex(e,"<RExits");if(I<0)return;const i=globalThis.GMCP?.Room?.Info?.num;if(!i)return;const s="function"==typeof C.warpTarget?C.warpTarget(i):null;if(!s)return;const l=createWormholeExitDescriptor({warp:s,currentArea:C.status?.currentArea});if(!l)return;const c=e[I];let u=getFormattedHtml(c);u=u.replace(" and",""),u=u.replace(".",renderWormholeExitHtml(l)),patchFormatted(c,u)},registerEvents=e=>{const t=[];return((e,g,n={})=>{const o=`nexGui4-${e.replace(/\W+/g,"-")}`;eventStream.registerEvent(e,g,{...n,id:o,tags:["nexGui4"]}),t.push({eventName:e,id:o})})("Room.Info",e=>{nexAction.triggers.enable("nexGui4.roomReplacements")}),()=>{t.forEach(({eventName:e,id:t})=>{eventStream.removeListener?.(e,t)})}},safeCall$2=(e,t,...g)=>"function"==typeof e?e.call(t,...g):void 0,getHostLineText=e=>e&&"object"==typeof e?e.parsed_line?safeCall$2(e.parsed_line.text,e.parsed_line)??"":"string"==typeof e.line?e.line:e.html_line&&"string"==typeof e.html_text?stripHtml(e.html_text):"":"",isLikelyPartyName=e=>/^[A-Za-z][A-Za-z'-]*$/.test(e),normalizePartyMembersLine=e=>e.replace(/\.$/,"").split(", ").map(e=>e.trim()).filter(Boolean),extractRealmPartyMembers=(e,t)=>e.map(e=>t?.resolvePlayerNameFromFullname?.(e)).filter(isLikelyPartyName),resolvePlayerRelationships=e=>e?.playerRelationships??getDefaultPlayerRelationshipsModel(),registerTriggers=e=>{const t=resolvePlayerRelationships(e);return nexAction.triggers.add({id:"nexGui4.party.chatGag",regex:/^\(Party\): \w+ says, ".+"$/,tags:["nexGui4"],action:()=>{(e?.stores?.party?.getState?.()??null)?.settings?.gagChat&&(nexusclient.current_line.gag=!0)}}),nexAction.triggers.add({id:"nexGui4.party.memberJoined",regex:/^\(Party\): (\w+) has joined your party\.$/,tags:["nexGui4"],action:t=>{(e?.stores?.party?.getState?.()??null)?.addMember?.(t[1])}}),nexAction.triggers.add({id:"nexGui4.party.memberLeft",regex:/^\(Party\): (\w+) has left your party\.$/,tags:["nexGui4"],action:t=>{(e?.stores?.party?.getState?.()??null)?.removeMember?.(t[1])}}),nexAction.triggers.add({id:"nexGui4.party.listHeader",regex:"Your party has the following members:",tags:["nexGui4"],action:()=>{const t=e?.stores?.party?.getState?.()??null,g=nexusclient.current_block??[],n=g.indexOf(nexusclient.current_line);if(n<0)return;const o=g[n+2],a=getHostLineText(o);t?.updateParty?.(normalizePartyMembersLine(a))}}),nexAction.triggers.add({id:"nexGui4.party.realmsHeader",regex:"The following members of your party are in the realms:",tags:["nexGui4"],action:()=>{const t=e?.stores?.party?.getState?.()??null,g=nexusclient.current_block??[],n=g.indexOf(nexusclient.current_line);if(n<0)return;const o=g.slice(n+1).map(getHostLineText);t?.updateParty?.(extractRealmPartyMembers(o,e?.playerDirectory))}}),nexAction.triggers.add({id:"nexGui4.party.noParty",regex:"You are not the member of any party",tags:["nexGui4"],action:()=>{(e?.stores?.party?.getState?.()??null)?.updateParty?.([])}}),nexAction.triggers.add({id:"nexGui4.party.leftParty",regex:"You have left your party",tags:["nexGui4"],action:()=>{(e?.stores?.party?.getState?.()??null)?.updateParty?.([])}}),nexAction.triggers.add({id:"nexGui4.party.joinedParty",regex:/^You have joined \w+'s party\.$/,tags:["nexGui4"],action:()=>{e?.adapter?.send?.("party members")}}),nexAction.triggers.add({id:"nexGui4.rel.cityEnemiesHeader",regex:/^Enemies of .+ of \w+:$/,tags:["nexGui4"],action:()=>{const e=nexusclient.current_block??[],g=e.indexOf(nexusclient.current_line);if(g<0)return;const n=e[g+1],o=getHostLineText(n).replaceAll(" ","").split(",").map(e=>e.trim()).filter(isLikelyPartyName);t.replaceCityEnemyPlayers(o)}}),nexAction.triggers.add({id:"nexGui4.rel.enemiesHeader",regex:"You have the following enemies:",tags:["nexGui4"],action:()=>{const e=nexusclient.current_block??[],g=e.indexOf(nexusclient.current_line);if(g<0)return;const n=e.slice(g).map(getHostLineText),o=[];for(let t=1;t<n.length-1;t+=1){const e=n[t];e&&!e.includes(" ")&&o.push(e)}t.replaceEnemyPlayers(o.filter(isLikelyPartyName))}}),nexAction.triggers.add({id:"nexGui4.rel.noEnemies",regex:"You have no enemies.",tags:["nexGui4"],action:()=>{t.replaceEnemyPlayers([])}}),nexAction.triggers.add({id:"nexGui4.rel.noEnemiesForgive",regex:"In a moment of forgiveness, you declare that you have no enemies.",tags:["nexGui4"],action:()=>{t.replaceEnemyPlayers([])}}),nexAction.triggers.add({id:"nexGui4.rel.enemyRemoved",regex:/^You declare that (\w+) will no longer be one of your enemies\.$/,tags:["nexGui4"],action:e=>{t.forgetEnemyPlayer(e[1])}}),nexAction.triggers.add({id:"nexGui4.rel.enemyAdded",regex:/^(\w+) is now one of your enemies\.$/,tags:["nexGui4"],action:e=>{t.rememberEnemyPlayer(e[1])}}),nexAction.triggers.add({id:"nexGui4.rel.alliesHeader",regex:"You have the following allies:",tags:["nexGui4"],action:()=>{const e=nexusclient.current_block??[],g=e.indexOf(nexusclient.current_line);if(g<0)return;const n=e.slice(g).map(getHostLineText),o=[];for(let t=1;t<n.length-1;t+=1){const e=n[t];if(!e)continue;if(e.includes("You have"))break;let g;g=e.includes("lust")?e.split(" ")[7]?.trim():e.split(" ")[0]?.trim(),isLikelyPartyName(g)&&o.push(g)}t.replaceAllyPlayers(o)}}),nexAction.triggers.add({id:"nexGui4.rel.allyRemoved",regex:/^You declare that (\w+) will no longer be one of your allies\.$/,tags:["nexGui4"],action:e=>{t.forgetAllyPlayer(e[1])}}),nexAction.triggers.add({id:"nexGui4.rel.allyAdded",regex:/^(\w+) is now one of your allies\.$/,tags:["nexGui4"],action:e=>{t.rememberAllyPlayer(e[1])}}),nexAction.triggers.add({id:"nexGui4.roomReplacements",regex:/^/,tags:["nexGui4"],action:()=>{applyRoomReplacements(nexusclient.current_block??[]),nexAction.triggers.disable("nexGui4.roomReplacements")},enabled:!1}),()=>{nexAction.triggers.remove(["nexGui4"])}},tp="scrollback",gp="__nexGuiInlineHighlightingContext",np="__nexGuiInitialHostBufferSynced",rp=null,op=null,getRuntime=()=>globalThis.nexGui??null,getContextValue=e=>e??getRuntime()?.__contextValue??null,getUiStoreState=e=>e?.stores?.ui?.getState?.()??null,getStreamModel=e=>e?.streamModel??e?.stores?.stream??null,getScrollbackSession=e=>e?.scrollbackSession??null,getUiSettings=e=>e?.persistenceStore?.getAll?.()?.ui??{},formatTimestamp=(e=!1,t=Date.now())=>{const g=new Date(t),n=String(g.getHours()).padStart(2,"0"),o=String(g.getMinutes()).padStart(2,"0"),a=String(g.getSeconds()).padStart(2,"0");return e?`${n}:${o}:${a}.${String(g.getMilliseconds()).padStart(3,"0")}`:`${n}:${o}:${a}`},safeCall$1=(e,t,...g)=>"function"==typeof e?e.call(t,...g):void 0,readRuntimeInlineHighlightingContext=e=>e?.[gp]??e?.__contextValue??null,writeRuntimeInlineHighlightingContext=(e,t)=>{if(!e||"object"!=typeof e)return;const g=readRuntimeInlineHighlightingContext(e);Object.is(g,t)||(g&&g!==t&&clearRelationshipNameFormatterCache(g),Object.prototype.hasOwnProperty.call(e,gp)?e[gp]=t:Object.defineProperty(e,gp,{value:t,writable:!0,enumerable:!1,configurable:!0}))},ensureRuntimeColors=e=>{const t=getRuntime();if(!t)return{inLineHighlighting:t=>applyContextInlineNameHighlighting(t,{contextValue:e})};if(writeRuntimeInlineHighlightingContext(t,e),t.colors&&"function"==typeof t.colors.inLineHighlighting)return t.colors;const g=Object.freeze({inLineHighlighting:e=>applyContextInlineNameHighlighting(e,{contextValue:readRuntimeInlineHighlightingContext(t)})});return Object.defineProperty(t,"colors",{value:g,enumerable:!1,configurable:!0}),g},toArray=e=>Array.isArray(e)?e:[],createExtraBreakLine=()=>({html:"<span> </span>",timestamp:Date.now(),isPrompt:!1,isMonospace:!1,shouldLog:!1,buffer:"main"}),getCurrentPromptHtml=e=>{const t=getStreamModel(e)?.getSnapshot?.()?.promptLine;return"string"==typeof t?.html?t.html:null},convertHostLine=(e,t="main",g=null)=>{if(!e||"object"!=typeof e)return null;if(e.html_line&&"string"==typeof e.html_text&&e.html_text.length>0)return e.gag?null:{html:e.html_text,timestamp:e.timestamp_ms,isPrompt:!1,isMonospace:!1,shouldLog:Boolean(e.log),buffer:t};if(!e.parsed_line)return null;const n=safeCall$1(e.parsed_line.text,e.parsed_line)??"";return!n.length||e.gag?null:(g?.inLineHighlighting(e.parsed_line),{html:safeCall$1(e.parsed_line.formatted,e.parsed_line)??n,timestamp:e.timestamp_ms,isPrompt:Boolean(e.is_prompt),isMonospace:Boolean(e.monospace),shouldLog:Boolean(e.log),buffer:t})},convertHostLines=(e,t,g=null,n=null)=>{const o=toArray(e);if(0===o.length)return[];const a=o.map(e=>convertHostLine(e,"main",g)).filter(Boolean);if(0===a.length)return[];if(!a.some(e=>!e.isPrompt)){const e=a[a.length-1];return e&&e.html!==n?a:[]}return t?[createExtraBreakLine(),...a]:a},appendConvertedLines=(e,t)=>{Array.isArray(t)&&0!==t.length&&getStreamModel(e)?.addLines?.(t)},hasInitialHostBufferSync=e=>Boolean(e?.[np]),markInitialHostBufferSynced=e=>{e&&"object"==typeof e&&(Object.prototype.hasOwnProperty.call(e,np)?e[np]=!0:Object.defineProperty(e,np,{value:!0,writable:!0,enumerable:!1,configurable:!0}))},syncInitialHostBuffer=(e,t,g=null)=>{if(hasInitialHostBufferSync(e))return;markInitialHostBufferSynced(e);const n=toArray(t?.lines);0!==n.length&&appendConvertedLines(e,convertHostLines(n,Boolean(nexusclient.settings?.().extra_break),g,getCurrentPromptHtml(e)))},getNextStreamSessionId=e=>{const t=getStreamModel(e),g=t?.getStats?.(),n=Number(g?.nextId??g?.sessionTotalLines);if(Number.isFinite(n))return Math.max(0,Math.floor(n));const o=(t?.getSnapshot?.()?.buffer??[]).at(-1)?.id;return Number.isFinite(o)?Math.max(0,Math.floor(o+1)):0},downloadScrollbackSessionSlice=async(e,t)=>{if("undefined"==typeof document||"undefined"==typeof Blob||"undefined"==typeof URL||"function"!=typeof URL.createObjectURL)return;const g=getScrollbackSession(e);if(!g?.readRange)return;const n=getUiSettings(e),o=Boolean(n.virtualizedLogs);let a=[];try{a=await g.readRange(Math.max(0,Math.floor(Number(t)||0)),Number.MAX_SAFE_INTEGER)}catch(C){return void console.error("[nexGui4] Failed reading scrollback log export",C)}0!==a.length&&downloadBuffer(a,o)},undoFooterLayout=()=>{if("undefined"==typeof document)return;const e=document.getElementById("status_vars");e&&["status-target","status-bank","status-gold","status-level","status-ping"].forEach(t=>{const g=document.getElementById(t);g&&e.prepend(g)})},isScrollbackRendererEnabled=()=>!1!==globalThis.nexusclient?.variables?.()?.vars?.nexGuiSettings?.options?.nexGuiRenderer,isScrollbackOpen=e=>getUiStoreState(e)?.modalOpen===tp,openScrollback=e=>getUiStoreState(e)?.openModal?.(tp),closeScrollback=e=>getUiStoreState(e)?.closeModal?.(),saveOriginalMethod=(e,t,g,{nullish:n=!1}={})=>{const o=`${g}_original`,a=Object.prototype.hasOwnProperty.call(t,o);return n?t[o]??=t[g]:void 0===t[o]&&(t[o]=t[g]),e.push(()=>{void 0!==t[o]&&(t[g]=t[o]),a||delete t[o]}),t[o]},removePatches=()=>{rp?.(),rp=null,op=null},applyPatches=({contextValue:e}={})=>{const t=op;if(removePatches(),"undefined"==typeof nexusclient)throw new Error("[nexGui4] applyPatches requires the live nexusclient host.");const g=getContextValue(e);if(!g)throw new Error("[nexGui4] applyPatches requires a live NexGui context value.");t&&t!==g&&clearRelationshipNameFormatterCache(t),op=g;const n=ensureRuntimeColors(g),o=[],a={logStartSessionId:null},C=nexusclient.ui().layout(),I=nexusclient._ui?._layout??C,i=nexusclient.datahandler(),s=nexusclient.platform(),l=nexusclient.serverapi(),c=nexusclient.log(),u=nexusclient.buffer();syncInitialHostBuffer(g,u,n);const d=Object.prototype.hasOwnProperty.call(i,"handle_GMCP_original"),p=Object.prototype.hasOwnProperty.call(C,"get_tab_object_original"),m=Object.prototype.hasOwnProperty.call(I,"get_tab_object_original"),h=Object.prototype.hasOwnProperty.call(C,"nexoverrides"),y=new Map(qd.filter(e=>Object.prototype.hasOwnProperty.call(C.nexoverrides??{},e)).map(e=>[e,C.nexoverrides[e]]));initializeTabs({contextValue:g}),o.push(()=>{const e=getRuntime();e&&"object"==typeof e&&delete e[gp],void 0!==C.get_tab_object_original&&(C.get_tab_object=C.get_tab_object_original),qd.forEach(e=>{C.nexoverrides&&(y.has(e)?C.nexoverrides[e]=y.get(e):delete C.nexoverrides[e])}),!h&&C.nexoverrides&&0===Object.keys(C.nexoverrides).length&&delete C.nexoverrides,p||delete C.get_tab_object_original,m||delete I.get_tab_object_original});const b=saveOriginalMethod(o,nexusclient,"process_lines");nexusclient.process_lines=function(e){const t=safeCall$1(b,this,e);return this.gagged||appendConvertedLines(g,convertHostLines(e,Boolean(nexusclient.settings?.().extra_break),n,getCurrentPromptHtml(g))),t};const v=saveOriginalMethod(o,nexusclient,"_add_line");nexusclient._add_line=function(e,t){const n=!this.current_block,o=safeCall$1(v,this,e,t);if(!n)return o;appendConvertedLines(g,[convertHostLine(e,t??"main")].filter(Boolean))},"undefined"==typeof nexSys&&(saveOriginalMethod(o,u,"add_block"),u.add_block=function(e){let t=0,g=0;for(let o=0;o<e.length;++o){const n=e[o];n.log&&g++,n.gag||!n.parsed_line&&!n.html_line||(!n.is_prompt||t?(!n.parsed_line||safeCall$1(n.parsed_line.text,n.parsed_line)||0!==t&&o!==e.length-1)&&(safeCall$1(this._fill_tab_completion,this,n),t++,this.lineid++,n.id=this.lineid,this.lines.push(n),this.unread=!0):n.gag=!0)}const n=safeCall$1(this.prune_lines,this);(t||g||n)&&safeCall$1(this.on_lines_changed,this)});const x=saveOriginalMethod(o,c,"enable");c.enable=function(){const e=safeCall$1(x,this),t=getNextStreamSessionId(g);return a.logStartSessionId=Math.max(0,t-100),e};const S=saveOriginalMethod(o,c,"disable");c.disable=function(){const e=safeCall$1(S,this),t=getUiSettings(g);if(null!=a.logStartSessionId||t.logoutDownload){const e=a.logStartSessionId??0;a.logStartSessionId=null,downloadScrollbackSessionSlice(g,e)}return e};const w=saveOriginalMethod(o,l,"on_disconnect");l.on_disconnect=function(){this.__anonymous=!1,this.__game=null,this.__name=null,undoFooterLayout();const e=getUiSettings(g);if(null!=a.logStartSessionId||e.logoutDownload){const e=a.logStartSessionId??0;a.logStartSessionId=null,downloadScrollbackSessionSlice(g,e)}return safeCall$1(w,this)},saveOriginalMethod(o,s,"on_key_down",{nullish:!0}),s.on_key_down=function(e,t,n,o){return n&&o&&76===e||33===e&&isScrollbackRendererEnabled()&&!isScrollbackOpen(g)?(openScrollback(g),!0):(27===e&&closeScrollback(g),safeCall$1(this.on_key_down_original,this,e,t,n,o))},void 0===i.handle_GMCP_original&&(i.handle_GMCP_original=i.handle_GMCP),o.push(()=>{void 0!==i.handle_GMCP_original&&(i.handle_GMCP=i.handle_GMCP_original,d||delete i.handle_GMCP_original)}),i.handle_GMCP=function(e,t){if("Comm.Channel.Text"===e){const e="string"==typeof t?(()=>{try{return JSON.parse(t)}catch{return null}})():t;if("says"===e?.channel&&"string"==typeof e.talker&&e.talker.indexOf(" ")>-1&&-1===e.talker.indexOf("Discord"))return;if(e?.talker===globalThis.GMCP?.Char?.Status?.name&&"string"==typeof e.text&&e.text.includes("Duanathar."))return}return safeCall$1(this.handle_GMCP_original,this,e,t)};const E=saveOriginalMethod(o,C,"write_channel");C.write_channel=function(e,t){if(!t||"function"!=typeof this.channel_id_from_cmd||"function"!=typeof this.channel_record)return safeCall$1(E,this,e,t);ensureRuntimeColors(g).inLineHighlighting(t);const n=Date.now(),o=[{parsed_line:t,timestamp_ms:formatTimestamp(!0,n),timestamp:formatTimestamp(!1,n)}],a=this.channel_id_from_cmd(e),C=this.channel_record(a);if(C)try{C.buffer.add_block(o)}catch{}try{this._nexus.comm_buffer().add_block(o)}catch{}};const R=registerTriggers(g),T=registerEvents(g);return o.push(R),o.push(T),rp=()=>{for(;o.length>0;)o.pop()?.();op=null,rp=null},removePatches},installGlobalNexGui=e=>(globalThis.nexGui?.destroy?.(),globalThis.nexGui=e,e),ap="nexgui4-styles",Ap=new Map,getStyleElement=()=>{if("undefined"==typeof document||"function"!=typeof document.getElementById||!document.head)return null;const e=document.getElementById(ap);if(e)return e;const t=document.createElement("style");return t.id=ap,document.head.appendChild(t),t},registerNexguiStyles=(e,t)=>{if(!e||"string"!=typeof t)return;const g=getStyleElement();g&&(Ap.set(e,t.trim()),g.textContent=Array.from(Ap.values()).filter(Boolean).join("\n\n"))},Cp="replacement-base",Ip=ho.replacement,toDamageSlug=e=>e.toLowerCase().replace(/\s+/g,"-"),buildCatalogRules=()=>[".ng-skill-default { color: orange; }",Object.entries(ur).map(([e,t])=>`.ng-skill-${e} { color: ${t}; }`).join("\n"),".ng-action-default { color: grey; }",Object.entries(dr).map(([e,t])=>`.ng-action-${e} { color: ${t.fg}; }`).join("\n"),".ng-dmg-unknown { color: grey; }",Object.entries(lr).map(([e,t])=>`.ng-dmg-${toDamageSlug(e)} { color: ${t}; }`).join("\n"),".ng-muted { color: grey; }",".ng-npc-bracket { color: red; font-weight: bold; }",".ng-crit-separator { color: white; }",".ng-dmg-bracket { color: #808080; }",".ng-hp-loss { color: tomato; }",".ng-info-text { color: cadetblue; font-style: italic; }"].filter(Boolean).join("\n"),ip=`\n/* nexGui4 replacement visual primitives — injected by replacementStyles.js */\n.ng-brkt { font-weight: bold; }\n.ng-brkt-ally { color: ${Ip.bracketAllyColor}; }\n.ng-brkt-enemy { color: ${Ip.bracketEnemyColor}; }\n.ng-italic { font-style: italic; }\n.ng-target-format {\n box-decoration-break: clone;\n -webkit-box-decoration-break: clone;\n box-shadow: inset 0 0 0 1px ${Ip.targetBorderColor};\n padding: 0 2px;\n position: relative;\n z-index: 1;\n}\n.ng-icon-fill-1 { fill: var(--ng-fill-1); }\n.ng-icon-fill-2 { fill: var(--ng-fill-2); }\n\n/* Legacy message replacement row classes retained for compatibility. */\n.ng-seg { display: table-cell; color: #aaa; }\n.ng-msgline { display: inline-table; width: calc(100% - 15ch); }\n.ng-w-0 { width: 0; }\n.ng-w-5 { width: 5%; }\n.ng-w-30 { width: 30%; }\n.ng-w-35 { width: 35%; }\n\n/* Flex layout for structured skill replacement rows */\n.nexgui4-replacement-row {\n display: inline-flex;\n width: 100%; /* calc(100% - 15ch); account for timestamp */\n min-width: 0;\n overflow: hidden;\n vertical-align: top;\n}\n.nexgui4-replacement-row__buffer {\n flex: 0 0 5%;\n}\n.nexgui4-replacement-row__actor {\n flex: 0 0 30%;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.nexgui4-replacement-row__action {\n flex: 0 0 35%;\n}\n.nexgui4-replacement-row__target {\n flex: 1;\n min-width: 0;\n}\n\n/* Panel-specific stream overrides */\n.nexgui4-combat-stream .nexgui4-replacement-row__buffer {\n display: none;\n}\n\n${buildCatalogRules()}\n`.trim(),injectReplacementBaseStyles=()=>{registerNexguiStyles(Cp,ip)},sp="transcript-viewport",lp="\n/* nexGui4 transcript viewport primitives. */\n.nexgui4-transcript-scroll-viewport {\n flex: 1;\n min-height: 0;\n overflow-anchor: none;\n overflow-y: auto;\n position: relative;\n margin: 5px;\n}\n\n.nexgui4-transcript-scroll-viewport--display {\n -ms-overflow-style: none;\n scrollbar-width: none;\n}\n\n.nexgui4-transcript-scroll-viewport--display::-webkit-scrollbar {\n display: none;\n}\n\n.nexgui4-transcript-spacer {\n width: 100%;\n}\n\n.nexgui4-transcript-spacer--display {\n box-sizing: border-box;\n}\n\n.nexgui4-transcript-spacer--panel {\n position: relative;\n}\n\n.nexgui4-transcript-row {\n width: 100%;\n}\n\n.nexgui4-transcript-row--panel {\n left: 0;\n position: absolute;\n top: 0;\n}\n\n.nexgui4-virtual-scroll-line {\n align-items: baseline;\n contain: layout style paint;\n display: flex;\n font-family: inherit;\n min-width: 0;\n}\n\n.nexgui4-virtual-scroll-line.nexguilog {\n display: flex !important;\n}\n\n.nexgui4-main-display-timestamp.timestamp,\n.nexgui4-scrollback-timestamp.timestamp,\n.nexgui4-structured-stream-panel__timestamp.timestamp {\n display: inline !important;\n}\n\n.nexgui4-virtual-scroll-line__payload {\n flex: 1;\n min-width: 0;\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n}\n\n.nexgui4-prompt-line {\n position: static;\n width: 100%;\n}\n".trim(),injectTranscriptStyles=()=>{registerNexguiStyles(sp,lp)},cp={"shield-halved":[512,512,["shield-alt"],"f3ed",["M256 0c.2 0 .5 0 .7 0c4.6 0 9.2 1 13.4 2.9L458.4 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-8.3 4-17.4 6-26.4 6V0H256z","M256.7 0c-.2 0-.5 0-.7 0c-4.6 0-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c8.3 4 17.4 6 26.4 6V0h.7z"]],"shield-cross":[512,512,[9960],"f712",["M224 10.8L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c0 6.4 .2 13 .6 20H192c17.7 0 32-14.3 32-32V10.8zM24.7 224C43.7 319.9 97.4 437.2 224 500.4V256c0-17.7-14.3-32-32-32H24.7zM288 500.4C414.6 437.2 468.3 319.9 487.3 224H320c-17.7 0-32 14.3-32 32V500.4zM495.4 160c.4-7 .6-13.7 .6-20c.1-26.2-16.3-47.9-38.3-57.2L288 10.8V128c0 17.7 14.3 32 32 32H495.4z","M288 10.8L269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L224 10.8V128c0 17.7-14.3 32-32 32H16.6c1.1 19.4 3.6 41.1 8.1 64H192c17.7 0 32 14.3 32 32V500.4c1.9 .9 3.7 1.8 5.6 2.7c16.7 8 36.1 8 52.8 0c1.9-.9 3.8-1.8 5.6-2.7V256c0-17.7 14.3-32 32-32H487.3c4.5-22.9 7.1-44.6 8.1-64H320c-17.7 0-32-14.3-32-32V10.8z"]],tree:[448,512,[127794],"f1bb",["M210.6 5.9L62 169.4c-3.9 4.2-6 9.8-6 15.5C56 197.7 66.3 208 79.1 208H104L30.6 281.4c-4.2 4.2-6.6 10-6.6 16C24 309.9 34.1 320 46.6 320H80L5.4 409.5C1.9 413.7 0 419 0 424.5c0 13 10.5 23.5 23.5 23.5H192V224c0-17.7 14.3-32 32-32s32 14.3 32 32V448H424.5c13 0 23.5-10.5 23.5-23.5c0-5.5-1.9-10.8-5.4-15L368 320h33.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L344 208h24.9c12.7 0 23.1-10.3 23.1-23.1c0-5.7-2.1-11.3-6-15.5L237.4 5.9C234 2.1 229.1 0 224 0s-10 2.1-13.4 5.9z","M224 192c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32z"]],droplet:[384,512,[128167,"tint"],"f043",["M192 512C86 512 0 426 0 320C0 228.8 130.2 57.7 166.6 11.7C172.6 4.2 181.5 0 191.1 0h1.8c9.6 0 18.5 4.2 24.5 11.7C253.8 57.7 384 228.8 384 320c0 106-86 192-192 192zM96 336c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 61.9 50.1 112 112 112c8.8 0 16-7.2 16-16s-7.2-16-16-16c-44.2 0-80-35.8-80-80z","M80 320c8.8 0 16 7.2 16 16c0 44.2 35.8 80 80 80c8.8 0 16 7.2 16 16s-7.2 16-16 16c-61.9 0-112-50.1-112-112c0-8.8 7.2-16 16-16z"]],tombstone:[448,512,[],"f720",["M224 0C118 0 32 86 32 192V448H416V192C416 86 330 0 224 0zm24 152v40h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H248V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V240H152c-13.3 0-24-10.7-24-24s10.7-24 24-24h48V152c0-13.3 10.7-24 24-24s24 10.7 24 24z","M248 152c0-13.3-10.7-24-24-24s-24 10.7-24 24v40H152c-13.3 0-24 10.7-24 24s10.7 24 24 24h48V360c0 13.3 10.7 24 24 24s24-10.7 24-24V240h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H248V152zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z"]],feather:[512,512,[129718],"f52d",["M97.9 448h84c49.7 0 97.9-14.4 139-41c11.1-7.2 5.5-23-7.8-23c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l81-24.3c2.5-.8 4.8-2.1 6.7-4l22.4-22.4c10.1-10.1 2.9-27.3-11.3-27.3l-32.2 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l112-33.6c4-1.2 7.4-3.9 9.3-7.7C506.4 207.6 512 184.1 512 160c0-41-16.3-80.3-45.3-109.3l-5.5-5.5C432.3 16.3 393 0 352 0s-80.3 16.3-109.3 45.3L139 149C91 197 64 262.1 64 330v84L311 167c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L97.9 448z","M24 512c-6.2 0-12.3-2.3-17-7c-9.4-9.4-9.4-24.6 0-33.9L311 167c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L41 505c-4.7 4.7-10.8 7-17 7z"]],"fish-fins":[576,512,[],"e4f2",["M182 150.4C221.3 120.9 273.7 96 336 96s114.7 24.9 154 54.4c39.2 29.4 67.2 64.7 81.6 89.5c5.8 9.9 5.8 22.2 0 32.1c-14.4 24.8-42.5 60.1-81.6 89.5C450.7 391.1 398.3 416 336 416s-114.7-24.9-154-54.4c-15.3-11.5-29-23.9-40.7-36.3L48.1 379.6c-12.5 7.3-28.4 5.3-38.7-4.9S-3 348.7 4.2 336.1L50 256 4.2 175.9c-7.2-12.6-5-28.4 5.3-38.6s26.1-12.2 38.7-4.9l93.1 54.3c11.8-12.3 25.4-24.8 40.7-36.3zM448 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z","M238.9 36.9C227.7 44 222 57.3 224.6 70.3l9.7 48.6C264.1 105.1 298.2 96 336 96c5.7 0 11.3 .2 16.8 .6L275.2 38.4c-10.6-8-25-8.5-36.3-1.5zm-4.6 356.2l-9.7 48.6c-2.6 13 3.1 26.3 14.3 33.3s25.6 6.5 36.3-1.5l77.6-58.2c-5.5 .4-11.1 .6-16.8 .6c-37.8 0-71.9-9.1-101.7-22.9z"]]},dp="host-surface",pp="character_module_class",mp="100%",fp="15%",hp="\nhtml { -webkit-font-smoothing: subpixel-antialiased; }\n.flexlayout__splitter { background-color: grey; }\n.flexlayout__tab { background-color: #000 !important; }\n.output { padding: 5px; }\n.nexguilog { display: none; }\n\n.ng-timestamp { margin-right: 1ch; }\n\n.ng-virtual-list {\n background: black;\n width: 100%;\n overflow-y: auto;\n contain: strict;\n padding-bottom: 0;\n}\n\n.ng-virtual-list--border { border-bottom: 1px solid #ccc; }\n\n.ng-virtual-anchor {\n overflow-anchor: none;\n width: 100%;\n color: white;\n white-space: pre-wrap;\n word-wrap: break-word;\n}\n\n.ng-ListItem { contain: layout inline-size; }\n\n.nexgui4-tab-container {\n isolation: isolate;\n overflow: hidden;\n position: relative;\n}\n\n.nexgui4-tab-container__background {\n inset: 0;\n pointer-events: none;\n position: absolute;\n z-index: 0;\n}\n\n.nexgui4-tab-container__surface,\n.nexgui4-tab-container__tabs,\n.nexgui4-tab-container__tabpanel {\n position: relative;\n z-index: 1;\n}\n".trim(),injectHostStyles=()=>{registerNexguiStyles(dp,hp)},setClassBalanceIconReadyState=e=>{if("undefined"==typeof document)return;const t=document.getElementById(pp);t&&(t.style.opacity=!0===e?mp:!1===e?fp:"")},bindClassBalanceIcon=({characterStore:e}={})=>{if(!e||"function"!=typeof e.getState||"function"!=typeof e.subscribe)return()=>{};const sync=(t=e.getState())=>{setClassBalanceIconReadyState(t?.classBalanceReady??null)};return sync(),e.subscribe(e=>{sync(e)})},injectFontAwesomeIcons=()=>{"undefined"!=typeof window&&window.___FONT_AWESOME___?.styles?.fad&&Object.assign(window.___FONT_AWESOME___.styles.fad,cp)},yp=300,bp=null,forceFooterHostElementsVisible=e=>{e?.setHostSetting?.("show_gauges",!0),e?.setHostSetting?.("show_balances",!0)},applyFooterLayout=()=>{if("undefined"==typeof document)return;const e=document.getElementsByClassName("bottom_view")[0];e&&(e.style.padding="0px",e.children[2]&&(e.children[2].style.margin="0px"));const t=document.getElementById("status_vars");if(t){for(let g=0;g<t.children.length;g++)Object.assign(t.children[g].style,{fontSize:"14.4px",marginTop:"auto",marginBottom:"auto",verticalAlign:"middle"});Object.assign(t.style,{justifyContent:"flex-start",alignItems:"center",marginTop:0,marginBottom:0});const e=document.getElementById("component_balances");e&&(t.prepend(e),e.style.minWidth="50px",e.style.marginTop="5px",e.style.gap="2px")}const g=document.getElementById("extra_icons");g&&(Object.assign(g.style,{display:"flex",justifyContent:"end",gap:"10px"}),["status-bank","status-gold","status-level","status-ping"].forEach(e=>{const t=document.getElementById(e);t&&g.prepend(t)}));const n=document.getElementById("status-ping");n&&(n.style.minWidth="57px");const o=document.getElementById("left_icons");if(o){Object.assign(o.style,{minWidth:"300px",maxWidth:"500px"}),o.children[0]&&(o.children[0].style.visibility="hidden",o.children[0].style.width="0px");const e=document.getElementById("status-target");e&&(o.prepend(e),e.style.fontSize="12px",e.style.fontWeight="bold")}const a=document.getElementById("footer");if(a&&g){const e=document.getElementById("gauges");if(e){a.insertBefore(e,g),Object.assign(e.style,{display:"flex",transform:"scaleY(0.85)",minWidth:0,flexGrow:100,alignItems:"center"});for(const t of e.children)t.children[1]&&(t.children[1].style.fontSize="12px"),t.style.flexGrow=1}}document.getElementById(pp)?.remove();const C=document.createElement("div");C.id=pp,C.className="balance class-balance",C.style.flexGrow="1",C.innerHTML=`<svg aria-hidden="true" focusable="false" data-prefix="fad" data-icon="hourglass" class="svg-inline--fa fa-star fa-w-18" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" color="#33FFD4" style="font-size: 20px;"><g class="fa-group"><path class="fa-secondary" fill="currentColor" d="${window.___FONT_AWESOME___?.styles?.fa?.hourglass?.[4]??""}"></path><path class="fa-primary" fill="currentColor" d=""></path></g></svg>`,document.getElementById("component_balances")?.appendChild(C),document.getElementById("balance_balance")?.setAttribute("style","flex-grow: 1"),document.getElementById("balance_equilibrium")?.setAttribute("style","flex-grow: 1")},configureFlexLayout=()=>{if("undefined"==typeof nexusclient)return;const e=nexusclient.ui().layout(),t=e.model()?.global??{},g="boolean"!=typeof t.tabSetEnableTabStrip||t.tabSetEnableTabStrip;e.flexModel.doAction({type:"FlexLayout_UpdateModelAttributes",data:{json:{splitterSize:2,tabSetEnableTabStrip:g,tabEnableClose:!1,tabSetEnableMaximize:!1,borderEnableAutoHide:!0,borderEnableDrop:!0}}}),["right","left","top","bottom"].forEach(t=>{e.model().borders.find(e=>e.location===t)||e.model().borders.push({type:"border",location:t,children:[]})});const borderLeaveEvent=()=>{bp&&(document.getElementsByClassName("MuiPopover-root MuiMenu-root MuiModal-root").length||e.flexModel.doAction({type:"FlexLayout_SelectTab",data:{tabNode:bp}}))},n=document.getElementsByClassName("flexlayout__tab_border_right");for(let a=0;a<n.length;a++)n[a].addEventListener("mouseleave",borderLeaveEvent);const borderMouseOverEvent=t=>{const g=t.target.title;g&&(e.flexModel.getNodeById(g)?.isVisible()||(bp=g,e.flexModel.doAction({type:"FlexLayout_SelectTab",data:{tabNode:bp}})))},o=document.getElementsByClassName("flexlayout__border_button_right");for(let a=0;a<o.length;a++){const t=o[a];t.addEventListener("mouseenter",borderMouseOverEvent);const g=e.model().borders[0]?.children.find(e=>e.id===t.title);g&&g.borderWidth<yp&&(g.borderWidth=yp)}},vp="nexGui4",xp="https://unpkg.com/nexgui4/dist/nexGui4.nxs",Sp="khaseem",wp=1e4,kp=[{key:"classCustomizations",names:["nexGui.classCustomizations","classCustomizations"]},{key:"userSettings",names:["nexGui.userSettings","userSettings","userCustomizations"]}],Ep=new Set(kp.flatMap(({names:e})=>e.map(e=>e.toLowerCase()))),toLowerName=e=>String(e??"").trim().toLowerCase(),clonePackageItem=e=>{if(!e||"object"!=typeof e)return null;if("function"==typeof structuredClone)try{return structuredClone(e)}catch{}try{return JSON.parse(JSON.stringify(e))}catch{return e}},safeCall=e=>{try{return e()}catch{return null}},getReflexes=e=>safeCall(()=>e?.reflexes?.())??null,getPackageRegistry=e=>{const t=safeCall(()=>e?.packages?.());if("function"==typeof t?.get)return t;const g=safeCall(()=>getReflexes(e)?.packages?.());return"function"==typeof g?.get?g:null},getNexGuiPackage=(e,t=vp)=>safeCall(()=>getPackageRegistry(e)?.get(t))??null,findPackageItemByNames=(e,t)=>{if(!Array.isArray(e))return null;const g=new Set(t.map(toLowerName));return e.find(e=>g.has(toLowerName(e?.name)))??null},captureCustomizationGroups=e=>kp.map(({key:t,names:g})=>{const n=findPackageItemByNames(e?.items,g);return n?{key:t,names:g,data:clonePackageItem(n)}:null}).filter(Boolean),applyCustomizationGroup=(e,t,g)=>{const n=findPackageItemByNames(e?.items,t.names);return!(!n||!t.data||("function"==typeof n.apply?(n.apply(t.data,g),0):"object"!=typeof n||"object"!=typeof t.data||(Object.assign(n,clonePackageItem(t.data)),0)))},enableRuntimePackageGroups=e=>{Array.isArray(e?.items)&&e.items.filter(e=>"group"===e?.type&&!Ep.has(toLowerName(e.name))).forEach(e=>{e.enabled=!0})},reportUpdateError=({adapter:e,consoleObj:t,message:g,nexusClient:n})=>{t.error(g),"function"!=typeof e?.notice?"function"!=typeof n?.display?n?.display_notice?.(g,"red"):n.display(g):e.notice(g,"red")},createAbortSignal=({AbortControllerCtor:e,setTimeoutFn:t,timeoutMs:g})=>{if(!e||g<=0)return{signal:void 0,timeout:null};const n=new e,o=t(()=>n.abort(),g);return{signal:n.signal,timeout:o}},updateNxs=async({adapter:e=null,clearTimeoutFn:t=clearTimeout,consoleObj:g=console,fetchFn:n=globalThis.fetch,nexusClient:o=globalThis.nexusclient,packageName:a=vp,setTimeoutFn:C=setTimeout,skipCharacterName:I=Sp,timeoutMs:i=wp,url:s=xp}={})=>{if(toLowerName(o?.charname)===toLowerName(I))return null;const l=getPackageRegistry(o);if(!l)return null;let c=null;try{if("function"!=typeof n)throw new Error("fetch is not available.");const e=l.get(a);if(!e||"function"!=typeof e.apply)throw new Error(`${a} package is not installed in Nexus.`);const t=captureCustomizationGroups(e),{signal:g,timeout:I}=createAbortSignal({AbortControllerCtor:globalThis.AbortController,setTimeoutFn:C,timeoutMs:i});c=I;const u=await n(s,{cache:"no-store",...g?{signal:g}:{}});if(!u?.ok)throw new Error(`${a} update failed: ${u?.status??"unknown"} ${u?.statusText??""}`.trim());const d=await u.json(),p=getReflexes(o),m=getNexGuiPackage(o,a);m.apply(d,p);const h=getNexGuiPackage(o,a)??m;return t.forEach(e=>{applyCustomizationGroup(h,e,p)}),enableRuntimePackageGroups(h),d}catch(u){return reportUpdateError({adapter:e,consoleObj:g,message:"AbortError"===u?.name?`${a} update timed out. Check your connection.`:`${a} update error: ${u?.message??String(u)}`,nexusClient:o}),null}finally{null!==c&&t(c)}},Rp="https://api.achaea.com/gamefeed.json",Tp=5e3,normalizeFetchedEntries=e=>Array.isArray(e)?e.filter(Boolean):[],parseTimestamp=e=>{if("string"!=typeof e||0===e.trim().length)return;const t=e.trim(),g=t.match(/^(\d{4})-(\d{2})-(\d{2})[ T](\d{2}):(\d{2}):(\d{2})$/);if(g){const[,e,t,n,o,a,C]=g;return Date.UTC(Number(e),Number(t)-1,Number(n),Number(o),Number(a),Number(C),0)}const n=t.includes("T")?t:t.replace(" ","T"),o=/(?:Z|[+-]\d{2}:?\d{2})$/i.test(n),a=Date.parse(o?n:`${n}Z`);return Number.isFinite(a)?a:void 0},toStoreEntry=e=>({content:e.description??e.caption??null,id:e.id??void 0,timestamp:parseTimestamp(e.date)}),mapEntries=e=>e.map(e=>toStoreEntry(e)),applySnapshot=(e,t)=>{const g=e?.getState?.();if(!g)return;const n=mapEntries(t);if("function"!=typeof g.replaceEntries){g.clear();for(const e of n)g.addEntry(e)}else g.replaceEntries(n)},appendEntries=(e,t)=>{const g=e?.getState?.();if(!g)return;const n=mapEntries(t);if("function"!=typeof g.addEntries)for(const o of n)g.addEntry(o);else g.addEntries(n)},createGameFeedPoller=({feedStore:e,fetchFn:t=null,setIntervalFn:g=null,clearIntervalFn:n=null,intervalMs:o=Tp,url:a=Rp})=>{let C=null,I=null,i=!1,s=null;const syncFromRemote=async()=>{if("function"!=typeof t)return[];try{const g=await t(a,{cache:"no-store"});if(!g?.ok)return[];const n=normalizeFetchedEntries(await g.json());if(!i||0===n.length)return n;const o=n.at(-1)?.id??null;if(null==o)return applySnapshot(e,n),n;if(null==s)return applySnapshot(e,n),s=o,n;if(o===s)return[];const C=n.findIndex(e=>e?.id===s);return C<0?applySnapshot(e,n):appendEntries(e,n.slice(C+1)),s=o,n}catch{return[]}},pollOnce=()=>I||(I=syncFromRemote().finally(()=>{I=null}),I);return{start:()=>{i||(i=!0,pollOnce(),"function"==typeof g&&(C=g(()=>{pollOnce()},o)))},stop:()=>{i=!1,null!==C&&"function"==typeof n&&(n(C),C=null)},pollOnce}},Mp="https://2a9fwzdazf.execute-api.us-east-2.amazonaws.com/nexGui/cdb",Pp="zr1te94RPZ4yaMJCc6j134eAxDsCpkmm48py1GaD",resolveRemoteService=({remoteService:e,remotePlayerService:t,fetchFn:g}={})=>{if(e)return e;const n=t??{apiUrl:Mp,apiKey:Pp};return createLambdaRemotePlayerService({...n,fetchFn:n.fetchFn??g})},bootstrapNexus=(e={})=>{const{adapter:t,autoStart:g,startupPhaseHandlers:n,remoteService:o,remotePlayerService:a,feedPollingEnabled:C=!0,runtimePorts:I,...i}=e,s=I??createBrowserRuntimePorts(),l=createNexusAdapter(),c=resolveRemoteService({remoteService:o,remotePlayerService:a,fetchFn:s.fetch});let u,d=!1,p=!1,m=!1,h=!1,y=!1,b=!1,v=!1,x=null,removeLivePatches=()=>{},removeClassBalanceBinding=()=>{},removeNetflixModeController=()=>{},removeNativeDisplayCommands=()=>{},removeLayoutCommands=()=>{};const ensureFeedPoller=()=>C?(x??=createGameFeedPoller({feedStore:u.stores.feed,fetchFn:s.fetch,setIntervalFn:s.setInterval,clearIntervalFn:s.clearInterval}),x):null;return u=createNexGui({adapter:l,autoStart:!1,remoteService:c,startupPhaseHandlers:{[Ur.BOOTING]:async()=>{const e=updateNxs({adapter:l,fetchFn:s.fetch,setTimeoutFn:s.setTimeout,clearTimeoutFn:s.clearTimeout});injectHostStyles(),injectTranscriptStyles(),injectReplacementBaseStyles(),injectFontAwesomeIcons();const t=u.__contextValue,g=t?.persistenceStore?.get("ui")?.nativeDisplay??!1;if(d||(generateTabs(),d=!0),p||(forceFooterHostElementsVisible(l),configureFlexLayout(),applyFooterLayout(),p=!0),h||(removeClassBalanceBinding=bindClassBalanceIcon({characterStore:u.stores.character}),h=!0),y||(removeNetflixModeController=createNetflixModeController({adapter:l,uiStore:u.stores.ui,characterStore:u.stores.character}),y=!0),m||(removeLivePatches=applyPatches({contextValue:t}),m=!0,g&&t.platformTabs.mountNativeDisplay()),!b){const e=l.destroy.bind(l);l.destroy=()=>{x?.stop(),removeNativeDisplayCommands(),removeLayoutCommands(),removeClassBalanceBinding(),h=!1,removeNetflixModeController(),y=!1,m&&(removeLivePatches(),m=!1),e()},b=!0}v||(l.send("stat"),l.send("pwho"),l.send("enemies"),l.send("allies"),l.send("city enemies"),l.send("date"),l.send("ql"),v=!0),t.playerDirectoryLifecycle.warmDirectoryFromCache(),t.playerDirectoryLifecycle.refreshDirectoryFromRemote(c),ensureFeedPoller()?.start(),await e}},runtimePorts:s,...i}),removeNativeDisplayCommands=u.__contextValue.platformTabs.configureNativeDisplayCommands({mountNativeDisplay:()=>mountNativeDisplay({contextValue:u.__contextValue}),unmountNativeDisplay:()=>{unmountNativeDisplay()}}),removeLayoutCommands=u.__contextValue.platformTabs.configureLayoutCommands({applyLayoutPreset,saveLayout:saveCurrentLayout,restoreLayout:restoreSavedLayout,hasSavedLayout}),installGlobalNexGui(u),u.__start().catch(()=>{}).then(()=>{emitStartupReadySignal(l),runNexGuiClassReflexForCurrentHostClass()}),u},createMockAdapter=({playerRelationships:e}={})=>{const t=[],g=[],n=new Map,o=new Map,a={echo_input:!1,echo_gmcp:!1,show_prompts:!0,show_timestamps:!1},C={tabSetEnableTabStrip:!1};let I=0,i=0;const getListenerBucket=e=>(o.has(e)||o.set(e,new Map),o.get(e)),resolveListenerId=(e,t={})=>t.id??"listener-"+ ++i,removeListener=(e,t)=>{const g=o.get(e);if(!g)return!1;if("string"==typeof t)return g.delete(t);for(const[n,o]of g.entries())if(o.handler===t)return g.delete(n),!0;return!1},s=assertAdapterContract({send:g=>{e?.trackRelationshipCommand?.(g),t.push(g)},sendGmcp:(e,g)=>t.push({gmcp:e,data:g}),getVariable:e=>n.get(e),setVariable:(e,t)=>n.set(e,t),getTarget:()=>n.get("_target")??null,setTarget:e=>n.set("_target",e),notice:()=>{},displayHtmlLine:e=>{g.push(String(e))},getHostSettings:()=>a,setHostSetting:(e,t)=>{a[e]=t},getHostLayoutSnapshot:()=>C,updateHostLayoutAttributes:e=>{Object.assign(C,e)},focusInput:()=>{},getConfiguredDefences:()=>[],getActiveDefences:()=>[],gagCurrentBlock:()=>{I+=1},on:(e,t,g)=>{const n=resolveListenerId(t,g);return getListenerBucket(e).set(n,{handler:t,once:Boolean(g?.once)}),()=>removeListener(e,n)},off:(e,t)=>removeListener(e,t),destroy:()=>{o.clear()}});return s._test={getSentCommands:()=>[...t],clearCommands:()=>{t.length=0},getGaggedBlockCount:()=>I,getDisplayedLines:()=>[...g],triggerEvent:(e,t)=>{const g=o.get(e);if(g)for(const[n,o]of[...g.entries()])o.handler(t),o.once&&g.delete(n)},setVariable:(e,t)=>n.set(e,t)},s},bootstrapPlayground=(e={})=>{const{feedPollingEnabled:t=!0,startupPhaseHandlers:g={},runtimePorts:n,...o}=e,a=n??createBrowserRuntimePorts(),C=createMockAdapter();let I,i=null;const ensureFeedPoller=()=>t?(i??=createGameFeedPoller({feedStore:I.stores.feed,fetchFn:a.fetch,setIntervalFn:a.setInterval,clearIntervalFn:a.clearInterval}),i):null;I=createNexGui({adapter:C,runtimePorts:a,startupPhaseHandlers:{...g,[Ur.BOOTING]:async e=>{await(g[Ur.BOOTING]?.(e)),injectTranscriptStyles(),ensureFeedPoller()?.start()}},...o});const s=I.destroy.bind(I);return I.destroy=()=>{i?.stop(),s()},I},Np=Object.freeze({NexGuiContext:Mo,applyInlineNameHighlighting,createMuiTheme,createReplacementDescriptor,generateReplacementHtml,injectReplacementBaseStyles,isRoomNpcItem,nexGuiIcons:cp,panels:Object.freeze({CombatStream,DefencesPanel,GameFeed,ItemsPanel,MainDisplay,MetricsPanel,NpcsPanel,OptionsPanel,PartyPanel,PlayersPanel,StatsPanel,SystemStream,TargetPanel,TimersPanel})});e.TOPICS=te,e.bootstrapNexus=bootstrapNexus,e.bootstrapPlayground=bootstrapPlayground,e.composePublicApi=composePublicApi,e.createMockAdapter=createMockAdapter,e.createNexGui=createNexGui,e.createNexusAdapter=createNexusAdapter,e.defaultTokens=ho,e.playground=Np,e.updateNxs=updateNxs}(globalThis.nexGui=globalThis.nexGui||{},React,ReactDOM,ReactDOM);
|
|
1
|
+
!function(g,A,I,C,e,t,n,a,r){Object.defineProperty(g,Symbol.toStringTag,{value:"Module"});var o=Object.create,i=Object.defineProperty,l=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,c=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty,__commonJSMin=(g,A)=>()=>(A||(g((A={exports:{}}).exports,A),g=null),A.exports),__copyProps=(g,A,I,C)=>{if(A&&"object"==typeof A||"function"==typeof A)for(var e,t=s(A),n=0,a=t.length;n<a;n++)e=t[n],u.call(g,e)||e===I||i(g,e,{get:(g=>A[g]).bind(null,e),enumerable:!(C=l(A,e))||C.enumerable});return g},__toESM=(g,A,I)=>(I=null!=g?o(c(g)):{},__copyProps(!A&&g&&g.__esModule?I:i(I,"default",{value:g,enumerable:!0}),g));e=__toESM(e,1);var d=200,applyCap=(g,A)=>!Number.isFinite(A)||A<=0?g:g.length>A?g.slice(g.length-A):g,createFeedModel=({cap:g=d}={})=>{let A=[];return{add:I=>{A=applyCap(A.concat(I),g)},addEntries:I=>{Array.isArray(I)&&0!==I.length&&(A=applyCap(A.concat(I),g))},replaceEntries:I=>{A=applyCap(Array.isArray(I)?[...I]:[],g)},snapshot:()=>[...A],clear:()=>{A=[]},destroy:()=>{A=[]}}},m=3e3,p=1e3,h=5e3,createStreamModel=({onAppend:g=()=>{},onClear:A=()=>{}}={})=>{let I=0,C=0,e=[],t=[],n=null,a=null;const r=new Set,notify=()=>{C++,a=null,r.forEach(g=>g())},retainLiveTail=g=>{if(g.length<3e3)return g;const A=g.slice(-p),I=[];for(let C=g.length-1;C>=0&&I.length<1e3;C--)g[C].gagged||I.push(g[C]);return 0===I.length?A:[...new Map([...A,...I].map(g=>[g.id,g])).values()].sort((g,A)=>g.id-A.id)},callCallback=(g,...A)=>{try{const I=g(...A);I&&"function"==typeof I.catch&&I.catch(()=>{})}catch{}};return{subscribe:g=>(r.add(g),()=>r.delete(g)),getSnapshot:()=>(a||(a={version:C,buffer:e,filteredBuffer:t,promptLine:n,totalLines:e.length}),a),addLines:A=>{const C=[],a=[];let r=null;for(const g of A){if("main"!==(g.buffer??"main"))continue;const A={id:I++,html:g.html,timestamp:g.timestamp,isPrompt:g.isPrompt,isMonospace:g.isMonospace,shouldLog:g.shouldLog,gagged:Boolean(g.gagged),buffer:g.buffer??"main"};C.push(A),A.isPrompt?r=A:a.push(A)}0!==C.length&&(e=retainLiveTail([...e,...C]),t=retainLiveTail([...t,...a]),r&&(n=r),callCallback(g,C),notify())},clear:()=>{e=[],t=[],n=null,I=0,callCallback(A),notify()},getStats:()=>({totalLines:e.length,filteredLines:t.length,liveBufferCount:e.length,liveFilteredCount:t.length,version:C,subscribers:r.size,sessionTotalLines:I,nextId:I,liveBufferCapThreshold:m,liveBufferRetainCount:p})}},y=5e3,appendWithCap=(g,A,I)=>{if(0===A.length)return g;const C=g.concat(A);return!Number.isFinite(I)||I<=0?C:C.length>I?C.slice(C.length-I):C},createTranscriptModel=({cap:g=y}={})=>{let A=0,I=0,C=[],e=null;const t=new Set,notify=()=>{I++,e=null,t.forEach(g=>g())};return{subscribe:g=>(t.add(g),()=>t.delete(g)),getSnapshot:()=>(e||(e={version:I,items:C,totalLines:C.length}),e),addLines:I=>{const e=[];for(const g of I)e.push({id:A++,html:g.html,timestamp:g.timestamp,isPrompt:Boolean(g.isPrompt),isMonospace:Boolean(g.isMonospace),shouldLog:g.shouldLog,hasMXP:(g.html||"").includes("mxp_send"),buffer:g.buffer});0!==e.length&&(C=appendWithCap(C,e,g),notify())},clear:()=>{C=[],A=0,notify()},getStats:()=>({totalLines:C.length,version:I,subscribers:t.size})}},b=Object.freeze({SYSTEM_PHASE:"nexgui4.system.phase",SYSTEM_READY:"nexgui4.system.ready",SYSTEM_DESTROYED:"nexgui4.system.destroyed"}),x=Object.freeze({TIMER_STARTED:"nexgui4.domain.timer.started",TIMER_UPDATED:"nexgui4.domain.timer.updated",TIMER_EXPIRED:"nexgui4.domain.timer.expired",TIMER_CLEARED:"nexgui4.domain.timer.cleared",STATS_UPDATED:"nexgui4.domain.stats.updated",TARGET_CHANGED:"nexgui4.domain.target.changed",STREAM_LINE:"nexgui4.domain.stream.line",PARTY_UPDATED:"nexgui4.domain.party.updated",PARTY_MEMBER_LEFT:"nexgui4.domain.party.member.left",ROOM_UPDATED:"nexgui4.domain.room.updated",DEFENCE_GAINED:"nexgui4.domain.defence.gained",DEFENCE_LOST:"nexgui4.domain.defence.lost",DEFENCES_REPLACED:"nexgui4.domain.defence.replaced",CHARACTER_UPDATED:"nexgui4.domain.character.updated",CLASS_CHANGED:"nexgui4.domain.character.class.changed"}),E=Object.freeze({STREAM_LINE:"nexgui4.ingress.stream.line",TIMER_STARTED:"nexgui4.ingress.timer.started",STATS_UPDATED:"nexgui4.ingress.stats.updated",TARGET_CHANGED:"nexgui4.ingress.target.changed",ROOM_UPDATED:"nexgui4.ingress.room.updated",DEFENCE_GAINED:"nexgui4.ingress.defence.gained",DEFENCE_LOST:"nexgui4.ingress.defence.lost",CLASS_CHANGED:"nexgui4.ingress.character.class.changed"}),v=Object.freeze({THEME_CHANGED:"nexgui4.ui.theme.changed",HOST_SETTINGS_CHANGED:"nexgui4.ui.host.settings.changed"}),R=Object.freeze({...b,...x,...v}),hasOwn=(g,A)=>Boolean(g)&&Object.prototype.hasOwnProperty.call(g,A),normalizeNumber$3=g=>{const A=Number(g);return Number.isFinite(A)?A:0},normalizeDuration=g=>Math.max(0,Math.abs(normalizeNumber$3(g))),normalizeDirection$1=(g,A="countdown")=>g&&"object"==typeof g?"countup"===g.direction||"countup"===g.mode||!1===g.countDown?"countup":"countdown":A,normalizePosition$1=(g,A="top")=>"string"==typeof g?"bottom"===g?"bottom":"top":g&&"object"==typeof g?"bottom"===g.position?"bottom":"top":A,normalizeStayVisible=(g,A=!0)=>g&&"object"==typeof g&&hasOwn(g,"stayVisible")?!0===g.stayVisible:A,normalizeGroupIds=(g,A=[])=>{if(!g||"object"!=typeof g)return[...A];const I=hasOwn(g,"groupIds")?g.groupIds:hasOwn(g,"groupId")?g.groupId:hasOwn(g,"group")?g.group:null;if(null==I)return[...A];const C=Array.isArray(I)?I:[I],e=new Set,t=[];for(const n of C){if("string"!=typeof n)continue;const g=n.trim();g&&!e.has(g)&&(e.add(g),t.push(g))}return t},isVisibleTimer=g=>!0===g.stayVisible||!0===g.enabled&&!0===g.running,areGroupIdsEqual=(g,A)=>g.length===A.length&&g.every((g,I)=>g===A[I]),areTimerSnapshotsEqual=(g,A)=>g.id===A.id&&g.durationMs===A.durationMs&&g.startedAt===A.startedAt&&g.label===A.label&&g.direction===A.direction&&g.position===A.position&&g.stayVisible===A.stayVisible&&g.enabled===A.enabled&&g.running===A.running&&g.elapsedMs===A.elapsedMs&&g.remainingMs===A.remainingMs&&areGroupIdsEqual(g.groupIds,A.groupIds),getIdleElapsedMs=g=>!0===g.stayVisible?g.durationMs:0,noopSetTimer=()=>null,noopClearTimer$1=()=>{},createTimerModel=({eventBus:g,now:A=()=>0,setTimer:I=noopSetTimer,clearTimer:C=noopClearTimer$1}={})=>{const e=new Map;let t=[];const getElapsedMs=g=>g.running&&null!=g.startedAt?Math.min(g.durationMs,Math.max(0,normalizeNumber$3(A())-normalizeNumber$3(g.startedAt))):g.elapsedMs,cloneTimer=g=>{const A=getElapsedMs(g);return{id:g.id,durationMs:g.durationMs,startedAt:g.startedAt,label:g.label,direction:g.direction,position:g.position,stayVisible:g.stayVisible,groupIds:[...g.groupIds],enabled:g.enabled,running:g.running,elapsedMs:A,remainingMs:Math.max(0,g.durationMs-A)}},clearScheduledExpiry=g=>{null!=g.timeoutId&&(C(g.timeoutId),g.timeoutId=null)},emitTimerUpdated=A=>{g.emit(x.TIMER_UPDATED,cloneTimer(A))},expire=A=>{const I=e.get(A);I&&(clearScheduledExpiry(I),I.elapsedMs=I.durationMs,I.startedAt=null,I.enabled=!1,I.running=!1,g.emit(x.TIMER_EXPIRED,{...cloneTimer(I),reason:"expired"}))},scheduleExpiry=g=>{clearScheduledExpiry(g),g.timeoutId=I(()=>expire(g.id),g.durationMs)},createDormantTimer=(g,A,I,C,e)=>{const t=A??e?.durationMs??0,n=normalizeStayVisible(C,e?.stayVisible??!0);return{id:g,durationMs:t,startedAt:null,label:"string"==typeof I?I:e?.label??"",direction:normalizeDirection$1(C,e?.direction??"countdown"),position:normalizePosition$1(C,e?.position??"top"),stayVisible:n,groupIds:normalizeGroupIds(C,e?.groupIds??[]),enabled:!1,running:!1,elapsedMs:n?t:0,timeoutId:null}},createTimer=(g,A,I,C)=>{const t=e.get(g);t&&clearScheduledExpiry(t);const n=createDormantTimer(g,normalizeDuration(A),I,C,t);return e.set(g,n),emitTimerUpdated(n),cloneTimer(n)},start=I=>{const C=e.get(I);if(!C)return null;clearScheduledExpiry(C),C.elapsedMs=0,C.startedAt=A(),C.enabled=!0,C.running=!0,scheduleExpiry(C);const t=cloneTimer(C);return g.emit(x.TIMER_STARTED,t),t},remove=A=>{const I=e.get(A);if(!I)return null;clearScheduledExpiry(I);const C=cloneTimer(I);return e.delete(A),g.emit(x.TIMER_EXPIRED,{...C,reason:"removed"}),C},list=(g={})=>{const A="string"==typeof g?g:g.groupId??null,I="object"==typeof g&&!0===g?.visibleOnly;return[...e.values()].map(g=>cloneTimer(g)).filter(g=>!(A&&!g.groupIds.includes(A)||I&&!isVisibleTimer(g)))},snapshot=()=>list({visibleOnly:!0});return{add:(g,A,I="",C)=>{const e=createTimer(g,A,I,C);return C&&"object"==typeof C&&!0===C.autoStart?start(g):e},clearAll:()=>{if(0===e.size)return 0;const A=e.size;return e.forEach(g=>clearScheduledExpiry(g)),e.clear(),g.emit(x.TIMER_CLEARED),A},destroy:()=>{e.forEach(g=>clearScheduledExpiry(g)),e.clear()},get:g=>{const A=e.get(g);return A?cloneTimer(A):null},list,read:()=>{const g=[...e.values()].map(g=>cloneTimer(g)).filter(g=>isVisibleTimer(g));return t.length===g.length&&t.every((A,I)=>areTimerSnapshotsEqual(A,g[I]))||(t=g),t},remove,reset:g=>{const A=e.get(g);return A?(clearScheduledExpiry(A),A.elapsedMs=getIdleElapsedMs(A),A.startedAt=null,A.enabled=!1,A.running=!1,emitTimerUpdated(A),cloneTimer(A)):null},snapshot,start,stop:g=>{const A=e.get(g);return A?(clearScheduledExpiry(A),A.elapsedMs=getElapsedMs(A),A.startedAt=null,A.enabled=!1,A.running=!1,emitTimerUpdated(A),cloneTimer(A)):null}}},isPlainObject=g=>"[object Object]"===Object.prototype.toString.call(g),toNumber=(g,A=0)=>{const I="number"==typeof g?g:"string"==typeof g&&g.trim().length>0?Number(g):NaN;return Number.isFinite(I)?I:A},toPercent=g=>{if("number"==typeof g&&Number.isFinite(g))return g;if("string"!=typeof g)return null;const A=Number.parseInt(g.replace("%","").trim(),10);return Number.isNaN(A)?null:A},toTrimmedString=g=>"string"==typeof g&&g.trim().length>0?g.trim():null,toBooleanFlag=g=>!0===g||1===g||"1"===g,stripAnsi=g=>"string"==typeof g?g.replace(/\u001b\[[0-9;]*m/g,"").trim():"",extractNamedValue=g=>Array.isArray(g)?toTrimmedString(g[0]):isPlainObject(g)?toTrimmedString(g.name):toTrimmedString(g),deepFreeze=g=>{if(!g||"object"!=typeof g||Object.isFrozen(g))return g;Object.freeze(g);for(const A of Object.values(g))deepFreeze(A);return g},parseFontSize=(g,A=14)=>{if("number"==typeof g&&Number.isFinite(g)&&g>0)return g;if("string"==typeof g){const A=Number.parseFloat(g);if(Number.isFinite(A)&&A>0)return A}return A},w={hp:{current:0,max:0},mp:{current:0,max:0},ep:{current:0,max:0},wp:{current:0,max:0},nl:{current:0,max:0},gold:0,bank:0,xp:0,xpToNext:0},createStatsModel=({eventBus:g}={})=>{let A=structuredClone(w);const read=()=>A;return{update:I=>{for(const g of Object.keys(I)){const C=I[g];null===C||"object"!=typeof C||Array.isArray(C)?A[g]=C:A[g]={...A[g],...C}}g.emit(x.STATS_UPDATED,read())},read,snapshot:()=>deepFreeze(structuredClone(A)),destroy:()=>{A=structuredClone(w)}}},S=Object.freeze({goldCollection:!0,targetCalls:!0,affCalls:!0,callTargets:!1,callAffs:!1,gagChat:!1}),M=Object.freeze([{key:"goldCollection",label:"Collect Gold",tooltip:"Legacy party automation flag for gold collection behaviour."},{key:"targetCalls",label:"Accept Targets",tooltip:"Accept leader target calls from party chat."},{key:"affCalls",label:"Accept Affs",tooltip:"Accept legacy affliction call messages from party chat."},{key:"callTargets",label:"Call Targets",tooltip:"Legacy toggle preserved for compatibility with party workflows."},{key:"callAffs",label:"Call Affs",tooltip:"Legacy toggle preserved for compatibility with party workflows."},{key:"gagChat",label:"Gag Chat",tooltip:"Hide party chat lines from the display stream."}]),T=Object.freeze(M.map(({key:g})=>g)),isNonEmptyString=g=>"string"==typeof g&&g.trim().length>0,trimToEmpty=g=>isNonEmptyString(g)?g.trim():"",N=trimToEmpty,normalizeLookupKey=g=>trimToEmpty(g).toLowerCase(),toDisplayName=g=>trimToEmpty(g).replace(/[_-]+/g," ").replace(/\s+/g," ").replace(/\b([a-z])/g,g=>g.toUpperCase()),capitalizeFirst=g=>{const A=trimToEmpty(g);return A?A.charAt(0).toUpperCase()+A.slice(1):""},cloneSettings=g=>({...S,...g}),cloneState=g=>({members:[...g.members],leader:g.leader,selfName:g.selfName,settings:cloneSettings(g.settings)}),normalizeMembers=g=>{const A=[],I=new Set;return(Array.isArray(g)?g:[]).forEach(g=>{const C=N("string"==typeof g?g:g?.name);C&&!I.has(C)&&(I.add(C),A.push(C))}),A},reconcileLeader=(g,A)=>A.includes(g.leader)?g.leader:g.selfName&&A.includes(g.selfName)?g.selfName:A[0]??"",ensureSelfMember=(g,A)=>!g.selfName||A.includes(g.selfName)?A:[g.selfName,...A],createPartyModel=({eventBus:g}={})=>{let A={members:[],leader:"",selfName:"",settings:cloneSettings(S)};const emitUpdated=()=>{g.emit(x.PARTY_UPDATED,snapshot())},snapshot=()=>cloneState(A);return{update:g=>{const I=ensureSelfMember(A,normalizeMembers(g)),C=reconcileLeader(A,I);A.leader===C&&A.members.length===I.length&&A.members.every((g,A)=>g===I[A])||(A={...A,members:I,leader:C},emitUpdated())},addMember:g=>{const I=N(g);I&&!A.members.includes(I)&&(A={...A,members:[...A.members,I],leader:A.leader||I},emitUpdated())},removeMember:I=>{const C=N(I);if(!C||C===A.selfName||!A.members.includes(C))return;const e=A.members.filter(g=>g!==C);A={...A,members:e,leader:reconcileLeader(A,e)},g.emit(x.PARTY_MEMBER_LEFT,{name:C}),emitUpdated()},setLeader:g=>{const I=N(g);I&&A.members.includes(I)&&A.leader!==I&&(A={...A,leader:I},emitUpdated())},setSelf:g=>{const I=N(g);if(!I)return;const C=ensureSelfMember({...A,selfName:I},A.members.filter(g=>g!==I)),e=C.includes(A.leader)?A.leader:I;A.selfName===I&&A.leader===e&&A.members.length===C.length&&A.members.every((g,A)=>g===C[A])||(A={...A,selfName:I,members:C,leader:e},emitUpdated())},setSetting:(g,I)=>{if(!T.includes(g))throw new Error(`[nexGui4] Unknown party setting "${String(g)}".`);const C=!0===I;A.settings[g]!==C&&(A={...A,settings:{...A.settings,[g]:C}},emitUpdated())},read:()=>A,snapshot,destroy:()=>{A={members:[],leader:"",selfName:"",settings:cloneSettings(S)}}}},G={players:[],npcs:[],items:[],roomName:"",roomId:""},cloneRoomCollection=g=>Array.isArray(g)?structuredClone(g):[],createRoomModel=({eventBus:g}={})=>{let A=structuredClone(G);const read=()=>A;return{update:I=>{A={players:I.players?[...I.players]:[],npcs:cloneRoomCollection(I.npcs),items:cloneRoomCollection(I.items),roomName:I.roomName??"",roomId:I.roomId??""},g.emit(x.ROOM_UPDATED,read())},read,snapshot:()=>({players:[...A.players],npcs:cloneRoomCollection(A.npcs),items:cloneRoomCollection(A.items),roomName:A.roomName,roomId:A.roomId}),destroy:()=>{A=structuredClone(G)}}},D={name:"",class:"",level:0,gender:null,balance:!1,equilibrium:!1,classBalanceType:null,classBalanceReady:null,currentAffs:[],limbs:{}},createCharacterModel=({eventBus:g}={})=>{let A={...D};const read=()=>A;return{update:I=>{A={...A,...I},g.emit(x.CHARACTER_UPDATED,read())},read,setClass:I=>{A={...A,class:I},g.emit(x.CLASS_CHANGED,{class:I})},snapshot:()=>deepFreeze(structuredClone(A)),destroy:()=>{A={...D}}}},normalizeGender$1=g=>{if("string"!=typeof g)return null;const A=g.trim().toLowerCase();return"female"===A?"female":"male"===A?"male":null},normalizeAfflictionName=g=>{if(Array.isArray(g))return normalizeAfflictionName(g[0]);if(isPlainObject(g))return normalizeAfflictionName(g.name??g.affliction??g.id);if("string"!=typeof g)return null;const A=g.trim().toLowerCase();return A.length>0?A:null},normalizeAfflictionList=g=>{if(Array.isArray(g)){const A=g.map(g=>normalizeAfflictionName(g)).filter(Boolean);return A.length>0?Array.from(new Set(A)):null}return isPlainObject(g)?normalizeAfflictionList(Object.keys(g)):null},normalizeLimbMap=g=>isPlainObject(g)?Object.fromEntries(Object.entries(g).map(([g,A])=>null!==A&&"object"==typeof A?[g,structuredClone(A)]:[g,{percent:toNumber(A)}])):null,buildCharacterDetailPatch=g=>{if(!isPlainObject(g))return null;const A={},I=normalizeGender$1(g.gender),C=normalizeAfflictionList(g.currentAffs??g.afflictions),e=normalizeLimbMap(g.limbs);return I&&(A.gender=I),C&&(A.currentAffs=C),e&&(A.limbs=e),Object.keys(A).length>0?A:null},applyCharacterAfflictionEvent=(g,A,I)=>{if("Char.Afflictions.Add"!==A&&"Char.Afflictions.Remove"!==A)return!1;const C=normalizeAfflictionName(I);if(!C)return!1;const e=g.snapshot(),t=Array.isArray(e.currentAffs)?e.currentAffs:[];return"Char.Afflictions.Add"===A?!t.includes(C)&&(g.update({currentAffs:[...t,C]}),!0):(g.update({currentAffs:t.filter(g=>g!==C)}),!0)},j=["id","ID"],P=["Text","text","short_desc"],B=["HP","hp","hpperc"],hasAnyKey=(g,A)=>A.some(A=>Object.prototype.hasOwnProperty.call(g,A)),readFirst=(g,A)=>{for(const I of A)if(Object.prototype.hasOwnProperty.call(g,I))return g[I]},normalizeId=g=>"number"==typeof g&&Number.isFinite(g)?String(g):toTrimmedString(g),readHpText=g=>"number"==typeof g&&Number.isFinite(g)?String(g):toTrimmedString(g),deriveIsPlayer=g=>"-1"===String(g),createEmptyTargetRecord=()=>({id:null,name:null,isPlayer:!1,hpPercent:null,hpText:null,hpDelta:null,gender:null,currentAffs:[],limbs:{}}),createTargetModel=({eventBus:g}={})=>{let A=createEmptyTargetRecord(),I=0;const read=()=>A,emitChange=()=>{I+=1,g?.emit?.(x.TARGET_CHANGED,read())};return{setIdentity:g=>{if(!isPlainObject(g))return!1;const I=hasAnyKey(g,j),C=hasAnyKey(g,P),e=I?normalizeId(readFirst(g,j)):A.id,t=C?toTrimmedString(readFirst(g,P)):A.name,n=e!==A.id,a=t!==A.name;if(!n&&!a)return!1;const r=n?createEmptyTargetRecord():A,o=hasAnyKey(g,B),i=o?readHpText(readFirst(g,B)):r.hpText,l=o?toPercent(readHpText(readFirst(g,B))):r.hpPercent;return A={...r,id:e,name:t,isPlayer:deriveIsPlayer(e),hpText:i,hpPercent:l},emitChange(),!0},applyDetail:g=>{if(!isPlainObject(g))return!1;const I={};if("number"==typeof g.hpPercent&&Number.isFinite(g.hpPercent))I.hpPercent=g.hpPercent;else if("string"==typeof g.hpPercent){const A=toPercent(g.hpPercent);null!=A&&(I.hpPercent=A)}const C=readHpText(g.hpText);null!=C&&(I.hpText=C),"number"==typeof g.hpDelta&&Number.isFinite(g.hpDelta)&&(I.hpDelta=g.hpDelta);const e=normalizeGender$1(g.gender);e&&(I.gender=e);const t=normalizeAfflictionList(g.currentAffs??g.afflictions);t&&(I.currentAffs=t);const n=normalizeLimbMap(g.limbs);return n&&(I.limbs=n),0!==Object.keys(I).length&&(A={...A,...I},emitChange(),!0)},clear:()=>{A=createEmptyTargetRecord(),emitChange()},read,snapshot:()=>deepFreeze(structuredClone(A)),getVersion:()=>I,destroy:()=>{A=createEmptyTargetRecord()}}},createDefenceModel=({eventBus:g}={})=>{let A=[];const replaceAll=(I=[])=>{A=Array.isArray(I)?[...new Set(I.map(g=>"string"==typeof g?g.trim():"").filter(Boolean))].sort():[],g.emit(x.DEFENCES_REPLACED,{defences:snapshot()})},snapshot=()=>[...A];return{gain:I=>{A.includes(I)||(A=[...A,I].sort()),g.emit(x.DEFENCE_GAINED,{name:I})},lose:I=>{A.includes(I)&&(A=A.filter(g=>g!==I)),g.emit(x.DEFENCE_LOST,{name:I})},replaceAll,reset:()=>{A=[]},read:()=>A,snapshot,destroy:()=>{A=[]}}},normalizeClassBalanceType=g=>"string"==typeof g&&g.trim().length>0?g.trim():null,normalizeClassStatList=g=>Array.isArray(g)?g.reduce((g,A)=>{if("string"!=typeof A)return g;const I=A.trim();return I?(g.push(I),g):g},[]):[],resolveClassBalanceReady=({classStats:g,classBalanceType:A})=>{const I=normalizeClassBalanceType(A);if(!I)return null;const C=normalizeClassStatList(g).map(g=>g.toLowerCase()),e=`${I.toLowerCase()}: yes`,t=`${I.toLowerCase()}: no`;return!!C.includes(e)||!C.includes(t)&&null},createClassBalanceController=()=>{let g=null,A=[];const snapshot=()=>({classBalanceType:g,classBalanceReady:resolveClassBalanceReady({classStats:A,classBalanceType:g})});return{getType:()=>g,setType:A=>(g=normalizeClassBalanceType(A),snapshot()),updateFromVitals:g=>(A=normalizeClassStatList(g?.charstats),snapshot()),destroy:()=>{g=null,A=[]}}},O=Object.freeze(["m","mx"]),L=new Set(O),isRoomNpcAttrib=g=>"string"==typeof g&&L.has(g),isRoomNpcItem=g=>"object"==typeof g&&null!==g&&isRoomNpcAttrib(g.attrib),getRoomEntryId=g=>isPlainObject(g)&&null!=g.id?String(g.id):null,isRoomLocation=g=>"room"===toTrimmedString(g?.location)?.toLowerCase(),splitRoomEntries=g=>(Array.isArray(g)?structuredClone(g):[]).reduce((g,A)=>(isRoomNpcItem(A)?g.npcs.push(A):g.items.push(A),g),{items:[],npcs:[]}),extractRoomItemList=g=>Array.isArray(g?.items)?g.items:Array.isArray(g?.Items)?g.Items:Array.isArray(g?.room)?g.room:[],extractRoomItemEntry=g=>isPlainObject(g?.item)?g.item:isPlainObject(g?.Item)?g.Item:isPlainObject(g)?g:null,removeRoomItemEntry=(g,A)=>g.filter(g=>getRoomEntryId(g)!==A),upsertRoomItemEntry=(g,A)=>{const I=getRoomEntryId(A);if(!I)return[...g,structuredClone(A)];const C=structuredClone(g),e=C.findIndex(g=>getRoomEntryId(g)===I);return-1===e?(C.push(structuredClone(A)),C):(C[e]=structuredClone(A),C)},normalizeRoomPlayerEntries=g=>Array.isArray(g)?g:Array.isArray(g?.Players)?g.Players:Array.isArray(g?.players)?g.players:[],extractRoomPlayerName=g=>extractNamedValue(g)??toTrimmedString(g?.fullname),createRoomOccupantsModel=({roomModel:g,playerDirectory:A}={})=>{const rememberRoomPlayers=g=>{A?.rememberRoomPlayers?.(g)},apply=(A,I)=>{const C=g.snapshot();switch(A){case"Room.Info":return g.update({...C,roomName:toTrimmedString(I?.name)??"",roomId:I?.num??I?.id??""}),!0;case"Room.Players":{const A=normalizeRoomPlayerEntries(I),e=A.map(extractRoomPlayerName).filter(Boolean);return rememberRoomPlayers(A),g.update({...C,players:e}),!0}case"Room.Addplayer":case"Room.AddPlayer":{const A=toTrimmedString(I?.name)??extractNamedValue(I)??toTrimmedString(I?.fullname);return!(!A||C.players.includes(A)||(rememberRoomPlayers([I]),g.update({...C,players:[...C.players,A]}),0))}case"Room.RemovePlayer":{const A=extractNamedValue(I);return!!A&&(g.update({...C,players:C.players.filter(g=>g!==A)}),!0)}case"Char.Items.List":return!!isRoomLocation(I)&&(g.update({...C,...splitRoomEntries(extractRoomItemList(I))}),!0);case"Char.Items.Add":case"Char.Items.Update":{if(!isRoomLocation(I))return!1;const A=extractRoomItemEntry(I);if(!A)return!1;const e=getRoomEntryId(A),t=null==e?C.npcs:removeRoomItemEntry(C.npcs,e),n=null==e?C.items:removeRoomItemEntry(C.items,e);return g.update({...C,npcs:isRoomNpcItem(A)?upsertRoomItemEntry(t,A):t,items:isRoomNpcItem(A)?n:upsertRoomItemEntry(n,A)}),!0}case"Char.Items.Remove":{if(!isRoomLocation(I))return!1;const A=getRoomEntryId(extractRoomItemEntry(I));return!!A&&(g.update({...C,npcs:removeRoomItemEntry(C.npcs,A),items:removeRoomItemEntry(C.items,A)}),!0)}default:return!1}};return Object.freeze({apply})},z=Object.freeze({"&":"&","<":"<",">":">",'"':""","'":"'"}),escapeHtml=g=>String(g??"").replace(/[&<>"']/g,g=>z[g]),Z=Object.freeze({amp:"&",lt:"<",gt:">",quot:'"',apos:"'",nbsp:" "}),stripHtml=g=>{if(!g||"string"!=typeof g)return g??"";let A=g.replace(/<[^>]+>/g,"");return A=A.replace(/&([^;]+);/g,(g,A)=>{if(Z[A])return Z[A];if(A.startsWith("#")){const g=A.startsWith("#x")?parseInt(A.substring(2),16):parseInt(A.substring(1),10);if(!isNaN(g))return String.fromCharCode(g)}return g}),A},F=Object.freeze({"a monolith sigil":{color:"red",text:"A MONOLITH SIGIL"},"a cube sigil":{color:"yellow",text:"A CUBE SIGIL"},"some gold sovereigns":{color:"gold",text:"GOLD COINS"}}),K=Object.freeze({angle:Object.freeze({open:"<",close:">"}),square:Object.freeze({open:"[",close:"]"}),curly:Object.freeze({open:"{",close:"}"}),round:Object.freeze({open:"(",close:")"})}),styleAttribute$2=g=>{const A=Object.entries(g).filter(([,g])=>g);return 0===A.length?"":` style="${A.map(([g,A])=>`${g}: ${A}`).join("; ")}"`},createTextSegment=(g,A,I={})=>({text:g,color:A,italic:Boolean(I.italic),bold:Boolean(I.bold)}),renderSegmentHtml=g=>`<span${styleAttribute$2({color:g.color,"font-style":g.italic?"italic":null,"font-weight":g.bold?"700":null})}>${escapeHtml(g.text)}</span>`,createStaticRule=(g,A,I,C)=>Object.freeze({family:"room-text",id:g,gate:A,pattern:I,createMarker:()=>C}),createDirectionalRule=(g,A,I,C,e,t,n,a)=>Object.freeze({family:"room-text",id:g,gate:A,pattern:I,createMarker:g=>({frame:C,frameColor:e,segments:[createTextSegment(t,n),createTextSegment(capitalizeFirst(g?.groups?.direction),a)]})}),createSigilRule=(g,A,I,C,e)=>createStaticRule(g,A,I,{frame:"curly",frameColor:"yellow",segments:[createTextSegment("Sigil: ","silver"),createTextSegment(C,e)]}),createRuneRule=(g,A,I,C)=>createStaticRule(g,A,I,{frame:"round",frameColor:"red",segments:[createTextSegment("Rune: ","silver"),createTextSegment(C,"aquamarine")]}),createConquestRule=(g,A,I,C,e)=>createStaticRule(g,A,I,{frame:null,frameColor:null,leftIcons:[{id:"shield-halved",colors:["silver",e],size:12}],rightIcons:[{id:"shield-halved",colors:[e,"silver"],size:12}],segments:[createTextSegment(" Conquest: ","slategray"),createTextSegment(C,e)]}),Y=Object.freeze([createStaticRule("totem","runic totem",/A runic totem is planted solidly in the ground\./,{frame:"angle",frameColor:"dodgerblue",segments:[createTextSegment("TOTEM","Tomato")]}),createStaticRule("frozenGround","slick with",/The ground is slick with ice\./,{frame:"angle",frameColor:"dodgerblue",segments:[createTextSegment("Frozen Ground","PowderBlue")]}),createStaticRule("graveHands","rotting flesh",/Hands of rotting flesh and white bone push up from the ground/,{frame:"angle",frameColor:"crimson",segments:[createTextSegment("Gravehands","Beige")]}),createDirectionalRule("icewall","icewall",/An icewall is here, blocking passage to the (?<direction>\w+)\./,"square","red","Icewall: ","dodgerblue","aquamarine"),createDirectionalRule("stonewall","wall of stone",/A large wall of stone stands here, blocking passage to the (?<direction>\w+)\./,"square","red","Stonewall: ","silver","aquamarine"),createSigilRule("cubeSigil","cube",/Resting on the ground is a cube-shaped silver sigil\./,"Cube","aquamarine"),createSigilRule("eyeSigil","obsidian",/An obsidian eye sigil is here\./,"Eye","lightgreen"),createSigilRule("monolithSigil","monolith",/A sigil in the shape of a small, rectangular monolith is on the ground\./,"Monolith","red"),createSigilRule("keySigil","key-shaped",/Lying flat on the ground is a key-shaped sigil\./,"Key","lightPink"),createRuneRule("kena","nightmares",/A rune that looks like something out of your nightmares has been sketched into the ground here\./,"Kena"),createRuneRule("uruz","lightning bolt",/A rune like a lightning bolt has been sketched into the ground here\./,"Uruz"),createRuneRule("fehu","closed eye",/A rune like a closed eye has been sketched into the ground here\./,"Fehu"),createRuneRule("pithikhan","square box",/A rune resembling a square box has been sketched into the ground here\./,"Pithikhan"),createRuneRule("inguz","stick man",/A rune that looks like a stick man has been sketched into the ground here\./,"Inguz"),createRuneRule("wunjo","open eye",/A rune like an open eye has been sketched into the ground here\./,"Wunjo"),createRuneRule("sowulu","a nail",/A rune that looks like a nail has been sketched into the ground here\./,"Sowulu"),createRuneRule("isaz","flurry of lighning",/A rune like a flurry of lightning bolts has been sketched into the ground here\./,"Isaz"),createRuneRule("dagaz","rising sun",/A rune like a rising sun has been sketched into the ground here\./,"Dagaz"),createRuneRule("raido","resembling a horse",/A rune resembling a horse has been sketched into the ground here\./,"Raido"),createRuneRule("nauthiz","resembling a leech",/A rune resembling a leech has been sketched into the ground here\./,"Nauthiz"),createRuneRule("mannaz","resembling a bell",/A rune resembling a bell has been sketched into the ground here\./,"Mannaz"),createRuneRule("othala","resembling a mountain",/A rune resembling a mountain range has been sketched into the ground here\./,"Othala"),createRuneRule("sleizak","resembling a viper",/A rune resembling a viper has been sketched into the ground here\./,"Sleizak"),createRuneRule("tiwaz","upward-pointing arrow",/A rune like an upward-pointing arrow has been sketched into the ground here\./,"Tiwaz"),createRuneRule("nairat","like a butterfly",/A rune shaped like a butterfly has been sketched into the ground here\./,"Nairat"),createRuneRule("eihwaz","like a yew",/A rune shaped like a yew has been sketched into the ground here\./,"Eihwaz"),createConquestRule("conquestAshtan","warp-touched",/Crackling ozone heralds warp-touched mirage, their coming the advent of change\./,"Ashtan ","#990099"),createConquestRule("conquestCyrene","draconic tracks",/Bound in ice, draconic tracks scribe a glittering path across the earth\./,"Cyrene ","#009999"),createConquestRule("conquestNeraeos","Cerulean waters",/Cerulean waters preside, fathom and depths stirred to roiling currents by the pervasive will of Neraeos Pelagia, Lord of the Sea\./,"Cyrene ","#009999"),createConquestRule("conquestEleusis","fecundity",/Nature's fecundity floods the surrounds with the clamour of life in a chittering refrain\./,"Eleusis ","#00e600"),createConquestRule("conquestHashan","leaden shadow",/Lines of leaden shadow coil underfoot, turning earth to metal by alchemical writ\./,"Hashan ","#999900"),createConquestRule("conquestMhaldor","red-hued",/A noxious, red-hued fog overwhelms the area with a thick, palpable vapour\./,"Mhaldor ","#e60000"),createConquestRule("conquestTargossas","mien",/Radiant light joins with calescent heat, suffusing the area with a harsh, blinding mien\./,"Targossas ","#ffffff"),createConquestRule("conquestUnderworld","ashen earth",/Soul's blood pools on ashen earth turned dust, an inviolable call to death's advance\./,"Underworld ","tomato")]),W=new Map,V=new Set,notifyOverrideSubscribers=()=>{for(const g of V)g()},subscribeToRoomItemOverrides=g=>(V.add(g),()=>V.delete(g)),setUserRoomItemOverride=(g,A)=>{const I=normalizeLookupKey(g);I&&(W.set(I,A),notifyOverrideSubscribers())},removeUserRoomItemOverride=g=>{const A=normalizeLookupKey(g);A&&(W.delete(A),notifyOverrideSubscribers())},getUserRoomItemOverride=g=>{const A=normalizeLookupKey(g);return A?W.get(A)??null:null},listUserRoomItemOverrides=()=>Array.from(W.entries()),getRoomItemOverride=g=>{if("string"==typeof g){const A=normalizeLookupKey(g);return W.get(A)??F[A]??null}if(!g||"object"!=typeof g)return null;const A=normalizeLookupKey(g.id),I=normalizeLookupKey(g.name);return W.get(A)??W.get(I)??F[A]??F[I]??null},renderRoomMarkerHtml=(g,A={})=>{const I=g.frame?K[g.frame]:null,C=A.iconRenderer,e=Array.isArray(g.leftIcons)?g.leftIcons.map(g=>C?.(g)??"").join(""):"",t=Array.isArray(g.rightIcons)?g.rightIcons.map(g=>C?.(g)??"").join(""):"";return[e,I?renderSegmentHtml(createTextSegment(I.open,g.frameColor,{bold:!0})):"",g.segments.map(renderSegmentHtml).join(""),I?renderSegmentHtml(createTextSegment(I.close,g.frameColor,{bold:!0})):"",t].join("")},matchRoomTextReplacements=g=>isNonEmptyString(g)?Y.flatMap(A=>{if(!g.includes(A.gate))return[];const I=g.match(A.pattern);return I?[{rule:A,match:I,marker:A.createMarker(I)}]:[]}):[],replaceRoomText=(g,A={})=>{if(!isNonEmptyString(g))return g;let I=g;for(const{rule:C,match:e,marker:t}of matchRoomTextReplacements(g))I=I.replace(C.pattern,renderRoomMarkerHtml(t,A));return I},createWormholeExitDescriptor=({warp:g,currentArea:A}={})=>{if(!g||"object"!=typeof g)return null;const I=A&&A===g.area?g.name:g.areaName;return isNonEmptyString(I)?{family:"room-exit",command:"worm warp",label:`Wormhole: (${I})`}:null},renderWormholeExitHtml=g=>g?`<span>, and <a class="mxp_send" href="#" rel="${escapeHtml(g.command)}">${escapeHtml(g.label)}</a>.</span>`:"",extractPartyChatPayload=g=>{if(!isPlainObject(g)||"party"!==toTrimmedString(g.channel)?.toLowerCase())return null;const A=toTrimmedString(g.talker),I=stripAnsi(g.text);return A&&I?{talker:A,message:I.match(/^\(Party\): (\w+) says, "(.+)"$/)?.[2]??I}:null},capitalizeLookupName=g=>`${g.charAt(0).toUpperCase()}${g.slice(1)}`,createPartyAutomationModel=({characterModel:g,partyModel:A,playerDirectory:I,sendCommand:C}={})=>{const send=g=>{"function"==typeof C&&C(g)},processChannelText=C=>{const e=extractPartyChatPayload(C);if(!e)return!1;const t=A.snapshot();if(!t.settings.targetCalls||e.talker!==t.leader)return!1;const n=e.message.match(/^Target: (.+)\.$/)??e.message.match(/^(?:Target|TARGET) (.+)\.$/);if(n){const A=toTrimmedString(n[1]);if(!A)return!1;const C=g.snapshot(),e=I.getPlayerProfile(C.name)?.city??"",t=I.getPlayerProfile(capitalizeLookupName(A))??I.getPlayerProfile(A);return!(t?.city&&e&&t.city===e||(send(`settarget ${A}`),send(`enemy ${A}`),0))}const a=e.message.match(/^Enemy (.+)\.$/);if(a){const g=toTrimmedString(a[1]);if(g)return send(`enemy ${g}`),!0}return!1},processEvent=(g,A)=>"Comm.Channel.Text"===g&&processChannelText(A);return Object.freeze({processChannelText,processEvent})},freezeMethodGroups=g=>Object.freeze(Object.fromEntries(Object.entries(g).map(([g,A])=>[g,Object.freeze([...A])]))),U=freezeMethodGroups({commands:["send","sendGmcp"],variables:["getVariable","setVariable"],target:["getTarget","setTarget"],output:["notice","displayHtmlLine","gagCurrentBlock"],host:["getHostSettings","setHostSetting","getHostLayoutSnapshot","updateHostLayoutAttributes","focusInput","getConfiguredDefences","getActiveDefences"],events:["on","off"],lifecycle:["destroy"]}),H=Object.freeze(Object.values(U).flat()),assertAdapterContract=g=>{const A=H;for(const I of A)if("function"!=typeof g?.[I])throw new Error(`[nexGui4] Adapter missing required method: "${I}"`);return g},normalizeConfiguredDefenceList=g=>{if(!Array.isArray(g))return[];const A=new Set;return g.reduce((g,I)=>{if("string"!=typeof I)return g;const C=I.trim();return!C||A.has(C)||(A.add(C),g.push(C)),g},[])},createDefenceStore=({defenceModel:g,eventBus:A,configuredDefences:C=[]})=>{const readDefences=()=>g.read?.()??g.snapshot(),e=(0,I.create)(()=>({defences:readDefences(),configuredDefences:normalizeConfiguredDefenceList(C),gainDefence:A=>g.gain(A),loseDefence:A=>g.lose(A),resetDefences:()=>{g.reset(),e.setState({defences:readDefences()})},setConfiguredDefences:g=>{e.setState({configuredDefences:normalizeConfiguredDefenceList(g)})}})),refreshDefences=()=>{e.setState({defences:readDefences()})};return A.on(x.DEFENCE_GAINED,refreshDefences),A.on(x.DEFENCE_LOST,refreshDefences),A.on(x.DEFENCES_REPLACED,refreshDefences),e},isRecord=g=>"[object Object]"===Object.prototype.toString.call(g),extractDefenceName=g=>"string"==typeof g?g:isRecord(g)&&"string"==typeof g.name?g.name:null,removeTrackedHandler=(g,A,I)=>{const C=g.get(A);if(C){if("string"==typeof I)C.delete(I);else for(const[g,A]of C.entries())if(A===I){C.delete(g);break}0===C.size&&g.delete(A)}},normalizeListenerIdSegment=g=>String(g).replace(/[^A-Za-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-"),createDefaultListenerId=(g,A)=>{const I=`nexGui4-${normalizeListenerIdSegment(g)||"event"}`;if(!A||0===A.size)return I;let C=A.size+1,e=`${I}-${C}`;for(;A.has(e);)C+=1,e=`${I}-${C}`;return e},Q="#00B1D2",X=`<span style="color:${Q};">[-</span><span style="color:#FDDB27;">nexGui</span><span style="color:${Q};">-] </span>`,renderNoticeHtml=(g,A)=>{if(A?.html)return X+String(g);const I=A&&"object"==typeof A?A.style:A,C=escapeHtml(g);return"string"==typeof I&&I.trim()?X+`<span style="color: ${escapeHtml(I.trim())};">${C}</span>`:X+C},getHostSettings=()=>nexusclient.settings?.()??{},getHostLayout=()=>nexusclient.ui?.()?.layout?.()??null,updateHostLayoutAttributes=g=>{const A=getHostLayout();A?.flexModel?.doAction&&"function"==typeof A.model&&A.flexModel.doAction({type:"FlexLayout_UpdateModelAttributes",data:{json:{...A.model()?.global??{},...g}}})},extractLegacyRuntimeConfiguredDefences=()=>normalizeConfiguredDefenceList(globalThis.nexGui?.defences),extractNexSysConfiguredDefences=()=>{const g=globalThis.nexSys?.defPrios,A=globalThis.nexSys?.defs;if("[object Object]"!==Object.prototype.toString.call(g)||"[object Object]"!==Object.prototype.toString.call(A))return[];const I=Object.entries(g.keepup??{}).filter(([,g])=>Boolean(g)).map(([g])=>g).filter(g=>Boolean(A?.[g]?.prio)),C=Object.entries(g.static??{}).filter(([,g])=>Boolean(g)).map(([g])=>g).filter(g=>Boolean(A?.[g]?.prio));return normalizeConfiguredDefenceList([...I,...C])},resolveConfiguredDefences=()=>{const g=extractLegacyRuntimeConfiguredDefences();return g.length>0?g:extractNexSysConfiguredDefences()},extractActiveDefencesFromGmcpNode=g=>Array.isArray(g)?normalizeConfiguredDefenceList(g.map(extractDefenceName).filter(Boolean)):isRecord(g)?Array.isArray(g.defences)?extractActiveDefencesFromGmcpNode(g.defences):normalizeConfiguredDefenceList(Object.entries(g).map(([g,A])=>extractDefenceName(A)??g)):[],extractGmcpActiveDefences=()=>normalizeConfiguredDefenceList([...extractActiveDefencesFromGmcpNode(globalThis.GMCP?.Defences),...extractActiveDefencesFromGmcpNode(globalThis.GMCP?.Char?.Defences)]),extractNexSysActiveDefences=(g=[])=>{const A=globalThis.nexSys?.api?.defs?.have;return"function"!=typeof A?[]:normalizeConfiguredDefenceList(g).filter(g=>{try{return Boolean(A(g))}catch{return!1}})},resolveActiveDefences=(g=[])=>normalizeConfiguredDefenceList([...extractGmcpActiveDefences(),...extractNexSysActiveDefences(g)]),createNexusAdapter=({playerRelationships:g}={})=>{const A=new Map;return assertAdapterContract({send:A=>(g?.trackRelationshipCommand?.(A),nexusclient.send_commands(A)),sendGmcp:(g,A)=>nexusclient.datahandler().send_GMCP(g,A),getVariable:g=>nexusclient.variables().vars?.[g],setVariable:(g,A)=>{const I=nexusclient.variables();I.vars??={},I.vars[g]=A},getTarget:()=>null,setTarget:g=>{nexusclient.setTarget(g)},notice:(g,A)=>{if("function"==typeof nexusclient.add_html_line)return void nexusclient.add_html_line(renderNoticeHtml(g,A));const I=A&&"object"==typeof A?A.style:A;"function"==typeof nexusclient.writeLine&&nexusclient.writeLine(g,I)},displayHtmlLine:g=>{"function"==typeof nexusclient.add_html_line&&nexusclient.add_html_line(String(g))},getHostSettings,setHostSetting:(g,A)=>{getHostSettings()[g]=A},getHostLayoutSnapshot:()=>getHostLayout()?.model?.()?.global??{},updateHostLayoutAttributes,focusInput:()=>{nexusclient.focusInput?.()},getConfiguredDefences:resolveConfiguredDefences,getActiveDefences:resolveActiveDefences,gagCurrentBlock:()=>nexusclient.current_block?.forEach(g=>g.gag=!0),on:(g,I,C)=>{A.has(g)||A.set(g,new Map);const e=A.get(g),t=null!=C?.id?C:{...C,id:createDefaultListenerId(g,e)},n=eventStream.registerEvent(g,I,t);return A.get(g).set(n,I),()=>{eventStream.removeListener(g,n),removeTrackedHandler(A,g,n)}},off:(g,I)=>{eventStream.removeListener(g,I),removeTrackedHandler(A,g,I)},destroy:()=>{for(const[g,I]of A.entries())for(const A of I.keys())eventStream.removeListener(g,A);A.clear()}})},J=Object.freeze({"(hidden)":"orange","(none)":"orange",ashtan:"#990099",cyrene:"#009999",eleusis:"#00e600",hashan:"#999900",mhaldor:"#e60000",targossas:"#ffffff",garden:"yellow",underworld:"tomato"}),normalizePlayerCityKey=g=>{if(!isNonEmptyString(g))return"";const A=g.trim().toLowerCase();return"(hidden)"===A||"(none)"===A?A:A.replace(/\(.+?\)/g,"").replace(/,.*$/g,"").trim()},getPlayerCityColor=(g,A="orange")=>{const I=normalizePlayerCityKey(g);return I?J[I]??A:A},resolveRoomPlayerName=(g,A)=>isNonEmptyString(g)?g.trim():isPlainObject(g)?isNonEmptyString(g.name)?g.name.trim():isNonEmptyString(g.fullname)?A?.resolvePlayerNameFromFullname?.(g.fullname)??"":"":"",buildFallbackPlayerProfile=(g,A)=>{if(!isPlainObject(g))return null;const I={loaded:!0,name:A};return isNonEmptyString(g.city)&&(I.city=normalizePlayerCityKey(g.city)),isNonEmptyString(g.class)&&(I.class=g.class.trim()),isNonEmptyString(g.fullname)&&(I.fullname=g.fullname.trim()),"number"==typeof g.level&&Number.isFinite(g.level)?I.level=g.level:isNonEmptyString(g.level)&&(I.level=g.level.trim()),Object.keys(I).length>2?I:null},mergePlayerPresentationProfile=(g,A)=>g?A?{...A,...g,loaded:!0===g.loaded||!0===A.loaded}:g:A,resolvePlayerPresentationColor=({name:g,profile:A,playerDirectory:I}={})=>!0===A?.loaded&&isNonEmptyString(A.city)?getPlayerCityColor(A.city):I?.getPlayerColor?.(N(g))??"grey",q=Object.freeze(["ashtan","cyrene","eleusis","hashan","mhaldor","targossas","(none)","(hidden)","underworld","garden"]),_='<span style="color:#888888">No players are visible to Quick Who.</span>',$="#aaaaaa",gg="#00B1D2",Ag="#888888",Ig='<span style="color:#666666">, </span>',Cg="padding:0 10px 0 0;vertical-align:top;white-space:nowrap;min-width:5ch",eg="#ffffff",tg="#ff0000",toProperCase=g=>String(g).replace(/\b[a-z]/g,g=>g.toUpperCase()),resolveQuickWhoCity=g=>{const A=normalizePlayerCityKey(g);return q.includes(A)?A:"(none)"},renderQuickWhoName=({name:g,color:A,ally:I,enemy:C,cityEnemy:e})=>{const t=`<span style="${e?`color:${A};font-style:italic`:`color:${A}`}">${escapeHtml(g)}</span>`;if(I||C){const g=`<span style="color:${I?eg:tg};font-weight:bold">`;return`${g}(</span>${t}${g})</span>`}return t},renderQuickWhoHtml=(g,{totalLine:A}={})=>{const I=new Map;let C=0;for(const n of Array.isArray(g)?g:[]){if(!isNonEmptyString(n?.name))continue;const g=resolveQuickWhoCity(n.city);I.has(g)||I.set(g,[]),I.get(g).push({name:n.name.trim(),color:getPlayerCityColor(g),ally:!0===n.ally,enemy:!0===n.enemy,cityEnemy:!0===n.cityEnemy}),C+=1}if(0===C)return _;const e=q.filter(g=>I.has(g)).map(g=>{const A=I.get(g),C=A.map(renderQuickWhoName).join(Ig);return`<tr><td style="color:${getPlayerCityColor(g)};font-weight:bold;padding:0 10px 0 0;vertical-align:top;white-space:nowrap">${escapeHtml(toProperCase(g))}</td><td style="color:${$};${Cg}">(${A.length})</td><td style="vertical-align:top">${C}</td></tr>`}).join(""),t=`text-align:left;color:${gg};padding:0 10px 3px 0;white-space:nowrap`;return`<table style="border-collapse:collapse"><thead><tr><th style="${t}">City</th><th style="${t};min-width:5ch">Count</th><th style="text-align:left;color:${gg};padding:0 0 3px 0;white-space:nowrap">Players</th></tr></thead><tbody>${e}<tr><td colspan="3" style="color:${Ag};padding-top:3px">${escapeHtml(isNonEmptyString(A)?A:`Total: ${C} player${1===C?"":"s"}`)}</td></tr></tbody></table>`},cloneProfileValue=g=>Array.isArray(g)||isPlainObject(g)?structuredClone(g):g,sanitizeProfilePatch=(g={})=>{if(!isPlainObject(g))return{};const A={};for(const[I,C]of Object.entries(g))"name"!==I&&"regex"!==I&&"user"!==I&&("loaded"!==I?"city"!==I?"fullname"!==I?"source"!==I?"loadedAt"!==I&&"remoteSyncedAt"!==I?null!=C&&("string"!=typeof C?("number"==typeof C||"boolean"==typeof C||Array.isArray(C)||isPlainObject(C))&&(A[I]=cloneProfileValue(C)):C.trim().length>0&&(A[I]=C.trim())):"number"==typeof C&&Number.isFinite(C)?A[I]=C:null===C&&(A[I]=null):"local"!==C&&"public"!==C&&"remote"!==C||(A.source=C):isNonEmptyString(C)&&(A.fullname=C.trim()):isNonEmptyString(C)&&(A.city=normalizePlayerCityKey(C)):A.loaded=!0===C);return A},resolveFetch$1=g=>"function"==typeof g?g:null,createPlayerDirectoryModel=({fetchImpl:g,now:A=()=>0}={})=>{const I=new Map,C=new Map,e=new Map,t=new Map,n=new Set;let a=0;const notifyListeners=()=>{a+=1,n.forEach(g=>{try{g()}catch{}})},upsertProfile=(g,A={})=>{const t=N(g);if(!t)return;const n={...I.get(t)??{name:t,city:"",fullname:"",loaded:!1,source:"local",loadedAt:null,remoteSyncedAt:null},...sanitizeProfilePatch(A),name:t};I.set(t,n),e.set(normalizeLookupKey(t),t),isNonEmptyString(n.fullname)&&C.set(n.fullname.trim(),t),notifyListeners()},resolveStoredName=g=>{const A=N(g);return A?I.has(A)?A:e.get(normalizeLookupKey(A))??A:""},getStoredProfileByNormalizedName=g=>g&&I.has(g)?I.get(g)??null:null,getPlayerProfile=g=>{const A=getStoredProfileByNormalizedName(resolveStoredName(g));return A?{...A}:null},fetchCharacterProfile=async I=>{const C=N(I),e=resolveStoredName(I),n=normalizeLookupKey(I);if(!C)return null;if(t.has(n))return t.get(n);const a=resolveFetch$1(g);if("function"!=typeof a)return e?getPlayerProfile(e):null;const r=(async()=>{try{const g=await a(`https://api.achaea.com/characters/${C.toLowerCase()}.json`,{cache:"no-store"});if(!g.ok)return e?getPlayerProfile(e):null;const I=await g.json(),t=resolveStoredName(I?.name??C);return upsertProfile(t,{...I,loaded:!0,source:"public",loadedAt:A()}),getPlayerProfile(t)}catch{return e?getPlayerProfile(e):null}finally{t.delete(n)}})();return t.set(n,r),r},refreshPlayerProfile=async g=>{const A=await fetchCharacterProfile(g);if(A)return A;const I=resolveStoredName(g);return I?getPlayerProfile(I):null},subscribePlayerDirectory=g=>(n.add(g),()=>{n.delete(g)}),rememberPlayerStatus=({name:g,city:A,fullname:I,...C}={})=>{const e=N(g);e&&upsertProfile(e,{...C,name:e,city:A,fullname:I,loaded:!0})},rememberChannelPlayers=g=>{Array.isArray(g)&&g.forEach(g=>{const A=N(g?.name);A&&(upsertProfile(A,{fullname:g?.fullname}),I.get(A)?.loaded||fetchCharacterProfile(A))})},rememberRoomPlayers=g=>{Array.isArray(g)&&g.forEach(g=>{const A=N(g?.name??g);A&&(upsertProfile(A,{fullname:g?.fullname}),I.get(A)?.loaded||fetchCharacterProfile(A))})},resolvePlayerNameFromFullname=g=>{if(!isNonEmptyString(g))return"";const A=g.trim();return C.get(A)||N(A.split(/\s+/).at(-1))},getPlayerColorByNormalizedName=g=>{const A=getStoredProfileByNormalizedName(g);return A?.loaded&&A.city?getPlayerCityColor(A.city):"grey"},getPlayerColor=g=>getPlayerColorByNormalizedName(resolveStoredName(g)),resetPlayerDirectory=()=>{I.clear(),C.clear(),e.clear(),t.clear(),notifyListeners()},hydrateFromCacheEntries=g=>{Array.isArray(g)&&g.forEach(g=>{const A=N(g?.name);A&&upsertProfile(A,{...g,loaded:!0})})},hydrateFromRemoteEntries=g=>{if(!Array.isArray(g))return;const I=A();g.forEach(g=>{const A=N(g?.name);A&&upsertProfile(A,{...g,loaded:!0,source:"remote",remoteSyncedAt:I})})},getAllPlayerProfiles=()=>Array.from(I.values()).map(g=>({...g})),getKnownPlayerNames=()=>Array.from(I.keys()),destroy=()=>{I.clear(),C.clear(),e.clear(),t.clear(),n.clear()};return Object.freeze({getAllPlayerProfiles,getKnownPlayerNames,getPlayerColor,getPlayerColorByNormalizedName,getPlayerProfile,getVersion:()=>a,hydrateFromCacheEntries,hydrateFromRemoteEntries,refreshPlayerProfile,rememberChannelPlayers,rememberPlayerStatus,rememberRoomPlayers,resetPlayerDirectory,resolvePlayerNameFromFullname,subscribePlayerDirectory,destroy})},ng=createPlayerDirectoryModel(),getDefaultPlayerDirectoryModel=()=>ng,getPlayerProfile=g=>ng.getPlayerProfile(g),updateSetMembership=(g,A,I)=>{if(!A)return!1;const C=g.has(A);return I&&!C?(g.add(A),!0):!(I||!C||(g.delete(A),0))},normalizeNames=g=>Array.isArray(g)?new Set(g.map(g=>N(g)).filter(Boolean)):new Set,replaceSetContents=(g,A)=>{const I=normalizeNames(A);let C=!1;return[...g].forEach(A=>{I.has(A)||(g.delete(A),C=!0)}),I.forEach(A=>{g.has(A)||(g.add(A),C=!0)}),C},createPlayerRelationshipsModel=()=>{const g=new Set,A=new Set,I=new Set,C=new Set;let e=0;const notifyListeners=()=>{e+=1,C.forEach(g=>{try{g()}catch{}})},subscribePlayerRelationships=g=>(C.add(g),()=>{C.delete(g)}),rememberEnemyPlayer=I=>{const C=N(I),e=updateSetMembership(g,C,!0),t=updateSetMembership(A,C,!1);(e||t)&¬ifyListeners()},rememberAllyPlayer=I=>{const C=N(I),e=updateSetMembership(A,C,!0),t=updateSetMembership(g,C,!1);(e||t)&¬ifyListeners()},forgetEnemyPlayer=A=>{updateSetMembership(g,N(A),!1)&¬ifyListeners()},forgetAllyPlayer=g=>{updateSetMembership(A,N(g),!1)&¬ifyListeners()},rememberCityEnemyPlayer=g=>{updateSetMembership(I,N(g),!0)&¬ifyListeners()},isEnemyPlayerByNormalizedName=A=>g.has(A),isAllyPlayerByNormalizedName=g=>A.has(g),isCityEnemyPlayerByNormalizedName=g=>I.has(g),isEnemyPlayer=g=>isEnemyPlayerByNormalizedName(N(g)),isAllyPlayer=g=>isAllyPlayerByNormalizedName(N(g)),isCityEnemyPlayer=g=>isCityEnemyPlayerByNormalizedName(N(g)),replaceEnemyPlayers=I=>{const C=normalizeNames(I);let e=replaceSetContents(g,[...C]);C.forEach(g=>{e=updateSetMembership(A,g,!1)||e}),e&¬ifyListeners()},replaceAllyPlayers=I=>{const C=normalizeNames(I);let e=replaceSetContents(A,[...C]);C.forEach(A=>{e=updateSetMembership(g,A,!1)||e}),e&¬ifyListeners()},replaceCityEnemyPlayers=g=>{replaceSetContents(I,g)&¬ifyListeners()},trackRelationshipCommand=g=>{if(!isNonEmptyString(g))return;const A=g.trim(),I=A.match(/^enemy\s+(.+)$/i);if(I)return void rememberEnemyPlayer(I[1]);const C=A.match(/^ally\s+(.+)$/i);if(C)return void rememberAllyPlayer(C[1]);const e=A.match(/^city enemy\s+(.+)$/i);e&&rememberCityEnemyPlayer(e[1])},resetPlayerRelationships=()=>{g.clear(),A.clear(),I.clear(),notifyListeners()},destroy=()=>{g.clear(),A.clear(),I.clear(),C.clear()};return Object.freeze({forgetAllyPlayer,forgetEnemyPlayer,getVersion:()=>e,isAllyPlayer,isAllyPlayerByNormalizedName,isCityEnemyPlayer,isCityEnemyPlayerByNormalizedName,isEnemyPlayer,isEnemyPlayerByNormalizedName,rememberAllyPlayer,rememberCityEnemyPlayer,rememberEnemyPlayer,replaceAllyPlayers,replaceCityEnemyPlayers,replaceEnemyPlayers,resetPlayerRelationships,subscribePlayerRelationships,trackRelationshipCommand,destroy})},ag=createPlayerRelationshipsModel(),getDefaultPlayerRelationshipsModel=()=>ag,rg=25,cloneDiagnosticValue=g=>Array.isArray(g)?g.map(g=>cloneDiagnosticValue(g)):isPlainObject(g)?Object.fromEntries(Object.entries(g).map(([g,A])=>[g,cloneDiagnosticValue(A)])):g,toPublicEntry=({_signature:g,...A})=>cloneDiagnosticValue(A),buildSignature=({channel:g,action:A,status:I,name:C=null,detail:e=null})=>JSON.stringify([g,A,I,C,e]),createPlayerDirectoryDiagnosticsModel=({historyLimit:g=rg,now:A=()=>0}={})=>{let I=[],C={};const recordPlayerDirectoryDiagnostic=({channel:e,action:t,status:n,name:a=null,detail:r=null})=>{const o=buildSignature({channel:e,action:t,status:n,name:a,detail:r}),i=A(),l=I.at(-1);if(l?._signature===o)return l.at=i,l.count+=1,void(C[e]=toPublicEntry(l));I.push({at:i,channel:e,action:t,status:n,...a?{name:a}:{},...null==r?{}:{detail:cloneDiagnosticValue(r)},count:1,_signature:o}),I.length>g&&I.splice(0,I.length-g),C[e]=toPublicEntry(I.at(-1))},getPlayerDirectoryDiagnosticsSnapshot=()=>({latest:cloneDiagnosticValue(C),history:I.map(g=>toPublicEntry(g))}),resetPlayerDirectoryDiagnostics=()=>{I=[],C={}};return Object.freeze({getPlayerDirectoryDiagnosticsSnapshot,recordPlayerDirectoryDiagnostic,resetPlayerDirectoryDiagnostics,destroy:resetPlayerDirectoryDiagnostics})},og=createPlayerDirectoryDiagnosticsModel(),getDefaultPlayerDirectoryDiagnosticsModel=()=>og,recordPlayerDirectoryDiagnostic=g=>og.recordPlayerDirectoryDiagnostic(g),toInt=g=>{if("number"==typeof g)return Number.isFinite(g)?Math.trunc(g):null;if("string"!=typeof g)return null;const A=g.trim().replace(/,/g,"").replace(/(\d)\s*[kK]\b/g,"$1000").replace(/(\d)\s*[mM]\b/g,"$1000000");if(!A)return null;const I=Number.parseInt(A,10);return Number.isNaN(I)?null:I},ig=C.z.preprocess(g=>"string"==typeof g?g.trim():"",C.z.string()),lg=C.z.preprocess(toInt,C.z.number().int().nullable()),sg=C.z.object({name:C.z.preprocess(g=>"string"==typeof g?g.trim():"",C.z.string().min(1)),fullname:ig,city:ig,house:ig,class:ig,level:lg,mob_kills:lg,player_kills:lg,xp_rank:lg,explorer_rank:lg,user:C.z.string().trim().min(1).optional()}),cg=Object.freeze({DISABLED:"disabled",OK:"ok",UNAVAILABLE:"unavailable",REJECTED:"rejected"}),httpStatusToRemoteStatus=g=>401===g||403===g?cg.REJECTED:g>=500||0===g?cg.UNAVAILABLE:g>=200&&g<300?cg.OK:cg.UNAVAILABLE,createNullRemotePlayerService=()=>({checkAvailability:async()=>cg.DISABLED,hydrateDirectory:async()=>({ok:!1,remoteStatus:cg.DISABLED}),upsertProfile:async()=>({ok:!1,remoteStatus:cg.DISABLED}),deleteProfile:async()=>({ok:!1,remoteStatus:cg.DISABLED}),queryCharacters:async()=>[]}),createLambdaRemotePlayerService=({apiUrl:g,apiKey:A="",fetchFn:I=null}={})=>{if("string"!=typeof g||!g.trim())return createNullRemotePlayerService();const C=g.trim(),e="function"==typeof I?I:null,call=async({method:g,params:I={},body:t})=>{const n=new URLSearchParams;for(const[A,C]of Object.entries(I))void 0!==C&&n.set(A,String(C));const a=n.toString()?`${C}?${n}`:C,r={"Content-Type":"application/json"};A&&(r["x-api-key"]=A);const o={method:g,headers:r};void 0!==t&&(o.body=JSON.stringify(t));const i=await e(a,o);return{status:i.status,ok:i.ok,response:i}};return{checkAvailability:async()=>{if("function"!=typeof e)return cg.UNAVAILABLE;try{const{status:g}=await call({method:"GET",params:{check:"auth"}});return httpStatusToRemoteStatus(g)}catch{return cg.UNAVAILABLE}},hydrateDirectory:async()=>{if("function"!=typeof e)return{ok:!1,remoteStatus:cg.UNAVAILABLE};try{const{status:g,ok:A,response:I}=await call({method:"GET"}),C=httpStatusToRemoteStatus(g);if(!A)return{ok:!1,remoteStatus:C};const e=await I.json();return{ok:!0,entries:Array.isArray(e)?e:[],remoteStatus:cg.OK}}catch{return{ok:!1,remoteStatus:cg.UNAVAILABLE}}},upsertProfile:async g=>{if("function"!=typeof e)return{ok:!1,remoteStatus:cg.UNAVAILABLE};const A=sg.safeParse(g);if(!A.success)return{ok:!1,remoteStatus:cg.REJECTED};try{const{status:g,ok:I}=await call({method:"POST",body:A.data});return{ok:I,remoteStatus:httpStatusToRemoteStatus(g)}}catch{return{ok:!1,remoteStatus:cg.UNAVAILABLE}}},deleteProfile:async g=>{if("function"!=typeof e)return{ok:!1,remoteStatus:cg.UNAVAILABLE};try{const{status:A,ok:I}=await call({method:"DELETE",params:{name:g}});return{ok:I,remoteStatus:httpStatusToRemoteStatus(A)}}catch{return{ok:!1,remoteStatus:cg.UNAVAILABLE}}},queryCharacters:async g=>{if("function"!=typeof e)return[];if(!g||"object"!=typeof g||Array.isArray(g)||0===Object.keys(g).length)return[];try{const{ok:A,response:I}=await call({method:"GET",params:{filter:JSON.stringify(g)}});if(!A)return[];const C=await I.json();return Array.isArray(C)?C:[]}catch{return[]}}}},ug="playerDirectory",dg="function"==typeof queueMicrotask?queueMicrotask:g=>Promise.resolve().then(g),resolvePlayerDirectory$1=g=>g??getDefaultPlayerDirectoryModel(),resolveDiagnostics=g=>g??getDefaultPlayerDirectoryDiagnosticsModel(),resolveCacheReader=(g,A)=>"function"==typeof g?g:"function"==typeof g?.readCache?g.readCache.bind(g):"function"==typeof A?A:null,resolveCacheWriter=(g,A)=>"function"==typeof g?g:"function"==typeof g?.writeCache?g.writeCache.bind(g):"function"==typeof A?A:null,parseStoredSnapshot=g=>Array.isArray(g)?g:null,createSnapshotSaver=(g,A)=>I=>{"function"==typeof I&&I(A,g.getAllPlayerProfiles().filter(g=>g.loaded&&(g.city||g.fullname)))},createPlayerDirectoryLifecycle=({playerDirectory:g,diagnostics:A,readCache:I,writeCache:C,storageKey:e=ug}={})=>{const t=resolvePlayerDirectory$1(g),n=resolveDiagnostics(A),a=createSnapshotSaver(t,e);let r=!1,o=null,i=!1,l=!1;const recordDiagnostic=g=>n.recordPlayerDirectoryDiagnostic(g),isDirectorySeeded=()=>r,resetSeededFlag=()=>{r=!1},warmDirectoryFromCache=g=>{const A=resolveCacheReader(g,I);try{const g=A?.(e),I=parseStoredSnapshot(g);null!==I&&I.length>0&&t.hydrateFromCacheEntries(I)}catch{}finally{r=!0}},saveDirectorySnapshot=g=>{a(resolveCacheWriter(g,C))},subscribePersistence=g=>{const A=resolveCacheWriter(g,C);if(o?.(),o=null,i=!1,l=!0,"function"!=typeof A||"function"!=typeof t.subscribePlayerDirectory)return l=!1,()=>{};const scheduleSave=()=>{l&&!i&&(i=!0,dg(()=>{i=!1,l&&saveDirectorySnapshot(A)}))};return o=t.subscribePlayerDirectory(scheduleSave),()=>{l=!1,o?.(),o=null}},refreshDirectoryFromRemote=async(g,A)=>{try{const I=await g.hydrateDirectory(),C=Array.isArray(I?.entries)?I.entries.length:0;recordDiagnostic({channel:"remote",action:"hydrateDirectory",status:I?.remoteStatus??cg.UNAVAILABLE,detail:{ok:!0===I?.ok,entryCount:C}}),I.ok&&Array.isArray(I.entries)&&I.entries.length>0&&(t.hydrateFromRemoteEntries(I.entries),saveDirectorySnapshot(A))}catch{recordDiagnostic({channel:"remote",action:"hydrateDirectory",status:cg.UNAVAILABLE,detail:{ok:!1,exception:!0}})}},reset=()=>{r=!1,i=!1,l=!1,o?.(),o=null,n.resetPlayerDirectoryDiagnostics?.()};return Object.freeze({destroy:reset,isDirectorySeeded,refreshDirectoryFromRemote,reset,resetSeededFlag,saveDirectorySnapshot,subscribePersistence,warmDirectoryFromCache})},mg=createPlayerDirectoryLifecycle(),isDirectorySeeded=()=>mg.isDirectorySeeded(),ACHAEA_CHARACTER_URL=g=>`https://api.achaea.com/characters/${g.toLowerCase()}.json`,pg=Object.freeze({OK:"ok",AUTHORITATIVE_FAILURE:"authoritative_failure",TRANSIENT_FAILURE:"transient_failure"}),fetchPublicProfileForSync=async(g,{fetchFn:A=null}={})=>{if("function"!=typeof A)return{outcome:pg.TRANSIENT_FAILURE,data:null};try{const I=await A(ACHAEA_CHARACTER_URL(g),{method:"GET",cache:"no-store"});if(!I.ok)return{outcome:I.status>=500?pg.TRANSIENT_FAILURE:pg.AUTHORITATIVE_FAILURE,data:null};const C=await I.json();return{outcome:pg.OK,data:C}}catch{return{outcome:pg.TRANSIENT_FAILURE,data:null}}},normalizeCrowdsourceCity=(g,A,{getPlayerProfile:I=getPlayerProfile}={})=>{if("Romeo"===A||"Juliet"===A)return"garden";const C="string"==typeof g?.city?g.city:"";if(""===C)return"garden";if("(hidden)"===C.toLowerCase()){const g=I(A)?.city??"";return g&&"(hidden)"!==g?g:"(none)"}return C},createCrowdsourceSyncHandler=({remoteService:g,getSelfName:A=()=>null,getPlayerProfile:I=getPlayerProfile,isSeeded:C=isDirectorySeeded,recordDiagnostic:e=recordPlayerDirectoryDiagnostic,fetchFn:t=null,fetchProfileForSync:n=g=>fetchPublicProfileForSync(g,{fetchFn:t}),maxConcurrent:a=3})=>{let r=[];const o=new Set,i=[],processOneName=async C=>{const t=A();if(t&&C===t)return;const{outcome:a,data:r}=await n(C);if(a===pg.OK&&r){const A=normalizeCrowdsourceCity(r,C,{getPlayerProfile:I}),n={...r,city:A};t&&(n.user=t);const a=await g.upsertProfile(n);return void(a?.ok||e({channel:"crowdsource",action:"upsertProfile",status:a?.remoteStatus??"unavailable",name:C}))}if(a===pg.AUTHORITATIVE_FAILURE){e({channel:"crowdsource",action:"publicProfileFetch",status:pg.AUTHORITATIVE_FAILURE,name:C});const A=await g.deleteProfile(C);return void e({channel:"crowdsource",action:"deleteProfile",status:A?.remoteStatus??"unavailable",name:C,detail:{ok:!0===A?.ok}})}e({channel:"crowdsource",action:"publicProfileFetch",status:pg.TRANSIENT_FAILURE,name:C})},drainQueue=()=>{for(;o.size<a&&i.length>0;){const g=i.shift();g&&!o.has(g)&&(o.add(g),processOneName(g).finally(()=>{o.delete(g),drainQueue()}))}},enqueue=g=>{for(const A of g)o.has(A)||i.includes(A)||i.push(A);drainQueue()};return g=>{if(!C())return;if(!Array.isArray(g))return;const A=g.map(g=>"string"==typeof g?.name?g.name.trim():"").filter(Boolean),I=A.filter(g=>!r.includes(g));r=[...A],I.length>0&&enqueue(I)}},isPresent=g=>null!=g&&String(g).length>0,classAttribute=g=>isPresent(g)?` class="${escapeHtml(g)}"`:"",styleAttribute$1=(g={})=>{const A=Object.entries(g??{}).filter(([,g])=>isPresent(g)).map(([g,A])=>`${escapeHtml(g)}:${escapeHtml(A)}`).join(";");return A?` style="${A};"`:""},titleAttribute=g=>isPresent(g)?` title="${escapeHtml(g)}"`:"",span=(g,{className:A=null,style:I=null}={})=>`<span${classAttribute(A)}${styleAttribute$1(I)}>${g}</span>`,textNode=g=>({kind:"text",text:g}),classTextNode=(g,A)=>({kind:"class-text",className:g,text:A}),styledTextNode=(g,{className:A=null,fg:I=null,bg:C=null}={})=>({kind:"styled-text",className:A,text:g,fg:I,bg:C}),relationshipNameNode=g=>({kind:"relationship-name",descriptor:g}),iconBandingNode=({icon:g,colors:A,size:I,children:C})=>({kind:"icon-banding",icon:g,colors:A,size:I,children:C}),hg=Object.freeze({className:"ng-target-format",borderColor:"rgb(255, 0, 0)",boxShadow:"inset 0 0 0 1px rgb(255, 0, 0)",padding:"0 2px"}),yg=Object.freeze({ally:Object.freeze({className:"ng-brkt ng-brkt-ally",color:"#ffffff",open:"(",close:")"}),enemy:Object.freeze({className:"ng-brkt ng-brkt-enemy",color:"#ff0000",open:"(",close:")"})}),createRelationshipNameDescriptor=(g,A={})=>{if(!isNonEmptyString(g))return null;const I={family:"inline-name",text:g.trim(),color:A.color??"grey",italic:Boolean(A.isCityEnemy),target:Boolean(A.isTarget),bracket:null,targetStyle:hg};return A.isAlly?I.bracket=yg.ally:A.isEnemy&&(I.bracket=yg.enemy),I},createPlayerRelationshipDescriptor=(g,A={})=>{if(!isNonEmptyString(g))return null;const I=g.trim(),C=isNonEmptyString(A.targetName)?A.targetName.trim():"",e=Boolean(A.isAlly),t=Boolean(A.isEnemy),n=Boolean(A.isCityEnemy),a=A.isTarget??(!1!==A.targetFormatting&&C.length>0&&C===I);return createRelationshipNameDescriptor(I,{color:A.color??"grey",isAlly:e,isEnemy:t,isCityEnemy:n,isTarget:a})},renderBracket=(g,A)=>`<span class="${g.className}"${styleAttribute$1({color:g.color,"font-weight":"bold"})}>${escapeHtml(A)}</span>`,renderRelationshipNameHtml=g=>{if(!g)return"";const A=`<span${styleAttribute$1({color:g.color,"font-style":g.italic?"italic":null})}>${escapeHtml(g.text)}</span>`,I=g.bracket?[renderBracket(g.bracket,g.bracket.open),A,renderBracket(g.bracket,g.bracket.close)].join(""):A;return g.target?`<span class="${g.targetStyle.className}"${styleAttribute$1({"box-shadow":g.targetStyle.boxShadow??`inset 0 0 0 1px ${g.targetStyle.borderColor}`,padding:g.targetStyle.padding})}>${I}</span>`:I},fg=Object.freeze({original:" ".repeat(8),adjusted:" ".repeat(6)}),bg=new WeakMap,isAsciiUppercase=g=>{if("string"!=typeof g||0===g.length)return!1;const A=g.charCodeAt(0);return A>=65&&A<=90},isNameCharacter=g=>{if("string"!=typeof g||0===g.length)return!1;if("'"===g||"-"===g)return!0;const A=g.charCodeAt(0);return A>=65&&A<=90||A>=97&&A<=122},extractUniqueWords=g=>{const A="string"==typeof g?g.match(/[A-Z][A-Za-z'-]*/g):null;return A?[...new Set(A)]:[]},resolveDescriptorFactory=({createDescriptor:g,relationshipFormatter:A}={})=>"function"==typeof g?g:"function"==typeof A?A:"function"==typeof A?.createDescriptor?A.createDescriptor:null,resolveCompiledHighlighter=g=>{const A=g?.compiledHighlighter;return A&&Array.isArray(A.namesByLength)&&A.entries instanceof Map&&0!==A.entries.size?A:null},getCompiledInitialCharacters=g=>{const A=bg.get(g);if(A)return A;const I=new Set;return g.entries.forEach((g,A)=>{"string"==typeof A&&A.length>0&&I.add(A.charAt(0))}),bg.set(g,I),I},hasPotentialCompiledMatch=(g,A)=>{if("string"!=typeof g||0===g.length)return!1;const I=getCompiledInitialCharacters(A);for(let C=0;C<g.length;C+=1)if(I.has(g.charAt(C)))return!0;return!1},resolvePossessiveBaseName=(g,A)=>{if("string"!=typeof g||!(A instanceof Map))return null;const I=g.endsWith("'s")||g.endsWith("'S")?2:g.endsWith("'")?1:0;if(0===I)return null;const C=g.slice(0,g.length-I);return A.has(C)?C:null},applyCompiledHighlighting=(g,A,I)=>{if(!hasPotentialCompiledMatch(g.text(),A))return!1;const C=g.formatted();if("string"!=typeof C||0===C.length)return!1;let e=0,t=0,n=null,a=!1;for(;e<C.length;){const g=C.charAt(e);if("<"===g){const g=C.indexOf(">",e+1);if(-1===g)break;e=g+1;continue}if(!isAsciiUppercase(g)){e+=1;continue}let r=e+1;for(;r<C.length&&isNameCharacter(C.charAt(r));)r+=1;const o=C.slice(e,r),i=A.entries.has(o)?o:resolvePossessiveBaseName(o,A.entries),l=i?A.entries.get(i):null;l?(null===n?n=[C.slice(0,e)]:n.push(C.slice(t,e)),n.push(l.html),t=e+i.length,e=r,I&&l.adjustsMonospacePadding&&(a=!0)):e=r}if(null===n)return!1;let r=n.join("")+C.slice(t);return a&&(r=r.replace(fg.original,fg.adjusted)),g.formatted=()=>r,!0},buildReplacementMapFromDescriptors=(g,A)=>{const I=new Map;return g.forEach(g=>{const C=A(g);C&&"grey"!==C.color&&I.set(g,{html:renderRelationshipNameHtml(C),bracketed:Boolean(C.bracket),adjustsMonospacePadding:Boolean(C.bracket)})}),I},applyInlineNameHighlighting=(g,{createDescriptor:A,relationshipFormatter:I,monospace:C=!1}={})=>{if(!g||g.nexSkillReplacement||"function"!=typeof g.text||"function"!=typeof g.formatted)return!1;const e=resolveCompiledHighlighter(I);if(e)return applyCompiledHighlighting(g,e,C);const t=resolveDescriptorFactory({createDescriptor:A,relationshipFormatter:I});if(!t)return!1;const n=buildReplacementMapFromDescriptors(extractUniqueWords(g.text()),t);if(0===n.size)return!1;const a=g.formatted();if("string"!=typeof a||0===a.length)return!1;let r=a,o=!1;for(const i of[...n.keys()].sort((g,A)=>A.length-g.length)){const g=n.get(i);g&&r.includes(i)&&(r=r.split(i).join(g.html),C&&g.adjustsMonospacePadding&&(r=r.replace(fg.original,fg.adjusted)),o=!0)}return!!o&&(g.formatted=()=>r,!0)},sortNamesByLengthDesc=(g,A)=>A.length-g.length,normalizeKnownNames=g=>{if(!Array.isArray(g))return[];const A=new Set,I=[];return g.forEach(g=>{const C=N(g);C&&!A.has(C)&&(A.add(C),I.push(C))}),I},createCompiledInlineHighlighter=({knownNames:g=[],createDescriptor:A}={})=>{const I=new Map,C=normalizeKnownNames(g);return"function"!=typeof A||0===C.length?Object.freeze({namesByLength:Object.freeze([]),entries:I}):(C.forEach(g=>{const C=A(g);C&&"grey"!==C.color&&I.set(g,Object.freeze({html:renderRelationshipNameHtml(C),bracketed:Boolean(C.bracket),adjustsMonospacePadding:Boolean(C.bracket)}))}),Object.freeze({namesByLength:Object.freeze(C.filter(g=>I.has(g)).sort(sortNamesByLengthDesc)),entries:I}))},callPredicate=(g,A)=>{if("function"!=typeof g)return!1;try{return Boolean(g(A))}catch{return!1}},callColorResolver=(g,A)=>{if("function"!=typeof g)return"grey";try{return g(A)??"grey"}catch{return"grey"}},readKnownNames=g=>{if(Array.isArray(g))return g;if("function"!=typeof g)return[];try{const A=g();return Array.isArray(A)?A:[]}catch{return[]}},createRelationshipNameFormatter=(g={})=>{const A=N(g.targetName),I=!1!==g.allyEnemyFormatting,C=!1!==g.targetFormatting,e=g.getPlayerColorByNormalizedName??g.getPlayerColor,t=g.isAllyPlayerByNormalizedName??g.isAllyPlayer,n=g.isEnemyPlayerByNormalizedName??g.isEnemyPlayer,a=g.isCityEnemyPlayerByNormalizedName??g.isCityEnemyPlayer,r=Array.isArray(g.knownPlayerNames)||"function"==typeof g.getKnownPlayerNames,o=readKnownNames(g.knownPlayerNames??g.getKnownPlayerNames),i=new Set(o.map(N).filter(Boolean)),createDescriptor=(g,o={})=>{const l=N(g),s=N(o.text)||l;if(!l||!s)return null;const c=o.isAlly??(I&&callPredicate(t,l)),u=o.isEnemy??callPredicate(n,l),d=o.isCityEnemy??callPredicate(a,l),m=o.isTarget??(C&&(!r||i.has(l))&&A.length>0&&A===l);return createPlayerRelationshipDescriptor(s,{color:o.color??callColorResolver(e,l),isAlly:c,isEnemy:u,isCityEnemy:d,isTarget:m})},l=createCompiledInlineHighlighter({knownNames:o,createDescriptor});return Object.freeze({compiledHighlighter:l,createDescriptor,renderHtml:(g,A={})=>renderRelationshipNameHtml(createDescriptor(g,A))})},getUiSettings$3=g=>g?.persistenceStore?.getAll?.()?.ui??{},getTargetState$1=g=>g?.stores?.target?.getState?.()??{},xg=Object.freeze(["allyEnemyFormatting","targetFormatting","targetName","playerDirectory","playerDirectoryVersion","playerRelationships","playerRelationshipsVersion"]),Eg=new WeakMap,vg=null,readModelVersion=g=>{if("function"!=typeof g?.getVersion)return null;try{return g.getVersion()}catch{return null}},createFormatterSignature=(g,A={})=>{const I=getUiSettings$3(g),C=getTargetState$1(g),e=A.playerDirectory??g?.playerDirectory??null,t=A.playerRelationships??g?.playerRelationships??null;return{allyEnemyFormatting:!1!==I.allyEnemyFormatting,targetFormatting:!1!==I.targetFormatting,targetName:N(A.targetName??(C.isPlayer?C.name:null)??null),playerDirectory:e,playerDirectoryVersion:readModelVersion(e),playerRelationships:t,playerRelationshipsVersion:readModelVersion(t)}},signaturesEqual$1=(g,A)=>null!==g&&null!==A&&xg.every(I=>Object.is(g[I],A[I])),readCachedFormatter=g=>g&&"object"==typeof g?Eg.get(g)??null:vg,writeCachedFormatter=(g,A)=>g&&"object"==typeof g?(Eg.set(g,A),A):(vg=A,A),createFormatterFromSignature=g=>{const{playerDirectory:A,playerRelationships:I}=g;return createRelationshipNameFormatter({allyEnemyFormatting:g.allyEnemyFormatting,targetFormatting:g.targetFormatting,targetName:g.targetName,getKnownPlayerNames:A?.getKnownPlayerNames?.bind(A),getPlayerColor:A?.getPlayerColor?.bind(A),getPlayerColorByNormalizedName:A?.getPlayerColorByNormalizedName?.bind(A),isAllyPlayer:I?.isAllyPlayer?.bind(I),isAllyPlayerByNormalizedName:I?.isAllyPlayerByNormalizedName?.bind(I),isEnemyPlayer:I?.isEnemyPlayer?.bind(I),isEnemyPlayerByNormalizedName:I?.isEnemyPlayerByNormalizedName?.bind(I),isCityEnemyPlayer:I?.isCityEnemyPlayer?.bind(I),isCityEnemyPlayerByNormalizedName:I?.isCityEnemyPlayerByNormalizedName?.bind(I)})},clearRelationshipNameFormatterCache=g=>{g&&"object"==typeof g?Eg.delete(g):(void 0===g&&(Eg=new WeakMap),vg=null)},createRelationshipNameFormatterFromContext=(g,A={})=>{const I=createFormatterSignature(g,A),C=readCachedFormatter(g);if(signaturesEqual$1(C?.signature??null,I))return C.formatter;const e=createFormatterFromSignature(I);return writeCachedFormatter(g,{signature:I,formatter:e}),e},applyContextInlineNameHighlighting=(g,{contextValue:A=null,monospace:I=!1}={})=>applyInlineNameHighlighting(g,{relationshipFormatter:createRelationshipNameFormatterFromContext(A),monospace:I}),highlightInlineNamesInText=(g,{contextValue:A=null}={})=>{const I={text:()=>g,formatted:()=>g};return applyContextInlineNameHighlighting(I,{contextValue:A})?{content:I.formatted(),isHtml:!0}:{content:g,isHtml:void 0}},Rg=deepFreeze([["a CRITICAL","2x"],["CRUSHING","4x"],["OBLITERATING","8x"],["ANNIHILATINGLY","16x"],["WORLD","32x"],["PLANE","64x"],["coalescence of power","MAYA"]]),wg=deepFreeze({"physical cutting":"#708090","physical blunt":"#708090",magical:"#FFFFFF",poison:"#9ACD32",psychic:"#663399",fire:"#8B0000",cold:"#87CEFA",electricity:"#FFD700",asphyxiation:"#D2B48C",raw:"#FFB6C1",unblockable:"#FFB6C1"}),Sg=deepFreeze({attack:"orange",battlerage:"yellow",affliction:"red"}),Mg=deepFreeze({attainment:"yellow",gear:"plum"}),Tg=deepFreeze({eat:{id:"eat",fg:"gold",text:"Eat: ",banding:["{","}"]},smoke:{id:"smoke",fg:"orchid",text:"Smoke: ",banding:["{","}"]},apply:{id:"apply",fg:"aquamarine",text:"Apply: ",banding:["{","}"]},sip:{id:"sip",fg:"HotPink",text:"Sip: ",banding:["{","}"]},focus:{id:"focus",fg:"BlueViolet",text:"Focus",banding:["{","}"]},tattoo:{id:"tattoo",fg:"cornflowerBlue",text:"Tattoo: ",banding:["||","||"]},shield:{id:"shield",fg:"cyan",text:" Shield ",banding:{icon:"shield-cross",colors:["cyan","goldenrod"],size:16}},rebounding:{id:"rebounding",fg:"white",text:" Rebounding ",banding:{icon:"shield-cross",colors:["white","goldenrod"],size:16}},prismatic:{id:"prismatic",fg:"yellow",text:" Prismatic ",banding:{icon:"shield-cross",colors:["goldenrod","white"],size:16}},tree:{id:"tree",fg:"lawngreen",text:" Tree ",banding:{icon:"tree",colors:["green","brown"],size:16}},npcslain:{id:"npcslain",fg:"red",text:" SLAIN ",banding:{icon:"tombstone",colors:["grey","white"],size:18}}}),Ng=deepFreeze({id:"default",fg:"grey",text:"Action",bg:"",banding:["[","]"]}),toDamageSlug$1=g=>g.toLowerCase().replace(/\s+/g,"-"),getSkillColor=g=>Mg[g]??"orange",getSkillClass=g=>g&&Mg[g]?`ng-skill-${g}`:"ng-skill-default",getUserActionDefinition=g=>Tg[g]??{...Ng,id:g},getUserActionClass=g=>g&&Tg[g]?`ng-action-${g}`:"ng-action-default",getDamageClass=g=>g&&void 0!==wg[g]?`ng-dmg-${toDamageSlug$1(g)}`:"ng-dmg-unknown",hpPercentToColor=g=>{if(null==g||!Number.isFinite(g))return"grey";const A=Math.max(0,Math.min(100,g)),I=1.2*A,C=(A<75?50:Math.abs(A-100)/2+25)/100,k=g=>(g+I/30)%12,e=1*Math.min(C,1-C),f=g=>C-e*Math.max(-1,Math.min(k(g)-3,Math.min(9-k(g),1))),toHex=g=>Math.round(255*g).toString(16).padStart(2,"0");return`#${toHex(f(0))}${toHex(f(8))}${toHex(f(4))}`},Gg="You",createSegment=(g,A=null,I=!1)=>({text:g,fg:A,bg:null,bold:I}),resolvePatternLength$1=g=>{const A=trimToEmpty(g?.matchType),I=g?.patterns?.[A];return Array.isArray(I)?I.length:0},createNameDescriptor=(g,{relationshipFormatter:A,selfName:I,selfText:C,targetName:e})=>{const t=trimToEmpty(g);return t?"self"===t||I&&t===I?createRelationshipNameDescriptor(C,{color:"lightpink",isTarget:e===t}):"function"==typeof A?.createDescriptor?A.createDescriptor(t,{text:t}):createRelationshipNameDescriptor(t,{color:"grey",isAlly:!1,isEnemy:!1,isCityEnemy:!1,isTarget:e===t}):null},createPreviewSegments=({actor:g,actionLabel:A,actionColor:I,target:C,info:e})=>{const t=[];if(g){const A=g.bracket?`${g.bracket.open}${g.text}${g.bracket.close}`:g.text;t.push(createSegment(A,g.color)),t.push(createSegment(" "))}if(isNonEmptyString(A)&&t.push(createSegment(A.trim(),I,!0)),C){t.push(createSegment(" "));const g=C.bracket?`${C.bracket.open}${C.text}${C.bracket.close}`:C.text;t.push(createSegment(g,C.color))}return isNonEmptyString(e)&&(t.push(createSegment(" ")),t.push(createSegment(`[${toDisplayName(e)}]`,"cadetblue"))),t},createReplacementDescriptor=(g,A,I={})=>{if("nexSkillMatch"!==g&&"nexSkillNpcMatch"!==g)return null;if(!A||"object"!=typeof A||Array.isArray(A))return null;const C=trimToEmpty(I.selfName),e=trimToEmpty(I.selfText)||Gg,t=trimToEmpty(I.targetName),n=I.relationshipFormatter,a="nexSkillNpcMatch"===g?"npc":"user",r="user"===a?getUserActionDefinition(A.id):null,o=createNameDescriptor(A.user,{relationshipFormatter:n,selfName:C,selfText:e,targetName:t}),i=createNameDescriptor(A.target,{relationshipFormatter:n,selfName:C,selfText:e,targetName:t}),l=trimToEmpty(A.fullName)||toDisplayName(A.skill||A.id),s="npc"===a?Array.isArray(A.tags)&&A.tags.length>0?A.tags.map(toDisplayName).join(", "):l:trimToEmpty(r?.text)||l,c="npc"===a?"red":r?.fg??getSkillColor(A.skill),u=createPreviewSegments({actor:o,actionLabel:s,actionColor:c,target:i,info:A.info}),d=u.map(g=>g.text).join(""),m=Math.max(resolvePatternLength$1(A)-1,0);return{family:"skill",eventName:g,buffer:"combat",variant:a,id:trimToEmpty(A.id),matchType:trimToEmpty(A.matchType),skill:{id:trimToEmpty(A.skill),name:l,color:getSkillColor(A.skill)},actor:o,target:i,tags:Array.isArray(A.tags)?A.tags.map(trimToEmpty).filter(Boolean):[],info:isNonEmptyString(A.info)?A.info.trim():null,userAction:r,hostMutation:{replaceCurrentLine:!0,companionLineCount:m,tooltipSource:"npc"===a&&Array.isArray(A.tags)&&A.tags.includes("damage")&&"self"===A.target?"health-lost":null},preview:{tag:"npc"===a?"«npc»":"[act]",tagColor:c,text:d,segments:u},metadata:{actionTypeColors:Sg,critLabels:Rg,damageColors:wg}}},kg=Object.freeze({fg:null,bg:null,bold:!1}),createPlainSegment=g=>({text:g,...kg}),extractName=g=>extractNamedValue(g),createStructuredLine=(g,A,I,C,e,t={})=>({type:"combat"===e?"combat":"system",buffer:e,segments:[createPlainSegment(C)],metadata:{event:g,tag:A,tagColor:I,details:t}}),pickDefined=(g,A=null)=>void 0===g?A:g,resolveSkillReplacementDetails=(g,A)=>{if(!isPlainObject(A))return null;const I=isPlainObject(A.sourcePayload)?A.sourcePayload:A,C=isPlainObject(A.replacement)?A.replacement:createReplacementDescriptor(g,I);return C?{replacement:C,context:A.context??A.replacementContext,crit:pickDefined(A.crit),damage:pickDefined(A.damage),healthLost:Array.isArray(A.healthLost)?A.healthLost:[],tooltip:pickDefined(A.tooltip),originalLine:pickDefined(A.originalLine),matchType:"string"==typeof A.matchType?A.matchType:C.matchType,actorId:"string"==typeof A.actorId?A.actorId:"string"==typeof I.user?I.user.trim():null,targetHpText:pickDefined(A.targetHpText),targetHpPercent:pickDefined(A.targetHpPercent),hpDeltaText:pickDefined(A.hpDeltaText),sourcePayload:I}:null},createSkillReplacementLine=(g,A)=>{const I=resolveSkillReplacementDetails(g,A);if(!I)return null;const{replacement:C}=I,e=C.preview??{};return{type:"replacement",buffer:"system"===C.buffer?"system":"combat",segments:Array.isArray(e.segments)?e.segments:[],metadata:{event:g,tag:"string"==typeof e.tag?e.tag:"",tagColor:"string"==typeof e.tagColor?e.tagColor:null,details:I}}},parsePercent$1=g=>{if(null==g)return null;const A=Number.parseInt(String(g).replace("%",""),10);return Number.isNaN(A)?null:A},extractTargetEventId=g=>{if(!isPlainObject(g))return null;const A=g.id??g.target;return"number"==typeof A&&Number.isFinite(A)?String(A):toTrimmedString(A)},extractTargetEventLabel=g=>toTrimmedString(g?.short_desc)??toTrimmedString(g?.name)??toTrimmedString(g?.text)??(extractTargetEventId(g)?`Target ${extractTargetEventId(g)}`:null),getTargetHpValue=g=>g?.hpperc??g?.hpPercent??g?.hp??null,hasNexsysTargetIdentityChange=g=>{const A=isPlainObject(g?.changedFields)?g.changedFields:null;return!A||["id","target","text","name","short_desc"].some(g=>Object.prototype.hasOwnProperty.call(A,g))},createTargetLine=(g,A,I)=>createStructuredLine(g,"[Target]","red",I,"combat",{id:extractTargetEventId(A),hpPercent:parsePercent$1(getTargetHpValue(A)),shortDescription:toTrimmedString(A?.short_desc)??toTrimmedString(A?.text)}),parseStreamEventLine=(g,A)=>{switch(g){case"Char.Defences.Add":{const I=extractName(A);return I?createStructuredLine(g,"+def","lawngreen",toDisplayName(I),"system",{name:I,direction:"gained",description:A&&"object"==typeof A&&!Array.isArray(A)?A.desc??null:null}):null}case"Char.Defences.Remove":{const I=extractName(A);return I?createStructuredLine(g,"-def","crimson",toDisplayName(I),"system",{name:I,direction:"lost"}):null}case"Char.Afflictions.Add":{const I=extractName(A);return I?createStructuredLine(g,"+aff","crimson",toDisplayName(I),"system",{name:I,direction:"gained",description:A&&"object"==typeof A&&!Array.isArray(A)?A.desc??null:null}):null}case"Char.Afflictions.Remove":{const I=extractName(A);return I?createStructuredLine(g,"-aff","lawngreen",toDisplayName(I),"system",{name:I,direction:"lost"}):null}case"nexsys4.system.target.changed":{if(!isPlainObject(A)||!hasNexsysTargetIdentityChange(A))return null;const I=extractTargetEventLabel(A);return I?createTargetLine(g,A,I):null}case"nexsys4.serverside.aff.priority.set":case"nexsys4.serverside.def.priority.set":{if(!isPlainObject(A))return null;const I="string"==typeof A.id&&A.id.trim().length>0?A.id.trim():null,C="number"==typeof A.priority&&Number.isFinite(A.priority)?A.priority:null;return I&&null!=C?createStructuredLine(g,`[Prio] ${C}`,"deepskyblue",toDisplayName(I),"system",{id:I,priority:C,accepted:!0===A.accepted,kind:g.includes(".aff.")?"affliction":"defence"}):null}case"nexSkillMatch":case"nexSkillNpcMatch":return createSkillReplacementLine(g,A);default:return null}},styleAttribute=g=>{const A=Object.entries(g).filter(([,g])=>g);return 0===A.length?"":` style="${A.map(([g,A])=>`${g}: ${A}`).join("; ")}"`},renderChunk=g=>`<span${styleAttribute({color:g.fg,"background-color":g.bg,"font-weight":g.bold?"700":null})}>${escapeHtml(g.text)}</span>`,renderSegmentsHtml=g=>g.map(renderChunk).join(""),resolveTimestamp=g=>g.timestamp??g.metadata?.timestamp??Date.now(),createDisplayLine=({html:g,timestamp:A,isPrompt:I=!1,isMonospace:C=!1,shouldLog:e=!0,buffer:t="main"})=>({id:null,html:g,timestamp:A,isPrompt:I,isMonospace:C,shouldLog:e,buffer:t}),renderStructuredRowHtml=(g,A)=>{const I=g.metadata?.tag??"";return[`<span class="nexgui4-stream-row nexgui4-stream-row--${A}" style="display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: 0.5rem; align-items: baseline;">`,`<span class="nexgui4-stream-row__tag mono"${styleAttribute({color:g.metadata?.tagColor??null})}>${escapeHtml(I)}</span>`,`<span class="nexgui4-stream-row__payload">${renderSegmentsHtml(g.segments)}</span>`,"</span>"].join("")},renderColorLine=g=>{const A=resolveTimestamp(g);return createDisplayLine({html:`<span class="nexgui4-color-line">${renderSegmentsHtml(g.segments)}</span>`,timestamp:A,isPrompt:g.isPrompt??!1,isMonospace:g.isMonospace??!1,shouldLog:g.shouldLog??!0,buffer:"main"})},hasTagList=g=>Array.isArray(g),isPveDamageTags=g=>hasTagList(g)&&g.includes("pve")&&g.includes("damage"),Dg=Object.freeze({options:Object.freeze({msgReplace:!0,damageNumbers:!0}),target:Object.freeze({hpText:null,hpPercent:null,hpDeltaText:null}),styles:Object.freeze({getAfflictionStyle:()=>({fg:"grey",bg:null}),resolveCureInfoStyle:(g,A="cadetblue")=>({fg:A,bg:null})}),icons:Object.freeze({dualTone:null})}),capitalize=g=>"string"==typeof g&&g.length>0?g.charAt(0).toUpperCase()+g.slice(1):"",getRuntimeStyle=g=>({fg:"string"==typeof g?.fg?g.fg:null,bg:"string"==typeof g?.bg?g.bg:null}),resolveRenderContext=(g={})=>{const A=g.context??g.replacementContext??{};return{options:{...Dg.options,...A.options??{}},target:{...Dg.target,...A.target??{}},styles:{...Dg.styles,...A.styles??{}},icons:{...Dg.icons,...A.icons??{}}}},withSeparators=(g,A)=>g.flatMap((g,I)=>0===I?[g]:[A,g]),createTitle=g=>{const A="string"==typeof g.originalLine?g.originalLine:null,I=[A?`Source: ${A}`:null,"string"==typeof g.tooltip?g.tooltip:null].filter(Boolean);return I.length>0?I.join("\n---\n"):null},createActorNodes=g=>g?[relationshipNameNode(g)]:[],createUserActionNodes=(g,A,I)=>{const{id:C,text:e,banding:t}=g,n=[classTextNode(getUserActionClass(C),e)];if(A){const{fg:C,bg:e}=getRuntimeStyle(I.styles.resolveCureInfoStyle?.(A,g.fg));n.push(styledTextNode(capitalize(A),{className:"ng-info-text",fg:C??g.fg,bg:e}))}if(Array.isArray(t)){const[g,A]=t;return[classTextNode("ng-brkt",g),...n,classTextNode("ng-brkt",A)]}return[iconBandingNode({icon:t.icon,colors:t.colors,size:t.size,children:n})]},createTargetHpValueNodes=(g,A)=>{const I="number"==typeof g.targetHpPercent?g.targetHpPercent:"number"==typeof A.target.hpPercent?A.target.hpPercent:null,C="string"==typeof g.targetHpText?g.targetHpText:"string"==typeof A.target.hpText?A.target.hpText:null;return null!=I?[styledTextNode(`${I}%`,{fg:hpPercentToColor(I)})]:C?[classTextNode("ng-muted",C)]:[]},createDamageValueNodes=(g,A)=>{const I=g.damage;return I&&"string"==typeof I.damage?[classTextNode(getDamageClass(I.type),I.damage)]:createTargetHpValueNodes(g,A)},createUserSkillAttackNodes=(g,A,I)=>{const{skill:C,info:e,tags:t,target:n}=g,a=[classTextNode("ng-brkt","["),classTextNode(getSkillClass(C.id),C.name),classTextNode("ng-brkt","]")];e&&a.push(textNode(" "),classTextNode("ng-info-text",capitalize(e)));const r=isPveDamageTags(t),o="firstPerson"===A.matchType||!A.actorId;if(r){const g="string"==typeof A.crit?A.crit:"Hit",C=o&&I.options.damageNumbers?createDamageValueNodes(A,I):createTargetHpValueNodes(A,I);a.push(classTextNode("ng-crit-separator",`: ${g} `)),C.length>0&&a.push(classTextNode("ng-dmg-bracket","("),...C,classTextNode("ng-dmg-bracket",")"))}return a},createUserActionColumnNodes=(g,A,I)=>{const{userAction:C,info:e}=g;return C&&Tg[C.id]?createUserActionNodes(C,e??null,I):createUserSkillAttackNodes(g,A,I)},createNpcActionColumnNodes=(g,A,I)=>{const{tags:C,target:e,skill:t}=g;if(!C||0===C.length)return[classTextNode("ng-muted",t.name)];const n=C.map(g=>{if("damage"===g&&"You"===e?.text)return classTextNode("ng-hp-loss","string"==typeof A.hpDeltaText&&A.hpDeltaText?A.hpDeltaText:"string"==typeof I.target.hpDeltaText&&I.target.hpDeltaText?I.target.hpDeltaText:"-0%");const{fg:C,bg:t}=getRuntimeStyle(I.styles.getAfflictionStyle?.(g));return styledTextNode(capitalize(g),{fg:C??"grey",bg:t})});return[classTextNode("ng-npc-bracket","«"),...withSeparators(n,classTextNode("ng-muted",", ")),classTextNode("ng-npc-bracket","»")]},createTargetColumnNodes=(g,A,I)=>{if(!g)return[];const C=relationshipNameNode(g);if(!g.text.includes(" ")||"grey"!==g.color)return[C];const e="number"==typeof A.targetHpPercent?A.targetHpPercent:"number"==typeof I.target.hpPercent?I.target.hpPercent:null,t="string"==typeof A.targetHpText?A.targetHpText:"string"==typeof I.target.hpText?I.target.hpText:null;return null!=e?[classTextNode("ng-dmg-bracket","("),styledTextNode(`${e}%`,{fg:hpPercentToColor(e)}),classTextNode("ng-dmg-bracket",") "),C]:t?[classTextNode("ng-dmg-bracket","("),classTextNode("ng-muted",t),classTextNode("ng-dmg-bracket",") "),C]:[C]},createReplacementViewModel=(g,A={})=>{if(!g||"object"!=typeof g)return null;const I=resolveRenderContext(A),C="npc"===g.variant?createNpcActionColumnNodes(g,A,I):createUserActionColumnNodes(g,A,I);return{family:"skill",eventName:g.eventName,variant:g.variant,layout:"replacement-row",title:createTitle(A),previewText:"string"==typeof g.preview?.text?g.preview.text:"",columns:{actor:createActorNodes(g.actor),action:C,target:createTargetColumnNodes(g.target,A,I)},assets:{dualToneIcons:I.icons.dualTone},metadata:{skillId:g.skill?.id??"",actionId:g.userAction?.id??null,matchType:"string"==typeof A.matchType?A.matchType:g.matchType,actorId:"string"==typeof A.actorId?A.actorId:null,tags:Array.isArray(g.tags)?[...g.tags]:[]}}},jg=new Map,normalizeColors=g=>Array.isArray(g)?1===g.length?[g[0],g[0]]:[g[0]??"currentColor",g[1]??g[0]??"currentColor"]:[g??"currentColor",g??"currentColor"],buildIconHtml=(g,A,I=16,C=null)=>{const e=normalizeColors(A),t=C?.[g];if(!Array.isArray(t))return"";const[n,a,,,r]=t;if(!Array.isArray(r)||r.length<2)return"";const o=`${g}-${e.join(",")}-${I}-${n}-${a}-${r.join("|")}`,i=jg.get(o);if(i)return i;const[l,s]=e,c=['<svg xmlns="http://www.w3.org/2000/svg" class="svg-inline--fa icon" aria-hidden="true" focusable="false"',` style="height:${escapeHtml(String(I))}px; --ng-fill-1:${escapeHtml(l)}; --ng-fill-2:${escapeHtml(s)};"`,` viewBox="0 0 ${escapeHtml(String(n))} ${escapeHtml(String(a))}">`,'<g class="fa-group">',`<path class="ng-icon-fill-1" d="${escapeHtml(r[0])}"></path>`,`<path class="ng-icon-fill-2" d="${escapeHtml(r[1])}"></path>`,"</g>","</svg>"].join("");return jg.set(o,c),c},buildIconBandingHtml=(g,A,I,C,e=null)=>{const t=buildIconHtml(g,A,I,e);return t?`${t}${C}${t}`:`«${C}»`},renderStyledTextNode=g=>span(escapeHtml(g.text),{className:g.className,style:{color:g.fg,"background-color":g.bg}}),renderReplacementHtmlNode=(g,A={})=>{if(!g||"object"!=typeof g)return"";switch(g.kind){case"text":return escapeHtml(g.text);case"class-text":return span(escapeHtml(g.text),{className:g.className});case"styled-text":return renderStyledTextNode(g);case"relationship-name":return renderRelationshipNameHtml(g.descriptor);case"icon-banding":return buildIconBandingHtml(g.icon,g.colors,g.size,renderReplacementHtmlNodes(g.children,A),A.dualToneIcons??null);case"group":return renderReplacementHtmlNodes(g.children,A);default:return""}},renderReplacementHtmlNodes=(g,A={})=>Array.isArray(g)?g.map(g=>renderReplacementHtmlNode(g,A)).join(""):"",renderColumn=(g,A)=>`<span class="nexgui4-replacement-row__${A}">${renderReplacementHtmlNodes(g?.columns?.[A],g?.assets)}</span>`,renderReplacementHtml=g=>[`<span class="nexgui4-replacement-row"${titleAttribute(g?.title)}>`,'<span class="nexgui4-replacement-row__buffer"></span>',renderColumn(g,"actor"),renderColumn(g,"action"),renderColumn(g,"target"),"</span>"].join(""),colorText=(g,A)=>g?span(escapeHtml(A),{style:{color:g}}):escapeHtml(A),renderFallbackPreviewHtml=g=>`<span class="nexgui4-replacement-row">${Array.isArray(g.segments)?g.segments.map(g=>g.fg?colorText(g.fg,g.text):escapeHtml(g.text)).join(""):""}</span>`,generateReplacementHtml=(g,A={})=>renderReplacementHtml(createReplacementViewModel(g,A)),renderReplacementLine=g=>{const A=resolveTimestamp(g),I=g.metadata?.details??{},C=I.replacement??null;return createDisplayLine({html:C?generateReplacementHtml(C,I):renderFallbackPreviewHtml(g),timestamp:A,isPrompt:!1,isMonospace:!1,shouldLog:g.shouldLog??!0,buffer:"system"===g.buffer?"system":"combat"})},Pg=/^Health lost: (\d+) \((.+?)\)\.$/,Bg=/^Damage dealt: (\d+) \((.+?)\)\.$/,Og=Object.freeze({crit:null,damage:null,healthLost:Object.freeze([]),tooltip:null,originalLine:null,consumedLineIndexes:Object.freeze([])}),getLineText=g=>g?"function"==typeof g.parsed_line?.text?g.parsed_line.text():"string"==typeof g.line?g.line:"":"",resolvePatternLength=g=>{const A="string"==typeof g.matchType?g.matchType.trim():"",I=g.patterns?.[A];return Array.isArray(I)?I.length:0},isPveDamageAction=g=>isPveDamageTags(g.tags),isNpcDamageToSelf=g=>Array.isArray(g.tags)&&g.tags.includes("damage")&&"self"===g.target,isFirstPersonOrActorless=g=>"firstPerson"===("string"==typeof g.matchType?g.matchType.trim():"")||("string"==typeof g.user?0===g.user.trim().length:!g.user),shouldCollectDamageDealt=(g,A)=>Boolean(A?.damageNumbers)&&isFirstPersonOrActorless(g),collectCrit=(g,A)=>{const I=getLineText(g?.[A]);for(const[C,e]of Rg)if(I.includes(C))return{crit:e,consumedLineIndex:A};return{crit:"Hit",consumedLineIndex:null}},collectDamageDealt=(g,A)=>{const I=getLineText(g?.[A]).match(Bg);return I?{damage:I[1],type:I[2],consumedLineIndex:A}:null},collectHealthLost=(g,A)=>{if(!Array.isArray(g))return{healthLost:[],consumedLineIndexes:[]};const I=[],C=[];for(let e=A;e<g.length-1;e++){const A=getLineText(g[e]).match(Pg);A&&(I.push({damage:A[1],type:A[2]}),C.push(e))}return{healthLost:I,consumedLineIndexes:C}},collectReplacementSideData=(g,A,I,C={})=>{if(!g||"object"!=typeof g||Array.isArray(g)||!Array.isArray(A)||!I||"number"!=typeof I.index)return{...Og,healthLost:[],consumedLineIndexes:[]};const e=g,t=new Set,n=getLineText(I)||null,a=resolvePatternLength(e),r=Math.max(a-1,0),o={crit:null,damage:null,healthLost:[],tooltip:null,originalLine:n};for(let i=1;i<=r;i++)t.add(I.index+i);if(isPveDamageAction(e)){const g=I.index+1,n=collectCrit(A,g);if(o.crit=n.crit,null!=n.consumedLineIndex&&t.add(n.consumedLineIndex),shouldCollectDamageDealt(e,C)){const I=collectDamageDealt(A,null!=n.consumedLineIndex?g+1:g);I&&(o.damage={damage:I.damage,type:I.type},t.add(I.consumedLineIndex))}}if(isNpcDamageToSelf(e)){const g=collectHealthLost(A,I.index+1);o.healthLost=g.healthLost,o.tooltip=g.healthLost.length>0?g.healthLost.map(({damage:g,type:A})=>`${g} (${A})`).join("\n"):null,g.consumedLineIndexes.forEach(g=>{t.add(g)})}return{...o,consumedLineIndexes:[...t].filter(g=>g!==I.index).sort((g,A)=>g-A)}},Lg="You",zg="cadetblue",Zg=Object.freeze(["contextValue","persistenceStore","persistenceVersion","msgReplace","damageNumbers","selfName","targetName","hpText","hpPercent","hpDeltaText","playerDirectory","playerDirectoryVersion","playerRelationships","playerRelationshipsVersion","allyEnemyFormatting","targetFormatting","afflictionStyles","cureStyles","herbNames","herbMinerals","dualToneIcons"]),Fg=null,Kg=null,toNullableString=g=>isNonEmptyString(g)?g.trim():null,parsePercent=g=>{if("number"==typeof g&&Number.isFinite(g))return g;if("string"!=typeof g)return null;const A=g.match(/-?\d+(?:\.\d+)?/),I=A?Number(A[0]):NaN;return Number.isFinite(I)?I:null},getGlobals$1=()=>globalThis,getContextValue$2=()=>getGlobals$1().nexGui?.__contextValue??null,getCharacterState$1=g=>g?.stores?.character?.getState?.()??{},getTargetState=g=>g?.stores?.target?.getState?.()??{},getUiSettings$2=g=>g?.persistenceStore?.getAll?.()?.ui??{},getPersistenceVersion=g=>"function"==typeof g?.persistenceStore?.getVersion?g.persistenceStore.getVersion():null,getModelVersion$2=g=>"function"==typeof g?.getVersion?g.getVersion():null,resolveUiSettings=(g,A)=>null!==A&&Fg?.contextValue===g&&Fg.persistenceStore===g?.persistenceStore&&Fg.persistenceVersion===A?Fg.uiSettings:getUiSettings$2(g),normalizeStyle=(g,A)=>({fg:toNullableString(g?.fg)??A,bg:toNullableString(g?.bg)}),createStyleResolvers=()=>({getAfflictionStyle:g=>normalizeStyle(getGlobals$1().nexSys?.prompt?.affAbbrev?.[g]??null,"grey"),resolveCureInfoStyle:(g,A=zg)=>{if(!isNonEmptyString(g))return{fg:A,bg:null};const I=getGlobals$1().nexSys,C=I?.tables?.herb_name_to_herb?.[g]??g,e=I?.prompt?.cureColors?.[C]??I?.prompt?.cureColors?.[I?.tables?.herb_to_mineral?.[C]]??null;return e?normalizeStyle(e,A):{fg:A,bg:null}}}),signaturesEqual=(g,A)=>null!==g&&null!==A&&Zg.every(I=>Object.is(g[I],A[I])),readContextInputs=()=>{const g=getGlobals$1(),A=getContextValue$2(),I=resolveUiSettings(A,getPersistenceVersion(A)),C=getPersistenceVersion(A),e=A?.stores?.settings?.getState?.()?.options??I,t=getCharacterState$1(A),n=getTargetState(A),a=g.GMCP?.Target??{},r=g.nexSys??null,o=r?.prompt??null,i=r?.tables??null,l=toNullableString(a.HP)??toNullableString(a.hpperc)??toNullableString(a.lastHP)??toNullableString(n.hpText),s=parsePercent(a.HP??a.hpperc??a.lastHP??n.hpPercent),c=n.isPlayer?toNullableString(n.name):null,u=toNullableString(o?.vars?.diffhp?.text)??("number"==typeof a.hpChange?`${a.hpChange}%`:toNullableString(a.hpChange)),d=Boolean(e.msgReplace),m=Boolean(e.damageNumbers),p=toNullableString(t.name)??toNullableString(g.GMCP?.Char?.Status?.name)??"",h=g.window?.___FONT_AWESOME___?.styles?.fad??null;return{contextValue:A,persistenceStore:A?.persistenceStore??null,persistenceVersion:C,uiSettings:I,msgReplace:d,damageNumbers:m,selfName:p,targetName:c,hpText:l,hpPercent:s,hpDeltaText:u,playerDirectory:A?.playerDirectory??null,playerDirectoryVersion:getModelVersion$2(A?.playerDirectory),playerRelationships:A?.playerRelationships??null,playerRelationshipsVersion:getModelVersion$2(A?.playerRelationships),allyEnemyFormatting:I.allyEnemyFormatting,targetFormatting:I.targetFormatting,afflictionStyles:o?.affAbbrev??null,cureStyles:o?.cureColors??null,herbNames:i?.herb_name_to_herb??null,herbMinerals:i?.herb_to_mineral??null,dualToneIcons:h}},createContextFromInputs=g=>({options:{msgReplace:g.msgReplace,damageNumbers:g.damageNumbers},self:{name:g.selfName,label:Lg},target:{name:g.targetName,hpText:g.hpText,hpPercent:g.hpPercent,hpDeltaText:g.hpDeltaText},styles:createStyleResolvers(),icons:{dualTone:g.dualToneIcons},playerDirectory:g.playerDirectory,playerRelationships:g.playerRelationships,relationshipFormatter:createRelationshipNameFormatterFromContext(g.contextValue,{targetName:g.targetName})}),clearMessageReplacementContextCache=()=>{Fg=null,Kg=null},createMessageReplacementContext=()=>{const g=readContextInputs();return signaturesEqual(Fg,g)&&Kg?Kg:(Fg=g,Kg=createContextFromInputs(g))},getGlobals=()=>globalThis,getHostBlock=()=>getGlobals().nexusclient?.current_block??null,getHostCurrentLine=()=>getGlobals().nexusclient?.current_line??null,createRenderContext=g=>({options:g.options,target:g.target,styles:g.styles,icons:g.icons}),createSkillReplacementPipelinePayload=(g,A,{context:I,sideData:C})=>{const e=createReplacementDescriptor(g,A,{relationshipFormatter:I.relationshipFormatter,selfName:I.self.name,selfText:I.self.label,targetName:I.target.name});return e?{kind:"nexgui4.skillReplacement",sourcePayload:A,replacement:e,context:createRenderContext(I),crit:C.crit,damage:C.damage,healthLost:C.healthLost,tooltip:C.tooltip,originalLine:C.originalLine,matchType:"string"==typeof A.matchType?A.matchType.trim():null,actorId:"string"==typeof A.user?A.user.trim():null,targetHpText:I.target.hpText,targetHpPercent:I.target.hpPercent,hpDeltaText:I.target.hpDeltaText}:null},renderPipelinePayloadForHost=(g,A)=>{const I=parseStreamEventLine(g,A);return I?renderReplacementLine(I).html:null},createSkillReplacementGagHandler=(g,A,{emitReplacement:I}={})=>C=>{if(!g())return;if(!C||"object"!=typeof C||Array.isArray(C))return;const e=C,t=getHostBlock(),n=getHostCurrentLine();if(!t||!n||"number"!=typeof n.index)return;const{index:a}=n,r=createMessageReplacementContext(),o=collectReplacementSideData(e,t,n,r.options),i=createSkillReplacementPipelinePayload(A,e,{context:r,sideData:o});if(!i)return;if(I?.(i),!n.parsed_line)return;const l=renderPipelinePayloadForHost(A,i);l&&(o.consumedLineIndexes.forEach(g=>{const A=t[g];A&&g!==a&&(A.gag=!0)}),n.parsed_line.nexSkillReplacement=!0,n.parsed_line.formatted=()=>l)},getOptions=()=>createMessageReplacementContext().options,isReplacementEnabled=()=>Boolean(getOptions().msgReplace),Yg="nexGui4",normalizeNexGuiClassReflexName=g=>{const A=toTrimmedString(g)?.replace(/\s+/g,"").toLowerCase();return A?`nexGui.${A}`:null},readCurrentHostClassName=(g=globalThis.GMCP)=>toTrimmedString(g?.Char?.Status?.class),runNexGuiClassReflex=(g,{nexusClient:A=globalThis.nexusclient,packageName:I=Yg}={})=>{const C=normalizeNexGuiClassReflexName(g);C&&A?.reflexes?.()?.run_function?.(C,{},I)},runNexGuiClassReflexForCurrentHostClass=(g={})=>runNexGuiClassReflex(readCurrentHostClassName(g.gmcp),g),Wg=new Set(["blindness","deafness","insomnia"]),Vg="https://api.achaea.com/characters.json",passthroughParser=g=>g,resolvePlayerDirectory=g=>g??getDefaultPlayerDirectoryModel(),getContextValue$1=()=>globalThis.nexGui?.__contextValue??null,resolvePlayerRelationships$1=g=>g??getContextValue$1()?.playerRelationships??getDefaultPlayerRelationshipsModel(),resolveFetch=g=>"function"==typeof g?g:"function"==typeof globalThis.fetch?globalThis.fetch.bind(globalThis):null,getUiSettings$1=()=>getContextValue$1()?.persistenceStore?.getAll?.()?.ui??{},getCharacterState=()=>getContextValue$1()?.stores?.character?.getState?.()??{},isLoginTrackerEnabled=()=>Boolean(getUiSettings$1()?.loginTracker),shouldEmitAffliction=g=>{const A=extractNamedValue(g);return!Wg.has(A)},extractChannelPlayerNames=g=>Array.isArray(g)?g.map(g=>g?.name).filter(isNonEmptyString).map(g=>g.trim()):[],fetchActiveCharacterNames=async(g=recordPlayerDirectoryDiagnostic,A=null)=>{if("function"!=typeof A)return g({channel:"presence",action:"charactersListFetch",status:"unavailable",detail:{fetchAvailable:!1}}),[];try{const I=await A(Vg,{cache:"no-store"});if(!I.ok)return g({channel:"presence",action:"charactersListFetch",status:"unavailable",detail:{httpStatus:I.status}}),[];const C=await I.json();return Array.isArray(C?.characters)?C.characters.map(g=>g?.name).filter(isNonEmptyString).map(g=>g.trim()):[]}catch{return g({channel:"presence",action:"charactersListFetch",status:"unavailable",detail:{exception:!0}}),[]}},createLoginTrackerNoticeHtml=(g,A,I,C)=>`<span>${createRelationshipNameFormatterFromContext(getContextValue$1(),{playerDirectory:I,playerRelationships:C}).renderHtml(g)} logged ${A}</span>`,emitBridgeEvent=({eventBus:g,topic:A,sourceEvent:I,payload:C,parser:e=passthroughParser,meta:t})=>{g.emit(A,{event:I,data:e(C),meta:t})},normalizeNexsysTargetChangedPayload=g=>isPlainObject(g)&&isPlainObject(g.current)?{...g.current,changedFields:isPlainObject(g.changedFields)?g.changedFields:{}}:g,Ug=["id","ID"],Hg=["Text","text","short_desc"],readTargetField=(g,A)=>{if(!isPlainObject(g))return null;for(const I of A)if(Object.prototype.hasOwnProperty.call(g,I)){const A=g[I];return"number"==typeof A&&Number.isFinite(A)?String(A):isNonEmptyString(A)?A.trim():null}return null},createGatedTargetInfoEmitHandler=g=>{let A,I;return C=>{const e=readTargetField(C,Ug),t=readTargetField(C,Hg);e===A&&t===I||(A=e,I=t,emitBridgeEvent({eventBus:g,topic:E.TARGET_CHANGED,sourceEvent:"IRE.Target.Info",payload:C,parser:passthroughParser}))}},parseCurrentHostClassChangedPayload=()=>({class:readCurrentHostClassName()}),createEmitHandler=(g,A)=>I=>{A.filter&&!A.filter(I)||(emitBridgeEvent({eventBus:g,topic:A.topic,sourceEvent:A.eventName,payload:I,parser:A.parser,meta:A.meta}),A.afterEmit?.(I))},createSkillReplacementEmitHandler=(g,A)=>createSkillReplacementGagHandler(isReplacementEnabled,A,{emitReplacement:I=>{emitBridgeEvent({eventBus:g,topic:E.STREAM_LINE,sourceEvent:A,payload:I,parser:passthroughParser,meta:{buffer:"combat",sourceModel:"replacement"}})}}),createLoginTrackerHandler=(g,A,I,C,e)=>{let t=[];return async n=>{if(!isLoginTrackerEnabled())return;const a=extractChannelPlayerNames(n),r=await fetchActiveCharacterNames(C,e),o=[...new Set([...a,...r])];if(0===t.length)return void(t=o);const i=[getCharacterState()?.name,globalThis.GMCP?.Char?.Status?.name].find(isNonEmptyString)?.trim(),l=t.filter(g=>!o.includes(g));o.filter(g=>!t.includes(g)).forEach(C=>{C!==i&&g.notice(createLoginTrackerNoticeHtml(C,"in",A,I),{html:!0})}),l.forEach(C=>{C!==i&&g.notice(createLoginTrackerNoticeHtml(C,"out",A,I),{html:!0})}),t=o}},seedCurrentRoomState=g=>{const A=globalThis.GMCP?.Room;isPlainObject(A?.Info)&&emitBridgeEvent({eventBus:g,topic:E.ROOM_UPDATED,sourceEvent:"Room.Info",payload:A.Info,parser:passthroughParser}),Array.isArray(A?.Players)&&emitBridgeEvent({eventBus:g,topic:E.ROOM_UPDATED,sourceEvent:"Room.Players",payload:A.Players,parser:passthroughParser})},Qg=[{eventName:"nexsys4.system.target.changed",topic:E.TARGET_CHANGED,parser:normalizeNexsysTargetChangedPayload},{eventName:"Room.RemovePlayer",topic:E.ROOM_UPDATED,parser:passthroughParser},{eventName:"Room.Addplayer",topic:E.ROOM_UPDATED,parser:passthroughParser},{eventName:"Room.AddPlayer",topic:E.ROOM_UPDATED,parser:passthroughParser},{eventName:"Room.Players",topic:E.ROOM_UPDATED,parser:passthroughParser},{eventName:"Room.Info",topic:E.ROOM_UPDATED,parser:passthroughParser},{eventName:"Char.Items.List",topic:E.ROOM_UPDATED,parser:passthroughParser},{eventName:"Char.Items.Add",topic:E.ROOM_UPDATED,parser:passthroughParser},{eventName:"Char.Items.Remove",topic:E.ROOM_UPDATED,parser:passthroughParser},{eventName:"Char.Items.Update",topic:E.ROOM_UPDATED,parser:passthroughParser},{eventName:"Char.Defences.Add",topic:E.DEFENCE_GAINED,parser:passthroughParser},{eventName:"Char.Defences.Remove",topic:E.DEFENCE_LOST,parser:passthroughParser},{eventName:"Char.Afflictions.Add",topic:E.STREAM_LINE,parser:passthroughParser,filter:shouldEmitAffliction,meta:{buffer:"system"}},{eventName:"Char.Afflictions.Remove",topic:E.STREAM_LINE,parser:passthroughParser,filter:shouldEmitAffliction,meta:{buffer:"system"}},{eventName:"Char.Vitals",topic:E.STATS_UPDATED,parser:passthroughParser},{eventName:"nexsys4.system.class.changed",topic:E.CLASS_CHANGED,parser:parseCurrentHostClassChangedPayload,afterEmit:()=>runNexGuiClassReflexForCurrentHostClass()},{eventName:"Comm.Channel.Text",topic:E.STREAM_LINE,parser:passthroughParser},{eventName:"Char.Status",topic:E.STATS_UPDATED,parser:passthroughParser},{eventName:"IRE.Misc.Achievement",topic:E.STATS_UPDATED,parser:passthroughParser,meta:{sourceModel:"stats"}},{eventName:"IRE.Time.List",topic:E.STATS_UPDATED,parser:passthroughParser,meta:{sourceModel:"stats"}},{eventName:"nexSkillMatch",topic:E.TIMER_STARTED,parser:passthroughParser,meta:{sourceModel:"timers"}},{eventName:"nexsys4.serverside.aff.priority.set",topic:E.STREAM_LINE,parser:passthroughParser,meta:{buffer:"system"}},{eventName:"nexsys4.serverside.def.priority.set",topic:E.STREAM_LINE,parser:passthroughParser,meta:{buffer:"system"}}],createStartUpGagHandler=g=>function(){g.gagCurrentBlock()},registerGmcpBindings=({adapter:g,eventBus:A,playerDirectory:I,playerDirectoryLifecycle:C,playerRelationships:e,playerDirectoryDiagnostics:t,remoteService:n,fetchFn:a})=>{const r=resolvePlayerDirectory(I),o=resolvePlayerRelationships$1(e),i=t?.recordPlayerDirectoryDiagnostic??recordPlayerDirectoryDiagnostic,l=n??createNullRemotePlayerService(),s=resolveFetch(a),c=[],u=createStartUpGagHandler(g),d=createLoginTrackerHandler(g,r,o,i,s),m=createCrowdsourceSyncHandler({remoteService:l,getPlayerProfile:r.getPlayerProfile,isSeeded:C?.isDirectorySeeded,recordDiagnostic:i,fetchFn:s,getSelfName:()=>[getCharacterState()?.name,globalThis.GMCP?.Char?.Status?.name].find(isNonEmptyString)?.trim()??null});c.push(g.on("nexSkillMatch",createSkillReplacementEmitHandler(A,"nexSkillMatch"))),c.push(g.on("nexSkillNpcMatch",createSkillReplacementEmitHandler(A,"nexSkillNpcMatch")));for(const p of Qg){const I=createEmitHandler(A,p);c.push(g.on(p.eventName,I))}return globalThis.nexSys||c.push(g.on("IRE.Target.Info",createGatedTargetInfoEmitHandler(A))),c.push(g.on("Comm.Channel.Players",g=>{r.rememberChannelPlayers(g),m(g)})),c.push(g.on("Comm.Channel.Players",d)),seedCurrentRoomState(A),c.push(g.on("IRE.Time.Update",()=>{g.sendGmcp("IRE.Time.Request")})),c.push(g.on("PromptEvent",u,{id:"nexGuiStartUpGag"})),c.push(g.on("nexGuiLoaded",()=>{g.off("PromptEvent","nexGuiStartUpGag"),g.notice("nexGui loaded using startup spam gag.")},{once:!0})),()=>{for(const g of c)g()}},emitStartupReadySignal=g=>{g.send("echo raiseEvent nexGuiLoaded")},createEventBus=({label:g="nexgui4.eventBus",debugEnabled:A=!1,traceLimit:I=500}={})=>{const C=new Map,e=[],pushTrace=(C,t)=>{const n={at:Date.now(),type:C,detail:t};return e.push(n),e.length>I&&e.splice(0,e.length-I),A&&console.log(`[${g}]`,C,t),n},on=(g,A)=>(C.has(g)||C.set(g,new Set),C.get(g).add(A),()=>off(g,A)),off=(g,A)=>C.get(g)?.delete(A);return{on,off,emit:(g,A)=>{pushTrace(g,A),C.get(g)?.forEach(g=>g(A))},clear:()=>{C.clear(),e.length=0},getTrace:()=>[...e],setDebugEnabled:g=>{A=g}}},joinFontFamily=(...g)=>g.join(", "),Xg=joinFontFamily('"Roboto Mono"',"Consolas","monospace"),Jg=Object.freeze([Object.freeze({label:"Roboto Mono",value:Xg}),Object.freeze({label:"Consolas",value:joinFontFamily("Consolas","Monaco","monospace")}),Object.freeze({label:"JetBrains Mono",value:joinFontFamily('"JetBrains Mono"',"Consolas","monospace")}),Object.freeze({label:"Fira Code",value:joinFontFamily('"Fira Code"',"Consolas","monospace")}),Object.freeze({label:"Source Code Pro",value:joinFontFamily('"Source Code Pro"',"Consolas","monospace")}),Object.freeze({label:"Courier New",value:joinFontFamily('"Courier New"',"monospace")})]),normalizeDisplayFontFamily=g=>"string"!=typeof g?Xg:g.trim()||Xg,normalizeDisplayFontSize=(g,A=14)=>{if("number"==typeof g&&Number.isFinite(g)&&g>0)return Math.round(g);if("string"==typeof g){const A=Number.parseFloat(g);if(Number.isFinite(A)&&A>0)return Math.round(A)}return A},readHostDisplayFontFamily=(g={})=>normalizeDisplayFontFamily("function"==typeof g?.get_font_family?g.get_font_family():g?.font_family),readHostDisplayFontSize=(g={})=>normalizeDisplayFontSize(g?.font_size),qg=1,clonePersistenceValue=g=>Array.isArray(g)?g.map(g=>clonePersistenceValue(g)):isPlainObject(g)?Object.fromEntries(Object.entries(g).map(([g,A])=>[g,clonePersistenceValue(A)])):g,normalizeLeafValue=(g,A)=>"boolean"==typeof g?"boolean"==typeof A?A:g:"number"==typeof g?"number"==typeof A&&Number.isFinite(A)?A:g:"string"==typeof g?"string"==typeof A?A:g:clonePersistenceValue(g),applySchemaPatch=(g,A,I)=>{if(isPlainObject(I))for(const C of Object.keys(g)){if("version"===C||!Object.hasOwn(I,C))continue;const e=g[C],t=I[C];Array.isArray(e)?A[C]=Array.isArray(t)?clonePersistenceValue(t):clonePersistenceValue(e):isPlainObject(e)?applySchemaPatch(e,A[C],t):A[C]=normalizeLeafValue(e,t)}},createSchemaSnapshot=(g,...A)=>{const I=clonePersistenceValue(g);for(const C of A)applySchemaPatch(g,I,C);return Object.hasOwn(g,"version")&&(I.version=g.version),I},_g="nexGui4Settings",$g=Object.freeze({SETTINGS:"settings",GAME_STATS:"gameStats",UI:"ui"}),gA=deepFreeze({version:qg,theme:{backgroundImage:"",fontSize:12,displayFontFamily:Xg,displayFontSize:14,backgroundOpacity:.5,hue:0},ui:{loginTracker:!1,msgReplace:!1,showCombatStream:!1,showSystemStream:!1,logoutDownload:!1,virtualizedLogs:!1,allyEnemyFormatting:!0,targetFormatting:!0,damageNumbers:!0,nativeDisplay:!1,indentWrappedLogs:!0},party:{goldCollection:!0,targetCalls:!0,affCalls:!0,callTargets:!1,callAffs:!1,gagChat:!1}}),AA=deepFreeze({version:qg,kills:0,month:{deaths:0,goldCap:0,month:0,startingGold:0,startingKills:0,startingXp:0,currentXp:0,xpValue:0,year:0}}),IA=deepFreeze({version:qg,scrollbackModal:{width:600,height:400,x:0,y:0}}),normalizePersistenceFragment=(g,A)=>Array.isArray(g)?Array.isArray(A)?clonePersistenceValue(A):clonePersistenceValue(g):isPlainObject(g)?createSchemaSnapshot(g,A):normalizeLeafValue(g,A),migrateSettingsPersistence=g=>createSchemaSnapshot(gA,g),migrateGameStatsPersistence=g=>createSchemaSnapshot(AA,g),migrateUiPersistence=g=>createSchemaSnapshot(IA,g),parseStoredValue$1=g=>{if("string"!=typeof g)return g;try{return JSON.parse(g)}catch{return g}},isEquivalentValue=(g,A)=>JSON.stringify(g)===JSON.stringify(A),CA="playerDirectory",readRootState=g=>{const A=g.getVariable(_g);if(!A||"object"!=typeof A||Array.isArray(A))return{rootState:{},changed:void 0!==A};if(!Object.hasOwn(A,CA))return{rootState:A,changed:!1};const{[CA]:I,...C}=A;return{rootState:C,changed:!0}},createPersistenceStore=({adapter:g,sliceKey:A=$g.SETTINGS,schema:I=gA,migrate:C=migrateSettingsPersistence}={})=>{const e=assertAdapterContract(g);let t=0;const markChanged=()=>{t+=1},assertSchemaKey=g=>{if("string"!=typeof g||"version"===g||!Object.hasOwn(I,g))throw new Error(`[nexGui4] Unknown persistence key "${String(g)}" for slice "${A}"`)},readState=()=>{const{rootState:g,changed:I}=readRootState(e),t=g[A],n=parseStoredValue$1(t),a=C(n);if(I||void 0===t||"string"==typeof t||!isEquivalentValue(n,a)){const I={...g,[A]:a};e.setVariable(_g,I),markChanged()}return a};return{get:g=>(assertSchemaKey(g),clonePersistenceValue(readState()[g])),set:(g,C)=>{assertSchemaKey(g);const t={...readState(),version:I.version,[g]:normalizePersistenceFragment(I[g],C)},{rootState:n}=readRootState(e),a={...n,[A]:t};return e.setVariable(_g,a),markChanged(),clonePersistenceValue(t[g])},getAll:()=>clonePersistenceValue(readState()),getVersion:()=>t,reset:()=>{const g=clonePersistenceValue(I),{rootState:C}=readRootState(e),t={...C,[A]:g};return e.setVariable(_g,t),markChanged(),clonePersistenceValue(g)}}},bindFunction=(g,A)=>"function"==typeof g?.[A]?g[A].bind(g):null,noopTimer=()=>null,noopClearTimer=()=>{},getPublicDualToneIcons=g=>g.window?.___FONT_AWESOME___?.styles?.fad??null,createBrowserRuntimePorts=(g=globalThis)=>Object.freeze({fetch:bindFunction(g,"fetch"),now:()=>Date.now(),setTimeout:bindFunction(g,"setTimeout")??noopTimer,clearTimeout:bindFunction(g,"clearTimeout")??noopClearTimer,setInterval:bindFunction(g,"setInterval")??noopTimer,clearInterval:bindFunction(g,"clearInterval")??noopClearTimer,getPublicDualToneIcons:()=>getPublicDualToneIcons(g)}),freezePhaseList=g=>Object.freeze([...g]),eA=Object.freeze({INIT:"INIT",PREPARING:"PREPARING",BOOTING:"BOOTING",MOUNTING_UI:"MOUNTING_UI",HYDRATING_LAYOUT:"HYDRATING_LAYOUT",RUNNING:"RUNNING",FAILED:"FAILED",DESTROYED:"DESTROYED"}),tA=Object.freeze({[eA.INIT]:freezePhaseList([eA.PREPARING,eA.DESTROYED]),[eA.PREPARING]:freezePhaseList([eA.BOOTING,eA.FAILED,eA.DESTROYED]),[eA.BOOTING]:freezePhaseList([eA.MOUNTING_UI,eA.FAILED,eA.DESTROYED]),[eA.MOUNTING_UI]:freezePhaseList([eA.HYDRATING_LAYOUT,eA.FAILED,eA.DESTROYED]),[eA.HYDRATING_LAYOUT]:freezePhaseList([eA.RUNNING,eA.FAILED,eA.DESTROYED]),[eA.RUNNING]:freezePhaseList([eA.FAILED,eA.DESTROYED]),[eA.FAILED]:freezePhaseList([eA.PREPARING,eA.DESTROYED]),[eA.DESTROYED]:freezePhaseList([])}),isPhaseTransitionAllowed=(g,A)=>tA[g]?.includes(A)??!1,nA=Object.freeze([eA.PREPARING,eA.BOOTING,eA.MOUNTING_UI,eA.HYDRATING_LAYOUT,eA.RUNNING]),aA=3,rA=250,toErrorMessage=g=>g instanceof Error&&g.message?g.message:"string"==typeof g&&g.length>0?g:"Unknown startup failure",getRetryDelayMs=(g,A)=>A*2**Math.max(0,g-1),createStartupOrchestrator=({adapter:g,eventBus:A,phaseHandlers:I={},maxAttempts:C=aA,retryDelayMs:e=rA,setTimeoutFn:t=setTimeout,clearTimeoutFn:n=clearTimeout})=>{let a=eA.INIT,r=0,o=null,i=null,l=null,s=!1;const getState=()=>({phase:a,attempts:r,lastError:o}),transitionTo=(g,I={})=>{if(!isPhaseTransitionAllowed(a,g))throw new Error(`[nexGui4] Invalid startup phase transition: ${a} -> ${g}`);const C=a;return a=g,A.emit(R.SYSTEM_PHASE,{phase:g,previousPhase:C,attempt:I.attempt??r,...void 0!==I.error?{error:I.error}:{},...void 0!==I.retryDelayMs?{retryDelayMs:I.retryDelayMs}:{},...void 0!==I.permanent?{permanent:I.permanent}:{}}),g===eA.RUNNING&&A.emit(R.SYSTEM_READY,{phase:g,previousPhase:C,attempt:I.attempt??r}),getState()},clearPendingRetry=()=>{l&&(n(l.timerId),l.resolve(),l=null)},waitForRetry=g=>new Promise(A=>{l={timerId:t(()=>{l=null,A()},g),resolve:A}}),runPhase=async C=>{const e=I[C];"function"==typeof e&&await e({phase:C,attempt:r,adapter:g,eventBus:A})},runAttempt=async()=>{r+=1;try{for(const g of nA){if(s)return getState();transitionTo(g,{attempt:r}),await runPhase(g)}return o=null,getState()}catch(A){o=A;const I=r<C,t=I?getRetryDelayMs(r,e):0;if(transitionTo(eA.FAILED,{attempt:r,error:A,...I?{retryDelayMs:t}:{permanent:!0}}),!I)throw g.notice(`[nexGui4] Startup failed after ${r} attempts: ${toErrorMessage(A)}`),A;return await waitForRetry(t),s?getState():runAttempt()}};return{start:()=>i||(s?Promise.reject(new Error("[nexGui4] Cannot start startupOrchestrator after destroy().")):a===eA.RUNNING?Promise.resolve(getState()):(i=runAttempt().finally(()=>{i=null}),i)),destroy:()=>(a===eA.DESTROYED||(s=!0,clearPendingRetry(),transitionTo(eA.DESTROYED,{attempt:r})),getState()),getState}},oA="nexgui4_scrollback",iA=1,lA="session_lines",toSortedLines=g=>Array.from(g.values()).sort((g,A)=>g.id-A.id),resolveIndexedDb=g=>void 0!==g?g:globalThis.indexedDB,resolveKeyRange=g=>void 0!==g?g:globalThis.IDBKeyRange,createIndexedDbManager=({dbName:g=oA,dbVersion:A=iA,storeName:I=lA,indexedDb:C,keyRange:e,logger:t=null}={})=>{const n=resolveIndexedDb(C),a=resolveKeyRange(e);let r=null,o=null,i=new Map,l=!n||!a,s=!1;const debug=(...g)=>t?.debug?.(...g),warn=(...g)=>t?.warn?.(...g),switchToFallback=g=>{r&&(r.close?.(),r=null),l=!0,warn("[nexGui4] IndexedDB unavailable; using in-memory scrollback storage.",g)},assertActive=()=>{if(s)throw new Error("[nexGui4] IndexedDB manager has been destroyed.")},initialize=()=>(assertActive(),l||r?Promise.resolve():o||(o=new Promise(C=>{let e=!1;const settleWithFallback=g=>{e||(e=!0,o=null,switchToFallback(g),C())},settleWithDb=g=>{e?g?.close?.():(e=!0,r=g,debug("[nexGui4] IndexedDB scrollback storage initialized."),C())};let t;try{t=n.open(g,A)}catch(a){return void settleWithFallback(a)}t.onupgradeneeded=g=>{const A=g.target.result;A.objectStoreNames.contains(I)||A.createObjectStore(I,{keyPath:"id"})},t.onsuccess=g=>{settleWithDb(g.target.result)},t.onerror=g=>{settleWithFallback(g.target.error)},t.onblocked=g=>{settleWithFallback(g)}}),o)),ensureDb=async()=>(assertActive(),l?null:r||(await initialize(),r)),writeBatch=async g=>{if(assertActive(),0===g.length)return;if(l){for(const A of g)i.set(A.id,A);return}const A=await ensureDb();if(!l&&A)return new Promise((C,e)=>{const t=A.transaction([I],"readwrite"),n=t.objectStore(I);t.oncomplete=()=>{C()},t.onerror=g=>{e(g.target.error)},t.onabort=g=>{e(g.target.error)};for(const A of g)n.put(A)});await writeBatch(g)},readRange=async(g,A)=>{if(assertActive(),l)return toSortedLines(i).filter(I=>I.id>=g&&I.id<=A);const C=await ensureDb();return l||!C?readRange(g,A):new Promise((e,t)=>{const n=C.transaction([I],"readonly").objectStore(I),r=a.bound(g,A),o=n.getAll(r);o.onsuccess=()=>{e(o.result)},o.onerror=g=>{t(g.target.error)}})},readIds=async g=>{if(assertActive(),0===g.length)return[];if(l)return g.map(g=>i.get(g)).filter(Boolean);const A=await ensureDb();return l||!A?readIds(g):new Promise((C,e)=>{const t=A.transaction([I],"readonly"),n=t.objectStore(I),a=[];let r=!1;t.oncomplete=()=>{if(r)return;const A=new Map(a.map(g=>[g.id,g]));C(g.map(g=>A.get(g)).filter(Boolean))},t.onerror=g=>{r=!0,e(g.target.error)},t.onabort=g=>{r=!0,e(g.target.error)};for(const A of g){const g=n.get(A);g.onsuccess=()=>{void 0!==g.result&&a.push(g.result)}}})},readAll=async()=>{if(assertActive(),l)return toSortedLines(i);const g=await ensureDb();return l||!g?readAll():new Promise((A,C)=>{const e=g.transaction([I],"readonly").objectStore(I).getAll();e.onsuccess=()=>{A(e.result)},e.onerror=g=>{C(g.target.error)}})},clear=async()=>{if(assertActive(),l)return void i.clear();const g=await ensureDb();if(!l&&g)return new Promise((A,C)=>{const e=g.transaction([I],"readwrite").objectStore(I).clear();e.onsuccess=()=>{A()},e.onerror=g=>{C(g.target.error)}});await clear()},close=()=>{r?.close?.(),r=null,o=null},destroy=()=>{s||(close(),i=new Map,s=!0)};return{initialize,writeBatch,readRange,readIds,readAll,clear,close,destroy,isFallback:()=>l}},sA=Object.freeze([]),normalizeEntries=g=>(Array.isArray(g)?g:[]).filter(g=>g&&"number"==typeof g.id).map(g=>({...g})),estimateSearchBytes=(g,A)=>2*A+32*g,createScrollbackSessionStore=({storage:g=createIndexedDbManager(),writeBatchSize:A=500,writeDebounceMs:I=h,setTimeoutFn:C=setTimeout,clearTimeoutFn:e=clearTimeout,logger:t=null}={})=>{let n=[],a=null,r=Promise.resolve(),o=[],i=0,l=!1,s=null;const reportAsyncError=g=>{t?.error?.("[nexGui4] Scrollback session operation failed.",g)},assertActive=()=>{if(l)throw new Error("[nexGui4] Scrollback session store has been destroyed.")},cancelFlushTimer=()=>{a&&(e(a),a=null)},enqueueOperation=g=>{const A=r.then(g);return r=A.catch(()=>{}),A},takePendingWrites=()=>{if(cancelFlushTimer(),0===n.length)return sA;const g=n;return n=[],g},enqueuePendingWrite=()=>{const A=takePendingWrites();return 0===A.length?r:enqueueOperation(()=>g.writeBatch(A))},scheduleFlush=()=>{a||0===n.length||(a=C(()=>{a=null,enqueuePendingWrite().catch(reportAsyncError)},I))},resetSearchRecords=()=>{o=[],i=0},appendSearchRecords=g=>{for(const A of g){const g=stripHtml(A.html).toLowerCase();o.push({id:A.id,isPrompt:Boolean(A.isPrompt),text:g}),i+=g.length}},flush=()=>(assertActive(),enqueuePendingWrite()),readRange=async(A,I)=>(assertActive(),await flush(),enqueueOperation(()=>g.readRange(A,I))),readIds=async A=>(assertActive(),await flush(),Array.isArray(A)&&0!==A.length?enqueueOperation(()=>g.readIds(A)):[]),readAll=async()=>(assertActive(),await flush(),enqueueOperation(()=>g.readAll())),search=async(A,{includePrompts:I=!0}={})=>{assertActive();const C=String(A??"").trim().toLowerCase();if(await flush(),!C)return[];const e=o.filter(g=>I||!g.isPrompt).filter(g=>g.text.includes(C)).map(g=>g.id);return 0===e.length?[]:enqueueOperation(()=>g.readIds(e))};return{initialize:()=>(assertActive(),enqueueOperation(()=>g.initialize?.()??Promise.resolve())),append:g=>{if(l)return;const I=normalizeEntries(g);0!==I.length&&(appendSearchRecords(I),n.push(...I),n.length>=A?enqueuePendingWrite().catch(reportAsyncError):scheduleFlush())},flush,clear:()=>(assertActive(),cancelFlushTimer(),n=[],resetSearchRecords(),enqueueOperation(()=>g.clear())),readRange,readIds,readAll,search,getStats:()=>({pendingCount:n.length,pendingFlushScheduled:Boolean(a),storageFallback:Boolean(g.isFallback?.()),searchLineCount:o.length,searchTextChars:i,estimatedSearchBytes:estimateSearchBytes(o.length,i),writeBatchSize:A,writeDebounceMs:I,destroyed:l}),destroy:()=>{if(s)return s;const A=enqueuePendingWrite();return l=!0,s=A.catch(reportAsyncError).finally(()=>{cancelFlushTimer(),n=[],resetSearchRecords(),"function"==typeof g.destroy?g.destroy():g.close?.()}),s}}},EMPTY_QUERY=async()=>[],NULL_GET=async()=>null,createCdbApi=({query:g=EMPTY_QUERY,get:A=NULL_GET}={})=>Object.freeze({query:A=>g(A),get:g=>A(g)}),createCharacterApi=({characterModel:g=null}={})=>{const getCharacterSnapshot=()=>g?.snapshot?.()??{},A=Object.freeze({get:()=>getCharacterSnapshot().class??"",is:g=>normalizeLookupKey(getCharacterSnapshot().class)===normalizeLookupKey(g)});return Object.freeze({class:A})},EMPTY_ICON_HTML=()=>"",noopNotice=()=>{},createDisplayApi=({playerColor:g=()=>"grey",iconHtml:A=EMPTY_ICON_HTML,notice:I=noopNotice}={})=>{const C="function"==typeof A?A:EMPTY_ICON_HTML,e="function"==typeof I?I:noopNotice;return Object.freeze({playerColor:A=>g(A),iconHtml:(g,A,I)=>C(g,A,I),notice:(g,A)=>e(g,A)})},NOOP$6=()=>{},toFrozenList$1=g=>Object.freeze(Array.isArray(g)?[...g]:[]),createCustomizeApi=({setConfiguredDefences:g=NOOP$6,setClassBalanceType:A=NOOP$6,mountNativeDisplay:I=NOOP$6,unmountNativeDisplay:C=NOOP$6}={})=>{const e=Object.freeze({set:A=>toFrozenList$1(g(A))}),t=Object.freeze({set:g=>A(g)}),n=Object.freeze({mount:()=>{I()},unmount:()=>{C()}});return Object.freeze({defences:e,classBalance:t,nativeDisplay:n})},NOOP$5=()=>!1,toFrozenList=g=>Object.freeze(Array.isArray(g)?[...g]:[]),createLayoutApi=({presetIds:g=[],applyPreset:A=NOOP$5,saveLayout:I=NOOP$5,restoreLayout:C=NOOP$5,hasSavedLayout:e=()=>!1}={})=>{const t=toFrozenList(g);return Object.freeze({list:()=>t,apply:g=>Boolean(A(g)),save:()=>Boolean(I()),restore:()=>Boolean(C()),hasSaved:()=>Boolean(e())})},NOOP$4=()=>({members:[],leader:"",selfName:""}),createPartyApi=({getSnapshot:g=NOOP$4}={})=>{const isMember=A=>{const I=normalizeLookupKey(A);return!!I&&g().members.some(g=>normalizeLookupKey(g)===I)};return Object.freeze({isMember})},toReadOnlySnapshot=g=>g&&"object"==typeof g?deepFreeze(structuredClone(g)):g,createPlayersApi=({getPlayer:g=()=>null,getPlayerColor:A=()=>"grey",refreshPlayer:I=async()=>null,display:C=()=>{},isAlly:e=()=>!1,isEnemy:t=()=>!1,isCityEnemy:n=()=>!1}={})=>{const get=A=>{const I=g(A);return I?toReadOnlySnapshot(I):null},color=g=>A(g),fetch=async A=>{try{const g=await I(A);if(g)return toReadOnlySnapshot(g)}catch{}const C=g(A);return C?toReadOnlySnapshot(C):null},qwFormat=(A,I={})=>{const a=renderQuickWhoHtml((Array.isArray(A)?A:[]).map(A=>{const I="string"==typeof A?A:A?.name;return"string"!=typeof I||""===I.trim()?null:{name:I,city:A&&"object"==typeof A&&null!=A.city?A.city:g(I)?.city,ally:e(I),enemy:t(I),cityEnemy:n(I)}}).filter(Boolean),I);return C(a),a};return Object.freeze({get,color,fetch,qwFormat})},NOOP$3=()=>{},NOOP_LIST=()=>[],NOOP_GET=()=>null,cA=["text","color","background"],normalizeOverride=g=>{if(!g||"object"!=typeof g)return null;const A={};for(const I of cA)"string"==typeof g[I]&&g[I]&&(A[I]=g[I]);return Object.keys(A).length>0?Object.freeze(A):null},createRoomApi=({setItemOverride:g=NOOP$3,removeItemOverride:A=NOOP$3,listItemOverrides:I=NOOP_LIST,getItemOverride:C=NOOP_GET}={})=>{const e=Object.freeze({set:(A,I)=>{const C=normalizeOverride(I);return C?(g(A,C),C):null},remove:g=>{A(g)},get:g=>C(g),list:()=>Object.freeze(I().map(([g,A])=>Object.freeze({name:g,override:A})))});return Object.freeze({items:e})},isTranscriptModel=g=>Boolean(g&&"function"==typeof g.addLines&&"function"==typeof g.getSnapshot),assertHtml=g=>{if("string"!=typeof g||0===g.length)throw new TypeError('api.stream.add requires a non-empty "html" string.')},resolveTargetModel=(g,A,I)=>{if("system"===g)return A;if("combat"===g)return I;throw new RangeError('api.stream.add requires "stream" to be either "system" or "combat".')},toReadOnlyEntry=g=>g?Object.freeze({...g}):null,createStreamApi=({systemStream:g=null,combatStream:A=null,now:I=Date.now}={})=>{const add=({html:C,stream:e}={})=>{assertHtml(C);const t=resolveTargetModel(e,g,A);if(!isTranscriptModel(t))return null;const n=I();return t.addLines([{html:C,timestamp:n,isPrompt:!1,isMonospace:!1,shouldLog:!0,buffer:e}]),toReadOnlyEntry(t.getSnapshot().items.at(-1))};return Object.freeze({add})},NOOP$2=()=>{},normalizeTargetValue=g=>{if(null==g)return null;const A=String(g).trim();return A.length>0?A:null},normalizeTargetLookupKey=g=>null==g?"":normalizeLookupKey(String(g)),createTargetApi=({targetModel:g=null,setTarget:A=NOOP$2}={})=>{const readTarget=()=>g?.read?.()??{};return Object.freeze({get:()=>{const g=readTarget();return{id:g.id??null,name:g.name??null,isPlayer:Boolean(g.isPlayer)}},set:g=>{const I=normalizeTargetValue(g);return A(I),I},is:g=>{const A=normalizeTargetLookupKey(g);if(!A)return!1;const I=readTarget();return normalizeTargetLookupKey(I.id)===A||normalizeTargetLookupKey(I.name)===A}})},createNoopTimerModel=()=>({add:()=>null,clearAll:()=>0,get:()=>null,list:()=>[],remove:()=>null,reset:()=>null,start:()=>null,stop:()=>null}),hasListFilters=g=>"string"==typeof g||null!==g&&"object"==typeof g,resolveGroupId=g=>"string"==typeof g?g:g&&"object"==typeof g&&"string"==typeof g.groupId?g.groupId:null,createTimersApi=({timerModel:g}={})=>{const A=g??createNoopTimerModel(),get=g=>A.get(g),list=g=>{if(!hasListFilters(g))throw new TypeError("api.timers.list requires filters; read nexGui.state.timers.list for the unfiltered snapshot.");return A.list(g)},start=g=>A.start(g),stop=g=>A.stop(g),reset=g=>A.reset(g),remove=g=>A.remove(g),add=(g,I,C="",e)=>A.add(g,I,C,e),clear=g=>{const I=resolveGroupId(g);if(!I)return A.clearAll();const C=A.list({groupId:I});for(const e of C)A.remove(e.id);return C.length};return Object.freeze({add,clear,get,list,remove,reset,start,stop})},toFrozenSnapshot=g=>g&&"object"==typeof g?deepFreeze(structuredClone(g)):g,uA=Object.freeze({name:"",class:"",level:0,gender:null,balance:!1,equilibrium:!1,classBalanceType:null,classBalanceReady:null,currentAffs:Object.freeze([]),limbs:Object.freeze({})}),createCharacterState=({characterModel:g=null}={})=>()=>toFrozenSnapshot(g?.snapshot?.()??uA),createCustomizeState=({getConfiguredDefences:g=()=>[],classBalanceController:A=null}={})=>()=>{const I=g();return toFrozenSnapshot({defences:Array.isArray(I)?I:[],classBalance:A?.getType?.()??null})},dA=Object.freeze({members:Object.freeze([]),leader:"",selfName:"",settings:Object.freeze({})}),createPartyState=({partyModel:g=null}={})=>()=>toFrozenSnapshot(g?.snapshot?.()??dA),mA=Object.freeze(new Map),pA=Object.freeze({}),buildDirectoryMap=g=>{const A=g?.getAllPlayerProfiles?.();if(!Array.isArray(A)||0===A.length)return mA;const I=new Map;for(const C of A){const g=N(C?.name);g&&I.set(g,deepFreeze(structuredClone(C)))}return Object.freeze(I)},createPlayersState=({playerDirectory:g=null,cityPalette:A=pA}={})=>{const I=A&&"object"==typeof A?deepFreeze(structuredClone(A)):pA;let C=null,e=null;return()=>{const A=g?.getVersion?.()??null;if(null!==e&&null!==A&&A===C)return e;const t=Object.freeze({directory:buildDirectoryMap(g),cityPalette:I});return C=A,e=t,t}},hA=Object.freeze({ref:Object.freeze({id:"",name:""}),items:Object.freeze([]),occupants:Object.freeze({players:Object.freeze([]),npcs:Object.freeze([])})}),createRoomState=({roomModel:g=null}={})=>()=>{const A=g?.snapshot?.();return A?toFrozenSnapshot({ref:{id:A.roomId??"",name:A.roomName??""},items:Array.isArray(A.items)?A.items:[],occupants:{players:Array.isArray(A.players)?A.players:[],npcs:Array.isArray(A.npcs)?A.npcs:[]}}):hA},yA=Object.freeze({instance:Object.freeze({kills:0,goldGained:0,xpPercent:0,xpValue:0,deaths:0,startedAt:0}),session:Object.freeze({kills:0,goldGained:0,xpPercent:0,xpValue:0,deaths:0,startedAt:0}),month:Object.freeze({kills:0,goldGained:0,xpPercent:0,xpValue:0,deaths:0,startedAt:0,goldCap:0,year:0,month:0})}),createStatsState=({playStatsModel:g=null}={})=>()=>toFrozenSnapshot(g?.snapshot?.()??yA),createSystemState=({version:g="",isMounted:A=()=>!1,startupOrchestrator:I=null}={})=>()=>toFrozenSnapshot({version:g,mounted:Boolean(A()),phase:I?.getState?.().phase??"INIT"}),fA=Object.freeze(createEmptyTargetRecord()),createTargetState=({targetModel:g=null}={})=>()=>toFrozenSnapshot(g?.snapshot?.()??fA),createTimersState=({timerModel:g=null}={})=>()=>toFrozenSnapshot({list:g?.list?.()??[]}),composePublicApi=({version:g,startupOrchestrator:A,isMounted:I,character:C,target:e,timerModel:t,players:n,colors:a,display:r,customize:o,layout:i,party:l,room:s,stats:c,stream:u,cdb:d}={})=>{const m=createPlayersApi(n),p=createDisplayApi({playerColor:r?.playerColor??a?.playerColor??m.color,iconHtml:r?.iconHtml??a?.iconHtml,notice:r?.notice??a?.notice}),h={system:createSystemState({version:g,isMounted:I,startupOrchestrator:A}),character:createCharacterState({characterModel:C?.characterModel}),target:createTargetState({targetModel:e?.targetModel}),party:createPartyState({partyModel:l?.partyModel}),room:createRoomState({roomModel:s?.roomModel}),stats:createStatsState({playStatsModel:c?.playStatsModel}),players:createPlayersState({playerDirectory:n?.playerDirectory,cityPalette:a?.cityPalette}),timers:createTimersState({timerModel:t}),customize:createCustomizeState({getConfiguredDefences:o?.getConfiguredDefences,classBalanceController:o?.classBalanceController})},stateSnapshot=()=>Object.freeze({system:h.system(),character:h.character(),target:h.target(),party:h.party(),room:h.room(),stats:h.stats(),players:h.players(),timers:h.timers(),customize:h.customize()}),y=Object.freeze({character:createCharacterApi(C),target:createTargetApi(e),players:m,display:p,colors:p,timers:createTimersApi({timerModel:t}),customize:createCustomizeApi(o),layout:createLayoutApi(i),party:createPartyApi({getSnapshot:l?.getSnapshot}),room:createRoomApi(s),stream:createStreamApi(u),cdb:createCdbApi({query:d?.query,get:d?.get})}),b={};return Object.defineProperty(b,"state",{enumerable:!0,get:stateSnapshot}),Object.defineProperty(b,"api",{value:y,enumerable:!0}),Object.freeze(b)},bA="feather-pointed",tab=(g,A={})=>({type:"tab",id:g,name:g,component:g,helpText:g,icon:bA,...A}),hostTab=g=>({type:"tab",...g}),rightBorder=(g={})=>({type:"border",location:"right",...g}),xA={layout:{type:"row",id:"main",children:[{type:"row",id:"#f21df3e7-48ef-48f4-b77d-96a4cfc93903",weight:11.055408908360821,children:[{type:"tabset",id:"container_1",weight:6.080414549807837,children:[tab("nexDefences")]},{type:"tabset",id:"#fc94a4e0-6b58-42b5-826f-6e0c3bec80a7",weight:5.235912529001193,children:[tab("nexTimers")]},{type:"tabset",id:"#3251f844-bd3f-4ebb-aca9-9a4dfe9d0add",weight:5.49476101474438,children:[tab("nexTarget")]},{type:"tabset",id:"#5a449b58-0188-4ab9-9c98-023ed517a477",weight:5.316690055933218,children:[tab("nexStats",{borderWidth:725})]}]},{type:"row",id:"#70e4ecdf-81dc-40c6-b536-b62595eff99b",weight:54.4266284719302,children:[{type:"tabset",id:"#f85f4040-6d4a-49c7-94bd-7244f1a3b32d",weight:11.507047541573453,children:[hostTab({id:"all_comm",name:"All Comm",helpText:"Global Communication Window",component:"all_comm",icon:"message-lines"})]},{type:"tabset",id:"#fdd3f126-a4e3-4f24-9e2b-03b2f25825ec",weight:46.37955039657086,enableDrop:!1,enableTabStrip:!1,active:!0,children:[hostTab({id:"#90968890-c02d-44ac-947a-5651201350c8",component:"center"})]}]},{type:"row",id:"#105ad70c-29c2-4f15-b764-c2c124fd5e36",weight:41.18462928637565,children:[{type:"row",id:"#6c8d384b-ce25-444f-9ece-92e8d7c1c7f4",weight:26.295598569968487,children:[{type:"tabset",id:"#14f8b2aa-bc7c-4e2b-b6cb-b05931394b2a",weight:48.76712328767123,children:[tab("nexFeed")]},{type:"tabset",id:"#887e45a7-0b29-446f-862b-d6dde018fc96",weight:51.23287671232877,children:[tab("nexMetrics")]}]},{type:"row",id:"#64cee95d-aaef-477c-965e-76cdabd2a677",weight:35.830262173583016,children:[{type:"row",id:"#c365b5e0-6c0c-4de0-81f2-872ed286499d",weight:39.93115318416523,children:[{type:"tabset",id:"#01137e43-37f6-4f66-aa8a-b129d202fc29",weight:49.54337899543379,children:[tab("nexItems")]},{type:"tabset",id:"#e4c4c437-aba2-45ff-b168-f72896c253fa",weight:50.45662100456621,children:[tab("nexNpcs")]}]},{type:"tabset",id:"#59491b6a-bab3-415d-8367-25c562f46ae9",weight:60.06884681583477,selected:1,children:[hostTab({id:"map",name:"Map",helpText:"Map",component:"map",icon:"route"}),hostTab({id:"nexMap",name:"nexMap",helpText:"nexMap",component:"nexMap",icon:bA})]}]},{type:"tabset",id:"#63176cb9-c8b3-452a-afff-1e828d13e678",weight:6.009664560737805,children:[tab("nexPlayers")]},{type:"row",id:"#9e30489f-3eaf-4afe-90f6-23087c97698d",weight:19.364474695710708,children:[{type:"tabset",id:"#688e21f9-7929-4c29-92ce-9a9500c8fb63",weight:34.47319574635062,children:[tab("nexCombat")]},{type:"tabset",id:"#a79f5a9f-83b7-4f6a-b3c9-1c3e5843cc7e",weight:34.83104898939232,children:[tab("nexSystem")]}]}]}]},borders:[rightBorder({size:700,children:[tab("nexOptions",{borderWidth:300}),tab("nexParty",{borderWidth:300})]}),{type:"border",location:"left",children:[]},{type:"border",location:"top",children:[]},{type:"border",location:"bottom",children:[]}]},EA={layout:{type:"row",id:"main",children:[{type:"row",id:"#70e4ecdf-81dc-40c6-b536-b62595eff99b",weight:57.26509774852639,children:[{type:"tabset",id:"#f85f4040-6d4a-49c7-94bd-7244f1a3b32d",weight:17.557736227615205,selected:1,children:[hostTab({id:"map",name:"Map",helpText:"Map",component:"map",icon:"route"}),hostTab({id:"nexMap",name:"nexMap",helpText:"nexMap",component:"nexMap",icon:bA})]},{type:"row",id:"#bcb4f90b-4716-4f9b-9b22-ffd8741be626",weight:7.090289581370549,children:[{type:"tabset",id:"#b54bf1ab-4145-4041-9e67-8e6b789724b1",weight:11.363636363636363,children:[tab("nexPlayers")]},{type:"tabset",id:"#3df7c443-17f5-406e-9a45-54879deb731e",weight:26.79425837320574,children:[tab("nexNpcs")]},{type:"tabset",id:"#5c7c36a2-9496-4e6f-a1df-c581f898f7ac",weight:36.8421052631579,active:!0,children:[tab("nexItems")]}]},{type:"tabset",id:"#1eaac23b-4eae-486d-8915-90a25f41f9e0",weight:2.6494514015995967,children:[hostTab({id:"all_comm",name:"All Comm",helpText:"Global Communication Window",component:"all_comm",icon:"message-lines"})]},{type:"tabset",id:"#fdd3f126-a4e3-4f24-9e2b-03b2f25825ec",weight:30.58912072755898,enableDrop:!1,enableTabStrip:!1,children:[hostTab({id:"#90968890-c02d-44ac-947a-5651201350c8",component:"center"})]}]}]},borders:[rightBorder({size:700,children:[tab("nexOptions",{borderWidth:300}),tab("nexParty",{borderWidth:300}),tab("nexMetrics"),tab("nexStats",{borderWidth:725}),tab("nexCombat"),tab("nexSystem"),tab("nexTarget"),tab("nexDefences"),tab("nexTimers"),tab("nexFeed")]})]},vA=Object.freeze({kDesktop:xA,mobile:EA}),RA=Object.freeze(Object.keys(vA)),getLayoutPreset=g=>vA[g]??null,createCharacterStore=({characterModel:g,eventBus:A})=>{const C=(0,I.create)(()=>({...g.read(),updateCharacter:A=>g.update(A),setClass:A=>g.setClass(A)})),refreshCharacter=()=>{C.setState(g.read())};return A.on(x.CHARACTER_UPDATED,refreshCharacter),A.on(x.CLASS_CHANGED,refreshCharacter),C},createTargetStore=({targetModel:g,eventBus:A})=>{const C=(0,I.create)(()=>({...g.read()})),refreshTarget=()=>{C.setState(g.read())};return A.on(x.TARGET_CHANGED,refreshTarget),C},projectEntries=(g,A)=>g.length===A.length&&g.every((g,I)=>Object.is(g,A[I]))?g:A,createFeedStore=({feedModel:g})=>(0,I.create)((A,I)=>{const refresh=()=>{A({entries:projectEntries(I().entries,g.snapshot())})};return{entries:g.snapshot(),addEntry:A=>{g.add(A),refresh()},addEntries:A=>{if("function"==typeof g.addEntries)g.addEntries(A);else for(const I of A)g.add(I);refresh()},replaceEntries:A=>{if("function"==typeof g.replaceEntries)g.replaceEntries(A);else{g.clear();for(const I of A)g.add(I)}refresh()},clear:()=>{g.clear(),refresh()}}}),createPartyStore=({partyModel:g,eventBus:A})=>{const readParty=()=>g.read?.()??g.snapshot(),C=(0,I.create)(()=>({...readParty(),updateParty:A=>g.update(A),addMember:A=>g.addMember(A),removeMember:A=>g.removeMember(A),setLeader:A=>g.setLeader(A),setSelf:A=>g.setSelf(A),setSetting:(A,I)=>g.setSetting(A,I)})),refreshParty=()=>{C.setState(readParty())};return A.on(x.PARTY_UPDATED,refreshParty),A.on(x.PARTY_MEMBER_LEFT,refreshParty),C},wA=/^You have gained (\d+) experience\.$/,SA=/^You have made (\d+) out of 450000 gold this month\.$/,toFiniteNumber=(g,A=null)=>{const I="number"==typeof g?g:"string"==typeof g&&g.trim().length>0?Number(g):NaN;return Number.isFinite(I)?I:A},toInteger=(g,A=null)=>{const I=toFiniteNumber(g,NaN);return Number.isFinite(I)?Math.trunc(I):A},toStatusXp=g=>{if(!g||"object"!=typeof g)return null;const A="string"==typeof g.level?Number.parseInt(g.level,10):toInteger(g.level,null),I=toFiniteNumber("string"==typeof g.xp?g.xp.replace("%",""):g.xp,null);return null==A||null==I?null:A+I/100},makeScope=g=>({kills:0,goldGained:0,xpPercent:0,xpValue:0,deaths:0,startedAt:g}),makeMonthScope=g=>({...makeScope(g),goldCap:0,year:0,month:0}),cloneSnapshot=g=>structuredClone(g),normalizePersistedStats=g=>migrateGameStatsPersistence(g??AA),createPlayStatsModel=({persistedGameStats:g,now:A=()=>Date.now()}={})=>{const I=A(),C=normalizePersistedStats(g),e=C.month??AA.month,t=toInteger(e.xpValue??e.xp,0);let n=toInteger(C.kills,0),a=null,r=toFiniteNumber(e.currentXp,null);const o=new Set,i=new Set,l=I,s={instance:{initialized:!1,startingGold:null,startingKills:n,startingXp:null,startedAt:I},session:{initialized:!1,startingGold:null,startingKills:n,startingXp:null,startedAt:I},month:{initialized:toInteger(e.year,0)>0&&toInteger(e.month,0)>0,startingGold:toInteger(e.startingGold,null),startingKills:toInteger(e.startingKills,n),startingXp:toFiniteNumber(e.startingXp,null),startedAt:l}};let c={instance:makeScope(I),session:makeScope(I),month:{...makeMonthScope(l),goldCap:toInteger(e.goldCap,0),year:toInteger(e.year,0),month:toInteger(e.month,0),xpValue:t,deaths:toInteger(e.deaths,0)}};const read=()=>c,updateScope=(g,A)=>{if(!A||"object"!=typeof A)return;const I=c[g],C={...I,...A};Object.keys(A).some(g=>!Object.prototype.hasOwnProperty.call(I,g)||!Object.is(I[g],C[g]))&&(c={...c,[g]:C})},toPersistenceSnapshot=()=>({kills:n,month:{deaths:c.month.deaths,goldCap:c.month.goldCap,month:c.month.month,startingGold:s.month.startingGold??0,startingKills:s.month.startingKills??n,startingXp:s.month.startingXp??0,currentXp:r??0,xpValue:c.month.xpValue,year:c.month.year}}),emitRead=()=>{const g=read();o.forEach(A=>A(g))},emitPersistenceSnapshot=()=>{const g=toPersistenceSnapshot();i.forEach(A=>A(g))},emitChange=({persist:g=!1}={})=>{emitRead(),g&&emitPersistenceSnapshot()},ensureScopeBaseline=g=>{const A=s[g];A.initialized||null==a||(A.initialized=!0,A.startingGold=a,A.startingKills=n,A.startingXp=r>0?r:null)},refreshScope=g=>{const A=s[g];if(!A.initialized||null==A.startingGold||null==a)return;const I={kills:n-A.startingKills,goldGained:a-A.startingGold};null==A.startingXp&&r>0&&(A.startingXp=r),null!=A.startingXp&&r>0&&(I.xpPercent=Number((100*(r-A.startingXp)).toFixed(2))),updateScope(g,I)},refreshAllScopes=()=>{ensureScopeBaseline("instance"),ensureScopeBaseline("session"),ensureScopeBaseline("month"),refreshScope("instance"),refreshScope("session"),refreshScope("month"),emitChange({persist:!0})},incrementXpValue=g=>{!Number.isFinite(g)||g<=0||(updateScope("instance",{xpValue:c.instance.xpValue+g}),updateScope("session",{xpValue:c.session.xpValue+g}),updateScope("month",{xpValue:c.month.xpValue+g}),emitChange({persist:!0}))},setMonthGoldCap=g=>{!Number.isFinite(g)||g<0||(updateScope("month",{goldCap:g}),emitChange({persist:!0}))};return{destroy:()=>{o.clear(),i.clear()},handleAchievement:g=>{if("TotalCreaturesKilled"!==g?.name)return{requestGoldCap:!1};const A=toInteger(g?.value,n);return null!=A&&(n=A,refreshAllScopes()),{requestGoldCap:!0}},handleStatus:g=>{a=toInteger(g?.gold,a),r=toStatusXp(g)??r,refreshAllScopes()},handleTimeList:g=>{const I=toInteger(g?.mon,null),C=toInteger(g?.year,null);if(null!=I){if(I!==c.month.month||null!=C&&C!==c.month.year){const g=A();return s.month={initialized:null!=a&&null!=r,startingGold:a,startingKills:n,startingXp:r,startedAt:g},c={...c,month:{...makeMonthScope(g),year:C??0,month:I}},void emitChange({persist:!0})}updateScope("month",{year:C??c.month.year,month:I}),emitChange({persist:!0})}},processStreamEntries:g=>{Array.isArray(g)&&0!==g.length&&g.forEach(g=>{if(g?.isPrompt)return;const A=stripHtml(g?.html).trim(),I=A.match(wA);if(I)return void incrementXpValue(toInteger(I[1],0));const C=A.match(SA);C&&setMonthGoldCap(toInteger(C[1],0))})},read,resetInstance:()=>{const g=A();s.instance={initialized:null!=a&&null!=r,startingGold:a,startingKills:n,startingXp:r,startedAt:g},c={...c,instance:makeScope(g)},emitChange()},snapshot:()=>cloneSnapshot(c),subscribe:g=>(o.add(g),()=>o.delete(g)),subscribePersistence:g=>(i.add(g),()=>i.delete(g)),toPersistenceSnapshot,updateInstance:g=>{updateScope("instance",g),emitChange()},updateMonth:g=>{updateScope("month",g),emitChange()},updateSession:g=>{updateScope("session",g),emitChange()}}},createPlayStatsStore=({playStatsModel:g}={})=>{const A=g??createPlayStatsModel(),C=(0,I.create)(()=>({...A.read(),updateInstance:g=>A.updateInstance(g),updateSession:g=>A.updateSession(g),updateMonth:g=>A.updateMonth(g),resetInstance:()=>A.resetInstance()})),refreshStats=()=>{C.setState(A.read())},e=A.subscribe(refreshStats);return Object.defineProperty(C,"destroy",{value:()=>{e()},enumerable:!1}),C},createRoomStore=({roomModel:g,eventBus:A})=>{const readRoom=()=>g.read?.()??g.snapshot(),C=(0,I.create)(()=>({...readRoom(),updateRoom:A=>g.update(A)})),refreshRoom=()=>{C.setState(readRoom())};return A.on(x.ROOM_UPDATED,refreshRoom),C},createStatsStore=({statsModel:g,eventBus:A})=>{const C=(0,I.create)(()=>({...g.read(),updateStats:A=>g.update(A)})),refreshStats=()=>{C.setState(g.read())};return A.on(x.STATS_UPDATED,refreshStats),C},immer$1=g=>(I,C,e)=>(e.setState=(g,C,...e)=>I("function"==typeof g?(0,A.produce)(g):g,C,...e),g(e.setState,C,e)),MA=Object.freeze({purpleGalaxy:"https://cdn.pixabay.com/photo/2018/12/18/22/30/background-3883188_960_720.jpg",blueGalaxy:"https://cdn.pixabay.com/photo/2022/06/08/05/47/stars-7249785_960_720.jpg",orangeGalaxy:"https://cdn.pixabay.com/photo/2015/08/28/11/27/space-911785_960_720.jpg",greenGalaxy:"https://cdn.pixabay.com/photo/2017/08/15/08/23/stars-2643089_960_720.jpg",stars:"https://s3-us-west-2.amazonaws.com/s.cdpn.io/1231630/stars.png",darkForest:"https://i.pinimg.com/originals/44/6e/3b/446e3b79395a287ca32f7977dd83b290.jpg"}),TA=Object.freeze(Object.keys(MA)),NA=new Map(Object.entries(MA).map(([g,A])=>[A,g])),canonicalizeBackgroundImageValue=g=>{if("string"!=typeof g)return"";const A=g.trim();return A?Object.hasOwn(MA,A)?A:NA.get(A)??A:""},resolveBackgroundImageSource=g=>{const A=canonicalizeBackgroundImageValue(g);return MA[A]??A},GA=deepFreeze({background:{primary:"#0d0d0d",panel:"#141414",header:"#1a1a1a",modal:"#1e1e1e"},text:{primary:"#FFF5D6",secondary:"#C0B090",muted:"#706050",accent:"#FFD700"},game:{hp:"#e05555",mp:"#5588e0",ep:"#55c055",wp:"#e0a035",nl:"#a055e0",timerActive:"#55aaff",timerCritical:"#ff5533"},spacing:{unit:4},radius:{panel:4,tag:2},theme:{backgroundImage:"",fontSize:12,displayFontFamily:Xg,displayFontSize:14,backgroundOpacity:.5,hue:0},replacement:{bracketAllyColor:"#ffffff",bracketEnemyColor:"#ff0000",targetBorderColor:"rgb(255, 0, 0)",selfNameColor:"lightpink",infoColor:"cadetblue",unknownNameColor:"grey",npcTagBracketColor:"red",damageNumberBracketColor:"#808080"}}),cloneTokens$1=g=>structuredClone(g),mergeTokenPatch=(g,A)=>{const I=cloneTokens$1(g);if(!isPlainObject(A))return I;const applyPatch=(g,A)=>{for(const[I,C]of Object.entries(A))void 0!==C&&(Array.isArray(C)?g[I]=structuredClone(C):isPlainObject(C)&&isPlainObject(g[I])?applyPatch(g[I],C):g[I]=structuredClone(C))};return applyPatch(I,A),I},normalizeThemeTokens=g=>{if(!isPlainObject(g))return g;const A={...g};return Object.hasOwn(g,"backgroundImage")&&(A.backgroundImage=canonicalizeBackgroundImageValue(g.backgroundImage)),Object.hasOwn(g,"displayFontFamily")&&(A.displayFontFamily=normalizeDisplayFontFamily(g.displayFontFamily)),Object.hasOwn(g,"displayFontSize")&&(A.displayFontSize=normalizeDisplayFontSize(g.displayFontSize)),{...A}},normalizeTokens=g=>({...g,theme:normalizeThemeTokens(g.theme)}),createThemeStore=({eventBus:g,persistenceStore:A}={})=>{const C=normalizeTokens(mergeTokenPatch(GA,{theme:A&&"function"==typeof A.get?normalizeThemeTokens(A.get("theme")):void 0})),e=(0,I.create)(immer$1(()=>({tokens:C,updateTokens:I=>{const C=normalizeTokens(mergeTokenPatch(e.getState().tokens,I));A&&"function"==typeof A.set&&A.set("theme",C.theme),e.setState({tokens:C}),g.emit(R.THEME_CHANGED,{tokens:cloneTokens$1(C)})},resetTokens:()=>{const I=cloneTokens$1(GA);A&&"function"==typeof A.set&&A.set("theme",I.theme),e.setState({tokens:I}),g.emit(R.THEME_CHANGED,{tokens:cloneTokens$1(I)})}})));return e},createTimerStore=({timerModel:g,eventBus:A})=>{const readTimers=()=>g.read?.()??g.snapshot(),C=(0,I.create)(()=>({timers:readTimers(),addTimer:(A,I,C="",e)=>g.add(A,I,C,e),removeTimer:A=>g.remove(A),clearAll:()=>g.clearAll()})),refreshTimers=()=>{C.setState({timers:readTimers()})};return A.on(x.TIMER_STARTED,refreshTimers),A.on(x.TIMER_UPDATED,refreshTimers),A.on(x.TIMER_EXPIRED,refreshTimers),A.on(x.TIMER_CLEARED,refreshTimers),C},createUiStore=({persistenceStore:g}={})=>(0,I.create)(immer$1((A,I)=>({activeTab:{},modalOpen:null,settings:g?.get?.("ui")??{},netflixMode:!1,setActiveTab:(g,I)=>A(A=>{A.activeTab[g]=I}),openModal:g=>A({modalOpen:g}),closeModal:()=>A({modalOpen:null}),setSetting:(C,e)=>{const t={...I().settings,[C]:e};A(g=>{g.settings=t}),g?.set?.("ui",t)},setNetflixMode:g=>A(A=>{A.netflixMode=Boolean(g)})}))),fetchLiveCharacter=async(g,{fetchFn:A=null}={})=>{const I="string"==typeof g?g.trim():"";if(!I)return null;const{outcome:C,data:e}=await fetchPublicProfileForSync(I,{fetchFn:A});if(C!==pg.OK||!e)return null;const t=sg.safeParse(e);return t.success?t.data:null},createMessageRegistry=()=>{const g=new Map;return{register:(A,I)=>(g.set(A,I),I),lookup:A=>g.get(A)??null,listTypes:()=>[...g.keys()].sort((g,A)=>g.localeCompare(A))}},kA=["#000000","#800000","#008000","#808000","#000080","#800080","#008080","#c0c0c0","#808080","#ff0000","#00ff00","#ffff00","#0000ff","#ff00ff","#00ffff","#ffffff"],DA=[0,95,135,175,215,255],hex2=g=>g.toString(16).padStart(2,"0"),jA={};for(let Ze=0;Ze<16;Ze++)jA[Ze]=kA[Ze];for(let Ze=16;Ze<=231;Ze++){const g=Ze-16,A=Math.floor(g/36),I=Math.floor(g%36/6),C=g%6,e=DA[A],t=DA[I],n=DA[C];jA[Ze]=`#${hex2(e)}${hex2(t)}${hex2(n)}`}for(let Ze=232;Ze<=255;Ze++){const g=8+10*(Ze-232);jA[Ze]=`#${hex2(g)}${hex2(g)}${hex2(g)}`}var PA=/\x1b\[([0-9;]*)m|([^\x1b]+)/g,stdColor=(g,A)=>jA[A?g+8:g],parseAnsi=g=>{const A=[];let I,C=null,e=null,t=!1;for(PA.lastIndex=0;null!==(I=PA.exec(g));){if(void 0!==I[2]){A.push({text:I[2],fg:C,bg:e,bold:t});continue}const g=I[1],n=0===g.length?[0]:g.split(";").map(Number);let a=0;for(;a<n.length;){const g=n[a];0===g?(C=null,e=null,t=!1):1===g?t=!0:g>=30&&g<=37?C=stdColor(g-30,t):g>=40&&g<=47?e=stdColor(g-40,!1):g>=90&&g<=97?C=jA[g-90+8]:g>=100&&g<=107?e=jA[g-100+8]:38===g&&5===n[a+1]&&void 0!==n[a+2]?(C=jA[n[a+2]]??null,a+=2):48===g&&5===n[a+1]&&void 0!==n[a+2]&&(e=jA[n[a+2]]??null,a+=2),a++}}return A},BA=/\x1b\[[0-9;]*m/g,OA=/^\d+h,\s*\d+m,\s*\d+e,\s*\d+w/,parsePromptLine=g=>{const A=g.replace(BA,"").trim();return{isPrompt:OA.test(A),text:A}},renderCombatLine=g=>{const A=resolveTimestamp(g);return createDisplayLine({html:renderStructuredRowHtml(g,"combat"),timestamp:A,isPrompt:!1,isMonospace:!1,shouldLog:g.shouldLog??!0,buffer:"combat"})},renderSystemLine=g=>{const A=resolveTimestamp(g);return createDisplayLine({html:renderStructuredRowHtml(g,"system"),timestamp:A,isPrompt:!1,isMonospace:!1,shouldLog:g.shouldLog??!0,buffer:"system"})},LA=Object.freeze({main:renderColorLine,system:renderSystemLine,combat:renderCombatLine,replacement:renderReplacementLine}),isMessageInput=g=>Boolean(g&&"object"==typeof g&&!Array.isArray(g)&&"string"==typeof g.event&&Object.prototype.hasOwnProperty.call(g,"payload")),parseRawLine=(g,A,I)=>{const C=A(g),e=I(g);return{type:"main",buffer:"main",segments:C,metadata:{text:e.text,source:"raw"},isPrompt:e.isPrompt,isMonospace:e.isPrompt,shouldLog:!0}},withTimestamp=(g,A)=>null!=g.timestamp||null!=g.metadata?.timestamp?g:{...g,timestamp:A()},validateDependencies=(g,A,I)=>{if(!g||"function"!=typeof g.addLines)throw new TypeError("createMessagePipeline requires a streamModel with addLines(lines).");if(null!=I&&"function"!=typeof I.addLines)throw new TypeError("createMessagePipeline side transcript models must expose addLines(lines).");if(!A||"function"!=typeof A.register||"function"!=typeof A.lookup)throw new TypeError("createMessagePipeline requires a registry with register(type, renderer) and lookup(type).")},createMessagePipeline=({streamModel:g,registry:A=createMessageRegistry(),parseAnsi:I=parseAnsi,parsePromptLine:C=parsePromptLine,parseStreamEventLine:e=parseStreamEventLine,renderColorLine:t=LA.main,renderCombatLine:n=LA.combat,renderReplacementLine:a=LA.replacement,renderSystemLine:r=LA.system,systemStreamModel:o=null,combatStreamModel:i=null,now:l=Date.now})=>{validateDependencies(g,A,o),validateDependencies(g,A,i),A.register("main",t),A.register("system",r),A.register("combat",n),A.register("replacement",a);const resolveTargetModel=A=>"system"===A?o??g:"combat"===A?i??g:g,renderAndStore=g=>{if(!g)return null;const I=A.lookup(g.type);if(!I)return null;const C=I(withTimestamp(g,l));return resolveTargetModel(C?.buffer??g.buffer).addLines([C]),C};function process(g,A){return"string"==typeof g&&1===arguments.length?renderAndStore(parseRawLine(g,I,C)):"string"==typeof g&&arguments.length>1?renderAndStore(e(g,A)):isMessageInput(g)?renderAndStore(e(g.event,g.payload)):null}return{process,registry:A}},parseLevel=g=>{if("number"==typeof g&&Number.isFinite(g))return g;if("string"!=typeof g)return 0;const A=g.match(/\d+/);return A?Number.parseInt(A[0],10):0},buildVitalsStatsPatch=g=>isPlainObject(g)?{hp:{current:toNumber(g.hp),max:toNumber(g.maxhp)},mp:{current:toNumber(g.mp),max:toNumber(g.maxmp)},ep:{current:toNumber(g.ep),max:toNumber(g.maxep)},wp:{current:toNumber(g.wp),max:toNumber(g.maxwp)},nl:{current:toNumber(g.nl),max:toNumber(g.maxnl,100)}}:null,buildVitalsCharacterPatch=g=>isPlainObject(g)?{balance:toBooleanFlag(g.bal),equilibrium:toBooleanFlag(g.eq),...buildCharacterDetailPatch(g)??{}}:null,buildStatusSync=g=>{if(!isPlainObject(g))return null;const A=toPercent(g.xp),I=toTrimmedString(g.class);return{statsPatch:{gold:toNumber(g.gold),bank:toNumber(g.bank),...null==A?{}:{xp:A,xpToNext:Math.max(0,100-A)}},characterPatch:{...toTrimmedString(g.name)?{name:g.name.trim()}:{},level:parseLevel(g.level),...buildCharacterDetailPatch(g)??{}},className:I,city:toTrimmedString(g.city)}},isBridgeEnvelope=g=>isPlainObject(g)&&"string"==typeof g.event&&Object.prototype.hasOwnProperty.call(g,"data"),createGmcpIngressController=({adapter:g,eventBus:A,timerModel:I,streamModel:C,systemStreamModel:e,combatStreamModel:t,statsModel:n,partyModel:a,roomModel:r,characterModel:o,targetModel:i,defenceModel:l,classBalanceController:s,playerDirectory:c,roomOccupantsModel:u=createRoomOccupantsModel({roomModel:r,playerDirectory:c}),partyAutomationModel:d=createPartyAutomationModel({characterModel:o,partyModel:a,playerDirectory:c,sendCommand:A=>g.send(A)})}={})=>{const m=createMessagePipeline({streamModel:C,systemStreamModel:e,combatStreamModel:t}),p=[],subscribe=(g,I)=>{p.push(A.on(g,I))},processDisplayBridge=g=>{isBridgeEnvelope(g)&&m.process(g.event,g.data)};return subscribe(E.STREAM_LINE,g=>{isBridgeEnvelope(g)&&(applyCharacterAfflictionEvent(o,g.event,g.data),d.processEvent(g.event,g.data),processDisplayBridge(g))}),subscribe(E.TIMER_STARTED,g=>{if(!isBridgeEnvelope(g)||"nexSkillMatch"!==g.event)return;if("self"!==g.data?.user)return;const A=toTrimmedString(g.data?.id);if(!A)return;const C=I.get(A);C&&I.start(C.id)}),subscribe(E.DEFENCE_GAINED,g=>{if(!isBridgeEnvelope(g))return;const A=extractNamedValue(g.data);A&&l.gain(A),processDisplayBridge(g)}),subscribe(E.DEFENCE_LOST,g=>{if(!isBridgeEnvelope(g))return;const A=extractNamedValue(g.data);A&&l.lose(A),processDisplayBridge(g)}),subscribe(E.TARGET_CHANGED,g=>{isBridgeEnvelope(g)&&(i.setIdentity(g.data),processDisplayBridge(g))}),subscribe(E.STATS_UPDATED,g=>{if(isBridgeEnvelope(g)){if("Char.Vitals"===g.event){const A=buildVitalsStatsPatch(g.data),I=buildVitalsCharacterPatch(g.data),C=s.updateFromVitals(g.data);A&&n.update(A),(I||C)&&o.update({...I??{},...C??{}})}if("Char.Status"===g.event){const A=buildStatusSync(g.data);if(!A)return;n.update(A.statsPatch),o.update(A.characterPatch),a.setSelf(A.characterPatch.name??g.data?.name),c.rememberPlayerStatus({...g.data,name:A.characterPatch.name??g.data?.name,city:A.city,fullname:g.data?.fullname}),A.className&&o.setClass(A.className)}}}),subscribe(E.ROOM_UPDATED,g=>{isBridgeEnvelope(g)&&u.apply(g.event,g.data)}),subscribe(E.CLASS_CHANGED,g=>{if(!isBridgeEnvelope(g))return;const A=toTrimmedString(g.data?.class)??toTrimmedString(g.data);A&&o.setClass(A)}),Object.freeze({destroy:()=>{p.forEach(g=>g?.())}})},zA=Object.freeze({}),areDisplayHostSettingsEqual=(g,A)=>g.showPrompts===A.showPrompts&&g.showTimestamps===A.showTimestamps,freezeDisplayHostSettings=g=>Object.freeze(g),readDisplayHostSettings=g=>{const A=g?.()??zA;return freezeDisplayHostSettings({showPrompts:Boolean(A.show_prompts),showTimestamps:Boolean(A.show_timestamps)})},resolvePayloadSnapshot$2=(g,A)=>{if(!A||"object"!=typeof A||"string"!=typeof A.key)return null;if(!("value"in A))return null;switch(A.key){case"show_prompts":{const I=Boolean(A.value);return I===g.showPrompts?g:freezeDisplayHostSettings({...g,showPrompts:I})}case"single_prompt":{const I=!Boolean(A.value);return I===g.showPrompts?g:freezeDisplayHostSettings({...g,showPrompts:I})}case"show_timestamps":{const I=Boolean(A.value);return I===g.showTimestamps?g:freezeDisplayHostSettings({...g,showTimestamps:I})}default:return null}},createHostDisplaySettingsModel=({eventBus:g,readHostSettings:A})=>{if(!g||"function"!=typeof g.on)throw new Error("createHostDisplaySettingsModel requires an eventBus with on(topic, listener).");if("function"!=typeof A)throw new Error("createHostDisplaySettingsModel requires readHostSettings().");let I=readDisplayHostSettings(A);const C=new Set,notifyListeners=()=>{for(const g of C)g()},commitSnapshot=g=>(!g||areDisplayHostSettingsEqual(I,g)||(I=g,notifyListeners()),I),syncFromHost=()=>commitSnapshot(readDisplayHostSettings(A)),handleHostSettingsChanged=g=>{const A=resolvePayloadSnapshot$2(I,g);A&&commitSnapshot(A)},e=g.on(R.HOST_SETTINGS_CHANGED,handleHostSettingsChanged),t=g.on(R.SYSTEM_PHASE,syncFromHost),subscribe=g=>(C.add(g),()=>{C.delete(g)}),getSnapshot=()=>I,destroy=()=>{e?.(),t?.(),C.clear()};return Object.freeze({destroy,getSnapshot,subscribe})},ZA=Object.freeze({}),areHostSettingsEqual=(g,A)=>g.echo_input===A.echo_input&&g.echo_gmcp===A.echo_gmcp&&g.single_prompt===A.single_prompt&&g.show_timestamps===A.show_timestamps,freezeHostSettings=g=>Object.freeze(g),readHostSettingsFromHost=g=>{const A=g?.()??ZA;return freezeHostSettings({echo_input:Boolean(A.echo_input),echo_gmcp:Boolean(A.echo_gmcp),single_prompt:!Boolean(A.show_prompts),show_timestamps:Boolean(A.show_timestamps)})},resolvePayloadSnapshot$1=(g,A)=>{if(!A||"object"!=typeof A||"string"!=typeof A.key)return null;if(!("value"in A))return null;switch(A.key){case"echo_input":{const I=Boolean(A.value);return I===g.echo_input?g:freezeHostSettings({...g,echo_input:I})}case"echo_gmcp":{const I=Boolean(A.value);return I===g.echo_gmcp?g:freezeHostSettings({...g,echo_gmcp:I})}case"single_prompt":{const I=Boolean(A.value);return I===g.single_prompt?g:freezeHostSettings({...g,single_prompt:I})}case"show_prompts":{const I=!Boolean(A.value);return I===g.single_prompt?g:freezeHostSettings({...g,single_prompt:I})}case"show_timestamps":{const I=Boolean(A.value);return I===g.show_timestamps?g:freezeHostSettings({...g,show_timestamps:I})}default:return null}},createHostSettingsModel=({eventBus:g,readHostSettings:A})=>{if(!g||"function"!=typeof g.on)throw new Error("createHostSettingsModel requires an eventBus with on(topic, listener).");if("function"!=typeof A)throw new Error("createHostSettingsModel requires readHostSettings().");let I=readHostSettingsFromHost(A);const C=new Set,notifyListeners=()=>{for(const g of C)g()},commitSnapshot=g=>(!g||areHostSettingsEqual(I,g)||(I=g,notifyListeners()),I),syncFromHost=()=>commitSnapshot(readHostSettingsFromHost(A)),handleHostSettingsChanged=g=>{const A=resolvePayloadSnapshot$1(I,g);A&&commitSnapshot(A)},e=g.on(R.HOST_SETTINGS_CHANGED,handleHostSettingsChanged),t=g.on(R.SYSTEM_PHASE,syncFromHost),subscribe=g=>(C.add(g),()=>{C.delete(g)}),getSnapshot=()=>I,destroy=()=>{e?.(),t?.(),C.clear()};return Object.freeze({destroy,getSnapshot,subscribe})},FA=Object.freeze({}),areHostLayoutsEqual=(g,A)=>g.display_tabstrip===A.display_tabstrip,freezeHostLayout=g=>Object.freeze(g),readHostLayoutFromHost=g=>{const A=g?.()??FA;return freezeHostLayout({display_tabstrip:"boolean"!=typeof A.tabSetEnableTabStrip||A.tabSetEnableTabStrip})},resolvePayloadSnapshot=(g,A)=>{if(!A||"object"!=typeof A||"string"!=typeof A.key)return null;if(!("value"in A))return null;if("display_tabstrip"===A.key){const I=Boolean(A.value);return I===g.display_tabstrip?g:freezeHostLayout({...g,display_tabstrip:I})}return null},createHostLayoutModel=({eventBus:g,readHostLayout:A})=>{if(!g||"function"!=typeof g.on)throw new Error("createHostLayoutModel requires an eventBus with on(topic, listener).");if("function"!=typeof A)throw new Error("createHostLayoutModel requires readHostLayout().");let I=readHostLayoutFromHost(A);const C=new Set,notifyListeners=()=>{for(const g of C)g()},commitSnapshot=g=>(!g||areHostLayoutsEqual(I,g)||(I=g,notifyListeners()),I),syncFromHost=()=>commitSnapshot(readHostLayoutFromHost(A)),handleHostSettingsChanged=g=>{const A=resolvePayloadSnapshot(I,g);A?commitSnapshot(A):syncFromHost()},e=g.on(R.HOST_SETTINGS_CHANGED,handleHostSettingsChanged),t=g.on(R.SYSTEM_PHASE,syncFromHost),subscribe=g=>(C.add(g),()=>{C.delete(g)}),getSnapshot=()=>I,destroy=()=>{e?.(),t?.(),C.clear()};return Object.freeze({destroy,getSnapshot,subscribe})},hasPersistenceAdapter=g=>g&&"function"==typeof g.getVariable&&"function"==typeof g.setVariable,createPlayStatsPersistence=({adapter:g}={})=>{if(!hasPersistenceAdapter(g))return null;const A=createPersistenceStore({adapter:g,sliceKey:$g.GAME_STATS,schema:AA,migrate:migrateGameStatsPersistence});return{read:()=>A.getAll(),write:g=>{A.set("kills",g?.kills??0),A.set("month",g?.month??{})}}},safeUnsubscribe=g=>{"function"==typeof g&&g()},resolveStreamEntries=(g,A)=>{const I=g.getSnapshot(),C=Array.isArray(I?.buffer)?I.buffer:[];if(0===C.length)return{entries:[],lastProcessedStreamId:-1};const e=C.filter(g=>g.id>A);return{entries:e,lastProcessedStreamId:e.length>0?e[e.length-1].id:A}},createPlayStatsController=({adapter:g,now:A,persistence:I=createPlayStatsPersistence({adapter:g}),streamModel:C}={})=>{const e=createPlayStatsModel({persistedGameStats:I?.read?.(),now:A}),t=[];let n=-1,a=!1;if(I&&"function"==typeof I.write&&t.push(e.subscribePersistence(g=>{I.write(g)})),g&&"function"==typeof g.on&&(t.push(g.on("Char.Status",e.handleStatus)),t.push(g.on("IRE.Misc.Achievement",A=>{e.handleAchievement(A)?.requestGoldCap&&"function"==typeof g.send&&g.send("goldcap")})),t.push(g.on("IRE.Time.List",e.handleTimeList))),C&&"function"==typeof C.subscribe&&"function"==typeof C.getSnapshot){const processStreamSnapshot=()=>{const g=resolveStreamEntries(C,n);n=g.lastProcessedStreamId,e.processStreamEntries(g.entries)};t.push(C.subscribe(processStreamSnapshot))}return{destroy:()=>{a||(a=!0,t.splice(0).forEach(safeUnsubscribe))},model:e}},KA=(0,e.createContext)(null),useNexGui=()=>{const g=(0,e.useContext)(KA);if(null===g)throw new Error("useNexGui must be used inside NexGuiContext.Provider");return g},NexGuiMountRoot=()=>null,createReactMountLifecycle=({contextValue:g,RootComponent:A=NexGuiMountRoot}={})=>{const I=new Map;let C=!1;const unmountContainer=g=>{const A=I.get(g);A&&(I.delete(g),A.unmount())},mount=n=>{if(C)throw new Error("[nexGui4] Cannot mount a destroyed nexGui instance.");if(!n||"object"!=typeof n||1!==n.nodeType)throw new TypeError("[nexGui4] mount(container) requires a DOM element container.");unmountContainer(n);const a=(0,t.createRoot)(n);return I.set(n,a),a.render((0,e.createElement)(KA.Provider,{value:g},(0,e.createElement)(A))),{unmount:()=>{unmountContainer(n)}}},destroy=()=>{if(!C){C=!0;for(const g of[...I.keys()])unmountContainer(g)}};return Object.freeze({mount,destroy,isMounted:()=>I.size>0})},NOOP$1=()=>{},normalizeCommand=g=>"function"==typeof g?g:NOOP$1,createPlatformTabsController=()=>{let g=NOOP$1,A=NOOP$1,I=NOOP$1,C=NOOP$1,e=NOOP$1,hasSavedLayout=()=>!1;const resetNativeDisplayCommands=()=>{g=NOOP$1,A=NOOP$1},resetLayoutCommands=()=>{I=NOOP$1,C=NOOP$1,e=NOOP$1,hasSavedLayout=()=>!1};return Object.freeze({mountNativeDisplay:(...A)=>g(...A),unmountNativeDisplay:(...g)=>A(...g),configureNativeDisplayCommands:(I={})=>{const C=normalizeCommand(I.mountNativeDisplay),e=normalizeCommand(I.unmountNativeDisplay);return g=C,A=e,()=>{g===C&&A===e&&resetNativeDisplayCommands()}},resetNativeDisplayCommands,applyLayoutPreset:(...g)=>I(...g),saveLayout:(...g)=>C(...g),restoreLayout:(...g)=>e(...g),hasSavedLayout:(...g)=>hasSavedLayout(...g),configureLayoutCommands:(g={})=>{const A=normalizeCommand(g.applyLayoutPreset),t=normalizeCommand(g.saveLayout),n=normalizeCommand(g.restoreLayout),a="function"==typeof g.hasSavedLayout?g.hasSavedLayout:()=>!1;return I=A,C=t,e=n,hasSavedLayout=a,()=>{I===A&&C===t&&e===n&&hasSavedLayout===a&&resetLayoutCommands()}},resetLayoutCommands})};(0,A.setAutoFreeze)(!1);var YA="1.0.7",resolveRuntimePorts=(g={})=>{const A=createBrowserRuntimePorts(),I=g&&"object"==typeof g?g:{};return Object.freeze({...A,...I})},resolveConfiguredDefenceList=g=>normalizeConfiguredDefenceList(g.getConfiguredDefences?.()),resolveActiveDefenceList=(g,A=[])=>normalizeConfiguredDefenceList(g.getActiveDefences?.(A)),seedInitialDisplayTheme=({adapter:g,persistenceStore:A})=>{if(void 0!==g.getVariable("nexGui4Settings")?.settings)return;const I=g.getHostSettings?.()??{},C=A.get("theme");A.set("theme",{...C,displayFontFamily:readHostDisplayFontFamily(I),displayFontSize:readHostDisplayFontSize(I)})},withRelationshipCommandTracking=(g,A)=>{const I=assertAdapterContract(g);if(!A||"function"!=typeof A.trackRelationshipCommand)return I;const C=Object.create(I),e=I.send.bind(I);return Object.defineProperty(C,"send",{value:g=>(A.trackRelationshipCommand(g),e(g)),enumerable:!0}),assertAdapterContract(C)},resolveAdapter=({adapter:g,playerRelationships:A}={})=>withRelationshipCommandTracking(g??createNexusAdapter(),A),createNexGui=({adapter:g,debugEnabled:A=!1,traceLimit:I=500,autoStart:C=!0,playerDirectory:e,playerRelationships:t,startupPhaseHandlers:n,remoteService:a,runtimePorts:r}={})=>{const o=resolveRuntimePorts(r),i=t??createPlayerRelationshipsModel(),l=resolveAdapter({adapter:g,playerRelationships:i}),s=createEventBus({label:"nexgui4",debugEnabled:A,traceLimit:I}),c=e??createPlayerDirectoryModel({fetchImpl:o.fetch,now:o.now}),u=createPlayerDirectoryDiagnosticsModel({now:o.now}),d=createPlayerDirectoryLifecycle({playerDirectory:c,diagnostics:u}),m=createPlatformTabsController(),p=createHostDisplaySettingsModel({eventBus:s,readHostSettings:()=>l.getHostSettings?.()??{}}),h=createHostSettingsModel({eventBus:s,readHostSettings:()=>l.getHostSettings?.()??{}}),y=createHostLayoutModel({eventBus:s,readHostLayout:()=>l.getHostLayoutSnapshot?.()??{}}),b=createTimerModel({eventBus:s,now:o.now,setTimer:o.setTimeout,clearTimer:o.clearTimeout}),x=createScrollbackSessionStore({storage:createIndexedDbManager(),setTimeoutFn:o.setTimeout,clearTimeoutFn:o.clearTimeout,logger:console}),v=createStreamModel({onAppend:g=>x.append(g),onClear:()=>{x.clear().catch(g=>{console.error("[nexGui4] Failed to clear scrollback session.",g)})}}),w=createTranscriptModel({cap:5e3}),S=createTranscriptModel({cap:5e3}),M=createStatsModel({eventBus:s}),T=createPartyModel({eventBus:s}),N=createRoomModel({eventBus:s}),G=createCharacterModel({eventBus:s}),D=createTargetModel({eventBus:s}),j=createDefenceModel({eventBus:s}),P=createFeedModel({cap:5e3}),B=createClassBalanceController(),O=createRoomOccupantsModel({roomModel:N,playerDirectory:c}),L=createPlayStatsController({adapter:l,streamModel:v,now:o.now}),z=createPartyAutomationModel({characterModel:G,partyModel:T,playerDirectory:c,sendCommand:g=>l.send(g)}),Z=resolveConfiguredDefenceList(l),F=resolveActiveDefenceList(l,Z);j.replaceAll(F);const K=createPersistenceStore({adapter:l,sliceKey:$g.SETTINGS});seedInitialDisplayTheme({adapter:l,persistenceStore:K});const Y=createPersistenceStore({adapter:l,sliceKey:$g.UI,schema:IA,migrate:migrateUiPersistence});for(const[E,R]of Object.entries(K.get("party")))T.setSetting(E,R);s.on(R.PARTY_UPDATED,({settings:g})=>{K.set("party",g)});const W=createGmcpIngressController({adapter:l,eventBus:s,timerModel:b,streamModel:v,systemStreamModel:w,combatStreamModel:S,statsModel:M,partyModel:T,roomModel:N,characterModel:G,targetModel:D,defenceModel:j,classBalanceController:B,playerDirectory:c,roomOccupantsModel:O,partyAutomationModel:z}),V=createDefenceStore({defenceModel:j,eventBus:s,configuredDefences:Z}),U=Object.freeze({timers:createTimerStore({timerModel:b,eventBus:s}),stream:v,stats:createStatsStore({statsModel:M,eventBus:s}),party:createPartyStore({partyModel:T,eventBus:s}),room:createRoomStore({roomModel:N,eventBus:s}),character:createCharacterStore({characterModel:G,eventBus:s}),target:createTargetStore({targetModel:D,eventBus:s}),defence:V,theme:createThemeStore({eventBus:s,persistenceStore:K}),ui:createUiStore({persistenceStore:K}),feed:createFeedStore({feedModel:P}),playStats:createPlayStatsStore({playStatsModel:L.model}),systemStream:w,combatStream:S});let H=!1,Q=null;const syncActiveDefencesFromHost=()=>{const g=U.defence.getState().configuredDefences??[];j.replaceAll(resolveActiveDefenceList(l,g))},scheduleActiveDefenceResync=()=>{null!=Q&&o.clearTimeout(Q),Q=o.setTimeout(()=>{Q=null,H||syncActiveDefencesFromHost()},0)};s.on(E.CLASS_CHANGED,scheduleActiveDefenceResync);const X=registerGmcpBindings({adapter:l,eventBus:s,playerDirectory:c,playerDirectoryLifecycle:d,playerRelationships:i,playerDirectoryDiagnostics:u,remoteService:a,fetchFn:o.fetch}),q={adapter:l,eventBus:s,hostDisplaySettingsModel:p,hostSettingsModel:h,hostLayoutModel:y,playerDirectory:c,playerDirectoryLifecycle:d,playerDirectoryDiagnostics:u,playerRelationships:i,stores:U,streamModel:v,scrollbackSession:x,persistenceStore:K,scrollbackLayoutStore:Y,platformTabs:m,formatInlineNames:g=>highlightInlineNamesInText(g,{contextValue:q})},_=createReactMountLifecycle({contextValue:q});let $=null;const initializeScrollbackSession=async()=>{try{if(await x.initialize(),H)return;await x.clear()}catch(g){if(H)return;console.warn("[nexGui4] Scrollback session startup degraded; continuing.",g)}},gg=createStartupOrchestrator({adapter:l,eventBus:s,phaseHandlers:{...n,[eA.PREPARING]:async g=>{await initializeScrollbackSession(),await(n?.[eA.PREPARING]?.(g))}},setTimeoutFn:o.setTimeout,clearTimeoutFn:o.clearTimeout}),startRuntime=()=>($??=gg.start(),$.catch(()=>{}),$),mount=g=>{if(H)throw new Error("[nexGui4] Cannot mount a destroyed nexGui instance.");return _.mount(g)},destroy=()=>{H||(H=!0,null!=Q&&(o.clearTimeout(Q),Q=null),_.destroy(),gg.destroy(),p.destroy(),h.destroy(),y.destroy(),X?.(),W.destroy(),L.destroy(),U.playStats.destroy?.(),s.emit(R.SYSTEM_DESTROYED,{version:YA}),b.destroy(),P.destroy(),T.destroy(),N.destroy(),M.destroy(),G.destroy(),D.destroy(),j.destroy(),L.model.destroy(),B.destroy(),x.destroy(),d.destroy?.(),c.destroy?.(),i.destroy?.(),clearRelationshipNameFormatterCache(q),clearMessageReplacementContextCache(),m.resetNativeDisplayCommands(),m.resetLayoutCommands(),l.destroy(),s.clear())},Ag=composePublicApi({version:YA,startupOrchestrator:gg,isMounted:()=>_.isMounted(),character:{characterModel:G},target:{targetModel:D,setTarget:g=>{l.setTarget(g)}},timerModel:b,players:{playerDirectory:c,getPlayer:c.getPlayerProfile,getPlayerColor:c.getPlayerColor,refreshPlayer:c.refreshPlayerProfile,display:g=>l.displayHtmlLine(g),isAlly:i.isAllyPlayer,isEnemy:i.isEnemyPlayer,isCityEnemy:i.isCityEnemyPlayer},display:{notice:(g,A)=>l.notice(g,A)},colors:{cityPalette:J,iconHtml:(g,A,I)=>buildIconHtml(g,A,I,o.getPublicDualToneIcons?.()??null)},customize:{getConfiguredDefences:()=>U.defence.getState().configuredDefences,setConfiguredDefences:g=>(U.defence.getState().setConfiguredDefences(normalizeConfiguredDefenceList(g)),U.defence.getState().configuredDefences),classBalanceController:B,setClassBalanceType:g=>{const A=B.setType(g);return G.update(A),B.getType()},mountNativeDisplay:()=>m.mountNativeDisplay(),unmountNativeDisplay:()=>m.unmountNativeDisplay()},layout:{presetIds:RA,applyPreset:g=>m.applyLayoutPreset(g),saveLayout:()=>m.saveLayout(),restoreLayout:()=>m.restoreLayout(),hasSavedLayout:()=>m.hasSavedLayout()},party:{partyModel:T,getSnapshot:()=>T.snapshot()},room:{roomModel:N,setItemOverride:setUserRoomItemOverride,removeItemOverride:removeUserRoomItemOverride,listItemOverrides:listUserRoomItemOverrides,getItemOverride:getUserRoomItemOverride},stats:{playStatsModel:L.model},stream:{systemStream:U.systemStream,combatStream:U.combatStream},cdb:{query:g=>a?.queryCharacters?.(g)??[],get:g=>fetchLiveCharacter(g,{fetchFn:o.fetch})}}),Ig={version:YA,mount,stores:U,debug:{getEventTrace:()=>s.getTrace(),setDebugEnabled:g=>s.setDebugEnabled(g),stream:{getStats:()=>({...v.getStats(),scrollbackSession:x.getStats()}),getScrollbackStats:()=>x.getStats(),getDbStats:async()=>{try{const g=await x.readAll(),A=x.getStats();return{fallback:A.storageFallback,count:g.length,firstId:g[0]?.id,lastId:g[g.length-1]?.id,scrollbackSession:A}}catch(g){return{error:g.message}}}},playerDirectory:{getSnapshot:()=>u.getPlayerDirectoryDiagnosticsSnapshot()}},destroy};return Object.defineProperty(Ig,"state",{enumerable:!0,get:()=>Ag.state}),Object.defineProperty(Ig,"api",{value:Ag.api,enumerable:!0}),Object.defineProperty(Ig,"__contextValue",{value:q,enumerable:!1}),Object.defineProperty(Ig,"__start",{value:startRuntime,enumerable:!1}),C&&startRuntime(),Ig},cloneTokens=g=>structuredClone(g),buildHueFilter=g=>`hue-rotate(${g}deg)`,createMuiTheme=(g=GA)=>{const A=g??GA;return(0,a.createTheme)({spacing:A.spacing.unit,shape:{borderRadius:A.radius.panel},typography:{fontSize:A.theme.fontSize},palette:{mode:"dark",primary:{main:A.text.accent},background:{default:A.background.primary,paper:A.background.panel},text:{primary:A.text.primary,secondary:A.text.secondary,disabled:A.text.muted},hp:{main:A.game.hp},mp:{main:A.game.mp},ep:{main:A.game.ep},wp:{main:A.game.wp},nl:{main:A.game.nl},timerActive:{main:A.game.timerActive},timerCritical:{main:A.game.timerCritical}},components:{MuiTooltip:{defaultProps:{arrow:!0,placement:"top"}},MuiPaper:{defaultProps:{elevation:0}},MuiButton:{defaultProps:{size:"small"}},MuiSwitch:{defaultProps:{size:"small"}},MuiSlider:{defaultProps:{size:"small"}}},nexGui:{backgroundImage:resolveBackgroundImageSource(A.theme.backgroundImage),backgroundOpacity:A.theme.backgroundOpacity,backgroundFilter:buildHueFilter(A.theme.hue),radius:cloneTokens(A.radius),tokens:cloneTokens(A)}})},WA=__commonJSMin((g,A)=>{var I="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";A.exports=I}),VA=__commonJSMin((g,A)=>{var I=WA();function emptyFunction(){}function emptyFunctionWithReset(){}emptyFunctionWithReset.resetWarningCache=emptyFunction,A.exports=function(){function shim(g,A,C,e,t,n){if(n!==I){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function getShim(){return shim}shim.isRequired=shim;var g={array:shim,bigint:shim,bool:shim,func:shim,number:shim,object:shim,string:shim,symbol:shim,any:shim,arrayOf:getShim,element:shim,elementType:shim,instanceOf:getShim,node:shim,objectOf:getShim,oneOf:getShim,oneOfType:getShim,shape:getShim,exact:getShim,checkPropTypes:emptyFunctionWithReset,resetWarningCache:emptyFunction};return g.PropTypes=g,g}}),UA=__toESM(__commonJSMin((g,A)=>{A.exports=VA()()})(),1),DefenceTagComponent=({name:g})=>React.createElement(n.Paper,{className:"defence-tag",elevation:3,sx:{fontFamily:"inherit",fontSize:"inherit",px:.75,py:"2px",textAlign:"center",width:"100%"}},g);DefenceTagComponent.displayName="DefenceTag",DefenceTagComponent.propTypes={name:UA.default.string.isRequired};var HA=(0,e.memo)(DefenceTagComponent);HA.displayName="DefenceTag",HA.propTypes=DefenceTagComponent.propTypes;var getErrorMessage=g=>g instanceof Error&&g.message?g.message:"string"==typeof g&&g.length>0?g:"Unknown panel error.",QA=class extends e.Component{static displayName="PanelErrorBoundary";static propTypes={children:UA.default.node,panelName:UA.default.node.isRequired};static getDerivedStateFromError(g){return{error:g}}constructor(g){super(g),this.state={error:null}}componentDidCatch(){}render(){const{children:g,panelName:A}=this.props,{error:I}=this.state;return I?React.createElement(n.Box,{className:"nexgui4-panel-error-boundary",role:"alert",sx:{backgroundColor:"background.paper",border:1,borderColor:"divider",borderRadius:1,color:"text.primary",display:"flex",flex:1,flexDirection:"column",gap:1,minHeight:0,minWidth:0,p:1.5,width:"100%"}},React.createElement(n.Typography,{component:"h2",sx:{fontSize:"0.95rem",fontWeight:700}},A),React.createElement(n.Typography,{color:"text.secondary",variant:"body2"},"This panel failed to render."),React.createElement(n.Typography,{sx:{fontFamily:"monospace",overflowWrap:"anywhere"},variant:"body2"},getErrorMessage(I))):g}},isIterable=g=>Symbol.iterator in g,hasIterableEntries=g=>"entries"in g,compareEntries=(g,A)=>{const I=g instanceof Map?g:new Map(g.entries()),C=A instanceof Map?A:new Map(A.entries());if(I.size!==C.size)return!1;for(const[e,t]of I)if(!C.has(e)||!Object.is(t,C.get(e)))return!1;return!0},compareIterables=(g,A)=>{const I=g[Symbol.iterator](),C=A[Symbol.iterator]();let e=I.next(),t=C.next();for(;!e.done&&!t.done;){if(!Object.is(e.value,t.value))return!1;e=I.next(),t=C.next()}return!!e.done&&!!t.done};function shallow(g,A){return!!Object.is(g,A)||"object"==typeof g&&null!==g&&"object"==typeof A&&null!==A&&Object.getPrototypeOf(g)===Object.getPrototypeOf(A)&&(isIterable(g)&&isIterable(A)?hasIterableEntries(g)&&hasIterableEntries(A)?compareEntries(g,A):compareIterables(g,A):compareEntries({entries:()=>Object.entries(g)},{entries:()=>Object.entries(A)}))}function useShallow(g){const A=e.default.useRef(void 0);return I=>{const C=g(I);return shallow(A.current,C)?A.current:A.current=C}}var selectDefenceSlice=g=>({configuredDefences:g.configuredDefences,defences:g.defences,gainDefence:g.gainDefence,loseDefence:g.loseDefence,resetDefences:g.resetDefences,setConfiguredDefences:g.setConfiguredDefences}),useDefence=()=>{const{stores:g}=useNexGui();return g.defence(useShallow(selectDefenceSlice))},getFlipTransform$10=g=>{switch(g){case 1:return"scaleX(-1) scaleY(-1)";case 2:return"scaleY(-1)";case 3:return"scaleX(-1)";default:return"none"}},DefencesPanelInner=()=>{const g=(0,a.useTheme)(),[A]=(0,e.useState)(()=>Math.floor(4*Math.random())),{configuredDefences:I,defences:C}=useDefence(),t=g?.nexGui?.backgroundImage??"",r=g?.nexGui?.backgroundOpacity??.5,o=g?.nexGui?.backgroundFilter??"none",i=new Set(C),l=I.filter(g=>!i.has(g)),s=l.length>0;return React.createElement(n.Box,{className:"defences-panel",sx:{color:"text.primary",fontFamily:g.typography.fontFamily,fontSize:g.typography.fontSize,height:"100%",overflow:"hidden",position:"relative",width:"100%"}},t?React.createElement(n.Box,{"aria-hidden":"true",className:"defences-panel__background",sx:{backgroundImage:`url(${t})`,backgroundPosition:"center",backgroundSize:"cover",filter:o,inset:0,opacity:r,position:"absolute",transform:getFlipTransform$10(A),zIndex:0}}):null,s?React.createElement(n.Box,{className:"defences-panel__content",sx:{height:"100%",overflowY:"auto",p:1,position:"relative",width:"100%",zIndex:1}},React.createElement(n.Paper,{className:"defences-panel__surface",elevation:0,sx:{backgroundColor:(0,a.alpha)(g.palette.background.paper,.78),minHeight:"100%",p:1}},React.createElement(n.Stack,{spacing:.5,sx:{position:"relative",width:"100%"}},l.map(g=>React.createElement(HA,{key:g,name:g}))))):null)};DefencesPanelInner.displayName="DefencesPanelInner";var DefencesPanel=()=>React.createElement(QA,{panelName:"Defences"},React.createElement(DefencesPanelInner,null));DefencesPanel.displayName="DefencesPanel";var XA=1,JA=24,qA=8,noop$3=()=>{},defaultEstimateSize=()=>48,defaultGetItemKey=(g,A)=>g?.id??A,joinClassNames=(...g)=>g.filter(Boolean).join(" "),getVirtualItemEnd=g=>Number.isFinite(g?.end)?g.end:Number.isFinite(g?.size)?g.start+g.size:g?.start??0,getElementWidth=(g,A=null)=>{const I=A?.contentRect?.width??g.getBoundingClientRect?.().width??g.clientWidth;return Number.isFinite(I)?I:0},getVerticalScrollbarGutterWidth=g=>{if(!g)return 0;const A=Number(g.offsetWidth),I=Number(g.clientWidth);return Number.isFinite(A)&&Number.isFinite(I)?Math.max(0,A-I):0},isNearBottom=g=>g.scrollHeight-g.scrollTop-g.clientHeight<=JA,isPinnedToDisplayTail=g=>g.scrollHeight-g.scrollTop-g.clientHeight<=XA,TranscriptViewportComponent=({items:g,renderItem:A,getItemKey:I=defaultGetItemKey,itemKeyVersion:C=null,displayPinKey:t=null,estimateSize:a=defaultEstimateSize,overscan:o=5,fontFamily:i="inherit",fontSize:l,border:s=!1,mode:c="panel",onRequestHistory:u=noop$3,onScrollLockChange:d=noop$3,activeMatchIndex:m=-1,footer:p=null,fallbackToAllItems:h=!1,onSendCommand:y=noop$3,showScrollLockBadge:b=!1,viewportSx:x,viewportTestId:E="virtual-scroll-viewport"},v)=>{const R=(0,e.useRef)(null),w=(0,e.useRef)(null),S=(0,e.useRef)({animationFrame:0,width:null}),M=(0,e.useRef)(g),T=(0,e.useRef)(I),N=(0,e.useRef)({getItemKey:null,itemKeyRevision:null,lookup:null}),[G,D]=(0,e.useState)(!1),[j,P]=(0,e.useState)(0),[B,O]=(0,e.useState)(0),L="display"===c,z=parseFontSize(l);M.current=g,T.current=I;const Z=C??g;N.current.getItemKey===I&&N.current.itemKeyRevision===Z||(N.current={getItemKey:I,itemKeyRevision:Z,lookup:g=>T.current(M.current[g],g)});const F=N.current.lookup,K=(0,e.useCallback)(()=>R.current,[]),Y=(0,r.useVirtualizer)({count:g.length,initialRect:{height:400,width:0},getScrollElement:K,estimateSize:a,getItemKey:F,overscan:o}),W=Y.getTotalSize(),V=Y.getVirtualItems(),U=V[0]??null,H=V.at(-1)??null,Q=U?Math.max(0,U.start):0,X=H?Math.max(0,W-getVirtualItemEnd(H)):0,J=h&&0===V.length&&g.length>0,q=joinClassNames("nexgui4-transcript-spacer",!J&&(L?"nexgui4-transcript-spacer--display":"nexgui4-transcript-spacer--panel")),_=J?void 0:L?0===V.length?{height:`${W}px`}:{paddingBottom:`${X}px`,paddingTop:`${Q}px`}:{height:`${W}px`},$=null==l?void 0:"number"==typeof l?`${l}px`:l,gg=joinClassNames("nexgui4-transcript-scroll-viewport",L?"nexgui4-transcript-scroll-viewport--display":"nexgui4-transcript-scroll-viewport--panel"),Ag={fontFamily:i,fontSize:$},Ig={right:`${qA+j}px`},Cg=(0,e.useCallback)(g=>{const A=getVerticalScrollbarGutterWidth(g);P(g=>g===A?g:A)},[]),eg=(0,e.useCallback)(()=>{const g=R.current;g&&(g.scrollTop=g.scrollHeight)},[]);(0,e.useImperativeHandle)(v,()=>({scrollToBottom:eg,scrollToIndex:(g,A)=>Y.scrollToIndex(g,A)}),[Y,eg]),(0,e.useLayoutEffect)(()=>{if(!L)return void(w.current=null);const A=R.current;if(!A)return;const I={itemCount:g.length,scrollHeight:A.scrollHeight,totalSize:W},C=w.current;null!=C&&C.itemCount===I.itemCount&&C.scrollHeight===I.scrollHeight&&C.totalSize===I.totalSize&&isPinnedToDisplayTail(A)||(A.scrollTop=A.scrollHeight,w.current=I)},[t,B,L,g.length,W]),(0,e.useLayoutEffect)(()=>{L||G||0===g.length||Y.scrollToIndex(g.length-1,{align:"end"})},[L,G,g.length,Y]),(0,e.useLayoutEffect)(()=>{const g=Y.measure,A=window.ResizeObserver,I=S.current;if(!L)return I.width=null,void(I.animationFrame&&(window.cancelAnimationFrame(I.animationFrame),I.animationFrame=0));const C=R.current;if(!C||"function"!=typeof g||"function"!=typeof A)return;I.width=getElementWidth(C);const scheduleMeasure=A=>{I.width!==A&&(I.width=A,I.animationFrame&&window.cancelAnimationFrame(I.animationFrame),I.animationFrame=window.requestAnimationFrame(()=>{I.animationFrame=0,g(),O(g=>g+1)}))},e=new A(g=>{scheduleMeasure(getElementWidth(C,g[0]))});return e.observe(C),()=>{e.disconnect(),I.animationFrame&&(window.cancelAnimationFrame(I.animationFrame),I.animationFrame=0)}},[L,Y]),(0,e.useLayoutEffect)(()=>{if(L)return void P(0);const g=R.current;if(!g)return;Cg(g);const A=window.ResizeObserver;if("function"!=typeof A)return;const I=new A(()=>{Cg(g)});return I.observe(g),()=>{I.disconnect()}},[L,Cg]),(0,e.useLayoutEffect)(()=>{L||Cg(R.current)},[L,g.length,W,Cg]),(0,e.useEffect)(()=>{0===g.length&&D(!1)},[g.length]),(0,e.useEffect)(()=>{d(G)},[G,d]);const tg=(0,e.useCallback)(g=>{if(L)return;Cg(g.currentTarget);const A=!isNearBottom(g.currentTarget);D(g=>g===A?g:A)},[L,Cg]);(0,e.useEffect)(()=>{const g=R.current;if(!g)return;const handleWheel=g=>{!L||g.deltaY>=0||(g.preventDefault(),u())};return g.addEventListener("wheel",handleWheel,{passive:!1}),()=>g.removeEventListener("wheel",handleWheel)},[L,u]);const ng=(0,e.useCallback)(g=>{if(!(g.target instanceof Element))return;const A=g.target.closest("a");if(!A||!g.currentTarget.contains(A))return;if(A.classList.contains("url_link"))return;const I=A.getAttribute("rel");I&&(g.preventDefault(),y(I))},[y]);return React.createElement(n.Box,{component:"section",sx:{border:s?1:0,borderColor:"divider",borderRadius:s?1:0,display:"flex",flex:1,flexDirection:"column",minHeight:0,position:"relative"}},b&&G?React.createElement(n.Box,{component:"div","data-testid":"scroll-lock-badge",role:"status",style:Ig,sx:{backgroundColor:"background.paper",border:1,borderColor:"divider",borderRadius:1,boxShadow:1,color:"text.secondary",fontSize:"0.75rem",px:1,py:.5,position:"absolute",top:8,zIndex:2}},"Scroll lock"):null,React.createElement(n.Box,{className:gg,component:"div",onClick:ng,"data-testid":E,onScroll:tg,ref:R,style:Ag,sx:x},React.createElement("div",{className:q,"data-testid":"virtual-scroll-spacer",style:_},J?g.map((g,C)=>React.createElement("div",{className:"nexgui4-transcript-row","data-index":C,key:I(g,C)},A(g,{fontSize:z,index:C,isActiveMatch:C===m}))):V.map(I=>{const C=g[I.index];return null==C?null:React.createElement("div",{className:joinClassNames("nexgui4-transcript-row",L?"nexgui4-transcript-row--display":"nexgui4-transcript-row--panel"),"data-index":I.index,key:I.key,ref:Y.measureElement,style:L?void 0:{transform:`translateY(${I.start}px)`}},A(C,{fontSize:z,index:I.index,isActiveMatch:I.index===m}))})),p))};TranscriptViewportComponent.displayName="TranscriptViewport",TranscriptViewportComponent.propTypes={activeMatchIndex:UA.default.number,border:UA.default.bool,displayPinKey:UA.default.oneOfType([UA.default.number,UA.default.string]),estimateSize:UA.default.func,fallbackToAllItems:UA.default.bool,fontFamily:UA.default.string,fontSize:UA.default.oneOfType([UA.default.number,UA.default.string]),footer:UA.default.node,getItemKey:UA.default.func,itemKeyVersion:UA.default.oneOfType([UA.default.number,UA.default.string]),items:UA.default.array.isRequired,mode:UA.default.oneOf(["panel","display"]),onRequestHistory:UA.default.func,onSendCommand:UA.default.func,onScrollLockChange:UA.default.func,overscan:UA.default.number,renderItem:UA.default.func.isRequired,showScrollLockBadge:UA.default.bool,viewportSx:UA.default.oneOfType([UA.default.array,UA.default.func,UA.default.object]),viewportTestId:UA.default.string};var _A=(0,e.forwardRef)(TranscriptViewportComponent);_A.displayName="TranscriptViewport",_A.propTypes=TranscriptViewportComponent.propTypes;var padTwo=g=>String(g).padStart(2,"0"),padThree=g=>String(g).padStart(3,"0"),formatNumericTimestamp=(g,A=!0)=>{const I=new Date(g),C=[padTwo(I.getHours()),padTwo(I.getMinutes()),padTwo(I.getSeconds())].join(":");return A?`${C}.${padThree(I.getMilliseconds())}`:C},resolveTimestampLabel=(g,A=!0)=>"string"==typeof g&&g.length>0?g:Number.isFinite(g)?formatNumericTimestamp(g,A):null,resolveDateTime=g=>Number.isFinite(g)?new Date(g).toISOString():void 0,TimestampComponent=({timestamp:g,fontFamily:A=Xg,fontSize:I,highlight:C=!1,className:e="ng-timestamp timestamp mono no_out",includeMilliseconds:t=!0})=>{const n=resolveTimestampLabel(g,t);return null===n?null:React.createElement("time",{className:e,dateTime:resolveDateTime(g),style:C?{backgroundColor:"string"==typeof C?C:"yellow",fontFamily:A,fontSize:I}:{fontFamily:A,fontSize:I}},n)};TimestampComponent.displayName="Timestamp",TimestampComponent.propTypes={className:UA.default.string,fontFamily:UA.default.string,fontSize:UA.default.oneOfType([UA.default.number,UA.default.string]),highlight:UA.default.bool,includeMilliseconds:UA.default.bool,timestamp:UA.default.oneOfType([UA.default.number,UA.default.string]).isRequired};var $A=(0,e.memo)(TimestampComponent);$A.displayName="Timestamp",$A.propTypes=TimestampComponent.propTypes;var gI=UA.default.shape({content:UA.default.node,id:UA.default.oneOfType([UA.default.number,UA.default.string]),isHtml:UA.default.bool,timestamp:UA.default.number}),renderContent=(g,A)=>null==g||!1===g?null:(0,e.isValidElement)(g)?g:A?React.createElement(n.Typography,{component:"span",sx:{color:"text.primary",display:"inline",lineHeight:1.5},variant:"body2",dangerouslySetInnerHTML:{__html:g}}):React.createElement(n.Typography,{component:"span",sx:{color:"text.primary",display:"inline",lineHeight:1.5},variant:"body2"},g),FeedEntryComponent=({entry:g,fontSize:A})=>React.createElement(n.Box,{className:"feed-entry","data-feed-entry-id":g.id??void 0,sx:{alignItems:"flex-start",columnGap:1,display:"flex",minWidth:0,py:.5,width:"100%"}},Number.isFinite(g.timestamp)?React.createElement($A,{timestamp:g.timestamp,fontSize:A,includeMilliseconds:!1}):null,React.createElement(n.Box,{className:"feed-entry__content",sx:{flex:1,minWidth:0,overflowWrap:"anywhere"}},renderContent(g.content,g.isHtml)));FeedEntryComponent.displayName="FeedEntry",FeedEntryComponent.propTypes={entry:gI.isRequired,fontSize:UA.default.oneOfType([UA.default.number,UA.default.string])};var AI=(0,e.memo)(FeedEntryComponent);AI.displayName="FeedEntry",AI.propTypes=FeedEntryComponent.propTypes;var getFlipTransform$9=g=>{switch(g){case 1:return"scaleX(-1) scaleY(-1)";case 2:return"scaleY(-1)";case 3:return"scaleX(-1)";default:return"none"}},PanelBackgroundComponent=({backgroundClassName:g,children:A=null,component:I="div",contentClassName:C,contentSx:t,sx:r,...o})=>{const i=(0,a.useTheme)(),[l]=(0,e.useState)(()=>Math.floor(4*Math.random())),s=i?.nexGui?.backgroundImage??"",c=i?.nexGui?.backgroundOpacity??.5,u=i?.nexGui?.backgroundFilter??"none";return React.createElement(n.Box,{component:I,sx:[{display:"flex",flex:1,height:"100%",minHeight:0,minWidth:0,overflow:"hidden",position:"relative",width:"100%"},r],...o},s?React.createElement(n.Box,{"aria-hidden":"true",className:g,sx:{backgroundImage:`url(${s})`,backgroundPosition:"center",backgroundSize:"cover",filter:u,inset:0,opacity:c,position:"absolute",transform:getFlipTransform$9(l),zIndex:0}}):null,React.createElement(n.Box,{className:C,sx:[{display:"flex",flex:1,minHeight:0,minWidth:0,position:"relative",zIndex:1},t]},A))};PanelBackgroundComponent.displayName="PanelBackground",PanelBackgroundComponent.propTypes={backgroundClassName:UA.default.string,children:UA.default.node,component:UA.default.elementType,contentClassName:UA.default.string,contentSx:UA.default.oneOfType([UA.default.array,UA.default.func,UA.default.object]),sx:UA.default.oneOfType([UA.default.array,UA.default.func,UA.default.object])};var II=(0,e.memo)(PanelBackgroundComponent);II.displayName="PanelBackground",II.propTypes=PanelBackgroundComponent.propTypes;var noopSubscribe$1=()=>()=>{},getModelVersion$1=g=>"function"==typeof g?.getVersion?g.getVersion():0,selectEntries=g=>g.entries,colorEntry=(g,A)=>{if("string"!=typeof g?.content||0===g.content.length||"function"!=typeof A)return g;const{content:I,isHtml:C}=A(g.content);return I!==g.content||C?{...g,content:I,isHtml:C}:g},useFeed=()=>{const{stores:g,playerDirectory:A,playerRelationships:I,formatInlineNames:C}=useNexGui(),t=g.feed(selectEntries),n=(0,e.useMemo)(()=>({subscribe:g=>{const C=A?.subscribePlayerDirectory?.(g)??noopSubscribe$1(),e=I?.subscribePlayerRelationships?.(g)??noopSubscribe$1();return()=>{C?.(),e?.()}},getSnapshot:()=>`${getModelVersion$1(A)}:${getModelVersion$1(I)}`}),[A,I]),a=(0,e.useSyncExternalStore)(n.subscribe,n.getSnapshot,n.getSnapshot),r=(0,e.useRef)(null);return null===r.current&&(r.current=new WeakMap),{entries:(0,e.useMemo)(()=>{const g=r.current;return t.map(A=>{if(null===A||"object"!=typeof A)return A;const I=g.get(A);if(I&&I.version===a)return I.value;const e=colorEntry(A,C);return I&&I.value.content===e.content&&I.value.isHtml===e.isHtml?(g.set(A,{version:a,value:I.value}),I.value):(g.set(A,{version:a,value:e}),e)})},[t,a,C])}},GameFeedInner=()=>{const g=(0,a.useTheme)(),{entries:A}=useFeed(),I=A.at(-1)?.id??A.length,C=(0,e.useCallback)((g,{fontSize:A}={})=>React.createElement(AI,{entry:g,fontSize:A}),[]);return 0===A.length?React.createElement(II,{backgroundClassName:"game-feed__background",className:"game-feed game-feed--empty",contentClassName:"game-feed__content",contentSx:{alignItems:"center",color:"text.secondary",justifyContent:"center",p:2}},React.createElement(n.Typography,{variant:"body2"},"No feed entries")):React.createElement(II,{backgroundClassName:"game-feed__background",className:"game-feed",contentClassName:"game-feed__content",contentSx:{minHeight:0}},React.createElement(_A,{itemKeyVersion:I,items:A,fontFamily:g.typography.fontFamily,fontSize:g.typography.fontSize,renderItem:C,showScrollLockBadge:!1,viewportSx:{p:1}}))};GameFeedInner.displayName="GameFeedInner";var GameFeed=()=>React.createElement(QA,{panelName:"GameFeed"},React.createElement(GameFeedInner,null));GameFeed.displayName="GameFeed";var noop$2=()=>{},CI="nexgui4-structured-stream-panel__timestamp ng-timestamp timestamp mono no_out",eI=UA.default.shape({hasMXP:UA.default.bool.isRequired,html:UA.default.string.isRequired,id:UA.default.number.isRequired,timestamp:UA.default.oneOfType([UA.default.number,UA.default.string]).isRequired}),buildLineClassName$1=g=>["nexgui4-structured-stream-panel__line",g.isMonospace?"mono":null].filter(Boolean).join(" "),StructuredStreamRowComponent=({line:g,onSendCommand:A=noop$2})=>{const handleMXP=g=>{if(!(g.target instanceof Element))return;const I=g.target.closest("a");if(!I||!g.currentTarget.contains(I))return;if(I.classList.contains("url_link"))return;const C=I.getAttribute("rel");C&&(g.preventDefault(),A(C))};return React.createElement(n.Box,{component:"div",className:buildLineClassName$1(g),"data-stream-entry-id":g.id,onClick:g.hasMXP?handleMXP:null,sx:{alignItems:"baseline",columnGap:"0.5rem",display:"grid",gridTemplateColumns:"12ch minmax(0, 1fr)",minWidth:0,width:"100%",zIndex:1,"& .nexgui4-structured-stream-panel__payload":{minWidth:0,overflowWrap:"anywhere"},"& .nexgui4-stream-row":{alignItems:"baseline",display:"grid",gridTemplateColumns:"auto minmax(0, 1fr)",columnGap:"0.5rem",width:"100%"},"& .nexgui4-replacement-row":{width:"100%"}}},React.createElement($A,{className:CI,fontFamily:"inherit",timestamp:g.timestamp}),React.createElement(n.Box,{component:"span",className:"nexgui4-structured-stream-panel__payload",dangerouslySetInnerHTML:{__html:g.html}}))};StructuredStreamRowComponent.displayName="StructuredStreamRow",StructuredStreamRowComponent.propTypes={line:eI.isRequired,onSendCommand:UA.default.func};var tI=(0,e.memo)(StructuredStreamRowComponent);tI.displayName="StructuredStreamRow",tI.propTypes=StructuredStreamRowComponent.propTypes;var StructuredStreamPanelComponent=({items:g,itemKeyVersion:A=null,onSendCommand:I=noop$2,className:C})=>{const t=(0,a.useTheme)(),n=(0,e.useCallback)(g=>React.createElement(tI,{line:g,onSendCommand:I}),[I]);return React.createElement(II,{backgroundClassName:"nexgui4-structured-stream-panel__background",className:C,component:"section",contentClassName:"nexgui4-structured-stream-panel__content",contentSx:{color:"text.primary",fontFamily:"inherit",fontSize:"inherit"},"data-testid":"structured-stream-panel"},React.createElement(_A,{fontFamily:t.typography.fontFamily,fontSize:t.typography.fontSize,itemKeyVersion:A,items:g,renderItem:n,showScrollLockBadge:!1,viewportSx:{p:"5px"}}))};StructuredStreamPanelComponent.displayName="StructuredStreamPanel",StructuredStreamPanelComponent.propTypes={className:UA.default.string,itemKeyVersion:UA.default.oneOfType([UA.default.number,UA.default.string]),items:UA.default.arrayOf(eI).isRequired,onSendCommand:UA.default.func};var nI=(0,e.memo)(StructuredStreamPanelComponent);nI.displayName="StructuredStreamPanel",nI.propTypes=StructuredStreamPanelComponent.propTypes;var aI=new WeakMap,assertTranscriptModel=g=>{if(!g||"function"!=typeof g.subscribe||"function"!=typeof g.getSnapshot)throw new Error("useTranscript requires a transcript model with subscribe(listener) and getSnapshot().")},getTranscriptModelBindings=g=>{assertTranscriptModel(g);let A=aI.get(g);if(!A){const subscribe=A=>g.subscribe(A),getSnapshot=()=>g.getSnapshot();A=Object.freeze({subscribe,getSnapshot}),aI.set(g,A)}return A},useTranscript=g=>{const{subscribe:A,getSnapshot:I}=getTranscriptModelBindings(g),C=(0,e.useSyncExternalStore)(A,I,I);return{version:C.version,items:C.items,totalLines:C.totalLines}},CombatStreamInner=()=>{const{adapter:g,stores:A}=useNexGui(),{items:I,version:C}=useTranscript(A.combatStream),t=(0,e.useCallback)(A=>g.send(A),[g]);return React.createElement(nI,{className:"nexgui4-combat-stream",itemKeyVersion:C,items:I,onSendCommand:t})};CombatStreamInner.displayName="CombatStreamInner";var CombatStream=()=>React.createElement(QA,{panelName:"Combat Stream"},React.createElement(CombatStreamInner,null));CombatStream.displayName="CombatStream";var getRoomItemLookupEntry=g=>g&&"object"==typeof g?getRoomItemOverride(g):null,getRoomItemBackground=g=>getRoomItemLookupEntry(g)?.background??void 0,getRoomItemColor=g=>{const A=getRoomItemLookupEntry(g);return A?A.color:"t"===g?.attrib?"orange":void 0},getRoomItemLabel=g=>{if("string"==typeof g)return g;const A=getRoomItemLookupEntry(g);return A?A.text:g?.name},getRoomItemCommands=g=>{const A=["Probe"];return"string"==typeof g?.attrib&&g.attrib.includes("t")&&A.unshift("Get"),A},sortRoomItemsLikeNexGui3=g=>[...g].sort((g,A)=>{const I=getRoomItemLookupEntry(g);return getRoomItemLookupEntry(A)&&!I?-1:"t"!==A?.attrib||"t"===g?.attrib||I?1:-1}),selectRoomSlice=g=>({players:g.players,npcs:g.npcs,items:g.items,roomName:g.roomName,roomId:g.roomId,updateRoom:g.updateRoom}),useRoom=()=>{const{stores:g}=useNexGui();return g.room(useShallow(selectRoomSlice))},toDisplayItem=(g,A)=>"string"==typeof g?{commands:[],id:null,key:`room-item-string-${A}-${g}`,label:getRoomItemLabel(g),name:g,raw:g,rowBackground:void 0,rowColor:void 0}:g&&"object"==typeof g?{commands:null==g.id?[]:getRoomItemCommands(g),id:g.id??null,key:`room-item-${g.id??`${A}-${g.name??"unknown"}`}`,label:getRoomItemLabel(g)??g.name??"",name:g.name??"",raw:g,rowBackground:getRoomItemBackground(g),rowColor:getRoomItemColor(g)}:null,useRoomItemsViewModel=()=>{const{adapter:g}=useNexGui(),{items:A}=useRoom(),[I,C]=(0,e.useState)(0);(0,e.useEffect)(()=>subscribeToRoomItemOverrides(()=>C(g=>g+1)),[]);const t=(0,e.useMemo)(()=>sortRoomItemsLikeNexGui3((A??[]).filter(g=>!isRoomNpcItem(g))).map((g,A)=>toDisplayItem(g,A)).filter(Boolean),[A,I]),n=(0,e.useCallback)((A,I)=>{null!=I?.id&&g?.send?.(`${A} ${I.id}`)},[g]);return(0,e.useMemo)(()=>({items:t,sendItemCommand:n}),[t,n])},getFlipTransform$8=g=>{switch(g){case 1:return"scaleX(-1) scaleY(-1)";case 2:return"scaleY(-1)";case 3:return"scaleX(-1)";default:return"none"}},ItemsPanelInner=()=>{const g=(0,a.useTheme)(),{items:A,sendItemCommand:I}=useRoomItemsViewModel(),[C]=(0,e.useState)(()=>Math.floor(4*Math.random())),[t,r]=(0,e.useState)(null),[o,i]=(0,e.useState)(null),l=g?.nexGui?.backgroundImage??"",s=g?.nexGui?.backgroundOpacity??.5,c=g?.nexGui?.backgroundFilter??"none",u=Boolean(t),d=o?.commands??[],handleCloseMenu=()=>{r(null),i(null)},handleOpenMenu=(g,A)=>{A&&null!=A.id&&0!==A.commands.length&&(i(A),r(g.currentTarget))},handleCommandClick=g=>{null!=o?.id?(I(g,o),handleCloseMenu()):handleCloseMenu()};return React.createElement(n.Box,{className:"items-panel",sx:{color:"text.primary",fontFamily:g.typography.fontFamily,fontSize:g.typography.fontSize,height:"100%",overflow:"hidden",position:"relative",width:"100%"}},l?React.createElement(n.Box,{"aria-hidden":"true",className:"items-panel__background",sx:{backgroundImage:`url(${l})`,backgroundPosition:"center",backgroundSize:"cover",filter:c,height:"100%",inset:0,left:0,opacity:s,position:"absolute",top:0,transform:getFlipTransform$8(C),width:"100%",zIndex:0}}):null,React.createElement(n.Box,{className:"items-panel__content","data-testid":"items-panel-content",sx:{display:"flex",flexDirection:"column-reverse",height:"100%",overflow:"auto",position:"relative",width:"100%",zIndex:1}},A.length>0?React.createElement(n.Box,{className:"items-panel__rows",sx:{display:"table",m:"10px",maxWidth:"100%",p:"1px",position:"relative",textAlign:"left"}},A.map(g=>{const A=null!=g.id&&g.commands.length>0;return React.createElement(n.Box,{key:g.key,className:["items-panel__row",A?"items-panel__row--interactive":""].filter(Boolean).join(" "),onClick:A?A=>handleOpenMenu(A,g):void 0,onContextMenu:A?A=>{A.preventDefault(),handleOpenMenu(A,g)}:void 0,sx:{backgroundColor:g.rowBackground??"transparent",cursor:A?"pointer":"inherit",display:"table-row"}},React.createElement(n.Box,{component:"div",sx:{color:"cyan",display:"table-cell",padding:"0px 5px 0px 2px",whiteSpace:"nowrap"}},React.createElement(n.Typography,{component:"span",sx:{color:"inherit",fontVariantNumeric:"tabular-nums"},variant:"body2"},g.id??"")),React.createElement(n.Box,{component:"div",sx:{display:"table-cell",padding:0,width:"100%"}},React.createElement(n.Typography,{component:"span",sx:{color:g.rowColor??"text.primary"},variant:"body2"},g.label)))})):null),React.createElement(n.Menu,{anchorEl:t,onClose:handleCloseMenu,open:u,slotProps:{paper:{sx:{backgroundColor:"#000000",border:"1px solid #ffffff"}}}},d.map(g=>React.createElement(n.MenuItem,{key:g,onClick:()=>handleCommandClick(g)},g))))};ItemsPanelInner.displayName="ItemsPanelInner";var ItemsPanel=()=>React.createElement(QA,{panelName:"Items"},React.createElement(ItemsPanelInner,null));ItemsPanel.displayName="ItemsPanel";var rI=600,oI=400,clampScrollbackGeometryValue=(g,A,I)=>Math.min(Math.max(g,A),I),parseStoredValue=g=>{if("string"!=typeof g)return g;try{return JSON.parse(g)}catch{return g}},hasUsablePersistenceAdapter=g=>"function"==typeof g?.getVariable&&"function"==typeof g?.setVariable,hasSavedGeometry=g=>!!hasUsablePersistenceAdapter(g)&&isPlainObject(parseStoredValue((g.getVariable("nexGui4Settings")||{})[$g.UI])?.scrollbackModal),getScrollbackViewportBounds=()=>"undefined"==typeof window?{width:800,height:600}:{width:Math.max(320,window.innerWidth),height:Math.max(240,window.innerHeight)},getMinimumScrollbackGeometry=()=>{const g=getScrollbackViewportBounds();return{width:Math.min(rI,g.width),height:Math.min(oI,g.height)}},getDefaultScrollbackGeometry=()=>{const g=getScrollbackViewportBounds(),A=getMinimumScrollbackGeometry(),I=clampScrollbackGeometryValue(Math.round(.7*g.width),A.width,g.width),C=clampScrollbackGeometryValue(Math.round(.7*g.height),A.height,g.height);return{x:Math.round((g.width-I)/2),y:Math.round((g.height-C)/2),width:I,height:C}},normalizeScrollbackGeometry=g=>{const A=getDefaultScrollbackGeometry(),I=getScrollbackViewportBounds(),C=getMinimumScrollbackGeometry(),e=clampScrollbackGeometryValue(Number(g?.width)||A.width,C.width,I.width),t=clampScrollbackGeometryValue(Number(g?.height)||A.height,C.height,I.height);return{x:clampScrollbackGeometryValue(Number(g?.x)||0,0,Math.max(0,I.width-e)),y:clampScrollbackGeometryValue(Number(g?.y)||0,0,Math.max(0,I.height-t)),width:e,height:t}},useScrollbackLayout=()=>{const g=(0,e.useContext)(KA),A=g?.adapter,I=g?.scrollbackLayoutStore,C=g?.persistenceStore?.getAll?.()?.ui??{},t=(0,e.useMemo)(()=>I&&hasSavedGeometry(A)?normalizeScrollbackGeometry(I.get("scrollbackModal")):getDefaultScrollbackGeometry(),[A,I]),n=(0,e.useCallback)(g=>{I?.set("scrollbackModal",normalizeScrollbackGeometry(g))},[I]);return{focusHostInput:(0,e.useCallback)(()=>{A?.focusInput?.()},[A]),initialGeometry:t,persistGeometry:n,useVirtualizedLogs:Boolean(C.virtualizedLogs)}},iI=.8,useScrollbackHydration=({items:g,open:A,scrollbackSession:I,getViewportElement:C,dispatchViewportScroll:t,setScrollLock:n,onViewportOpened:a})=>{const[r,o]=(0,e.useState)([]),[i,l]=(0,e.useState)(!1),[s,c]=(0,e.useState)(!0),u=(0,e.useRef)([]);u.current=r;const d=(0,e.useRef)({hasMore:!0,isLoading:!1});d.current={hasMore:s,isLoading:i},(0,e.useEffect)(()=>{if(!A)return o([]),void c(!0);o(A=>{if(0===g.length)return[];if(0===A.length)return[...g];const I=A[A.length-1]?.id??-1,C=g.filter(g=>g.id>I);return C.length>0?[...A,...C]:A})},[g,A]);const m=(0,e.useCallback)(async()=>{if(!d.current.hasMore||d.current.isLoading)return;const g=u.current[0]?.id;if(void 0===g||g<=0)return d.current={...d.current,hasMore:!1},void c(!1);if(!I?.readRange)return d.current={...d.current,hasMore:!1},void c(!1);d.current={...d.current,isLoading:!0},l(!0);try{const A=Math.max(0,g-500),e=g-1,t=await I.readRange(A,e);if(0===t.length)return d.current={...d.current,hasMore:!1},void c(!1);o(g=>{const A=new Set(g.map(g=>g.id));return[...t.filter(g=>!A.has(g.id)),...g]});const n=C();if(n){const g=n.scrollHeight,A=n.scrollTop;window.requestAnimationFrame(()=>{n.scrollTop=A+(n.scrollHeight-g)})}}catch(A){console.error("[nexGui4] Failed to load older lines",A)}finally{d.current={...d.current,isLoading:!1},l(!1)}},[C,I]);return(0,e.useEffect)(()=>{if(!A)return;let g=!0,I=null,e=null;const r=window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>{if(!g)return;const A=C();if(!A)return;I=A;const r=Math.max(0,A.scrollHeight-A.clientHeight),o=A.clientHeight*iI,i=Math.max(0,r-o);A.scrollTop=i,t(A),n(i<r),a?.(),e=()=>{const{hasMore:g,isLoading:I}=d.current;A.scrollTop<300&&g&&!I&&m()},A.addEventListener("scroll",e,{passive:!0})})});return()=>{g=!1,window.cancelAnimationFrame(r),I&&e&&I.removeEventListener("scroll",e)}},[t,C,m,a,A,n]),{hydratedItems:r,hasMore:s,isLoadingMore:i,hydrateToId:(0,e.useCallback)(async g=>{if(!I?.readRange)return;const A=u.current[0]?.id,C=u.current[u.current.length-1]?.id;let e,t;if(void 0===A)e=g,t=g;else if(g<A)e=g,t=A-1;else{if(!(g>C))return;e=C+1,t=g}d.current={...d.current,isLoading:!0},l(!0);try{const g=await I.readRange(e,t);g.length>0&&o(A=>{const I=new Set(A.map(g=>g.id));return[...g.filter(g=>!I.has(g.id)),...A].sort((g,A)=>g.id-A.id)})}catch(n){console.error("[nexGui4] Failed to hydrate to ID",n)}finally{d.current={...d.current,isLoading:!1},l(!1)}},[I])}},useScrollbackSearch=({scrollbackSession:g,open:A,showPrompts:I,showGagged:C=!1,onCursorChange:t})=>{const[n,a]=(0,e.useState)(""),[r,o]=(0,e.useState)(""),[i,l]=(0,e.useState)([]),[s,c]=(0,e.useState)(!1),[u,d]=(0,e.useState)(-1),m=(0,e.useCallback)(()=>{a(""),o(""),d(-1)},[]);(0,e.useEffect)(()=>{A||(m(),l([]),c(!1))},[A,m]),(0,e.useEffect)(()=>{if(!r)return l([]),void c(!1);let A=!0;return c(!0),(async()=>{try{if(g?.search){const I=await g.search(r,{includePrompts:!0});return void(A&&l(I))}A&&l([])}catch(I){console.error("[nexGui4] Failed searching scrollback session",I)}finally{A&&c(!1)}})(),()=>{A=!1}},[r,g]);const p=(0,e.useMemo)(()=>r?i.filter(g=>I||!g.isPrompt).filter(g=>C||!g.gagged):[],[r,i,C,I]),h=p.length;(0,e.useEffect)(()=>{if(!A||!r)return void d(-1);if(0===h)return void d(-1);const g=h-1;d(g),t?.(g)},[r,t,A,h]);const y=(0,e.useCallback)(g=>{a(g.target.value)},[]),b=(0,e.useCallback)(g=>{if("Enter"!==g.key)return;const A=g.target.value??"";if(A!==r)return void o(A);if(0===h)return;const I=u-1<0?h-1:u-1;d(I),t?.(I)},[r,t,u,h]),x=r.length>0,E=x&&n.length>0&&0===h;return{searchBarText:n,setSearchBarText:a,committedSearchTerm:r,searchResults:p,isSearching:s,isSearchActive:x,searchMatchCount:h,searchCursor:u,hasNoMatch:E,searchStatusText:s?"Searching...":E?"No match":h>0&&u>=0?`${u+1}/${h}`:"",resetSearch:m,handleSearchInput:y,handleSearchKeyDown:b}},lI=1500,useScrollbackSelection=({visibleItems:g,showTimestamps:A=!0})=>{const[I,C]=(0,e.useState)(null),[t,n]=(0,e.useState)(null),[a,r]=(0,e.useState)(!1),o=(0,e.useRef)({a:null,b:null});o.current={a:I,b:t};const i=(0,e.useCallback)(g=>{const{a:A,b:I}=o.current;A===g||I===g?(C(null),n(null)):null===A?C(g):null===I?n(g):(C(g),n(null))},[]),l=(0,e.useMemo)(()=>{if(null==I||null==t)return null;const A=Math.min(I,t),C=Math.max(I,t);return g.filter(g=>g.id>=A&&g.id<=C)},[I,t,g]);return{selectionA:I,selectionB:t,selectedRangeItems:l,copyConfirmed:a,handleLineSelect:i,handleCopyRange:(0,e.useCallback)(async()=>{if(!l?.length)return;const g=l.map(g=>{const I=stripHtml(g.html);if(A){const A=resolveTimestampLabel(g.timestamp);return A?`${A} ${I}`:I}return I}).join("\n");try{await navigator.clipboard.writeText(g),r(!0),window.setTimeout(()=>r(!1),lI)}catch{}},[l,A]),isLineSelected:(0,e.useCallback)(g=>{const A=g===I||g===t;return null==I||null==t?{isEndpoint:A,inRange:!1}:{isEndpoint:A,inRange:g>=Math.min(I,t)&&g<=Math.max(I,t)}},[I,t])}},sI="nexgui4-log.html",cI="text/html;charset=utf-8",toDate=g=>{if(g instanceof Date)return Number.isNaN(g.getTime())?null:g;if("number"==typeof g&&Number.isFinite(g)){const A=new Date(g);return Number.isNaN(A.getTime())?null:A}return null},formatTimestamp$1=g=>{const A="string"==typeof g&&g.trim().length>0?g:null;if(A)return A;const I=toDate(g)??new Date,pad=(g,A=2)=>String(g).padStart(A,"0");return[pad(I.getHours()),pad(I.getMinutes()),pad(I.getSeconds())].join(":")+`.${pad(I.getMilliseconds(),3)}`},formatLogDate=(g=new Date)=>`${g.getFullYear()}-${g.getMonth()+1}-${g.getDate()}`,resolveCssFontSize$1=g=>null==g?"14px":"number"==typeof g?`${g}px`:String(g),collectPaletteCss=()=>{if("undefined"==typeof document)return"";try{return Array.from(document.getElementById("ng-palette")?.sheet?.cssRules??[]).map(g=>g.cssText).join("\n")}catch{return""}},collectNexGuiStyles=()=>"undefined"==typeof document?"":document.getElementById("nexGuicss")?.outerHTML??"",normalizeLogLine=(g,A)=>({html:String(g?.html??""),id:Number.isFinite(Number(g?.id))&&null!==g?.id?Number(g.id):A,isMonospace:Boolean(g?.isMonospace),isPrompt:Boolean(g?.isPrompt),shouldLog:Boolean(g?.shouldLog),timestamp:formatTimestamp$1(g?.timestamp)}),normalizeLogLines=g=>g.map((g,A)=>normalizeLogLine(g,A)),serializeJsonForInlineScript=g=>JSON.stringify(g).replace(/</g,"\\u003c").replace(/>/g,"\\u003e").replace(/&/g,"\\u0026").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029"),buildLogTitle=g=>g&&String(g).trim().length>0?String(g):`nexGui4 Scrollback - ${formatLogDate()}`,buildBaseStyle=({fontFamily:g,fontSize:A})=>`\n html,\n body {\n background: black;\n color: #ccc;\n margin: 0;\n min-height: 100%;\n }\n\n body {\n box-sizing: border-box;\n font-family: ${g};\n font-size: ${A};\n padding: 12px;\n }\n\n .nexgui4-log-line {\n box-sizing: border-box;\n font-family: ${g};\n font-size: ${A};\n line-height: 1.2;\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n }\n\n .nexgui4-log-line.mono,\n .nexgui4-log-line .mono {\n font-family: ${g};\n }\n\n .nexgui4-log-timestamp {\n color: #555;\n font-family: ${g};\n margin-right: 1ch;\n }\n\n .nexgui4-log-payload {\n min-width: 0;\n }\n`,buildHead=({title:g,fontFamily:A,fontSize:I})=>{const C=collectPaletteCss(),e=collectNexGuiStyles();return`<head>\n <meta charset="utf-8" />\n <title>${escapeHtml(g)}</title>\n <style>\n${buildBaseStyle({fontFamily:A,fontSize:I})}\n </style>\n <style id="ng-palette">${C}</style>\n ${e}\n </head>`},buildLogLineClassName=g=>["nexgui4-log-line",g.isPrompt?"prompt textline":"textline",g.isMonospace?"mono":null].filter(Boolean).join(" "),renderStaticLogRow=g=>`<div class="${buildLogLineClassName(g)}"><span class="nexgui4-log-timestamp timestamp mono no_out">${escapeHtml(g.timestamp)} </span><span class="nexgui4-log-payload">${g.html}</span></div>`,buildStandardHtmlLog=(g,{fontFamily:A=Xg,fontSize:I,title:C}={})=>{const e=resolveCssFontSize$1(I),t=buildLogTitle(C),n=normalizeLogLines(g).map(renderStaticLogRow).join("\n");return`<!doctype html>\n<html>\n ${buildHead({title:t,fontFamily:A,fontSize:e})}\n <body>\n${n}\n </body>\n</html>`},buildVirtualizedLogScript=(g,A)=>`\n (() => {\n const allLines = ${serializeJsonForInlineScript(g)};\n const viewport = document.getElementById("nexgui4-log-viewport");\n const spacer = document.getElementById("nexgui4-log-spacer");\n const rows = document.getElementById("nexgui4-log-rows");\n const searchInput = document.getElementById("nexgui4-log-search");\n const status = document.getElementById("nexgui4-log-search-status");\n const timestampToggle = document.getElementById("nexgui4-log-timestamps");\n const promptToggle = document.getElementById("nexgui4-log-prompts");\n\n let showTimestamps = true;\n let showPrompts = true;\n let displayLines = allLines;\n let heights = [];\n let offsets = [];\n let searchTerm = "";\n let searchMatches = [];\n let searchIndex = -1;\n let renderFrame = 0;\n let ignoreScrollAdjust = false;\n const overscan = 8;\n const lineTextCache = new WeakMap();\n const textProbe = document.createElement("div");\n\n const estimate = Math.max(18, ${Math.max(18,A)});\n const escapeText = (value) =>\n String(value ?? "")\n .replaceAll("&", "&")\n .replaceAll("<", "<")\n .replaceAll(">", ">")\n .replaceAll('"', """)\n .replaceAll("'", "'");\n\n const readLineText = (line) => {\n if (lineTextCache.has(line)) {\n return lineTextCache.get(line);\n }\n\n textProbe.innerHTML = line.html ?? "";\n const text = (textProbe.textContent || "").toLowerCase();\n lineTextCache.set(line, text);\n return text;\n };\n\n const rebuildMetrics = () => {\n offsets = new Array(displayLines.length + 1);\n offsets[0] = 0;\n for (let index = 0; index < displayLines.length; index += 1) {\n offsets[index + 1] = offsets[index] + (heights[index] || estimate);\n }\n spacer.style.height = (offsets[offsets.length - 1] || 0) + "px";\n };\n\n const findIndexAt = (offset) => {\n let low = 0;\n let high = displayLines.length;\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n if (offsets[mid + 1] < offset) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return low;\n };\n\n const updateStatus = () => {\n if (!searchTerm) {\n status.textContent = "";\n return;\n }\n\n status.textContent = searchMatches.length\n ? "(" + (searchIndex + 1) + " of " + searchMatches.length + ") Line: " + searchMatches[searchIndex]\n : "No entry found";\n };\n\n const classNameForLine = (line) =>\n "nexgui4-log-line " +\n (line.isPrompt ? "prompt textline" : "textline") +\n (line.isMonospace ? " mono" : "");\n\n const render = () => {\n renderFrame = 0;\n const top = viewport.scrollTop;\n const bottom = top + viewport.clientHeight;\n const start = Math.max(0, findIndexAt(top) - overscan);\n const end = Math.min(displayLines.length, findIndexAt(bottom) + overscan + 1);\n const activeDisplayIndex = searchMatches[searchIndex] ?? -1;\n let html = "";\n\n for (let index = start; index < end; index += 1) {\n const line = displayLines[index];\n const timestamp = showTimestamps\n ? '<span class="nexgui4-log-timestamp timestamp mono no_out">' +\n escapeText(line.timestamp) +\n " </span>"\n : "";\n const activeClass = activeDisplayIndex === index ? " nexgui4-log-line--active" : "";\n\n html +=\n '<div class="' +\n classNameForLine(line) +\n activeClass +\n '" data-index="' +\n index +\n '" style="transform:translateY(' +\n offsets[index] +\n 'px)">' +\n timestamp +\n '<span class="nexgui4-log-payload">' +\n line.html +\n "</span></div>";\n }\n\n rows.innerHTML = html;\n window.requestAnimationFrame(measureRenderedRows);\n };\n\n const requestRender = () => {\n if (renderFrame) {\n return;\n }\n\n renderFrame = window.requestAnimationFrame(render);\n };\n\n const measureRenderedRows = () => {\n let changed = false;\n let scrollAdjustment = 0;\n const currentScrollTop = viewport.scrollTop;\n\n rows.querySelectorAll("[data-index]").forEach((row) => {\n const index = Number(row.getAttribute("data-index"));\n const measured = Math.ceil(row.getBoundingClientRect().height);\n const oldHeight = heights[index] || estimate;\n\n if (Number.isFinite(index) && measured > 0 && Math.abs(oldHeight - measured) > 1) {\n if (offsets[index] < currentScrollTop) {\n scrollAdjustment += (measured - oldHeight);\n }\n heights[index] = measured;\n changed = true;\n }\n });\n\n if (changed) {\n rebuildMetrics();\n if (scrollAdjustment !== 0) {\n ignoreScrollAdjust = true;\n viewport.scrollTop = currentScrollTop + scrollAdjustment;\n }\n render();\n }\n };\n\n const rebuildDisplayLines = () => {\n displayLines = showPrompts ? allLines : allLines.filter((line) => !line.isPrompt);\n heights = new Array(displayLines.length);\n searchMatches = [];\n searchIndex = -1;\n\n if (searchTerm) {\n searchMatches = displayLines.reduce((matches, line, index) => {\n if (readLineText(line).includes(searchTerm)) {\n matches.push(index);\n }\n return matches;\n }, []);\n searchIndex = searchMatches.length > 0 ? 0 : -1;\n }\n\n rebuildMetrics();\n updateStatus();\n requestRender();\n };\n\n const scrollToActiveSearchMatch = () => {\n if (searchIndex < 0) {\n return;\n }\n\n viewport.scrollTop = Math.max(\n 0,\n offsets[searchMatches[searchIndex]] - viewport.clientHeight / 2,\n );\n requestRender();\n };\n\n const runSearch = () => {\n const nextTerm = searchInput.value.trim().toLowerCase();\n\n if (nextTerm !== searchTerm) {\n searchTerm = nextTerm;\n rebuildDisplayLines();\n } else if (searchMatches.length > 0) {\n searchIndex = (searchIndex + 1) % searchMatches.length;\n updateStatus();\n requestRender();\n }\n\n scrollToActiveSearchMatch();\n };\n\n viewport.addEventListener("scroll", () => {\n if (ignoreScrollAdjust) {\n ignoreScrollAdjust = false;\n return;\n }\n requestRender();\n }, { passive: true });\n window.addEventListener("resize", () => {\n heights = new Array(displayLines.length);\n rebuildMetrics();\n requestRender();\n });\n searchInput.addEventListener("keydown", (event) => {\n if (event.key === "Enter") {\n runSearch();\n }\n });\n timestampToggle.addEventListener("change", () => {\n showTimestamps = timestampToggle.checked;\n heights = new Array(displayLines.length);\n rebuildMetrics();\n requestRender();\n });\n promptToggle.addEventListener("change", () => {\n showPrompts = promptToggle.checked;\n rebuildDisplayLines();\n });\n\n rebuildDisplayLines();\n viewport.scrollTop = Math.max(0, spacer.offsetHeight - viewport.clientHeight);\n requestRender();\n })();\n`,buildVirtualizedHtmlLog=(g,{fontFamily:A=Xg,fontSize:I,title:C}={})=>{const e=resolveCssFontSize$1(I),t=Number.parseFloat(e)||14,n=buildLogTitle(C),a=normalizeLogLines(g);return`<!doctype html>\n<html>\n ${buildHead({title:n,fontFamily:A,fontSize:e})}\n <body class="nexgui4-log-body--virtual">\n <div class="nexgui4-log-toolbar">\n <input id="nexgui4-log-search" aria-label="Search log" placeholder="Search" />\n <span id="nexgui4-log-search-status" aria-live="polite"></span>\n <label><input id="nexgui4-log-timestamps" type="checkbox" checked /> Timestamps</label>\n <label><input id="nexgui4-log-prompts" type="checkbox" checked /> Prompts</label>\n </div>\n <div id="nexgui4-log-viewport" class="nexgui4-log-viewport">\n <div id="nexgui4-log-spacer" class="nexgui4-log-spacer">\n <div id="nexgui4-log-rows" class="nexgui4-log-rows"></div>\n </div>\n </div>\n <style>\n .nexgui4-log-body--virtual {\n height: 100vh;\n overflow: hidden;\n padding: 0;\n }\n\n .nexgui4-log-toolbar {\n align-items: center;\n background: #050505;\n border-bottom: 1px solid #333;\n box-sizing: border-box;\n display: flex;\n gap: 12px;\n height: 42px;\n padding: 6px 10px;\n }\n\n .nexgui4-log-toolbar input[type="text"],\n #nexgui4-log-search {\n background: #111;\n border: 1px solid #444;\n color: #eee;\n font: inherit;\n padding: 4px 6px;\n width: 24ch;\n }\n\n #nexgui4-log-search-status {\n color: #aaa;\n min-width: 18ch;\n }\n\n .nexgui4-log-toolbar label {\n align-items: center;\n display: inline-flex;\n gap: 4px;\n white-space: nowrap;\n }\n\n .nexgui4-log-viewport {\n height: calc(100vh - 42px);\n overflow-y: auto;\n position: relative;\n }\n\n .nexgui4-log-spacer {\n position: relative;\n width: 100%;\n }\n\n .nexgui4-log-rows {\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n }\n\n .nexgui4-log-rows .nexgui4-log-line {\n left: 0;\n padding: 0 12px;\n position: absolute;\n top: 0;\n width: 100%;\n }\n\n .nexgui4-log-line--active {\n background: #e5e7eb;\n color: #111827;\n }\n </style>\n <script>\n${buildVirtualizedLogScript(a,Math.ceil(1.25*t))}\n <\/script>\n </body>\n</html>`},buildHtmlLog=(g,A,I={})=>A?buildVirtualizedHtmlLog(g,I):buildStandardHtmlLog(g,I),downloadBuffer=(g,A,{fontFamily:I=Xg,fontSize:C,title:e}={})=>{if("undefined"==typeof document||"undefined"==typeof Blob||"undefined"==typeof URL||"function"!=typeof URL.createObjectURL||0===g.length)return;const t=buildHtmlLog(g,A,{fontFamily:I,fontSize:C,title:e}),n=URL.createObjectURL(new Blob([t],{type:cI})),a=document.createElement("a");a.href=n,a.download=sI,a.style.display="none",document.body.append(a),a.click(),a.remove(),URL.revokeObjectURL(n)},useScrollbackDownload=({scrollbackSession:g,visibleItems:A,isSearchActive:I,useVirtualizedLogs:C,fontFamily:t,fontSize:n})=>({handleDownload:(0,e.useCallback)(async()=>{let e=A;if(!I&&g?.readAll)try{const A=await g.readAll();A&&A.length>0&&(e=A)}catch(a){console.error("[nexGui4] Failed to read all lines for download",a)}downloadBuffer(e,C,{fontFamily:t,fontSize:n})},[t,n,I,g,C,A])}),uI=12,dI=18,mI={height:"--nexgui4-scrollback-height",width:"--nexgui4-scrollback-width",x:"--nexgui4-scrollback-left",y:"--nexgui4-scrollback-top"},pI=[{direction:"n",sx:{cursor:"n-resize",height:uI,left:dI,right:dI,top:-6}},{direction:"s",sx:{bottom:-6,cursor:"s-resize",height:uI,left:dI,right:dI}},{direction:"e",sx:{bottom:dI,cursor:"e-resize",right:-6,top:dI,width:uI}},{direction:"w",sx:{bottom:dI,cursor:"w-resize",left:-6,top:dI,width:uI}},{direction:"ne",sx:{cursor:"ne-resize",height:dI,right:-6,top:-6,width:dI}},{direction:"nw",sx:{cursor:"nw-resize",height:dI,left:-6,top:-6,width:dI}},{direction:"se",sx:{bottom:-6,cursor:"se-resize",height:dI,right:-6,width:dI}},{direction:"sw",sx:{bottom:-6,cursor:"sw-resize",height:dI,left:-6,width:dI}}],areScrollbackGeometriesEqual=(g,A)=>g?.x===A?.x&&g?.y===A?.y&&g?.width===A?.width&&g?.height===A?.height,getScrollbackPaperGeometryStyle=g=>({[mI.height]:`${g.height}px`,[mI.width]:`${g.width}px`,[mI.x]:`${g.x}px`,[mI.y]:`${g.y}px`}),applyScrollbackPaperGeometry=(g,A)=>{g&&A&&Object.entries(getScrollbackPaperGeometryStyle(A)).forEach(([A,I])=>{g.style.setProperty(A,I)})},useScrollbackGeometry=({initialGeometry:g,persistGeometry:A,contentRef:I})=>{const C=(0,e.useRef)(null),t=(0,e.useRef)(g),n=(0,e.useRef)(g),[a,r]=(0,e.useState)(()=>getScrollbackPaperGeometryStyle(g)),o=(0,e.useCallback)(()=>C.current??I.current?.closest('[data-testid="scrollback-dialog-paper"]')??I.current?.closest(".MuiDialog-paper")??null,[I]),i=(0,e.useCallback)(g=>{const A=normalizeScrollbackGeometry("function"==typeof g?g(n.current):g);return n.current=A,applyScrollbackPaperGeometry(o(),A),A},[o]),l=(0,e.useCallback)(g=>{const A=i(g);return areScrollbackGeometriesEqual(t.current,A)||(t.current=A,r(getScrollbackPaperGeometryStyle(A))),A},[i]),s=(0,e.useCallback)((g,I)=>{const C=document.body.style.userSelect;document.body.style.userSelect="none";const handlePointerMove=g=>{I(g)},handlePointerUp=()=>{document.body.style.userSelect=C,document.removeEventListener("pointermove",handlePointerMove),document.removeEventListener("pointerup",handlePointerUp),A(l(n.current))};document.addEventListener("pointermove",handlePointerMove),document.addEventListener("pointerup",handlePointerUp),g.currentTarget.setPointerCapture?.(g.pointerId)},[l,A]);return{paperRef:C,paperGeometryStyle:a,handleDragPointerDown:(0,e.useCallback)(g=>{if(0!==g.button)return;g.preventDefault();const A=n.current,I=g.clientX-A.x,C=g.clientY-A.y;s(g,g=>{i({...A,x:g.clientX-I,y:g.clientY-C})})},[i,s]),handleResizePointerDown:(0,e.useCallback)(g=>A=>{if(0!==A.button)return;A.preventDefault(),A.stopPropagation();const I=n.current,C=A.clientX,e=A.clientY,t=I.x+I.width,a=I.y+I.height,r=getMinimumScrollbackGeometry();s(A,A=>{let n=I;if(g.includes("e")&&(n={...n,width:clampScrollbackGeometryValue(I.width+(A.clientX-C),r.width,getScrollbackViewportBounds().width-I.x)}),g.includes("s")&&(n={...n,height:clampScrollbackGeometryValue(I.height+(A.clientY-e),r.height,getScrollbackViewportBounds().height-I.y)}),g.includes("w")){const g=clampScrollbackGeometryValue(I.x+(A.clientX-C),0,t-r.width);n={...n,x:g,width:t-g}}if(g.includes("n")){const g=clampScrollbackGeometryValue(I.y+(A.clientY-e),0,a-r.height);n={...n,y:g,height:a-g}}i(n)})},[i,s]),reaffirmCommittedGeometry:(0,e.useCallback)(()=>{l(g=>g)},[l])}},hI={id:UA.default.number.isRequired,html:UA.default.string.isRequired,timestamp:UA.default.string.isRequired,isPrompt:UA.default.bool.isRequired,isMonospace:UA.default.bool.isRequired,shouldLog:UA.default.bool.isRequired,gagged:UA.default.bool},yI=UA.default.exact(hI),buildLineClassName=(g,A,I)=>["nexgui4-virtual-scroll-line",g.isPrompt?"prompt textline":"textline",g.isMonospace?"mono":null,g.shouldLog?"nexguilog":null,g.gagged?"nexgui4-virtual-scroll-line--gagged":null,A&&I?"nexgui4-virtual-scroll-line--indented":null].filter(Boolean).join(" "),VirtualScrollLineComponent=({fontFamily:g,line:A,isActiveMatch:I=!1,isMatch:C=!1,timestampClassName:e,showTimestamp:t=!0,indentWrappedLogs:n=!1})=>React.createElement("div",{className:buildLineClassName(A,n,t)},t?React.createElement($A,{fontFamily:g,timestamp:A.timestamp,highlight:I?"yellow":!!C&&"rgba(255, 255, 0, 0.35)",className:e}):null,React.createElement("span",{className:"nexgui4-virtual-scroll-line__payload",dangerouslySetInnerHTML:{__html:A.html}}));VirtualScrollLineComponent.displayName="VirtualScrollLine",VirtualScrollLineComponent.propTypes={fontFamily:UA.default.string,isActiveMatch:UA.default.bool,isMatch:UA.default.bool,line:yI.isRequired,showTimestamp:UA.default.bool,timestampClassName:UA.default.string,indentWrappedLogs:UA.default.bool};var areVirtualScrollLinePropsEqual=(g,A)=>g.line.id===A.line.id&&g.fontFamily===A.fontFamily&&g.showTimestamp===A.showTimestamp&&g.isActiveMatch===A.isActiveMatch&&g.isMatch===A.isMatch&&g.timestampClassName===A.timestampClassName&&g.indentWrappedLogs===A.indentWrappedLogs,fI=(0,e.memo)(VirtualScrollLineComponent,areVirtualScrollLinePropsEqual);fI.displayName="VirtualScrollLine",fI.propTypes=VirtualScrollLineComponent.propTypes;var bI=UA.default.oneOfType([yI,UA.default.oneOf([null])]),PromptLineComponent=({fontFamily:g,promptLine:A=null,show:I=!1,showTimestamp:C=!0,timestampClassName:e})=>I&&A?React.createElement("div",{className:"nexgui4-prompt-line"},React.createElement(fI,{fontFamily:g,line:A,showTimestamp:C,timestampClassName:e})):null;PromptLineComponent.displayName="PromptLine",PromptLineComponent.propTypes={fontFamily:UA.default.string,promptLine:bI,show:UA.default.bool.isRequired,showTimestamp:UA.default.bool,timestampClassName:UA.default.string};var xI=(0,e.memo)(PromptLineComponent);xI.displayName="PromptLine",xI.propTypes=PromptLineComponent.propTypes;var noop$1=()=>{},EI=UA.default.oneOfType([yI,UA.default.oneOf([null])]),estimateLineSize=g=>Math.ceil(1.25*g),VirtualScrollBufferComponent=({items:g,promptLine:A=null,showPromptInline:I=!0,showTimestamp:C=!0,onSendCommand:t=noop$1,fontFamily:n=Xg,fontSize:a=14,itemKeyVersion:r=null,border:o=!0,onRequestScrollback:i=noop$1,onScrollLockChange:l=noop$1,activeMatchIndex:s=-1,timestampClassName:c,overscan:u=5,renderItem:d,indentWrappedLogs:m=!1},p)=>{const h=parseFontSize(a,14),y=(0,e.useCallback)(()=>estimateLineSize(h),[h]),b=(0,e.useCallback)((g,A)=>g?.id??A,[]),x=o?null:`${g.length}:${g.at(-1)?.id??""}:${I?"":A?.id??""}`,E=(0,e.useCallback)((g,{isActiveMatch:A})=>React.createElement(fI,{fontFamily:n,line:g,isActiveMatch:A,showTimestamp:C,timestampClassName:c,indentWrappedLogs:m}),[n,C,c,m]);return React.createElement(_A,{ref:p,activeMatchIndex:s,border:o,displayPinKey:x,estimateSize:y,fontFamily:n,fontSize:a,footer:React.createElement(xI,{fontFamily:n,promptLine:A,show:Boolean(A)&&!I,showTimestamp:C,timestampClassName:c}),getItemKey:b,itemKeyVersion:r,items:g,mode:o?"panel":"display",onRequestHistory:i,onSendCommand:t,onScrollLockChange:l,overscan:u,renderItem:d??E,showScrollLockBadge:o})};VirtualScrollBufferComponent.displayName="VirtualScrollBuffer",VirtualScrollBufferComponent.propTypes={activeMatchIndex:UA.default.number,border:UA.default.bool,fontFamily:UA.default.string,fontSize:UA.default.oneOfType([UA.default.number,UA.default.string]),itemKeyVersion:UA.default.oneOfType([UA.default.number,UA.default.string]),items:UA.default.arrayOf(yI).isRequired,onRequestScrollback:UA.default.func,onScrollLockChange:UA.default.func,onSendCommand:UA.default.func,overscan:UA.default.number,promptLine:EI,renderItem:UA.default.func,showPromptInline:UA.default.bool,showTimestamp:UA.default.bool,timestampClassName:UA.default.string,indentWrappedLogs:UA.default.bool};var vI=(0,e.forwardRef)(VirtualScrollBufferComponent);vI.displayName="VirtualScrollBuffer",vI.propTypes=VirtualScrollBufferComponent.propTypes;var RI=UA.default.oneOfType([yI,UA.default.oneOf([null])]),noop=()=>{},wI=.8,SI=1,MI=2,TI=48,NI="nexgui4-scrollback-timestamp ng-timestamp timestamp mono no_out",resolveCssFontSize=g=>null==g?"14px":"number"==typeof g?`${g}px`:String(g),getScrollbackWheelDeltaPixels=(g,A)=>{const I=Number(g?.deltaY);if(!Number.isFinite(I)||0===I)return 0;if(g?.deltaMode===SI)return I*TI;if(g?.deltaMode===MI){const g=Number(A?.clientHeight);return I*Math.max(0,Number.isFinite(g)?g:0)*wI}return I},resolveDialogSurfaceBackground=g=>g.nexGui?.tokens?.background?.modal??g.palette.background.paper,resolveModalBackground=g=>g.palette.common.black,resolveHeaderBackground=g=>g.nexGui?.tokens?.background?.header??g.palette.background.default,GI=(0,e.memo)(({isEndpoint:g,inRange:A,onClick:I})=>React.createElement(n.Box,{"aria-label":"Select line for copy range",component:"button",onClick:I,sx:I=>({position:"absolute",left:0,top:"4px",bgcolor:g?I.palette.primary.main:"transparent",borderRadius:"50%",borderStyle:"solid",borderWidth:2,borderColor:g?I.palette.primary.main:I.palette.divider,boxSizing:"border-box",cursor:"pointer",display:"block",height:12,lineHeight:1,opacity:g?1:A?.6:.25,outline:"none",p:0,transition:"opacity 0.12s, background-color 0.12s, border-color 0.12s",userSelect:"none",width:12,"&:hover":{borderColor:I.palette.primary.main,opacity:1},"&:focus-visible":{outline:`2px solid ${I.palette.primary.main}`,outlineOffset:2}})}));GI.displayName="SelectionBubble",GI.propTypes={inRange:UA.default.bool.isRequired,isEndpoint:UA.default.bool.isRequired,onClick:UA.default.func.isRequired};var ScrollbackModalDialog=({open:g,onClose:A,items:I,filteredItems:C=I,itemKeyVersion:t=null,scrollbackSession:a=null,promptLine:r=null,onSendCommand:o=noop,fontFamily:i=Xg,fontSize:l=14,showTimestamp:s=!0,indentWrappedLogs:c=!1})=>{const[u,d]=(0,e.useState)(!0),[m,p]=(0,e.useState)(s),[h,y]=(0,e.useState)(!1),[b,x]=(0,e.useState)(!1),{focusHostInput:E,initialGeometry:v,persistGeometry:R,useVirtualizedLogs:w}=useScrollbackLayout(),S=(0,e.useRef)(null),M=(0,e.useRef)(null),T=(0,e.useCallback)(()=>M.current?.querySelector('[data-testid="virtual-scroll-viewport"]')??null,[]),N=(0,e.useCallback)(g=>{g.dispatchEvent(new Event("scroll",{bubbles:!0}))},[]),G=(0,e.useCallback)(g=>{const A=T();if(!A)return!1;const I=Math.max(0,A.scrollHeight-A.clientHeight);return A.scrollTop=clampScrollbackGeometryValue(A.scrollTop+g,0,I),!0},[T]),D=(0,e.useCallback)(()=>{const g=T();g?(g.scrollTop=g.scrollHeight,N(g)):S.current?.scrollToBottom?.(),x(!1)},[N,T]),{hydratedItems:j,isLoadingMore:P,hydrateToId:B}=useScrollbackHydration({items:I,open:g,scrollbackSession:a,getViewportElement:T,dispatchViewportScroll:N,setScrollLock:x}),{paperRef:O,paperGeometryStyle:L,handleDragPointerDown:z,handleResizePointerDown:Z,reaffirmCommittedGeometry:F}=useScrollbackGeometry({initialGeometry:v,persistGeometry:R,contentRef:M}),{searchBarText:K,searchResults:Y,isSearchActive:W,searchCursor:V,searchStatusText:U,hasNoMatch:H,resetSearch:Q,handleSearchInput:X,handleSearchKeyDown:J}=useScrollbackSearch({scrollbackSession:a,open:g,showPrompts:u,showGagged:h}),q=(0,e.useMemo)(()=>j.filter(g=>(u||!g.isPrompt)&&(h||!g.gagged)),[j,h,u]),_=(0,e.useMemo)(()=>V>=0&&V<Y.length?Y[V]:null,[V,Y]);(0,e.useEffect)(()=>{if(!g||!_)return;const A=_.id,I=q.findIndex(g=>g.id===A);I>=0?(S.current?.scrollToIndex?.(I,{align:"center"}),x(!0)):B(A)},[_,q,B,g]);const $=(0,e.useMemo)(()=>W&&_?q.findIndex(g=>g.id===_.id):-1,[W,_,q]),gg=(0,e.useMemo)(()=>new Set(Y.map(g=>g.id)),[Y]),Ag=resolveCssFontSize(l),{selectionA:Ig,selectionB:Cg,selectedRangeItems:eg,copyConfirmed:tg,handleLineSelect:ng,handleCopyRange:ag,isLineSelected:rg}=useScrollbackSelection({visibleItems:q,showTimestamps:m}),{handleDownload:og}=useScrollbackDownload({scrollbackSession:a,visibleItems:W?Y:q,isSearchActive:W,useVirtualizedLogs:w,fontFamily:i,fontSize:l}),ig=(0,e.useCallback)((g,{isActiveMatch:A})=>{const{isEndpoint:I,inRange:C}=rg(g.id),e=gg.has(g.id);return React.createElement(n.Box,{sx:g=>({position:"relative",pl:"18px",bgcolor:C?I?g.palette.action.selected:g.palette.action.hover:void 0})},React.createElement(GI,{isEndpoint:I,inRange:C,onClick:()=>ng(g.id)}),React.createElement(fI,{fontFamily:i,isActiveMatch:A,isMatch:e,line:g,showTimestamp:m,timestampClassName:NI,indentWrappedLogs:c}))},[i,ng,rg,m,c,gg]);(0,e.useEffect)(()=>{b||Q()},[Q,b]),(0,e.useEffect)(()=>{g?F():x(!1)},[g,F]),(0,e.useEffect)(()=>{if(!g)return;const A=T();if(!A)return;const handleWheel=g=>{if(g.ctrlKey)return;const I=getScrollbackWheelDeltaPixels(g,A);0!==I&&(g.preventDefault(),g.stopPropagation(),G(I))};return A.addEventListener("wheel",handleWheel,{passive:!1}),()=>{A.removeEventListener("wheel",handleWheel)}},[T,g,G]),(0,e.useEffect)(()=>{if(!g)return;const handleWindowKeyDown=g=>"PageUp"===g.key?(g.preventDefault(),g.stopPropagation(),void G(-(T()?.clientHeight??0)*wI)):"PageDown"===g.key?(g.preventDefault(),g.stopPropagation(),void G((T()?.clientHeight??0)*wI)):void("Escape"===g.key&&(g.preventDefault(),g.stopPropagation(),A(),window.setTimeout(()=>{E()},0)));return window.addEventListener("keydown",handleWindowKeyDown,!0),()=>{window.removeEventListener("keydown",handleWindowKeyDown,!0)}},[E,T,A,g,G]);const lg=(0,e.useCallback)((g,A)=>{d(A)},[]),sg=(0,e.useCallback)((g,A)=>{p(A)},[]),cg=(0,e.useCallback)((g,A)=>{y(A)},[]),ug=(0,e.useCallback)(()=>{D()},[D]),dg=(0,e.useCallback)((g,I)=>{"backdropClick"!==I&&(A(),window.setTimeout(()=>{E()},0))},[E,A]),mg=a?.getStats?.(),pg=W?q.length:mg?.searchLineCount??q.length;return React.createElement(n.Dialog,{open:g,onClose:dg,hideBackdrop:!0,disableEnforceFocus:!0,disableAutoFocus:!0,maxWidth:!1,sx:g=>({pointerEvents:"auto",zIndex:g.zIndex.modal+10,"& .MuiDialog-container":{alignItems:"flex-start",justifyContent:"flex-start",pointerEvents:"none"},"& .MuiDialogTitle-root":{cursor:"grab",fontFamily:i,fontSize:Ag,userSelect:"none"},"& .MuiDialogTitle-root:active":{cursor:"grabbing"},"& .MuiButton-root, & .MuiInputBase-root, & .MuiInputLabel-root":{fontFamily:i,fontSize:Ag}}),slotProps:{backdrop:{invisible:!0},paper:{"data-testid":"scrollback-dialog-paper",ref:O,style:L,sx:g=>({backgroundImage:"none",backgroundColor:resolveDialogSurfaceBackground(g),border:1,borderColor:"divider",boxShadow:24,color:"text.primary",isolation:"isolate",position:"fixed",pointerEvents:"auto",left:`var(${mI.x})`,top:`var(${mI.y})`,width:`var(${mI.width})`,height:`var(${mI.height})`,m:0,maxWidth:"none",maxHeight:"none",display:"flex",flexDirection:"column",fontFamily:i,fontSize:Ag,overflow:"hidden",zIndex:g.zIndex.modal+11})}}},React.createElement(n.DialogTitle,{onPointerDown:z,sx:g=>({backgroundColor:resolveHeaderBackground(g),borderBottom:1,borderColor:"divider",backgroundImage:"none",p:1,touchAction:"none"})},"Scrollback Buffer"),React.createElement(n.DialogContent,{ref:M,sx:g=>({backgroundColor:resolveModalBackground(g),backgroundImage:"none",color:"text.primary",display:"flex",flex:1,minHeight:0,overflow:"hidden",p:0,position:"relative"})},P?React.createElement(n.Box,{sx:{position:"absolute",top:8,left:"50%",transform:"translateX(-50%)",zIndex:10,backgroundColor:"rgba(0, 0, 0, 0.7)",borderRadius:"4px",padding:"4px 8px",display:"flex",alignItems:"center",gap:"8px",color:"primary.main",fontSize:"0.75rem",border:"1px solid",borderColor:"divider"}},React.createElement(n.CircularProgress,{size:12,thickness:5}),"Loading history..."):null,React.createElement(vI,{activeMatchIndex:$,border:!0,fontFamily:i,fontSize:l,itemKeyVersion:t,items:q,onSendCommand:o,onScrollLockChange:x,promptLine:r,ref:S,renderItem:ig,showPromptInline:!0,showTimestamp:m,timestampClassName:NI})),React.createElement(n.DialogActions,null,React.createElement(n.TextField,{size:"small",label:"Search",value:K,onInput:X,onKeyDown:J,error:H,slotProps:{htmlInput:{"aria-label":"Search scrollback"}},sx:{width:"20ch"}}),U?React.createElement(n.Box,{"aria-live":"polite",component:"div",role:"status",sx:g=>({color:H?g.palette.error.main:g.palette.text.secondary,fontSize:g.typography.pxToRem(12),lineHeight:1.2,whiteSpace:"nowrap"})},U):null,React.createElement(n.Box,{sx:{flex:1}}),React.createElement(n.FormControlLabel,{control:React.createElement(n.Switch,{checked:u,onChange:lg,size:"small"}),label:"Show Prompts",sx:{mr:1,userSelect:"none"}}),React.createElement(n.FormControlLabel,{control:React.createElement(n.Switch,{checked:m,onChange:sg,size:"small"}),label:"Show Timestamps",sx:{mr:1,userSelect:"none"}}),React.createElement(n.FormControlLabel,{control:React.createElement(n.Switch,{checked:h,onChange:cg,size:"small"}),label:"Show Gagged",sx:{mr:1,userSelect:"none"}}),null!=eg?React.createElement(n.Button,{color:tg?"success":"primary",onClick:ag,size:"small",variant:"outlined"},tg?"Copied!":`Copy (${eg.length})`):null,b?React.createElement(n.Button,{onClick:ug,size:"small",variant:"outlined"},"Bottom"):null,React.createElement(n.Button,{onClick:og,size:"small",variant:"outlined"},"Download (#",pg,")"),React.createElement(n.Button,{onClick:dg,size:"small"},"Close")),pI.map(g=>React.createElement(n.Box,{component:"span","data-testid":`scrollback-resize-handle-${g.direction}`,key:g.direction,onPointerDown:Z(g.direction),sx:{position:"absolute",touchAction:"none",zIndex:2,...g.sx}})))};ScrollbackModalDialog.displayName="ScrollbackModalDialog";var kI={fontFamily:UA.default.string,fontSize:UA.default.oneOfType([UA.default.number,UA.default.string]),filteredItems:UA.default.arrayOf(yI),itemKeyVersion:UA.default.oneOfType([UA.default.number,UA.default.string]),scrollbackSession:UA.default.object,items:UA.default.arrayOf(yI).isRequired,onClose:UA.default.func.isRequired,onSendCommand:UA.default.func,open:UA.default.bool.isRequired,promptLine:RI,showTimestamp:UA.default.bool,indentWrappedLogs:UA.default.bool};ScrollbackModalDialog.propTypes=kI;var ScrollbackModalComponent=g=>g.open?React.createElement(ScrollbackModalDialog,g):null;ScrollbackModalComponent.displayName="ScrollbackModal",ScrollbackModalComponent.propTypes=kI;var DI=(0,e.memo)(ScrollbackModalComponent);DI.displayName="ScrollbackModal",DI.propTypes=ScrollbackModalComponent.propTypes;var identity=g=>g,useHostDisplaySetting=(g=identity,A=Object.is)=>{const{hostDisplaySettingsModel:I}=useNexGui();if(!I||"function"!=typeof I.subscribe||"function"!=typeof I.getSnapshot)throw new Error("useHostDisplaySetting requires NexGuiContext hostDisplaySettingsModel with subscribe(listener) and getSnapshot().");const C=(0,e.useMemo)(()=>{let C=g(I.getSnapshot());const getSnapshot=()=>{const e=g(I.getSnapshot());return A(C,e)||(C=e),C},subscribe=e=>I.subscribe(()=>{const t=g(I.getSnapshot());A(C,t)||(C=t,e())});return Object.freeze({getSnapshot,subscribe})},[I,A,g]);return(0,e.useSyncExternalStore)(C.subscribe,C.getSnapshot,C.getSnapshot)},useHostDisplaySettings=()=>useHostDisplaySetting(),jI=Object.freeze({}),PI=Object.freeze({}),createHostBridge=g=>Object.freeze({getSettings:()=>g?.getHostSettings?.()??jI,setSetting:(A,I)=>{g?.setHostSetting?.(A,I)},getLayoutSnapshot:()=>g?.getHostLayoutSnapshot?.()??PI,updateLayoutAttributes:A=>{g?.updateHostLayoutAttributes?.(A)},focusInput:()=>{g?.focusInput?.()}}),useHostBridge=()=>{const{adapter:g}=useNexGui();return(0,e.useMemo)(()=>createHostBridge(g),[g])},useHostFocus=()=>{const g=useHostBridge();return(0,e.useCallback)(()=>{g.focusInput()},[g])},BI=new WeakMap,assertStreamModel=g=>{if(!g||"function"!=typeof g.subscribe||"function"!=typeof g.getSnapshot)throw new Error("useStream requires NexGuiContext streamModel with subscribe(listener) and getSnapshot().")},getStreamModelBindings=g=>{assertStreamModel(g);let A=BI.get(g);if(!A){const subscribe=A=>g.subscribe(A),getSnapshot=()=>g.getSnapshot();A=Object.freeze({subscribe,getSnapshot}),BI.set(g,A)}return A},useStreamSnapshot=()=>{const{streamModel:g}=useNexGui(),{subscribe:A,getSnapshot:I}=getStreamModelBindings(g);return(0,e.useSyncExternalStore)(A,I,I)},selectUiSlice=g=>({activeTab:g.activeTab,modalOpen:g.modalOpen,setActiveTab:g.setActiveTab,openModal:g.openModal,closeModal:g.closeModal,settings:g.settings,setSetting:g.setSetting}),useUi=()=>{const{stores:g}=useNexGui();return g.ui(useShallow(selectUiSlice))},OI="scrollback",getPromptShownTailStartIndex=(g,A,I)=>{const C=Math.max(0,g.length-I);let e=0;for(let t=g.length-1;t>=C;t--)if(!g[t]?.isPrompt&&(e++,e===A))return t;return C},selectMainDisplayLiveTailItems=({allItems:g,filteredItems:A,showPrompts:I,nonPromptLimit:C=100,totalItemLimit:e=100})=>{const t=I?g:A;if(t.length<=C)return t;if(!I)return t.slice(-C);const n=getPromptShownTailStartIndex(t,C,e);return 0===n?t:t.slice(n)},useMainDisplayViewModel=()=>{const{adapter:g,scrollbackSession:A,stores:I}=useNexGui(),C=useHostFocus(),{showPrompts:t,showTimestamps:n}=useHostDisplaySettings(),a=I.ui(g=>!1!==g.settings.indentWrappedLogs),{buffer:r,filteredBuffer:o,promptLine:i,version:l}=useStreamSnapshot(),{modalOpen:s,openModal:c,closeModal:u}=useUi(),d=(0,e.useMemo)(()=>selectMainDisplayLiveTailItems({allItems:r.some(g=>g.gagged)?r.filter(g=>!g.gagged):r,filteredItems:o.some(g=>g.gagged)?o.filter(g=>!g.gagged):o,showPrompts:t}),[r,o,t]),m=t?null:i,p=d.at(-1),h=`${t?"all":"filtered"}:${d.length}:${p?.id??"none"}`,y=(0,e.useCallback)(()=>{s!==OI&&c(OI)},[s,c]),b=(0,e.useCallback)(()=>{u()},[u]),x=(0,e.useCallback)(A=>{g?.send?.(A)},[g]);return{allItems:r,closeScrollback:b,displayItems:d,displayItemKeyVersion:h,displayPromptLine:m,filteredItems:o,focusHostInput:C,indentWrappedLogs:a,openScrollback:y,promptLine:i,scrollbackItemKeyVersion:l,scrollbackOpen:s===OI,scrollbackSession:A,sendCommand:x,showTimestamps:n}},selectThemeSlice=g=>({tokens:g.tokens,updateTokens:g.updateTokens,resetTokens:g.resetTokens}),useTheme$9=()=>{const{stores:g}=useNexGui(),A=g.theme(useShallow(selectThemeSlice)),I=(0,e.useMemo)(()=>createMuiTheme(A.tokens),[A.tokens]);return(0,e.useMemo)(()=>({...A,theme:I}),[A,I])},LI="nexgui4-main-display-timestamp ng-timestamp timestamp mono no_out",zI=10,MainDisplayInner=()=>{const g=(0,e.useRef)(null),{tokens:A}=useTheme$9(),{allItems:I,closeScrollback:C,displayItems:t,displayItemKeyVersion:a,displayPromptLine:r,filteredItems:o,focusHostInput:i,openScrollback:l,promptLine:s,scrollbackItemKeyVersion:c,scrollbackOpen:u,scrollbackSession:d,sendCommand:m,showTimestamps:p,indentWrappedLogs:h}=useMainDisplayViewModel(),y=A.theme.displayFontFamily,b=A.theme.displayFontSize,x=(0,e.useCallback)(()=>{l()},[l]),E=(0,e.useCallback)(()=>{C(),g.current?.scrollToBottom(),i()},[C,i]);return React.createElement(n.Box,{className:"main-display main-display__content",sx:{display:"flex",flex:1,minHeight:0,minWidth:0,overflow:"hidden",position:"relative",width:"100%"}},React.createElement(n.Box,{"data-testid":"main-display-buffer",sx:{display:"flex",flex:1,minHeight:0,position:"relative"}},React.createElement(vI,{ref:g,border:!1,fontFamily:y,fontSize:b,itemKeyVersion:a,items:t,onRequestScrollback:x,onSendCommand:m,overscan:zI,promptLine:r,showPromptInline:!1,showTimestamp:p,timestampClassName:LI,indentWrappedLogs:h})),React.createElement(DI,{fontFamily:y,fontSize:b,filteredItems:o,items:I,itemKeyVersion:c,scrollbackSession:d,onClose:E,onSendCommand:m,open:u,promptLine:s,showTimestamp:p,indentWrappedLogs:h}))};MainDisplayInner.displayName="MainDisplayInner";var MainDisplay=()=>React.createElement(QA,{panelName:"Main Display"},React.createElement(MainDisplayInner,null));MainDisplay.displayName="MainDisplay";var selectPlayStatsSlice=g=>({instance:g.instance,session:g.session,month:g.month,updateInstance:g.updateInstance,updateSession:g.updateSession,updateMonth:g.updateMonth,resetInstance:g.resetInstance}),usePlayStats=()=>{const{stores:g}=useNexGui();return g.playStats(useShallow(selectPlayStatsSlice))},ZI="metrics",FI=Object.freeze(["instance","session","month"]),KI=Object.freeze({instance:"Instance",session:"Session",month:"Month"}),YI=1e3,WI=35e4,VI=45e4,getFlipTransform$7=g=>{switch(g){case 1:return"scaleX(-1) scaleY(-1)";case 2:return"scaleY(-1)";case 3:return"scaleX(-1)";default:return"none"}},formatNumber$1=g=>g.toLocaleString("en-US"),formatPercent=g=>`${g.toFixed(2)}%`,formatElapsed=(g,A=Date.now())=>{const I=Math.max(0,A-g),C=Math.floor(I/1e3),e=Math.floor(C/3600),t=Math.floor(C%3600/60);return[e>0?`${e}h`:null,e>0||t>0?`${t}m`:null,C%60+"s"].filter(Boolean).join(" ")},formatPerHour=(g,A,I=Date.now())=>{const C=Math.max(0,I-A)/36e5,e=parseInt(g/C,10);return e>0?formatNumber$1(e):"0"},resolveActiveTabId$2=g=>"string"==typeof g&&FI.includes(g)?g:"number"==typeof g?FI[g]??"month":"month",UI={kills:UA.default.number.isRequired,goldGained:UA.default.number.isRequired,xpPercent:UA.default.number.isRequired,xpValue:UA.default.number.isRequired,deaths:UA.default.number.isRequired,startedAt:UA.default.number.isRequired},HI=UA.default.shape(UI),QI=UA.default.shape({...UI,goldCap:UA.default.number.isRequired,year:UA.default.number,month:UA.default.number}),StatTable=({rows:g})=>React.createElement(n.Box,{component:"table",sx:{borderCollapse:"collapse","& td":{pb:.5,pr:2,verticalAlign:"top"},"& td:last-of-type":{fontVariantNumeric:"tabular-nums"}}},React.createElement("tbody",null,g.map((g,A)=>React.createElement("tr",{key:`${g.label}-${A}`},React.createElement("td",null,g.label),React.createElement("td",null,g.value)))));StatTable.displayName="MetricsPanelStatTable",StatTable.propTypes={rows:UA.default.arrayOf(UA.default.shape({label:UA.default.string.isRequired,value:UA.default.node.isRequired})).isRequired};var LinearProgressWithLabel=({label:g,value:A})=>React.createElement(n.Box,{sx:{mt:2}},React.createElement(n.Box,{sx:{fontSize:"9px",mb:.25}},g),React.createElement(n.Box,{sx:{alignItems:"center",display:"flex"}},React.createElement(n.Box,{sx:{mr:1,width:"100%"}},React.createElement(n.LinearProgress,{"aria-label":g,sx:{borderRadius:5,height:5},value:A,variant:"determinate"})),React.createElement(n.Box,{sx:{minWidth:35}},React.createElement(n.Typography,{color:"text.secondary",variant:"body2"},`${A}%`))));LinearProgressWithLabel.displayName="MetricsPanelLinearProgressWithLabel",LinearProgressWithLabel.propTypes={label:UA.default.string.isRequired,value:UA.default.number.isRequired};var MonthGoldCap=({goldCap:g})=>React.createElement(n.Box,{sx:{mt:1}},React.createElement(LinearProgressWithLabel,{label:"Soft Gold Cap",value:g<=WI?parseInt(g/WI*100,10):100}),React.createElement(LinearProgressWithLabel,{label:"Hard Gold Cap",value:g<=VI?parseInt(g/VI*100,10):100}));MonthGoldCap.displayName="MetricsPanelMonthGoldCap",MonthGoldCap.propTypes={goldCap:UA.default.number.isRequired};var ScopeContent=({now:g,onReset:A,scope:I,scopeKey:C})=>{const t=(0,e.useMemo)(()=>{const A=[{label:"Total Kills:",value:formatNumber$1(I.kills)},{label:"Total Gold:",value:formatNumber$1(I.goldGained)},{label:"Total XP:",value:formatPercent(I.xpPercent)},{label:"Total XP:",value:formatNumber$1(I.xpValue)},{label:"Total Deaths:",value:formatNumber$1(I.deaths)}];return"month"!==C?[...A,{label:"Time:",value:formatElapsed(I.startedAt,g)},{label:"XP/Hr:",value:formatPerHour(I.xpValue,I.startedAt,g)},{label:"Gold/Hr:",value:formatPerHour(I.goldGained,I.startedAt,g)}]:[...A,{label:"Gold Cap:",value:formatNumber$1(I.goldCap)}]},[g,I,C]);return React.createElement(n.Box,null,React.createElement(StatTable,{rows:t}),"instance"===C?React.createElement(n.Button,{onClick:A,sx:{mt:1},variant:"outlined"},"Reset"):null,"month"===C?React.createElement(MonthGoldCap,{goldCap:I.goldCap}):null)};ScopeContent.displayName="MetricsPanelScopeContent",ScopeContent.propTypes={now:UA.default.number.isRequired,onReset:UA.default.func.isRequired,scope:UA.default.oneOfType([HI,QI]).isRequired,scopeKey:UA.default.oneOf(["instance","session","month"]).isRequired};var MetricsPanelInner=()=>{const g=(0,a.useTheme)(),{activeTab:A,setActiveTab:I}=useUi(),{instance:C,session:t,month:r,resetInstance:o}=usePlayStats(),[i]=(0,e.useState)(()=>Math.floor(4*Math.random())),[l,s]=(0,e.useState)(()=>Date.now()),c=g?.nexGui?.backgroundImage??"",u=g?.nexGui?.backgroundOpacity??.5,d=g?.nexGui?.backgroundFilter??"none",m=resolveActiveTabId$2(A[ZI]),p={instance:C,session:t,month:r};(0,e.useEffect)(()=>{if("month"===m)return void s(Date.now());s(Date.now());const g=window.setInterval(()=>{s(Date.now())},YI);return()=>{window.clearInterval(g)}},[m]);const handleTabChange=(g,A)=>{const C=FI.indexOf(A);C>=0&&I(ZI,C)};return React.createElement(n.Box,{className:"metrics-panel",sx:{color:"text.primary",height:"100%",overflow:"hidden",position:"relative",width:"100%"}},c?React.createElement(n.Box,{"aria-hidden":"true",className:"metrics-panel__background",sx:{backgroundImage:`url(${c})`,backgroundPosition:"center",backgroundSize:"cover",filter:d,inset:0,opacity:u,position:"absolute",transform:getFlipTransform$7(i),zIndex:0}}):null,React.createElement(n.Box,{className:"metrics-panel__content",sx:{display:"flex",flexDirection:"column",fontFamily:g.typography.fontFamily,fontSize:g.nexusFontSize??g.typography.fontSize,height:"100%",position:"relative",width:"100%",zIndex:1}},React.createElement(n.Box,{sx:{borderBottom:1,borderColor:"divider"}},React.createElement(n.Tabs,{"aria-label":"stats tabs",onChange:handleTabChange,value:m},FI.map(g=>React.createElement(n.Tab,{key:g,label:KI[g],value:g})))),React.createElement(n.Box,{sx:{flex:1,overflowY:"auto",p:2}},React.createElement(n.Typography,{component:"div",sx:{color:"text.primary",fontFamily:"inherit",fontSize:"inherit",position:"relative"}},React.createElement(ScopeContent,{now:l,onReset:o,scope:p[m],scopeKey:m})))))};MetricsPanelInner.displayName="MetricsPanelInner";var MetricsPanel=()=>React.createElement(QA,{panelName:"Metrics"},React.createElement(MetricsPanelInner,null));MetricsPanel.displayName="MetricsPanel";var XI={id:UA.default.oneOfType([UA.default.number,UA.default.string]).isRequired,name:UA.default.string.isRequired},JI=UA.default.shape(XI),RoomNpcRowComponent=({indent:g=0,interactive:A=!1,isTarget:I=!1,npc:C,onContextMenu:e,onSelect:t})=>{const a=g>0?g:0,r=g>0?g:2;return React.createElement(n.Box,{className:["room-npc-row",A?"room-npc-row--interactive":"",I?"room-npc-row--target":""].filter(Boolean).join(" "),onClick:A?()=>t?.(C):void 0,onContextMenu:A?g=>{e?.(g,C)}:void 0,sx:{cursor:A?"pointer":"inherit",display:"table-row",outline:I?"1px solid red":""}},React.createElement(n.Box,{component:"div",sx:{color:"cyan",display:"table-cell",padding:`0px 5px 0px ${r}px`,whiteSpace:"nowrap"}},React.createElement(n.Typography,{component:"span",sx:{color:"inherit",fontVariantNumeric:"tabular-nums"},variant:"body2"},C.id)),React.createElement(n.Box,{component:"div",sx:{display:"table-cell",padding:`0px 5px 0px ${a}px`,width:"100%"}},React.createElement(n.Typography,{component:"span",sx:{color:"text.primary"},variant:"body2"},C.name)))};RoomNpcRowComponent.displayName="RoomNpcRow",RoomNpcRowComponent.propTypes={npc:JI.isRequired,indent:UA.default.number,interactive:UA.default.bool,isTarget:UA.default.bool,onContextMenu:UA.default.func,onSelect:UA.default.func};var qI=(0,e.memo)(RoomNpcRowComponent);qI.displayName="RoomNpcRow",qI.propTypes=RoomNpcRowComponent.propTypes;var selectTargetSlice=g=>({id:g.id,name:g.name,isPlayer:g.isPlayer,hpPercent:g.hpPercent,hpText:g.hpText,hpDelta:g.hpDelta,gender:g.gender,currentAffs:g.currentAffs,limbs:g.limbs}),useTarget=()=>{const{stores:g}=useNexGui();return g.target(useShallow(selectTargetSlice))},_I=[/a dervish/,/a sharp-toothed gremlin/,/a chaos orb/,/a bloodleech/,/a minion of chaos/,/a worm/,/a green slime/,/a soulmaster/,/a humbug/,/a chimera/,/a bubonis/,/a chaos storm/,/a chaos hound/,/a withered crone/,/a pathfinder/,/a doppleganger/,/an ethereal firelord/,/a simpering sycophant/,/a water weird/,/an eldritch abomination/,/Khaseem/],$I=[/a shipmate/,/a spectral shipmate/],gC=[/a swarthy swashbuckler/],AC=new Set(["guard","person-military-pointing"]),IC=new Set(["face-angry-horns","fiend","monster"]),CC=new Set(["humanoid","person"]),getFlipTransform$6=g=>{switch(g){case 1:return"scaleX(-1) scaleY(-1)";case 2:return"scaleY(-1)";case 3:return"scaleX(-1)";default:return"none"}},partition=(g,A)=>g.reduce((g,I,C,e)=>(A(I,C,e)?g[0].push(I):g[1].push(I),g),[[],[]]),toNpcEntry=g=>g&&"object"==typeof g&&"string"==typeof g.name?{...g,id:g.id??g.name}:"string"==typeof g?{attrib:"m",id:g,name:g}:null,matchesPatternList=(g,A)=>"string"==typeof g&&A.some(A=>A.test(g)),isVisibleNpc=g=>"m"===g?.attrib||"mx"===g?.attrib,isGuardNpc=g=>AC.has(g?.icon??"")&&"mx"===g?.attrib,isEntityNpc=g=>IC.has(g?.icon??"")&&matchesPatternList(g?.name,_I),isShipmateNpc=g=>matchesPatternList(g?.name,$I),isSwashbucklerNpc=g=>CC.has(g?.icon??"")&&matchesPatternList(g?.name,gC),isTargetNpc=(g,A)=>!A.isPlayer&&null!=g?.id&&null!=A.id&&String(g.id)===String(A.id),NpcGroupHeader=({count:g,expanded:A,onToggle:I,title:C})=>g<1?null:React.createElement(n.Box,{className:"npcs-panel__group-header",onClick:I,sx:{cursor:"pointer",display:"table-row"}},React.createElement(n.Box,{component:"div",sx:{color:"cyan",display:"table-cell",fontFamily:"monospace",padding:"0px 5px 0px 0px",pl:"1rem",whiteSpace:"nowrap"}},React.createElement(n.Typography,{component:"span",sx:{color:"inherit",fontFamily:"inherit"},variant:"body2"},A?"-":"+ ")),React.createElement(n.Box,{component:"div",sx:{display:"table-cell"}},React.createElement(n.Typography,{component:"span",sx:{color:"text.primary"},variant:"body2"},"(",g,") ",C)));NpcGroupHeader.displayName="NpcGroupHeader",NpcGroupHeader.propTypes={count:UA.default.number.isRequired,expanded:UA.default.bool.isRequired,onToggle:UA.default.func.isRequired,title:UA.default.string.isRequired};var NpcsPanelInner=()=>{const g=(0,a.useTheme)(),{adapter:A}=useNexGui(),{npcs:I}=useRoom(),C=useTarget(),[t]=(0,e.useState)(()=>Math.floor(4*Math.random())),[r,o]=(0,e.useState)(!1),[i,l]=(0,e.useState)(!1),[s,c]=(0,e.useState)(!1),[u,d]=(0,e.useState)(!1),m=g?.nexGui?.backgroundImage??"",p=g?.nexGui?.backgroundOpacity??.5,h=g?.nexGui?.backgroundFilter??"none",y=(0,e.useMemo)(()=>(I??[]).map(g=>toNpcEntry(g)).filter(Boolean),[I]),b=(0,e.useMemo)(()=>{let g=[],A=[],I=[],C=[],e=y;return[g,e]=partition(e,isGuardNpc),[A,e]=partition(e,isEntityNpc),[I,e]=partition(e,isShipmateNpc),[C,e]=partition(e,isSwashbucklerNpc),{guards:g,entities:A,shipmates:I,swashbucklers:C,npcs:e.filter(isVisibleNpc)}},[y]),handleNpcSelect=g=>{null!=g?.id&&A.send(`settarget ${g.id}`)},handleNpcContextMenu=g=>{g.preventDefault(),A.notice?.("RIGHT CLICK RIGHT CLICK RIGHT CLICK")};return React.createElement(n.Box,{className:"npcs-panel",sx:{height:"100%",overflow:"hidden",position:"relative",width:"100%"}},m?React.createElement(n.Box,{"aria-hidden":"true",className:"npcs-panel__background",sx:{backgroundImage:`url(${m})`,backgroundPosition:"center",backgroundSize:"cover",filter:h,inset:0,opacity:p,position:"absolute",transform:getFlipTransform$6(t),zIndex:0}}):null,React.createElement(n.Box,{className:"npcs-panel__content",sx:{background:`linear-gradient(180deg, ${(0,a.alpha)("#050505",.18)} 0%, ${(0,a.alpha)("#050505",.36)} 100%)`,color:"text.primary",height:"100%",overflow:"auto",position:"relative",width:"100%",zIndex:1}},React.createElement(n.Box,{className:"npcs-panel__rows",sx:{cursor:"pointer",display:"table",fontSize:g.typography.fontSize,m:"10px",maxWidth:"100%",p:"1px",position:"relative",textAlign:"left"}},React.createElement(NpcGroupHeader,{count:b.guards.length,expanded:i,onToggle:()=>l(g=>!g),title:"City Guards"}),i?b.guards.map(g=>React.createElement(qI,{key:`guard-${g.id}`,indent:12,isTarget:isTargetNpc(g,C),npc:g})):null,React.createElement(NpcGroupHeader,{count:b.entities.length,expanded:r,onToggle:()=>o(g=>!g),title:"Entities"}),r?b.entities.map(g=>React.createElement(qI,{key:`entity-${g.id}`,indent:12,isTarget:isTargetNpc(g,C),npc:g})):null,React.createElement(NpcGroupHeader,{count:b.shipmates.length,expanded:s,onToggle:()=>c(g=>!g),title:"Shipmates"}),s?b.shipmates.map(g=>React.createElement(qI,{key:`shipmate-${g.id}`,indent:12,isTarget:isTargetNpc(g,C),npc:g})):null,React.createElement(NpcGroupHeader,{count:b.swashbucklers.length,expanded:u,onToggle:()=>d(g=>!g),title:"Swashbucklers"}),u?b.swashbucklers.map(g=>React.createElement(qI,{key:`swashbuckler-${g.id}`,indent:12,isTarget:isTargetNpc(g,C),npc:g})):null,b.npcs.map(g=>React.createElement(qI,{key:`npc-${g.id}`,interactive:!0,isTarget:isTargetNpc(g,C),npc:g,onContextMenu:handleNpcContextMenu,onSelect:handleNpcSelect})))))};NpcsPanelInner.displayName="NpcsPanelInner";var NpcsPanel=()=>React.createElement(QA,{panelName:"NPCs"},React.createElement(NpcsPanelInner,null));NpcsPanel.displayName="NpcsPanel";var eC=Object.freeze([]),tC=UA.default.shape({content:UA.default.node,id:UA.default.string.isRequired,label:UA.default.node.isRequired}),resolveActiveTabId$1=(g,A)=>g.some(g=>g.id===A)?A:g[0]?.id??!1,getFlipTransform$5=g=>{switch(g){case 1:return"scaleX(-1) scaleY(-1)";case 2:return"scaleY(-1)";case 3:return"scaleX(-1)";default:return"none"}},TabContainerComponent=({tabs:g=eC,activeTab:A=null,backgroundImage:I="",backgroundOpacity:C=.5,backgroundFilter:t="none",onTabChange:a})=>{const[r]=(0,e.useState)(()=>Math.floor(4*Math.random())),o=resolveActiveTabId$1(g,A),i=g.find(g=>g.id===o)??null;return 0===g.length?null:React.createElement(n.Box,{className:"nexgui4-tab-container",sx:{display:"flex",flex:1,flexDirection:"column",height:"100%",minHeight:0,minWidth:0,overflow:"hidden",position:"relative",width:"100%"}},I?React.createElement(n.Box,{"aria-hidden":"true",className:"nexgui4-tab-container__background",sx:{backgroundImage:`url(${I})`,backgroundPosition:"center",backgroundSize:"cover",filter:t,inset:0,opacity:C,position:"absolute",transform:getFlipTransform$5(r),zIndex:0}}):null,React.createElement(n.Box,{className:"nexgui4-tab-container__surface",sx:{display:"flex",flex:1,flexDirection:"column",minHeight:0,minWidth:0,position:"relative",zIndex:1}},React.createElement(n.Tabs,{allowScrollButtonsMobile:!0,"aria-label":"Panel tabs",className:"nexgui4-tab-container__tabs",onChange:(g,A)=>a(A),scrollButtons:"auto",sx:{borderBottom:1,borderColor:"divider",minHeight:40,"& .MuiTab-root":{minHeight:40,textTransform:"none"}},value:o,variant:"scrollable"},g.map(g=>React.createElement(n.Tab,{"aria-controls":`nexgui4-tab-panel-${g.id}`,id:`nexgui4-tab-${g.id}`,key:g.id,label:g.label,value:g.id}))),React.createElement(n.Box,{"aria-labelledby":i?`nexgui4-tab-${i.id}`:void 0,className:"nexgui4-tab-container__tabpanel",id:i?`nexgui4-tab-panel-${i.id}`:void 0,role:"tabpanel",sx:{display:"flex",flex:1,minHeight:0,minWidth:0,overflow:"auto",p:2,position:"relative",zIndex:1}},i?.content??null)))};TabContainerComponent.displayName="TabContainer",TabContainerComponent.propTypes={activeTab:UA.default.oneOfType([UA.default.string,UA.default.oneOf([null])]),backgroundFilter:UA.default.string,backgroundImage:UA.default.string,backgroundOpacity:UA.default.number,onTabChange:UA.default.func.isRequired,tabs:UA.default.arrayOf(tC)};var nC=(0,e.memo)(TabContainerComponent);nC.displayName="TabContainer",nC.propTypes=TabContainerComponent.propTypes;var aC="title",rC="popover",oC={cursor:"help",display:"inline-flex",maxWidth:"100%"},renderLabel=(g,A,I)=>{const C=React.createElement(n.Typography,{component:"span",variant:"body2"},g);return A?I===aC?React.createElement(n.Box,{component:"span",sx:oC,title:A},C):React.createElement(n.Tooltip,{describeChild:!0,placement:"top-start",title:A},React.createElement(n.Box,{component:"span",sx:oC},C)):C},ConfigToggleComponent=({label:g,value:A,onChange:I,tooltip:C="",tooltipMode:e=rC})=>React.createElement(n.FormControlLabel,{control:React.createElement(n.Switch,{checked:A,onChange:()=>I(!A)}),label:renderLabel(g,C,e),sx:{alignItems:"center",gap:1,justifyContent:"space-between",m:0,width:"100%","& .MuiFormControlLabel-label":{flex:1}}});ConfigToggleComponent.displayName="ConfigToggle",ConfigToggleComponent.propTypes={label:UA.default.string.isRequired,onChange:UA.default.func.isRequired,tooltip:UA.default.string,tooltipMode:UA.default.oneOf([rC,aC]),value:UA.default.bool.isRequired};var iC=(0,e.memo)(ConfigToggleComponent);iC.displayName="ConfigToggle",iC.propTypes=ConfigToggleComponent.propTypes;var NOOP=()=>{},resolveCommand=g=>"function"==typeof g?g:NOOP,createNativeDisplayCommands=g=>Object.freeze({mount:resolveCommand(g?.mountNativeDisplay),unmount:resolveCommand(g?.unmountNativeDisplay)}),useNativeDisplayCommands=()=>{const{platformTabs:g}=useNexGui();return(0,e.useMemo)(()=>createNativeDisplayCommands(g),[g])},lC="sfx/arcade sound",sC="nexGui4.netflixMode",cC="nexGui4.netflixMode",uC="https://images.ctfassets.net/y2ske730sjqp/821Wg4N9hJD8vs5FBcCGg/9eaf66123397cc61be14e40174123c40/Vector__3_.svg?w=460",dC="netflixModeEmoteColor",mC="netflixModeScenarios",pC="#afffff",hC=/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/,resolveNetflixEmoteColor=g=>"string"==typeof g&&hC.test(g.trim())?g.trim():pC,resolveNetflixScenarioEnabled=(g,A)=>{const I=g?.[A];return"boolean"!=typeof I||I},renderNetflixNoticeHtml=g=>`<span style="height:15px;overflow:hidden"><img src="${uC}" style="height:16px"/> Mode ${g}.</span>`,resolveSelfName=g=>{const A=g?.getState?.()?.name;if(isNonEmptyString(A))return A.trim().toLowerCase();const I=globalThis.GMCP?.Char?.Status?.name;return isNonEmptyString(I)?I.trim().toLowerCase():null},yC=Object.freeze([{id:"nameMentioned",label:"Name Mentioned",predicate:(g,{selfName:A})=>!(!A||"string"!=typeof g?.text)&&g.text.toLowerCase().includes(A)},{id:"saysChannel",label:"Says",predicate:g=>"says"===g?.channel},{id:"tellsChannel",label:"Tells",predicate:g=>"tells"===g?.channel}]),fC=Object.freeze([{id:"emote",label:"Emote",regex:/^/,resolveFg:({emoteColor:g})=>g}]),bC=Object.freeze([{id:"affGot",label:"Aff Got",eventName:"nexsys4.aff.got"},{id:"defLost",label:"Def Lost",eventName:"nexsys4.def.lost"},{id:"damage",label:"Damage",eventName:"nexsys4.system.health.changed"},{id:"roomChanged",label:"Room Changed",eventName:"nexsys4.system.room.changed"}]),xC=Object.freeze([...yC.map(({id:g,label:A})=>({id:g,label:A,source:"commChannel"})),...bC.map(({id:g,label:A})=>({id:g,label:A,source:"event"})),...fC.map(({id:g,label:A})=>({id:g,label:A,source:"trigger"}))]),playNetflixSound=()=>{nexusclient.ui?.()?.sounds?.()?.play_sound?.(lC)},evaluateCommChannelPayload=(g,A,I)=>{for(const C of yC)if(resolveNetflixScenarioEnabled(I,C.id)&&C.predicate(g??{},A))return!0;return!1},attachCommChannelListener=(g,A)=>{const handler=I=>{const C=resolveSelfName(g),e=A();evaluateCommChannelPayload(I,{selfName:C},e)&&playNetflixSound()};return eventStream.registerEvent("Comm.Channel.Text",handler,{id:sC}),()=>{eventStream.removeListener("Comm.Channel.Text",sC)}},attachTriggerScenarios=(g,A)=>{for(const I of fC){if(!resolveNetflixScenarioEnabled(A,I.id))continue;const C=I.resolveFg?.({emoteColor:g})??I.fg;nexAction.triggers.add({id:`${cC}.${I.id}`,regex:I.regex,tags:[cC],fg:C,action:playNetflixSound})}return()=>{nexAction.triggers.remove([cC])}},areTriggerScenarioOverridesEqual=(g,A)=>{for(const I of fC)if(resolveNetflixScenarioEnabled(g,I.id)!==resolveNetflixScenarioEnabled(A,I.id))return!1;return!0},attachEventScenarios=g=>{const A=[];for(const I of bC){const C=`${sC}.eventScenario.${I.id}`,handler=A=>{resolveNetflixScenarioEnabled(g(),I.id)&&(I.predicate&&!I.predicate(A)||playNetflixSound())};eventStream.registerEvent(I.eventName,handler,{id:C}),A.push(()=>eventStream.removeListener(I.eventName,C))}return()=>{for(const g of A)g()}},readEmoteColorFromUiState=g=>resolveNetflixEmoteColor(g?.settings?.[dC]),readScenarioOverridesFromUiState=g=>g?.settings?.netflixModeScenarios??null,createNetflixModeController=({adapter:g,uiStore:A,characterStore:I})=>{if(!A||"function"!=typeof A.getState||"function"!=typeof A.subscribe)return()=>{};let C=null,e=null,t=null,n=!1,a=null,r=null;const getScenarioOverrides=()=>readScenarioOverridesFromUiState(A.getState()),enable=(A,o)=>{n||(C=attachCommChannelListener(I,getScenarioOverrides),e=attachTriggerScenarios(A,o),t=attachEventScenarios(getScenarioOverrides),a=A,r=o,n=!0,g?.notice?.(renderNetflixNoticeHtml("Enabled"),{html:!0}))},disable=()=>{n&&(C?.(),e?.(),t?.(),C=null,e=null,t=null,a=null,r=null,n=!1,g?.notice?.(renderNetflixNoticeHtml("Disabled"),{html:!0}))},reattachTriggers=(g,A)=>{e?.(),e=attachTriggerScenarios(g,A),a=g,r=A},sync=g=>{const A=readEmoteColorFromUiState(g),I=readScenarioOverridesFromUiState(g);if(g?.netflixMode){if(!n)return void enable(A,I);const g=A!==a,C=!areTriggerScenarioOverridesEqual(I,r);(g||C)&&reattachTriggers(A,I)}else disable()};sync(A.getState());const o=A.subscribe((g,A)=>{const I=Boolean(g?.netflixMode),C=Boolean(A?.netflixMode),e=readEmoteColorFromUiState(g),t=readEmoteColorFromUiState(A),n=readScenarioOverridesFromUiState(g),a=readScenarioOverridesFromUiState(A);I===C&&e===t&&n===a||sync(g)});return()=>{o(),n&&(C?.(),e?.(),t?.(),C=null,e=null,t=null,a=null,r=null,n=!1)}},useNetflixModeSettings=()=>{const{stores:g}=useNexGui(),A=g.ui(g=>g.netflixMode),I=g.ui(g=>g.setNetflixMode),C=g.ui(g=>g.settings?.[dC]),t=g.ui(g=>g.settings?.[mC]),n=g.ui(g=>g.setSetting),a=(0,e.useCallback)(g=>{n(dC,resolveNetflixEmoteColor(g))},[n]),r=(0,e.useCallback)((A,I)=>{n(mC,{...g.ui.getState().settings?.netflixModeScenarios??{},[A]:Boolean(I)})},[n,g]),o=(0,e.useMemo)(()=>xC.map(({id:g,label:A})=>({id:g,label:A,enabled:resolveNetflixScenarioEnabled(t,g),setEnabled:A=>r(g,A)})),[t,r]);return{enabled:Boolean(A),setEnabled:I,emoteColor:resolveNetflixEmoteColor(C),defaultEmoteColor:pC,setEmoteColor:a,logoUrl:uC,scenarios:o}},EC=[{key:"loginTracker",label:"Login Tracker",tooltip:"Show formatted login/logout notices by diffing the who list against Achaea's public character roster. Uses ally/enemy and target name formatting, and excludes your own character."},{key:"logoutDownload",label:"Auto-Download Log on Logout",tooltip:"Automatically download the scrollback buffer as an HTML log when you disconnect."},{key:"virtualizedLogs",label:"Virtualized HTML Logs",tooltip:"Download logs as an interactive virtualized HTML viewer for long sessions."}],NetflixModeSection=()=>{const{enabled:g,setEnabled:A,emoteColor:I,setEmoteColor:C,logoUrl:e,scenarios:t}=useNetflixModeSettings();return React.createElement(n.Box,{sx:{display:"flex",flexDirection:"column",gap:1}},React.createElement(n.Typography,{gutterBottom:!0,sx:{alignItems:"center",display:"flex",gap:.75},variant:"subtitle2"},React.createElement(n.Box,{alt:"Netflix",component:"img",src:e,sx:{display:"block",height:14,width:"auto"}}),"Mode"),React.createElement(iC,{label:"Enabled",onChange:A,tooltip:"Play an attention chime on enabled catches below. Resets to off each session.",tooltipMode:"title",value:g}),React.createElement(n.Box,{sx:{display:"flex",flexDirection:"column",gap:.25,pl:1}},React.createElement(n.Typography,{color:"text.secondary",sx:{mb:.25},variant:"caption"},"Catches"),t.map(g=>React.createElement(iC,{key:g.id,label:g.label,onChange:g.setEnabled,tooltipMode:"title",value:g.enabled}))),React.createElement(n.Box,{sx:{display:"flex",flexDirection:"column",gap:.5},title:"Color used by the emote attention trigger. Set this to your configured emote line color so the trigger matches emotes in your room."},React.createElement(n.Typography,{variant:"body2"},"Emote Color"),React.createElement(n.Box,{sx:{alignItems:"center",display:"flex",gap:1}},React.createElement(n.Box,{component:"input","aria-label":"Netflix Mode emote color",onChange:g=>C(g.target.value),sx:{background:"transparent",border:"1px solid rgba(255,255,255,0.2)",borderRadius:1,cursor:"pointer",height:28,padding:0,width:40},type:"color",value:I}),React.createElement(n.Typography,{sx:{fontFamily:"monospace"},variant:"caption"},I))))};NetflixModeSection.displayName="NetflixModeSection";var OptionsAdvancedInner=()=>{const{stores:g}=useNexGui(),A=useNativeDisplayCommands(),I=g.ui(g=>g.settings),C=g.ui(g=>g.setSetting),[t,a]=(0,e.useState)(!1),handleToggle=(g,A)=>{C(g,A)},handleNativeDisplay=g=>{handleToggle("nativeDisplay",g),g?A.mount():A.unmount()};return React.createElement(n.Box,{className:"options-advanced",sx:{display:"flex",flexDirection:"column",gap:1.5,p:1.5}},React.createElement(n.Typography,{gutterBottom:!0,variant:"subtitle2"},"Advanced Options"),React.createElement(n.Divider,{sx:{mb:1}}),React.createElement(n.Box,{sx:{columnGap:3,display:"grid",gridTemplateColumns:{xs:"minmax(0, 1fr)",md:"repeat(2, minmax(0, 1fr))"},rowGap:1.5}},React.createElement(n.Box,{sx:{display:"flex",flexDirection:"column",gap:.5,minWidth:0}},EC.map(({key:g,label:A,tooltip:C})=>React.createElement(iC,{key:g,label:A,onChange:A=>handleToggle(g,A),tooltip:C,tooltipMode:"title",value:Boolean(I[g])})),React.createElement(n.Divider,{sx:{my:1}}),React.createElement(n.Typography,{gutterBottom:!0,variant:"subtitle2"},"Experimental"),React.createElement(iC,{label:"Native Display Override",onChange:handleNativeDisplay,tooltip:"Mount the nexGui display in the Nexus output area instead of a panel tab. Applies immediately; the tab panel is hidden on the next reload.",tooltipMode:"title",value:Boolean(I.nativeDisplay)}),React.createElement(n.Divider,{sx:{my:1}}),React.createElement(n.Typography,{gutterBottom:!0,variant:"subtitle2"},"Debug"),React.createElement(iC,{label:"Event Bus Debug Mode",onChange:a,tooltip:"Log all internal events to the browser console. Session-only.",tooltipMode:"title",value:t})),React.createElement(n.Box,{sx:{display:"flex",flexDirection:"column",gap:.5,minWidth:0}},React.createElement(NetflixModeSection,null))))};OptionsAdvancedInner.displayName="OptionsAdvancedInner";var OptionsAdvanced=()=>React.createElement(QA,{panelName:"Options Advanced"},React.createElement(OptionsAdvancedInner,null));OptionsAdvanced.displayName="OptionsAdvanced";var resolveSliderValue$1=g=>Array.isArray(g)?g[0]??0:g,OptionsDisplayInner=()=>{const{tokens:g,updateTokens:A}=useTheme$9(),{settings:I,setSetting:C}=useUi(),t=(0,e.useMemo)(()=>{const A=g.theme.displayFontFamily;return Jg.some(({value:g})=>g===A)?Jg:[{label:A,value:A},...Jg]},[g.theme.displayFontFamily]),handleUiToggle=(g,A)=>{C(g,A)},handleDisplayFontFamily=g=>{A({theme:{displayFontFamily:g.target.value}})},handleDisplayFontSize=(g,I)=>{A({theme:{displayFontSize:resolveSliderValue$1(I)}})};return React.createElement(n.Box,{className:"options-display",sx:{display:"flex",flexDirection:"column",gap:1.5,p:1.5}},React.createElement(n.Typography,{gutterBottom:!0,variant:"subtitle2"},"Main Display / Scrollback Style"),React.createElement(n.Divider,null),React.createElement(n.FormControl,{fullWidth:!0,size:"small"},React.createElement(n.InputLabel,{id:"display-font-family-select-label"},"Font Family"),React.createElement(n.Select,{label:"Font Family",labelId:"display-font-family-select-label",onChange:handleDisplayFontFamily,value:g.theme.displayFontFamily},t.map(g=>React.createElement(n.MenuItem,{key:g.value,value:g.value},g.label)))),React.createElement(n.Box,{sx:{display:"flex",flexDirection:"column",gap:1}},React.createElement(n.Typography,{variant:"caption",color:"text.secondary"},"Display Font Size: ",g.theme.displayFontSize,"px"),React.createElement(n.Slider,{"aria-label":"Display font size",max:20,min:8,onChange:handleDisplayFontSize,step:1,value:g.theme.displayFontSize})),React.createElement(n.Divider,{sx:{mt:.5}}),React.createElement(n.Typography,{gutterBottom:!0,variant:"subtitle2"},"Formatting"),React.createElement(iC,{label:"Ally / Enemy Formatting",onChange:g=>handleUiToggle("allyEnemyFormatting",g),tooltip:"Apply ally and enemy markers to recognised player names in panels and game output.",tooltipMode:"title",value:!1!==I.allyEnemyFormatting}),React.createElement(iC,{label:"Target Formatting",onChange:g=>handleUiToggle("targetFormatting",g),tooltip:"Highlight your current target in game output.",tooltipMode:"title",value:!1!==I.targetFormatting}),React.createElement(iC,{label:"Indent Wrapped Logs",onChange:g=>handleUiToggle("indentWrappedLogs",g),tooltip:"Indents wrapped lines of log messages to align them to the right of the timestamp.",tooltipMode:"title",value:!1!==I.indentWrappedLogs}))};OptionsDisplayInner.displayName="OptionsDisplayInner";var OptionsDisplay=()=>React.createElement(QA,{panelName:"Options Display"},React.createElement(OptionsDisplayInner,null));OptionsDisplay.displayName="OptionsDisplay";var vC=Object.freeze([{key:"showCombatStream",label:"Combat Stream",tooltip:"Route combat messages to a separate stream panel."},{key:"showSystemStream",label:"System Stream",tooltip:"Route system messages to a separate stream panel."},{key:"damageNumbers",label:"Damage Numbers",tooltip:"Show damage number overlays on combat output."},{key:"msgReplace",label:"Message Replace",tooltip:"Apply structured replacement rows for skill actions (nexSkillMatch / nexSkillNpcMatch). Inline name highlighting is controlled separately by the Ally/Enemy Formatting toggle."}]),useGameOptionToggles=()=>{const{stores:g}=useNexGui(),A=g.ui(g=>g.settings),I=g.ui(g=>g.setSetting);return(0,e.useMemo)(()=>vC.map(g=>({key:g.key,label:g.label,tooltip:g.tooltip,value:Boolean(A[g.key]),onChange:A=>I(g.key,A)})),[I,A])},RC=Object.freeze([{key:"echo_input",label:"Echo Input",tooltip:"Mirror your typed commands into the game output stream.",setValue:(g,A)=>{g.setSetting("echo_input",A)}},{key:"echo_gmcp",label:"Display GMCP",tooltip:"Show inbound GMCP payloads in the output stream.",setValue:(g,A)=>{g.setSetting("echo_gmcp",A)}},{key:"single_prompt",label:"Single Prompt",tooltip:"Collapse the duplicate Nexus prompt line into a single prompt.",setValue:(g,A)=>{g.setSetting("show_prompts",!A)}},{key:"show_timestamps",label:"Display Timestamps",tooltip:"Show Nexus timestamps in the main output stream.",setValue:(g,A)=>{g.setSetting("show_timestamps",A)}},{key:"display_tabstrip",label:"Display Tabstrip",tooltip:"Show the FlexLayout tab strip for docked Nexus tabs.",setValue:(g,A)=>{g.updateLayoutAttributes({tabSetEnableTabStrip:A})}}]),useHostSettingsToggles=()=>{const{eventBus:g,hostSettingsModel:A,hostLayoutModel:I}=useNexGui(),C=useHostBridge(),t=(0,e.useSyncExternalStore)(A.subscribe,A.getSnapshot),n=(0,e.useSyncExternalStore)(I.subscribe,I.getSnapshot),a=(0,e.useCallback)(({key:A,setValue:I},e)=>{I(C,e),g.emit(R.HOST_SETTINGS_CHANGED,{key:A,value:e})},[g,C]);return(0,e.useMemo)(()=>RC.map(g=>({key:g.key,label:g.label,tooltip:g.tooltip,value:"display_tabstrip"===g.key?Boolean(n.display_tabstrip):Boolean(t[g.key]),onChange:A=>a(g,A)})),[t,n,a])},OptionsGameInner=()=>{const g=useHostSettingsToggles(),A=useGameOptionToggles();return React.createElement(n.Box,{className:"options-game",sx:{display:"flex",flexDirection:"column",gap:.5,p:1.5}},React.createElement(n.Typography,{gutterBottom:!0,variant:"subtitle2"},"Game Options"),React.createElement(n.Divider,{sx:{mb:1}}),React.createElement(n.Box,{sx:{columnGap:3,display:"grid",gridTemplateColumns:{xs:"minmax(0, 1fr)",md:"repeat(2, minmax(0, 1fr))"},rowGap:1.5}},React.createElement(n.Box,{sx:{display:"flex",flexDirection:"column",gap:.5,minWidth:0}},React.createElement(n.Typography,{gutterBottom:!0,variant:"subtitle2"},"Nexus Config"),g.map(({key:g,label:A,tooltip:I,value:C,onChange:e})=>React.createElement(iC,{key:g,label:A,onChange:e,tooltip:I,tooltipMode:"title",value:C}))),React.createElement(n.Box,{sx:{display:"flex",flexDirection:"column",gap:.5,minWidth:0}},React.createElement(n.Typography,{gutterBottom:!0,variant:"subtitle2"},"nexGui Config"),A.map(({key:g,label:A,tooltip:I,value:C,onChange:e})=>React.createElement(iC,{key:g,label:A,onChange:e,tooltip:I,tooltipMode:"title",value:C})))))};OptionsGameInner.displayName="OptionsGameInner";var OptionsGame=()=>React.createElement(QA,{panelName:"Options Game"},React.createElement(OptionsGameInner,null));OptionsGame.displayName="OptionsGame";var wC="__none__",SC="__custom__",resolveSliderValue=g=>Array.isArray(g)?g[0]??0:g,OptionsStyleInner=()=>{const{tokens:g,updateTokens:A}=useTheme$9(),I=canonicalizeBackgroundImageValue(g.theme.backgroundImage),C=TA.includes(I)?I:I?SC:wC,handleFontSize=(g,I)=>{A({theme:{fontSize:resolveSliderValue(I)}})},handleOpacity=(g,I)=>{A({theme:{backgroundOpacity:resolveSliderValue(I)}})},handleHue=(g,I)=>{A({theme:{hue:resolveSliderValue(I)}})},handleCustomBgImage=g=>{A({theme:{backgroundImage:g.target.value}})},handleBackgroundImageSelect=g=>{const{value:I}=g.target;I!==wC?I!==SC?A({theme:{backgroundImage:I}}):C!==SC&&A({theme:{backgroundImage:""}}):A({theme:{backgroundImage:""}})};return React.createElement(n.Box,{className:"options-style",sx:{display:"flex",flexDirection:"column",gap:1.5,p:1.5}},React.createElement(n.Typography,{gutterBottom:!0,variant:"subtitle2"},"Panel Display Style"),React.createElement(n.Divider,null),React.createElement(n.Box,{sx:{display:"flex",flexDirection:"column",gap:1}},React.createElement(n.Typography,{variant:"caption",color:"text.secondary"},"Panel Font Size: ",g.theme.fontSize,"px"),React.createElement(n.Slider,{"aria-label":"Panel font size",max:20,min:8,onChange:handleFontSize,step:1,value:g.theme.fontSize})),React.createElement(n.Box,{sx:{display:"flex",flexDirection:"column",gap:1}},React.createElement(n.Typography,{variant:"caption",color:"text.secondary"},"Background Opacity: ",Math.round(100*g.theme.backgroundOpacity),"%"),React.createElement(n.Slider,{"aria-label":"Background opacity",max:1,min:0,onChange:handleOpacity,step:.01,value:g.theme.backgroundOpacity})),React.createElement(n.Box,{sx:{display:"flex",flexDirection:"column",gap:1}},React.createElement(n.Typography,{variant:"caption",color:"text.secondary"},"Hue Shift: ",g.theme.hue,"°"),React.createElement(n.Slider,{"aria-label":"Hue shift",max:360,min:0,onChange:handleHue,step:1,value:g.theme.hue})),React.createElement(n.FormControl,{fullWidth:!0,size:"small"},React.createElement(n.InputLabel,{id:"background-image-select-label"},"Background Image"),React.createElement(n.Select,{label:"Background Image",labelId:"background-image-select-label",onChange:handleBackgroundImageSelect,value:C},React.createElement(n.MenuItem,{value:wC},"None"),TA.map(g=>React.createElement(n.MenuItem,{key:g,value:g},g)),React.createElement(n.MenuItem,{value:SC},"Custom URL"))),React.createElement(n.TextField,{InputLabelProps:{shrink:!0},fullWidth:!0,label:"Background Image URL",onChange:handleCustomBgImage,placeholder:"https://...",size:"small",value:g.theme.backgroundImage,variant:"outlined"}))};OptionsStyleInner.displayName="OptionsStyleInner";var OptionsStyle=()=>React.createElement(QA,{panelName:"Options Panels"},React.createElement(OptionsStyleInner,null));OptionsStyle.displayName="OptionsStyle";var MC="options",TC=Object.freeze([{content:React.createElement(OptionsGame,null),id:"game",label:"Game"},{content:React.createElement(OptionsStyle,null),id:"style",label:"Panels"},{content:React.createElement(OptionsDisplay,null),id:"display",label:"Display"},{content:React.createElement(OptionsAdvanced,null),id:"advanced",label:"Advanced"}]),resolveActiveTabId=g=>"string"==typeof g?g:"number"==typeof g?TC[g]?.id??TC[0].id:TC[0].id,OptionsPanelInner=()=>{const g=useTheme$9(),{activeTab:A,setActiveTab:I}=useUi(),C=g.theme?.nexGui?.backgroundImage??"",e=g.theme?.nexGui?.backgroundOpacity??.5,t=g.theme?.nexGui?.backgroundFilter??"none",handleTabChange=g=>{const A=TC.findIndex(A=>A.id===g);A>=0&&I(MC,A)};return React.createElement(nC,{activeTab:resolveActiveTabId(A[MC]),backgroundFilter:t,backgroundImage:C,backgroundOpacity:e,onTabChange:handleTabChange,tabs:TC})};OptionsPanelInner.displayName="OptionsPanelInner";var OptionsPanel=()=>React.createElement(QA,{panelName:"Options"},React.createElement(OptionsPanelInner,null));OptionsPanel.displayName="OptionsPanel";var PartyMemberRowComponent=({name:g,color:A="text.primary",disabled:I=!1,onClick:C=null})=>{const e="function"==typeof C&&!I;return React.createElement(n.Box,{className:"party-member-row",onClick:e?()=>C(g):void 0,role:e?"button":void 0,sx:{alignItems:"center",cursor:e?"pointer":"default",display:"flex",minHeight:24,px:.5},tabIndex:e?0:void 0},React.createElement(n.Typography,{component:"span",sx:{color:A,fontWeight:500,lineHeight:1.35},variant:"body2"},g))};PartyMemberRowComponent.displayName="PartyMemberRow",PartyMemberRowComponent.propTypes={color:UA.default.string,disabled:UA.default.bool,name:UA.default.string.isRequired,onClick:UA.default.func};var NC=(0,e.memo)(PartyMemberRowComponent);NC.displayName="PartyMemberRow",NC.propTypes=PartyMemberRowComponent.propTypes;var selectPartySlice=g=>({members:g.members,leader:g.leader,selfName:g.selfName,settings:g.settings,updateParty:g.updateParty,addMember:g.addMember,removeMember:g.removeMember,setLeader:g.setLeader,setSelf:g.setSelf,setSetting:g.setSetting}),useParty=()=>{const{stores:g}=useNexGui();return g.party(useShallow(selectPartySlice))},noopSubscribe=()=>()=>{},fallbackFalse=()=>!1,fallbackNull=()=>null,fallbackName=()=>"",fallbackColor=()=>"grey",getModelVersion=g=>"function"==typeof g?.getVersion?g.getVersion():0,createDirectoryBinding=(g,A)=>{const subscribe=I=>{const C=g?.subscribePlayerDirectory?.(I)??noopSubscribe(),e=A?.subscribePlayerRelationships?.(I)??noopSubscribe();return()=>{C?.(),e?.()}},getSnapshot=()=>`${getModelVersion(g)}:${getModelVersion(A)}`;return Object.freeze({getSnapshot,subscribe})},usePlayerDirectory=()=>{const{playerDirectory:g,playerRelationships:A}=useNexGui(),I=(0,e.useMemo)(()=>createDirectoryBinding(g,A),[g,A]),C=(0,e.useSyncExternalStore)(I.subscribe,I.getSnapshot,I.getSnapshot);return(0,e.useMemo)(()=>Object.freeze({version:C,getPlayerColor:g?.getPlayerColor?.bind(g)??fallbackColor,getPlayerProfile:g?.getPlayerProfile?.bind(g)??fallbackNull,isAllyPlayer:A?.isAllyPlayer?.bind(A)??fallbackFalse,isCityEnemyPlayer:A?.isCityEnemyPlayer?.bind(A)??fallbackFalse,isEnemyPlayer:A?.isEnemyPlayer?.bind(A)??fallbackFalse,resolvePlayerNameFromFullname:g?.resolvePlayerNameFromFullname?.bind(g)??fallbackName}),[g,A,C])},usePartyViewModel=()=>{const g=usePlayerDirectory(),{members:A,leader:I,selfName:C,settings:t,setLeader:n,addMember:a,removeMember:r,setSetting:o}=useParty();return(0,e.useMemo)(()=>{g.version;const e=A.map(A=>({color:g.getPlayerColor(A),disabled:A===C,name:A})),i=A.map(A=>({color:g.getPlayerColor(A),name:A})),l=M.map(({key:g,label:A,tooltip:I})=>({key:g,label:A,tooltip:I,value:Boolean(t?.[g]),onChange:A=>o(g,A)}));return{addMember:a,leader:I&&A.includes(I)?I:"",leaderColor:I?g.getPlayerColor(I):null,leaderOptions:i,memberRows:e,members:A,removeMember:r,selfName:C,setLeader:n,toggles:l}},[a,I,A,g,r,C,n,o,t])},getFlipTransform$4=g=>{switch(g){case 1:return"scaleX(-1) scaleY(-1)";case 2:return"scaleY(-1)";case 3:return"scaleX(-1)";default:return"none"}},PartyPanelInner=()=>{const g=(0,a.useTheme)(),[A]=(0,e.useState)(()=>Math.floor(4*Math.random())),[I,C]=(0,e.useState)(""),{addMember:t,leader:r,leaderColor:o,leaderOptions:i,memberRows:l,members:s,removeMember:c,setLeader:u,toggles:d}=usePartyViewModel(),m=g?.nexGui?.backgroundImage??"",p=g?.nexGui?.backgroundOpacity??.5,h=g?.nexGui?.backgroundFilter??"none",y=(0,e.useCallback)(g=>{"Enter"===g.key&&I.trim()&&(t(I.trim()),C(""))},[t,I]);return React.createElement(n.Box,{className:"party-panel",sx:{height:"100%",overflow:"hidden",position:"relative",width:"100%"}},m?React.createElement(n.Box,{"aria-hidden":"true",className:"party-panel__background",sx:{backgroundImage:`url(${m})`,backgroundPosition:"center",backgroundSize:"cover",filter:h,inset:0,opacity:p,position:"absolute",transform:getFlipTransform$4(A),zIndex:0}}):null,React.createElement(n.Box,{className:"party-panel__content",sx:{background:`linear-gradient(180deg, ${(0,a.alpha)("#050505",.28)} 0%, ${(0,a.alpha)("#050505",.56)} 100%)`,display:"grid",gridTemplateColumns:"1fr 1fr",gap:2,height:"100%",overflowY:"auto",p:1.25,position:"relative",width:"100%",zIndex:1}},React.createElement(n.Box,{sx:{display:"flex",flexDirection:"column",gap:.5,minWidth:0}},React.createElement(n.TextField,{label:"Add member",onChange:g=>C(g.target.value),onKeyDown:y,size:"small",sx:{mb:.5,width:"15ch"},value:I}),React.createElement(n.Typography,{component:"span",sx:{color:"text.secondary",fontSize:11,fontWeight:700,letterSpacing:.4,pb:.25,textTransform:"uppercase"}},"Party Members"),s.length>0?l.map(g=>React.createElement(NC,{color:g.color,disabled:g.disabled,key:g.name,name:g.name,onClick:c})):React.createElement(n.Typography,{color:"text.secondary",variant:"body2"},"No party members")),React.createElement(n.Box,{sx:{display:"flex",flexDirection:"column",gap:1}},React.createElement(n.FormControl,{fullWidth:!0,size:"small"},React.createElement(n.InputLabel,{id:"nexgui4-party-leader-label"},"Party Leader"),React.createElement(n.Select,{disabled:0===s.length,label:"Party Leader",labelId:"nexgui4-party-leader-label",onChange:g=>u(g.target.value),sx:{color:o??"text.primary",minWidth:"18ch"},value:r},i.map(g=>React.createElement(n.MenuItem,{key:g.name,sx:{color:g.color},value:g.name},g.name)))),React.createElement(n.Divider,{sx:{my:.5}}),React.createElement(n.Typography,{component:"span",sx:{color:"text.secondary",fontSize:11,fontWeight:700,letterSpacing:.4,textTransform:"uppercase"}},"Party Behaviour"),d.map(({key:g,label:A,tooltip:I,value:C,onChange:e})=>React.createElement(iC,{key:g,label:A,onChange:e,tooltip:I,value:C})))))};PartyPanelInner.displayName="PartyPanelInner";var PartyPanel=()=>React.createElement(QA,{panelName:"Party"},React.createElement(PartyPanelInner,null));PartyPanel.displayName="PartyPanel";var GC={color:UA.default.string.isRequired,isAlly:UA.default.bool,isEnemy:UA.default.bool,isTarget:UA.default.bool,name:UA.default.string.isRequired},kC=UA.default.exact(GC),RoomPlayerRowComponent=({onHover:g,onLeave:A,onSelect:I,player:C})=>{const e=C.isEnemy?"#ff0000":"#ffffff",t=C.isAlly||C.isEnemy;return React.createElement(n.Box,{className:"room-player-row",onClick:()=>I(C.name),onMouseEnter:g,onMouseLeave:A,sx:{alignItems:"center",cursor:"pointer",display:"inline-flex",gap:.125,margin:"2px 4px",minHeight:g=>`${Number(g.typography.fontSize)+8}px`,outline:C.isTarget?"1px solid red":"",px:.25,py:.125,position:"relative",zIndex:1}},t?React.createElement(n.Typography,{component:"span",sx:{color:e,fontWeight:700},variant:"body2"},"("):null,React.createElement(n.Typography,{component:"span",sx:{color:C.color,fontWeight:700},variant:"body2"},C.name),t?React.createElement(n.Typography,{component:"span",sx:{color:e,fontWeight:700},variant:"body2"},")"):null)};RoomPlayerRowComponent.displayName="RoomPlayerRow",RoomPlayerRowComponent.propTypes={onHover:UA.default.func.isRequired,onLeave:UA.default.func.isRequired,onSelect:UA.default.func.isRequired,player:kC.isRequired};var DC=(0,e.memo)(RoomPlayerRowComponent);DC.displayName="RoomPlayerRow",DC.propTypes=RoomPlayerRowComponent.propTypes;var jC=new Set(["regex","user","time","loaded"]),formatCellValue=g=>Array.isArray(g)?g.join(", "):null!==g&&"object"==typeof g?JSON.stringify(g):String(g),PC=UA.default.objectOf(UA.default.oneOfType([UA.default.string,UA.default.number,UA.default.bool,UA.default.array,UA.default.object])),PlayerPopoverComponent=({anchorEl:g=null,onClose:A,player:I})=>{const C=(0,e.useMemo)(()=>Object.entries(I??{}).flatMap(([g,A])=>jC.has(g)||null==A?[]:React.createElement("tr",{key:g},React.createElement("td",{style:{color:"cyan",padding:"0 5px 0 2px"}},g),React.createElement("td",{style:{padding:0}},formatCellValue(A)))),[I]);return I?React.createElement(n.Popover,{anchorEl:g,anchorOrigin:{horizontal:"left",vertical:"top"},disableRestoreFocus:!0,onClose:A,open:Boolean(g),sx:{pointerEvents:"none"},slotProps:{paper:{sx:{backgroundColor:"#000000",border:"1px solid #ffffff"}}},transformOrigin:{horizontal:"right",vertical:"bottom"}},React.createElement("table",{style:{background:"black",borderSpacing:"0px",fontSize:"13px",margin:"10px",maxWidth:"100%",padding:"1px",textAlign:"left"}},React.createElement("thead",null,React.createElement("tr",null,React.createElement("th",{style:{width:"auto"}}),React.createElement("th",{style:{width:"auto"}}))),React.createElement("tbody",null,C))):null};PlayerPopoverComponent.displayName="PlayerPopover",PlayerPopoverComponent.propTypes={anchorEl:UA.default.instanceOf(Element),onClose:UA.default.func.isRequired,player:PC},PlayerPopoverComponent.defaultProps={player:null};var BC=(0,e.memo)(PlayerPopoverComponent);BC.displayName="PlayerPopover",BC.propTypes=PlayerPopoverComponent.propTypes;var selectCharacterSlice=g=>({name:g.name,class:g.class,level:g.level,gender:g.gender,balance:g.balance,equilibrium:g.equilibrium,currentAffs:g.currentAffs,limbs:g.limbs,updateCharacter:g.updateCharacter,setClass:g.setClass}),useCharacter=()=>{const{stores:g}=useNexGui();return g.character(useShallow(selectCharacterSlice))},resolvePlayerProfile=(g,A,I)=>mergePlayerPresentationProfile(I.getPlayerProfile(A),buildFallbackPlayerProfile(g,A)),useRoomPlayersViewModel=()=>{const{adapter:g}=useNexGui(),{players:A}=useRoom(),{name:I}=useCharacter(),{isPlayer:C,name:t}=useTarget(),{members:n}=useParty(),a=usePlayerDirectory(),r=(0,e.useMemo)(()=>{a.version;const g=new Set((n??[]).filter(g=>"string"==typeof g&&g.length>0&&g!==I)),e=a.getPlayerProfile(I)?.city??"";return[...A??[]].map(A=>{const I=resolveRoomPlayerName(A,a);if(!I)return null;const n=resolvePlayerProfile(A,I,a),r=!0===n?.loaded,o=a.isEnemyPlayer(I),i=a.isAllyPlayer(I)||g.has(I);let l=5;return r&&(l=o?0:i?1:n.city===e?2:"garden"===n.city?3:4),{color:resolvePlayerPresentationColor({name:I,profile:n,playerDirectory:a}),isAlly:i,isEnemy:o,isTarget:C&&I===t,loaded:r,name:I,profile:n,priority:l}}).filter(Boolean).sort((g,A)=>g.priority!==A.priority?g.priority-A.priority:g.name.localeCompare(A.name))},[n,a,A,I,C,t]),o=(0,e.useCallback)(A=>{g?.send?.(`settarget ${A}`)},[g]);return(0,e.useMemo)(()=>({players:r,selectPlayer:o}),[r,o])},getFlipTransform$3=g=>{switch(g){case 1:return"scaleX(-1) scaleY(-1)";case 2:return"scaleY(-1)";case 3:return"scaleX(-1)";default:return"none"}},PlayersPanelInner=()=>{const g=(0,a.useTheme)(),{players:A,selectPlayer:I}=useRoomPlayersViewModel(),[C]=(0,e.useState)(()=>Math.floor(4*Math.random())),[t,r]=(0,e.useState)(null),[o,i]=(0,e.useState)(""),l=g?.nexGui?.backgroundImage??"",s=g?.nexGui?.backgroundOpacity??.5,c=g?.nexGui?.backgroundFilter??"none",u=o?A.find(g=>g.name===o)?.profile??null:null;(0,e.useEffect)(()=>{t&&(o&&A.some(g=>g.name===o)||(r(null),i("")))},[t,o,A]);const handleClosePopover=()=>{r(null),i("")};return 0===A.length?React.createElement(n.Box,{className:"players-panel players-panel--empty",sx:{alignItems:"center",color:"text.secondary",display:"flex",flex:1,justifyContent:"center",p:2}},React.createElement(n.Typography,{variant:"body2"},"No players in room")):React.createElement(n.Box,{className:"players-panel",sx:{height:"100%",overflow:"hidden",position:"relative",width:"100%"}},l?React.createElement(n.Box,{"aria-hidden":"true",className:"players-panel__background",sx:{backgroundImage:`url(${l})`,backgroundPosition:"center",backgroundSize:"cover",filter:c,inset:0,opacity:s,position:"absolute",transform:getFlipTransform$3(C),zIndex:0}}):null,React.createElement(n.Box,{className:"players-panel__content",sx:{alignContent:"flex-start",background:`linear-gradient(180deg, ${(0,a.alpha)("#050505",.28)} 0%, ${(0,a.alpha)("#050505",.56)} 100%)`,color:"text.primary",display:"flex",flexDirection:"row",flexWrap:"wrap",height:"100%",overflowY:"auto",position:"relative",width:"100%",zIndex:1}},A.map((g,A)=>React.createElement(DC,{key:`${g.name}-${A}`,onHover:A=>{g.loaded?(r(A.currentTarget),i(g.name)):handleClosePopover()},onLeave:handleClosePopover,onSelect:I,player:g}))),React.createElement(BC,{anchorEl:t,onClose:handleClosePopover,player:u?.loaded?u:null}))};PlayersPanelInner.displayName="PlayersPanelInner";var PlayersPanel=()=>React.createElement(QA,{panelName:"Players"},React.createElement(PlayersPanelInner,null));PlayersPanel.displayName="PlayersPanel";var OC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI0AAADUCAYAAACh36CaAAAACXBIWXMAAA7EAAAOxAGVKw4bAAA4HGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMjEgNzkuMTU0OTExLCAyMDEzLzEwLzI5LTExOjQ3OjE2ICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE1LTA0LTA2VDExOjM1OjI4LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTUtMDQtMDZUMTM6NTY6MzktMDc6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE1LTA0LTA2VDEzOjU2OjM5LTA3OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjkwNzk4Nzk4LTRlOWItMTM0YS04MzBjLTQ2MTJlNWVhZDJjYTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDo5MDc5ODc5OC00ZTliLTEzNGEtODMwYy00NjEyZTVlYWQyY2E8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDo5MDc5ODc5OC00ZTliLTEzNGEtODMwYy00NjEyZTVlYWQyY2E8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6OTA3OTg3OTgtNGU5Yi0xMzRhLTgzMGMtNDYxMmU1ZWFkMmNhPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE1LTA0LTA2VDExOjM1OjI4LTA3OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjk2MDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+OTYwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xNDE8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjEyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz6NaNPuAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAVqSURBVHja7Nt/TNRlHMDxz07vjjt+DqVAHJJmYaxWkQj+GP7MCbg0c5WuNdOtVVstbKw/ZLMWTnNaKrOmqBCRLuEYiCHoJbaFyB1igIaIDg7CBGbyQzAiP/3RMK1kXP35fX+3977/fJ9/nr32PHf3fE9UVYi8iUkg0BBoCDQEGgINEWgINAQaAg2BhsjIaO6+QkOCJXpqpDwcGS4h44Ls05+MmvP6K8tWfZi6bvXWtLdemB37xNPhoeOtPlaLjA8OlOAg/3vGg8ZgaEwmk/j52iRyYqjMmv548ttrV+7ZszXVVZS1uf1k3s6rZQe3N+/b/n556purdj86JSLZbB4rFosZNEZfacIeCH5k96aU+q7aYtXOStXOMzrYfFJ7Lx3Xm5eOq3ZUql47rR0/FGlG+ru1gf6+k0BjbDRRR7I//lV/b9AbPx7TVrdDPe58bXU7/sr15737Yqnq7Yuan5neIyKRoDEomnfWrizSW/XaVl2gHpfjXix/y+PK15/OFqj21+obry4vAI0x0YSfcmQM6s8V6nHljwjmbjh67bR++/WOWyISBhqDofHztcfXObO1//KJUYEZrv/yCa0p2682H0s8aAyGxm7zWXi2dL8OXHF6icaprpJMtVrM80BjPDQz/guagStOrfpmr1rMY2NAYzA0Ex4c/1itM1tver09OdVdknnbajFPBo2B0AT4+yY8t3hOZWXxnsGbTd6h6W0s0wvlX2pcTPRhi3nsctAYBI3JZIrNSE/p62s6rlfPFXqFpqv+qHbUFeuS+XGH7TZrEmiMsz35rFu1tGao9ZTXaHoay7Thu1x9KCIsVUQmgMY4aKI+3/xep3ad8QpMq9uhHXXF2t90Qte+lJw1bWpkAmiMg8a++vlnK9wlmdrdUDrqH/eGt6daZ7bGx0Sv97P7sNIY7RhhzYuJn3i72ui1Cn152cJPOUYwKJqQcUHzz5/M0d7GslGB6W44pk3fH9KJYSGzQWMwNEsXzZSkBXES+9S0iCPZW3SwpXxUaIY8p7Qkd1u3iASDxmBopkwKl8kRE8RqMY85+NnGy9pVpS1VI3+uaXHlq153afaODQ0iIjabVfx8baAx4ktYK5PnbdHuam2vKbzv6xEel0PbawpVb1TrisSEDSIiY0wmGWMygcaIaETEt9yR0aSD57Wt2vGPb1IeV762VReo/nZBS3K3NYqIlTf3QCM+VktMwb5NQ9pfq531R7X5TJ62uh3aXJWnXfVHVQfqNG/vR3cOKUEDmuHrmQ/Wv9atv7hV+86pXnfduW9MWdMjIrP+bRBojI1GRCQwcUH8oZxdaX05u9K6vti5oXfx3BlfiUjA/QaABjQSFOifmLxoVtaKpLmZSQtnHgjwsy8Z6XnQ8A9LAg2BhkBDoCHQEIGGQEOgIdAQaIhAQ6Ah0BBoCDREoCHQEGgINAQaAg2TQKAh0BBoCDQEGiLQEGgINAQaAg0RaAg0BBoCDYGGCDQEGgINgYZAQ6AhAg2BhkBDoCHQEIGGQEOgIdAQaIhAQ6Ah0BBoCDREoCHQEGgINAQaAg0RaAg0BBoCDYGGCDQEGgINgYZAQwQaAg2BhkBDoCECDYGGQEOgIdAQaIhAQ6Ah0BBoCDREoCHQEGgINAQaItAQaAg0BBoCDRGTQKAh0BBoCDQEGiLQEGgINAQaAg0RaAg0BBoCDYGGCDQEGgINgYZAQ6BhEgg0BBoCDYGGQEMEGgINgYZAQ6AhAg2BhkBDoCHQEIGGQEOgIdAQaAg0RKAh0BBoCDQEGiLQEGgINAQaAg0RaAg0BBoCDYGGCDQEGgINgYZAQ6AhAg2BhkBDoCHQEIGGQEOgIdAQaIhAQ/+zPwYASIhrmburemkAAAAASUVORK5CYII=",LC="data:image/png;base64,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",zC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI0AAADUCAYAAACh36CaAAAACXBIWXMAAA7EAAAOxAGVKw4bAAA4HGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMjEgNzkuMTU0OTExLCAyMDEzLzEwLzI5LTExOjQ3OjE2ICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE1LTA0LTA2VDExOjI4OjM0LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTUtMDQtMDZUMTM6NTY6MzctMDc6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE1LTA0LTA2VDEzOjU2OjM3LTA3OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjM2YjMxYTk5LTUwNTYtZTY0OC04OTZkLWI5NTYxMzk2MjViMjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDozNmIzMWE5OS01MDU2LWU2NDgtODk2ZC1iOTU2MTM5NjI1YjI8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDozNmIzMWE5OS01MDU2LWU2NDgtODk2ZC1iOTU2MTM5NjI1YjI8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6MzZiMzFhOTktNTA1Ni1lNjQ4LTg5NmQtYjk1NjEzOTYyNWIyPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE1LTA0LTA2VDExOjI4OjM0LTA3OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjk2MDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+OTYwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xNDE8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjEyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg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",ZC="data:image/png;base64,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vmXxPHQEOiGK5+82m9WCprYgkqqu3uVyDWrX5YqiXMVzzz23Ue5v3LRu3XfQEwpnnA5OJFMoneDFdL8/mLFojCjKZZw4cWLO0sULW++cX7ruqae+hVBrB5LJFETx4oFIs8mA3r4BDEajeb0f87rZ/xfNzc3T1j215vOP3/mniltvvxkdDa2QpPSFp60/MhmNCPcPoqcnfOXvDrlGFOUStm7det+Pn3nUoHc70Xa2FRCEzEP1IxIpCb4iN5Lx4TF/fng0inIJgbbWGU6rGcGzrVf8SpB4PIGyUh+KPAWCLMuXn3iNKMolxIYi1TabBYeOfKEwxqDTnb+b2MjZRVEQRk42CgBjkFXFGI/Hr/bdIVmjKBptbW0V86dPuDktpbHn0yM6k9GAdFqGTqeDfuTb8RgwEoZBb9BDTUuefH6BNEXRsNvtw5KMuMNpQ3nphGgsnoSgE+XheDImKyq6+yJSe2dvymYxw2QwAIzBYjHHbTZbTLtXriiKhtfrDSuW0vWv/PvW9B1LF8pOuw1ed4EcHY6nFEVBSZFXL+p1amNbBwKdIZjtVljM1jF/WGI0inIJf/P00z87fKrtzNw5lW6mqqn3dh4cSiaT1orJpbBajaoegmA1GVHgdkJKSegKR8Z8Cng0inIZQ0NxFukbgN5g0JtNeuv8eTPMwWAIJ+vbBixWk2Iym1B/ugWrH/sRnlj71D9q14/FuP5DaVfS0NBQ9b21j7+Tjg/OuXv5IrQHe5CUJEQGoqieVoZAsAct3cP7X3rppSfnzp17TLt+LCjKFSiKoovH49a6urrZX3zxxcydO3feVVpaGjSZTGmj0Sht3Ljx+9o1+UBROESvKRyiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKByiKBz6X15rejmpXenZAAAAAElFTkSuQmCC",FC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI0AAADUCAYAAACh36CaAAAACXBIWXMAAA7EAAAOxAGVKw4bAAA4HGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMjEgNzkuMTU0OTExLCAyMDEzLzEwLzI5LTExOjQ3OjE2ICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE1LTA0LTA2VDExOjM0OjUwLTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTUtMDQtMDZUMTM6NTY6MzktMDc6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE1LTA0LTA2VDEzOjU2OjM5LTA3OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjE0Y2RkMDRhLWU2OGMtYzM0My1iYjJmLWYxNDE5ZjAxMDRmYTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDoxNGNkZDA0YS1lNjhjLWMzNDMtYmIyZi1mMTQxOWYwMTA0ZmE8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDoxNGNkZDA0YS1lNjhjLWMzNDMtYmIyZi1mMTQxOWYwMTA0ZmE8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6MTRjZGQwNGEtZTY4Yy1jMzQzLWJiMmYtZjE0MTlmMDEwNGZhPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE1LTA0LTA2VDExOjM0OjUwLTA3OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjk2MDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+OTYwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xNDE8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjEyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg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",KC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGUAAADUCAYAAACF6u0fAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAJZaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49J++7vycgaWQ9J1c1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCc/Pg0KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyI+PHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj48ZXhpZjpEYXRlVGltZU9yaWdpbmFsPjIwMTUtMDQtMDZUMTI6MDU6MzI8L2V4aWY6RGF0ZVRpbWVPcmlnaW5hbD48L3JkZjpEZXNjcmlwdGlvbj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+PHhtcDpDcmVhdGVEYXRlPjIwMTUtMDQtMDZUMTI6MDU6MzI8L3htcDpDcmVhdGVEYXRlPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L3g6eG1wbWV0YT4NCjw/eHBhY2tldCBlbmQ9J3cnPz6svVVGAAAAIXRFWHRDcmVhdGlvbiBUaW1lADIwMTU6MDQ6MDYgMTI6MDU6MzIos2WsAAAUj0lEQVR4Xu2deXRU133Hv/dts2kWzWgdIWkkEEjCIJANmFU2UIckZokTp3HiU9f2cUjCcVzIZrdN6/bkOIl7vMTHzWnalDQ4jZPaqZ3GJMQYGwzGBrNjQIAQktCu0ezrW/uHZCK9SDYYPHM18z5/3t/vXfT4nDd3effeRzRNgwFdMPoCg+xjSKEQQwqFGFIoxJBCIYYUCjGkUIghhUIMKRRiSKEQQwqFGFIoxJBCIYYUCjGkUIghhUIMKRRiSKEQQwqFGFIoxJBCIYYUCjGkUIghhUIMKRRiSKEQQwqFGFIoxJBCIYYUCjGkUIghhUIMKRRiSKEQQwqFGFIoxJBCIYYUCjGkUIghhUIMKRRiSKEQQwqFGFIoxJBCIYYUCjGkUIghhUIMKRRiSKEQQwqFGFIoxJBCIYYUCjGkUIghhUIMKRRiSKEQQwqFGFIoxJBCIYYUCjGkUIghhUIMKRRiSKEQQwqFGFIoxJBCIYYUCjGkUIghhUIMKRRCcumLqIqU8qYjg6tlKVkJVTUBAAjROMF6wWQvfp0VLN36a2gkJ6QoUqos7u/YGA90fVFJxWfq4wDAmqwXHaV1j9uKa/9NH6ONKS1FlUV36NLJJxOBrnv0scmwuCte8NQs/Ly+nCamrJTYYNvfBLtOPAlCCNEHPwAFBE5P1bMuX/OD+hgtTLmGXlMkZ9/ZPW+FLp18ilylEAAgqgqBlRbqy2liSklRpVRp/6ldx+VYYIk+dqVwHAuL1azoy2li6kjRNG7o/Fu7ZClVfbVPx1iKCh1498DBxU8//fQWfYwWpoyUUN/pfxaT0dkE19YGChYz+gaGEYvFrPoYLUwJKYqUKksMXth0rUIAAIQgEIqguLh4SB+ihSkhJeG/uFFVFIe+/CPBMBj0B8FxnKwP0cLUkBLsX6cv+8gQQFZUxGKxAn2IFqiXoqmyTRaTlfryj4wGCDyH3t5erz5EC9RLUaRUuaaki/XlHxlVQVVFKfbv3/+Ru9UfN9RLEeOhBfqyayEZS6Bxpg+nT723oKOjw6eP0wD1UjRVcurLroVoPInaKi8qy4tMhw8fvlEfpwHqpaiyVKgvuxZkSYbVWaA2Nc7AwYMHqZxuoV7KSNN8/VBUFYTnmdmzatDZ2Vmtj9MA9VJYlgteTyuEECCRwuxZNWhra5uhj9MA/VLMjtZrmeuaiGQqjaqKUiTiEY+iKKw+nm2olyLYCg8R1jSoL78WEskUvKVFUKW07+TJk3P08WxDvRTCsHGzo+Q1ffm1IEkyHHYbSooKcezYsXn6eLahXgoAWJzFO/VleliGwZX+zKmaBt4kwFdZjp07d/6FPp5tpoQUs8v7EsOZ+/XlACDLCgoKrJrDaVdl5creXamqCphNmFZejDfeeONWURQFfU42mRJSGJYPOysavqsvV1UV07wlaG3vSf3941vDPMdpPMfp0yZGklE9rQx9fX3lBw4cWKQPZ5MpIQUAbEW+n1o91VtVVQMIUF5egqq59QBh8OAjT2qaLJtKi91Q1Ct8WlJpVE8rBQDq2pUpIwUA3L7m+92Vjf9U7HHh9X2H8M2HvoeWOzZFv/SZVdzTP9hiHfQHiaKo+ssmJC1KKCt2a26Xg7qR/ZRcYpROxsq906rfM3HE/cxj3xr+3GdWega6+5EWJTBXuL7FZjUjHInjwe8+BYmx/3HHjh1r9DnZYko9Ke+TTEkpRVHYJ/7p6/jc/V/wXLrQBfEqhGD0SWEYBgvnNSIcDpXE43GbPidbTEkpDMsqHMfJrec6AH8/CMOMTJ9cBaqiAtBwy+L5sFvZ8kAg4NbnZIspKcXhcETq6urOhyJRQNWuWghGxyoMw2D5kvnw2K1l58+fr9PnZIspKQUAvF5vbygSA66hTSSEQDMJalPjdHR1dVXp49liykrx+Xwd4UhMX3zFaNrIE0YIYYrcLvT19ZXrc7LFlJUyd+7cE9F4ElJaBMNc/W2wLIt0WkRyOAhfZRnOnTs34RaKbHD1d0MJLS0te1IpUU2nRbDM1bcpAs8hEI2nu3oGxZm1lQgG/BX6nGwxZaX4fL6O8sqa/ZFYHDzP68MfCseySKVSJBxNak57AQL+IZ+qqlT8f1DxR3xU6hvn7Glt60Khy37V74wlWYbdahUKrILAMASJWMw7PDzs0edlgyktZc2aNTv++MYBwGq5ql4YIQQMwyAcjYHlWMLzHHgO1nQ6PbJPMstMaSnLli3b996FvtPB3kHYrBZ9eEIYQiBKI6P/UCSGRDIFs8UMewE9i/CntBQAuGHegld+v+ttuEs9uNJ5PAKihaNJVVVUWEwmQODhsFMzyzL1paxfv/63L25/A5AVsOyH346qaeB5DpF4VJMVBe5CB6CqYBmGyLJ8hS9jPl4+/C4oZ8mSJfsv9UfPnj3XAZfDrg9PCM+xRBQlpsBq0TiWubyyzGjoryOLly3b+cb+w7C6nZfntBhCJm37WZaFokIr9rigqhoADaqmwmw2p/S52SAnpNx+++2v7Np7GJBkCDwHSZKRluRJB5WyoqDAYiIWswmEEIiJFELhmOZwOCL63GyQE1JWr179WntvsOtSVy8cBTYMh6OqJEkgk0hhWRapdBqJZBIWswmhSAyDw6E0IWSSZyuz5IQUlmWVhYsW//7A0dOw2CzawEBA5jh2ZNXKBGiqBoBgOBSFSeDhD4RgMjvay8rKJlwxk2lyQgoAbNiw4eV3jpwCFJUMhSISx3Ije+kmQFZkWC1momkaWLsNrW1dmNXYeISWfZA5I2XVqlW7+gYjPcdOncfQcEh1u+yTLthXFBU2mwW1VV5omqaePHMBS5cufUufly1yRgrHcbKn3Ldn175DEASOmM2mSXtfGF1R6XLYiRKLM0fPtA+3tLTs0edki5yRAgA33rTg9ad/+gKklCRwFrM+PA5N02A2CWjv6gNndh1qaGg4o8/JFjklZemyZXt6+/1agc0kYJKe11jsdhtOn72ImbMajuhj2SSnpMyYMaOtvr6+dZL2HZoGMAwBx7Ej82RmAcdPt+Gmm246pM/NJjklBQAaGxtP221WQP7z5asMAWRZRTotgmNZQJRwqXcQDMNM3HfOEjknZeHChQd5ngMmGKPwo2OS8xe7YbWaAYbAJPBULZpALkqprq7unGwdGM+xiMYSONd+aeRJ4Tg0zqwBbbu5ck7K3LlzT8QTSYD/81l4k8BjOBSBPxAGx7JQE0nM8FXgwoUL0/W52STnpJSVlfUPDUciYEcb8zFYrRZc6h1EKi1qpgIrksk0ppWXoO1ca1MikaDm1WPOSSksLAwOROQj0LSRn6ixEAJNUVS326lCkhGJxtFQV42GGdNKaTpAJ+ekAIAE07Ff/Wo7ymfVwGm3gTBk5L2JqmIwGJWnV1Yo8UQSsqKAsZrx+bUrcfTo0fn6erJFTkpZvHjx2z/95e/w/M9fEk+f60BZsRtVzY1453irGkumU0sXzmHD0TgIIYgMBbFyaTOGBvtr9PVki5yUsmjRogPN82ZHi91O4fvP/gJr7voGPrvuK/jHx7dKG25bQYoKHawyumk1lRbhctrR09VBzeE5OSmlurq6M5HWWlff+Un8+PtbsOGTy1Fb5cWme9abVtx8g72nb+jy9gme5xAKR3Hq1GlqzmnJSSkAUOyt2d32zjGUl3hw56dvwebN92Ht2pXo7e4HxoxjTAKH4WAEb71zYM7Q0ND1O+ztGshZKctXtOxo7+wFsVrQ1TuE7z32Y/R0dsNkMY91AqvVgq6efviHg9bu7u5pY+vIFjkrZcWKFW8ea+28BJOAebNnoKt7AL/ZvhulFaWjK1hGEXgMDUcUANT0wHJWCsdxssg6X4r1DoJzO7Fy6Xxse2EHpHgCHDcyfiGEQI6n1FA8EbnjUy3o6Oio1deTDXJWCgC03Lr6xW0v7AAEHg98aR04lsW2F3fAW14MTdOgqRokWWa6u3udyxc14eyZ0836OrJBTktZvnz53q0vvHqh43gr7DNrsenez2Lnm+9ClmQQQmCxmNDW0Q2b1cJs+MRy9Pf1UjFWyWkpANB8082vf/mbP0S8rQN/ddenMe+Gmdi55yAcdhs800rx/MuvwSQI8DXPRjoRnnXx4sWsi8l5KV6vt3fnm+/ily/vUuByYNnCuejqHYDNasauP+7ThoZD+OKG1YAsY07DdBIKhVz6OjJNzkupqKjouX31EjQ11LKB852YXl2BlsXzMeQPagNDITxw9zp4y4qBaBxzGmpx/PjxJn0dmSbnpbhcrtC8OTOx8JZFiETj0DQVHpcDoiSTdbctIbNqKzEwFAA0DdUVZaBhrJLzUlRVZXiWBSQJI0tZtcvnsoQiMURjCbAsg1QiiapppbjQ1tagryPT5LwUTdPItPJiQJT0oXHEEylMKy/BsH+gXh/LNDkvBQAqyoonXN0yFkmWUei0Q2DVymg0emW7jz4mcl4KwxB4Cp1Ii6I+NA5ZVsDZbSgptBVn+519zksReEExmwR82Il5GkZW69VWeZHtr0XkvBRREnlVU8fNDE8EAQBRgresCKdOnZqtj2eSnJcSCASufHOpoqDQaUe236vkvJRgIHjFJ95pADiWyfo6sJyXIoppE/mAncJjIQBUVYPf7y/SxzJJzksZHPK7YvEk+NF3KFdCtk8zyuo/ngkURWHeH8F/GJoGsCyT9f30H/6XTnECgYA7mUqDvYInhTAE8UQKbrc7oI9lkpyXIssyJ4rSuBUsk8KyCEdjhpSPG4/HMxyNJUZ2DH0AhABgCKKxJEpKSq7rR3SulpyXUlZW1h+MRAFB+LNV+O/DMARpUYKWFhGOxuD1env1OZkk56U0Njae3n/oJKCql49dJ+9/MG0UjmURiyfhD4QRiydRV1d3fkwVGSfnpWzYsOHl42cu9XWc74TTMfoNZ0LGnXLEsiwSyRS6+4cQiyWQ7eNAcl6KxWJJrl2/4bndbx9FQfHI4D6ZSuNS7yCEMbu9OJZFMBRFKCEGfD5fx5gqMk7OSwGA++67b+tvtu8G0iIKbBYM+oPoGfDDYv7TOZ48z2M4GIasspdcLldoXAUZJi+kzJo166yjxPfrU63tcM2oHnknD4DjRm5/5Hh14Mz5Tpgttqw28sgXKQBwzz33bH35D3uAYARdPYNiw4xqLRpPAqO9L5PA472z7XB5ii7or800eSPltttue/W3rx87sf7ub2J2wwxpuq+CiGPe21vMJrSe70RRUUnfuAuzQN5IAYA777zzFzc11WPV+lstfQP+cd1iwjDwB8PweDzD4y7KAnkl5d577/3Z2fbuEAlFGGGS8/Grqqq69GWZJq+kFBUV+T0VM7f91y9fQVll2YQj/GyP5pFvUjDaPX5x+25AlMDq99kDsNvtUX1Zpsk7KU1NTceFguJXz7Z1wak7St3hdIYKCwuD4wqzQN5JAYAVLbf84dDxVtico9Muo3jLvN08z3/wUsoMkJdSli1btu/Q8TMAz4OQ0cPZCIEgcLKmaR88x58B8lJKQ0PDmV5/eBCqCp7noSgKTCYBvMALRpuSJWw2WxysMPTO/iMIhaPgeQ4sQ+BwZF8I8lUKAAz4o/6fPPd/KCkqvFzGMYySSqU++JjWDJC3UiwWS3Ll0ma4it0QR7vHkiQVGFKySKnHab3jUy3w9w9BkmU4nHY47SZXLBYb3yXLAnkppaOjw+e2MwtsJR4kk2koyshxuJooltNwQl5eSgkGg4U2s2DB6OeiCAEgKygvdfPBYPBPjUyWyEsp8+fPPxqMa+8ogTD4918JKypmTa/CwMBAqT4/0+SlFABo6xoIHzh6CkWFTgCAKkooK3EbW7azxfDwsOe9k8dvHvSHLp9oFInGUVdTif/e9p/fyfa27byUEg6HnTfOqXOsuXURhoNhAEA8kURFVTk+eesi27e//e3H9ddkkryU0t7eXju92kvMJR4oo8evq5qGVDSOLV/+S+z4/St3vfbaa6v112WKvJSye/fuWxbMawBGF05gdEXLoD+Iyvpa/N1D9+DJJ5/cMu6iDJKXUtrOtTYvbKpHNDx+qosQgnD3ADbevQ79PR0t/f39ZeMSMkTeSRFFUSgQtHnTaysRjcXHxcjoR54LSj146P47rM8888zXxyVkiLyTcvHixZqG6d5yWM0T7q1nWQZDnb24+47bcHDvq49k42cs76T09PRUFBcVAmbzpN+BTCTTUFUNzz37D/jZvz/7xMaNG3+iz/k4yTspyWTS8pOf/y+0SCxdXecDM9rzGgvLMujpG0SJpxCHX/0Z2NTgl2tra9tPnDgxd1zixwSZaJlNLhMIBNzNzc1Hyty26mcf26LeuPhGRY3H+b7eAWi6fSuKoqDQ5YCjohRH9h3GA9/6Ie6+9ytbNm/e/NS4Sq8zeScFAOLxuO2pp57avHXr1vvqa0prHt1yv7xgabPq7+4TEokUWJYZ3SJJIMsyzIKA0jofpFAYn/rCZjQ2L33mRz/60UP6eq8X7KOPPqovy3kEQZBWrFjx5qZNm/51MBCN3P/g3y6NBoLWtetWipoks+m0BElSVUeBTbUXWJmu/kFRiic0VdbSn1h5s7LtF/+z9PS5dtOqVat26eu+HuTlk6JnYGCgdM2aNTvWLL1h3mNPPJKOX+o1+YeD2t53T0UWNM2yzPBVCC+/+vZQkdNmcxUWxlhGs2746+8UPPDVBx95+OGHf6Cv71rJu4Z+IkpLSwf279+/5He7j57aeN/DJluxJ+lrqielxS7uP57fHtx34GTC43YwsaSYZFlOC0dT/pqqchw8eHChvq7rgfGkjMHv9xe1tLTs8Xpsjf/y3a8qNoe7yySwzK9e2sndOG+mTU6lHVt/vZ05cvIc4iml74knnvjGXXfd9by+nmvFkKJDFEXha1/72o+f2/bz+2dOr0JdzTQlnkixFzp74yWlFafnNTcfWrly5etr1679nclkSuuvvx4YUibhxIkTc/fu3bs8FAq5fD5fR1NT0/H6+vrWTHyz3pBCIUZDTyGGFAoxpFCIIYVCDCkUYkihEEMKhRhSKMSQQiGGFAoxpFDI/wNV4rX7I9nZ2wAAAABJRU5ErkJggg==",YC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI0AAADUCAYAAACh36CaAAAACXBIWXMAAA7EAAAOxAGVKw4bAAA4HGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMjEgNzkuMTU0OTExLCAyMDEzLzEwLzI5LTExOjQ3OjE2ICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE1LTA0LTA2VDExOjI5OjIyLTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTUtMDQtMDZUMTM6NTY6MzctMDc6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE1LTA0LTA2VDEzOjU2OjM3LTA3OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjcxZWY1OGIzLTljYTItOTc0Zi05YmNjLTMxMTg4ZGY0NTk4ZDwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDo3MWVmNThiMy05Y2EyLTk3NGYtOWJjYy0zMTE4OGRmNDU5OGQ8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDo3MWVmNThiMy05Y2EyLTk3NGYtOWJjYy0zMTE4OGRmNDU5OGQ8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NzFlZjU4YjMtOWNhMi05NzRmLTliY2MtMzExODhkZjQ1OThkPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE1LTA0LTA2VDExOjI5OjIyLTA3OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjk2MDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+OTYwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xNDE8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjEyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg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",WC="data:image/png;base64,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",VC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI0AAADUCAYAAACh36CaAAAACXBIWXMAAA7EAAAOxAGVKw4bAAA4HGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMjEgNzkuMTU0OTExLCAyMDEzLzEwLzI5LTExOjQ3OjE2ICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE1LTA0LTA2VDExOjMwOjIwLTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTUtMDQtMDZUMTM6NTY6NDAtMDc6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE1LTA0LTA2VDEzOjU2OjQwLTA3OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjk1NjQ4ZGJmLTljNTUtZTY0Zi1iNDAxLWNlOTdkZGIxYzQ5NjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDo5NTY0OGRiZi05YzU1LWU2NGYtYjQwMS1jZTk3ZGRiMWM0OTY8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDo5NTY0OGRiZi05YzU1LWU2NGYtYjQwMS1jZTk3ZGRiMWM0OTY8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6OTU2NDhkYmYtOWM1NS1lNjRmLWI0MDEtY2U5N2RkYjFjNDk2PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE1LTA0LTA2VDExOjMwOjIwLTA3OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjk2MDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+OTYwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xNDE8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjEyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg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",UC="data:image/png;base64,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",HC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI0AAADUCAYAAACh36CaAAAACXBIWXMAAA7EAAAOxAGVKw4bAAA4HGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMjEgNzkuMTU0OTExLCAyMDEzLzEwLzI5LTExOjQ3OjE2ICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE1LTA0LTA2VDExOjM1OjU2LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTUtMDQtMDZUMTM6NTY6MzgtMDc6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE1LTA0LTA2VDEzOjU2OjM4LTA3OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjFiYTIzODgyLWRmMjYtMGQ0OS04YzU4LTMzMzU4ZWMwZDE2YzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDoxYmEyMzg4Mi1kZjI2LTBkNDktOGM1OC0zMzM1OGVjMGQxNmM8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDoxYmEyMzg4Mi1kZjI2LTBkNDktOGM1OC0zMzM1OGVjMGQxNmM8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6MWJhMjM4ODItZGYyNi0wZDQ5LThjNTgtMzMzNThlYzBkMTZjPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE1LTA0LTA2VDExOjM1OjU2LTA3OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjk2MDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+OTYwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xNDE8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjEyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz7d8hayAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAuGSURBVHja7N15cBRlHsbxHxIXCy9UEAEVXBFUxFW28EJdVlfx2AVXYLkVQdYtoKAUD3QV5VQOXYKAHEaIiBxJ92QyyYQkJARIIMn0TO6LcCTTmUlCJjMJCQn3s39wWArhSgYzw5OqbyV/JKmpqU91v9Pv+3YLAGHsUuKbwIiGEQ0jGkY0jGgYIxpGNIxoGNEwomGMaBjRMKJhRMOIhjGiYUTDiIYRDSMaRjR8ExjRMKJhRMOIhhENY0TDiIYRDSOaK/3iL/Nr1KB+grKkDk6rMqTEqk7VrYaZutUwo8RqmGbXlBH7043d63fHyKM9u13W/ycaP0QzdtjfX0NZUqDDqmbpmurSNfWgrqm1uqZW2TU1tzzduLp+T+z4Xg93v49oiEZERCa/PXg/yneixGqArqlnVZYRjtrdm9GrZ7cFREM0IiIy8vUXbShNahBNZY4ZZelG3HfPnR8QDdGIiMjwf75gQ9mOBtF48qJgt4SiY/u204iGaEREZOrEkR64LecEo2sqyjPCUb8vHj0fuHcD0RCNBAS0nJ8ZF4y6ffENotE1FXCl4tvZ79aJyEtEc/WiGTZ0wPNplqjvcaQoAcWpoedF40wz4lDRFqxe+An69O6pisjLRHP1oOk25T/D0nTNAJzIB2rSUJ2/CTWFMajK34QDu05+d9jCUFsYi6q8TThQEI3qgmjU740Djp/8G0v0D+jTu+d8EbmZaHz4xd9y0w0N1uamG6TtLTfJ+DdfW+rINCE+ZBFCVsyEGjQHatAchK6ciU0/fw1T8FxsVb5FaZoRET/OQ8y6/8EUPA+hK2dBDZp9ptSo7xG+ei5WffPxlHVLPpc1gZ82GNE04xzbgxvMuT1Yynf+LHuS1iWZf1oAQ9AcxG0MRKJxKbapS7BV+RZpsatgCp6LqRNGYOGMyZj41kCkx65CSsQKbFUWY5u6BInGpYhZ9w3WLp6GmPULgdLt8+DZKahIbDiiab4dLYhqsGMFZqnPN/dxnzrdnD71VOaY4c41w50bhYqsCNTtiYPDFoaUyBWoyIpAza4YuLIj4c6NgjvXjMocM6rzN6Fuz2bUFsbCaTU4Sy0h15RZQ6WhiKYZp2vqebNrhujzDXZ1TYXdoqA03YjKnEiUphtRbFHO//uaCrtVHaHbVGkoomnG2TW1wXRN6XIhMI3I4rApUtJARNOMc1pCz1mpJVR0izLbrhngPTjKfSePaMpZEU0zzq1tPCvPqe8OTd1r9xIYu2aAU1NmurQQqdBCz4pomnE1eeazqs0zizvb9IjdcnL84RU0FhUlmprryY6Q6lyzVOX8OqJpxhVpyjnLiAv+oCg1tMEJycbmsBmwe8cG7N65sUtpulHKM02/imiacZ3uaHdW7W5rI/M/HZ9z7DxLHxpbWboR7lwzRg95+eNnH39Y/vrUI7+KaHxvGmF4imk5jtq3enEQrALVNowb0b9SRK7lNIKPo+nX9/EM7E+Gw2bwKprDxQlIjVwBaSETiMa30dz93VfvA1VW2C9wka6xOW1hOO5MxF+eeCSbaHwbzcht6mIc17d5FYyuqShOVYAqDVPeGQoR6Uo0Poqmdevr5mTFBePg7s1eR6NrKlCRjKVfToGIDCcaH0XTvt0tQYVJ63GgIPqKoVm39AuIyHtE46NoutzVYY0zLQzuHPMVQ7Nh2XSIyIdE46NoWrX6w4rchJ9waG+c98c0FgXwWLDsq/chIm8Rje8OhN8M+noqUJeJopQQ7x9patMw8JW/QET+SDS+i6bVvZ07ldbs3ozqXTFe+9hdnKrghDMR8RsD0bLlNWZ+5Pb9K8LvDun/HI47EuFMC/PaNRqU78QTvXpARO4nGt9H06nNzTfClRWBypxIr6A5om/FDuN3EJEd3I3gP1tYwuNDFuFYyXZvLL4CqjRMGjsIItKfaPwHTd/pU8Z4ZTqhPCMcBwtj8WC3Li7ue/KzzXIvPNu77IQzEQ5b045rDu/bgtTIlRCRlUTjZ2iub31d4K7EdajdFdOEK/YUwGPFwumTICIvEo3/bcvtu3bJ54ArpcnQlGgqUJmKga/2rRSRa4jG/9C0HDeifwU8WpONa6rzNqHUFoa2t94cxL3cfnoDgDs73v6zKzsSldkRTXNqqkjG+u+mQ0T6EY3/3jViSMiKWThRmtQki8nhSsGoQf0851riSTT+g6btfye9UYcqrdFo9meacLAwBo8+1M3IW434+f1pJr892A5XSqN3JlRkRcCVHYmuXTrNJRr/RnPtpLGDypsKTUVWBO65q0Mg0fg3mg6fTHrjaNOcnk7ehuT+rp0jica/0QwKC5qDE87Exl+jsRqAylS8M2qAh2j8GM2fenTNP1ScgPKM8Cb5yF2/bwvytq2FiEwjGv9Es8QWswonnIkousCdPC8aTqoCVFkx68NxEJHHiMa/0Ixb+uUUoDYdxSmhTTr3VJEVAbgteK5PryoRaUc0/oGmx+jBLwEHM1CWHn7BKYTi1FCUZ5rgyo68qCNSUUooDtsTsD87Am1vbWMhGj9A06P7PQXHHNtRUxh7wRtM65qK8kwT0mNXITliOSqyLm66oSg5BKiywrxmPkTkI6LxbTT9TavnAjVp2HeRuxGq86OxecNCGFd9iZpdsZc2412fhaED/nb4t9MKRONDaB7s1iXmqL4NFZmmS9pZUJYejv2ZJhSnKpe2l7tsBxINSyAiY4jGN9E8NOvDcUBN2iUvhSixGi7rinFpmhEo34En/9wji2h8EE1AQMsVufFrUL83/opsyf3lzhFWrJz/EUSkN9H4FpoWA/o9Uwm3BSVXCMwvY6JNqMg0od1tbYKIxrfQvLJh2QzAler1mxmdc3HWgTRMGP16tYgEEI2PoLm7U/u1VXlRTbJC77LQlCYhbuMiiMgQovENNAGjBvbzwG254keZMw9KzY6EJycSd3W8XSEa30DzzOLZ7+F8z6T0dqdnwP/1j+cqRKQl0TR/NHMskStxaF/874ZG11TAoyFwxmSIyNNE07zRPPDYow9WHtoXj7I04++K5kjxFuw0LUOLFi1+JJrmjeb5z94dbWvKvU2NWQ7qzo2qvb9r5+VE08xPTws+nyhwJXfTNWWsrqkRuqYeucJgqnRNXVuWbhxct2dz+8d79eBAuLmjmT313wJX8plnLdk1tbOuqR/omlLo3cGvuq3EqozRNfXWEk2V/ZnhUl0QLb16dicaH0Rz8mer0krX1PVNfdqyWxTYNTW0xKpKiVURXVOFaPwFzennWFqUt+0WpbJJsFgUh66pb/72WZlE42doTtXOblEWXc5R5xQW6Jq6XNfUG871gFWi8U80p3vSblFqLxbPKTAVuqYOP99TeYnGv9GIrqlPnT56lGWEw2EznPm4breocNjC4LCFnV6QFa9r6h0XepQz0fg/GtE19ami5JDtnrwoHC7aAt2ioCg5BO4cM44WJ2Bv8kbomrr0QliI5ipC47CFycE9m2XM0FcnLZg2AThRANRlwpMXhakTR+YnRyx/2J1jFqIhmjO5siPFnRcl1wYEiIgsmvfZeCRE/4D+Lz59TES6pppXyqG98URDNL/kzo2SEqsqHe9oe3rS84vWN16/UUSGiYjsCF8mR4oTiMYf0TCiYUTDiIYxomFEw4iGEQ0jGkY0jBENIxpGNIxoGNEwRjSMaBjRMKJhRMMY0TCiYUTDiIYRDWNEw4iGEQ0jGkY0jGgYIxpGNIxoGNEwomGMaBjRMKJhRMOIhjGiYUTDiIYRDSMaxoiGEQ0jGkY0jGgY0TBGNIxoGNEwomFEwxjRMKJhRMOIhhENY0TDiIYRDSMaRjSMaPgmMKJhRMOIhhENIxrGiIYRDSMaRjSMaBgjGkY0jGgY0TCiYYxoGNEwomFEw4iGEQ1jRMOIhhENIxpGNIwRDSMaRjSMaBjRMEY0jGgY0TCiYUTDGNEwomFEw4iGEQ27evv/AKf3rx6FxSH1AAAAAElFTkSuQmCC",QC="data:image/png;base64,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",XC=Object.freeze([{key:"head",label:"H:"},{key:"torso",label:"T:"},{key:"leftarm",label:"LA:"},{key:"rightarm",label:"RA:"},{key:"leftleg",label:"LL:"},{key:"rightleg",label:"RL:"}]),normalizeValue=g=>{const A=Number(g);return Number.isFinite(A)?`${Math.round(A)}`:"0"},JC=UA.default.shape({head:UA.default.oneOfType([UA.default.number,UA.default.string]).isRequired,torso:UA.default.oneOfType([UA.default.number,UA.default.string]).isRequired,leftarm:UA.default.oneOfType([UA.default.number,UA.default.string]).isRequired,rightarm:UA.default.oneOfType([UA.default.number,UA.default.string]).isRequired,leftleg:UA.default.oneOfType([UA.default.number,UA.default.string]).isRequired,rightleg:UA.default.oneOfType([UA.default.number,UA.default.string]).isRequired}),LimbColumnComponent=({values:g})=>React.createElement(n.Box,{"aria-hidden":"true",className:"nexus-man__limb-column",sx:{color:"text.primary",display:"flex",flexDirection:"column",fontSize:13,lineHeight:1.5,minWidth:"8ch",width:"8ch"}},XC.map(({key:A,label:I})=>React.createElement(n.Box,{className:`nexus-man__limb-row nexus-man__limb-row--${A}`,key:A,sx:{display:"flex",justifyContent:"space-between",width:"8ch"}},React.createElement(n.Typography,{component:"span",sx:{color:"text.primary",fontFamily:"inherit",fontSize:"inherit",width:"3ch"}},I),React.createElement(n.Typography,{component:"span",sx:{color:"text.primary",fontFamily:"inherit",fontSize:"inherit",textAlign:"left",width:"5ch"}},normalizeValue(g[A])))));LimbColumnComponent.displayName="LimbColumn",LimbColumnComponent.propTypes={values:JC.isRequired};var qC=(0,e.memo)(LimbColumnComponent);qC.displayName="LimbColumn",qC.propTypes=LimbColumnComponent.propTypes;var _C=Object.freeze({male:Object.freeze({head:LC,torso:QC,leftarm:ZC,rightarm:WC,leftleg:KC,rightleg:UC}),female:Object.freeze({head:OC,torso:HC,leftarm:zC,rightarm:YC,leftleg:FC,rightleg:VC})}),$C=Object.freeze([{key:"leftleg",label:"left leg"},{key:"rightleg",label:"right leg"},{key:"torso",label:"torso"},{key:"head",label:"head"},{key:"leftarm",label:"left arm"},{key:"rightarm",label:"right arm"}]),ge=UA.default.shape({percent:UA.default.oneOfType([UA.default.number,UA.default.string]),value:UA.default.oneOfType([UA.default.number,UA.default.string]),damagePercent:UA.default.oneOfType([UA.default.number,UA.default.string])}),normalizeGender=g=>"string"==typeof g&&"female"===g.trim().toLowerCase()?"female":"male",normalizeAfflictions=g=>Array.isArray(g)?g.map(g=>"string"==typeof g?g.trim().toLowerCase():`${g??""}`.trim().toLowerCase()).filter(g=>g.length>0):[],toNumericValue=g=>{const A=Number(g);return Number.isFinite(A)?A:0},getLimbEntry=(g,A)=>{const I=[A];"leftarm"===A?I.push("leftArm"):"rightarm"===A?I.push("rightArm"):"leftleg"===A?I.push("leftLeg"):"rightleg"===A&&I.push("rightLeg");for(const C of I)if(g?.[C])return g[C];return{}},buildLimbValues=g=>({head:toNumericValue(getLimbEntry(g,"head").percent??getLimbEntry(g,"head").value),torso:toNumericValue(getLimbEntry(g,"torso").percent??getLimbEntry(g,"torso").value),leftarm:toNumericValue(getLimbEntry(g,"leftarm").percent??getLimbEntry(g,"leftarm").value),rightarm:toNumericValue(getLimbEntry(g,"rightarm").percent??getLimbEntry(g,"rightarm").value),leftleg:toNumericValue(getLimbEntry(g,"leftleg").percent??getLimbEntry(g,"leftleg").value),rightleg:toNumericValue(getLimbEntry(g,"rightleg").percent??getLimbEntry(g,"rightleg").value)}),getLimbState=(g,A)=>{if("torso"===A){if(g.includes("mildtrauma"))return"mild-trauma";if(g.includes("serioustrauma"))return"serious-trauma"}return g.includes(`broken${A}`)?"broken":g.includes(`damaged${A}`)?"damaged":g.includes(`mangled${A}`)?"mangled":"healthy"},getFilterReference=(g,A)=>"broken"===g?`url(#${A.yellow})`:"damaged"===g||"mild-trauma"===g?`url(#${A.orange})`:"mangled"===g||"serious-trauma"===g?`url(#${A.red})`:"",NexusManComponent=({currentAffs:g=[],gender:A="male",limbs:I={}})=>{const C=(0,e.useId)().replace(/[:]/g,""),t={yellow:`${C}-yellowShift`,orange:`${C}-orangeShift`,red:`${C}-redShift`},a=normalizeGender(A),r=_C[a],o=normalizeAfflictions(g),i=buildLimbValues(I);return React.createElement(n.Box,{"aria-label":"NexusMan body status display",className:"nexus-man","data-gender":a,role:"img",sx:{alignItems:"center",display:"flex",flexDirection:"row",gap:1,justifyContent:"center",width:"100%"}},React.createElement("svg",{"aria-hidden":"true",height:"0",width:"0"},React.createElement("defs",null,React.createElement("filter",{id:t.yellow},React.createElement("feColorMatrix",{type:"matrix",values:"1 0 0 0 0\r\n 0 1 0 0 0\r\n 0 0 0 0 0\r\n 0 0 0 1 0"})),React.createElement("filter",{id:t.orange},React.createElement("feColorMatrix",{type:"matrix",values:"1 1 0 0 0\r\n 0 0.45 0 0 0\r\n 0 0 0 0 0\r\n 0 0 0 1 0"})),React.createElement("filter",{id:t.red},React.createElement("feColorMatrix",{type:"matrix",values:"1 0 0 0 0\r\n 0 0 0 0 0\r\n 0 0 0 0 0\r\n 0 0 0 1 0"})))),React.createElement(n.Box,{className:"nexus-man__figure",sx:{flex:"1 1 auto",height:"100%",maxWidth:"202px",minHeight:"120px",overflow:"hidden",position:"relative",width:"100%"}},$C.map(({key:g,label:A})=>{const I=getLimbState(o,g),C=getFilterReference(I,t);return React.createElement(n.Box,{alt:"","aria-hidden":"true",className:`nexus-man__layer nexus-man__layer--${g}`,component:"img","data-damage-state":I,"data-limb":g,key:g,src:r[g],sx:{filter:C,height:"100%",left:0,objectFit:"contain",position:"absolute",top:0,width:"100%"},title:A})})),React.createElement(qC,{values:i}))};NexusManComponent.displayName="NexusMan",NexusManComponent.propTypes={currentAffs:UA.default.arrayOf(UA.default.string),gender:UA.default.oneOf(["male","female"]),limbs:UA.default.objectOf(ge)};var Ae=(0,e.memo)(NexusManComponent);Ae.displayName="NexusMan",Ae.propTypes=NexusManComponent.propTypes;var Ie=Object.freeze(["hp","mp","ep","wp","nl"]),clamp$1=(g,A,I)=>Math.min(I,Math.max(A,g)),normalizeNumber$2=g=>{const A=Number(g);return Number.isFinite(A)?A:0},formatNumber=g=>normalizeNumber$2(g).toLocaleString(),getBaseColor=(g,A)=>g?.palette?.[A]?.main??g?.nexGui?.tokens?.game?.[A]??GA.game[A],getPercentage=(g,A)=>{const I=normalizeNumber$2(g),C=normalizeNumber$2(A);return C<=0?0:clamp$1(I/C*100,0,100)},getHpColor=g=>g<=25?"#d9534f":g<=50?"#d9832e":g<=75?"#b7b33d":"#2fa35a",getGaugeColor=(g,A,I)=>"hp"===A?getHpColor(I):getBaseColor(g,A),StatBarComponent=({type:g,current:A,max:I,label:C=g.toUpperCase()})=>{const e=(0,a.useTheme)(),t=normalizeNumber$2(A),r=normalizeNumber$2(I),o=getPercentage(t,r),i=getGaugeColor(e,g,o),l=`${Math.round(o)}%`;return React.createElement(n.Box,{className:`stat-bar stat-bar--${g}`,sx:{minWidth:0,width:"100%"}},React.createElement(n.Box,{"aria-label":C,"aria-valuemax":100,"aria-valuemin":0,"aria-valuenow":Math.round(o),className:`stat-bar__progress stat-bar__progress--${g}`,role:"progressbar",sx:{backgroundColor:(0,a.alpha)(i,.14),border:`1px solid ${(0,a.alpha)(i,.48)}`,borderRadius:1,minHeight:22,overflow:"hidden",position:"relative",width:"100%"}},React.createElement(n.Box,{"aria-hidden":"true",sx:{backgroundColor:i,bottom:0,left:0,opacity:.68,position:"absolute",top:0,transition:"width 180ms ease",width:`${o}%`}}),React.createElement(n.Box,{sx:{alignItems:"center",color:"text.primary",display:"flex",gap:1,justifyContent:"space-between",minHeight:22,px:.75,position:"relative",zIndex:1}},React.createElement(n.Typography,{component:"span",sx:{color:"text.primary",fontSize:11,fontWeight:700,letterSpacing:.5,textTransform:"uppercase"}},C),React.createElement(n.Typography,{component:"span",sx:{color:"text.primary",fontSize:11,fontVariantNumeric:"tabular-nums",textShadow:"0 0 3px rgba(0, 0, 0, 0.85)"}},formatNumber(t)," / ",formatNumber(r)," (",l,")"))))};StatBarComponent.displayName="StatBar",StatBarComponent.propTypes={current:UA.default.number.isRequired,label:UA.default.string,max:UA.default.number.isRequired,type:UA.default.oneOf(Ie).isRequired};var Ce=(0,e.memo)(StatBarComponent);Ce.displayName="StatBar",Ce.propTypes=StatBarComponent.propTypes;var selectStatsSlice=g=>({hp:g.hp,mp:g.mp,ep:g.ep,wp:g.wp,nl:g.nl,gold:g.gold,bank:g.bank,xp:g.xp,xpToNext:g.xpToNext,updateStats:g.updateStats}),useStats=()=>{const{stores:g}=useNexGui();return g.stats(useShallow(selectStatsSlice))},ee=Object.freeze([{type:"hp",label:"HP"},{type:"mp",label:"MP"},{type:"ep",label:"EP"},{type:"wp",label:"WP"},{type:"nl",label:"NL"}]),getFlipTransform$2=g=>{switch(g){case 1:return"scaleX(-1) scaleY(-1)";case 2:return"scaleY(-1)";case 3:return"scaleX(-1)";default:return"none"}},Indicator=({className:g,label:A,ready:I})=>React.createElement(n.Box,{className:g,sx:{alignItems:"center",backgroundColor:I?"rgba(18, 42, 26, 0.82)":"rgba(24, 24, 24, 0.82)",border:"1px solid",borderColor:I?"rgba(102, 221, 144, 0.7)":"rgba(192, 176, 144, 0.22)",borderRadius:999,color:I?"#66dd90":"text.disabled",display:"inline-flex",gap:.5,px:1,py:.25}},React.createElement(n.Box,{"aria-hidden":"true",sx:{backgroundColor:I?"#66dd90":"rgba(192, 176, 144, 0.35)",borderRadius:"50%",boxShadow:I?"0 0 8px rgba(102, 221, 144, 0.5)":"none",flexShrink:0,height:6,width:6}}),React.createElement(n.Typography,{component:"span",sx:{color:"inherit",fontSize:11,fontWeight:700,letterSpacing:.5,textTransform:"uppercase"}},A)),StatsPanelInner=()=>{const g=(0,a.useTheme)(),[A]=(0,e.useState)(()=>Math.floor(4*Math.random())),{hp:I,mp:C,ep:t,wp:r,nl:o}=useStats(),{balance:i,currentAffs:l,equilibrium:s,gender:c,limbs:u}=useCharacter(),d=g?.nexGui?.backgroundImage??"",m=g?.nexGui?.backgroundOpacity??.5,p=g?.nexGui?.backgroundFilter??"none";return React.createElement(n.Box,{className:"stats-panel",sx:{height:"100%",overflow:"hidden",position:"relative",width:"100%"}},d?React.createElement(n.Box,{"aria-hidden":"true",className:"stats-panel__background",sx:{backgroundImage:`url(${d})`,backgroundPosition:"center",backgroundSize:"cover",filter:p,inset:0,opacity:m,position:"absolute",transform:getFlipTransform$2(A),zIndex:0}}):null,React.createElement(n.Box,{className:"stats-panel__content",sx:{background:`linear-gradient(180deg, ${(0,a.alpha)("#050505",.3)} 0%, ${(0,a.alpha)("#050505",.55)} 100%)`,display:"flex",flexDirection:"column",gap:1,height:"100%",p:1,position:"relative",width:"100%",zIndex:1}},React.createElement(n.Box,{className:"stats-panel__body",sx:{alignItems:"center",display:"flex",justifyContent:"center",minHeight:120}},React.createElement(Ae,{currentAffs:l,gender:c??"male",limbs:u})),React.createElement(n.Box,{className:"stats-panel__indicators",sx:{display:"flex",gap:1,justifyContent:"center"}},React.createElement(Indicator,{className:"stats-panel__balance stats-panel__balance--"+(i?"ready":"waiting"),label:"Balance",ready:i}),React.createElement(Indicator,{className:"stats-panel__equilibrium stats-panel__equilibrium--"+(s?"ready":"waiting"),label:"Equilibrium",ready:s})),React.createElement(n.Box,{className:"stats-panel__bars",sx:{display:"flex",flex:"1 1 auto",flexDirection:"column",gap:.75,justifyContent:"flex-end"}},ee.map(({type:g,label:A})=>{const e={hp:I,mp:C,ep:t,wp:r,nl:o}[g]??{current:0,max:0};return React.createElement(Ce,{current:e.current??0,key:g,label:A,max:e.max??0,type:g})}))))};Indicator.displayName="StatsPanelIndicator",Indicator.propTypes={className:UA.default.string.isRequired,label:UA.default.string.isRequired,ready:UA.default.bool.isRequired},StatsPanelInner.displayName="StatsPanelInner";var StatsPanel=()=>React.createElement(QA,{panelName:"Stats"},React.createElement(StatsPanelInner,null));StatsPanel.displayName="StatsPanel";var SystemStreamInner=()=>{const{adapter:g,stores:A}=useNexGui(),{items:I,version:C}=useTranscript(A.systemStream),t=(0,e.useCallback)(A=>g.send(A),[g]);return React.createElement(nI,{className:"nexgui4-system-stream",itemKeyVersion:C,items:I,onSendCommand:t})};SystemStreamInner.displayName="SystemStreamInner";var SystemStream=()=>React.createElement(QA,{panelName:"System Stream"},React.createElement(SystemStreamInner,null));SystemStream.displayName="SystemStream";var getFlipTransform$1=g=>{switch(g){case 1:return"scaleX(-1) scaleY(-1)";case 2:return"scaleY(-1)";case 3:return"scaleX(-1)";default:return"none"}},TargetPanelInner=()=>{const g=(0,a.useTheme)(),[A]=(0,e.useState)(()=>Math.floor(4*Math.random())),I=g?.nexGui?.backgroundImage??"",C=g?.nexGui?.backgroundOpacity??.5,t=g?.nexGui?.backgroundFilter??"none";return React.createElement(n.Box,{className:"target-panel",sx:{height:"100%",overflow:"hidden",position:"relative",width:"100%"}},I?React.createElement(n.Box,{"aria-hidden":"true",className:"target-panel__background",sx:{backgroundImage:`url(${I})`,backgroundPosition:"center",backgroundSize:"cover",filter:t,inset:0,opacity:C,position:"absolute",transform:getFlipTransform$1(A),zIndex:0}}):null,React.createElement(n.Box,{className:"target-panel__content",sx:{background:`linear-gradient(180deg, ${(0,a.alpha)("#050505",.18)} 0%, ${(0,a.alpha)("#050505",.36)} 100%)`,display:"flex",flexDirection:"column",height:"100%",minHeight:0,position:"relative",width:"100%",zIndex:1}},React.createElement(n.Box,{className:"target-panel__body",sx:{alignItems:"center",display:"flex",flex:1,justifyContent:"center",minHeight:0,p:1}},React.createElement(Ae,{currentAffs:[],gender:"male",limbs:{}}))))};TargetPanelInner.displayName="TargetPanelInner";var TargetPanel=()=>React.createElement(QA,{panelName:"Target"},React.createElement(TargetPanelInner,null));TargetPanel.displayName="TargetPanel";var clamp=(g,A,I)=>Math.min(I,Math.max(A,g)),normalizeNumber$1=g=>{const A=Number(g);return Number.isFinite(A)?A:0},normalizeDirection=(g,A)=>"countup"===g||!1===A?"countup":"countdown",getElapsedMs=(g,A)=>Math.max(0,normalizeNumber$1(A)-normalizeNumber$1(g)),getElapsedPercentage=(g,A)=>{const I=Math.max(0,Math.abs(normalizeNumber$1(A)));return I<=0?100:clamp(g/I*100,0,100)},formatTimerValue=g=>{const A=Math.max(0,normalizeNumber$1(g))/1e3;return A<10?`${A.toFixed(1)}s`:A<=60?`${A.toFixed(0)}s`:`${Math.floor(A/60)}m ${(A%60).toFixed(0)}s`},hslToHex=(g,A=100,I=50)=>{const C=I/100,k=A=>(A+g/30)%12,e=A/100*Math.min(C,1-C),f=g=>C-e*Math.max(-1,Math.min(k(g)-3,Math.min(9-k(g),1)));return"#"+[f(0),f(8),f(4)].map(g=>Math.round(255*g).toString(16).padStart(2,"0")).join("")},getGradientColor=g=>hslToHex(1.2*clamp(normalizeNumber$1(g),0,100),100,g<75?50:Math.abs(g-100)/2+25),getProgressValue=(g,A,I)=>{const C=getElapsedPercentage(g,A);return"countup"===I?C:clamp(100-C,0,100)},TimerBarComponent=({id:g,label:A,durationMs:I,startedAt:C,elapsedMs:e=0,now:t,tickIntervalMs:r,running:o=!0,direction:i="countdown",countDown:l})=>{const s=(0,a.useTheme)(),c=Math.max(0,Math.abs(normalizeNumber$1(I))),u=normalizeDirection(i,l),d=clamp(!1!==o&&null!=C?getElapsedMs(C,t):normalizeNumber$1(e),0,c),m=getProgressValue(d,c,u),p=formatTimerValue(c-d),h=A?.trim()||g,y=getGradientColor(m),b=Math.max(22,normalizeNumber$1(s?.typography?.fontSize)+10),x=`${h} (${p})`,E=Math.max(0,normalizeNumber$1(r)),v=0===m||100===m?"none":`transform ${E}ms linear, background-color ${E}ms linear`;return React.createElement(n.Box,{className:`timer-bar timer-bar--${u}`,"data-timer-id":g,sx:{border:"1.5px solid #aaa",borderRadius:"6px",fontSize:s.typography.fontSize,margin:"3px 0",overflow:"hidden",position:"relative",width:"100%"}},React.createElement(n.LinearProgress,{"aria-label":h,"aria-valuetext":x,className:`timer-bar__progress timer-bar__progress--${u}`,sx:{backgroundColor:"transparent",height:b,"& .MuiLinearProgress-bar":{backgroundColor:y,borderRadius:"4px",transition:v}},value:m,variant:"determinate"}),React.createElement(n.Box,{sx:{alignItems:"center",color:"#FFF5D6",display:"flex",inset:0,px:1.25,pointerEvents:"none",position:"absolute"}},React.createElement(n.Typography,{component:"span",sx:{color:"inherit",fontSize:"inherit",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",textShadow:"-1px -1px 1px #000, 1px -1px 1px #000, -1px 1px 1px #000, 1px 1px 1px #000",whiteSpace:"nowrap"},variant:"body2"},x)))};TimerBarComponent.displayName="TimerBar",TimerBarComponent.propTypes={countDown:UA.default.bool,direction:UA.default.oneOf(["countup","countdown"]),durationMs:UA.default.number.isRequired,elapsedMs:UA.default.number,id:UA.default.string.isRequired,label:UA.default.string.isRequired,now:UA.default.number.isRequired,running:UA.default.bool,startedAt:UA.default.number,tickIntervalMs:UA.default.number.isRequired};var te=(0,e.memo)(TimerBarComponent);te.displayName="TimerBar",te.propTypes=TimerBarComponent.propTypes;var ne=[],normalizeNumber=g=>{const A=Number(g);return Number.isFinite(A)?A:0},isRunningTimer=g=>!1!==g?.running&&null!=g?.startedAt,getRemainingMs=(g,A)=>{const I=Math.max(0,Math.abs(normalizeNumber(g.durationMs))),C=Math.max(0,normalizeNumber(A)-normalizeNumber(g.startedAt));return Math.max(0,I-C)},getClockState=(g,A)=>{let I=1/0,C=!1;for(const e of g??[])isRunningTimer(e)&&(C=!0,I=Math.min(I,getRemainingMs(e,A)));return{isTicking:C,tickIntervalMs:C&&I<1e4?100:500}},useTimerClock=(g=ne)=>{const[A,I]=(0,e.useState)(()=>Date.now()),{isTicking:C,tickIntervalMs:t}=(0,e.useMemo)(()=>getClockState(g,A),[A,g]);return(0,e.useEffect)(()=>{if(!C)return;const tick=()=>I(Date.now());tick();const g=setInterval(tick,t);return()=>clearInterval(g)},[C,t]),(0,e.useMemo)(()=>({now:A,tickIntervalMs:t,isTicking:C}),[C,A,t])},selectTimerView=({id:g,durationMs:A,startedAt:I,label:C,direction:e,position:t,stayVisible:n,enabled:a,running:r,elapsedMs:o,remainingMs:i})=>({id:g,durationMs:A,startedAt:I,label:C,direction:e,position:t,stayVisible:n,enabled:a,running:r,elapsedMs:o,remainingMs:i}),selectTimersSlice=g=>({timerEntries:g.timers,addTimer:g.addTimer,removeTimer:g.removeTimer,clearAll:g.clearAll}),useTimers=()=>{const{stores:g}=useNexGui(),{timerEntries:A,addTimer:I,removeTimer:C,clearAll:t}=g.timers(useShallow(selectTimersSlice)),n=(0,e.useMemo)(()=>A.map(selectTimerView),[A]);return(0,e.useMemo)(()=>({timers:n,addTimer:I,removeTimer:C,clearAll:t}),[I,t,C,n])},getFlipTransform=g=>{switch(g){case 1:return"scaleX(-1) scaleY(-1)";case 2:return"scaleY(-1)";case 3:return"scaleX(-1)";default:return"none"}},normalizePosition=g=>"bottom"===g?"bottom":"top",partitionTimers=g=>g.reduce((g,A)=>(g[normalizePosition(A.position)].push(A),g),{top:[],bottom:[]}),TimersPanelInner=()=>{const g=(0,a.useTheme)(),{timers:A}=useTimers(),[I]=(0,e.useState)(()=>Math.floor(4*Math.random())),C=g?.nexGui?.backgroundImage??"",t=g?.nexGui?.backgroundOpacity??.5,r=g?.nexGui?.backgroundFilter??"none",{now:o,tickIntervalMs:i}=useTimerClock(A),{top:l,bottom:s}=(0,e.useMemo)(()=>partitionTimers(A),[A]);return React.createElement(n.Box,{className:"timers-panel",sx:{color:"text.primary",fontFamily:g.typography.fontFamily,fontSize:g.typography.fontSize,height:"100%",overflow:"hidden",position:"relative",width:"100%"}},C?React.createElement(n.Box,{"aria-hidden":"true",className:"timers-panel__background",sx:{backgroundImage:`url(${C})`,backgroundPosition:"center",backgroundSize:"cover",filter:r,inset:0,opacity:t,position:"absolute",transform:getFlipTransform(I),zIndex:0}}):null,React.createElement(n.Box,{className:"timers-panel__content","data-testid":"timers-panel",sx:{display:"flex",flexDirection:"column",height:"100%",justifyContent:"space-between",overflowY:"auto",p:1,position:"relative",width:"100%",zIndex:1}},React.createElement(n.Box,{className:"timers-panel__stack timers-panel__stack--top","data-testid":"timers-panel-top",sx:{display:"flex",flexDirection:"column"}},l.map(g=>React.createElement(te,{key:g.id,countDown:g.countDown,direction:g.direction,durationMs:g.durationMs,elapsedMs:g.elapsedMs,id:g.id,label:g.label,now:o,running:g.running,startedAt:g.startedAt,tickIntervalMs:i}))),React.createElement(n.Box,{className:"timers-panel__stack timers-panel__stack--bottom","data-testid":"timers-panel-bottom",sx:{display:"flex",flexDirection:"column"}},s.map(g=>React.createElement(te,{key:g.id,countDown:g.countDown,direction:g.direction,durationMs:g.durationMs,elapsedMs:g.elapsedMs,id:g.id,label:g.label,now:o,running:g.running,startedAt:g.startedAt,tickIntervalMs:i})))))};TimersPanelInner.displayName="TimersPanelInner";var TimersPanel=()=>React.createElement(QA,{panelName:"Timers"},React.createElement(TimersPanelInner,null));TimersPanel.displayName="TimersPanel";var ae=Object.freeze(["nexTimers","nexParty","nexPlayers","nexNpcs","nexItems","nexStats","nexSystem","nexCombat","nexDefences","nexFeed","nexTarget","nexOptions","nexMetrics"]),getTabComponents=()=>({nexTimers:TimersPanel,nexParty:PartyPanel,nexPlayers:PlayersPanel,nexNpcs:NpcsPanel,nexItems:ItemsPanel,nexStats:StatsPanel,nexSystem:SystemStream,nexCombat:CombatStream,nexDefences:DefencesPanel,nexFeed:GameFeed,nexTarget:TargetPanel,nexOptions:OptionsPanel,nexMetrics:MetricsPanel}),getLayout$1=()=>nexusclient.ui().layout(),getStoredLayout=g=>nexusclient._ui?._layout??g,createTabNode=g=>({type:"tab",id:g,name:g,component:g,icon:"feather-pointed",helpText:g}),resolveContextValue=g=>{const A=g??globalThis.nexGui?.__contextValue;if(!A)throw new Error("[nexGui4] initializeTabs requires a NexGuiContext value from the active runtime.");return A},selectThemeTokens=g=>g.tokens,NexusTabRoot=({Component:g,contextValue:A})=>{const I=A.stores.theme(selectThemeTokens),C=e.useMemo(()=>createMuiTheme(I),[I]);return e.createElement(KA.Provider,{value:A},e.createElement(a.StyledEngineProvider,{injectFirst:!0},e.createElement(a.ThemeProvider,{theme:C},e.createElement(n.Box,{className:"nexgui4-panel-root",sx:{display:"flex",flex:1,height:"100%",minHeight:0,minWidth:0,width:"100%"}},e.createElement(g)))))},registerTabFactory=(g,A,I,C)=>{g.nexoverrides[A]=g=>e.createElement(NexusTabRoot,{Component:I,contextValue:C})},generateTabs=({skipIds:g=[]}={})=>{const A=getLayout$1().flexModel,I=A.getNodeById("map");if(!I)return console.warn("[nexGui4] generateTabs(): map node not found in layout model."),[...ae];const C=I.getParent?.()?.getId?.()||"root";return ae.forEach(I=>{g.includes(I)||A.getNodeById(I)||A.doAction({type:"FlexLayout_AddNode",data:{json:createTabNode(I),toNode:C,location:"center"}})}),[...ae]},mountNativeDisplay=({contextValue:g}={})=>{const A=resolveContextValue(g),I=getLayout$1();void 0===I.nexoverrides&&(I.nexoverrides={}),I.nexoverrides.output_main=g=>e.createElement(NexusTabRoot,{Component:MainDisplay,contextValue:A});try{nexusclient.buffer().limit=100}catch{}},unmountNativeDisplay=()=>{const g=getLayout$1();delete g?.nexoverrides?.output_main;try{nexusclient.buffer().limit=0}catch{}},initializeTabs=({contextValue:g}={})=>{const A=resolveContextValue(g),I=getLayout$1(),C=getStoredLayout(I),e=I.flexModel;return void 0===I.get_tab_object_original&&(I.get_tab_object_original=I.get_tab_object),void 0===C.get_tab_object_original&&(C.get_tab_object_original=I.get_tab_object_original),void 0===I.nexoverrides&&(I.nexoverrides={}),Object.entries(getTabComponents()).forEach(([g,C])=>{registerTabFactory(I,g,C,A)}),I.get_tab_object=function(g,A){return this.nexoverrides[g]?this.nexoverrides[g](A):nexusclient._ui._layout.get_tab_object_original(g,A)},e.doAction({data:{tabNode:"map"},type:"FlexLayout_SelectTab"}),I.nexoverrides},re="nexGuiLayout",getLayout=()=>nexusclient.ui().layout(),setModelPreservingGlobal=({layout:g,borders:A})=>{const I=getLayout(),C=I.flexModel.toJson();I.set_model({global:C.global,borders:A,layout:g})},applyLayoutPreset=g=>{const A=getLayoutPreset(g);return!!A&&(setModelPreservingGlobal(A),!0)},saveCurrentLayout=()=>{const g=getLayout().model();return nexusclient.variables().vars[re]={layout:JSON.stringify(g.layout),borders:JSON.stringify(g.borders)},!0},readSavedLayout=()=>{const g=nexusclient.variables?.()?.vars?.[re];if(!g?.layout||!g?.borders)return null;try{return{layout:JSON.parse(g.layout),borders:JSON.parse(g.borders)}}catch{return null}},hasSavedLayout=()=>null!==readSavedLayout(),restoreSavedLayout=()=>{const g=readSavedLayout();return!!g&&(setModelPreservingGlobal(g),!0)},getRawText=g=>g?"function"==typeof g.parsed_line?.text?g.parsed_line.text():"string"==typeof g.line?g.line:"":"",getFormattedHtml=g=>g?"function"==typeof g.parsed_line?.formatted?g.parsed_line.formatted():getRawText(g):"",patchFormatted=(g,A)=>{g?.parsed_line&&"object"==typeof g.parsed_line&&(g.parsed_line.formatted=()=>A)},createIconRenderer=()=>{const g=createMessageReplacementContext();return A=>buildIconHtml(A.id,A.colors,A.size,g.icons.dualTone)},lineContains=(g,A)=>!!getRawText(g).includes(A)||!("string"!=typeof g?.line||!g.line.includes(A)),findBlockIndex=(g,A)=>g.findIndex(g=>lineContains(g,A)),applyRoomReplacements=g=>{if(!Array.isArray(g)||0===g.length)return;const A=findBlockIndex(g,"<RName");if(A<0)return;const I=g[A],C=g[A+1];if(!C)return;const e=getFormattedHtml(C),t=replaceRoomText(e,{iconRenderer:createIconRenderer()});if(t!==e&&patchFormatted(C,t),(getRawText(I)||getFormattedHtml(I)).includes("Flying above"))return;const n=globalThis.nexMap;if(!n?.status?.loaded)return;const a=findBlockIndex(g,"<RExits");if(a<0)return;const r=globalThis.GMCP?.Room?.Info?.num;if(!r)return;const o="function"==typeof n.warpTarget?n.warpTarget(r):null;if(!o)return;const i=createWormholeExitDescriptor({warp:o,currentArea:n.status?.currentArea});if(!i)return;const l=g[a];let s=getFormattedHtml(l);s=s.replace(" and",""),s=s.replace(".",renderWormholeExitHtml(i)),patchFormatted(l,s)},registerEvents=g=>{const A=[];return((g,I,C={})=>{const e=`nexGui4-${g.replace(/\W+/g,"-")}`;eventStream.registerEvent(g,I,{...C,id:e,tags:["nexGui4"]}),A.push({eventName:g,id:e})})("Room.Info",g=>{nexAction.triggers.enable("nexGui4.roomReplacements")}),()=>{A.forEach(({eventName:g,id:A})=>{eventStream.removeListener?.(g,A)})}},safeCall$2=(g,A,...I)=>"function"==typeof g?g.call(A,...I):void 0,getHostLineText=g=>g&&"object"==typeof g?g.parsed_line?safeCall$2(g.parsed_line.text,g.parsed_line)??"":"string"==typeof g.line?g.line:g.html_line&&"string"==typeof g.html_text?stripHtml(g.html_text):"":"",isLikelyPartyName=g=>/^[A-Za-z][A-Za-z'-]*$/.test(g),normalizePartyMembersLine=g=>g.replace(/\.$/,"").split(", ").map(g=>g.trim()).filter(Boolean),extractRealmPartyMembers=(g,A)=>g.map(g=>A?.resolvePlayerNameFromFullname?.(g)).filter(isLikelyPartyName),resolvePlayerRelationships=g=>g?.playerRelationships??getDefaultPlayerRelationshipsModel(),registerTriggers=g=>{const A=resolvePlayerRelationships(g);return nexAction.triggers.add({id:"nexGui4.party.chatGag",regex:/^\(Party\): \w+ says, ".+"$/,tags:["nexGui4"],action:()=>{(g?.stores?.party?.getState?.()??null)?.settings?.gagChat&&(nexusclient.current_line.gag=!0)}}),nexAction.triggers.add({id:"nexGui4.party.memberJoined",regex:/^\(Party\): (\w+) has joined your party\.$/,tags:["nexGui4"],action:A=>{(g?.stores?.party?.getState?.()??null)?.addMember?.(A[1])}}),nexAction.triggers.add({id:"nexGui4.party.memberLeft",regex:/^\(Party\): (\w+) has left your party\.$/,tags:["nexGui4"],action:A=>{(g?.stores?.party?.getState?.()??null)?.removeMember?.(A[1])}}),nexAction.triggers.add({id:"nexGui4.party.listHeader",regex:"Your party has the following members:",tags:["nexGui4"],action:()=>{const A=g?.stores?.party?.getState?.()??null,I=nexusclient.current_block??[],C=I.indexOf(nexusclient.current_line);if(C<0)return;const e=I[C+2],t=getHostLineText(e);A?.updateParty?.(normalizePartyMembersLine(t))}}),nexAction.triggers.add({id:"nexGui4.party.realmsHeader",regex:"The following members of your party are in the realms:",tags:["nexGui4"],action:()=>{const A=g?.stores?.party?.getState?.()??null,I=nexusclient.current_block??[],C=I.indexOf(nexusclient.current_line);if(C<0)return;const e=I.slice(C+1).map(getHostLineText);A?.updateParty?.(extractRealmPartyMembers(e,g?.playerDirectory))}}),nexAction.triggers.add({id:"nexGui4.party.noParty",regex:"You are not the member of any party",tags:["nexGui4"],action:()=>{(g?.stores?.party?.getState?.()??null)?.updateParty?.([])}}),nexAction.triggers.add({id:"nexGui4.party.leftParty",regex:"You have left your party",tags:["nexGui4"],action:()=>{(g?.stores?.party?.getState?.()??null)?.updateParty?.([])}}),nexAction.triggers.add({id:"nexGui4.party.joinedParty",regex:/^You have joined \w+'s party\.$/,tags:["nexGui4"],action:()=>{g?.adapter?.send?.("party members")}}),nexAction.triggers.add({id:"nexGui4.rel.cityEnemiesHeader",regex:/^Enemies of .+ of \w+:$/,tags:["nexGui4"],action:()=>{const g=nexusclient.current_block??[],I=g.indexOf(nexusclient.current_line);if(I<0)return;const C=g[I+1],e=getHostLineText(C).replaceAll(" ","").split(",").map(g=>g.trim()).filter(isLikelyPartyName);A.replaceCityEnemyPlayers(e)}}),nexAction.triggers.add({id:"nexGui4.rel.enemiesHeader",regex:"You have the following enemies:",tags:["nexGui4"],action:()=>{const g=nexusclient.current_block??[],I=g.indexOf(nexusclient.current_line);if(I<0)return;const C=g.slice(I).map(getHostLineText),e=[];for(let A=1;A<C.length-1;A+=1){const g=C[A];g&&!g.includes(" ")&&e.push(g)}A.replaceEnemyPlayers(e.filter(isLikelyPartyName))}}),nexAction.triggers.add({id:"nexGui4.rel.noEnemies",regex:"You have no enemies.",tags:["nexGui4"],action:()=>{A.replaceEnemyPlayers([])}}),nexAction.triggers.add({id:"nexGui4.rel.noEnemiesForgive",regex:"In a moment of forgiveness, you declare that you have no enemies.",tags:["nexGui4"],action:()=>{A.replaceEnemyPlayers([])}}),nexAction.triggers.add({id:"nexGui4.rel.enemyRemoved",regex:/^You declare that (\w+) will no longer be one of your enemies\.$/,tags:["nexGui4"],action:g=>{A.forgetEnemyPlayer(g[1])}}),nexAction.triggers.add({id:"nexGui4.rel.enemyAdded",regex:/^(\w+) is now one of your enemies\.$/,tags:["nexGui4"],action:g=>{A.rememberEnemyPlayer(g[1])}}),nexAction.triggers.add({id:"nexGui4.rel.alliesHeader",regex:"You have the following allies:",tags:["nexGui4"],action:()=>{const g=nexusclient.current_block??[],I=g.indexOf(nexusclient.current_line);if(I<0)return;const C=g.slice(I).map(getHostLineText),e=[];for(let A=1;A<C.length-1;A+=1){const g=C[A];if(!g)continue;if(g.includes("You have"))break;let I;I=g.includes("lust")?g.split(" ")[7]?.trim():g.split(" ")[0]?.trim(),isLikelyPartyName(I)&&e.push(I)}A.replaceAllyPlayers(e)}}),nexAction.triggers.add({id:"nexGui4.rel.allyRemoved",regex:/^You declare that (\w+) will no longer be one of your allies\.$/,tags:["nexGui4"],action:g=>{A.forgetAllyPlayer(g[1])}}),nexAction.triggers.add({id:"nexGui4.rel.allyAdded",regex:/^(\w+) is now one of your allies\.$/,tags:["nexGui4"],action:g=>{A.rememberAllyPlayer(g[1])}}),nexAction.triggers.add({id:"nexGui4.roomReplacements",regex:/^/,tags:["nexGui4"],action:()=>{applyRoomReplacements(nexusclient.current_block??[]),nexAction.triggers.disable("nexGui4.roomReplacements")},enabled:!1}),()=>{nexAction.triggers.remove(["nexGui4"])}},oe="scrollback",ie="__nexGuiInlineHighlightingContext",le="__nexGuiInitialHostBufferSynced",se=null,ce=null,getRuntime=()=>globalThis.nexGui??null,getContextValue=g=>g??getRuntime()?.__contextValue??null,getUiStoreState=g=>g?.stores?.ui?.getState?.()??null,getStreamModel=g=>g?.streamModel??g?.stores?.stream??null,getScrollbackSession=g=>g?.scrollbackSession??null,getUiSettings=g=>g?.persistenceStore?.getAll?.()?.ui??{},formatTimestamp=(g=!1,A=Date.now())=>{const I=new Date(A),C=String(I.getHours()).padStart(2,"0"),e=String(I.getMinutes()).padStart(2,"0"),t=String(I.getSeconds()).padStart(2,"0");return g?`${C}:${e}:${t}.${String(I.getMilliseconds()).padStart(3,"0")}`:`${C}:${e}:${t}`},safeCall$1=(g,A,...I)=>"function"==typeof g?g.call(A,...I):void 0,readRuntimeInlineHighlightingContext=g=>g?.[ie]??g?.__contextValue??null,writeRuntimeInlineHighlightingContext=(g,A)=>{if(!g||"object"!=typeof g)return;const I=readRuntimeInlineHighlightingContext(g);Object.is(I,A)||(I&&I!==A&&clearRelationshipNameFormatterCache(I),Object.prototype.hasOwnProperty.call(g,ie)?g[ie]=A:Object.defineProperty(g,ie,{value:A,writable:!0,enumerable:!1,configurable:!0}))},ensureRuntimeColors=g=>{const A=getRuntime();if(!A)return{inLineHighlighting:A=>applyContextInlineNameHighlighting(A,{contextValue:g})};if(writeRuntimeInlineHighlightingContext(A,g),A.colors&&"function"==typeof A.colors.inLineHighlighting)return A.colors;const I=Object.freeze({inLineHighlighting:g=>applyContextInlineNameHighlighting(g,{contextValue:readRuntimeInlineHighlightingContext(A)})});return Object.defineProperty(A,"colors",{value:I,enumerable:!1,configurable:!0}),I},toArray=g=>Array.isArray(g)?g:[],createExtraBreakLine=()=>({html:"<span> </span>",timestamp:Date.now(),isPrompt:!1,isMonospace:!1,shouldLog:!1,gagged:!1,buffer:"main"}),getCurrentPromptHtml=g=>{const A=getStreamModel(g)?.getSnapshot?.()?.promptLine;return"string"==typeof A?.html?A.html:null},convertHostLine=(g,A="main",I=null)=>{if(!g||"object"!=typeof g)return null;if(g.html_line&&"string"==typeof g.html_text&&g.html_text.length>0)return g.gag&&!g.log?null:{html:g.html_text,timestamp:g.timestamp_ms,isPrompt:!1,isMonospace:!1,shouldLog:Boolean(g.log),gagged:Boolean(g.gag),buffer:A};if(!g.parsed_line)return null;const C=safeCall$1(g.parsed_line.text,g.parsed_line)??"";return!C.length||g.gag&&!g.log?null:(I?.inLineHighlighting(g.parsed_line),{html:safeCall$1(g.parsed_line.formatted,g.parsed_line)??C,timestamp:g.timestamp_ms,isPrompt:Boolean(g.is_prompt),isMonospace:Boolean(g.monospace),shouldLog:Boolean(g.log),gagged:Boolean(g.gag),buffer:A})},convertHostLines=(g,A,I=null,C=null)=>{const e=toArray(g);if(0===e.length)return[];const t=e.map(g=>convertHostLine(g,"main",I)).filter(Boolean);if(0===t.length)return[];if(!t.some(g=>!g.isPrompt)){const g=t[t.length-1];return g&&g.html!==C?t:[]}return A&&t.some(g=>!g.isPrompt&&!g.gagged)?[createExtraBreakLine(),...t]:t},appendConvertedLines=(g,A)=>{Array.isArray(A)&&0!==A.length&&getStreamModel(g)?.addLines?.(A)},hasInitialHostBufferSync=g=>Boolean(g?.[le]),markInitialHostBufferSynced=g=>{g&&"object"==typeof g&&(Object.prototype.hasOwnProperty.call(g,le)?g[le]=!0:Object.defineProperty(g,le,{value:!0,writable:!0,enumerable:!1,configurable:!0}))},syncInitialHostBuffer=(g,A,I=null)=>{if(hasInitialHostBufferSync(g))return;markInitialHostBufferSynced(g);const C=toArray(A?.lines);0!==C.length&&appendConvertedLines(g,convertHostLines(C,Boolean(nexusclient.settings?.().extra_break),I,getCurrentPromptHtml(g)))},getNextStreamSessionId=g=>{const A=getStreamModel(g),I=A?.getStats?.(),C=Number(I?.nextId??I?.sessionTotalLines);if(Number.isFinite(C))return Math.max(0,Math.floor(C));const e=(A?.getSnapshot?.()?.buffer??[]).at(-1)?.id;return Number.isFinite(e)?Math.max(0,Math.floor(e+1)):0},downloadScrollbackSessionSlice=async(g,A)=>{if("undefined"==typeof document||"undefined"==typeof Blob||"undefined"==typeof URL||"function"!=typeof URL.createObjectURL)return;const I=getScrollbackSession(g);if(!I?.readRange)return;const C=getUiSettings(g),e=Boolean(C.virtualizedLogs);let t=[];try{t=await I.readRange(Math.max(0,Math.floor(Number(A)||0)),Number.MAX_SAFE_INTEGER)}catch(n){return void console.error("[nexGui4] Failed reading scrollback log export",n)}0!==t.length&&downloadBuffer(t,e)},undoFooterLayout=()=>{if("undefined"==typeof document)return;const g=document.getElementById("status_vars");g&&["status-target","status-bank","status-gold","status-level","status-ping"].forEach(A=>{const I=document.getElementById(A);I&&g.prepend(I)})},isScrollbackRendererEnabled=()=>!1!==globalThis.nexusclient?.variables?.()?.vars?.nexGuiSettings?.options?.nexGuiRenderer,isScrollbackOpen=g=>getUiStoreState(g)?.modalOpen===oe,openScrollback=g=>getUiStoreState(g)?.openModal?.(oe),closeScrollback=g=>getUiStoreState(g)?.closeModal?.(),saveOriginalMethod=(g,A,I,{nullish:C=!1}={})=>{const e=`${I}_original`,t=Object.prototype.hasOwnProperty.call(A,e);return C?A[e]??=A[I]:void 0===A[e]&&(A[e]=A[I]),g.push(()=>{void 0!==A[e]&&(A[I]=A[e]),t||delete A[e]}),A[e]},removePatches=()=>{se?.(),se=null,ce=null},applyPatches=({contextValue:g}={})=>{const A=ce;if(removePatches(),"undefined"==typeof nexusclient)throw new Error("[nexGui4] applyPatches requires the live nexusclient host.");const I=getContextValue(g);if(!I)throw new Error("[nexGui4] applyPatches requires a live NexGui context value.");A&&A!==I&&clearRelationshipNameFormatterCache(A),ce=I;const C=ensureRuntimeColors(I),e=[],t={logStartSessionId:null},n=nexusclient.ui().layout(),a=nexusclient._ui?._layout??n,r=nexusclient.datahandler(),o=nexusclient.platform(),i=nexusclient.serverapi(),l=nexusclient.log(),s=nexusclient.buffer();syncInitialHostBuffer(I,s,C);const c=Object.prototype.hasOwnProperty.call(r,"handle_GMCP_original"),u=Object.prototype.hasOwnProperty.call(n,"get_tab_object_original"),d=Object.prototype.hasOwnProperty.call(a,"get_tab_object_original"),m=Object.prototype.hasOwnProperty.call(n,"nexoverrides"),p=new Map(ae.filter(g=>Object.prototype.hasOwnProperty.call(n.nexoverrides??{},g)).map(g=>[g,n.nexoverrides[g]]));initializeTabs({contextValue:I}),e.push(()=>{const g=getRuntime();g&&"object"==typeof g&&delete g[ie],void 0!==n.get_tab_object_original&&(n.get_tab_object=n.get_tab_object_original),ae.forEach(g=>{n.nexoverrides&&(p.has(g)?n.nexoverrides[g]=p.get(g):delete n.nexoverrides[g])}),!m&&n.nexoverrides&&0===Object.keys(n.nexoverrides).length&&delete n.nexoverrides,u||delete n.get_tab_object_original,d||delete a.get_tab_object_original});const h=saveOriginalMethod(e,nexusclient,"process_lines");nexusclient.process_lines=function(g){const A=safeCall$1(h,this,g);return this.gagged||appendConvertedLines(I,convertHostLines(g,Boolean(nexusclient.settings?.().extra_break),C,getCurrentPromptHtml(I))),A};const y=saveOriginalMethod(e,nexusclient,"_add_line");nexusclient._add_line=function(g,A){const C=!this.current_block,e=safeCall$1(y,this,g,A);if(!C)return e;appendConvertedLines(I,[convertHostLine(g,A??"main")].filter(Boolean))},"undefined"==typeof nexSys&&(saveOriginalMethod(e,s,"add_block"),s.add_block=function(g){let A=0,I=0;for(let e=0;e<g.length;++e){const C=g[e];C.log&&I++,C.gag||!C.parsed_line&&!C.html_line||(!C.is_prompt||A?(!C.parsed_line||safeCall$1(C.parsed_line.text,C.parsed_line)||0!==A&&e!==g.length-1)&&(safeCall$1(this._fill_tab_completion,this,C),A++,this.lineid++,C.id=this.lineid,this.lines.push(C),this.unread=!0):C.gag=!0)}const C=safeCall$1(this.prune_lines,this);(A||I||C)&&safeCall$1(this.on_lines_changed,this)});const b=saveOriginalMethod(e,l,"enable");l.enable=function(){const g=safeCall$1(b,this),A=getNextStreamSessionId(I);return t.logStartSessionId=Math.max(0,A-100),g};const x=saveOriginalMethod(e,l,"disable");l.disable=function(){const g=safeCall$1(x,this),A=getUiSettings(I);if(null!=t.logStartSessionId||A.logoutDownload){const g=t.logStartSessionId??0;t.logStartSessionId=null,downloadScrollbackSessionSlice(I,g)}return g};const E=saveOriginalMethod(e,i,"on_disconnect");i.on_disconnect=function(){this.__anonymous=!1,this.__game=null,this.__name=null,undoFooterLayout();const g=getUiSettings(I);if(null!=t.logStartSessionId||g.logoutDownload){const g=t.logStartSessionId??0;t.logStartSessionId=null,downloadScrollbackSessionSlice(I,g)}return safeCall$1(E,this)},saveOriginalMethod(e,o,"on_key_down",{nullish:!0}),o.on_key_down=function(g,A,C,e){return C&&e&&76===g||33===g&&isScrollbackRendererEnabled()&&!isScrollbackOpen(I)?(openScrollback(I),!0):(27===g&&closeScrollback(I),safeCall$1(this.on_key_down_original,this,g,A,C,e))},void 0===r.handle_GMCP_original&&(r.handle_GMCP_original=r.handle_GMCP),e.push(()=>{void 0!==r.handle_GMCP_original&&(r.handle_GMCP=r.handle_GMCP_original,c||delete r.handle_GMCP_original)}),r.handle_GMCP=function(g,A){if("Comm.Channel.Text"===g){const g="string"==typeof A?(()=>{try{return JSON.parse(A)}catch{return null}})():A;if("says"===g?.channel&&"string"==typeof g.talker&&g.talker.indexOf(" ")>-1&&-1===g.talker.indexOf("Discord"))return;if(g?.talker===globalThis.GMCP?.Char?.Status?.name&&"string"==typeof g.text&&g.text.includes("Duanathar."))return}return safeCall$1(this.handle_GMCP_original,this,g,A)};const v=saveOriginalMethod(e,n,"write_channel");n.write_channel=function(g,A){if(!A||"function"!=typeof this.channel_id_from_cmd||"function"!=typeof this.channel_record)return safeCall$1(v,this,g,A);ensureRuntimeColors(I).inLineHighlighting(A);const C=Date.now(),e=[{parsed_line:A,timestamp_ms:formatTimestamp(!0,C),timestamp:formatTimestamp(!1,C)}],t=this.channel_id_from_cmd(g),n=this.channel_record(t);if(n)try{n.buffer.add_block(e)}catch{}try{this._nexus.comm_buffer().add_block(e)}catch{}};const R=registerTriggers(I),w=registerEvents(I);return e.push(R),e.push(w),se=()=>{for(;e.length>0;)e.pop()?.();ce=null,se=null},removePatches},installGlobalNexGui=g=>(globalThis.nexGui?.destroy?.(),globalThis.nexGui=g,g),ue="nexgui4-styles",de=new Map,getStyleElement=()=>{if("undefined"==typeof document||"function"!=typeof document.getElementById||!document.head)return null;const g=document.getElementById(ue);if(g)return g;const A=document.createElement("style");return A.id=ue,document.head.appendChild(A),A},registerNexguiStyles=(g,A)=>{if(!g||"string"!=typeof A)return;const I=getStyleElement();I&&(de.set(g,A.trim()),I.textContent=Array.from(de.values()).filter(Boolean).join("\n\n"))},me="replacement-base",pe=GA.replacement,toDamageSlug=g=>g.toLowerCase().replace(/\s+/g,"-"),buildCatalogRules=()=>[".ng-skill-default { color: orange; }",Object.entries(Mg).map(([g,A])=>`.ng-skill-${g} { color: ${A}; }`).join("\n"),".ng-action-default { color: grey; }",Object.entries(Tg).map(([g,A])=>`.ng-action-${g} { color: ${A.fg}; }`).join("\n"),".ng-dmg-unknown { color: grey; }",Object.entries(wg).map(([g,A])=>`.ng-dmg-${toDamageSlug(g)} { color: ${A}; }`).join("\n"),".ng-muted { color: grey; }",".ng-npc-bracket { color: red; font-weight: bold; }",".ng-crit-separator { color: white; }",".ng-dmg-bracket { color: #808080; }",".ng-hp-loss { color: tomato; }",".ng-info-text { color: cadetblue; font-style: italic; }"].filter(Boolean).join("\n"),he=`\n/* nexGui4 replacement visual primitives — injected by replacementStyles.js */\n.ng-brkt { font-weight: bold; }\n.ng-brkt-ally { color: ${pe.bracketAllyColor}; }\n.ng-brkt-enemy { color: ${pe.bracketEnemyColor}; }\n.ng-italic { font-style: italic; }\n.ng-target-format {\n box-decoration-break: clone;\n -webkit-box-decoration-break: clone;\n box-shadow: inset 0 0 0 1px ${pe.targetBorderColor};\n padding: 0 2px;\n position: relative;\n z-index: 1;\n}\n.ng-icon-fill-1 { fill: var(--ng-fill-1); }\n.ng-icon-fill-2 { fill: var(--ng-fill-2); }\n\n/* Legacy message replacement row classes retained for compatibility. */\n.ng-seg { display: table-cell; color: #aaa; }\n.ng-msgline { display: inline-table; width: calc(100% - 15ch); }\n.ng-w-0 { width: 0; }\n.ng-w-5 { width: 5%; }\n.ng-w-30 { width: 30%; }\n.ng-w-35 { width: 35%; }\n\n/* Flex layout for structured skill replacement rows */\n.nexgui4-replacement-row {\n display: inline-flex;\n width: 100%; /* calc(100% - 15ch); account for timestamp */\n min-width: 0;\n overflow: hidden;\n vertical-align: top;\n}\n.nexgui4-replacement-row__buffer {\n flex: 0 0 5%;\n}\n.nexgui4-replacement-row__actor {\n flex: 0 0 30%;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.nexgui4-replacement-row__action {\n flex: 0 0 35%;\n}\n.nexgui4-replacement-row__target {\n flex: 1;\n min-width: 0;\n}\n\n/* Panel-specific stream overrides */\n.nexgui4-combat-stream .nexgui4-replacement-row__buffer {\n display: none;\n}\n\n${buildCatalogRules()}\n`.trim(),injectReplacementBaseStyles=()=>{registerNexguiStyles(me,he)},ye="transcript-viewport",fe="\n/* nexGui4 transcript viewport primitives. */\n.nexgui4-transcript-scroll-viewport {\n flex: 1;\n min-height: 0;\n overflow-anchor: none;\n overflow-y: auto;\n position: relative;\n margin: 5px;\n}\n\n.nexgui4-transcript-scroll-viewport--display {\n -ms-overflow-style: none;\n scrollbar-width: none;\n}\n\n.nexgui4-transcript-scroll-viewport--display::-webkit-scrollbar {\n display: none;\n}\n\n.nexgui4-transcript-spacer {\n width: 100%;\n}\n\n.nexgui4-transcript-spacer--display {\n box-sizing: border-box;\n}\n\n.nexgui4-transcript-spacer--panel {\n position: relative;\n}\n\n.nexgui4-transcript-row {\n width: 100%;\n}\n\n.nexgui4-transcript-row--panel {\n left: 0;\n position: absolute;\n top: 0;\n}\n\n.nexgui4-virtual-scroll-line {\n contain: layout style paint;\n display: block;\n font-family: inherit;\n min-width: 0;\n}\n\n.nexgui4-virtual-scroll-line.nexguilog {\n display: block !important;\n}\n\n.nexgui4-virtual-scroll-line--indented {\n padding-left: 13ch;\n text-indent: -13ch;\n}\n\n.nexgui4-main-display-timestamp.timestamp,\n.nexgui4-scrollback-timestamp.timestamp,\n.nexgui4-structured-stream-panel__timestamp.timestamp {\n display: inline !important;\n}\n\n.nexgui4-virtual-scroll-line__payload {\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n}\n\n/* Gagged-but-logged lines never appear on the live display; in scrollback they\n are dimmed and italicised so reviewers can tell they were suppressed live. */\n.nexgui4-virtual-scroll-line--gagged {\n font-style: italic;\n opacity: 0.6;\n}\n\n.nexgui4-prompt-line {\n position: static;\n width: 100%;\n}\n".trim(),injectTranscriptStyles=()=>{registerNexguiStyles(ye,fe)},be={"shield-halved":[512,512,["shield-alt"],"f3ed",["M256 0c.2 0 .5 0 .7 0c4.6 0 9.2 1 13.4 2.9L458.4 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-8.3 4-17.4 6-26.4 6V0H256z","M256.7 0c-.2 0-.5 0-.7 0c-4.6 0-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c8.3 4 17.4 6 26.4 6V0h.7z"]],"shield-cross":[512,512,[9960],"f712",["M224 10.8L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c0 6.4 .2 13 .6 20H192c17.7 0 32-14.3 32-32V10.8zM24.7 224C43.7 319.9 97.4 437.2 224 500.4V256c0-17.7-14.3-32-32-32H24.7zM288 500.4C414.6 437.2 468.3 319.9 487.3 224H320c-17.7 0-32 14.3-32 32V500.4zM495.4 160c.4-7 .6-13.7 .6-20c.1-26.2-16.3-47.9-38.3-57.2L288 10.8V128c0 17.7 14.3 32 32 32H495.4z","M288 10.8L269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L224 10.8V128c0 17.7-14.3 32-32 32H16.6c1.1 19.4 3.6 41.1 8.1 64H192c17.7 0 32 14.3 32 32V500.4c1.9 .9 3.7 1.8 5.6 2.7c16.7 8 36.1 8 52.8 0c1.9-.9 3.8-1.8 5.6-2.7V256c0-17.7 14.3-32 32-32H487.3c4.5-22.9 7.1-44.6 8.1-64H320c-17.7 0-32-14.3-32-32V10.8z"]],tree:[448,512,[127794],"f1bb",["M210.6 5.9L62 169.4c-3.9 4.2-6 9.8-6 15.5C56 197.7 66.3 208 79.1 208H104L30.6 281.4c-4.2 4.2-6.6 10-6.6 16C24 309.9 34.1 320 46.6 320H80L5.4 409.5C1.9 413.7 0 419 0 424.5c0 13 10.5 23.5 23.5 23.5H192V224c0-17.7 14.3-32 32-32s32 14.3 32 32V448H424.5c13 0 23.5-10.5 23.5-23.5c0-5.5-1.9-10.8-5.4-15L368 320h33.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L344 208h24.9c12.7 0 23.1-10.3 23.1-23.1c0-5.7-2.1-11.3-6-15.5L237.4 5.9C234 2.1 229.1 0 224 0s-10 2.1-13.4 5.9z","M224 192c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32z"]],droplet:[384,512,[128167,"tint"],"f043",["M192 512C86 512 0 426 0 320C0 228.8 130.2 57.7 166.6 11.7C172.6 4.2 181.5 0 191.1 0h1.8c9.6 0 18.5 4.2 24.5 11.7C253.8 57.7 384 228.8 384 320c0 106-86 192-192 192zM96 336c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 61.9 50.1 112 112 112c8.8 0 16-7.2 16-16s-7.2-16-16-16c-44.2 0-80-35.8-80-80z","M80 320c8.8 0 16 7.2 16 16c0 44.2 35.8 80 80 80c8.8 0 16 7.2 16 16s-7.2 16-16 16c-61.9 0-112-50.1-112-112c0-8.8 7.2-16 16-16z"]],tombstone:[448,512,[],"f720",["M224 0C118 0 32 86 32 192V448H416V192C416 86 330 0 224 0zm24 152v40h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H248V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V240H152c-13.3 0-24-10.7-24-24s10.7-24 24-24h48V152c0-13.3 10.7-24 24-24s24 10.7 24 24z","M248 152c0-13.3-10.7-24-24-24s-24 10.7-24 24v40H152c-13.3 0-24 10.7-24 24s10.7 24 24 24h48V360c0 13.3 10.7 24 24 24s24-10.7 24-24V240h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H248V152zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z"]],feather:[512,512,[129718],"f52d",["M97.9 448h84c49.7 0 97.9-14.4 139-41c11.1-7.2 5.5-23-7.8-23c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l81-24.3c2.5-.8 4.8-2.1 6.7-4l22.4-22.4c10.1-10.1 2.9-27.3-11.3-27.3l-32.2 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l112-33.6c4-1.2 7.4-3.9 9.3-7.7C506.4 207.6 512 184.1 512 160c0-41-16.3-80.3-45.3-109.3l-5.5-5.5C432.3 16.3 393 0 352 0s-80.3 16.3-109.3 45.3L139 149C91 197 64 262.1 64 330v84L311 167c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L97.9 448z","M24 512c-6.2 0-12.3-2.3-17-7c-9.4-9.4-9.4-24.6 0-33.9L311 167c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L41 505c-4.7 4.7-10.8 7-17 7z"]],"fish-fins":[576,512,[],"e4f2",["M182 150.4C221.3 120.9 273.7 96 336 96s114.7 24.9 154 54.4c39.2 29.4 67.2 64.7 81.6 89.5c5.8 9.9 5.8 22.2 0 32.1c-14.4 24.8-42.5 60.1-81.6 89.5C450.7 391.1 398.3 416 336 416s-114.7-24.9-154-54.4c-15.3-11.5-29-23.9-40.7-36.3L48.1 379.6c-12.5 7.3-28.4 5.3-38.7-4.9S-3 348.7 4.2 336.1L50 256 4.2 175.9c-7.2-12.6-5-28.4 5.3-38.6s26.1-12.2 38.7-4.9l93.1 54.3c11.8-12.3 25.4-24.8 40.7-36.3zM448 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z","M238.9 36.9C227.7 44 222 57.3 224.6 70.3l9.7 48.6C264.1 105.1 298.2 96 336 96c5.7 0 11.3 .2 16.8 .6L275.2 38.4c-10.6-8-25-8.5-36.3-1.5zm-4.6 356.2l-9.7 48.6c-2.6 13 3.1 26.3 14.3 33.3s25.6 6.5 36.3-1.5l77.6-58.2c-5.5 .4-11.1 .6-16.8 .6c-37.8 0-71.9-9.1-101.7-22.9z"]]},xe="host-surface",Ee="character_module_class",ve="100%",Re="15%",we="\nhtml { -webkit-font-smoothing: subpixel-antialiased; }\n.flexlayout__splitter { background-color: grey; }\n.flexlayout__tab { background-color: #000 !important; }\n.output { padding: 5px; }\n.nexguilog { display: none; }\n\n.ng-timestamp { margin-right: 1ch; }\n\n.ng-virtual-list {\n background: black;\n width: 100%;\n overflow-y: auto;\n contain: strict;\n padding-bottom: 0;\n}\n\n.ng-virtual-list--border { border-bottom: 1px solid #ccc; }\n\n.ng-virtual-anchor {\n overflow-anchor: none;\n width: 100%;\n color: white;\n white-space: pre-wrap;\n word-wrap: break-word;\n}\n\n.ng-ListItem { contain: layout inline-size; }\n\n.nexgui4-tab-container {\n isolation: isolate;\n overflow: hidden;\n position: relative;\n}\n\n.nexgui4-tab-container__background {\n inset: 0;\n pointer-events: none;\n position: absolute;\n z-index: 0;\n}\n\n.nexgui4-tab-container__surface,\n.nexgui4-tab-container__tabs,\n.nexgui4-tab-container__tabpanel {\n position: relative;\n z-index: 1;\n}\n".trim(),injectHostStyles=()=>{registerNexguiStyles(xe,we)},setClassBalanceIconReadyState=g=>{if("undefined"==typeof document)return;const A=document.getElementById(Ee);A&&(A.style.opacity=!0===g?ve:!1===g?Re:"")},bindClassBalanceIcon=({characterStore:g}={})=>{if(!g||"function"!=typeof g.getState||"function"!=typeof g.subscribe)return()=>{};const sync=(A=g.getState())=>{setClassBalanceIconReadyState(A?.classBalanceReady??null)};return sync(),g.subscribe(g=>{sync(g)})},injectFontAwesomeIcons=()=>{"undefined"!=typeof window&&window.___FONT_AWESOME___?.styles?.fad&&Object.assign(window.___FONT_AWESOME___.styles.fad,be)},Se=300,Me=null,forceFooterHostElementsVisible=g=>{g?.setHostSetting?.("show_gauges",!0),g?.setHostSetting?.("show_balances",!0)},applyFooterLayout=()=>{if("undefined"==typeof document)return;const g=document.getElementsByClassName("bottom_view")[0];g&&(g.style.padding="0px",g.children[2]&&(g.children[2].style.margin="0px"));const A=document.getElementById("status_vars");if(A){for(let I=0;I<A.children.length;I++)Object.assign(A.children[I].style,{fontSize:"14.4px",marginTop:"auto",marginBottom:"auto",verticalAlign:"middle"});Object.assign(A.style,{justifyContent:"flex-start",alignItems:"center",marginTop:0,marginBottom:0});const g=document.getElementById("component_balances");g&&(A.prepend(g),g.style.minWidth="50px",g.style.marginTop="5px",g.style.gap="2px")}const I=document.getElementById("extra_icons");I&&(Object.assign(I.style,{display:"flex",justifyContent:"end",gap:"10px"}),["status-bank","status-gold","status-level","status-ping"].forEach(g=>{const A=document.getElementById(g);A&&I.prepend(A)}));const C=document.getElementById("status-ping");C&&(C.style.minWidth="57px");const e=document.getElementById("left_icons");if(e){Object.assign(e.style,{minWidth:"300px",maxWidth:"500px"}),e.children[0]&&(e.children[0].style.visibility="hidden",e.children[0].style.width="0px");const g=document.getElementById("status-target");g&&(e.prepend(g),g.style.fontSize="12px",g.style.fontWeight="bold")}const t=document.getElementById("footer");if(t&&I){const g=document.getElementById("gauges");if(g){t.insertBefore(g,I),Object.assign(g.style,{display:"flex",transform:"scaleY(0.85)",minWidth:0,flexGrow:100,alignItems:"center"});for(const A of g.children)A.children[1]&&(A.children[1].style.fontSize="12px"),A.style.flexGrow=1}}document.getElementById(Ee)?.remove();const n=document.createElement("div");n.id=Ee,n.className="balance class-balance",n.style.flexGrow="1",n.innerHTML=`<svg aria-hidden="true" focusable="false" data-prefix="fad" data-icon="hourglass" class="svg-inline--fa fa-star fa-w-18" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" color="#33FFD4" style="font-size: 20px;"><g class="fa-group"><path class="fa-secondary" fill="currentColor" d="${window.___FONT_AWESOME___?.styles?.fa?.hourglass?.[4]??""}"></path><path class="fa-primary" fill="currentColor" d=""></path></g></svg>`,document.getElementById("component_balances")?.appendChild(n),document.getElementById("balance_balance")?.setAttribute("style","flex-grow: 1"),document.getElementById("balance_equilibrium")?.setAttribute("style","flex-grow: 1")},configureFlexLayout=()=>{if("undefined"==typeof nexusclient)return;const g=nexusclient.ui().layout(),A=g.model()?.global??{},I="boolean"!=typeof A.tabSetEnableTabStrip||A.tabSetEnableTabStrip;g.flexModel.doAction({type:"FlexLayout_UpdateModelAttributes",data:{json:{splitterSize:2,tabSetEnableTabStrip:I,tabEnableClose:!1,tabSetEnableMaximize:!1,borderEnableAutoHide:!0,borderEnableDrop:!0}}}),["right","left","top","bottom"].forEach(A=>{g.model().borders.find(g=>g.location===A)||g.model().borders.push({type:"border",location:A,children:[]})});const borderLeaveEvent=()=>{Me&&(document.getElementsByClassName("MuiPopover-root MuiMenu-root MuiModal-root").length||g.flexModel.doAction({type:"FlexLayout_SelectTab",data:{tabNode:Me}}))},C=document.getElementsByClassName("flexlayout__tab_border_right");for(let t=0;t<C.length;t++)C[t].addEventListener("mouseleave",borderLeaveEvent);const borderMouseOverEvent=A=>{const I=A.target.title;I&&(g.flexModel.getNodeById(I)?.isVisible()||(Me=I,g.flexModel.doAction({type:"FlexLayout_SelectTab",data:{tabNode:Me}})))},e=document.getElementsByClassName("flexlayout__border_button_right");for(let t=0;t<e.length;t++){const A=e[t];A.addEventListener("mouseenter",borderMouseOverEvent);const I=g.model().borders[0]?.children.find(g=>g.id===A.title);I&&I.borderWidth<Se&&(I.borderWidth=Se)}},Te="nexGui4",Ne="https://unpkg.com/nexgui4/dist/nexGui4.nxs",Ge="khaseem",ke=1e4,De=[{key:"classCustomizations",names:["nexGui.classCustomizations","classCustomizations"]},{key:"userSettings",names:["nexGui.userSettings","userSettings","userCustomizations"]}],je=new Set(De.flatMap(({names:g})=>g.map(g=>g.toLowerCase()))),toLowerName=g=>String(g??"").trim().toLowerCase(),clonePackageItem=g=>{if(!g||"object"!=typeof g)return null;if("function"==typeof structuredClone)try{return structuredClone(g)}catch{}try{return JSON.parse(JSON.stringify(g))}catch{return g}},safeCall=g=>{try{return g()}catch{return null}},getReflexes=g=>safeCall(()=>g?.reflexes?.())??null,getPackageRegistry=g=>{const A=safeCall(()=>g?.packages?.());if("function"==typeof A?.get)return A;const I=safeCall(()=>getReflexes(g)?.packages?.());return"function"==typeof I?.get?I:null},getNexGuiPackage=(g,A=Te)=>safeCall(()=>getPackageRegistry(g)?.get(A))??null,findPackageItemByNames=(g,A)=>{if(!Array.isArray(g))return null;const I=new Set(A.map(toLowerName));return g.find(g=>I.has(toLowerName(g?.name)))??null},captureCustomizationGroups=g=>De.map(({key:A,names:I})=>{const C=findPackageItemByNames(g?.items,I);return C?{key:A,names:I,data:clonePackageItem(C)}:null}).filter(Boolean),applyCustomizationGroup=(g,A,I)=>{const C=findPackageItemByNames(g?.items,A.names);return!(!C||!A.data||("function"==typeof C.apply?(C.apply(A.data,I),0):"object"!=typeof C||"object"!=typeof A.data||(Object.assign(C,clonePackageItem(A.data)),0)))},enableRuntimePackageGroups=g=>{Array.isArray(g?.items)&&g.items.filter(g=>"group"===g?.type&&!je.has(toLowerName(g.name))).forEach(g=>{g.enabled=!0})},reportUpdateError=({adapter:g,consoleObj:A,message:I,nexusClient:C})=>{A.error(I),"function"!=typeof g?.notice?"function"!=typeof C?.display?C?.display_notice?.(I,"red"):C.display(I):g.notice(I,"red")},createAbortSignal=({AbortControllerCtor:g,setTimeoutFn:A,timeoutMs:I})=>{if(!g||I<=0)return{signal:void 0,timeout:null};const C=new g,e=A(()=>C.abort(),I);return{signal:C.signal,timeout:e}},updateNxs=async({adapter:g=null,clearTimeoutFn:A=clearTimeout,consoleObj:I=console,fetchFn:C=globalThis.fetch,nexusClient:e=globalThis.nexusclient,packageName:t=Te,setTimeoutFn:n=setTimeout,skipCharacterName:a=Ge,timeoutMs:r=ke,url:o=Ne}={})=>{if(toLowerName(e?.charname)===toLowerName(a))return null;const i=getPackageRegistry(e);if(!i)return null;let l=null;try{if("function"!=typeof C)throw new Error("fetch is not available.");const g=i.get(t);if(!g||"function"!=typeof g.apply)throw new Error(`${t} package is not installed in Nexus.`);const A=captureCustomizationGroups(g),{signal:I,timeout:a}=createAbortSignal({AbortControllerCtor:globalThis.AbortController,setTimeoutFn:n,timeoutMs:r});l=a;const s=await C(o,{cache:"no-store",...I?{signal:I}:{}});if(!s?.ok)throw new Error(`${t} update failed: ${s?.status??"unknown"} ${s?.statusText??""}`.trim());const c=await s.json(),u=getReflexes(e),d=getNexGuiPackage(e,t);d.apply(c,u);const m=getNexGuiPackage(e,t)??d;return A.forEach(g=>{applyCustomizationGroup(m,g,u)}),enableRuntimePackageGroups(m),c}catch(s){return reportUpdateError({adapter:g,consoleObj:I,message:"AbortError"===s?.name?`${t} update timed out. Check your connection.`:`${t} update error: ${s?.message??String(s)}`,nexusClient:e}),null}finally{null!==l&&A(l)}},Pe="https://api.achaea.com/gamefeed.json",Be=5e3,normalizeFetchedEntries=g=>Array.isArray(g)?g.filter(Boolean):[],parseTimestamp=g=>{if("string"!=typeof g||0===g.trim().length)return;const A=g.trim(),I=A.match(/^(\d{4})-(\d{2})-(\d{2})[ T](\d{2}):(\d{2}):(\d{2})$/);if(I){const[,g,A,C,e,t,n]=I;return Date.UTC(Number(g),Number(A)-1,Number(C),Number(e),Number(t),Number(n),0)}const C=A.includes("T")?A:A.replace(" ","T"),e=/(?:Z|[+-]\d{2}:?\d{2})$/i.test(C),t=Date.parse(e?C:`${C}Z`);return Number.isFinite(t)?t:void 0},toStoreEntry=g=>({content:g.description??g.caption??null,id:g.id??void 0,timestamp:parseTimestamp(g.date)}),mapEntries=g=>g.map(g=>toStoreEntry(g)),applySnapshot=(g,A)=>{const I=g?.getState?.();if(!I)return;const C=mapEntries(A);if("function"!=typeof I.replaceEntries){I.clear();for(const g of C)I.addEntry(g)}else I.replaceEntries(C)},appendEntries=(g,A)=>{const I=g?.getState?.();if(!I)return;const C=mapEntries(A);if("function"!=typeof I.addEntries)for(const e of C)I.addEntry(e);else I.addEntries(C)},createGameFeedPoller=({feedStore:g,fetchFn:A=null,setIntervalFn:I=null,clearIntervalFn:C=null,intervalMs:e=Be,url:t=Pe})=>{let n=null,a=null,r=!1,o=null;const syncFromRemote=async()=>{if("function"!=typeof A)return[];try{const I=await A(t,{cache:"no-store"});if(!I?.ok)return[];const C=normalizeFetchedEntries(await I.json());if(!r||0===C.length)return C;const e=C.at(-1)?.id??null;if(null==e)return applySnapshot(g,C),C;if(null==o)return applySnapshot(g,C),o=e,C;if(e===o)return[];const n=C.findIndex(g=>g?.id===o);return n<0?applySnapshot(g,C):appendEntries(g,C.slice(n+1)),o=e,C}catch{return[]}},pollOnce=()=>a||(a=syncFromRemote().finally(()=>{a=null}),a);return{start:()=>{r||(r=!0,pollOnce(),"function"==typeof I&&(n=I(()=>{pollOnce()},e)))},stop:()=>{r=!1,null!==n&&"function"==typeof C&&(C(n),n=null)},pollOnce}},Oe="https://2a9fwzdazf.execute-api.us-east-2.amazonaws.com/nexGui/cdb",Le="zr1te94RPZ4yaMJCc6j134eAxDsCpkmm48py1GaD",resolveRemoteService=({remoteService:g,remotePlayerService:A,fetchFn:I}={})=>{if(g)return g;const C=A??{apiUrl:Oe,apiKey:Le};return createLambdaRemotePlayerService({...C,fetchFn:C.fetchFn??I})},bootstrapNexus=(g={})=>{const{adapter:A,autoStart:I,startupPhaseHandlers:C,remoteService:e,remotePlayerService:t,feedPollingEnabled:n=!0,runtimePorts:a,...r}=g,o=a??createBrowserRuntimePorts(),i=createNexusAdapter(),l=resolveRemoteService({remoteService:e,remotePlayerService:t,fetchFn:o.fetch});let s,c=!1,u=!1,d=!1,m=!1,p=!1,h=!1,y=!1,b=null,removeLivePatches=()=>{},removeClassBalanceBinding=()=>{},removeNetflixModeController=()=>{},removeNativeDisplayCommands=()=>{},removeLayoutCommands=()=>{};const ensureFeedPoller=()=>n?(b??=createGameFeedPoller({feedStore:s.stores.feed,fetchFn:o.fetch,setIntervalFn:o.setInterval,clearIntervalFn:o.clearInterval}),b):null;return s=createNexGui({adapter:i,autoStart:!1,remoteService:l,startupPhaseHandlers:{[eA.BOOTING]:async()=>{const g=updateNxs({adapter:i,fetchFn:o.fetch,setTimeoutFn:o.setTimeout,clearTimeoutFn:o.clearTimeout});injectHostStyles(),injectTranscriptStyles(),injectReplacementBaseStyles(),injectFontAwesomeIcons();const A=s.__contextValue,I=A?.persistenceStore?.get("ui")?.nativeDisplay??!1;if(c||(generateTabs(),c=!0),u||(forceFooterHostElementsVisible(i),configureFlexLayout(),applyFooterLayout(),u=!0),m||(removeClassBalanceBinding=bindClassBalanceIcon({characterStore:s.stores.character}),m=!0),p||(removeNetflixModeController=createNetflixModeController({adapter:i,uiStore:s.stores.ui,characterStore:s.stores.character}),p=!0),d||(removeLivePatches=applyPatches({contextValue:A}),d=!0,I&&A.platformTabs.mountNativeDisplay()),!h){const g=i.destroy.bind(i);i.destroy=()=>{b?.stop(),removeNativeDisplayCommands(),removeLayoutCommands(),removeClassBalanceBinding(),m=!1,removeNetflixModeController(),p=!1,d&&(removeLivePatches(),d=!1),g()},h=!0}y||(i.send("stat"),i.send("pwho"),i.send("enemies"),i.send("allies"),i.send("city enemies"),i.send("date"),i.send("ql"),y=!0),A.playerDirectoryLifecycle.warmDirectoryFromCache(),A.playerDirectoryLifecycle.refreshDirectoryFromRemote(l),ensureFeedPoller()?.start(),await g}},runtimePorts:o,...r}),removeNativeDisplayCommands=s.__contextValue.platformTabs.configureNativeDisplayCommands({mountNativeDisplay:()=>mountNativeDisplay({contextValue:s.__contextValue}),unmountNativeDisplay:()=>{unmountNativeDisplay()}}),removeLayoutCommands=s.__contextValue.platformTabs.configureLayoutCommands({applyLayoutPreset,saveLayout:saveCurrentLayout,restoreLayout:restoreSavedLayout,hasSavedLayout}),installGlobalNexGui(s),s.__start().catch(()=>{}).then(()=>{emitStartupReadySignal(i),runNexGuiClassReflexForCurrentHostClass()}),s},createMockAdapter=({playerRelationships:g}={})=>{const A=[],I=[],C=new Map,e=new Map,t={echo_input:!1,echo_gmcp:!1,show_prompts:!0,show_timestamps:!1},n={tabSetEnableTabStrip:!1};let a=0,r=0;const getListenerBucket=g=>(e.has(g)||e.set(g,new Map),e.get(g)),resolveListenerId=(g,A={})=>A.id??"listener-"+ ++r,removeListener=(g,A)=>{const I=e.get(g);if(!I)return!1;if("string"==typeof A)return I.delete(A);for(const[C,e]of I.entries())if(e.handler===A)return I.delete(C),!0;return!1},o=assertAdapterContract({send:I=>{g?.trackRelationshipCommand?.(I),A.push(I)},sendGmcp:(g,I)=>A.push({gmcp:g,data:I}),getVariable:g=>C.get(g),setVariable:(g,A)=>C.set(g,A),getTarget:()=>C.get("_target")??null,setTarget:g=>C.set("_target",g),notice:()=>{},displayHtmlLine:g=>{I.push(String(g))},getHostSettings:()=>t,setHostSetting:(g,A)=>{t[g]=A},getHostLayoutSnapshot:()=>n,updateHostLayoutAttributes:g=>{Object.assign(n,g)},focusInput:()=>{},getConfiguredDefences:()=>[],getActiveDefences:()=>[],gagCurrentBlock:()=>{a+=1},on:(g,A,I)=>{const C=resolveListenerId(A,I);return getListenerBucket(g).set(C,{handler:A,once:Boolean(I?.once)}),()=>removeListener(g,C)},off:(g,A)=>removeListener(g,A),destroy:()=>{e.clear()}});return o._test={getSentCommands:()=>[...A],clearCommands:()=>{A.length=0},getGaggedBlockCount:()=>a,getDisplayedLines:()=>[...I],triggerEvent:(g,A)=>{const I=e.get(g);if(I)for(const[C,e]of[...I.entries()])e.handler(A),e.once&&I.delete(C)},setVariable:(g,A)=>C.set(g,A)},o},bootstrapPlayground=(g={})=>{const{feedPollingEnabled:A=!0,startupPhaseHandlers:I={},runtimePorts:C,...e}=g,t=C??createBrowserRuntimePorts(),n=createMockAdapter();let a,r=null;const ensureFeedPoller=()=>A?(r??=createGameFeedPoller({feedStore:a.stores.feed,fetchFn:t.fetch,setIntervalFn:t.setInterval,clearIntervalFn:t.clearInterval}),r):null;a=createNexGui({adapter:n,runtimePorts:t,startupPhaseHandlers:{...I,[eA.BOOTING]:async g=>{await(I[eA.BOOTING]?.(g)),injectTranscriptStyles(),ensureFeedPoller()?.start()}},...e});const o=a.destroy.bind(a);return a.destroy=()=>{r?.stop(),o()},a},ze=Object.freeze({NexGuiContext:KA,applyInlineNameHighlighting,createMuiTheme,createReplacementDescriptor,generateReplacementHtml,injectReplacementBaseStyles,isRoomNpcItem,nexGuiIcons:be,panels:Object.freeze({CombatStream,DefencesPanel,GameFeed,ItemsPanel,MainDisplay,MetricsPanel,NpcsPanel,OptionsPanel,PartyPanel,PlayersPanel,StatsPanel,SystemStream,TargetPanel,TimersPanel})});g.TOPICS=R,g.bootstrapNexus=bootstrapNexus,g.bootstrapPlayground=bootstrapPlayground,g.composePublicApi=composePublicApi,g.createMockAdapter=createMockAdapter,g.createNexGui=createNexGui,g.createNexusAdapter=createNexusAdapter,g.defaultTokens=GA,g.playground=ze,g.updateNxs=updateNxs}(globalThis.nexGui=globalThis.nexGui||{},nexRuntime.immer,nexRuntime.zustand,nexRuntime.zod,React,ReactDOM,nexRuntime.mui,nexRuntime.muiStyles,nexRuntime.tanstackReactVirtual);
|