diff --git a/API Server/internal/api/dist/assets/index-B3oSnK0w.js b/API Server/internal/api/dist/assets/index-B3oSnK0w.js new file mode 100644 index 0000000..ed85f6d --- /dev/null +++ b/API Server/internal/api/dist/assets/index-B3oSnK0w.js @@ -0,0 +1,17 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const i of o)if(i.type==="childList")for(const l of i.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&s(l)}).observe(document,{childList:!0,subtree:!0});function n(o){const i={};return o.integrity&&(i.integrity=o.integrity),o.referrerPolicy&&(i.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?i.credentials="include":o.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function s(o){if(o.ep)return;o.ep=!0;const i=n(o);fetch(o.href,i)}})();/** +* @vue/shared v3.5.39 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Is(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const oe={},Wt=[],rt=()=>{},Bo=()=>!1,Zn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Xn=e=>e.startsWith("onUpdate:"),Ae=Object.assign,Rs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},al=Object.prototype.hasOwnProperty,ee=(e,t)=>al.call(e,t),B=Array.isArray,Jt=e=>wn(e)==="[object Map]",en=e=>wn(e)==="[object Set]",oo=e=>wn(e)==="[object Date]",V=e=>typeof e=="function",ae=e=>typeof e=="string",at=e=>typeof e=="symbol",se=e=>e!==null&&typeof e=="object",$o=e=>(se(e)||V(e))&&V(e.then)&&V(e.catch),jo=Object.prototype.toString,wn=e=>jo.call(e),cl=e=>wn(e).slice(8,-1),Vo=e=>wn(e)==="[object Object]",Fs=e=>ae(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,cn=Is(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Qn=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},ul=/-\w/g,Je=Qn(e=>e.replace(ul,t=>t.slice(1).toUpperCase())),dl=/\B([A-Z])/g,At=Qn(e=>e.replace(dl,"-$1").toLowerCase()),Ho=Qn(e=>e.charAt(0).toUpperCase()+e.slice(1)),us=Qn(e=>e?`on${Ho(e)}`:""),lt=(e,t)=>!Object.is(e,t),Bn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},es=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let io;const ts=()=>io||(io=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ns(e){if(B(e)){const t={};for(let n=0;n{if(n){const s=n.split(pl);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Ne(e){let t="";if(ae(e))t=e;else if(B(e))for(let n=0;n_t(n,t))}const zo=e=>!!(e&&e.__v_isRef===!0),O=e=>ae(e)?e:e==null?"":B(e)||se(e)&&(e.toString===jo||!V(e.toString))?zo(e)?O(e.value):JSON.stringify(e,Wo,2):String(e),Wo=(e,t)=>zo(t)?Wo(e,t.value):Jt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,o],i)=>(n[ds(s,i)+" =>"]=o,n),{})}:en(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>ds(n))}:at(t)?ds(t):se(t)&&!B(t)&&!Vo(t)?String(t):t,ds=(e,t="")=>{var n;return at(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.39 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let ge;class xl{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&ge&&(ge.active?(this.parent=ge,this.index=(ge.scopes||(ge.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0){if(ge===this)ge=this.prevScope;else{let t=ge;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(dn){let t=dn;for(dn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;un;){let t=un;for(un=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function Zo(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Xo(e){let t,n=e.depsTail,s=n;for(;s;){const o=s.prevDep;s.version===-1?(s===n&&(n=o),$s(s),_l(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=o}e.deps=t,e.depsTail=n}function _s(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Qo(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Qo(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===bn)||(e.globalVersion=bn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!_s(e))))return;e.flags|=2;const t=e.dep,n=le,s=qe;le=e,qe=!0;try{Zo(e);const o=e.fn(e._value);(t.version===0||lt(o,e._value))&&(e.flags|=128,e._value=o,t.version++)}catch(o){throw t.version++,o}finally{le=n,qe=s,Xo(e),e.flags&=-3}}function $s(e,t=!1){const{dep:n,prevSub:s,nextSub:o}=e;if(s&&(s.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)$s(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function _l(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let qe=!0;const ei=[];function ct(){ei.push(qe),qe=!1}function ut(){const e=ei.pop();qe=e===void 0?!0:e}function lo(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=le;le=void 0;try{t()}finally{le=n}}}let bn=0;class wl{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class js{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!le||!qe||le===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==le)n=this.activeLink=new wl(le,this),le.deps?(n.prevDep=le.depsTail,le.depsTail.nextDep=n,le.depsTail=n):le.deps=le.depsTail=n,ti(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=le.depsTail,n.nextDep=void 0,le.depsTail.nextDep=n,le.depsTail=n,le.deps===n&&(le.deps=s)}return n}trigger(t){this.version++,bn++,this.notify(t)}notify(t){Ds();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Bs()}}}function ti(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)ti(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const ws=new WeakMap,It=Symbol(""),Ss=Symbol(""),gn=Symbol("");function _e(e,t,n){if(qe&&le){let s=ws.get(e);s||ws.set(e,s=new Map);let o=s.get(n);o||(s.set(n,o=new js),o.map=s,o.key=n),o.track()}}function mt(e,t,n,s,o,i){const l=ws.get(e);if(!l){bn++;return}const r=u=>{u&&u.trigger()};if(Ds(),t==="clear")l.forEach(r);else{const u=B(e),b=u&&Fs(n);if(u&&n==="length"){const h=Number(s);l.forEach((y,U)=>{(U==="length"||U===gn||!at(U)&&U>=h)&&r(y)})}else switch((n!==void 0||l.has(void 0))&&r(l.get(n)),b&&r(l.get(gn)),t){case"add":u?b&&r(l.get("length")):(r(l.get(It)),Jt(e)&&r(l.get(Ss)));break;case"delete":u||(r(l.get(It)),Jt(e)&&r(l.get(Ss)));break;case"set":Jt(e)&&r(l.get(It));break}}Bs()}function Ht(e){const t=Q(e);return t===e?t:(_e(t,"iterate",gn),Ge(e)?t:t.map(Ye))}function ns(e){return _e(e=Q(e),"iterate",gn),e}function ot(e,t){return vt(e)?Zt(Rt(e)?Ye(t):t):Ye(t)}const Sl={__proto__:null,[Symbol.iterator](){return ps(this,Symbol.iterator,e=>ot(this,e))},concat(...e){return Ht(this).concat(...e.map(t=>B(t)?Ht(t):t))},entries(){return ps(this,"entries",e=>(e[1]=ot(this,e[1]),e))},every(e,t){return ft(this,"every",e,t,void 0,arguments)},filter(e,t){return ft(this,"filter",e,t,n=>n.map(s=>ot(this,s)),arguments)},find(e,t){return ft(this,"find",e,t,n=>ot(this,n),arguments)},findIndex(e,t){return ft(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return ft(this,"findLast",e,t,n=>ot(this,n),arguments)},findLastIndex(e,t){return ft(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return ft(this,"forEach",e,t,void 0,arguments)},includes(...e){return hs(this,"includes",e)},indexOf(...e){return hs(this,"indexOf",e)},join(e){return Ht(this).join(e)},lastIndexOf(...e){return hs(this,"lastIndexOf",e)},map(e,t){return ft(this,"map",e,t,void 0,arguments)},pop(){return tn(this,"pop")},push(...e){return tn(this,"push",e)},reduce(e,...t){return ro(this,"reduce",e,t)},reduceRight(e,...t){return ro(this,"reduceRight",e,t)},shift(){return tn(this,"shift")},some(e,t){return ft(this,"some",e,t,void 0,arguments)},splice(...e){return tn(this,"splice",e)},toReversed(){return Ht(this).toReversed()},toSorted(e){return Ht(this).toSorted(e)},toSpliced(...e){return Ht(this).toSpliced(...e)},unshift(...e){return tn(this,"unshift",e)},values(){return ps(this,"values",e=>ot(this,e))}};function ps(e,t,n){const s=ns(e),o=s[t]();return s!==e&&!Ge(e)&&(o._next=o.next,o.next=()=>{const i=o._next();return i.done||(i.value=n(i.value)),i}),o}const Al=Array.prototype;function ft(e,t,n,s,o,i){const l=ns(e),r=l!==e&&!Ge(e),u=l[t];if(u!==Al[t]){const y=u.apply(e,i);return r?Ye(y):y}let b=n;l!==e&&(r?b=function(y,U){return n.call(this,ot(e,y),U,e)}:n.length>2&&(b=function(y,U){return n.call(this,y,U,e)}));const h=u.call(l,b,s);return r&&o?o(h):h}function ro(e,t,n,s){const o=ns(e),i=o!==e&&!Ge(e);let l=n,r=!1;o!==e&&(i?(r=s.length===0,l=function(b,h,y){return r&&(r=!1,b=ot(e,b)),n.call(this,b,ot(e,h),y,e)}):n.length>3&&(l=function(b,h,y){return n.call(this,b,h,y,e)}));const u=o[t](l,...s);return r?ot(e,u):u}function hs(e,t,n){const s=Q(e);_e(s,"iterate",gn);const o=s[t](...n);return(o===-1||o===!1)&&Gs(n[0])?(n[0]=Q(n[0]),s[t](...n)):o}function tn(e,t,n=[]){ct(),Ds();const s=Q(e)[t].apply(e,n);return Bs(),ut(),s}const Cl=Is("__proto__,__v_isRef,__isVue"),ni=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(at));function El(e){at(e)||(e=String(e));const t=Q(this);return _e(t,"has",e),t.hasOwnProperty(e)}class si{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const o=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(o?i?Nl:ri:i?li:ii).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const l=B(t);if(!o){let u;if(l&&(u=Sl[n]))return u;if(n==="hasOwnProperty")return El}const r=Reflect.get(t,n,Se(t)?t:s);if((at(n)?ni.has(n):Cl(n))||(o||_e(t,"get",n),i))return r;if(Se(r)){const u=l&&Fs(n)?r:r.value;return o&&se(u)?Cs(u):u}return se(r)?o?Cs(r):Hs(r):r}}class oi extends si{constructor(t=!1){super(!1,t)}set(t,n,s,o){let i=t[n];const l=B(t)&&Fs(n);if(!this._isShallow){const b=vt(i);if(!Ge(s)&&!vt(s)&&(i=Q(i),s=Q(s)),!l&&Se(i)&&!Se(s))return b||(i.value=s),!0}const r=l?Number(n)e,Rn=e=>Reflect.getPrototypeOf(e);function Ul(e,t,n){return function(...s){const o=this.__v_raw,i=Q(o),l=Jt(i),r=e==="entries"||e===Symbol.iterator&&l,u=e==="keys"&&l,b=o[e](...s),h=n?As:t?Zt:Ye;return!t&&_e(i,"iterate",u?Ss:It),Ae(Object.create(b),{next(){const{value:y,done:U}=b.next();return U?{value:y,done:U}:{value:r?[h(y[0]),h(y[1])]:h(y),done:U}}})}}function Fn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Ml(e,t){const n={get(o){const i=this.__v_raw,l=Q(i),r=Q(o);e||(lt(o,r)&&_e(l,"get",o),_e(l,"get",r));const{has:u}=Rn(l),b=t?As:e?Zt:Ye;if(u.call(l,o))return b(i.get(o));if(u.call(l,r))return b(i.get(r));i!==l&&i.get(o)},get size(){const o=this.__v_raw;return!e&&_e(Q(o),"iterate",It),o.size},has(o){const i=this.__v_raw,l=Q(i),r=Q(o);return e||(lt(o,r)&&_e(l,"has",o),_e(l,"has",r)),o===r?i.has(o):i.has(o)||i.has(r)},forEach(o,i){const l=this,r=l.__v_raw,u=Q(r),b=t?As:e?Zt:Ye;return!e&&_e(u,"iterate",It),r.forEach((h,y)=>o.call(i,b(h),b(y),l))}};return Ae(n,e?{add:Fn("add"),set:Fn("set"),delete:Fn("delete"),clear:Fn("clear")}:{add(o){const i=Q(this),l=Rn(i),r=Q(o),u=!t&&!Ge(o)&&!vt(o)?r:o;return l.has.call(i,u)||lt(o,u)&&l.has.call(i,o)||lt(r,u)&&l.has.call(i,r)||(i.add(u),mt(i,"add",u,u)),this},set(o,i){!t&&!Ge(i)&&!vt(i)&&(i=Q(i));const l=Q(this),{has:r,get:u}=Rn(l);let b=r.call(l,o);b||(o=Q(o),b=r.call(l,o));const h=u.call(l,o);return l.set(o,i),b?lt(i,h)&&mt(l,"set",o,i):mt(l,"add",o,i),this},delete(o){const i=Q(this),{has:l,get:r}=Rn(i);let u=l.call(i,o);u||(o=Q(o),u=l.call(i,o)),r&&r.call(i,o);const b=i.delete(o);return u&&mt(i,"delete",o,void 0),b},clear(){const o=Q(this),i=o.size!==0,l=o.clear();return i&&mt(o,"clear",void 0,void 0),l}}),["keys","values","entries",Symbol.iterator].forEach(o=>{n[o]=Ul(o,e,t)}),n}function Vs(e,t){const n=Ml(e,t);return(s,o,i)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?s:Reflect.get(ee(n,o)&&o in s?n:s,o,i)}const Il={get:Vs(!1,!1)},Rl={get:Vs(!1,!0)},Fl={get:Vs(!0,!1)};const ii=new WeakMap,li=new WeakMap,ri=new WeakMap,Nl=new WeakMap;function Ll(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Hs(e){return vt(e)?e:Ks(e,!1,Tl,Il,ii)}function Dl(e){return Ks(e,!1,Ol,Rl,li)}function Cs(e){return Ks(e,!0,Pl,Fl,ri)}function Ks(e,t,n,s,o){if(!se(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const i=o.get(e);if(i)return i;const l=Ll(cl(e));if(l===0)return e;const r=new Proxy(e,l===2?s:n);return o.set(e,r),r}function Rt(e){return vt(e)?Rt(e.__v_raw):!!(e&&e.__v_isReactive)}function vt(e){return!!(e&&e.__v_isReadonly)}function Ge(e){return!!(e&&e.__v_isShallow)}function Gs(e){return e?!!e.__v_raw:!1}function Q(e){const t=e&&e.__v_raw;return t?Q(t):e}function Bl(e){return!ee(e,"__v_skip")&&Object.isExtensible(e)&&Ko(e,"__v_skip",!0),e}const Ye=e=>se(e)?Hs(e):e,Zt=e=>se(e)?Cs(e):e;function Se(e){return e?e.__v_isRef===!0:!1}function L(e){return $l(e,!1)}function $l(e,t){return Se(e)?e:new jl(e,t)}class jl{constructor(t,n){this.dep=new js,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:Q(t),this._value=n?t:Ye(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Ge(t)||vt(t);t=s?t:Q(t),lt(t,n)&&(this._rawValue=t,this._value=s?t:Ye(t),this.dep.trigger())}}function ln(e){return Se(e)?e.value:e}const Vl={get:(e,t,n)=>t==="__v_raw"?e:ln(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const o=e[t];return Se(o)&&!Se(n)?(o.value=n,!0):Reflect.set(e,t,n,s)}};function ai(e){return Rt(e)?e:new Proxy(e,Vl)}class Hl{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new js(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=bn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&le!==this)return Yo(this,!0),!0}get value(){const t=this.dep.track();return Qo(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Kl(e,t,n=!1){let s,o;return V(e)?s=e:(s=e.get,o=e.set),new Hl(s,o,n)}const Nn={},Hn=new WeakMap;let Mt;function Gl(e,t=!1,n=Mt){if(n){let s=Hn.get(n);s||Hn.set(n,s=[]),s.push(e)}}function zl(e,t,n=oe){const{immediate:s,deep:o,once:i,scheduler:l,augmentJob:r,call:u}=n,b=N=>o?N:Ge(N)||o===!1||o===0?bt(N,1):bt(N);let h,y,U,M,J=!1,I=!1;if(Se(e)?(y=()=>e.value,J=Ge(e)):Rt(e)?(y=()=>b(e),J=!0):B(e)?(I=!0,J=e.some(N=>Rt(N)||Ge(N)),y=()=>e.map(N=>{if(Se(N))return N.value;if(Rt(N))return b(N);if(V(N))return u?u(N,2):N()})):V(e)?t?y=u?()=>u(e,2):e:y=()=>{if(U){ct();try{U()}finally{ut()}}const N=Mt;Mt=h;try{return u?u(e,3,[M]):e(M)}finally{Mt=N}}:y=rt,t&&o){const N=y,K=o===!0?1/0:o;y=()=>bt(N(),K)}const G=yl(),Y=()=>{h.stop(),G&&G.active&&Rs(G.effects,h)};if(i&&t){const N=t;t=(...K)=>{const Me=N(...K);return Y(),Me}}let j=I?new Array(e.length).fill(Nn):Nn;const Z=N=>{if(!(!(h.flags&1)||!h.dirty&&!N))if(t){const K=h.run();if(N||o||J||(I?K.some((Me,De)=>lt(Me,j[De])):lt(K,j))){U&&U();const Me=Mt;Mt=h;try{const De=[K,j===Nn?void 0:I&&j[0]===Nn?[]:j,M];j=K,u?u(t,3,De):t(...De)}finally{Mt=Me}}}else h.run()};return r&&r(Z),h=new Jo(y),h.scheduler=l?()=>l(Z,!1):Z,M=N=>Gl(N,!1,h),U=h.onStop=()=>{const N=Hn.get(h);if(N){if(u)u(N,4);else for(const K of N)K();Hn.delete(h)}},t?s?Z(!0):j=h.run():l?l(Z.bind(null,!0),!0):h.run(),Y.pause=h.pause.bind(h),Y.resume=h.resume.bind(h),Y.stop=Y,Y}function bt(e,t=1/0,n){if(t<=0||!se(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,Se(e))bt(e.value,t,n);else if(B(e))for(let s=0;s{bt(s,t,n)});else if(Vo(e)){for(const s in e)bt(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&bt(e[s],t,n)}return e}/** +* @vue/runtime-core v3.5.39 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Sn(e,t,n,s){try{return s?e(...s):e()}catch(o){ss(o,t,n)}}function Ze(e,t,n,s){if(V(e)){const o=Sn(e,t,n,s);return o&&$o(o)&&o.catch(i=>{ss(i,t,n)}),o}if(B(e)){const o=[];for(let i=0;i>>1,o=Te[s],i=vn(o);i=vn(n)?Te.push(e):Te.splice(Jl(t),0,e),e.flags|=1,di()}}function di(){Kn||(Kn=ci.then(pi))}function ql(e){B(e)?qt.push(...e):yt&&e.id===-1?yt.splice(Gt+1,0,e):e.flags&1||(qt.push(e),e.flags|=1),di()}function ao(e,t,n=st+1){for(;nvn(n)-vn(s));if(qt.length=0,yt){yt.push(...t);return}for(yt=t,Gt=0;Gte.id==null?e.flags&2?-1:1/0:e.id;function pi(e){try{for(st=0;st{s._d&&yo(-1);const i=Gn(t);let l;try{l=e(...o)}finally{Gn(i),s._d&&yo(1)}return l};return s._n=!0,s._c=!0,s._d=!0,s}function ie(e,t){if(Ke===null)return e;const n=rs(Ke),s=e.dirs||(e.dirs=[]);for(let o=0;o1)return n&&V(t)?t.call(s&&s.proxy):t}}const Xl=Symbol.for("v-scx"),Ql=()=>$n(Xl);function ms(e,t,n){return mi(e,t,n)}function mi(e,t,n=oe){const{immediate:s,deep:o,flush:i,once:l}=n,r=Ae({},n),u=t&&s||!t&&i!=="post";let b;if(yn){if(i==="sync"){const M=Ql();b=M.__watcherHandles||(M.__watcherHandles=[])}else if(!u){const M=()=>{};return M.stop=rt,M.resume=rt,M.pause=rt,M}}const h=Pe;r.call=(M,J,I)=>Ze(M,h,J,I);let y=!1;i==="post"?r.scheduler=M=>{Ue(M,h&&h.suspense)}:i!=="sync"&&(y=!0,r.scheduler=(M,J)=>{J?M():zs(M)}),r.augmentJob=M=>{t&&(M.flags|=4),y&&(M.flags|=2,h&&(M.id=h.uid,M.i=h))};const U=zl(e,t,r);return yn&&(b?b.push(U):u&&U()),U}function er(e,t,n){const s=this.proxy,o=ae(e)?e.includes(".")?bi(s,e):()=>s[e]:e.bind(s,s);let i;V(t)?i=t:(i=t.handler,n=t);const l=An(this),r=mi(o,i.bind(s),n);return l(),r}function bi(e,t){const n=t.split(".");return()=>{let s=e;for(let o=0;oe.__isTeleport,bs=Symbol("_leaveCb");function Ws(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Ws(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function gi(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function co(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const zn=new WeakMap;function fn(e,t,n,s,o=!1){if(B(e)){e.forEach((I,G)=>fn(I,t&&(B(t)?t[G]:t),n,s,o));return}if(pn(s)&&!o){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&fn(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?rs(s.component):s.el,l=o?null:i,{i:r,r:u}=e,b=t&&t.r,h=r.refs===oe?r.refs={}:r.refs,y=r.setupState,U=Q(y),M=y===oe?Bo:I=>co(h,I)?!1:ee(U,I),J=(I,G)=>!(G&&co(h,G));if(b!=null&&b!==u){if(uo(t),ae(b))h[b]=null,M(b)&&(y[b]=null);else if(Se(b)){const I=t;J(b,I.k)&&(b.value=null),I.k&&(h[I.k]=null)}}if(V(u)){ct();try{Sn(u,r,12,[l,h])}finally{ut()}}else{const I=ae(u),G=Se(u);if(I||G){const Y=()=>{if(e.f){const j=I?M(u)?y[u]:h[u]:J()||!e.k?u.value:h[e.k];if(o)B(j)&&Rs(j,i);else if(B(j))j.includes(i)||j.push(i);else if(I)h[u]=[i],M(u)&&(y[u]=h[u]);else{const Z=[i];J(u,e.k)&&(u.value=Z),e.k&&(h[e.k]=Z)}}else I?(h[u]=l,M(u)&&(y[u]=l)):G&&(J(u,e.k)&&(u.value=l),e.k&&(h[e.k]=l))};if(l){const j=()=>{Y(),zn.delete(e)};j.id=-1,zn.set(e,j),Ue(j,n)}else uo(e),Y()}}}function uo(e){const t=zn.get(e);t&&(t.flags|=8,zn.delete(e))}ts().requestIdleCallback;ts().cancelIdleCallback;const pn=e=>!!e.type.__asyncLoader,vi=e=>e.type.__isKeepAlive;function sr(e,t){xi(e,"a",t)}function or(e,t){xi(e,"da",t)}function xi(e,t,n=Pe){const s=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(os(t,s,n),n){let o=n.parent;for(;o&&o.parent;)vi(o.parent.vnode)&&ir(s,t,n,o),o=o.parent}}function ir(e,t,n,s){const o=os(t,e,s,!0);Js(()=>{Rs(s[t],o)},n)}function os(e,t,n=Pe,s=!1){if(n){const o=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...l)=>{ct();const r=An(n),u=Ze(t,n,e,l);return r(),ut(),u});return s?o.unshift(i):o.push(i),i}}const xt=e=>(t,n=Pe)=>{(!yn||e==="sp")&&os(e,(...s)=>t(...s),n)},lr=xt("bm"),yi=xt("m"),rr=xt("bu"),ar=xt("u"),cr=xt("bum"),Js=xt("um"),ur=xt("sp"),dr=xt("rtg"),fr=xt("rtc");function pr(e,t=Pe){os("ec",e,t)}const hr=Symbol.for("v-ndc");function he(e,t,n,s){let o;const i=n,l=B(e);if(l||ae(e)){const r=l&&Rt(e);let u=!1,b=!1;r&&(u=!Ge(e),b=vt(e),e=ns(e)),o=new Array(e.length);for(let h=0,y=e.length;ht(r,u,void 0,i));else{const r=Object.keys(e);o=new Array(r.length);for(let u=0,b=r.length;ue?ji(e)?rs(e):Es(e.parent):null,hn=Ae(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Es(e.parent),$root:e=>Es(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>wi(e),$forceUpdate:e=>e.f||(e.f=()=>{zs(e.update)}),$nextTick:e=>e.n||(e.n=ui.bind(e.proxy)),$watch:e=>er.bind(e)}),gs=(e,t)=>e!==oe&&!e.__isScriptSetup&&ee(e,t),mr={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:o,props:i,accessCache:l,type:r,appContext:u}=e;if(t[0]!=="$"){const U=l[t];if(U!==void 0)switch(U){case 1:return s[t];case 2:return o[t];case 4:return n[t];case 3:return i[t]}else{if(gs(s,t))return l[t]=1,s[t];if(o!==oe&&ee(o,t))return l[t]=2,o[t];if(ee(i,t))return l[t]=3,i[t];if(n!==oe&&ee(n,t))return l[t]=4,n[t];ks&&(l[t]=0)}}const b=hn[t];let h,y;if(b)return t==="$attrs"&&_e(e.attrs,"get",""),b(e);if((h=r.__cssModules)&&(h=h[t]))return h;if(n!==oe&&ee(n,t))return l[t]=4,n[t];if(y=u.config.globalProperties,ee(y,t))return y[t]},set({_:e},t,n){const{data:s,setupState:o,ctx:i}=e;return gs(o,t)?(o[t]=n,!0):s!==oe&&ee(s,t)?(s[t]=n,!0):ee(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:o,props:i,type:l}},r){let u;return!!(n[r]||e!==oe&&r[0]!=="$"&&ee(e,r)||gs(t,r)||ee(i,r)||ee(s,r)||ee(hn,r)||ee(o.config.globalProperties,r)||(u=l.__cssModules)&&u[r])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ee(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function fo(e){return B(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let ks=!0;function br(e){const t=wi(e),n=e.proxy,s=e.ctx;ks=!1,t.beforeCreate&&po(t.beforeCreate,e,"bc");const{data:o,computed:i,methods:l,watch:r,provide:u,inject:b,created:h,beforeMount:y,mounted:U,beforeUpdate:M,updated:J,activated:I,deactivated:G,beforeDestroy:Y,beforeUnmount:j,destroyed:Z,unmounted:N,render:K,renderTracked:Me,renderTriggered:De,errorCaptured:Xe,serverPrefetch:Be,expose:Oe,inheritAttrs:de,components:Qe,directives:Ce,filters:ve}=t;if(b&&gr(b,s,null),l)for(const ne in l){const q=l[ne];V(q)&&(s[ne]=q.bind(n))}if(o){const ne=o.call(n,n);se(ne)&&(e.data=Hs(ne))}if(ks=!0,i)for(const ne in i){const q=i[ne],et=V(q)?q.bind(n,n):V(q.get)?q.get.bind(n,n):rt,Nt=!V(q)&&V(q.set)?q.set.bind(n):rt,me=Us({get:et,set:Nt});Object.defineProperty(s,ne,{enumerable:!0,configurable:!0,get:()=>me.value,set:pe=>me.value=pe})}if(r)for(const ne in r)_i(r[ne],s,n,ne);if(u){const ne=V(u)?u.call(n):u;Reflect.ownKeys(ne).forEach(q=>{Zl(q,ne[q])})}h&&po(h,e,"c");function fe(ne,q){B(q)?q.forEach(et=>ne(et.bind(n))):q&&ne(q.bind(n))}if(fe(lr,y),fe(yi,U),fe(rr,M),fe(ar,J),fe(sr,I),fe(or,G),fe(pr,Xe),fe(fr,Me),fe(dr,De),fe(cr,j),fe(Js,N),fe(ur,Be),B(Oe))if(Oe.length){const ne=e.exposed||(e.exposed={});Oe.forEach(q=>{Object.defineProperty(ne,q,{get:()=>n[q],set:et=>n[q]=et,enumerable:!0})})}else e.exposed||(e.exposed={});K&&e.render===rt&&(e.render=K),de!=null&&(e.inheritAttrs=de),Qe&&(e.components=Qe),Ce&&(e.directives=Ce),Be&&gi(e)}function gr(e,t,n=rt){B(e)&&(e=Ts(e));for(const s in e){const o=e[s];let i;se(o)?"default"in o?i=$n(o.from||s,o.default,!0):i=$n(o.from||s):i=$n(o),Se(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:l=>i.value=l}):t[s]=i}}function po(e,t,n){Ze(B(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function _i(e,t,n,s){let o=s.includes(".")?bi(n,s):()=>n[s];if(ae(e)){const i=t[e];V(i)&&ms(o,i)}else if(V(e))ms(o,e.bind(n));else if(se(e))if(B(e))e.forEach(i=>_i(i,t,n,s));else{const i=V(e.handler)?e.handler.bind(n):t[e.handler];V(i)&&ms(o,i,e)}}function wi(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:o,optionsCache:i,config:{optionMergeStrategies:l}}=e.appContext,r=i.get(t);let u;return r?u=r:!o.length&&!n&&!s?u=t:(u={},o.length&&o.forEach(b=>Wn(u,b,l,!0)),Wn(u,t,l)),se(t)&&i.set(t,u),u}function Wn(e,t,n,s=!1){const{mixins:o,extends:i}=t;i&&Wn(e,i,n,!0),o&&o.forEach(l=>Wn(e,l,n,!0));for(const l in t)if(!(s&&l==="expose")){const r=vr[l]||n&&n[l];e[l]=r?r(e[l],t[l]):t[l]}return e}const vr={data:ho,props:mo,emits:mo,methods:rn,computed:rn,beforeCreate:ke,created:ke,beforeMount:ke,mounted:ke,beforeUpdate:ke,updated:ke,beforeDestroy:ke,beforeUnmount:ke,destroyed:ke,unmounted:ke,activated:ke,deactivated:ke,errorCaptured:ke,serverPrefetch:ke,components:rn,directives:rn,watch:yr,provide:ho,inject:xr};function ho(e,t){return t?e?function(){return Ae(V(e)?e.call(this,this):e,V(t)?t.call(this,this):t)}:t:e}function xr(e,t){return rn(Ts(e),Ts(t))}function Ts(e){if(B(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Je(t)}Modifiers`]||e[`${At(t)}Modifiers`];function Ar(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||oe;let o=n;const i=t.startsWith("update:"),l=i&&Sr(s,t.slice(7));l&&(l.trim&&(o=n.map(h=>ae(h)?h.trim():h)),l.number&&(o=n.map(es)));let r,u=s[r=us(t)]||s[r=us(Je(t))];!u&&i&&(u=s[r=us(At(t))]),u&&Ze(u,e,6,o);const b=s[r+"Once"];if(b){if(!e.emitted)e.emitted={};else if(e.emitted[r])return;e.emitted[r]=!0,Ze(b,e,6,o)}}const Cr=new WeakMap;function Ai(e,t,n=!1){const s=n?Cr:t.emitsCache,o=s.get(e);if(o!==void 0)return o;const i=e.emits;let l={},r=!1;if(!V(e)){const u=b=>{const h=Ai(b,t,!0);h&&(r=!0,Ae(l,h))};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}return!i&&!r?(se(e)&&s.set(e,null),null):(B(i)?i.forEach(u=>l[u]=null):Ae(l,i),se(e)&&s.set(e,l),l)}function is(e,t){return!e||!Zn(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),ee(e,t[0].toLowerCase()+t.slice(1))||ee(e,At(t))||ee(e,t))}function bo(e){const{type:t,vnode:n,proxy:s,withProxy:o,propsOptions:[i],slots:l,attrs:r,emit:u,render:b,renderCache:h,props:y,data:U,setupState:M,ctx:J,inheritAttrs:I}=e,G=Gn(e);let Y,j;try{if(n.shapeFlag&4){const N=o||s,K=N;Y=it(b.call(K,N,h,y,M,U,J)),j=r}else{const N=t;Y=it(N.length>1?N(y,{attrs:r,slots:l,emit:u}):N(y,null)),j=t.props?r:Er(r)}}catch(N){mn.length=0,ss(N,e,1),Y=we(wt)}let Z=Y;if(j&&I!==!1){const N=Object.keys(j),{shapeFlag:K}=Z;N.length&&K&7&&(i&&N.some(Xn)&&(j=kr(j,i)),Z=Xt(Z,j,!1,!0))}return n.dirs&&(Z=Xt(Z,null,!1,!0),Z.dirs=Z.dirs?Z.dirs.concat(n.dirs):n.dirs),n.transition&&Ws(Z,n.transition),Y=Z,Gn(G),Y}const Er=e=>{let t;for(const n in e)(n==="class"||n==="style"||Zn(n))&&((t||(t={}))[n]=e[n]);return t},kr=(e,t)=>{const n={};for(const s in e)(!Xn(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Tr(e,t,n){const{props:s,children:o,component:i}=e,{props:l,children:r,patchFlag:u}=t,b=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&u>=0){if(u&1024)return!0;if(u&16)return s?go(s,l,b):!!l;if(u&8){const h=t.dynamicProps;for(let y=0;yObject.create(Ei),Ti=e=>Object.getPrototypeOf(e)===Ei;function Or(e,t,n,s=!1){const o={},i=ki();e.propsDefaults=Object.create(null),Pi(e,t,o,i);for(const l in e.propsOptions[0])l in o||(o[l]=void 0);n?e.props=s?o:Dl(o):e.type.props?e.props=o:e.props=i,e.attrs=i}function Ur(e,t,n,s){const{props:o,attrs:i,vnode:{patchFlag:l}}=e,r=Q(o),[u]=e.propsOptions;let b=!1;if((s||l>0)&&!(l&16)){if(l&8){const h=e.vnode.dynamicProps;for(let y=0;y{u=!0;const[U,M]=Oi(y,t,!0);Ae(l,U),M&&r.push(...M)};!n&&t.mixins.length&&t.mixins.forEach(h),e.extends&&h(e.extends),e.mixins&&e.mixins.forEach(h)}if(!i&&!u)return se(e)&&s.set(e,Wt),Wt;if(B(i))for(let h=0;he==="_"||e==="_ctx"||e==="$stable",Ys=e=>B(e)?e.map(it):[it(e)],Ir=(e,t,n)=>{if(t._n)return t;const s=Yl((...o)=>Ys(t(...o)),n);return s._c=!1,s},Ui=(e,t,n)=>{const s=e._ctx;for(const o in e){if(qs(o))continue;const i=e[o];if(V(i))t[o]=Ir(o,i,s);else if(i!=null){const l=Ys(i);t[o]=()=>l}}},Mi=(e,t)=>{const n=Ys(t);e.slots.default=()=>n},Ii=(e,t,n)=>{for(const s in t)(n||!qs(s))&&(e[s]=t[s])},Rr=(e,t,n)=>{const s=e.slots=ki();if(e.vnode.shapeFlag&32){const o=t._;o?(Ii(s,t,n),n&&Ko(s,"_",o,!0)):Ui(t,s)}else t&&Mi(e,t)},Fr=(e,t,n)=>{const{vnode:s,slots:o}=e;let i=!0,l=oe;if(s.shapeFlag&32){const r=t._;r?n&&r===1?i=!1:Ii(o,t,n):(i=!t.$stable,Ui(t,o)),l=t}else t&&(Mi(e,t),l={default:1});if(i)for(const r in o)!qs(r)&&l[r]==null&&delete o[r]},Ue=$r;function Nr(e){return Lr(e)}function Lr(e,t){const n=ts();n.__VUE__=!0;const{insert:s,remove:o,patchProp:i,createElement:l,createText:r,createComment:u,setText:b,setElementText:h,parentNode:y,nextSibling:U,setScopeId:M=rt,insertStaticContent:J}=e,I=(c,p,g,S=null,w=null,v=null,T=void 0,k=null,E=!!p.dynamicChildren)=>{if(c===p)return;c&&!nn(c,p)&&(S=Ie(c),pe(c,w,v,!0),c=null),p.patchFlag===-2&&(E=!1,p.dynamicChildren=null);const{type:_,ref:F,shapeFlag:P}=p;switch(_){case ls:G(c,p,g,S);break;case wt:Y(c,p,g,S);break;case jn:c==null&&j(p,g,S,T);break;case X:Qe(c,p,g,S,w,v,T,k,E);break;default:P&1?K(c,p,g,S,w,v,T,k,E):P&6?Ce(c,p,g,S,w,v,T,k,E):(P&64||P&128)&&_.process(c,p,g,S,w,v,T,k,E,kt)}F!=null&&w?fn(F,c&&c.ref,v,p||c,!p):F==null&&c&&c.ref!=null&&fn(c.ref,null,v,c,!0)},G=(c,p,g,S)=>{if(c==null)s(p.el=r(p.children),g,S);else{const w=p.el=c.el;p.children!==c.children&&b(w,p.children)}},Y=(c,p,g,S)=>{c==null?s(p.el=u(p.children||""),g,S):p.el=c.el},j=(c,p,g,S)=>{[c.el,c.anchor]=J(c.children,p,g,S,c.el,c.anchor)},Z=({el:c,anchor:p},g,S)=>{let w;for(;c&&c!==p;)w=U(c),s(c,g,S),c=w;s(p,g,S)},N=({el:c,anchor:p})=>{let g;for(;c&&c!==p;)g=U(c),o(c),c=g;o(p)},K=(c,p,g,S,w,v,T,k,E)=>{if(p.type==="svg"?T="svg":p.type==="math"&&(T="mathml"),c==null)Me(p,g,S,w,v,T,k,E);else{const _=c.el&&c.el._isVueCE?c.el:null;try{_&&_._beginPatch(),Be(c,p,w,v,T,k,E)}finally{_&&_._endPatch()}}},Me=(c,p,g,S,w,v,T,k)=>{let E,_;const{props:F,shapeFlag:P,transition:R,dirs:D}=c;if(E=c.el=l(c.type,v,F&&F.is,F),P&8?h(E,c.children):P&16&&Xe(c.children,E,null,S,w,vs(c,v),T,k),D&&Ot(c,null,S,"created"),De(E,c,c.scopeId,T,S),F){for(const W in F)W!=="value"&&!cn(W)&&i(E,W,null,F[W],v,S);"value"in F&&i(E,"value",null,F.value,v),(_=F.onVnodeBeforeMount)&&nt(_,S,c)}D&&Ot(c,null,S,"beforeMount");const H=Dr(w,R);H&&R.beforeEnter(E),s(E,p,g),((_=F&&F.onVnodeMounted)||H||D)&&Ue(()=>{try{_&&nt(_,S,c),H&&R.enter(E),D&&Ot(c,null,S,"mounted")}finally{}},w)},De=(c,p,g,S,w)=>{if(g&&M(c,g),S)for(let v=0;v{for(let _=E;_{const k=p.el=c.el;let{patchFlag:E,dynamicChildren:_,dirs:F}=p;E|=c.patchFlag&16;const P=c.props||oe,R=p.props||oe;let D;if(g&&Ut(g,!1),(D=R.onVnodeBeforeUpdate)&&nt(D,g,p,c),F&&Ot(p,c,g,"beforeUpdate"),g&&Ut(g,!0),_&&(!c.dynamicChildren||c.dynamicChildren.length!==_.length)&&(E=0,T=!1,_=null),(P.innerHTML&&R.innerHTML==null||P.textContent&&R.textContent==null)&&h(k,""),_?Oe(c.dynamicChildren,_,k,g,S,vs(p,w),v):T||q(c,p,k,null,g,S,vs(p,w),v,!1),E>0){if(E&16)de(k,P,R,g,w);else if(E&2&&P.class!==R.class&&i(k,"class",null,R.class,w),E&4&&i(k,"style",P.style,R.style,w),E&8){const H=p.dynamicProps;for(let W=0;W{D&&nt(D,g,p,c),F&&Ot(p,c,g,"updated")},S)},Oe=(c,p,g,S,w,v,T)=>{for(let k=0;k{if(p!==g){if(p!==oe)for(const v in p)!cn(v)&&!(v in g)&&i(c,v,p[v],null,w,S);for(const v in g){if(cn(v))continue;const T=g[v],k=p[v];T!==k&&v!=="value"&&i(c,v,k,T,w,S)}"value"in g&&i(c,"value",p.value,g.value,w)}},Qe=(c,p,g,S,w,v,T,k,E)=>{const _=p.el=c?c.el:r(""),F=p.anchor=c?c.anchor:r("");let{patchFlag:P,dynamicChildren:R,slotScopeIds:D}=p;D&&(k=k?k.concat(D):D),c==null?(s(_,g,S),s(F,g,S),Xe(p.children||[],g,F,w,v,T,k,E)):P>0&&P&64&&R&&c.dynamicChildren&&c.dynamicChildren.length===R.length?(Oe(c.dynamicChildren,R,g,w,v,T,k),(p.key!=null||w&&p===w.subTree)&&Ri(c,p,!0)):q(c,p,g,F,w,v,T,k,E)},Ce=(c,p,g,S,w,v,T,k,E)=>{p.slotScopeIds=k,c==null?p.shapeFlag&512?w.ctx.activate(p,g,S,T,E):ve(p,g,S,w,v,T,E):Ft(c,p,E)},ve=(c,p,g,S,w,v,T)=>{const k=c.component=qr(c,S,w);if(vi(c)&&(k.ctx.renderer=kt),Zr(k,!1,T),k.asyncDep){if(w&&w.registerDep(k,fe,T),!c.el){const E=k.subTree=we(wt);Y(null,E,p,g),c.placeholder=E.el}}else fe(k,c,p,g,w,v,T)},Ft=(c,p,g)=>{const S=p.component=c.component;if(Tr(c,p,g))if(S.asyncDep&&!S.asyncResolved){ne(S,p,g);return}else S.next=p,S.update();else p.el=c.el,S.vnode=p},fe=(c,p,g,S,w,v,T)=>{const k=()=>{if(c.isMounted){let{next:P,bu:R,u:D,parent:H,vnode:W}=c;{const xe=Fi(c);if(xe){P&&(P.el=W.el,ne(c,P,T)),xe.asyncDep.then(()=>{Ue(()=>{c.isUnmounted||_()},w)});return}}let z=P,re;Ut(c,!1),P?(P.el=W.el,ne(c,P,T)):P=W,R&&Bn(R),(re=P.props&&P.props.onVnodeBeforeUpdate)&&nt(re,H,P,W),Ut(c,!0);const ue=bo(c),$e=c.subTree;c.subTree=ue,I($e,ue,y($e.el),Ie($e),c,w,v),P.el=ue.el,z===null&&Pr(c,ue.el),D&&Ue(D,w),(re=P.props&&P.props.onVnodeUpdated)&&Ue(()=>nt(re,H,P,W),w)}else{let P;const{el:R,props:D}=p,{bm:H,m:W,parent:z,root:re,type:ue}=c,$e=pn(p);Ut(c,!1),H&&Bn(H),!$e&&(P=D&&D.onVnodeBeforeMount)&&nt(P,z,p),Ut(c,!0);{re.ce&&re.ce._hasShadowRoot()&&re.ce._injectChildStyle(ue,c.parent?c.parent.type:void 0);const xe=c.subTree=bo(c);I(null,xe,g,S,c,w,v),p.el=xe.el}if(W&&Ue(W,w),!$e&&(P=D&&D.onVnodeMounted)){const xe=p;Ue(()=>nt(P,z,xe),w)}(p.shapeFlag&256||z&&pn(z.vnode)&&z.vnode.shapeFlag&256)&&c.a&&Ue(c.a,w),c.isMounted=!0,p=g=S=null}};c.scope.on();const E=c.effect=new Jo(k);c.scope.off();const _=c.update=E.run.bind(E),F=c.job=E.runIfDirty.bind(E);F.i=c,F.id=c.uid,E.scheduler=()=>zs(F),Ut(c,!0),_()},ne=(c,p,g)=>{p.component=c;const S=c.vnode.props;c.vnode=p,c.next=null,Ur(c,p.props,S,g),Fr(c,p.children,g),ct(),ao(c),ut()},q=(c,p,g,S,w,v,T,k,E=!1)=>{const _=c&&c.children,F=c?c.shapeFlag:0,P=p.children,{patchFlag:R,shapeFlag:D}=p;if(R>0){if(R&128){Nt(_,P,g,S,w,v,T,k,E);return}else if(R&256){et(_,P,g,S,w,v,T,k,E);return}}D&8?(F&16&&Ct(_,w,v),P!==_&&h(g,P)):F&16?D&16?Nt(_,P,g,S,w,v,T,k,E):Ct(_,w,v,!0):(F&8&&h(g,""),D&16&&Xe(P,g,S,w,v,T,k,E))},et=(c,p,g,S,w,v,T,k,E)=>{c=c||Wt,p=p||Wt;const _=c.length,F=p.length,P=Math.min(_,F);let R;for(R=0;RF?Ct(c,w,v,!0,!1,P):Xe(p,g,S,w,v,T,k,E,P)},Nt=(c,p,g,S,w,v,T,k,E)=>{let _=0;const F=p.length;let P=c.length-1,R=F-1;for(;_<=P&&_<=R;){const D=c[_],H=p[_]=E?ht(p[_]):it(p[_]);if(nn(D,H))I(D,H,g,null,w,v,T,k,E);else break;_++}for(;_<=P&&_<=R;){const D=c[P],H=p[R]=E?ht(p[R]):it(p[R]);if(nn(D,H))I(D,H,g,null,w,v,T,k,E);else break;P--,R--}if(_>P){if(_<=R){const D=R+1,H=DR)for(;_<=P;)pe(c[_],w,v,!0),_++;else{const D=_,H=_,W=new Map;for(_=H;_<=R;_++){const ce=p[_]=E?ht(p[_]):it(p[_]);ce.key!=null&&W.set(ce.key,_)}let z,re=0;const ue=R-H+1;let $e=!1,xe=0;const Re=new Array(ue);for(_=0;_=ue){pe(ce,w,v,!0);continue}let Ee;if(ce.key!=null)Ee=W.get(ce.key);else for(z=H;z<=R;z++)if(Re[z-H]===0&&nn(ce,p[z])){Ee=z;break}Ee===void 0?pe(ce,w,v,!0):(Re[Ee-H]=_+1,Ee>=xe?xe=Ee:$e=!0,I(ce,p[Ee],g,null,w,v,T,k,E),re++)}const be=$e?Br(Re):Wt;for(z=be.length-1,_=ue-1;_>=0;_--){const ce=H+_,Ee=p[ce],Tt=p[ce+1],We=ce+1{const{el:v,type:T,transition:k,children:E,shapeFlag:_}=c;if(_&6){me(c.component.subTree,p,g,S);return}if(_&128){c.suspense.move(p,g,S);return}if(_&64){T.move(c,p,g,kt);return}if(T===X){s(v,p,g);for(let P=0;Pk.enter(v),w));else{const{leave:P,delayLeave:R,afterLeave:D}=k,H=()=>{c.ctx.isUnmounted?o(v):s(v,p,g)},W=()=>{const z=v._isLeaving||!!v[bs];v._isLeaving&&v[bs](!0),k.persisted&&!z?H():P(v,()=>{H(),D&&D()})};R?R(v,H,W):W()}else s(v,p,g)},pe=(c,p,g,S=!1,w=!1)=>{const{type:v,props:T,ref:k,children:E,dynamicChildren:_,shapeFlag:F,patchFlag:P,dirs:R,cacheIndex:D,memo:H}=c;if(P===-2&&(w=!1),k!=null&&(ct(),fn(k,null,g,c,!0),ut()),D!=null&&(p.renderCache[D]=void 0),F&256){p.ctx.deactivate(c);return}const W=F&1&&R,z=!pn(c);let re;if(z&&(re=T&&T.onVnodeBeforeUnmount)&&nt(re,p,c),F&6)as(c.component,g,S);else{if(F&128){c.suspense.unmount(g,S);return}W&&Ot(c,null,p,"beforeUnmount"),F&64?c.type.remove(c,p,g,kt,S):_&&!_.hasOnce&&(v!==X||P>0&&P&64)?Ct(_,p,g,!1,!0):(v===X&&P&384||!w&&F&16)&&Ct(E,p,g),S&&Cn(c)}const ue=H!=null&&D==null;(z&&(re=T&&T.onVnodeUnmounted)||W||ue)&&Ue(()=>{re&&nt(re,p,c),W&&Ot(c,null,p,"unmounted"),ue&&(c.el=null)},g)},Cn=c=>{const{type:p,el:g,anchor:S,transition:w}=c;if(p===X){En(g,S);return}if(p===jn){N(c);return}const v=()=>{o(g),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(c.shapeFlag&1&&w&&!w.persisted){const{leave:T,delayLeave:k}=w,E=()=>T(g,v);k?k(c.el,v,E):E()}else v()},En=(c,p)=>{let g;for(;c!==p;)g=U(c),o(c),c=g;o(p)},as=(c,p,g)=>{const{bum:S,scope:w,job:v,subTree:T,um:k,m:E,a:_}=c;xo(E),xo(_),S&&Bn(S),w.stop(),v&&(v.flags|=8,pe(T,c,p,g)),k&&Ue(k,p),Ue(()=>{c.isUnmounted=!0},p)},Ct=(c,p,g,S=!1,w=!1,v=0)=>{for(let T=v;T{if(c.shapeFlag&6)return Ie(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const p=U(c.anchor||c.el),g=p&&p[tr];return g?U(g):p};let tt=!1;const Et=(c,p,g)=>{let S;c==null?p._vnode&&(pe(p._vnode,null,null,!0),S=p._vnode.component):I(p._vnode||null,c,p,null,null,null,g),p._vnode=c,tt||(tt=!0,ao(S),fi(),tt=!1)},kt={p:I,um:pe,m:me,r:Cn,mt:ve,mc:Xe,pc:q,pbc:Oe,n:Ie,o:e};return{render:Et,hydrate:void 0,createApp:wr(Et)}}function vs({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Ut({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Dr(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Ri(e,t,n=!1){const s=e.children,o=t.children;if(B(s)&&B(o))for(let i=0;i>1,e[n[r]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,l=n[i-1];i-- >0;)n[i]=l,l=t[l];return n}function Fi(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Fi(t)}function xo(e){if(e)for(let t=0;te.__isSuspense;function $r(e,t){t&&t.pendingBranch?B(e)?t.effects.push(...e):t.effects.push(e):ql(e)}const X=Symbol.for("v-fgt"),ls=Symbol.for("v-txt"),wt=Symbol.for("v-cmt"),jn=Symbol.for("v-stc"),mn=[];let Le=null;function A(e=!1){mn.push(Le=e?null:[])}function jr(){mn.pop(),Le=mn[mn.length-1]||null}let xn=1;function yo(e,t=!1){xn+=e,e<0&&Le&&t&&(Le.hasOnce=!0)}function Di(e){return e.dynamicChildren=xn>0?Le||Wt:null,jr(),xn>0&&Le&&Le.push(e),e}function C(e,t,n,s,o,i){return Di(f(e,t,n,s,o,i,!0))}function Vr(e,t,n,s,o){return Di(we(e,t,n,s,o,!0))}function Bi(e){return e?e.__v_isVNode===!0:!1}function nn(e,t){return e.type===t.type&&e.key===t.key}const $i=({key:e})=>e??null,Vn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ae(e)||Se(e)||V(e)?{i:Ke,r:e,k:t,f:!!n}:e:null);function f(e,t=null,n=null,s=0,o=null,i=e===X?0:1,l=!1,r=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&$i(t),ref:t&&Vn(t),scopeId:hi,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Ke};return r?(Jn(u,n),i&128&&e.normalize(u)):n&&(u.shapeFlag|=ae(n)?8:16),xn>0&&!l&&Le&&(u.patchFlag>0||i&6)&&u.patchFlag!==32&&Le.push(u),u}const we=Hr;function Hr(e,t=null,n=null,s=0,o=null,i=!1){if((!e||e===hr)&&(e=wt),Bi(e)){const r=Xt(e,t,!0);return n&&Jn(r,n),xn>0&&!i&&Le&&(r.shapeFlag&6?Le[Le.indexOf(e)]=r:Le.push(r)),r.patchFlag=-2,r}if(ta(e)&&(e=e.__vccOpts),t){t=Kr(t);let{class:r,style:u}=t;r&&!ae(r)&&(t.class=Ne(r)),se(u)&&(Gs(u)&&!B(u)&&(u=Ae({},u)),t.style=Ns(u))}const l=ae(e)?1:Li(e)?128:nr(e)?64:se(e)?4:V(e)?2:0;return f(e,t,n,s,o,l,i,!0)}function Kr(e){return e?Gs(e)||Ti(e)?Ae({},e):e:null}function Xt(e,t,n=!1,s=!1){const{props:o,ref:i,patchFlag:l,children:r,transition:u}=e,b=t?zr(o||{},t):o,h={__v_isVNode:!0,__v_skip:!0,type:e.type,props:b,key:b&&$i(b),ref:t&&t.ref?n&&i?B(i)?i.concat(Vn(t)):[i,Vn(t)]:Vn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:r,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==X?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:u,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Xt(e.ssContent),ssFallback:e.ssFallback&&Xt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return u&&s&&Ws(h,u.clone(h)),h}function He(e=" ",t=0){return we(ls,null,e,t)}function Gr(e,t){const n=we(jn,null,e);return n.staticCount=t,n}function $(e="",t=!1){return t?(A(),Vr(wt,null,e)):we(wt,null,e)}function it(e){return e==null||typeof e=="boolean"?we(wt):B(e)?we(X,null,e.slice()):Bi(e)?ht(e):we(ls,null,String(e))}function ht(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Xt(e)}function Jn(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(B(t))n=16;else if(typeof t=="object")if(s&65){const o=t.default;o&&(o._c&&(o._d=!1),Jn(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!Ti(t)?t._ctx=Ke:o===3&&Ke&&(Ke.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(V(t)){if(s&65){Jn(e,{default:t});return}t={default:t,_ctx:Ke},n=32}else t=String(t),s&64?(n=16,t=[He(t)]):n=8;e.children=t,e.shapeFlag|=n}function zr(...e){const t={};for(let n=0;nPe||Ke;let qn,Os;{const e=ts(),t=(n,s)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(s),i=>{o.length>1?o.forEach(l=>l(i)):o[0](i)}};qn=t("__VUE_INSTANCE_SETTERS__",n=>Pe=n),Os=t("__VUE_SSR_SETTERS__",n=>yn=n)}const An=e=>{const t=Pe;return qn(e),e.scope.on(),()=>{e.scope.off(),qn(t)}},_o=()=>{Pe&&Pe.scope.off(),qn(null)};function ji(e){return e.vnode.shapeFlag&4}let yn=!1;function Zr(e,t=!1,n=!1){t&&Os(t);const{props:s,children:o}=e.vnode,i=ji(e);Or(e,s,i,t),Rr(e,o,n||t);const l=i?Xr(e,t):void 0;return t&&Os(!1),l}function Xr(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,mr);const{setup:s}=n;if(s){ct();const o=e.setupContext=s.length>1?ea(e):null,i=An(e),l=Sn(s,e,0,[e.props,o]),r=$o(l);if(ut(),i(),(r||e.sp)&&!pn(e)&&gi(e),r){if(l.then(_o,_o),t)return l.then(u=>{wo(e,u)}).catch(u=>{ss(u,e,0)});e.asyncDep=l}else wo(e,l)}else Vi(e)}function wo(e,t,n){V(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:se(t)&&(e.setupState=ai(t)),Vi(e)}function Vi(e,t,n){const s=e.type;e.render||(e.render=s.render||rt);{const o=An(e);ct();try{br(e)}finally{ut(),o()}}}const Qr={get(e,t){return _e(e,"get",""),e[t]}};function ea(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Qr),slots:e.slots,emit:e.emit,expose:t}}function rs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(ai(Bl(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in hn)return hn[n](e)},has(t,n){return n in t||n in hn}})):e.proxy}function ta(e){return V(e)&&"__vccOpts"in e}const Us=(e,t)=>Kl(e,t,yn),na="3.5.39";/** +* @vue/runtime-dom v3.5.39 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Ms;const So=typeof window<"u"&&window.trustedTypes;if(So)try{Ms=So.createPolicy("vue",{createHTML:e=>e})}catch{}const Hi=Ms?e=>Ms.createHTML(e):e=>e,sa="http://www.w3.org/2000/svg",oa="http://www.w3.org/1998/Math/MathML",pt=typeof document<"u"?document:null,Ao=pt&&pt.createElement("template"),ia={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const o=t==="svg"?pt.createElementNS(sa,e):t==="mathml"?pt.createElementNS(oa,e):n?pt.createElement(e,{is:n}):pt.createElement(e);return e==="select"&&s&&s.multiple!=null&&o.setAttribute("multiple",s.multiple),o},createText:e=>pt.createTextNode(e),createComment:e=>pt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>pt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,o,i){const l=n?n.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===i||!(o=o.nextSibling)););else{Ao.innerHTML=Hi(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const r=Ao.content;if(s==="svg"||s==="mathml"){const u=r.firstChild;for(;u.firstChild;)r.appendChild(u.firstChild);r.removeChild(u)}t.insertBefore(r,n)}return[l?l.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},la=Symbol("_vtc");function ra(e,t,n){const s=e[la];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Yn=Symbol("_vod"),Ki=Symbol("_vsh"),sn={name:"show",beforeMount(e,{value:t},{transition:n}){e[Yn]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):on(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),on(e,!0),s.enter(e)):s.leave(e,()=>{on(e,!1)}):on(e,t))},beforeUnmount(e,{value:t}){on(e,t)}};function on(e,t){e.style.display=t?e[Yn]:"none",e[Ki]=!t}const aa=Symbol(""),ca=/(?:^|;)\s*display\s*:/;function ua(e,t,n){const s=e.style,o=ae(n);let i=!1;if(n&&!o){if(t)if(ae(t))for(const l of t.split(";")){const r=l.slice(0,l.indexOf(":")).trim();n[r]==null&&an(s,r,"")}else for(const l in t)n[l]==null&&an(s,l,"");for(const l in n){l==="display"&&(i=!0);const r=n[l];r!=null?fa(e,l,!ae(t)&&t?t[l]:void 0,r)||an(s,l,r):an(s,l,"")}}else if(o){if(t!==n){const l=s[aa];l&&(n+=";"+l),s.cssText=n,i=ca.test(n)}}else t&&e.removeAttribute("style");Yn in e&&(e[Yn]=i?s.display:"",e[Ki]&&(s.display="none"))}const Co=/\s*!important$/;function an(e,t,n){if(B(n))n.forEach(s=>an(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=da(e,t);Co.test(n)?e.setProperty(At(s),n.replace(Co,""),"important"):e[s]=n}}const Eo=["Webkit","Moz","ms"],xs={};function da(e,t){const n=xs[t];if(n)return n;let s=Je(t);if(s!=="filter"&&s in e)return xs[t]=s;s=Ho(s);for(let o=0;oys||(va.then(()=>ys=0),ys=Date.now());function ya(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;const o=n.value;if(B(o)){const i=s.stopImmediatePropagation;s.stopImmediatePropagation=()=>{i.call(s),s._stopped=!0};const l=o.slice(),r=[s];for(let u=0;ue.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,_a=(e,t,n,s,o,i)=>{const l=o==="svg";t==="class"?ra(e,s,l):t==="style"?ua(e,n,s):Zn(t)?Xn(t)||ha(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):wa(e,t,s,l))?(Po(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&To(e,t,s,l,i,t!=="value")):e._isVueCE&&(Sa(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!ae(s)))?Po(e,Je(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),To(e,t,s,l))};function wa(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Uo(t)&&V(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return Uo(t)&&ae(n)?!1:t in e}function Sa(e,t){const n=e._def.props;if(!n)return!1;const s=Je(t);return Array.isArray(n)?n.some(o=>Je(o)===s):Object.keys(n).some(o=>Je(o)===s)}const St=e=>{const t=e.props["onUpdate:modelValue"]||!1;return B(t)?n=>Bn(t,n):t};function Aa(e){e.target.composing=!0}function Mo(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const ze=Symbol("_assign");function Io(e,t,n){return t&&(e=e.trim()),n&&(e=es(e)),e}const ye={created(e,{modifiers:{lazy:t,trim:n,number:s}},o){e[ze]=St(o);const i=s||o.props&&o.props.type==="number";gt(e,t?"change":"input",l=>{l.target.composing||e[ze](Io(e.value,n,i))}),(n||i)&>(e,"change",()=>{e.value=Io(e.value,n,i)}),t||(gt(e,"compositionstart",Aa),gt(e,"compositionend",Mo),gt(e,"change",Mo))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:o,number:i}},l){if(e[ze]=St(l),e.composing)return;const r=(i||e.type==="number")&&!/^0\d/.test(e.value)?es(e.value):e.value,u=t??"";if(r===u)return;const b=e.getRootNode();(b instanceof Document||b instanceof ShadowRoot)&&b.activeElement===e&&e.type!=="range"&&(s&&t===n||o&&e.value.trim()===u)||(e.value=u)}},Gi={deep:!0,created(e,t,n){e[ze]=St(n),gt(e,"change",()=>{const s=e._modelValue,o=Qt(e),i=e.checked,l=e[ze];if(B(s)){const r=Ls(s,o),u=r!==-1;if(i&&!u)l(s.concat(o));else if(!i&&u){const b=[...s];b.splice(r,1),l(b)}}else if(en(s)){const r=new Set(s);i?r.add(o):r.delete(o),l(r)}else l(zi(e,i))})},mounted:Ro,beforeUpdate(e,t,n){e[ze]=St(n),Ro(e,t,n)}};function Ro(e,{value:t,oldValue:n},s){e._modelValue=t;let o;if(B(t))o=Ls(t,s.props.value)>-1;else if(en(t))o=t.has(s.props.value);else{if(t===n)return;o=_t(t,zi(e,!0))}e.checked!==o&&(e.checked=o)}const Ca={created(e,{value:t},n){e.checked=_t(t,n.props.value),e[ze]=St(n),gt(e,"change",()=>{e[ze](Qt(e))})},beforeUpdate(e,{value:t,oldValue:n},s){e[ze]=St(s),t!==n&&(e.checked=_t(t,s.props.value))}},zt={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const o=en(t);gt(e,"change",()=>{const i=Array.prototype.filter.call(e.options,l=>l.selected).map(l=>n?es(Qt(l)):Qt(l));e[ze](e.multiple?o?new Set(i):i:i[0]),e._assigning=!0,ui(()=>{e._assigning=!1})}),e[ze]=St(s)},mounted(e,{value:t}){Fo(e,t)},beforeUpdate(e,t,n){e[ze]=St(n)},updated(e,{value:t}){e._assigning||Fo(e,t)}};function Fo(e,t){const n=e.multiple,s=B(t);if(!(n&&!s&&!en(t))){for(let o=0,i=e.options.length;oString(b)===String(r)):l.selected=Ls(t,r)>-1}else l.selected=t.has(r);else if(_t(Qt(l),t)){e.selectedIndex!==o&&(e.selectedIndex=o);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Qt(e){return"_value"in e?e._value:e.value}function zi(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Ea={created(e,t,n){Ln(e,t,n,null,"created")},mounted(e,t,n){Ln(e,t,n,null,"mounted")},beforeUpdate(e,t,n,s){Ln(e,t,n,s,"beforeUpdate")},updated(e,t,n,s){Ln(e,t,n,s,"updated")}};function ka(e,t){switch(e){case"SELECT":return zt;case"TEXTAREA":return ye;default:switch(t){case"checkbox":return Gi;case"radio":return Ca;default:return ye}}}function Ln(e,t,n,s,o){const l=ka(e.tagName,n.props&&n.props.type)[o];l&&l(e,t,n,s)}const Ta=["ctrl","shift","alt","meta"],Pa={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Ta.some(n=>e[`${n}Key`]&&!t.includes(n))},Oa=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=((o,...i)=>{for(let l=0;l{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=(o=>{if(!("key"in o))return;const i=At(o.key);if(t.some(l=>l===i||Ua[l]===i))return e(o)}))},Ma=Ae({patchProp:_a},ia);let Lo;function Ia(){return Lo||(Lo=Nr(Ma))}const Ra=((...e)=>{const t=Ia().createApp(...e),{mount:n}=t;return t.mount=s=>{const o=Na(s);if(!o)return;const i=t._component;!V(i)&&!i.render&&!i.template&&(i.template=o.innerHTML),o.nodeType===1&&(o.textContent="");const l=n(o,!1,Fa(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),l},t});function Fa(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Na(e){return ae(e)?document.querySelector(e):e}const Wi="pilotvault-theme";function La(){try{return localStorage.getItem(Wi)==="dark"?"dark":"light"}catch{return"light"}}const _n=L(La());function Ji(e){_n.value=e,document.documentElement.setAttribute("data-theme",e);try{localStorage.setItem(Wi,e)}catch{}}function Do(){Ji(_n.value==="dark"?"light":"dark")}Ji(_n.value);const Da=[{code:"AL",name:"Albania",continent:"EU",bbox:"39.6,19.3,42.7,21.1"},{code:"AD",name:"Andorra",continent:"EU",bbox:"42.4,1.4,42.7,1.8"},{code:"AT",name:"Austria",continent:"EU",bbox:"46.4,9.5,49.0,17.2"},{code:"BY",name:"Belarus",continent:"EU",bbox:"51.2,23.2,56.2,32.8"},{code:"BE",name:"Belgium",continent:"EU",bbox:"49.5,2.5,51.5,6.4"},{code:"BA",name:"Bosnia and Herzegovina",continent:"EU",bbox:"42.6,15.7,45.3,19.6"},{code:"BG",name:"Bulgaria",continent:"EU",bbox:"41.2,22.4,44.2,28.6"},{code:"HR",name:"Croatia",continent:"EU",bbox:"42.4,13.5,46.6,19.4"},{code:"CY",name:"Cyprus",continent:"EU",bbox:"34.6,32.3,35.7,34.6"},{code:"CZ",name:"Czechia",continent:"EU",bbox:"48.6,12.1,51.1,18.9"},{code:"DK",name:"Denmark",continent:"EU",bbox:"54.6,8.1,57.8,12.7"},{code:"EE",name:"Estonia",continent:"EU",bbox:"57.5,21.8,59.7,28.2"},{code:"FI",name:"Finland",continent:"EU",bbox:"59.8,20.6,70.1,31.6"},{code:"FR",name:"France",continent:"EU",bbox:"41.3,-5.2,51.1,9.6"},{code:"DE",name:"Germany",continent:"EU",bbox:"47.2,5.8,55.1,15.1"},{code:"GR",name:"Greece",continent:"EU",bbox:"34.8,19.4,41.8,28.3"},{code:"HU",name:"Hungary",continent:"EU",bbox:"45.7,16.1,48.6,22.9"},{code:"IS",name:"Iceland",continent:"EU",bbox:"63.3,-24.6,66.6,-13.5"},{code:"IE",name:"Ireland",continent:"EU",bbox:"51.4,-10.6,55.4,-6.0"},{code:"IT",name:"Italy",continent:"EU",bbox:"36.6,6.6,47.1,18.6"},{code:"XK",name:"Kosovo",continent:"EU",bbox:"41.8,20.0,43.3,21.8"},{code:"LV",name:"Latvia",continent:"EU",bbox:"55.7,20.9,58.1,28.2"},{code:"LI",name:"Liechtenstein",continent:"EU",bbox:"47.0,9.4,47.3,9.6"},{code:"LT",name:"Lithuania",continent:"EU",bbox:"53.9,20.9,56.5,26.9"},{code:"LU",name:"Luxembourg",continent:"EU",bbox:"49.4,5.7,50.2,6.5"},{code:"MT",name:"Malta",continent:"EU",bbox:"35.8,14.1,36.1,14.6"},{code:"MD",name:"Moldova",continent:"EU",bbox:"45.4,26.6,48.5,30.2"},{code:"MC",name:"Monaco",continent:"EU",bbox:"43.72,7.40,43.75,7.44"},{code:"ME",name:"Montenegro",continent:"EU",bbox:"41.8,18.4,43.6,20.4"},{code:"NL",name:"Netherlands",continent:"EU",bbox:"50.7,3.3,53.7,7.2"},{code:"MK",name:"North Macedonia",continent:"EU",bbox:"40.8,20.4,42.4,23.0"},{code:"NO",name:"Norway",continent:"EU",bbox:"57.9,4.6,71.2,31.1"},{code:"PL",name:"Poland",continent:"EU",bbox:"49.0,14.1,54.9,24.2"},{code:"PT",name:"Portugal",continent:"EU",bbox:"36.9,-9.5,42.2,-6.2"},{code:"RO",name:"Romania",continent:"EU",bbox:"43.6,20.2,48.3,29.7"},{code:"SM",name:"San Marino",continent:"EU",bbox:"43.89,12.40,43.99,12.52"},{code:"RS",name:"Serbia",continent:"EU",bbox:"42.2,18.8,46.2,23.0"},{code:"SK",name:"Slovakia",continent:"EU",bbox:"47.7,16.8,49.6,22.6"},{code:"SI",name:"Slovenia",continent:"EU",bbox:"45.4,13.4,46.9,16.6"},{code:"ES",name:"Spain",continent:"EU",bbox:"35.9,-9.4,43.8,3.4"},{code:"SE",name:"Sweden",continent:"EU",bbox:"55.3,11.1,69.1,24.2"},{code:"CH",name:"Switzerland",continent:"EU",bbox:"45.8,5.9,47.8,10.5"},{code:"UA",name:"Ukraine",continent:"EU",bbox:"44.4,22.1,52.4,40.2"},{code:"GB",name:"United Kingdom",continent:"EU",bbox:"49.9,-8.7,60.9,1.8"},{code:"VA",name:"Vatican City",continent:"EU",bbox:"41.900,12.445,41.908,12.458"},{code:"RU",name:"Russia",continent:"EU",bbox:"41.2,19.6,81.9,180"},{code:"TR",name:"Turkey",continent:"EU",bbox:"35.8,25.7,42.3,44.8"},{code:"AF",name:"Afghanistan",continent:"AS",bbox:"29.4,60.5,38.5,74.9"},{code:"AM",name:"Armenia",continent:"AS",bbox:"38.8,43.4,41.3,46.6"},{code:"AZ",name:"Azerbaijan",continent:"AS",bbox:"38.4,44.8,41.9,50.4"},{code:"BH",name:"Bahrain",continent:"AS",bbox:"25.8,50.4,26.3,50.7"},{code:"BD",name:"Bangladesh",continent:"AS",bbox:"20.7,88.0,26.6,92.7"},{code:"BT",name:"Bhutan",continent:"AS",bbox:"26.7,88.7,28.3,92.1"},{code:"BN",name:"Brunei",continent:"AS",bbox:"4.0,114.0,5.1,115.4"},{code:"KH",name:"Cambodia",continent:"AS",bbox:"10.4,102.3,14.7,107.6"},{code:"CN",name:"China",continent:"AS",bbox:"18.2,73.5,53.6,134.8"},{code:"GE",name:"Georgia",continent:"AS",bbox:"41.0,40.0,43.6,46.7"},{code:"IN",name:"India",continent:"AS",bbox:"6.7,68.1,35.5,97.4"},{code:"ID",name:"Indonesia",continent:"AS",bbox:"-11.0,95.0,6.1,141.0"},{code:"IR",name:"Iran",continent:"AS",bbox:"25.0,44.0,39.8,63.3"},{code:"IQ",name:"Iraq",continent:"AS",bbox:"29.1,38.8,37.4,48.6"},{code:"IL",name:"Israel",continent:"AS",bbox:"29.5,34.2,33.3,35.9"},{code:"JP",name:"Japan",continent:"AS",bbox:"24.0,122.9,45.5,145.8"},{code:"JO",name:"Jordan",continent:"AS",bbox:"29.2,34.9,33.4,39.3"},{code:"KZ",name:"Kazakhstan",continent:"AS",bbox:"40.6,46.5,55.4,87.3"},{code:"KW",name:"Kuwait",continent:"AS",bbox:"28.5,46.5,30.1,48.4"},{code:"KG",name:"Kyrgyzstan",continent:"AS",bbox:"39.2,69.3,43.3,80.3"},{code:"LA",name:"Laos",continent:"AS",bbox:"13.9,100.1,22.5,107.7"},{code:"LB",name:"Lebanon",continent:"AS",bbox:"33.0,35.1,34.7,36.6"},{code:"MY",name:"Malaysia",continent:"AS",bbox:"0.9,99.6,7.4,119.3"},{code:"MV",name:"Maldives",continent:"AS",bbox:"-0.7,72.7,7.1,73.7"},{code:"MN",name:"Mongolia",continent:"AS",bbox:"41.6,87.7,52.1,119.9"},{code:"MM",name:"Myanmar",continent:"AS",bbox:"9.8,92.2,28.5,101.2"},{code:"NP",name:"Nepal",continent:"AS",bbox:"26.3,80.1,30.4,88.2"},{code:"KP",name:"North Korea",continent:"AS",bbox:"37.7,124.2,43.0,130.7"},{code:"OM",name:"Oman",continent:"AS",bbox:"16.6,52.0,26.4,59.8"},{code:"PK",name:"Pakistan",continent:"AS",bbox:"23.7,60.9,37.1,77.8"},{code:"PH",name:"Philippines",continent:"AS",bbox:"4.6,116.9,21.1,126.6"},{code:"QA",name:"Qatar",continent:"AS",bbox:"24.5,50.7,26.2,51.6"},{code:"SA",name:"Saudi Arabia",continent:"AS",bbox:"16.4,34.6,32.2,55.7"},{code:"SG",name:"Singapore",continent:"AS",bbox:"1.2,103.6,1.5,104.1"},{code:"KR",name:"South Korea",continent:"AS",bbox:"33.1,125.9,38.6,129.6"},{code:"LK",name:"Sri Lanka",continent:"AS",bbox:"5.9,79.7,9.8,81.9"},{code:"SY",name:"Syria",continent:"AS",bbox:"32.3,35.7,37.3,42.4"},{code:"TW",name:"Taiwan",continent:"AS",bbox:"21.9,120.0,25.3,122.0"},{code:"TJ",name:"Tajikistan",continent:"AS",bbox:"36.7,67.4,41.0,75.2"},{code:"TH",name:"Thailand",continent:"AS",bbox:"5.6,97.3,20.5,105.6"},{code:"TL",name:"Timor-Leste",continent:"AS",bbox:"-9.5,124.0,-8.1,127.3"},{code:"TM",name:"Turkmenistan",continent:"AS",bbox:"35.1,52.4,42.8,66.7"},{code:"AE",name:"United Arab Emirates",continent:"AS",bbox:"22.6,51.5,26.1,56.4"},{code:"UZ",name:"Uzbekistan",continent:"AS",bbox:"37.2,55.9,45.6,73.1"},{code:"VN",name:"Vietnam",continent:"AS",bbox:"8.2,102.1,23.4,109.5"},{code:"YE",name:"Yemen",continent:"AS",bbox:"12.1,42.5,19.0,54.5"},{code:"DZ",name:"Algeria",continent:"AF",bbox:"18.9,-8.7,37.1,12.0"},{code:"AO",name:"Angola",continent:"AF",bbox:"-18.0,11.6,-4.4,24.1"},{code:"BJ",name:"Benin",continent:"AF",bbox:"6.2,0.8,12.4,3.9"},{code:"BW",name:"Botswana",continent:"AF",bbox:"-26.9,20.0,-17.8,29.4"},{code:"BF",name:"Burkina Faso",continent:"AF",bbox:"9.4,-5.5,15.1,2.4"},{code:"BI",name:"Burundi",continent:"AF",bbox:"-4.5,29.0,-2.3,30.8"},{code:"CV",name:"Cabo Verde",continent:"AF",bbox:"14.8,-25.4,17.2,-22.7"},{code:"CM",name:"Cameroon",continent:"AF",bbox:"1.7,8.5,13.1,16.2"},{code:"CF",name:"Central African Republic",continent:"AF",bbox:"2.2,14.4,11.0,27.5"},{code:"TD",name:"Chad",continent:"AF",bbox:"7.4,13.5,23.4,24.0"},{code:"KM",name:"Comoros",continent:"AF",bbox:"-12.4,43.2,-11.4,44.5"},{code:"CG",name:"Congo",continent:"AF",bbox:"-5.0,11.1,3.7,18.6"},{code:"CD",name:"DR Congo",continent:"AF",bbox:"-13.5,12.2,5.4,31.3"},{code:"DJ",name:"Djibouti",continent:"AF",bbox:"10.9,41.7,12.7,43.4"},{code:"EG",name:"Egypt",continent:"AF",bbox:"22.0,25.0,31.7,36.9"},{code:"GQ",name:"Equatorial Guinea",continent:"AF",bbox:"0.9,9.3,3.8,11.4"},{code:"ER",name:"Eritrea",continent:"AF",bbox:"12.4,36.4,18.0,43.1"},{code:"SZ",name:"Eswatini",continent:"AF",bbox:"-27.3,30.8,-25.7,32.1"},{code:"ET",name:"Ethiopia",continent:"AF",bbox:"3.4,33.0,14.9,48.0"},{code:"GA",name:"Gabon",continent:"AF",bbox:"-4.0,8.7,2.3,14.5"},{code:"GM",name:"Gambia",continent:"AF",bbox:"13.1,-16.8,13.8,-13.8"},{code:"GH",name:"Ghana",continent:"AF",bbox:"4.7,-3.3,11.2,1.2"},{code:"GN",name:"Guinea",continent:"AF",bbox:"7.2,-15.1,12.7,-7.6"},{code:"GW",name:"Guinea-Bissau",continent:"AF",bbox:"10.9,-16.7,12.7,-13.6"},{code:"CI",name:"Ivory Coast",continent:"AF",bbox:"4.4,-8.6,10.7,-2.5"},{code:"KE",name:"Kenya",continent:"AF",bbox:"-4.7,33.9,5.5,41.9"},{code:"LS",name:"Lesotho",continent:"AF",bbox:"-30.7,27.0,-28.6,29.5"},{code:"LR",name:"Liberia",continent:"AF",bbox:"4.3,-11.5,8.6,-7.4"},{code:"LY",name:"Libya",continent:"AF",bbox:"19.5,9.3,33.2,25.2"},{code:"MG",name:"Madagascar",continent:"AF",bbox:"-25.6,43.2,-11.9,50.5"},{code:"MW",name:"Malawi",continent:"AF",bbox:"-17.1,32.7,-9.4,35.9"},{code:"ML",name:"Mali",continent:"AF",bbox:"10.1,-12.3,25.0,4.3"},{code:"MR",name:"Mauritania",continent:"AF",bbox:"14.7,-17.1,27.3,-4.8"},{code:"MU",name:"Mauritius",continent:"AF",bbox:"-20.5,57.3,-19.9,57.8"},{code:"MA",name:"Morocco",continent:"AF",bbox:"27.7,-13.2,35.9,-1.0"},{code:"MZ",name:"Mozambique",continent:"AF",bbox:"-26.9,30.2,-10.5,40.8"},{code:"NA",name:"Namibia",continent:"AF",bbox:"-28.9,11.7,-16.9,25.3"},{code:"NE",name:"Niger",continent:"AF",bbox:"11.7,0.2,23.5,16.0"},{code:"NG",name:"Nigeria",continent:"AF",bbox:"4.3,2.7,13.9,14.7"},{code:"RW",name:"Rwanda",continent:"AF",bbox:"-2.8,28.9,-1.1,30.9"},{code:"SN",name:"Senegal",continent:"AF",bbox:"12.3,-17.5,16.7,-11.4"},{code:"SL",name:"Sierra Leone",continent:"AF",bbox:"6.9,-13.3,10.0,-10.3"},{code:"SO",name:"Somalia",continent:"AF",bbox:"-1.7,40.9,12.0,51.4"},{code:"ZA",name:"South Africa",continent:"AF",bbox:"-34.8,16.5,-22.1,32.9"},{code:"SS",name:"South Sudan",continent:"AF",bbox:"3.5,24.1,12.2,35.9"},{code:"SD",name:"Sudan",continent:"AF",bbox:"8.7,21.8,22.2,38.6"},{code:"TZ",name:"Tanzania",continent:"AF",bbox:"-11.7,29.3,-1.0,40.4"},{code:"TG",name:"Togo",continent:"AF",bbox:"6.1,-0.1,11.1,1.8"},{code:"TN",name:"Tunisia",continent:"AF",bbox:"30.2,7.5,37.5,11.6"},{code:"UG",name:"Uganda",continent:"AF",bbox:"-1.5,29.6,4.2,35.0"},{code:"ZM",name:"Zambia",continent:"AF",bbox:"-18.1,21.9,-8.2,33.7"},{code:"ZW",name:"Zimbabwe",continent:"AF",bbox:"-22.4,25.2,-15.6,33.1"},{code:"CA",name:"Canada",continent:"NA",bbox:"41.7,-141.0,83.1,-52.6"},{code:"US",name:"United States",continent:"NA",bbox:"24.4,-125.0,49.4,-66.9"},{code:"MX",name:"Mexico",continent:"NA",bbox:"14.5,-118.4,32.7,-86.7"},{code:"GT",name:"Guatemala",continent:"NA",bbox:"13.7,-92.2,17.8,-88.2"},{code:"BZ",name:"Belize",continent:"NA",bbox:"15.9,-89.2,18.5,-87.8"},{code:"SV",name:"El Salvador",continent:"NA",bbox:"13.1,-90.1,14.4,-87.7"},{code:"HN",name:"Honduras",continent:"NA",bbox:"12.9,-89.4,16.5,-83.1"},{code:"NI",name:"Nicaragua",continent:"NA",bbox:"10.7,-87.7,15.0,-83.1"},{code:"CR",name:"Costa Rica",continent:"NA",bbox:"8.0,-85.9,11.2,-82.5"},{code:"PA",name:"Panama",continent:"NA",bbox:"7.2,-83.1,9.6,-77.2"},{code:"CU",name:"Cuba",continent:"NA",bbox:"19.8,-85.0,23.3,-74.1"},{code:"DO",name:"Dominican Republic",continent:"NA",bbox:"17.5,-72.0,19.9,-68.3"},{code:"HT",name:"Haiti",continent:"NA",bbox:"18.0,-74.5,20.1,-71.6"},{code:"JM",name:"Jamaica",continent:"NA",bbox:"17.7,-78.4,18.5,-76.2"},{code:"BS",name:"Bahamas",continent:"NA",bbox:"20.9,-79.0,27.3,-72.7"},{code:"TT",name:"Trinidad and Tobago",continent:"NA",bbox:"10.0,-61.9,11.4,-60.5"},{code:"AR",name:"Argentina",continent:"SA",bbox:"-55.1,-73.6,-21.8,-53.6"},{code:"BO",name:"Bolivia",continent:"SA",bbox:"-22.9,-69.6,-9.7,-57.5"},{code:"BR",name:"Brazil",continent:"SA",bbox:"-33.8,-74.0,5.3,-34.8"},{code:"CL",name:"Chile",continent:"SA",bbox:"-55.9,-75.6,-17.5,-66.4"},{code:"CO",name:"Colombia",continent:"SA",bbox:"-4.2,-79.0,12.5,-66.9"},{code:"EC",name:"Ecuador",continent:"SA",bbox:"-5.0,-81.1,1.4,-75.2"},{code:"GY",name:"Guyana",continent:"SA",bbox:"1.2,-61.4,8.6,-56.5"},{code:"PY",name:"Paraguay",continent:"SA",bbox:"-27.6,-62.6,-19.3,-54.3"},{code:"PE",name:"Peru",continent:"SA",bbox:"-18.4,-81.3,0.0,-68.7"},{code:"SR",name:"Suriname",continent:"SA",bbox:"1.8,-58.1,6.0,-54.0"},{code:"UY",name:"Uruguay",continent:"SA",bbox:"-35.0,-58.4,-30.1,-53.1"},{code:"VE",name:"Venezuela",continent:"SA",bbox:"0.6,-73.4,12.2,-59.8"},{code:"AU",name:"Australia",continent:"OC",bbox:"-43.6,113.3,-10.7,153.6"},{code:"NZ",name:"New Zealand",continent:"OC",bbox:"-47.3,166.4,-34.4,178.6"},{code:"PG",name:"Papua New Guinea",continent:"OC",bbox:"-11.7,140.8,-1.3,155.9"},{code:"FJ",name:"Fiji",continent:"OC",bbox:"-19.2,177.0,-16.0,180.0"}],Ba=[["EU","European countries"],["AS","Asian countries"],["AF","African countries"],["NA","North American countries"],["SA","South American countries"],["OC","Oceanian countries"]];function $a(){return Ba.map(([e,t])=>({label:t,options:Da.filter(n=>n.continent===e).slice().sort((n,s)=>n.name.localeCompare(s.name)).map(n=>({value:n.bbox,label:n.name}))}))}const ja={class:"overflow-hidden rounded-lg border border-subtle bg-card shadow-xs"},Va={class:"flex items-center justify-between border-b border-subtle px-5 py-4"},Ha={class:"text-base font-semibold text-primary"},Ka={class:"pv-eyebrow"},Ga={class:"w-full text-left text-sm"},za={class:"border-t border-subtle px-5 py-2.5 font-mono text-xs whitespace-nowrap"},Wa={class:"text-primary"},Ja={class:"border-t border-subtle px-5 py-2.5 text-secondary"},Kt={__name:"EndpointTable",props:{title:String,auth:String,endpoints:Array},setup(e){const t={GET:"text-success",POST:"text-brand-text",PATCH:"text-warning",DELETE:"text-danger"};return(n,s)=>(A(),C("div",ja,[f("div",Va,[f("div",Ha,O(e.title),1),f("span",Ka,O(e.auth),1)]),f("table",Ga,[s[0]||(s[0]=f("thead",null,[f("tr",{class:"pv-eyebrow"},[f("th",{class:"px-5 py-2.5 font-medium"},"Endpoint"),f("th",{class:"px-5 py-2.5 font-medium"},"Description")])],-1)),f("tbody",null,[(A(!0),C(X,null,he(e.endpoints,o=>(A(),C("tr",{key:o.method+o.path,class:"transition-colors hover:bg-sunken"},[f("td",za,[f("span",{class:Ne(["font-semibold",t[o.method]])},O(o.method),3),f("span",Wa,O(o.path),1)]),f("td",Ja,O(o.desc),1)]))),128))])])]))}},qa={class:"mx-auto flex max-w-5xl flex-col gap-6 px-6 pt-12 pb-16"},Ya={class:"flex items-center gap-3"},Za={key:0,class:"pv-eyebrow hidden truncate sm:inline"},Xa=["title"],Qa={key:0,class:"h-4 w-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},ec={key:1,class:"h-4 w-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},tc={key:0,class:"rounded-lg border border-subtle bg-card px-5 py-10 text-center shadow-sm"},nc={key:1,class:"mx-auto w-full max-w-sm rounded-lg border border-subtle bg-card shadow-sm"},sc={class:"flex flex-col gap-1"},oc={class:"flex flex-col gap-1"},ic={key:0,class:"rounded-sm bg-danger-tint px-3 py-2 text-xs font-medium text-danger"},lc=["disabled"],rc={class:"flex gap-1 self-start rounded-lg border border-subtle bg-card p-1 shadow-sm"},ac=["onClick"],cc={class:"flex flex-col gap-6"},uc={class:"rounded-lg border border-subtle bg-card shadow-sm"},dc={class:"flex items-center justify-between border-b border-subtle px-5 py-4"},fc={class:"pv-eyebrow"},pc={class:"min-w-0"},hc={class:"text-sm font-semibold text-primary"},mc={key:0,class:"truncate font-mono text-xs text-secondary"},bc={class:"flex items-center justify-between gap-3 border-t border-subtle px-5 py-3.5"},gc={class:"font-mono text-xs text-secondary"},vc={class:"flex flex-col gap-6"},xc={class:"rounded-lg border border-subtle bg-card shadow-sm"},yc={class:"flex flex-col gap-3 px-5 py-5"},_c={class:"flex flex-col gap-3 sm:flex-row"},wc={class:"flex flex-1 flex-col gap-1"},Sc={class:"flex flex-1 flex-col gap-1"},Ac={class:"flex flex-col gap-3 sm:flex-row"},Cc={class:"flex flex-1 flex-col gap-1"},Ec=["value"],kc={class:"flex flex-1 flex-col gap-1"},Tc=["value"],Pc={key:0,class:"rounded-sm bg-danger-tint px-3 py-2 text-xs font-medium text-danger"},Oc={key:1,class:"rounded-sm bg-success-tint px-3 py-2 text-xs font-medium text-success"},Uc=["disabled"],Mc={class:"rounded-lg border border-subtle bg-card shadow-sm"},Ic={class:"flex items-center justify-between border-b border-subtle px-5 py-4"},Rc={class:"pv-eyebrow"},Fc={class:"flex flex-col"},Nc={key:0,class:"px-5 py-3 text-xs font-medium text-danger"},Lc={key:1,class:"border-b border-subtle bg-sunken px-5 py-2.5 font-mono text-xs text-secondary"},Dc={key:2,class:"px-5 py-6 text-sm text-secondary"},Bc={class:"flex flex-wrap items-center gap-x-3 gap-y-2"},$c={class:"min-w-0 flex-1"},jc={class:"flex flex-wrap items-center gap-2"},Vc={class:"truncate text-sm font-semibold text-primary"},Hc={key:0,class:"rounded-sm bg-brand/10 px-1.5 py-0.5 font-mono text-[10px] font-medium text-brand-text"},Kc={key:1,class:"rounded-sm bg-warning-tint px-1.5 py-0.5 font-mono text-[10px] font-medium text-warning"},Gc={class:"mt-0.5 font-mono text-xs text-secondary"},zc={class:"flex shrink-0 items-center gap-2"},Wc=["onClick"],Jc=["disabled","onClick"],qc={key:0,class:"mt-3 flex flex-col gap-3 rounded-md border border-subtle bg-sunken px-4 py-4"},Yc={class:"flex flex-col gap-3 sm:flex-row"},Zc={class:"flex flex-1 flex-col gap-1"},Xc={class:"flex flex-1 flex-col gap-1"},Qc={class:"flex flex-col gap-3 sm:flex-row"},eu={class:"flex flex-1 flex-col gap-1"},tu=["disabled"],nu=["value"],su={key:0,class:"text-[11px] text-muted"},ou={class:"flex flex-1 flex-col gap-1"},iu=["value"],lu={class:"flex items-center gap-2"},ru={class:"flex items-center gap-2"},au=["disabled","onClick"],cu={class:"flex flex-col gap-6"},uu={class:"rounded-lg border border-subtle bg-card shadow-sm"},du={class:"flex flex-col gap-3 px-5 py-5"},fu={class:"flex flex-col gap-2 sm:flex-row"},pu=["disabled"],hu={key:0,class:"rounded-sm bg-danger-tint px-3 py-2 text-xs font-medium text-danger"},mu={key:1,class:"rounded-sm bg-success-tint px-3 py-2 text-xs font-medium text-success"},bu={class:"rounded-lg border border-subtle bg-card shadow-sm"},gu={class:"flex items-center justify-between border-b border-subtle px-5 py-4"},vu={class:"pv-eyebrow"},xu={class:"flex flex-col"},yu={key:0,class:"border-b border-subtle bg-sunken px-5 py-2.5 font-mono text-xs text-secondary"},_u={key:1,class:"px-5 py-6 text-sm text-secondary"},wu={class:"flex flex-wrap items-center gap-x-3 gap-y-2"},Su={class:"min-w-0 flex-1"},Au={class:"truncate text-sm font-semibold text-primary"},Cu={class:"mt-0.5 font-mono text-xs text-secondary"},Eu={class:"flex shrink-0 items-center gap-2"},ku=["onClick"],Tu=["disabled","title","onClick"],Pu={key:0,class:"mt-3 flex flex-col gap-2 rounded-md border border-subtle bg-sunken px-4 py-4 sm:flex-row sm:items-end"},Ou={class:"flex flex-1 flex-col gap-1"},Uu=["onKeyup"],Mu={class:"flex items-center gap-2"},Iu=["disabled","onClick"],Ru={class:"flex flex-col gap-6"},Fu={class:"rounded-lg border border-subtle bg-card shadow-sm"},Nu={class:"flex items-center justify-between border-b border-subtle px-5 py-4"},Lu={class:"flex flex-col gap-3 px-5 py-5"},Du={class:"flex flex-col gap-1"},Bu={class:"flex flex-col gap-1"},$u={class:"flex flex-col gap-1"},ju=["placeholder"],Vu={key:0,class:"font-mono text-[11px] text-muted"},Hu={key:0},Ku={key:1},Gu={key:1,class:"rounded-sm bg-danger-tint px-3 py-2 text-xs font-medium text-danger"},zu={key:2,class:"rounded-sm bg-success-tint px-3 py-2 text-xs font-medium text-success"},Wu={class:"flex flex-wrap items-center gap-2"},Ju=["disabled"],qu=["disabled"],Yu={class:"flex flex-col gap-6"},Zu={class:"rounded-lg border border-subtle bg-card shadow-sm"},Xu={class:"flex flex-col"},Qu={key:0,class:"px-5 py-3 text-xs font-medium text-danger"},ed={key:1,class:"border-b border-subtle bg-sunken px-5 py-2.5 font-mono text-xs text-secondary"},td={key:2,class:"px-5 py-6 text-sm text-secondary"},nd={key:3,class:"flex gap-1 overflow-x-auto overflow-y-hidden border-b border-subtle px-3 pt-1"},sd=["onClick"],od={key:4,class:"px-5 py-6 text-sm text-secondary"},id={class:"flex flex-wrap items-center gap-x-3 gap-y-2"},ld={class:"min-w-0 flex-1"},rd={class:"flex flex-wrap items-center gap-2"},ad={class:"text-sm font-semibold text-primary"},cd=["title"],ud={key:0},dd={class:"mt-0.5 font-mono text-xs text-secondary"},fd={key:0,class:"mt-0.5 text-[11px] text-secondary"},pd={key:1,class:"mt-2 flex flex-col gap-1.5"},hd={class:"rounded-sm bg-sunken px-1.5 py-0.5 font-mono text-[10px] text-secondary"},md={key:0,class:"font-mono text-[10px] text-muted"},bd={key:1,class:"w-full text-[11px] text-secondary sm:w-auto"},gd={key:2,class:"mt-1 truncate font-mono text-[11px] text-muted"},vd={class:"flex shrink-0 items-center gap-2"},xd=["disabled","onClick"],yd=["onClick"],_d=["value","onChange"],wd=["label"],Sd=["value"],Ad=["value","onInput"],Cd=["disabled","onClick"],Ed=["disabled","onClick"],kd={key:0,class:"mt-3 flex flex-col gap-2 rounded-md border border-subtle bg-sunken px-4 py-4"},Td={class:"pv-eyebrow"},Pd={key:0,class:"text-danger"},Od=["onUpdate:modelValue"],Ud=["value"],Md=["value","onChange"],Id=["label"],Rd=["value"],Fd=["onUpdate:modelValue"],Nd=["onUpdate:modelValue","type","placeholder"],Ld={key:3,class:"text-[11px] text-muted"},Dd={class:"flex items-center gap-2"},Bd=["disabled","onClick"],$d={class:"border-t border-subtle px-5 py-4"},jd={class:"flex flex-col gap-2 sm:flex-row"},Vd=["disabled"],Hd={key:0,class:"mt-2 text-xs font-medium text-danger"},Dn="pv_panel_token",Kd={__name:"App",setup(e){const t=L(localStorage.getItem(Dn)||""),n=L(null),s=L(!1),o=L(!0),i=L({email:"",password:""}),l=L(""),r=L(!1),u=L("overview"),b=[{id:"overview",label:"Overview"},{id:"users",label:"Users"},{id:"organizations",label:"Organizations"},{id:"pocketbase",label:"PocketBase"},{id:"plugins",label:"Plugins"}];async function h(m){try{const a=await fetch("/api/me",{headers:{Authorization:m}});if(!a.ok)return!1;const d=await a.json();return d.role!=="superadmin"?!1:(n.value={id:d.id,email:d.email,role:d.role},!0)}catch{return!1}}async function y(m){t.value=m,localStorage.setItem(Dn,m),s.value=!0,no(),Me(),v(),$t(),Pt()}async function U(){l.value="";const m=i.value.email.trim().toLowerCase();if(!m||!i.value.password){l.value="Enter your email and password.";return}r.value=!0;try{const a=await fetch("/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:m,password:i.value.password})}),d=await a.json().catch(()=>({}));if(!a.ok||!d.token){l.value="Invalid email or password.";return}if(!await h(d.token)){l.value="Access to this panel is restricted to superadmins.";return}i.value.password="",await y(d.token)}catch{l.value="Cannot reach the API server."}finally{r.value=!1}}function M(){so(),localStorage.removeItem(Dn),t.value="",n.value=null,s.value=!1}const J=L(null),I=L({url:"",adminEmail:"",adminPassword:""}),G=L(null),Y=L(""),j=L(""),Z=L(!1),N=L(!1);function K(m){const a={Authorization:t.value};return m&&(a["Content-Type"]="application/json"),a}async function Me(){try{const m=await fetch("/api/admin/pb-config",{headers:K()});if(!m.ok)return;const a=await m.json();J.value=a,I.value={url:a.url||"",adminEmail:a.adminEmail||"",adminPassword:""},G.value=a.probe||null}catch{}}async function De(){Y.value="",j.value="",N.value=!0;try{const m=await fetch("/api/admin/pb-config/test",{method:"POST",headers:K(!0),body:JSON.stringify(I.value)});G.value=await m.json()}catch{j.value="Could not run the test."}finally{N.value=!1}}async function Xe(){var m;if(Y.value="",j.value="",!I.value.url.trim()){j.value="A PocketBase URL is required.";return}Z.value=!0;try{const a=await fetch("/api/admin/pb-config",{method:"PUT",headers:K(!0),body:JSON.stringify(I.value)}),d=await a.json().catch(()=>({}));if(!a.ok){j.value=d.error||"Could not save the connection.";return}J.value=d.config,G.value=((m=d.config)==null?void 0:m.probe)||null,I.value={url:d.config.url,adminEmail:d.config.adminEmail,adminPassword:""},Y.value=d.warning||"Connection saved."}catch{j.value="Could not reach the API server."}finally{Z.value=!1}}const Be=L([]),Oe=L(""),de=L(""),Qe=L(""),Ce=L({}),ve=L(""),Ft=[{label:"World",options:[{value:"-90,-180,90,180",label:"World"}]},{label:"Continents",options:[{value:"34,-25,72,45",label:"Europe"},{value:"-35,-18,38,52",label:"Africa"},{value:"5,25,82,180",label:"Asia"},{value:"7,-168,72,-52",label:"North America"},{value:"-56,-82,13,-34",label:"South America"},{value:"-48,110,-10,180",label:"Oceania"}]},...$a()],fe=Ft.flatMap(m=>m.options);function ne(m){const a=String(m||"").split(",").map(x=>x.trim());if(a.length!==4)return"";const d=a.map(Number);return d.some(x=>Number.isNaN(x))?"":d.join(",")}const q=L({});function et(m){if(q.value[m])return"__custom__";const a=ne(Ce.value[m]),d=a&&fe.find(x=>ne(x.value)===a);return d?d.value:"__custom__"}function Nt(m,a){if(a==="__custom__"){q.value={...q.value,[m]:!0};return}q.value={...q.value,[m]:!1},Ce.value[m]=a}const me=L({}),pe=L({});function Cn(m){return!!(m.configFields&&m.configFields.some(a=>a.type==="bbox"))}function En(m){if(pe.value[m])return"__custom__";const a=me.value[m];if(!a)return"__default__";const d=ne(a),x=d&&fe.find(te=>ne(te.value)===d);return x?x.value:"__custom__"}function as(m,a){if(a==="__default__"){pe.value={...pe.value,[m]:!1},me.value={...me.value,[m]:""};return}if(a==="__custom__"){pe.value={...pe.value,[m]:!0};return}pe.value={...pe.value,[m]:!1},me.value={...me.value,[m]:a}}function Ct(m,a){me.value={...me.value,[m]:a}}const Ie=L({name:"",baseURL:"",provider:""}),tt=L(""),Et=L(!1),kt=[{id:"apis-external",label:"APIs — External"},{id:"drives-external",label:"Drives — External"},{id:"drives-local",label:"Drives — Local"}],kn=L("apis-external");function c(m){return m.category||"apis-external"}function p(m){return Be.value.filter(a=>c(a)===m)}const g=Us(()=>p(kn.value)),S={builtin:"bg-success-tint text-success",external:"bg-warning-tint text-warning"},w={ok:"bg-success-tint text-success",degraded:"bg-warning-tint text-warning",down:"bg-danger-tint text-danger"};async function v(){Oe.value="";try{const m=await fetch("/api/admin/plugins",{headers:K()});if(!m.ok){Oe.value="Could not load plugins.";return}const a=await m.json();Be.value=a.plugins||[];for(const d of Be.value)d.enabled&&!d.health&&T(d.name)}catch{Oe.value="Could not reach the API server."}}async function T(m){try{const a=await fetch(`/api/admin/plugins/${encodeURIComponent(m)}/health`,{method:"POST",headers:K()}),d=await a.json().catch(()=>({}));if(a.ok&&d.health){const x=k(m);x&&(x.health=d.health)}}catch{}}function k(m){return Be.value.find(a=>a.name===m)}async function E(m){ve.value=m.name,de.value="";try{const a=await fetch(`/api/admin/plugins/${encodeURIComponent(m.name)}`,{method:"PUT",headers:K(!0),body:JSON.stringify({enabled:!m.enabled})}),d=await a.json().catch(()=>({}));a.ok?d.warning&&(de.value=`${m.name}: ${d.warning}`):de.value=d.error||"Could not update the plugin.",await v()}finally{ve.value=""}}function _(m){Qe.value=Qe.value===m.name?"":m.name;const a={...m.config||{}};for(const d of m.configFields||[])a[d.key]===void 0&&d.default&&(a[d.key]=d.default);Ce.value=a,q.value={}}async function F(m){ve.value=m.name,de.value="";try{const a=await fetch(`/api/admin/plugins/${encodeURIComponent(m.name)}`,{method:"PUT",headers:K(!0),body:JSON.stringify({config:Ce.value})}),d=await a.json().catch(()=>({}));a.ok?(de.value=d.warning?`${m.name}: ${d.warning}`:"Configuration saved.",Qe.value=""):de.value=d.error||"Could not save the configuration.",await v()}finally{ve.value=""}}async function P(m){ve.value=m.name,de.value="";try{const a=(me.value[m.name]||"").trim(),d=a?`?bbox=${encodeURIComponent(a)}`:"",x=await fetch(`/api/admin/plugins/${encodeURIComponent(m.name)}/health${d}`,{method:"POST",headers:K()}),te=await x.json().catch(()=>({}));if(x.ok&&te.health){const Vt=k(m.name);Vt&&(Vt.health=te.health)}else de.value=te.error||"Health check failed."}finally{ve.value=""}}async function R(m){if(m.kind==="external"){ve.value=m.name;try{const a=await fetch(`/api/admin/plugins/${encodeURIComponent(m.name)}`,{method:"DELETE",headers:K()});if(!a.ok){const d=await a.json().catch(()=>({}));de.value=d.error||"Could not remove the plugin."}await v()}finally{ve.value=""}}}async function D(){if(tt.value="",!Ie.value.name.trim()||!Ie.value.baseURL.trim()){tt.value="Name and base URL are required.";return}Et.value=!0;try{const m=await fetch("/api/admin/plugins",{method:"POST",headers:K(!0),body:JSON.stringify(Ie.value)}),a=await m.json().catch(()=>({}));if(!m.ok){tt.value=a.error||"Could not register the plugin.";return}Ie.value={name:"",baseURL:"",provider:""},de.value="External plugin registered.",await v()}catch{tt.value="Could not reach the API server."}finally{Et.value=!1}}const H=L([]),W=L([]),z=L(""),re=[{value:"user",label:"User"},{value:"admin",label:"Admin"},{value:"superadmin",label:"Superadmin"}],ue={user:"User",admin:"Admin",superadmin:"Superadmin"},$e={user:"bg-sunken text-secondary",admin:"bg-warning-tint text-warning",superadmin:"bg-success-tint text-success"},xe=Us(()=>{const m={};for(const a of H.value)a.organization&&(m[a.organization]=(m[a.organization]||0)+1);return m});function Re(m,a){if(!m)return a;if(m.error)return m.error;if(m.data&&typeof m.data=="object"){const d=[];for(const x in m.data)m.data[x]&&m.data[x].message&&d.push(`${x}: ${m.data[x].message}`);if(d.length)return d.join("; ")}return m.message||a}const be=L({email:"",password:"",role:"user",organization:""}),ce=L(""),Ee=L(""),Tt=L(!1),We=L(""),je=L({}),Lt=L(""),Ve=L("");async function Pt(){z.value="";try{const m=await fetch("/api/users",{headers:K()}),a=await m.json().catch(()=>({}));if(!m.ok){z.value=Re(a,"Could not load users.");return}H.value=a.users||[]}catch{z.value="Could not reach the API server."}}async function qi(){ce.value="",Ee.value="";const m=be.value.email.trim().toLowerCase();if(!m||!m.includes("@")){ce.value="A valid email is required.";return}if(be.value.password.length<8){ce.value="Password must be at least 8 characters.";return}Tt.value=!0;try{const a=await fetch("/api/users",{method:"POST",headers:K(!0),body:JSON.stringify({email:m,password:be.value.password,role:be.value.role,organization:be.value.organization})}),d=await a.json().catch(()=>({}));if(!a.ok){ce.value=Re(d,"Could not create the user.");return}be.value={email:"",password:"",role:"user",organization:""},Ee.value=`Created ${d.user?d.user.email:"user"}.`,await Pt()}catch{ce.value="Could not reach the API server."}finally{Tt.value=!1}}function Yi(m){Ve.value="",We.value=We.value===m.id?"":m.id,je.value={email:m.email,role:m.role,organization:m.organization||"",verified:!!m.verified,password:""}}async function Zi(m){Ve.value="",Lt.value=m.id;try{const a={},d=je.value;if(d.email.trim().toLowerCase()!==m.email&&(a.email=d.email.trim().toLowerCase()),d.role!==m.role&&(a.role=d.role),(d.organization||"")!==(m.organization||"")&&(a.organization=d.organization||""),d.verified!==!!m.verified&&(a.verified=d.verified),d.password&&(a.password=d.password),Object.keys(a).length===0){Ve.value="No changes to save.";return}const x=await fetch(`/api/users/${encodeURIComponent(m.id)}`,{method:"PATCH",headers:K(!0),body:JSON.stringify(a)}),te=await x.json().catch(()=>({}));if(!x.ok){Ve.value=Re(te,"Could not update the user.");return}Ve.value=`Updated ${m.email}.`,We.value="",await Pt()}catch{Ve.value="Could not reach the API server."}finally{Lt.value=""}}async function Xi(m){if(m.id!==(n.value&&n.value.id)&&confirm(`Delete user ${m.email}? This cannot be undone.`)){Ve.value="",Lt.value=m.id;try{const a=await fetch(`/api/users/${encodeURIComponent(m.id)}`,{method:"DELETE",headers:K()}),d=await a.json().catch(()=>({}));if(!a.ok){Ve.value=Re(d,"Could not delete the user.");return}Ve.value=`Deleted ${m.email}.`,We.value===m.id&&(We.value=""),await Pt()}catch{Ve.value="Could not reach the API server."}finally{Lt.value=""}}}const Tn=L(""),Dt=L(""),Pn=L(""),On=L(!1),dt=L(""),Un=L(""),Bt=L(""),Fe=L("");async function $t(){try{const m=await fetch("/api/orgs",{headers:K()});if(!m.ok)return;const a=await m.json().catch(()=>({}));W.value=a.organizations||[]}catch{}}async function Zs(){Dt.value="",Pn.value="";const m=Tn.value.trim();if(!m){Dt.value="An organization name is required.";return}On.value=!0;try{const a=await fetch("/api/orgs",{method:"POST",headers:K(!0),body:JSON.stringify({name:m})}),d=await a.json().catch(()=>({}));if(!a.ok){Dt.value=Re(d,"Could not create the organization.");return}Tn.value="",Pn.value=`Created ${d.organization?d.organization.name:"organization"}.`,await $t()}catch{Dt.value="Could not reach the API server."}finally{On.value=!1}}function Qi(m){Fe.value="",dt.value=dt.value===m.id?"":m.id,Un.value=m.name}async function Xs(m){Fe.value="";const a=Un.value.trim();if(!a){Fe.value="An organization name is required.";return}if(a===m.name){dt.value="";return}Bt.value=m.id;try{const d=await fetch(`/api/orgs/${encodeURIComponent(m.id)}`,{method:"PATCH",headers:K(!0),body:JSON.stringify({name:a})}),x=await d.json().catch(()=>({}));if(!d.ok){Fe.value=Re(x,"Could not rename the organization.");return}Fe.value=`Renamed to ${a}.`,dt.value="",await $t(),await Pt()}catch{Fe.value="Could not reach the API server."}finally{Bt.value=""}}async function el(m){const a=xe.value[m.id]||0;if(a>0){Fe.value=`${m.name} still has ${a} member${a===1?"":"s"}; reassign or remove them first.`;return}if(confirm(`Delete organization ${m.name}?`)){Fe.value="",Bt.value=m.id;try{const d=await fetch(`/api/orgs/${encodeURIComponent(m.id)}`,{method:"DELETE",headers:K()}),x=await d.json().catch(()=>({}));if(!d.ok){Fe.value=Re(x,"Could not delete the organization.");return}Fe.value=`Deleted ${m.name}.`,dt.value===m.id&&(dt.value=""),await $t()}catch{Fe.value="Could not reach the API server."}finally{Bt.value=""}}}const cs=L(null),Mn=L(null),jt=L({apiServer:{status:"checking",detail:""},pocketBase:{status:"checking",detail:""},webApp:{status:"checking",detail:""}});let In=null;const tl=[{key:"apiServer",label:"API server"},{key:"pocketBase",label:"PocketBase"},{key:"webApp",label:"Web App"}],Qs={checking:{label:"checking",cls:"bg-sunken text-secondary"},ok:{label:"operational",cls:"bg-success-tint text-success"},down:{label:"unreachable",cls:"bg-danger-tint text-danger"},unreachable:{label:"unreachable",cls:"bg-danger-tint text-danger"}};function eo(m){const a=[];return m.httpStatus&&a.push("HTTP "+m.httpStatus),m.url&&a.push(m.url),typeof m.latencyMs=="number"&&a.push(m.latencyMs+"ms"),a.join(" · ")}async function to(){var m,a;try{const d=await fetch("/api/status");if(!d.ok)throw new Error("status "+d.status);const x=await d.json(),te=x.apiServer||{};Mn.value=te.devices??0,jt.value={apiServer:{status:"ok",detail:""},pocketBase:{status:((m=x.pocketBase)==null?void 0:m.status)==="ok"?"ok":"down",detail:eo(x.pocketBase||{})},webApp:{status:((a=x.webApp)==null?void 0:a.status)==="ok"?"ok":"down",detail:eo(x.webApp||{})}}}catch{Mn.value=null,jt.value={apiServer:{status:"unreachable",detail:""},pocketBase:{status:"unreachable",detail:""},webApp:{status:"unreachable",detail:""}}}cs.value=new Date}function no(){to(),clearInterval(In),In=setInterval(to,1e4)}function so(){clearInterval(In),In=null}yi(async()=>{t.value&&await h(t.value)?(s.value=!0,no(),Me(),v(),$t(),Pt()):t.value&&(localStorage.removeItem(Dn),t.value=""),o.value=!1}),Js(()=>so());const nl=[{method:"POST",path:"/api/auth/login",desc:"Exchange email + password for a session (via PocketBase)"},{method:"GET",path:"/api/auth/validate",desc:"Validate the current session token"},{method:"GET",path:"/api/me",desc:"Caller's id, email, role, and organization from their token"},{method:"GET",path:"/api/preferences",desc:"Read the caller's saved settings blob"},{method:"PUT",path:"/api/preferences",desc:"Persist the caller's settings onto their user record"},{method:"GET",path:"/api/devices",desc:"List connected devices and last-known state"},{method:"GET",path:"/api/devices/{id}/track",desc:"GPS track history for a device"},{method:"POST",path:"/api/devices/{id}/command",desc:"Send a command down to a device"},{method:"DELETE",path:"/api/devices/{id}",desc:"Forget a device's stored state"},{method:"GET",path:"/ws/ui",desc:"Live telemetry stream (WebSocket)"}],sl=[{method:"GET",path:"/api/drones",desc:"List the fleet in scope"},{method:"POST",path:"/api/drones",desc:"Register a drone by hand"},{method:"POST",path:"/api/drones/auto",desc:"Upsert the drone a device just connected, keyed on its flight controller's serial"},{method:"PATCH",path:"/api/drones/{id}",desc:"Edit a drone (whole-record write)"},{method:"DELETE",path:"/api/drones/{id}",desc:"Delete a drone"},{method:"GET",path:"/api/flights",desc:"List flight records in scope"},{method:"POST",path:"/api/flights",desc:"Log a flight"},{method:"PATCH",path:"/api/flights/{id}",desc:"Edit a flight record"},{method:"DELETE",path:"/api/flights/{id}",desc:"Delete a flight record"},{method:"GET",path:"/api/logbook/export",desc:"Export the logbook as CSV, compliance flags included"}],ol=[{method:"GET",path:"/api/documents",desc:"List documents (?expiring filters to those near expiry)"},{method:"POST",path:"/api/documents",desc:"Upload a document (multipart)"},{method:"PATCH",path:"/api/documents/{id}",desc:"Edit a document, or replace its file"},{method:"DELETE",path:"/api/documents/{id}",desc:"Delete a document"},{method:"GET",path:"/api/documents/{id}/file",desc:"Stream a document's file down"}],il=[{method:"GET",path:"/api/integrations/{plugin}",desc:"Resolved settings + per-field lock state (opensky · filetransfer · localstorage · webdav · openweather)"},{method:"PUT",path:"/api/integrations/{plugin}",desc:"Save settings at a scope ({scope: user | org}; org needs admin)"},{method:"POST",path:"/api/integrations/{plugin}/health",desc:"Probe the plugin with the caller's resolved config"},{method:"GET",path:"/api/integrations/opensky/states",desc:"Live aircraft state vectors for a bbox (map overlay)"},{method:"GET",path:"/api/integrations/openweather/current",desc:"Current weather + 5-day forecast for a point"}],ll=[{method:"GET",path:"/api/users",desc:"List users (admin: own org · superadmin: all)"},{method:"POST",path:"/api/users",desc:"Create a user {email, password, role, organization?}"},{method:"PATCH",path:"/api/users/{id}",desc:"Edit a user (role/org changes are scope-checked)"},{method:"DELETE",path:"/api/users/{id}",desc:"Delete a user (not self; admins in-org only)"},{method:"GET",path:"/api/orgs",desc:"List organizations (admin: own · superadmin: all)"},{method:"POST",path:"/api/orgs",desc:"Create an organization {name} (superadmin)"},{method:"PATCH",path:"/api/orgs/{id}",desc:"Rename an organization (superadmin)"},{method:"DELETE",path:"/api/orgs/{id}",desc:"Delete an empty organization (superadmin)"},{method:"GET",path:"/api/admin/pb-config",desc:"Read the PocketBase connection + live probe (superadmin)"},{method:"POST",path:"/api/admin/pb-config/test",desc:"Test a candidate connection without applying (superadmin)"},{method:"PUT",path:"/api/admin/pb-config",desc:"Update + persist the PocketBase connection (superadmin)"},{method:"GET",path:"/api/admin/plugins",desc:"List plugins + state + last health (superadmin)"},{method:"POST",path:"/api/admin/plugins",desc:"Register an external plugin {name, baseURL} (superadmin)"},{method:"GET",path:"/api/admin/plugins/{name}",desc:"Read one plugin's state + config (superadmin)"},{method:"PUT",path:"/api/admin/plugins/{name}",desc:"Enable/disable + configure a plugin (superadmin)"},{method:"DELETE",path:"/api/admin/plugins/{name}",desc:"Remove an external plugin (superadmin)"},{method:"POST",path:"/api/admin/plugins/{name}/health",desc:"Run a plugin health check (superadmin)"}],rl=[{method:"GET",path:"/ws/device?id={id}",desc:"Device telemetry uplink (WebSocket)"},{method:"POST",path:"/api/telemetry?id={id}",desc:"Push a single telemetry event over HTTP"},{method:"GET",path:"/healthz",desc:"Readiness probe (public)"},{method:"GET",path:"/api/health",desc:"Readiness probe, same answer under the /api prefix (public)"},{method:"GET",path:"/api/status",desc:"Server status + PocketBase reachability (public)"}];return(m,a)=>(A(),C("div",qa,[f("div",Ya,[a[25]||(a[25]=Gr('
PilotVault
API server
',3)),s.value&&n.value?(A(),C("span",Za,O(n.value.email),1)):$("",!0),s.value?(A(),C("button",{key:1,class:"pv-btn-sec pv-btn-sm",onClick:M},"Sign out")):$("",!0),f("button",{class:"pv-btn-sec pv-btn-sm",title:ln(_n)==="dark"?"Switch to light theme":"Switch to dark theme",onClick:a[0]||(a[0]=(...d)=>ln(Do)&&ln(Do)(...d))},[ln(_n)==="dark"?(A(),C("svg",Qa,[...a[22]||(a[22]=[f("circle",{cx:"12",cy:"12",r:"4"},null,-1),f("path",{d:"M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41"},null,-1)])])):(A(),C("svg",ec,[...a[23]||(a[23]=[f("path",{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"},null,-1)])])),a[24]||(a[24]=He(" Theme ",-1))],8,Xa)]),o.value?(A(),C("div",tc,[...a[26]||(a[26]=[f("span",{class:"pv-eyebrow"},"Checking session…",-1)])])):s.value?(A(),C(X,{key:2},[f("div",rc,[(A(),C(X,null,he(b,d=>f("button",{key:d.id,class:Ne(["rounded-md px-3.5 py-1.5 text-sm font-semibold transition",u.value===d.id?"bg-brand text-on-brand":"text-secondary hover:text-primary"]),onClick:x=>u.value=d.id},O(d.label),11,ac)),64))]),ie(f("div",cc,[f("div",uc,[f("div",dc,[a[30]||(a[30]=f("div",{class:"text-base font-semibold text-primary"},"Status",-1)),f("span",fc,O(cs.value?"checked "+cs.value.toLocaleTimeString():"—"),1)]),f("div",null,[(A(),C(X,null,he(tl,d=>f("div",{key:d.key,class:"flex items-center justify-between gap-3 border-t border-subtle px-5 py-3.5 first:border-t-0"},[f("div",pc,[f("div",hc,O(d.label),1),jt.value[d.key].detail?(A(),C("div",mc,O(jt.value[d.key].detail),1)):$("",!0)]),f("span",{class:Ne(["inline-flex shrink-0 items-center gap-1.5 rounded-sm px-2.5 py-1 font-mono text-xs font-medium",Qs[jt.value[d.key].status].cls])},[a[31]||(a[31]=f("span",{class:"h-1.5 w-1.5 rounded-full bg-current"},null,-1)),He(" "+O(Qs[jt.value[d.key].status].label),1)],2)])),64)),f("div",bc,[a[32]||(a[32]=f("div",{class:"text-sm font-semibold text-primary"},"Devices",-1)),f("span",gc,O(Mn.value===null?"—":Mn.value+" online"),1)])])]),we(Kt,{title:"Client API",auth:"PocketBase session",endpoints:nl}),we(Kt,{title:"Logbook & fleet API",auth:"PocketBase session · org-scoped",endpoints:sl}),we(Kt,{title:"Documents API",auth:"PocketBase session · org-scoped",endpoints:ol}),we(Kt,{title:"Integrations API",auth:"PocketBase session",endpoints:il}),we(Kt,{title:"Management API",auth:"Admin · superadmin",endpoints:ll}),we(Kt,{title:"Device API",auth:"Device uplink · public",endpoints:rl})],512),[[sn,u.value==="overview"]]),ie(f("div",vc,[f("div",xc,[a[38]||(a[38]=f("div",{class:"border-b border-subtle px-5 py-4"},[f("div",{class:"text-base font-semibold text-primary"},"Add user"),f("span",{class:"pv-eyebrow"},"Create an account")],-1)),f("div",yc,[f("div",_c,[f("label",wc,[a[33]||(a[33]=f("span",{class:"pv-eyebrow"},"Email",-1)),ie(f("input",{"onUpdate:modelValue":a[3]||(a[3]=d=>be.value.email=d),type:"email",class:"pv-input",placeholder:"pilot@pilotvault.local",autocomplete:"off",spellcheck:"false"},null,512),[[ye,be.value.email]])]),f("label",Sc,[a[34]||(a[34]=f("span",{class:"pv-eyebrow"},"Password",-1)),ie(f("input",{"onUpdate:modelValue":a[4]||(a[4]=d=>be.value.password=d),type:"password",class:"pv-input",placeholder:"min. 8 characters",autocomplete:"new-password"},null,512),[[ye,be.value.password]])])]),f("div",Ac,[f("label",Cc,[a[35]||(a[35]=f("span",{class:"pv-eyebrow"},"Role",-1)),ie(f("select",{"onUpdate:modelValue":a[5]||(a[5]=d=>be.value.role=d),class:"pv-input"},[(A(),C(X,null,he(re,d=>f("option",{key:d.value,value:d.value},O(d.label),9,Ec)),64))],512),[[zt,be.value.role]])]),f("label",kc,[a[37]||(a[37]=f("span",{class:"pv-eyebrow"},"Organization",-1)),ie(f("select",{"onUpdate:modelValue":a[6]||(a[6]=d=>be.value.organization=d),class:"pv-input"},[a[36]||(a[36]=f("option",{value:""},"— none —",-1)),(A(!0),C(X,null,he(W.value,d=>(A(),C("option",{key:d.id,value:d.id},O(d.name),9,Tc))),128))],512),[[zt,be.value.organization]])])]),ce.value?(A(),C("p",Pc,O(ce.value),1)):Ee.value?(A(),C("p",Oc,O(Ee.value),1)):$("",!0),f("div",null,[f("button",{class:"pv-btn",disabled:Tt.value,onClick:qi},O(Tt.value?"Creating…":"Create user"),9,Uc)])])]),f("div",Mc,[f("div",Ic,[f("div",null,[a[39]||(a[39]=f("div",{class:"text-base font-semibold text-primary"},"Users",-1)),f("span",Rc,O(H.value.length)+" total",1)]),f("button",{class:"pv-btn-sec pv-btn-sm",onClick:Pt},"Refresh")]),f("div",Fc,[z.value?(A(),C("p",Nc,O(z.value),1)):$("",!0),Ve.value?(A(),C("p",Lc,O(Ve.value),1)):$("",!0),!H.value.length&&!z.value?(A(),C("p",Dc,"No users yet.")):$("",!0),(A(!0),C(X,null,he(H.value,d=>(A(),C("div",{key:d.id,class:"border-t border-subtle px-5 py-4 first:border-t-0"},[f("div",Bc,[f("div",$c,[f("div",jc,[f("span",Vc,O(d.email),1),f("span",{class:Ne(["rounded-sm px-1.5 py-0.5 font-mono text-[10px] font-medium uppercase tracking-wider",$e[d.role]])},O(ue[d.role]||d.role),3),d.id===(n.value&&n.value.id)?(A(),C("span",Hc,"you")):$("",!0),d.verified?$("",!0):(A(),C("span",Kc,"unverified"))]),f("div",Gc,O(d.organizationName||(d.organization?d.organization:"no organization")),1)]),f("div",zc,[f("button",{class:"pv-btn-sec pv-btn-sm",onClick:x=>Yi(d)},O(We.value===d.id?"Close":"Edit"),9,Wc),d.id!==(n.value&&n.value.id)?(A(),C("button",{key:0,class:"pv-btn-sec pv-btn-sm !text-danger",disabled:Lt.value===d.id,onClick:x=>Xi(d)}," Delete ",8,Jc)):$("",!0)])]),We.value===d.id?(A(),C("div",qc,[f("div",Yc,[f("label",Zc,[a[40]||(a[40]=f("span",{class:"pv-eyebrow"},"Email",-1)),ie(f("input",{"onUpdate:modelValue":a[7]||(a[7]=x=>je.value.email=x),type:"email",class:"pv-input",autocomplete:"off",spellcheck:"false"},null,512),[[ye,je.value.email]])]),f("label",Xc,[a[41]||(a[41]=f("span",{class:"pv-eyebrow"},"New password",-1)),ie(f("input",{"onUpdate:modelValue":a[8]||(a[8]=x=>je.value.password=x),type:"password",class:"pv-input",placeholder:"leave blank to keep current",autocomplete:"new-password"},null,512),[[ye,je.value.password]])])]),f("div",Qc,[f("label",eu,[a[42]||(a[42]=f("span",{class:"pv-eyebrow"},"Role",-1)),ie(f("select",{"onUpdate:modelValue":a[9]||(a[9]=x=>je.value.role=x),class:"pv-input",disabled:d.id===(n.value&&n.value.id)},[(A(),C(X,null,he(re,x=>f("option",{key:x.value,value:x.value},O(x.label),9,nu)),64))],8,tu),[[zt,je.value.role]]),d.id===(n.value&&n.value.id)?(A(),C("span",su,"You cannot change your own role.")):$("",!0)]),f("label",ou,[a[44]||(a[44]=f("span",{class:"pv-eyebrow"},"Organization",-1)),ie(f("select",{"onUpdate:modelValue":a[10]||(a[10]=x=>je.value.organization=x),class:"pv-input"},[a[43]||(a[43]=f("option",{value:""},"— none —",-1)),(A(!0),C(X,null,he(W.value,x=>(A(),C("option",{key:x.id,value:x.id},O(x.name),9,iu))),128))],512),[[zt,je.value.organization]])])]),f("label",lu,[ie(f("input",{"onUpdate:modelValue":a[11]||(a[11]=x=>je.value.verified=x),type:"checkbox",class:"h-4 w-4"},null,512),[[Gi,je.value.verified]]),a[45]||(a[45]=f("span",{class:"text-sm text-primary"},"Verified",-1))]),f("div",ru,[f("button",{class:"pv-btn pv-btn-sm",disabled:Lt.value===d.id,onClick:x=>Zi(d)},"Save changes",8,au),f("button",{class:"pv-btn-sec pv-btn-sm",onClick:a[12]||(a[12]=x=>We.value="")},"Cancel")])])):$("",!0)]))),128))])])],512),[[sn,u.value==="users"]]),ie(f("div",cu,[f("div",uu,[a[46]||(a[46]=f("div",{class:"border-b border-subtle px-5 py-4"},[f("div",{class:"text-base font-semibold text-primary"},"Add organization"),f("span",{class:"pv-eyebrow"},"Create a tenant")],-1)),f("div",du,[f("div",fu,[ie(f("input",{"onUpdate:modelValue":a[13]||(a[13]=d=>Tn.value=d),class:"pv-input flex-1",placeholder:"Acme Aerial Ltd.",autocomplete:"off",spellcheck:"false",onKeyup:No(Zs,["enter"])},null,544),[[ye,Tn.value]]),f("button",{class:"pv-btn",disabled:On.value,onClick:Zs},O(On.value?"Creating…":"Create"),9,pu)]),Dt.value?(A(),C("p",hu,O(Dt.value),1)):Pn.value?(A(),C("p",mu,O(Pn.value),1)):$("",!0)])]),f("div",bu,[f("div",gu,[f("div",null,[a[47]||(a[47]=f("div",{class:"text-base font-semibold text-primary"},"Organizations",-1)),f("span",vu,O(W.value.length)+" total",1)]),f("button",{class:"pv-btn-sec pv-btn-sm",onClick:$t},"Refresh")]),f("div",xu,[Fe.value?(A(),C("p",yu,O(Fe.value),1)):$("",!0),W.value.length?$("",!0):(A(),C("p",_u,"No organizations yet.")),(A(!0),C(X,null,he(W.value,d=>(A(),C("div",{key:d.id,class:"border-t border-subtle px-5 py-4 first:border-t-0"},[f("div",wu,[f("div",Su,[f("div",Au,O(d.name),1),f("div",Cu,O(xe.value[d.id]||0)+" member"+O((xe.value[d.id]||0)===1?"":"s"),1)]),f("div",Eu,[f("button",{class:"pv-btn-sec pv-btn-sm",onClick:x=>Qi(d)},O(dt.value===d.id?"Close":"Rename"),9,ku),f("button",{class:"pv-btn-sec pv-btn-sm !text-danger",disabled:Bt.value===d.id||(xe.value[d.id]||0)>0,title:(xe.value[d.id]||0)>0?"Reassign or remove members first":"Delete organization",onClick:x=>el(d)}," Delete ",8,Tu)])]),dt.value===d.id?(A(),C("div",Pu,[f("label",Ou,[a[48]||(a[48]=f("span",{class:"pv-eyebrow"},"Name",-1)),ie(f("input",{"onUpdate:modelValue":a[14]||(a[14]=x=>Un.value=x),class:"pv-input",autocomplete:"off",spellcheck:"false",onKeyup:No(x=>Xs(d),["enter"])},null,40,Uu),[[ye,Un.value]])]),f("div",Mu,[f("button",{class:"pv-btn pv-btn-sm",disabled:Bt.value===d.id,onClick:x=>Xs(d)},"Save",8,Iu),f("button",{class:"pv-btn-sec pv-btn-sm",onClick:a[15]||(a[15]=x=>dt.value="")},"Cancel")])])):$("",!0)]))),128))])])],512),[[sn,u.value==="organizations"]]),ie(f("div",Ru,[f("div",Fu,[f("div",Nu,[a[50]||(a[50]=f("div",null,[f("div",{class:"text-base font-semibold text-primary"},"PocketBase connection"),f("span",{class:"pv-eyebrow"},"Settings")],-1)),G.value?(A(),C("span",{key:0,class:Ne(["inline-flex shrink-0 items-center gap-1.5 rounded-sm px-2.5 py-1 font-mono text-xs font-medium",G.value.reachable?G.value.superuser?"bg-success-tint text-success":"bg-warning-tint text-warning":"bg-danger-tint text-danger"])},[a[49]||(a[49]=f("span",{class:"h-1.5 w-1.5 rounded-full bg-current"},null,-1)),He(" "+O(G.value.reachable?G.value.superuser?"connected":"reachable":"unreachable"),1)],2)):$("",!0)]),f("div",Lu,[f("label",Du,[a[51]||(a[51]=f("span",{class:"pv-eyebrow"},"PocketBase URL",-1)),ie(f("input",{"onUpdate:modelValue":a[16]||(a[16]=d=>I.value.url=d),class:"pv-input",placeholder:"http://10.2.1.10:8026",spellcheck:"false"},null,512),[[ye,I.value.url]])]),f("label",Bu,[a[52]||(a[52]=f("span",{class:"pv-eyebrow"},"Service account email",-1)),ie(f("input",{"onUpdate:modelValue":a[17]||(a[17]=d=>I.value.adminEmail=d),class:"pv-input",placeholder:"admin@pilotvault.local",autocomplete:"off",spellcheck:"false"},null,512),[[ye,I.value.adminEmail]])]),f("label",$u,[a[53]||(a[53]=f("span",{class:"pv-eyebrow"},"Service account password",-1)),ie(f("input",{"onUpdate:modelValue":a[18]||(a[18]=d=>I.value.adminPassword=d),type:"password",class:"pv-input",autocomplete:"new-password",placeholder:J.value&&J.value.adminConfigured?"leave blank to keep current":"set a password"},null,8,ju),[[ye,I.value.adminPassword]])]),G.value?(A(),C("div",Vu,[He(" health: "+O(G.value.reachable?"ok":"down"),1),G.value.latencyMs?(A(),C("span",Hu," · "+O(G.value.latencyMs)+"ms",1)):$("",!0),He(" · superuser auth: "+O(G.value.superuser?"ok":"—"),1),G.value.detail?(A(),C("span",Ku," · "+O(G.value.detail),1)):$("",!0)])):$("",!0),j.value?(A(),C("p",Gu,O(j.value),1)):Y.value?(A(),C("p",zu,O(Y.value),1)):$("",!0),f("div",Wu,[f("button",{class:"pv-btn",disabled:Z.value,onClick:Xe},O(Z.value?"Saving…":"Save connection"),9,Ju),f("button",{class:"pv-btn-sec",disabled:N.value,onClick:De},O(N.value?"Testing…":"Test connection"),9,qu)]),a[54]||(a[54]=f("p",{class:"text-[11px] text-muted"}," The service account is used only for user & organization management. Changing the URL repoints the whole API Server at a new PocketBase and may sign you out. ",-1))])])],512),[[sn,u.value==="pocketbase"]]),ie(f("div",Yu,[f("div",Zu,[f("div",{class:"flex items-center justify-between border-b border-subtle px-5 py-4"},[a[55]||(a[55]=f("div",null,[f("div",{class:"text-base font-semibold text-primary"},"Plugins"),f("span",{class:"pv-eyebrow"},"External integrations")],-1)),f("button",{class:"pv-btn-sec pv-btn-sm",onClick:v},"Refresh")]),f("div",Xu,[Oe.value?(A(),C("p",Qu,O(Oe.value),1)):$("",!0),de.value?(A(),C("p",ed,O(de.value),1)):$("",!0),!Be.value.length&&!Oe.value?(A(),C("p",td,"No plugins registered yet.")):$("",!0),Be.value.length?(A(),C("div",nd,[(A(),C(X,null,he(kt,d=>f("button",{key:d.id,class:Ne(["-mb-px whitespace-nowrap border-b-2 px-3 py-2 text-sm font-semibold transition",kn.value===d.id?"border-brand text-primary":"border-transparent text-secondary hover:text-primary"]),onClick:x=>kn.value=d.id},O(d.label),11,sd)),64))])):$("",!0),Be.value.length&&!g.value.length?(A(),C("p",od,"No plugins in this category.")):$("",!0),(A(!0),C(X,null,he(g.value,d=>(A(),C("div",{key:d.name,class:"border-t border-subtle px-5 py-4 first:border-t-0"},[f("div",id,[f("div",ld,[f("div",rd,[f("span",ad,O(d.name),1),f("span",{class:Ne(["rounded-sm px-1.5 py-0.5 font-mono text-[10px] font-medium uppercase tracking-wider",S[d.kind]])},O(d.kind),3),d.health?(A(),C("span",{key:0,class:Ne(["inline-flex items-center gap-1 rounded-sm px-1.5 py-0.5 font-mono text-[10px] font-medium",w[d.health.status]]),title:d.health.detail||""},[a[56]||(a[56]=f("span",{class:"h-1 w-1 rounded-full bg-current"},null,-1)),He(O(d.health.status),1),d.health.latencyMs?(A(),C("span",ud," · "+O(d.health.latencyMs)+"ms",1)):$("",!0)],10,cd)):$("",!0)]),f("div",dd,O(d.provider)+" · v"+O(d.version)+" · "+O(d.authType),1),d.health&&d.health.detail?(A(),C("div",fd,O(d.health.detail),1)):$("",!0),d.capabilities&&d.capabilities.length?(A(),C("div",pd,[a[57]||(a[57]=f("div",{class:"pv-eyebrow"},"Capabilities",-1)),(A(!0),C(X,null,he(d.capabilities,x=>(A(),C("div",{key:x.id,class:"flex flex-wrap items-baseline gap-x-2 gap-y-0.5"},[f("span",hd,O(x.id),1),x.method||x.endpoint?(A(),C("span",md,O(x.method)+" "+O(x.endpoint),1)):$("",!0),x.description?(A(),C("span",bd,O(x.description),1)):$("",!0)]))),128))])):$("",!0),d.baseURL?(A(),C("div",gd,O(d.baseURL),1)):$("",!0)]),f("div",vd,[f("button",{class:Ne(["pv-btn-sec pv-btn-sm",d.enabled?"!border-transparent !bg-success-tint !text-success":""]),disabled:ve.value===d.name,onClick:x=>E(d)},[f("span",{class:Ne(["h-1.5 w-1.5 rounded-full",d.enabled?"bg-success":"bg-muted"])},null,2),He(" "+O(d.enabled?"Enabled":"Disabled"),1)],10,xd),d.configFields&&d.configFields.length?(A(),C("button",{key:0,class:"pv-btn-sec pv-btn-sm",onClick:x=>_(d)},"Configure",8,yd)):$("",!0),Cn(d)?(A(),C(X,{key:1},[f("select",{value:En(d.name),class:"pv-input pv-input-sm max-w-[11rem]",title:"Bounding box used for this Check — smaller areas cost fewer OpenSky credits",onChange:x=>as(d.name,x.target.value)},[a[58]||(a[58]=f("option",{value:"__default__"},"Probe: saved default",-1)),(A(),C(X,null,he(Ft,x=>f("optgroup",{key:x.label,label:x.label},[(A(!0),C(X,null,he(x.options,te=>(A(),C("option",{key:te.value,value:te.value},O(te.label),9,Sd))),128))],8,wd)),64)),a[59]||(a[59]=f("option",{value:"__custom__"},"Custom…",-1))],40,_d),En(d.name)==="__custom__"?(A(),C("input",{key:0,value:me.value[d.name]||"",class:"pv-input pv-input-sm w-40 font-mono",placeholder:"lamin,lomin,lamax,lomax",onInput:x=>Ct(d.name,x.target.value)},null,40,Ad)):$("",!0)],64)):$("",!0),f("button",{class:"pv-btn-sec pv-btn-sm",disabled:ve.value===d.name,onClick:x=>P(d)},"Check",8,Cd),d.kind==="external"?(A(),C("button",{key:2,class:"pv-btn-sec pv-btn-sm !text-danger",disabled:ve.value===d.name,onClick:x=>R(d)},"Remove",8,Ed)):$("",!0)])]),Qe.value===d.name?(A(),C("div",kd,[(A(!0),C(X,null,he(d.configFields,x=>(A(),C("label",{key:x.key,class:"flex flex-col gap-1"},[f("span",Td,[He(O(x.label),1),x.required?(A(),C("span",Pd," *")):$("",!0)]),x.type==="select"?ie((A(),C("select",{key:0,"onUpdate:modelValue":te=>Ce.value[x.key]=te,class:"pv-input"},[(A(!0),C(X,null,he(x.options,te=>(A(),C("option",{key:te.value,value:te.value},O(te.label),9,Ud))),128))],8,Od)),[[zt,Ce.value[x.key]]]):x.type==="bbox"?(A(),C(X,{key:1},[f("select",{value:et(x.key),class:"pv-input",onChange:te=>Nt(x.key,te.target.value)},[(A(),C(X,null,he(Ft,te=>f("optgroup",{key:te.label,label:te.label},[(A(!0),C(X,null,he(te.options,Vt=>(A(),C("option",{key:Vt.value,value:Vt.value},O(Vt.label),9,Rd))),128))],8,Id)),64)),a[60]||(a[60]=f("option",{value:"__custom__"},"Custom…",-1))],40,Md),et(x.key)==="__custom__"?ie((A(),C("input",{key:0,"onUpdate:modelValue":te=>Ce.value[x.key]=te,type:"text",class:"pv-input font-mono",autocomplete:"off",placeholder:"50.5,3.2,53.7,7.3"},null,8,Fd)),[[ye,Ce.value[x.key]]]):$("",!0)],64)):ie((A(),C("input",{key:2,"onUpdate:modelValue":te=>Ce.value[x.key]=te,type:x.secret||x.type==="password"?"password":x.type==="number"?"number":"text",class:"pv-input",autocomplete:"off",placeholder:x.help||""},null,8,Nd)),[[Ea,Ce.value[x.key]]]),x.help?(A(),C("span",Ld,O(x.help),1)):$("",!0)]))),128)),f("div",Dd,[f("button",{class:"pv-btn pv-btn-sm",disabled:ve.value===d.name,onClick:x=>F(d)},"Save configuration",8,Bd),f("button",{class:"pv-btn-sec pv-btn-sm",onClick:a[19]||(a[19]=x=>Qe.value="")},"Cancel")])])):$("",!0)]))),128)),f("div",$d,[a[61]||(a[61]=f("div",{class:"pv-eyebrow mb-2"},"Register external plugin",-1)),f("div",jd,[ie(f("input",{"onUpdate:modelValue":a[20]||(a[20]=d=>Ie.value.name=d),class:"pv-input sm:w-40",placeholder:"name",autocomplete:"off",spellcheck:"false"},null,512),[[ye,Ie.value.name]]),ie(f("input",{"onUpdate:modelValue":a[21]||(a[21]=d=>Ie.value.baseURL=d),class:"pv-input flex-1",placeholder:"https://plugin.example.com",autocomplete:"off",spellcheck:"false"},null,512),[[ye,Ie.value.baseURL]]),f("button",{class:"pv-btn",disabled:Et.value,onClick:D},O(Et.value?"Adding…":"Add"),9,Vd)]),tt.value?(A(),C("p",Hd,O(tt.value),1)):$("",!0),a[62]||(a[62]=f("p",{class:"mt-2 text-[11px] text-muted"},[He(" A remote service that answers "),f("span",{class:"font-mono"},"GET /health"),He(" and "),f("span",{class:"font-mono"},"GET /manifest"),He(" — added at runtime, no rebuild. ")],-1))])])])],512),[[sn,u.value==="plugins"]])],64)):(A(),C("div",nc,[a[29]||(a[29]=f("div",{class:"border-b border-subtle px-5 py-4"},[f("div",{class:"text-base font-semibold text-primary"},"Sign in"),f("span",{class:"pv-eyebrow"},"Superadmin access only")],-1)),f("form",{class:"flex flex-col gap-3 px-5 py-5",onSubmit:Oa(U,["prevent"])},[f("label",sc,[a[27]||(a[27]=f("span",{class:"pv-eyebrow"},"Email",-1)),ie(f("input",{"onUpdate:modelValue":a[1]||(a[1]=d=>i.value.email=d),type:"email",autocomplete:"username",class:"pv-input",placeholder:"superadmin@pilotvault.local"},null,512),[[ye,i.value.email]])]),f("label",oc,[a[28]||(a[28]=f("span",{class:"pv-eyebrow"},"Password",-1)),ie(f("input",{"onUpdate:modelValue":a[2]||(a[2]=d=>i.value.password=d),type:"password",autocomplete:"current-password",class:"pv-input",placeholder:"••••••••"},null,512),[[ye,i.value.password]])]),l.value?(A(),C("p",ic,O(l.value),1)):$("",!0),f("button",{type:"submit",class:"pv-btn mt-1",disabled:r.value},O(r.value?"Signing in…":"Sign in"),9,lc)],32)])),a[63]||(a[63]=f("p",{class:"text-center font-mono text-[11px] text-muted"}," PilotVault — live drone telemetry, command & control. ",-1))]))}};Ra(Kd).mount("#app"); diff --git a/API Server/internal/api/dist/assets/index-Dh-j3HLZ.js b/API Server/internal/api/dist/assets/index-Dh-j3HLZ.js deleted file mode 100644 index 961afd9..0000000 --- a/API Server/internal/api/dist/assets/index-Dh-j3HLZ.js +++ /dev/null @@ -1,17 +0,0 @@ -(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const i of o)if(i.type==="childList")for(const l of i.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&s(l)}).observe(document,{childList:!0,subtree:!0});function n(o){const i={};return o.integrity&&(i.integrity=o.integrity),o.referrerPolicy&&(i.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?i.credentials="include":o.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function s(o){if(o.ep)return;o.ep=!0;const i=n(o);fetch(o.href,i)}})();/** -* @vue/shared v3.5.39 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function Is(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const oe={},Gt=[],rt=()=>{},Bo=()=>!1,Yn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Zn=e=>e.startsWith("onUpdate:"),Se=Object.assign,Rs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},il=Object.prototype.hasOwnProperty,ee=(e,t)=>il.call(e,t),B=Array.isArray,Wt=e=>_n(e)==="[object Map]",Qt=e=>_n(e)==="[object Set]",oo=e=>_n(e)==="[object Date]",V=e=>typeof e=="function",ae=e=>typeof e=="string",at=e=>typeof e=="symbol",se=e=>e!==null&&typeof e=="object",$o=e=>(se(e)||V(e))&&V(e.then)&&V(e.catch),jo=Object.prototype.toString,_n=e=>jo.call(e),ll=e=>_n(e).slice(8,-1),Vo=e=>_n(e)==="[object Object]",Fs=e=>ae(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,an=Is(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Xn=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},rl=/-\w/g,Je=Xn(e=>e.replace(rl,t=>t.slice(1).toUpperCase())),al=/\B([A-Z])/g,At=Xn(e=>e.replace(al,"-$1").toLowerCase()),Ho=Xn(e=>e.charAt(0).toUpperCase()+e.slice(1)),cs=Xn(e=>e?`on${Ho(e)}`:""),lt=(e,t)=>!Object.is(e,t),Dn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Qn=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let io;const es=()=>io||(io=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ns(e){if(B(e)){const t={};for(let n=0;n{if(n){const s=n.split(ul);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Fe(e){let t="";if(ae(e))t=e;else if(B(e))for(let n=0;n_t(n,t))}const Go=e=>!!(e&&e.__v_isRef===!0),O=e=>ae(e)?e:e==null?"":B(e)||se(e)&&(e.toString===jo||!V(e.toString))?Go(e)?O(e.value):JSON.stringify(e,Wo,2):String(e),Wo=(e,t)=>Go(t)?Wo(e,t.value):Wt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,o],i)=>(n[us(s,i)+" =>"]=o,n),{})}:Qt(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>us(n))}:at(t)?us(t):se(t)&&!B(t)&&!Vo(t)?String(t):t,us=(e,t="")=>{var n;return at(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.5.39 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let ge;class ml{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&ge&&(ge.active?(this.parent=ge,this.index=(ge.scopes||(ge.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0){if(ge===this)ge=this.prevScope;else{let t=ge;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(un){let t=un;for(un=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;cn;){let t=cn;for(cn=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function Zo(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Xo(e){let t,n=e.depsTail,s=n;for(;s;){const o=s.prevDep;s.version===-1?(s===n&&(n=o),$s(s),vl(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=o}e.deps=t,e.depsTail=n}function _s(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Qo(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Qo(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===bn)||(e.globalVersion=bn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!_s(e))))return;e.flags|=2;const t=e.dep,n=le,s=qe;le=e,qe=!0;try{Zo(e);const o=e.fn(e._value);(t.version===0||lt(o,e._value))&&(e.flags|=128,e._value=o,t.version++)}catch(o){throw t.version++,o}finally{le=n,qe=s,Xo(e),e.flags&=-3}}function $s(e,t=!1){const{dep:n,prevSub:s,nextSub:o}=e;if(s&&(s.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)$s(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function vl(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let qe=!0;const ei=[];function ct(){ei.push(qe),qe=!1}function ut(){const e=ei.pop();qe=e===void 0?!0:e}function lo(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=le;le=void 0;try{t()}finally{le=n}}}let bn=0;class xl{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class js{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!le||!qe||le===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==le)n=this.activeLink=new xl(le,this),le.deps?(n.prevDep=le.depsTail,le.depsTail.nextDep=n,le.depsTail=n):le.deps=le.depsTail=n,ti(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=le.depsTail,n.nextDep=void 0,le.depsTail.nextDep=n,le.depsTail=n,le.deps===n&&(le.deps=s)}return n}trigger(t){this.version++,bn++,this.notify(t)}notify(t){Ds();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Bs()}}}function ti(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)ti(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const ws=new WeakMap,It=Symbol(""),Ss=Symbol(""),mn=Symbol("");function _e(e,t,n){if(qe&&le){let s=ws.get(e);s||ws.set(e,s=new Map);let o=s.get(n);o||(s.set(n,o=new js),o.map=s,o.key=n),o.track()}}function bt(e,t,n,s,o,i){const l=ws.get(e);if(!l){bn++;return}const r=u=>{u&&u.trigger()};if(Ds(),t==="clear")l.forEach(r);else{const u=B(e),m=u&&Fs(n);if(u&&n==="length"){const h=Number(s);l.forEach((y,U)=>{(U==="length"||U===mn||!at(U)&&U>=h)&&r(y)})}else switch((n!==void 0||l.has(void 0))&&r(l.get(n)),m&&r(l.get(mn)),t){case"add":u?m&&r(l.get("length")):(r(l.get(It)),Wt(e)&&r(l.get(Ss)));break;case"delete":u||(r(l.get(It)),Wt(e)&&r(l.get(Ss)));break;case"set":Wt(e)&&r(l.get(It));break}}Bs()}function Ht(e){const t=Q(e);return t===e?t:(_e(t,"iterate",mn),ze(e)?t:t.map(Ye))}function ts(e){return _e(e=Q(e),"iterate",mn),e}function ot(e,t){return vt(e)?Yt(Rt(e)?Ye(t):t):Ye(t)}const yl={__proto__:null,[Symbol.iterator](){return fs(this,Symbol.iterator,e=>ot(this,e))},concat(...e){return Ht(this).concat(...e.map(t=>B(t)?Ht(t):t))},entries(){return fs(this,"entries",e=>(e[1]=ot(this,e[1]),e))},every(e,t){return ft(this,"every",e,t,void 0,arguments)},filter(e,t){return ft(this,"filter",e,t,n=>n.map(s=>ot(this,s)),arguments)},find(e,t){return ft(this,"find",e,t,n=>ot(this,n),arguments)},findIndex(e,t){return ft(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return ft(this,"findLast",e,t,n=>ot(this,n),arguments)},findLastIndex(e,t){return ft(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return ft(this,"forEach",e,t,void 0,arguments)},includes(...e){return ps(this,"includes",e)},indexOf(...e){return ps(this,"indexOf",e)},join(e){return Ht(this).join(e)},lastIndexOf(...e){return ps(this,"lastIndexOf",e)},map(e,t){return ft(this,"map",e,t,void 0,arguments)},pop(){return en(this,"pop")},push(...e){return en(this,"push",e)},reduce(e,...t){return ro(this,"reduce",e,t)},reduceRight(e,...t){return ro(this,"reduceRight",e,t)},shift(){return en(this,"shift")},some(e,t){return ft(this,"some",e,t,void 0,arguments)},splice(...e){return en(this,"splice",e)},toReversed(){return Ht(this).toReversed()},toSorted(e){return Ht(this).toSorted(e)},toSpliced(...e){return Ht(this).toSpliced(...e)},unshift(...e){return en(this,"unshift",e)},values(){return fs(this,"values",e=>ot(this,e))}};function fs(e,t,n){const s=ts(e),o=s[t]();return s!==e&&!ze(e)&&(o._next=o.next,o.next=()=>{const i=o._next();return i.done||(i.value=n(i.value)),i}),o}const _l=Array.prototype;function ft(e,t,n,s,o,i){const l=ts(e),r=l!==e&&!ze(e),u=l[t];if(u!==_l[t]){const y=u.apply(e,i);return r?Ye(y):y}let m=n;l!==e&&(r?m=function(y,U){return n.call(this,ot(e,y),U,e)}:n.length>2&&(m=function(y,U){return n.call(this,y,U,e)}));const h=u.call(l,m,s);return r&&o?o(h):h}function ro(e,t,n,s){const o=ts(e),i=o!==e&&!ze(e);let l=n,r=!1;o!==e&&(i?(r=s.length===0,l=function(m,h,y){return r&&(r=!1,m=ot(e,m)),n.call(this,m,ot(e,h),y,e)}):n.length>3&&(l=function(m,h,y){return n.call(this,m,h,y,e)}));const u=o[t](l,...s);return r?ot(e,u):u}function ps(e,t,n){const s=Q(e);_e(s,"iterate",mn);const o=s[t](...n);return(o===-1||o===!1)&&zs(n[0])?(n[0]=Q(n[0]),s[t](...n)):o}function en(e,t,n=[]){ct(),Ds();const s=Q(e)[t].apply(e,n);return Bs(),ut(),s}const wl=Is("__proto__,__v_isRef,__isVue"),ni=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(at));function Sl(e){at(e)||(e=String(e));const t=Q(this);return _e(t,"has",e),t.hasOwnProperty(e)}class si{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const o=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(o?i?Il:ri:i?li:ii).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const l=B(t);if(!o){let u;if(l&&(u=yl[n]))return u;if(n==="hasOwnProperty")return Sl}const r=Reflect.get(t,n,we(t)?t:s);if((at(n)?ni.has(n):wl(n))||(o||_e(t,"get",n),i))return r;if(we(r)){const u=l&&Fs(n)?r:r.value;return o&&se(u)?Cs(u):u}return se(r)?o?Cs(r):Hs(r):r}}class oi extends si{constructor(t=!1){super(!1,t)}set(t,n,s,o){let i=t[n];const l=B(t)&&Fs(n);if(!this._isShallow){const m=vt(i);if(!ze(s)&&!vt(s)&&(i=Q(i),s=Q(s)),!l&&we(i)&&!we(s))return m||(i.value=s),!0}const r=l?Number(n)e,In=e=>Reflect.getPrototypeOf(e);function Tl(e,t,n){return function(...s){const o=this.__v_raw,i=Q(o),l=Wt(i),r=e==="entries"||e===Symbol.iterator&&l,u=e==="keys"&&l,m=o[e](...s),h=n?As:t?Yt:Ye;return!t&&_e(i,"iterate",u?Ss:It),Se(Object.create(m),{next(){const{value:y,done:U}=m.next();return U?{value:y,done:U}:{value:r?[h(y[0]),h(y[1])]:h(y),done:U}}})}}function Rn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Pl(e,t){const n={get(o){const i=this.__v_raw,l=Q(i),r=Q(o);e||(lt(o,r)&&_e(l,"get",o),_e(l,"get",r));const{has:u}=In(l),m=t?As:e?Yt:Ye;if(u.call(l,o))return m(i.get(o));if(u.call(l,r))return m(i.get(r));i!==l&&i.get(o)},get size(){const o=this.__v_raw;return!e&&_e(Q(o),"iterate",It),o.size},has(o){const i=this.__v_raw,l=Q(i),r=Q(o);return e||(lt(o,r)&&_e(l,"has",o),_e(l,"has",r)),o===r?i.has(o):i.has(o)||i.has(r)},forEach(o,i){const l=this,r=l.__v_raw,u=Q(r),m=t?As:e?Yt:Ye;return!e&&_e(u,"iterate",It),r.forEach((h,y)=>o.call(i,m(h),m(y),l))}};return Se(n,e?{add:Rn("add"),set:Rn("set"),delete:Rn("delete"),clear:Rn("clear")}:{add(o){const i=Q(this),l=In(i),r=Q(o),u=!t&&!ze(o)&&!vt(o)?r:o;return l.has.call(i,u)||lt(o,u)&&l.has.call(i,o)||lt(r,u)&&l.has.call(i,r)||(i.add(u),bt(i,"add",u,u)),this},set(o,i){!t&&!ze(i)&&!vt(i)&&(i=Q(i));const l=Q(this),{has:r,get:u}=In(l);let m=r.call(l,o);m||(o=Q(o),m=r.call(l,o));const h=u.call(l,o);return l.set(o,i),m?lt(i,h)&&bt(l,"set",o,i):bt(l,"add",o,i),this},delete(o){const i=Q(this),{has:l,get:r}=In(i);let u=l.call(i,o);u||(o=Q(o),u=l.call(i,o)),r&&r.call(i,o);const m=i.delete(o);return u&&bt(i,"delete",o,void 0),m},clear(){const o=Q(this),i=o.size!==0,l=o.clear();return i&&bt(o,"clear",void 0,void 0),l}}),["keys","values","entries",Symbol.iterator].forEach(o=>{n[o]=Tl(o,e,t)}),n}function Vs(e,t){const n=Pl(e,t);return(s,o,i)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?s:Reflect.get(ee(n,o)&&o in s?n:s,o,i)}const Ol={get:Vs(!1,!1)},Ul={get:Vs(!1,!0)},Ml={get:Vs(!0,!1)};const ii=new WeakMap,li=new WeakMap,ri=new WeakMap,Il=new WeakMap;function Rl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Hs(e){return vt(e)?e:Ks(e,!1,Cl,Ol,ii)}function Fl(e){return Ks(e,!1,kl,Ul,li)}function Cs(e){return Ks(e,!0,El,Ml,ri)}function Ks(e,t,n,s,o){if(!se(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const i=o.get(e);if(i)return i;const l=Rl(ll(e));if(l===0)return e;const r=new Proxy(e,l===2?s:n);return o.set(e,r),r}function Rt(e){return vt(e)?Rt(e.__v_raw):!!(e&&e.__v_isReactive)}function vt(e){return!!(e&&e.__v_isReadonly)}function ze(e){return!!(e&&e.__v_isShallow)}function zs(e){return e?!!e.__v_raw:!1}function Q(e){const t=e&&e.__v_raw;return t?Q(t):e}function Nl(e){return!ee(e,"__v_skip")&&Object.isExtensible(e)&&Ko(e,"__v_skip",!0),e}const Ye=e=>se(e)?Hs(e):e,Yt=e=>se(e)?Cs(e):e;function we(e){return e?e.__v_isRef===!0:!1}function L(e){return Ll(e,!1)}function Ll(e,t){return we(e)?e:new Dl(e,t)}class Dl{constructor(t,n){this.dep=new js,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:Q(t),this._value=n?t:Ye(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||ze(t)||vt(t);t=s?t:Q(t),lt(t,n)&&(this._rawValue=t,this._value=s?t:Ye(t),this.dep.trigger())}}function on(e){return we(e)?e.value:e}const Bl={get:(e,t,n)=>t==="__v_raw"?e:on(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const o=e[t];return we(o)&&!we(n)?(o.value=n,!0):Reflect.set(e,t,n,s)}};function ai(e){return Rt(e)?e:new Proxy(e,Bl)}class $l{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new js(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=bn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&le!==this)return Yo(this,!0),!0}get value(){const t=this.dep.track();return Qo(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function jl(e,t,n=!1){let s,o;return V(e)?s=e:(s=e.get,o=e.set),new $l(s,o,n)}const Fn={},Vn=new WeakMap;let Mt;function Vl(e,t=!1,n=Mt){if(n){let s=Vn.get(n);s||Vn.set(n,s=[]),s.push(e)}}function Hl(e,t,n=oe){const{immediate:s,deep:o,once:i,scheduler:l,augmentJob:r,call:u}=n,m=N=>o?N:ze(N)||o===!1||o===0?mt(N,1):mt(N);let h,y,U,M,J=!1,I=!1;if(we(e)?(y=()=>e.value,J=ze(e)):Rt(e)?(y=()=>m(e),J=!0):B(e)?(I=!0,J=e.some(N=>Rt(N)||ze(N)),y=()=>e.map(N=>{if(we(N))return N.value;if(Rt(N))return m(N);if(V(N))return u?u(N,2):N()})):V(e)?t?y=u?()=>u(e,2):e:y=()=>{if(U){ct();try{U()}finally{ut()}}const N=Mt;Mt=h;try{return u?u(e,3,[M]):e(M)}finally{Mt=N}}:y=rt,t&&o){const N=y,K=o===!0?1/0:o;y=()=>mt(N(),K)}const z=gl(),Y=()=>{h.stop(),z&&z.active&&Rs(z.effects,h)};if(i&&t){const N=t;t=(...K)=>{const Ue=N(...K);return Y(),Ue}}let j=I?new Array(e.length).fill(Fn):Fn;const Z=N=>{if(!(!(h.flags&1)||!h.dirty&&!N))if(t){const K=h.run();if(N||o||J||(I?K.some((Ue,De)=>lt(Ue,j[De])):lt(K,j))){U&&U();const Ue=Mt;Mt=h;try{const De=[K,j===Fn?void 0:I&&j[0]===Fn?[]:j,M];j=K,u?u(t,3,De):t(...De)}finally{Mt=Ue}}}else h.run()};return r&&r(Z),h=new Jo(y),h.scheduler=l?()=>l(Z,!1):Z,M=N=>Vl(N,!1,h),U=h.onStop=()=>{const N=Vn.get(h);if(N){if(u)u(N,4);else for(const K of N)K();Vn.delete(h)}},t?s?Z(!0):j=h.run():l?l(Z.bind(null,!0),!0):h.run(),Y.pause=h.pause.bind(h),Y.resume=h.resume.bind(h),Y.stop=Y,Y}function mt(e,t=1/0,n){if(t<=0||!se(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,we(e))mt(e.value,t,n);else if(B(e))for(let s=0;s{mt(s,t,n)});else if(Vo(e)){for(const s in e)mt(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&mt(e[s],t,n)}return e}/** -* @vue/runtime-core v3.5.39 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function wn(e,t,n,s){try{return s?e(...s):e()}catch(o){ns(o,t,n)}}function Ze(e,t,n,s){if(V(e)){const o=wn(e,t,n,s);return o&&$o(o)&&o.catch(i=>{ns(i,t,n)}),o}if(B(e)){const o=[];for(let i=0;i>>1,o=ke[s],i=gn(o);i=gn(n)?ke.push(e):ke.splice(zl(t),0,e),e.flags|=1,di()}}function di(){Hn||(Hn=ci.then(pi))}function Gl(e){B(e)?Jt.push(...e):yt&&e.id===-1?yt.splice(Kt+1,0,e):e.flags&1||(Jt.push(e),e.flags|=1),di()}function ao(e,t,n=st+1){for(;ngn(n)-gn(s));if(Jt.length=0,yt){yt.push(...t);return}for(yt=t,Kt=0;Kte.id==null?e.flags&2?-1:1/0:e.id;function pi(e){try{for(st=0;st{s._d&&yo(-1);const i=Kn(t);let l;try{l=e(...o)}finally{Kn(i),s._d&&yo(1)}return l};return s._n=!0,s._c=!0,s._d=!0,s}function ie(e,t){if(Ke===null)return e;const n=ls(Ke),s=e.dirs||(e.dirs=[]);for(let o=0;o1)return n&&V(t)?t.call(s&&s.proxy):t}}const ql=Symbol.for("v-scx"),Yl=()=>Bn(ql);function hs(e,t,n){return bi(e,t,n)}function bi(e,t,n=oe){const{immediate:s,deep:o,flush:i,once:l}=n,r=Se({},n),u=t&&s||!t&&i!=="post";let m;if(xn){if(i==="sync"){const M=Yl();m=M.__watcherHandles||(M.__watcherHandles=[])}else if(!u){const M=()=>{};return M.stop=rt,M.resume=rt,M.pause=rt,M}}const h=Te;r.call=(M,J,I)=>Ze(M,h,J,I);let y=!1;i==="post"?r.scheduler=M=>{Oe(M,h&&h.suspense)}:i!=="sync"&&(y=!0,r.scheduler=(M,J)=>{J?M():Gs(M)}),r.augmentJob=M=>{t&&(M.flags|=4),y&&(M.flags|=2,h&&(M.id=h.uid,M.i=h))};const U=Hl(e,t,r);return xn&&(m?m.push(U):u&&U()),U}function Zl(e,t,n){const s=this.proxy,o=ae(e)?e.includes(".")?mi(s,e):()=>s[e]:e.bind(s,s);let i;V(t)?i=t:(i=t.handler,n=t);const l=Sn(this),r=bi(o,i.bind(s),n);return l(),r}function mi(e,t){const n=t.split(".");return()=>{let s=e;for(let o=0;oe.__isTeleport,bs=Symbol("_leaveCb");function Ws(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Ws(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function gi(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function co(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const zn=new WeakMap;function dn(e,t,n,s,o=!1){if(B(e)){e.forEach((I,z)=>dn(I,t&&(B(t)?t[z]:t),n,s,o));return}if(fn(s)&&!o){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&dn(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?ls(s.component):s.el,l=o?null:i,{i:r,r:u}=e,m=t&&t.r,h=r.refs===oe?r.refs={}:r.refs,y=r.setupState,U=Q(y),M=y===oe?Bo:I=>co(h,I)?!1:ee(U,I),J=(I,z)=>!(z&&co(h,z));if(m!=null&&m!==u){if(uo(t),ae(m))h[m]=null,M(m)&&(y[m]=null);else if(we(m)){const I=t;J(m,I.k)&&(m.value=null),I.k&&(h[I.k]=null)}}if(V(u)){ct();try{wn(u,r,12,[l,h])}finally{ut()}}else{const I=ae(u),z=we(u);if(I||z){const Y=()=>{if(e.f){const j=I?M(u)?y[u]:h[u]:J()||!e.k?u.value:h[e.k];if(o)B(j)&&Rs(j,i);else if(B(j))j.includes(i)||j.push(i);else if(I)h[u]=[i],M(u)&&(y[u]=h[u]);else{const Z=[i];J(u,e.k)&&(u.value=Z),e.k&&(h[e.k]=Z)}}else I?(h[u]=l,M(u)&&(y[u]=l)):z&&(J(u,e.k)&&(u.value=l),e.k&&(h[e.k]=l))};if(l){const j=()=>{Y(),zn.delete(e)};j.id=-1,zn.set(e,j),Oe(j,n)}else uo(e),Y()}}}function uo(e){const t=zn.get(e);t&&(t.flags|=8,zn.delete(e))}es().requestIdleCallback;es().cancelIdleCallback;const fn=e=>!!e.type.__asyncLoader,vi=e=>e.type.__isKeepAlive;function er(e,t){xi(e,"a",t)}function tr(e,t){xi(e,"da",t)}function xi(e,t,n=Te){const s=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(ss(t,s,n),n){let o=n.parent;for(;o&&o.parent;)vi(o.parent.vnode)&&nr(s,t,n,o),o=o.parent}}function nr(e,t,n,s){const o=ss(t,e,s,!0);Js(()=>{Rs(s[t],o)},n)}function ss(e,t,n=Te,s=!1){if(n){const o=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...l)=>{ct();const r=Sn(n),u=Ze(t,n,e,l);return r(),ut(),u});return s?o.unshift(i):o.push(i),i}}const xt=e=>(t,n=Te)=>{(!xn||e==="sp")&&ss(e,(...s)=>t(...s),n)},sr=xt("bm"),yi=xt("m"),or=xt("bu"),ir=xt("u"),lr=xt("bum"),Js=xt("um"),rr=xt("sp"),ar=xt("rtg"),cr=xt("rtc");function ur(e,t=Te){ss("ec",e,t)}const dr=Symbol.for("v-ndc");function he(e,t,n,s){let o;const i=n,l=B(e);if(l||ae(e)){const r=l&&Rt(e);let u=!1,m=!1;r&&(u=!ze(e),m=vt(e),e=ts(e)),o=new Array(e.length);for(let h=0,y=e.length;ht(r,u,void 0,i));else{const r=Object.keys(e);o=new Array(r.length);for(let u=0,m=r.length;ue?ji(e)?ls(e):Es(e.parent):null,pn=Se(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Es(e.parent),$root:e=>Es(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>wi(e),$forceUpdate:e=>e.f||(e.f=()=>{Gs(e.update)}),$nextTick:e=>e.n||(e.n=ui.bind(e.proxy)),$watch:e=>Zl.bind(e)}),ms=(e,t)=>e!==oe&&!e.__isScriptSetup&&ee(e,t),fr={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:o,props:i,accessCache:l,type:r,appContext:u}=e;if(t[0]!=="$"){const U=l[t];if(U!==void 0)switch(U){case 1:return s[t];case 2:return o[t];case 4:return n[t];case 3:return i[t]}else{if(ms(s,t))return l[t]=1,s[t];if(o!==oe&&ee(o,t))return l[t]=2,o[t];if(ee(i,t))return l[t]=3,i[t];if(n!==oe&&ee(n,t))return l[t]=4,n[t];ks&&(l[t]=0)}}const m=pn[t];let h,y;if(m)return t==="$attrs"&&_e(e.attrs,"get",""),m(e);if((h=r.__cssModules)&&(h=h[t]))return h;if(n!==oe&&ee(n,t))return l[t]=4,n[t];if(y=u.config.globalProperties,ee(y,t))return y[t]},set({_:e},t,n){const{data:s,setupState:o,ctx:i}=e;return ms(o,t)?(o[t]=n,!0):s!==oe&&ee(s,t)?(s[t]=n,!0):ee(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:o,props:i,type:l}},r){let u;return!!(n[r]||e!==oe&&r[0]!=="$"&&ee(e,r)||ms(t,r)||ee(i,r)||ee(s,r)||ee(pn,r)||ee(o.config.globalProperties,r)||(u=l.__cssModules)&&u[r])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ee(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function fo(e){return B(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let ks=!0;function pr(e){const t=wi(e),n=e.proxy,s=e.ctx;ks=!1,t.beforeCreate&&po(t.beforeCreate,e,"bc");const{data:o,computed:i,methods:l,watch:r,provide:u,inject:m,created:h,beforeMount:y,mounted:U,beforeUpdate:M,updated:J,activated:I,deactivated:z,beforeDestroy:Y,beforeUnmount:j,destroyed:Z,unmounted:N,render:K,renderTracked:Ue,renderTriggered:De,errorCaptured:Xe,serverPrefetch:Be,expose:Pe,inheritAttrs:de,components:Qe,directives:Ae,filters:ve}=t;if(m&&hr(m,s,null),l)for(const ne in l){const q=l[ne];V(q)&&(s[ne]=q.bind(n))}if(o){const ne=o.call(n,n);se(ne)&&(e.data=Hs(ne))}if(ks=!0,i)for(const ne in i){const q=i[ne],et=V(q)?q.bind(n,n):V(q.get)?q.get.bind(n,n):rt,Nt=!V(q)&&V(q.set)?q.set.bind(n):rt,be=Us({get:et,set:Nt});Object.defineProperty(s,ne,{enumerable:!0,configurable:!0,get:()=>be.value,set:pe=>be.value=pe})}if(r)for(const ne in r)_i(r[ne],s,n,ne);if(u){const ne=V(u)?u.call(n):u;Reflect.ownKeys(ne).forEach(q=>{Jl(q,ne[q])})}h&&po(h,e,"c");function fe(ne,q){B(q)?q.forEach(et=>ne(et.bind(n))):q&&ne(q.bind(n))}if(fe(sr,y),fe(yi,U),fe(or,M),fe(ir,J),fe(er,I),fe(tr,z),fe(ur,Xe),fe(cr,Ue),fe(ar,De),fe(lr,j),fe(Js,N),fe(rr,Be),B(Pe))if(Pe.length){const ne=e.exposed||(e.exposed={});Pe.forEach(q=>{Object.defineProperty(ne,q,{get:()=>n[q],set:et=>n[q]=et,enumerable:!0})})}else e.exposed||(e.exposed={});K&&e.render===rt&&(e.render=K),de!=null&&(e.inheritAttrs=de),Qe&&(e.components=Qe),Ae&&(e.directives=Ae),Be&&gi(e)}function hr(e,t,n=rt){B(e)&&(e=Ts(e));for(const s in e){const o=e[s];let i;se(o)?"default"in o?i=Bn(o.from||s,o.default,!0):i=Bn(o.from||s):i=Bn(o),we(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:l=>i.value=l}):t[s]=i}}function po(e,t,n){Ze(B(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function _i(e,t,n,s){let o=s.includes(".")?mi(n,s):()=>n[s];if(ae(e)){const i=t[e];V(i)&&hs(o,i)}else if(V(e))hs(o,e.bind(n));else if(se(e))if(B(e))e.forEach(i=>_i(i,t,n,s));else{const i=V(e.handler)?e.handler.bind(n):t[e.handler];V(i)&&hs(o,i,e)}}function wi(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:o,optionsCache:i,config:{optionMergeStrategies:l}}=e.appContext,r=i.get(t);let u;return r?u=r:!o.length&&!n&&!s?u=t:(u={},o.length&&o.forEach(m=>Gn(u,m,l,!0)),Gn(u,t,l)),se(t)&&i.set(t,u),u}function Gn(e,t,n,s=!1){const{mixins:o,extends:i}=t;i&&Gn(e,i,n,!0),o&&o.forEach(l=>Gn(e,l,n,!0));for(const l in t)if(!(s&&l==="expose")){const r=br[l]||n&&n[l];e[l]=r?r(e[l],t[l]):t[l]}return e}const br={data:ho,props:bo,emits:bo,methods:ln,computed:ln,beforeCreate:Ee,created:Ee,beforeMount:Ee,mounted:Ee,beforeUpdate:Ee,updated:Ee,beforeDestroy:Ee,beforeUnmount:Ee,destroyed:Ee,unmounted:Ee,activated:Ee,deactivated:Ee,errorCaptured:Ee,serverPrefetch:Ee,components:ln,directives:ln,watch:gr,provide:ho,inject:mr};function ho(e,t){return t?e?function(){return Se(V(e)?e.call(this,this):e,V(t)?t.call(this,this):t)}:t:e}function mr(e,t){return ln(Ts(e),Ts(t))}function Ts(e){if(B(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Je(t)}Modifiers`]||e[`${At(t)}Modifiers`];function _r(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||oe;let o=n;const i=t.startsWith("update:"),l=i&&yr(s,t.slice(7));l&&(l.trim&&(o=n.map(h=>ae(h)?h.trim():h)),l.number&&(o=n.map(Qn)));let r,u=s[r=cs(t)]||s[r=cs(Je(t))];!u&&i&&(u=s[r=cs(At(t))]),u&&Ze(u,e,6,o);const m=s[r+"Once"];if(m){if(!e.emitted)e.emitted={};else if(e.emitted[r])return;e.emitted[r]=!0,Ze(m,e,6,o)}}const wr=new WeakMap;function Ai(e,t,n=!1){const s=n?wr:t.emitsCache,o=s.get(e);if(o!==void 0)return o;const i=e.emits;let l={},r=!1;if(!V(e)){const u=m=>{const h=Ai(m,t,!0);h&&(r=!0,Se(l,h))};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}return!i&&!r?(se(e)&&s.set(e,null),null):(B(i)?i.forEach(u=>l[u]=null):Se(l,i),se(e)&&s.set(e,l),l)}function os(e,t){return!e||!Yn(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),ee(e,t[0].toLowerCase()+t.slice(1))||ee(e,At(t))||ee(e,t))}function mo(e){const{type:t,vnode:n,proxy:s,withProxy:o,propsOptions:[i],slots:l,attrs:r,emit:u,render:m,renderCache:h,props:y,data:U,setupState:M,ctx:J,inheritAttrs:I}=e,z=Kn(e);let Y,j;try{if(n.shapeFlag&4){const N=o||s,K=N;Y=it(m.call(K,N,h,y,M,U,J)),j=r}else{const N=t;Y=it(N.length>1?N(y,{attrs:r,slots:l,emit:u}):N(y,null)),j=t.props?r:Sr(r)}}catch(N){hn.length=0,ns(N,e,1),Y=Le(wt)}let Z=Y;if(j&&I!==!1){const N=Object.keys(j),{shapeFlag:K}=Z;N.length&&K&7&&(i&&N.some(Zn)&&(j=Ar(j,i)),Z=Zt(Z,j,!1,!0))}return n.dirs&&(Z=Zt(Z,null,!1,!0),Z.dirs=Z.dirs?Z.dirs.concat(n.dirs):n.dirs),n.transition&&Ws(Z,n.transition),Y=Z,Kn(z),Y}const Sr=e=>{let t;for(const n in e)(n==="class"||n==="style"||Yn(n))&&((t||(t={}))[n]=e[n]);return t},Ar=(e,t)=>{const n={};for(const s in e)(!Zn(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Cr(e,t,n){const{props:s,children:o,component:i}=e,{props:l,children:r,patchFlag:u}=t,m=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&u>=0){if(u&1024)return!0;if(u&16)return s?go(s,l,m):!!l;if(u&8){const h=t.dynamicProps;for(let y=0;yObject.create(Ei),Ti=e=>Object.getPrototypeOf(e)===Ei;function kr(e,t,n,s=!1){const o={},i=ki();e.propsDefaults=Object.create(null),Pi(e,t,o,i);for(const l in e.propsOptions[0])l in o||(o[l]=void 0);n?e.props=s?o:Fl(o):e.type.props?e.props=o:e.props=i,e.attrs=i}function Tr(e,t,n,s){const{props:o,attrs:i,vnode:{patchFlag:l}}=e,r=Q(o),[u]=e.propsOptions;let m=!1;if((s||l>0)&&!(l&16)){if(l&8){const h=e.vnode.dynamicProps;for(let y=0;y{u=!0;const[U,M]=Oi(y,t,!0);Se(l,U),M&&r.push(...M)};!n&&t.mixins.length&&t.mixins.forEach(h),e.extends&&h(e.extends),e.mixins&&e.mixins.forEach(h)}if(!i&&!u)return se(e)&&s.set(e,Gt),Gt;if(B(i))for(let h=0;he==="_"||e==="_ctx"||e==="$stable",Ys=e=>B(e)?e.map(it):[it(e)],Or=(e,t,n)=>{if(t._n)return t;const s=Wl((...o)=>Ys(t(...o)),n);return s._c=!1,s},Ui=(e,t,n)=>{const s=e._ctx;for(const o in e){if(qs(o))continue;const i=e[o];if(V(i))t[o]=Or(o,i,s);else if(i!=null){const l=Ys(i);t[o]=()=>l}}},Mi=(e,t)=>{const n=Ys(t);e.slots.default=()=>n},Ii=(e,t,n)=>{for(const s in t)(n||!qs(s))&&(e[s]=t[s])},Ur=(e,t,n)=>{const s=e.slots=ki();if(e.vnode.shapeFlag&32){const o=t._;o?(Ii(s,t,n),n&&Ko(s,"_",o,!0)):Ui(t,s)}else t&&Mi(e,t)},Mr=(e,t,n)=>{const{vnode:s,slots:o}=e;let i=!0,l=oe;if(s.shapeFlag&32){const r=t._;r?n&&r===1?i=!1:Ii(o,t,n):(i=!t.$stable,Ui(t,o)),l=t}else t&&(Mi(e,t),l={default:1});if(i)for(const r in o)!qs(r)&&l[r]==null&&delete o[r]},Oe=Lr;function Ir(e){return Rr(e)}function Rr(e,t){const n=es();n.__VUE__=!0;const{insert:s,remove:o,patchProp:i,createElement:l,createText:r,createComment:u,setText:m,setElementText:h,parentNode:y,nextSibling:U,setScopeId:M=rt,insertStaticContent:J}=e,I=(c,p,g,S=null,w=null,v=null,T=void 0,k=null,E=!!p.dynamicChildren)=>{if(c===p)return;c&&!tn(c,p)&&(S=Me(c),pe(c,w,v,!0),c=null),p.patchFlag===-2&&(E=!1,p.dynamicChildren=null);const{type:_,ref:F,shapeFlag:P}=p;switch(_){case is:z(c,p,g,S);break;case wt:Y(c,p,g,S);break;case $n:c==null&&j(p,g,S,T);break;case X:Qe(c,p,g,S,w,v,T,k,E);break;default:P&1?K(c,p,g,S,w,v,T,k,E):P&6?Ae(c,p,g,S,w,v,T,k,E):(P&64||P&128)&&_.process(c,p,g,S,w,v,T,k,E,kt)}F!=null&&w?dn(F,c&&c.ref,v,p||c,!p):F==null&&c&&c.ref!=null&&dn(c.ref,null,v,c,!0)},z=(c,p,g,S)=>{if(c==null)s(p.el=r(p.children),g,S);else{const w=p.el=c.el;p.children!==c.children&&m(w,p.children)}},Y=(c,p,g,S)=>{c==null?s(p.el=u(p.children||""),g,S):p.el=c.el},j=(c,p,g,S)=>{[c.el,c.anchor]=J(c.children,p,g,S,c.el,c.anchor)},Z=({el:c,anchor:p},g,S)=>{let w;for(;c&&c!==p;)w=U(c),s(c,g,S),c=w;s(p,g,S)},N=({el:c,anchor:p})=>{let g;for(;c&&c!==p;)g=U(c),o(c),c=g;o(p)},K=(c,p,g,S,w,v,T,k,E)=>{if(p.type==="svg"?T="svg":p.type==="math"&&(T="mathml"),c==null)Ue(p,g,S,w,v,T,k,E);else{const _=c.el&&c.el._isVueCE?c.el:null;try{_&&_._beginPatch(),Be(c,p,w,v,T,k,E)}finally{_&&_._endPatch()}}},Ue=(c,p,g,S,w,v,T,k)=>{let E,_;const{props:F,shapeFlag:P,transition:R,dirs:D}=c;if(E=c.el=l(c.type,v,F&&F.is,F),P&8?h(E,c.children):P&16&&Xe(c.children,E,null,S,w,gs(c,v),T,k),D&&Ot(c,null,S,"created"),De(E,c,c.scopeId,T,S),F){for(const W in F)W!=="value"&&!an(W)&&i(E,W,null,F[W],v,S);"value"in F&&i(E,"value",null,F.value,v),(_=F.onVnodeBeforeMount)&&nt(_,S,c)}D&&Ot(c,null,S,"beforeMount");const H=Fr(w,R);H&&R.beforeEnter(E),s(E,p,g),((_=F&&F.onVnodeMounted)||H||D)&&Oe(()=>{try{_&&nt(_,S,c),H&&R.enter(E),D&&Ot(c,null,S,"mounted")}finally{}},w)},De=(c,p,g,S,w)=>{if(g&&M(c,g),S)for(let v=0;v{for(let _=E;_{const k=p.el=c.el;let{patchFlag:E,dynamicChildren:_,dirs:F}=p;E|=c.patchFlag&16;const P=c.props||oe,R=p.props||oe;let D;if(g&&Ut(g,!1),(D=R.onVnodeBeforeUpdate)&&nt(D,g,p,c),F&&Ot(p,c,g,"beforeUpdate"),g&&Ut(g,!0),_&&(!c.dynamicChildren||c.dynamicChildren.length!==_.length)&&(E=0,T=!1,_=null),(P.innerHTML&&R.innerHTML==null||P.textContent&&R.textContent==null)&&h(k,""),_?Pe(c.dynamicChildren,_,k,g,S,gs(p,w),v):T||q(c,p,k,null,g,S,gs(p,w),v,!1),E>0){if(E&16)de(k,P,R,g,w);else if(E&2&&P.class!==R.class&&i(k,"class",null,R.class,w),E&4&&i(k,"style",P.style,R.style,w),E&8){const H=p.dynamicProps;for(let W=0;W{D&&nt(D,g,p,c),F&&Ot(p,c,g,"updated")},S)},Pe=(c,p,g,S,w,v,T)=>{for(let k=0;k{if(p!==g){if(p!==oe)for(const v in p)!an(v)&&!(v in g)&&i(c,v,p[v],null,w,S);for(const v in g){if(an(v))continue;const T=g[v],k=p[v];T!==k&&v!=="value"&&i(c,v,k,T,w,S)}"value"in g&&i(c,"value",p.value,g.value,w)}},Qe=(c,p,g,S,w,v,T,k,E)=>{const _=p.el=c?c.el:r(""),F=p.anchor=c?c.anchor:r("");let{patchFlag:P,dynamicChildren:R,slotScopeIds:D}=p;D&&(k=k?k.concat(D):D),c==null?(s(_,g,S),s(F,g,S),Xe(p.children||[],g,F,w,v,T,k,E)):P>0&&P&64&&R&&c.dynamicChildren&&c.dynamicChildren.length===R.length?(Pe(c.dynamicChildren,R,g,w,v,T,k),(p.key!=null||w&&p===w.subTree)&&Ri(c,p,!0)):q(c,p,g,F,w,v,T,k,E)},Ae=(c,p,g,S,w,v,T,k,E)=>{p.slotScopeIds=k,c==null?p.shapeFlag&512?w.ctx.activate(p,g,S,T,E):ve(p,g,S,w,v,T,E):Ft(c,p,E)},ve=(c,p,g,S,w,v,T)=>{const k=c.component=Gr(c,S,w);if(vi(c)&&(k.ctx.renderer=kt),Jr(k,!1,T),k.asyncDep){if(w&&w.registerDep(k,fe,T),!c.el){const E=k.subTree=Le(wt);Y(null,E,p,g),c.placeholder=E.el}}else fe(k,c,p,g,w,v,T)},Ft=(c,p,g)=>{const S=p.component=c.component;if(Cr(c,p,g))if(S.asyncDep&&!S.asyncResolved){ne(S,p,g);return}else S.next=p,S.update();else p.el=c.el,S.vnode=p},fe=(c,p,g,S,w,v,T)=>{const k=()=>{if(c.isMounted){let{next:P,bu:R,u:D,parent:H,vnode:W}=c;{const xe=Fi(c);if(xe){P&&(P.el=W.el,ne(c,P,T)),xe.asyncDep.then(()=>{Oe(()=>{c.isUnmounted||_()},w)});return}}let G=P,re;Ut(c,!1),P?(P.el=W.el,ne(c,P,T)):P=W,R&&Dn(R),(re=P.props&&P.props.onVnodeBeforeUpdate)&&nt(re,H,P,W),Ut(c,!0);const ue=mo(c),$e=c.subTree;c.subTree=ue,I($e,ue,y($e.el),Me($e),c,w,v),P.el=ue.el,G===null&&Er(c,ue.el),D&&Oe(D,w),(re=P.props&&P.props.onVnodeUpdated)&&Oe(()=>nt(re,H,P,W),w)}else{let P;const{el:R,props:D}=p,{bm:H,m:W,parent:G,root:re,type:ue}=c,$e=fn(p);Ut(c,!1),H&&Dn(H),!$e&&(P=D&&D.onVnodeBeforeMount)&&nt(P,G,p),Ut(c,!0);{re.ce&&re.ce._hasShadowRoot()&&re.ce._injectChildStyle(ue,c.parent?c.parent.type:void 0);const xe=c.subTree=mo(c);I(null,xe,g,S,c,w,v),p.el=xe.el}if(W&&Oe(W,w),!$e&&(P=D&&D.onVnodeMounted)){const xe=p;Oe(()=>nt(P,G,xe),w)}(p.shapeFlag&256||G&&fn(G.vnode)&&G.vnode.shapeFlag&256)&&c.a&&Oe(c.a,w),c.isMounted=!0,p=g=S=null}};c.scope.on();const E=c.effect=new Jo(k);c.scope.off();const _=c.update=E.run.bind(E),F=c.job=E.runIfDirty.bind(E);F.i=c,F.id=c.uid,E.scheduler=()=>Gs(F),Ut(c,!0),_()},ne=(c,p,g)=>{p.component=c;const S=c.vnode.props;c.vnode=p,c.next=null,Tr(c,p.props,S,g),Mr(c,p.children,g),ct(),ao(c),ut()},q=(c,p,g,S,w,v,T,k,E=!1)=>{const _=c&&c.children,F=c?c.shapeFlag:0,P=p.children,{patchFlag:R,shapeFlag:D}=p;if(R>0){if(R&128){Nt(_,P,g,S,w,v,T,k,E);return}else if(R&256){et(_,P,g,S,w,v,T,k,E);return}}D&8?(F&16&&Ct(_,w,v),P!==_&&h(g,P)):F&16?D&16?Nt(_,P,g,S,w,v,T,k,E):Ct(_,w,v,!0):(F&8&&h(g,""),D&16&&Xe(P,g,S,w,v,T,k,E))},et=(c,p,g,S,w,v,T,k,E)=>{c=c||Gt,p=p||Gt;const _=c.length,F=p.length,P=Math.min(_,F);let R;for(R=0;RF?Ct(c,w,v,!0,!1,P):Xe(p,g,S,w,v,T,k,E,P)},Nt=(c,p,g,S,w,v,T,k,E)=>{let _=0;const F=p.length;let P=c.length-1,R=F-1;for(;_<=P&&_<=R;){const D=c[_],H=p[_]=E?ht(p[_]):it(p[_]);if(tn(D,H))I(D,H,g,null,w,v,T,k,E);else break;_++}for(;_<=P&&_<=R;){const D=c[P],H=p[R]=E?ht(p[R]):it(p[R]);if(tn(D,H))I(D,H,g,null,w,v,T,k,E);else break;P--,R--}if(_>P){if(_<=R){const D=R+1,H=DR)for(;_<=P;)pe(c[_],w,v,!0),_++;else{const D=_,H=_,W=new Map;for(_=H;_<=R;_++){const ce=p[_]=E?ht(p[_]):it(p[_]);ce.key!=null&&W.set(ce.key,_)}let G,re=0;const ue=R-H+1;let $e=!1,xe=0;const Ie=new Array(ue);for(_=0;_=ue){pe(ce,w,v,!0);continue}let Ce;if(ce.key!=null)Ce=W.get(ce.key);else for(G=H;G<=R;G++)if(Ie[G-H]===0&&tn(ce,p[G])){Ce=G;break}Ce===void 0?pe(ce,w,v,!0):(Ie[Ce-H]=_+1,Ce>=xe?xe=Ce:$e=!0,I(ce,p[Ce],g,null,w,v,T,k,E),re++)}const me=$e?Nr(Ie):Gt;for(G=me.length-1,_=ue-1;_>=0;_--){const ce=H+_,Ce=p[ce],Tt=p[ce+1],We=ce+1{const{el:v,type:T,transition:k,children:E,shapeFlag:_}=c;if(_&6){be(c.component.subTree,p,g,S);return}if(_&128){c.suspense.move(p,g,S);return}if(_&64){T.move(c,p,g,kt);return}if(T===X){s(v,p,g);for(let P=0;Pk.enter(v),w));else{const{leave:P,delayLeave:R,afterLeave:D}=k,H=()=>{c.ctx.isUnmounted?o(v):s(v,p,g)},W=()=>{const G=v._isLeaving||!!v[bs];v._isLeaving&&v[bs](!0),k.persisted&&!G?H():P(v,()=>{H(),D&&D()})};R?R(v,H,W):W()}else s(v,p,g)},pe=(c,p,g,S=!1,w=!1)=>{const{type:v,props:T,ref:k,children:E,dynamicChildren:_,shapeFlag:F,patchFlag:P,dirs:R,cacheIndex:D,memo:H}=c;if(P===-2&&(w=!1),k!=null&&(ct(),dn(k,null,g,c,!0),ut()),D!=null&&(p.renderCache[D]=void 0),F&256){p.ctx.deactivate(c);return}const W=F&1&&R,G=!fn(c);let re;if(G&&(re=T&&T.onVnodeBeforeUnmount)&&nt(re,p,c),F&6)rs(c.component,g,S);else{if(F&128){c.suspense.unmount(g,S);return}W&&Ot(c,null,p,"beforeUnmount"),F&64?c.type.remove(c,p,g,kt,S):_&&!_.hasOnce&&(v!==X||P>0&&P&64)?Ct(_,p,g,!1,!0):(v===X&&P&384||!w&&F&16)&&Ct(E,p,g),S&&An(c)}const ue=H!=null&&D==null;(G&&(re=T&&T.onVnodeUnmounted)||W||ue)&&Oe(()=>{re&&nt(re,p,c),W&&Ot(c,null,p,"unmounted"),ue&&(c.el=null)},g)},An=c=>{const{type:p,el:g,anchor:S,transition:w}=c;if(p===X){Cn(g,S);return}if(p===$n){N(c);return}const v=()=>{o(g),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(c.shapeFlag&1&&w&&!w.persisted){const{leave:T,delayLeave:k}=w,E=()=>T(g,v);k?k(c.el,v,E):E()}else v()},Cn=(c,p)=>{let g;for(;c!==p;)g=U(c),o(c),c=g;o(p)},rs=(c,p,g)=>{const{bum:S,scope:w,job:v,subTree:T,um:k,m:E,a:_}=c;xo(E),xo(_),S&&Dn(S),w.stop(),v&&(v.flags|=8,pe(T,c,p,g)),k&&Oe(k,p),Oe(()=>{c.isUnmounted=!0},p)},Ct=(c,p,g,S=!1,w=!1,v=0)=>{for(let T=v;T{if(c.shapeFlag&6)return Me(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const p=U(c.anchor||c.el),g=p&&p[Xl];return g?U(g):p};let tt=!1;const Et=(c,p,g)=>{let S;c==null?p._vnode&&(pe(p._vnode,null,null,!0),S=p._vnode.component):I(p._vnode||null,c,p,null,null,null,g),p._vnode=c,tt||(tt=!0,ao(S),fi(),tt=!1)},kt={p:I,um:pe,m:be,r:An,mt:ve,mc:Xe,pc:q,pbc:Pe,n:Me,o:e};return{render:Et,hydrate:void 0,createApp:xr(Et)}}function gs({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Ut({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Fr(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Ri(e,t,n=!1){const s=e.children,o=t.children;if(B(s)&&B(o))for(let i=0;i>1,e[n[r]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,l=n[i-1];i-- >0;)n[i]=l,l=t[l];return n}function Fi(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Fi(t)}function xo(e){if(e)for(let t=0;te.__isSuspense;function Lr(e,t){t&&t.pendingBranch?B(e)?t.effects.push(...e):t.effects.push(e):Gl(e)}const X=Symbol.for("v-fgt"),is=Symbol.for("v-txt"),wt=Symbol.for("v-cmt"),$n=Symbol.for("v-stc"),hn=[];let Ne=null;function A(e=!1){hn.push(Ne=e?null:[])}function Dr(){hn.pop(),Ne=hn[hn.length-1]||null}let vn=1;function yo(e,t=!1){vn+=e,e<0&&Ne&&t&&(Ne.hasOnce=!0)}function Di(e){return e.dynamicChildren=vn>0?Ne||Gt:null,Dr(),vn>0&&Ne&&Ne.push(e),e}function C(e,t,n,s,o,i){return Di(f(e,t,n,s,o,i,!0))}function Br(e,t,n,s,o){return Di(Le(e,t,n,s,o,!0))}function Bi(e){return e?e.__v_isVNode===!0:!1}function tn(e,t){return e.type===t.type&&e.key===t.key}const $i=({key:e})=>e??null,jn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ae(e)||we(e)||V(e)?{i:Ke,r:e,k:t,f:!!n}:e:null);function f(e,t=null,n=null,s=0,o=null,i=e===X?0:1,l=!1,r=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&$i(t),ref:t&&jn(t),scopeId:hi,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Ke};return r?(Wn(u,n),i&128&&e.normalize(u)):n&&(u.shapeFlag|=ae(n)?8:16),vn>0&&!l&&Ne&&(u.patchFlag>0||i&6)&&u.patchFlag!==32&&Ne.push(u),u}const Le=$r;function $r(e,t=null,n=null,s=0,o=null,i=!1){if((!e||e===dr)&&(e=wt),Bi(e)){const r=Zt(e,t,!0);return n&&Wn(r,n),vn>0&&!i&&Ne&&(r.shapeFlag&6?Ne[Ne.indexOf(e)]=r:Ne.push(r)),r.patchFlag=-2,r}if(Xr(e)&&(e=e.__vccOpts),t){t=jr(t);let{class:r,style:u}=t;r&&!ae(r)&&(t.class=Fe(r)),se(u)&&(zs(u)&&!B(u)&&(u=Se({},u)),t.style=Ns(u))}const l=ae(e)?1:Li(e)?128:Ql(e)?64:se(e)?4:V(e)?2:0;return f(e,t,n,s,o,l,i,!0)}function jr(e){return e?zs(e)||Ti(e)?Se({},e):e:null}function Zt(e,t,n=!1,s=!1){const{props:o,ref:i,patchFlag:l,children:r,transition:u}=e,m=t?Hr(o||{},t):o,h={__v_isVNode:!0,__v_skip:!0,type:e.type,props:m,key:m&&$i(m),ref:t&&t.ref?n&&i?B(i)?i.concat(jn(t)):[i,jn(t)]:jn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:r,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==X?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:u,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Zt(e.ssContent),ssFallback:e.ssFallback&&Zt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return u&&s&&Ws(h,u.clone(h)),h}function He(e=" ",t=0){return Le(is,null,e,t)}function Vr(e,t){const n=Le($n,null,e);return n.staticCount=t,n}function $(e="",t=!1){return t?(A(),Br(wt,null,e)):Le(wt,null,e)}function it(e){return e==null||typeof e=="boolean"?Le(wt):B(e)?Le(X,null,e.slice()):Bi(e)?ht(e):Le(is,null,String(e))}function ht(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Zt(e)}function Wn(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(B(t))n=16;else if(typeof t=="object")if(s&65){const o=t.default;o&&(o._c&&(o._d=!1),Wn(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!Ti(t)?t._ctx=Ke:o===3&&Ke&&(Ke.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(V(t)){if(s&65){Wn(e,{default:t});return}t={default:t,_ctx:Ke},n=32}else t=String(t),s&64?(n=16,t=[He(t)]):n=8;e.children=t,e.shapeFlag|=n}function Hr(...e){const t={};for(let n=0;nTe||Ke;let Jn,Os;{const e=es(),t=(n,s)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(s),i=>{o.length>1?o.forEach(l=>l(i)):o[0](i)}};Jn=t("__VUE_INSTANCE_SETTERS__",n=>Te=n),Os=t("__VUE_SSR_SETTERS__",n=>xn=n)}const Sn=e=>{const t=Te;return Jn(e),e.scope.on(),()=>{e.scope.off(),Jn(t)}},_o=()=>{Te&&Te.scope.off(),Jn(null)};function ji(e){return e.vnode.shapeFlag&4}let xn=!1;function Jr(e,t=!1,n=!1){t&&Os(t);const{props:s,children:o}=e.vnode,i=ji(e);kr(e,s,i,t),Ur(e,o,n||t);const l=i?qr(e,t):void 0;return t&&Os(!1),l}function qr(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,fr);const{setup:s}=n;if(s){ct();const o=e.setupContext=s.length>1?Zr(e):null,i=Sn(e),l=wn(s,e,0,[e.props,o]),r=$o(l);if(ut(),i(),(r||e.sp)&&!fn(e)&&gi(e),r){if(l.then(_o,_o),t)return l.then(u=>{wo(e,u)}).catch(u=>{ns(u,e,0)});e.asyncDep=l}else wo(e,l)}else Vi(e)}function wo(e,t,n){V(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:se(t)&&(e.setupState=ai(t)),Vi(e)}function Vi(e,t,n){const s=e.type;e.render||(e.render=s.render||rt);{const o=Sn(e);ct();try{pr(e)}finally{ut(),o()}}}const Yr={get(e,t){return _e(e,"get",""),e[t]}};function Zr(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Yr),slots:e.slots,emit:e.emit,expose:t}}function ls(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(ai(Nl(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in pn)return pn[n](e)},has(t,n){return n in t||n in pn}})):e.proxy}function Xr(e){return V(e)&&"__vccOpts"in e}const Us=(e,t)=>jl(e,t,xn),Qr="3.5.39";/** -* @vue/runtime-dom v3.5.39 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let Ms;const So=typeof window<"u"&&window.trustedTypes;if(So)try{Ms=So.createPolicy("vue",{createHTML:e=>e})}catch{}const Hi=Ms?e=>Ms.createHTML(e):e=>e,ea="http://www.w3.org/2000/svg",ta="http://www.w3.org/1998/Math/MathML",pt=typeof document<"u"?document:null,Ao=pt&&pt.createElement("template"),na={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const o=t==="svg"?pt.createElementNS(ea,e):t==="mathml"?pt.createElementNS(ta,e):n?pt.createElement(e,{is:n}):pt.createElement(e);return e==="select"&&s&&s.multiple!=null&&o.setAttribute("multiple",s.multiple),o},createText:e=>pt.createTextNode(e),createComment:e=>pt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>pt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,o,i){const l=n?n.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===i||!(o=o.nextSibling)););else{Ao.innerHTML=Hi(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const r=Ao.content;if(s==="svg"||s==="mathml"){const u=r.firstChild;for(;u.firstChild;)r.appendChild(u.firstChild);r.removeChild(u)}t.insertBefore(r,n)}return[l?l.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},sa=Symbol("_vtc");function oa(e,t,n){const s=e[sa];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const qn=Symbol("_vod"),Ki=Symbol("_vsh"),nn={name:"show",beforeMount(e,{value:t},{transition:n}){e[qn]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):sn(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),sn(e,!0),s.enter(e)):s.leave(e,()=>{sn(e,!1)}):sn(e,t))},beforeUnmount(e,{value:t}){sn(e,t)}};function sn(e,t){e.style.display=t?e[qn]:"none",e[Ki]=!t}const ia=Symbol(""),la=/(?:^|;)\s*display\s*:/;function ra(e,t,n){const s=e.style,o=ae(n);let i=!1;if(n&&!o){if(t)if(ae(t))for(const l of t.split(";")){const r=l.slice(0,l.indexOf(":")).trim();n[r]==null&&rn(s,r,"")}else for(const l in t)n[l]==null&&rn(s,l,"");for(const l in n){l==="display"&&(i=!0);const r=n[l];r!=null?ca(e,l,!ae(t)&&t?t[l]:void 0,r)||rn(s,l,r):rn(s,l,"")}}else if(o){if(t!==n){const l=s[ia];l&&(n+=";"+l),s.cssText=n,i=la.test(n)}}else t&&e.removeAttribute("style");qn in e&&(e[qn]=i?s.display:"",e[Ki]&&(s.display="none"))}const Co=/\s*!important$/;function rn(e,t,n){if(B(n))n.forEach(s=>rn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=aa(e,t);Co.test(n)?e.setProperty(At(s),n.replace(Co,""),"important"):e[s]=n}}const Eo=["Webkit","Moz","ms"],vs={};function aa(e,t){const n=vs[t];if(n)return n;let s=Je(t);if(s!=="filter"&&s in e)return vs[t]=s;s=Ho(s);for(let o=0;oxs||(ba.then(()=>xs=0),xs=Date.now());function ga(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;const o=n.value;if(B(o)){const i=s.stopImmediatePropagation;s.stopImmediatePropagation=()=>{i.call(s),s._stopped=!0};const l=o.slice(),r=[s];for(let u=0;ue.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,va=(e,t,n,s,o,i)=>{const l=o==="svg";t==="class"?oa(e,s,l):t==="style"?ra(e,n,s):Yn(t)?Zn(t)||da(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):xa(e,t,s,l))?(Po(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&To(e,t,s,l,i,t!=="value")):e._isVueCE&&(ya(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!ae(s)))?Po(e,Je(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),To(e,t,s,l))};function xa(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Uo(t)&&V(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return Uo(t)&&ae(n)?!1:t in e}function ya(e,t){const n=e._def.props;if(!n)return!1;const s=Je(t);return Array.isArray(n)?n.some(o=>Je(o)===s):Object.keys(n).some(o=>Je(o)===s)}const St=e=>{const t=e.props["onUpdate:modelValue"]||!1;return B(t)?n=>Dn(t,n):t};function _a(e){e.target.composing=!0}function Mo(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Ge=Symbol("_assign");function Io(e,t,n){return t&&(e=e.trim()),n&&(e=Qn(e)),e}const ye={created(e,{modifiers:{lazy:t,trim:n,number:s}},o){e[Ge]=St(o);const i=s||o.props&&o.props.type==="number";gt(e,t?"change":"input",l=>{l.target.composing||e[Ge](Io(e.value,n,i))}),(n||i)&>(e,"change",()=>{e.value=Io(e.value,n,i)}),t||(gt(e,"compositionstart",_a),gt(e,"compositionend",Mo),gt(e,"change",Mo))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:o,number:i}},l){if(e[Ge]=St(l),e.composing)return;const r=(i||e.type==="number")&&!/^0\d/.test(e.value)?Qn(e.value):e.value,u=t??"";if(r===u)return;const m=e.getRootNode();(m instanceof Document||m instanceof ShadowRoot)&&m.activeElement===e&&e.type!=="range"&&(s&&t===n||o&&e.value.trim()===u)||(e.value=u)}},zi={deep:!0,created(e,t,n){e[Ge]=St(n),gt(e,"change",()=>{const s=e._modelValue,o=Xt(e),i=e.checked,l=e[Ge];if(B(s)){const r=Ls(s,o),u=r!==-1;if(i&&!u)l(s.concat(o));else if(!i&&u){const m=[...s];m.splice(r,1),l(m)}}else if(Qt(s)){const r=new Set(s);i?r.add(o):r.delete(o),l(r)}else l(Gi(e,i))})},mounted:Ro,beforeUpdate(e,t,n){e[Ge]=St(n),Ro(e,t,n)}};function Ro(e,{value:t,oldValue:n},s){e._modelValue=t;let o;if(B(t))o=Ls(t,s.props.value)>-1;else if(Qt(t))o=t.has(s.props.value);else{if(t===n)return;o=_t(t,Gi(e,!0))}e.checked!==o&&(e.checked=o)}const wa={created(e,{value:t},n){e.checked=_t(t,n.props.value),e[Ge]=St(n),gt(e,"change",()=>{e[Ge](Xt(e))})},beforeUpdate(e,{value:t,oldValue:n},s){e[Ge]=St(s),t!==n&&(e.checked=_t(t,s.props.value))}},zt={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const o=Qt(t);gt(e,"change",()=>{const i=Array.prototype.filter.call(e.options,l=>l.selected).map(l=>n?Qn(Xt(l)):Xt(l));e[Ge](e.multiple?o?new Set(i):i:i[0]),e._assigning=!0,ui(()=>{e._assigning=!1})}),e[Ge]=St(s)},mounted(e,{value:t}){Fo(e,t)},beforeUpdate(e,t,n){e[Ge]=St(n)},updated(e,{value:t}){e._assigning||Fo(e,t)}};function Fo(e,t){const n=e.multiple,s=B(t);if(!(n&&!s&&!Qt(t))){for(let o=0,i=e.options.length;oString(m)===String(r)):l.selected=Ls(t,r)>-1}else l.selected=t.has(r);else if(_t(Xt(l),t)){e.selectedIndex!==o&&(e.selectedIndex=o);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Xt(e){return"_value"in e?e._value:e.value}function Gi(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Sa={created(e,t,n){Nn(e,t,n,null,"created")},mounted(e,t,n){Nn(e,t,n,null,"mounted")},beforeUpdate(e,t,n,s){Nn(e,t,n,s,"beforeUpdate")},updated(e,t,n,s){Nn(e,t,n,s,"updated")}};function Aa(e,t){switch(e){case"SELECT":return zt;case"TEXTAREA":return ye;default:switch(t){case"checkbox":return zi;case"radio":return wa;default:return ye}}}function Nn(e,t,n,s,o){const l=Aa(e.tagName,n.props&&n.props.type)[o];l&&l(e,t,n,s)}const Ca=["ctrl","shift","alt","meta"],Ea={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Ca.some(n=>e[`${n}Key`]&&!t.includes(n))},ka=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=((o,...i)=>{for(let l=0;l{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=(o=>{if(!("key"in o))return;const i=At(o.key);if(t.some(l=>l===i||Ta[l]===i))return e(o)}))},Pa=Se({patchProp:va},na);let Lo;function Oa(){return Lo||(Lo=Ir(Pa))}const Ua=((...e)=>{const t=Oa().createApp(...e),{mount:n}=t;return t.mount=s=>{const o=Ia(s);if(!o)return;const i=t._component;!V(i)&&!i.render&&!i.template&&(i.template=o.innerHTML),o.nodeType===1&&(o.textContent="");const l=n(o,!1,Ma(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),l},t});function Ma(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Ia(e){return ae(e)?document.querySelector(e):e}const Wi="pilotvault-theme";function Ra(){try{return localStorage.getItem(Wi)==="dark"?"dark":"light"}catch{return"light"}}const yn=L(Ra());function Ji(e){yn.value=e,document.documentElement.setAttribute("data-theme",e);try{localStorage.setItem(Wi,e)}catch{}}function Do(){Ji(yn.value==="dark"?"light":"dark")}Ji(yn.value);const Fa=[{code:"AL",name:"Albania",continent:"EU",bbox:"39.6,19.3,42.7,21.1"},{code:"AD",name:"Andorra",continent:"EU",bbox:"42.4,1.4,42.7,1.8"},{code:"AT",name:"Austria",continent:"EU",bbox:"46.4,9.5,49.0,17.2"},{code:"BY",name:"Belarus",continent:"EU",bbox:"51.2,23.2,56.2,32.8"},{code:"BE",name:"Belgium",continent:"EU",bbox:"49.5,2.5,51.5,6.4"},{code:"BA",name:"Bosnia and Herzegovina",continent:"EU",bbox:"42.6,15.7,45.3,19.6"},{code:"BG",name:"Bulgaria",continent:"EU",bbox:"41.2,22.4,44.2,28.6"},{code:"HR",name:"Croatia",continent:"EU",bbox:"42.4,13.5,46.6,19.4"},{code:"CY",name:"Cyprus",continent:"EU",bbox:"34.6,32.3,35.7,34.6"},{code:"CZ",name:"Czechia",continent:"EU",bbox:"48.6,12.1,51.1,18.9"},{code:"DK",name:"Denmark",continent:"EU",bbox:"54.6,8.1,57.8,12.7"},{code:"EE",name:"Estonia",continent:"EU",bbox:"57.5,21.8,59.7,28.2"},{code:"FI",name:"Finland",continent:"EU",bbox:"59.8,20.6,70.1,31.6"},{code:"FR",name:"France",continent:"EU",bbox:"41.3,-5.2,51.1,9.6"},{code:"DE",name:"Germany",continent:"EU",bbox:"47.2,5.8,55.1,15.1"},{code:"GR",name:"Greece",continent:"EU",bbox:"34.8,19.4,41.8,28.3"},{code:"HU",name:"Hungary",continent:"EU",bbox:"45.7,16.1,48.6,22.9"},{code:"IS",name:"Iceland",continent:"EU",bbox:"63.3,-24.6,66.6,-13.5"},{code:"IE",name:"Ireland",continent:"EU",bbox:"51.4,-10.6,55.4,-6.0"},{code:"IT",name:"Italy",continent:"EU",bbox:"36.6,6.6,47.1,18.6"},{code:"XK",name:"Kosovo",continent:"EU",bbox:"41.8,20.0,43.3,21.8"},{code:"LV",name:"Latvia",continent:"EU",bbox:"55.7,20.9,58.1,28.2"},{code:"LI",name:"Liechtenstein",continent:"EU",bbox:"47.0,9.4,47.3,9.6"},{code:"LT",name:"Lithuania",continent:"EU",bbox:"53.9,20.9,56.5,26.9"},{code:"LU",name:"Luxembourg",continent:"EU",bbox:"49.4,5.7,50.2,6.5"},{code:"MT",name:"Malta",continent:"EU",bbox:"35.8,14.1,36.1,14.6"},{code:"MD",name:"Moldova",continent:"EU",bbox:"45.4,26.6,48.5,30.2"},{code:"MC",name:"Monaco",continent:"EU",bbox:"43.72,7.40,43.75,7.44"},{code:"ME",name:"Montenegro",continent:"EU",bbox:"41.8,18.4,43.6,20.4"},{code:"NL",name:"Netherlands",continent:"EU",bbox:"50.7,3.3,53.7,7.2"},{code:"MK",name:"North Macedonia",continent:"EU",bbox:"40.8,20.4,42.4,23.0"},{code:"NO",name:"Norway",continent:"EU",bbox:"57.9,4.6,71.2,31.1"},{code:"PL",name:"Poland",continent:"EU",bbox:"49.0,14.1,54.9,24.2"},{code:"PT",name:"Portugal",continent:"EU",bbox:"36.9,-9.5,42.2,-6.2"},{code:"RO",name:"Romania",continent:"EU",bbox:"43.6,20.2,48.3,29.7"},{code:"SM",name:"San Marino",continent:"EU",bbox:"43.89,12.40,43.99,12.52"},{code:"RS",name:"Serbia",continent:"EU",bbox:"42.2,18.8,46.2,23.0"},{code:"SK",name:"Slovakia",continent:"EU",bbox:"47.7,16.8,49.6,22.6"},{code:"SI",name:"Slovenia",continent:"EU",bbox:"45.4,13.4,46.9,16.6"},{code:"ES",name:"Spain",continent:"EU",bbox:"35.9,-9.4,43.8,3.4"},{code:"SE",name:"Sweden",continent:"EU",bbox:"55.3,11.1,69.1,24.2"},{code:"CH",name:"Switzerland",continent:"EU",bbox:"45.8,5.9,47.8,10.5"},{code:"UA",name:"Ukraine",continent:"EU",bbox:"44.4,22.1,52.4,40.2"},{code:"GB",name:"United Kingdom",continent:"EU",bbox:"49.9,-8.7,60.9,1.8"},{code:"VA",name:"Vatican City",continent:"EU",bbox:"41.900,12.445,41.908,12.458"},{code:"RU",name:"Russia",continent:"EU",bbox:"41.2,19.6,81.9,180"},{code:"TR",name:"Turkey",continent:"EU",bbox:"35.8,25.7,42.3,44.8"},{code:"AF",name:"Afghanistan",continent:"AS",bbox:"29.4,60.5,38.5,74.9"},{code:"AM",name:"Armenia",continent:"AS",bbox:"38.8,43.4,41.3,46.6"},{code:"AZ",name:"Azerbaijan",continent:"AS",bbox:"38.4,44.8,41.9,50.4"},{code:"BH",name:"Bahrain",continent:"AS",bbox:"25.8,50.4,26.3,50.7"},{code:"BD",name:"Bangladesh",continent:"AS",bbox:"20.7,88.0,26.6,92.7"},{code:"BT",name:"Bhutan",continent:"AS",bbox:"26.7,88.7,28.3,92.1"},{code:"BN",name:"Brunei",continent:"AS",bbox:"4.0,114.0,5.1,115.4"},{code:"KH",name:"Cambodia",continent:"AS",bbox:"10.4,102.3,14.7,107.6"},{code:"CN",name:"China",continent:"AS",bbox:"18.2,73.5,53.6,134.8"},{code:"GE",name:"Georgia",continent:"AS",bbox:"41.0,40.0,43.6,46.7"},{code:"IN",name:"India",continent:"AS",bbox:"6.7,68.1,35.5,97.4"},{code:"ID",name:"Indonesia",continent:"AS",bbox:"-11.0,95.0,6.1,141.0"},{code:"IR",name:"Iran",continent:"AS",bbox:"25.0,44.0,39.8,63.3"},{code:"IQ",name:"Iraq",continent:"AS",bbox:"29.1,38.8,37.4,48.6"},{code:"IL",name:"Israel",continent:"AS",bbox:"29.5,34.2,33.3,35.9"},{code:"JP",name:"Japan",continent:"AS",bbox:"24.0,122.9,45.5,145.8"},{code:"JO",name:"Jordan",continent:"AS",bbox:"29.2,34.9,33.4,39.3"},{code:"KZ",name:"Kazakhstan",continent:"AS",bbox:"40.6,46.5,55.4,87.3"},{code:"KW",name:"Kuwait",continent:"AS",bbox:"28.5,46.5,30.1,48.4"},{code:"KG",name:"Kyrgyzstan",continent:"AS",bbox:"39.2,69.3,43.3,80.3"},{code:"LA",name:"Laos",continent:"AS",bbox:"13.9,100.1,22.5,107.7"},{code:"LB",name:"Lebanon",continent:"AS",bbox:"33.0,35.1,34.7,36.6"},{code:"MY",name:"Malaysia",continent:"AS",bbox:"0.9,99.6,7.4,119.3"},{code:"MV",name:"Maldives",continent:"AS",bbox:"-0.7,72.7,7.1,73.7"},{code:"MN",name:"Mongolia",continent:"AS",bbox:"41.6,87.7,52.1,119.9"},{code:"MM",name:"Myanmar",continent:"AS",bbox:"9.8,92.2,28.5,101.2"},{code:"NP",name:"Nepal",continent:"AS",bbox:"26.3,80.1,30.4,88.2"},{code:"KP",name:"North Korea",continent:"AS",bbox:"37.7,124.2,43.0,130.7"},{code:"OM",name:"Oman",continent:"AS",bbox:"16.6,52.0,26.4,59.8"},{code:"PK",name:"Pakistan",continent:"AS",bbox:"23.7,60.9,37.1,77.8"},{code:"PH",name:"Philippines",continent:"AS",bbox:"4.6,116.9,21.1,126.6"},{code:"QA",name:"Qatar",continent:"AS",bbox:"24.5,50.7,26.2,51.6"},{code:"SA",name:"Saudi Arabia",continent:"AS",bbox:"16.4,34.6,32.2,55.7"},{code:"SG",name:"Singapore",continent:"AS",bbox:"1.2,103.6,1.5,104.1"},{code:"KR",name:"South Korea",continent:"AS",bbox:"33.1,125.9,38.6,129.6"},{code:"LK",name:"Sri Lanka",continent:"AS",bbox:"5.9,79.7,9.8,81.9"},{code:"SY",name:"Syria",continent:"AS",bbox:"32.3,35.7,37.3,42.4"},{code:"TW",name:"Taiwan",continent:"AS",bbox:"21.9,120.0,25.3,122.0"},{code:"TJ",name:"Tajikistan",continent:"AS",bbox:"36.7,67.4,41.0,75.2"},{code:"TH",name:"Thailand",continent:"AS",bbox:"5.6,97.3,20.5,105.6"},{code:"TL",name:"Timor-Leste",continent:"AS",bbox:"-9.5,124.0,-8.1,127.3"},{code:"TM",name:"Turkmenistan",continent:"AS",bbox:"35.1,52.4,42.8,66.7"},{code:"AE",name:"United Arab Emirates",continent:"AS",bbox:"22.6,51.5,26.1,56.4"},{code:"UZ",name:"Uzbekistan",continent:"AS",bbox:"37.2,55.9,45.6,73.1"},{code:"VN",name:"Vietnam",continent:"AS",bbox:"8.2,102.1,23.4,109.5"},{code:"YE",name:"Yemen",continent:"AS",bbox:"12.1,42.5,19.0,54.5"},{code:"DZ",name:"Algeria",continent:"AF",bbox:"18.9,-8.7,37.1,12.0"},{code:"AO",name:"Angola",continent:"AF",bbox:"-18.0,11.6,-4.4,24.1"},{code:"BJ",name:"Benin",continent:"AF",bbox:"6.2,0.8,12.4,3.9"},{code:"BW",name:"Botswana",continent:"AF",bbox:"-26.9,20.0,-17.8,29.4"},{code:"BF",name:"Burkina Faso",continent:"AF",bbox:"9.4,-5.5,15.1,2.4"},{code:"BI",name:"Burundi",continent:"AF",bbox:"-4.5,29.0,-2.3,30.8"},{code:"CV",name:"Cabo Verde",continent:"AF",bbox:"14.8,-25.4,17.2,-22.7"},{code:"CM",name:"Cameroon",continent:"AF",bbox:"1.7,8.5,13.1,16.2"},{code:"CF",name:"Central African Republic",continent:"AF",bbox:"2.2,14.4,11.0,27.5"},{code:"TD",name:"Chad",continent:"AF",bbox:"7.4,13.5,23.4,24.0"},{code:"KM",name:"Comoros",continent:"AF",bbox:"-12.4,43.2,-11.4,44.5"},{code:"CG",name:"Congo",continent:"AF",bbox:"-5.0,11.1,3.7,18.6"},{code:"CD",name:"DR Congo",continent:"AF",bbox:"-13.5,12.2,5.4,31.3"},{code:"DJ",name:"Djibouti",continent:"AF",bbox:"10.9,41.7,12.7,43.4"},{code:"EG",name:"Egypt",continent:"AF",bbox:"22.0,25.0,31.7,36.9"},{code:"GQ",name:"Equatorial Guinea",continent:"AF",bbox:"0.9,9.3,3.8,11.4"},{code:"ER",name:"Eritrea",continent:"AF",bbox:"12.4,36.4,18.0,43.1"},{code:"SZ",name:"Eswatini",continent:"AF",bbox:"-27.3,30.8,-25.7,32.1"},{code:"ET",name:"Ethiopia",continent:"AF",bbox:"3.4,33.0,14.9,48.0"},{code:"GA",name:"Gabon",continent:"AF",bbox:"-4.0,8.7,2.3,14.5"},{code:"GM",name:"Gambia",continent:"AF",bbox:"13.1,-16.8,13.8,-13.8"},{code:"GH",name:"Ghana",continent:"AF",bbox:"4.7,-3.3,11.2,1.2"},{code:"GN",name:"Guinea",continent:"AF",bbox:"7.2,-15.1,12.7,-7.6"},{code:"GW",name:"Guinea-Bissau",continent:"AF",bbox:"10.9,-16.7,12.7,-13.6"},{code:"CI",name:"Ivory Coast",continent:"AF",bbox:"4.4,-8.6,10.7,-2.5"},{code:"KE",name:"Kenya",continent:"AF",bbox:"-4.7,33.9,5.5,41.9"},{code:"LS",name:"Lesotho",continent:"AF",bbox:"-30.7,27.0,-28.6,29.5"},{code:"LR",name:"Liberia",continent:"AF",bbox:"4.3,-11.5,8.6,-7.4"},{code:"LY",name:"Libya",continent:"AF",bbox:"19.5,9.3,33.2,25.2"},{code:"MG",name:"Madagascar",continent:"AF",bbox:"-25.6,43.2,-11.9,50.5"},{code:"MW",name:"Malawi",continent:"AF",bbox:"-17.1,32.7,-9.4,35.9"},{code:"ML",name:"Mali",continent:"AF",bbox:"10.1,-12.3,25.0,4.3"},{code:"MR",name:"Mauritania",continent:"AF",bbox:"14.7,-17.1,27.3,-4.8"},{code:"MU",name:"Mauritius",continent:"AF",bbox:"-20.5,57.3,-19.9,57.8"},{code:"MA",name:"Morocco",continent:"AF",bbox:"27.7,-13.2,35.9,-1.0"},{code:"MZ",name:"Mozambique",continent:"AF",bbox:"-26.9,30.2,-10.5,40.8"},{code:"NA",name:"Namibia",continent:"AF",bbox:"-28.9,11.7,-16.9,25.3"},{code:"NE",name:"Niger",continent:"AF",bbox:"11.7,0.2,23.5,16.0"},{code:"NG",name:"Nigeria",continent:"AF",bbox:"4.3,2.7,13.9,14.7"},{code:"RW",name:"Rwanda",continent:"AF",bbox:"-2.8,28.9,-1.1,30.9"},{code:"SN",name:"Senegal",continent:"AF",bbox:"12.3,-17.5,16.7,-11.4"},{code:"SL",name:"Sierra Leone",continent:"AF",bbox:"6.9,-13.3,10.0,-10.3"},{code:"SO",name:"Somalia",continent:"AF",bbox:"-1.7,40.9,12.0,51.4"},{code:"ZA",name:"South Africa",continent:"AF",bbox:"-34.8,16.5,-22.1,32.9"},{code:"SS",name:"South Sudan",continent:"AF",bbox:"3.5,24.1,12.2,35.9"},{code:"SD",name:"Sudan",continent:"AF",bbox:"8.7,21.8,22.2,38.6"},{code:"TZ",name:"Tanzania",continent:"AF",bbox:"-11.7,29.3,-1.0,40.4"},{code:"TG",name:"Togo",continent:"AF",bbox:"6.1,-0.1,11.1,1.8"},{code:"TN",name:"Tunisia",continent:"AF",bbox:"30.2,7.5,37.5,11.6"},{code:"UG",name:"Uganda",continent:"AF",bbox:"-1.5,29.6,4.2,35.0"},{code:"ZM",name:"Zambia",continent:"AF",bbox:"-18.1,21.9,-8.2,33.7"},{code:"ZW",name:"Zimbabwe",continent:"AF",bbox:"-22.4,25.2,-15.6,33.1"},{code:"CA",name:"Canada",continent:"NA",bbox:"41.7,-141.0,83.1,-52.6"},{code:"US",name:"United States",continent:"NA",bbox:"24.4,-125.0,49.4,-66.9"},{code:"MX",name:"Mexico",continent:"NA",bbox:"14.5,-118.4,32.7,-86.7"},{code:"GT",name:"Guatemala",continent:"NA",bbox:"13.7,-92.2,17.8,-88.2"},{code:"BZ",name:"Belize",continent:"NA",bbox:"15.9,-89.2,18.5,-87.8"},{code:"SV",name:"El Salvador",continent:"NA",bbox:"13.1,-90.1,14.4,-87.7"},{code:"HN",name:"Honduras",continent:"NA",bbox:"12.9,-89.4,16.5,-83.1"},{code:"NI",name:"Nicaragua",continent:"NA",bbox:"10.7,-87.7,15.0,-83.1"},{code:"CR",name:"Costa Rica",continent:"NA",bbox:"8.0,-85.9,11.2,-82.5"},{code:"PA",name:"Panama",continent:"NA",bbox:"7.2,-83.1,9.6,-77.2"},{code:"CU",name:"Cuba",continent:"NA",bbox:"19.8,-85.0,23.3,-74.1"},{code:"DO",name:"Dominican Republic",continent:"NA",bbox:"17.5,-72.0,19.9,-68.3"},{code:"HT",name:"Haiti",continent:"NA",bbox:"18.0,-74.5,20.1,-71.6"},{code:"JM",name:"Jamaica",continent:"NA",bbox:"17.7,-78.4,18.5,-76.2"},{code:"BS",name:"Bahamas",continent:"NA",bbox:"20.9,-79.0,27.3,-72.7"},{code:"TT",name:"Trinidad and Tobago",continent:"NA",bbox:"10.0,-61.9,11.4,-60.5"},{code:"AR",name:"Argentina",continent:"SA",bbox:"-55.1,-73.6,-21.8,-53.6"},{code:"BO",name:"Bolivia",continent:"SA",bbox:"-22.9,-69.6,-9.7,-57.5"},{code:"BR",name:"Brazil",continent:"SA",bbox:"-33.8,-74.0,5.3,-34.8"},{code:"CL",name:"Chile",continent:"SA",bbox:"-55.9,-75.6,-17.5,-66.4"},{code:"CO",name:"Colombia",continent:"SA",bbox:"-4.2,-79.0,12.5,-66.9"},{code:"EC",name:"Ecuador",continent:"SA",bbox:"-5.0,-81.1,1.4,-75.2"},{code:"GY",name:"Guyana",continent:"SA",bbox:"1.2,-61.4,8.6,-56.5"},{code:"PY",name:"Paraguay",continent:"SA",bbox:"-27.6,-62.6,-19.3,-54.3"},{code:"PE",name:"Peru",continent:"SA",bbox:"-18.4,-81.3,0.0,-68.7"},{code:"SR",name:"Suriname",continent:"SA",bbox:"1.8,-58.1,6.0,-54.0"},{code:"UY",name:"Uruguay",continent:"SA",bbox:"-35.0,-58.4,-30.1,-53.1"},{code:"VE",name:"Venezuela",continent:"SA",bbox:"0.6,-73.4,12.2,-59.8"},{code:"AU",name:"Australia",continent:"OC",bbox:"-43.6,113.3,-10.7,153.6"},{code:"NZ",name:"New Zealand",continent:"OC",bbox:"-47.3,166.4,-34.4,178.6"},{code:"PG",name:"Papua New Guinea",continent:"OC",bbox:"-11.7,140.8,-1.3,155.9"},{code:"FJ",name:"Fiji",continent:"OC",bbox:"-19.2,177.0,-16.0,180.0"}],Na=[["EU","European countries"],["AS","Asian countries"],["AF","African countries"],["NA","North American countries"],["SA","South American countries"],["OC","Oceanian countries"]];function La(){return Na.map(([e,t])=>({label:t,options:Fa.filter(n=>n.continent===e).slice().sort((n,s)=>n.name.localeCompare(s.name)).map(n=>({value:n.bbox,label:n.name}))}))}const Da={class:"overflow-hidden rounded-lg border border-subtle bg-card shadow-xs"},Ba={class:"flex items-center justify-between border-b border-subtle px-5 py-4"},$a={class:"text-base font-semibold text-primary"},ja={class:"pv-eyebrow"},Va={class:"w-full text-left text-sm"},Ha={class:"border-t border-subtle px-5 py-2.5 font-mono text-xs whitespace-nowrap"},Ka={class:"text-primary"},za={class:"border-t border-subtle px-5 py-2.5 text-secondary"},ys={__name:"EndpointTable",props:{title:String,auth:String,endpoints:Array},setup(e){const t={GET:"text-success",POST:"text-brand-text",PATCH:"text-warning",DELETE:"text-danger"};return(n,s)=>(A(),C("div",Da,[f("div",Ba,[f("div",$a,O(e.title),1),f("span",ja,O(e.auth),1)]),f("table",Va,[s[0]||(s[0]=f("thead",null,[f("tr",{class:"pv-eyebrow"},[f("th",{class:"px-5 py-2.5 font-medium"},"Endpoint"),f("th",{class:"px-5 py-2.5 font-medium"},"Description")])],-1)),f("tbody",null,[(A(!0),C(X,null,he(e.endpoints,o=>(A(),C("tr",{key:o.method+o.path,class:"transition-colors hover:bg-sunken"},[f("td",Ha,[f("span",{class:Fe(["font-semibold",t[o.method]])},O(o.method),3),f("span",Ka,O(o.path),1)]),f("td",za,O(o.desc),1)]))),128))])])]))}},Ga={class:"mx-auto flex max-w-5xl flex-col gap-6 px-6 pt-12 pb-16"},Wa={class:"flex items-center gap-3"},Ja={key:0,class:"pv-eyebrow hidden truncate sm:inline"},qa=["title"],Ya={key:0,class:"h-4 w-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},Za={key:1,class:"h-4 w-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},Xa={key:0,class:"rounded-lg border border-subtle bg-card px-5 py-10 text-center shadow-sm"},Qa={key:1,class:"mx-auto w-full max-w-sm rounded-lg border border-subtle bg-card shadow-sm"},ec={class:"flex flex-col gap-1"},tc={class:"flex flex-col gap-1"},nc={key:0,class:"rounded-sm bg-danger-tint px-3 py-2 text-xs font-medium text-danger"},sc=["disabled"],oc={class:"flex gap-1 self-start rounded-lg border border-subtle bg-card p-1 shadow-sm"},ic=["onClick"],lc={class:"flex flex-col gap-6"},rc={class:"rounded-lg border border-subtle bg-card shadow-sm"},ac={class:"flex items-center justify-between border-b border-subtle px-5 py-4"},cc={class:"pv-eyebrow"},uc={class:"min-w-0"},dc={class:"text-sm font-semibold text-primary"},fc={key:0,class:"truncate font-mono text-xs text-secondary"},pc={class:"flex items-center justify-between gap-3 border-t border-subtle px-5 py-3.5"},hc={class:"font-mono text-xs text-secondary"},bc={class:"flex flex-col gap-6"},mc={class:"rounded-lg border border-subtle bg-card shadow-sm"},gc={class:"flex flex-col gap-3 px-5 py-5"},vc={class:"flex flex-col gap-3 sm:flex-row"},xc={class:"flex flex-1 flex-col gap-1"},yc={class:"flex flex-1 flex-col gap-1"},_c={class:"flex flex-col gap-3 sm:flex-row"},wc={class:"flex flex-1 flex-col gap-1"},Sc=["value"],Ac={class:"flex flex-1 flex-col gap-1"},Cc=["value"],Ec={key:0,class:"rounded-sm bg-danger-tint px-3 py-2 text-xs font-medium text-danger"},kc={key:1,class:"rounded-sm bg-success-tint px-3 py-2 text-xs font-medium text-success"},Tc=["disabled"],Pc={class:"rounded-lg border border-subtle bg-card shadow-sm"},Oc={class:"flex items-center justify-between border-b border-subtle px-5 py-4"},Uc={class:"pv-eyebrow"},Mc={class:"flex flex-col"},Ic={key:0,class:"px-5 py-3 text-xs font-medium text-danger"},Rc={key:1,class:"border-b border-subtle bg-sunken px-5 py-2.5 font-mono text-xs text-secondary"},Fc={key:2,class:"px-5 py-6 text-sm text-secondary"},Nc={class:"flex flex-wrap items-center gap-x-3 gap-y-2"},Lc={class:"min-w-0 flex-1"},Dc={class:"flex flex-wrap items-center gap-2"},Bc={class:"truncate text-sm font-semibold text-primary"},$c={key:0,class:"rounded-sm bg-brand/10 px-1.5 py-0.5 font-mono text-[10px] font-medium text-brand-text"},jc={key:1,class:"rounded-sm bg-warning-tint px-1.5 py-0.5 font-mono text-[10px] font-medium text-warning"},Vc={class:"mt-0.5 font-mono text-xs text-secondary"},Hc={class:"flex shrink-0 items-center gap-2"},Kc=["onClick"],zc=["disabled","onClick"],Gc={key:0,class:"mt-3 flex flex-col gap-3 rounded-md border border-subtle bg-sunken px-4 py-4"},Wc={class:"flex flex-col gap-3 sm:flex-row"},Jc={class:"flex flex-1 flex-col gap-1"},qc={class:"flex flex-1 flex-col gap-1"},Yc={class:"flex flex-col gap-3 sm:flex-row"},Zc={class:"flex flex-1 flex-col gap-1"},Xc=["disabled"],Qc=["value"],eu={key:0,class:"text-[11px] text-muted"},tu={class:"flex flex-1 flex-col gap-1"},nu=["value"],su={class:"flex items-center gap-2"},ou={class:"flex items-center gap-2"},iu=["disabled","onClick"],lu={class:"flex flex-col gap-6"},ru={class:"rounded-lg border border-subtle bg-card shadow-sm"},au={class:"flex flex-col gap-3 px-5 py-5"},cu={class:"flex flex-col gap-2 sm:flex-row"},uu=["disabled"],du={key:0,class:"rounded-sm bg-danger-tint px-3 py-2 text-xs font-medium text-danger"},fu={key:1,class:"rounded-sm bg-success-tint px-3 py-2 text-xs font-medium text-success"},pu={class:"rounded-lg border border-subtle bg-card shadow-sm"},hu={class:"flex items-center justify-between border-b border-subtle px-5 py-4"},bu={class:"pv-eyebrow"},mu={class:"flex flex-col"},gu={key:0,class:"border-b border-subtle bg-sunken px-5 py-2.5 font-mono text-xs text-secondary"},vu={key:1,class:"px-5 py-6 text-sm text-secondary"},xu={class:"flex flex-wrap items-center gap-x-3 gap-y-2"},yu={class:"min-w-0 flex-1"},_u={class:"truncate text-sm font-semibold text-primary"},wu={class:"mt-0.5 font-mono text-xs text-secondary"},Su={class:"flex shrink-0 items-center gap-2"},Au=["onClick"],Cu=["disabled","title","onClick"],Eu={key:0,class:"mt-3 flex flex-col gap-2 rounded-md border border-subtle bg-sunken px-4 py-4 sm:flex-row sm:items-end"},ku={class:"flex flex-1 flex-col gap-1"},Tu=["onKeyup"],Pu={class:"flex items-center gap-2"},Ou=["disabled","onClick"],Uu={class:"flex flex-col gap-6"},Mu={class:"rounded-lg border border-subtle bg-card shadow-sm"},Iu={class:"flex items-center justify-between border-b border-subtle px-5 py-4"},Ru={class:"flex flex-col gap-3 px-5 py-5"},Fu={class:"flex flex-col gap-1"},Nu={class:"flex flex-col gap-1"},Lu={class:"flex flex-col gap-1"},Du=["placeholder"],Bu={key:0,class:"font-mono text-[11px] text-muted"},$u={key:0},ju={key:1},Vu={key:1,class:"rounded-sm bg-danger-tint px-3 py-2 text-xs font-medium text-danger"},Hu={key:2,class:"rounded-sm bg-success-tint px-3 py-2 text-xs font-medium text-success"},Ku={class:"flex flex-wrap items-center gap-2"},zu=["disabled"],Gu=["disabled"],Wu={class:"flex flex-col gap-6"},Ju={class:"rounded-lg border border-subtle bg-card shadow-sm"},qu={class:"flex flex-col"},Yu={key:0,class:"px-5 py-3 text-xs font-medium text-danger"},Zu={key:1,class:"border-b border-subtle bg-sunken px-5 py-2.5 font-mono text-xs text-secondary"},Xu={key:2,class:"px-5 py-6 text-sm text-secondary"},Qu={key:3,class:"flex gap-1 overflow-x-auto overflow-y-hidden border-b border-subtle px-3 pt-1"},ed=["onClick"],td={key:4,class:"px-5 py-6 text-sm text-secondary"},nd={class:"flex flex-wrap items-center gap-x-3 gap-y-2"},sd={class:"min-w-0 flex-1"},od={class:"flex flex-wrap items-center gap-2"},id={class:"text-sm font-semibold text-primary"},ld=["title"],rd={key:0},ad={class:"mt-0.5 font-mono text-xs text-secondary"},cd={key:0,class:"mt-0.5 text-[11px] text-secondary"},ud={key:1,class:"mt-2 flex flex-col gap-1.5"},dd={class:"rounded-sm bg-sunken px-1.5 py-0.5 font-mono text-[10px] text-secondary"},fd={key:0,class:"font-mono text-[10px] text-muted"},pd={key:1,class:"w-full text-[11px] text-secondary sm:w-auto"},hd={key:2,class:"mt-1 truncate font-mono text-[11px] text-muted"},bd={class:"flex shrink-0 items-center gap-2"},md=["disabled","onClick"],gd=["onClick"],vd=["value","onChange"],xd=["label"],yd=["value"],_d=["value","onInput"],wd=["disabled","onClick"],Sd=["disabled","onClick"],Ad={key:0,class:"mt-3 flex flex-col gap-2 rounded-md border border-subtle bg-sunken px-4 py-4"},Cd={class:"pv-eyebrow"},Ed={key:0,class:"text-danger"},kd=["onUpdate:modelValue"],Td=["value"],Pd=["value","onChange"],Od=["label"],Ud=["value"],Md=["onUpdate:modelValue"],Id=["onUpdate:modelValue","type","placeholder"],Rd={key:3,class:"text-[11px] text-muted"},Fd={class:"flex items-center gap-2"},Nd=["disabled","onClick"],Ld={class:"border-t border-subtle px-5 py-4"},Dd={class:"flex flex-col gap-2 sm:flex-row"},Bd=["disabled"],$d={key:0,class:"mt-2 text-xs font-medium text-danger"},Ln="pv_panel_token",jd={__name:"App",setup(e){const t=L(localStorage.getItem(Ln)||""),n=L(null),s=L(!1),o=L(!0),i=L({email:"",password:""}),l=L(""),r=L(!1),u=L("overview"),m=[{id:"overview",label:"Overview"},{id:"users",label:"Users"},{id:"organizations",label:"Organizations"},{id:"pocketbase",label:"PocketBase"},{id:"plugins",label:"Plugins"}];async function h(b){try{const a=await fetch("/api/me",{headers:{Authorization:b}});if(!a.ok)return!1;const d=await a.json();return d.role!=="superadmin"?!1:(n.value={id:d.id,email:d.email,role:d.role},!0)}catch{return!1}}async function y(b){t.value=b,localStorage.setItem(Ln,b),s.value=!0,no(),Ue(),v(),$t(),Pt()}async function U(){l.value="";const b=i.value.email.trim().toLowerCase();if(!b||!i.value.password){l.value="Enter your email and password.";return}r.value=!0;try{const a=await fetch("/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:b,password:i.value.password})}),d=await a.json().catch(()=>({}));if(!a.ok||!d.token){l.value="Invalid email or password.";return}if(!await h(d.token)){l.value="Access to this panel is restricted to superadmins.";return}i.value.password="",await y(d.token)}catch{l.value="Cannot reach the API server."}finally{r.value=!1}}function M(){so(),localStorage.removeItem(Ln),t.value="",n.value=null,s.value=!1}const J=L(null),I=L({url:"",adminEmail:"",adminPassword:""}),z=L(null),Y=L(""),j=L(""),Z=L(!1),N=L(!1);function K(b){const a={Authorization:t.value};return b&&(a["Content-Type"]="application/json"),a}async function Ue(){try{const b=await fetch("/api/admin/pb-config",{headers:K()});if(!b.ok)return;const a=await b.json();J.value=a,I.value={url:a.url||"",adminEmail:a.adminEmail||"",adminPassword:""},z.value=a.probe||null}catch{}}async function De(){Y.value="",j.value="",N.value=!0;try{const b=await fetch("/api/admin/pb-config/test",{method:"POST",headers:K(!0),body:JSON.stringify(I.value)});z.value=await b.json()}catch{j.value="Could not run the test."}finally{N.value=!1}}async function Xe(){var b;if(Y.value="",j.value="",!I.value.url.trim()){j.value="A PocketBase URL is required.";return}Z.value=!0;try{const a=await fetch("/api/admin/pb-config",{method:"PUT",headers:K(!0),body:JSON.stringify(I.value)}),d=await a.json().catch(()=>({}));if(!a.ok){j.value=d.error||"Could not save the connection.";return}J.value=d.config,z.value=((b=d.config)==null?void 0:b.probe)||null,I.value={url:d.config.url,adminEmail:d.config.adminEmail,adminPassword:""},Y.value=d.warning||"Connection saved."}catch{j.value="Could not reach the API server."}finally{Z.value=!1}}const Be=L([]),Pe=L(""),de=L(""),Qe=L(""),Ae=L({}),ve=L(""),Ft=[{label:"World",options:[{value:"-90,-180,90,180",label:"World"}]},{label:"Continents",options:[{value:"34,-25,72,45",label:"Europe"},{value:"-35,-18,38,52",label:"Africa"},{value:"5,25,82,180",label:"Asia"},{value:"7,-168,72,-52",label:"North America"},{value:"-56,-82,13,-34",label:"South America"},{value:"-48,110,-10,180",label:"Oceania"}]},...La()],fe=Ft.flatMap(b=>b.options);function ne(b){const a=String(b||"").split(",").map(x=>x.trim());if(a.length!==4)return"";const d=a.map(Number);return d.some(x=>Number.isNaN(x))?"":d.join(",")}const q=L({});function et(b){if(q.value[b])return"__custom__";const a=ne(Ae.value[b]),d=a&&fe.find(x=>ne(x.value)===a);return d?d.value:"__custom__"}function Nt(b,a){if(a==="__custom__"){q.value={...q.value,[b]:!0};return}q.value={...q.value,[b]:!1},Ae.value[b]=a}const be=L({}),pe=L({});function An(b){return!!(b.configFields&&b.configFields.some(a=>a.type==="bbox"))}function Cn(b){if(pe.value[b])return"__custom__";const a=be.value[b];if(!a)return"__default__";const d=ne(a),x=d&&fe.find(te=>ne(te.value)===d);return x?x.value:"__custom__"}function rs(b,a){if(a==="__default__"){pe.value={...pe.value,[b]:!1},be.value={...be.value,[b]:""};return}if(a==="__custom__"){pe.value={...pe.value,[b]:!0};return}pe.value={...pe.value,[b]:!1},be.value={...be.value,[b]:a}}function Ct(b,a){be.value={...be.value,[b]:a}}const Me=L({name:"",baseURL:"",provider:""}),tt=L(""),Et=L(!1),kt=[{id:"apis-external",label:"APIs — External"},{id:"drives-external",label:"Drives — External"},{id:"drives-local",label:"Drives — Local"}],En=L("apis-external");function c(b){return b.category||"apis-external"}function p(b){return Be.value.filter(a=>c(a)===b)}const g=Us(()=>p(En.value)),S={builtin:"bg-success-tint text-success",external:"bg-warning-tint text-warning"},w={ok:"bg-success-tint text-success",degraded:"bg-warning-tint text-warning",down:"bg-danger-tint text-danger"};async function v(){Pe.value="";try{const b=await fetch("/api/admin/plugins",{headers:K()});if(!b.ok){Pe.value="Could not load plugins.";return}const a=await b.json();Be.value=a.plugins||[];for(const d of Be.value)d.enabled&&!d.health&&T(d.name)}catch{Pe.value="Could not reach the API server."}}async function T(b){try{const a=await fetch(`/api/admin/plugins/${encodeURIComponent(b)}/health`,{method:"POST",headers:K()}),d=await a.json().catch(()=>({}));if(a.ok&&d.health){const x=k(b);x&&(x.health=d.health)}}catch{}}function k(b){return Be.value.find(a=>a.name===b)}async function E(b){ve.value=b.name,de.value="";try{const a=await fetch(`/api/admin/plugins/${encodeURIComponent(b.name)}`,{method:"PUT",headers:K(!0),body:JSON.stringify({enabled:!b.enabled})}),d=await a.json().catch(()=>({}));a.ok?d.warning&&(de.value=`${b.name}: ${d.warning}`):de.value=d.error||"Could not update the plugin.",await v()}finally{ve.value=""}}function _(b){Qe.value=Qe.value===b.name?"":b.name;const a={...b.config||{}};for(const d of b.configFields||[])a[d.key]===void 0&&d.default&&(a[d.key]=d.default);Ae.value=a,q.value={}}async function F(b){ve.value=b.name,de.value="";try{const a=await fetch(`/api/admin/plugins/${encodeURIComponent(b.name)}`,{method:"PUT",headers:K(!0),body:JSON.stringify({config:Ae.value})}),d=await a.json().catch(()=>({}));a.ok?(de.value=d.warning?`${b.name}: ${d.warning}`:"Configuration saved.",Qe.value=""):de.value=d.error||"Could not save the configuration.",await v()}finally{ve.value=""}}async function P(b){ve.value=b.name,de.value="";try{const a=(be.value[b.name]||"").trim(),d=a?`?bbox=${encodeURIComponent(a)}`:"",x=await fetch(`/api/admin/plugins/${encodeURIComponent(b.name)}/health${d}`,{method:"POST",headers:K()}),te=await x.json().catch(()=>({}));if(x.ok&&te.health){const Vt=k(b.name);Vt&&(Vt.health=te.health)}else de.value=te.error||"Health check failed."}finally{ve.value=""}}async function R(b){if(b.kind==="external"){ve.value=b.name;try{const a=await fetch(`/api/admin/plugins/${encodeURIComponent(b.name)}`,{method:"DELETE",headers:K()});if(!a.ok){const d=await a.json().catch(()=>({}));de.value=d.error||"Could not remove the plugin."}await v()}finally{ve.value=""}}}async function D(){if(tt.value="",!Me.value.name.trim()||!Me.value.baseURL.trim()){tt.value="Name and base URL are required.";return}Et.value=!0;try{const b=await fetch("/api/admin/plugins",{method:"POST",headers:K(!0),body:JSON.stringify(Me.value)}),a=await b.json().catch(()=>({}));if(!b.ok){tt.value=a.error||"Could not register the plugin.";return}Me.value={name:"",baseURL:"",provider:""},de.value="External plugin registered.",await v()}catch{tt.value="Could not reach the API server."}finally{Et.value=!1}}const H=L([]),W=L([]),G=L(""),re=[{value:"user",label:"User"},{value:"admin",label:"Admin"},{value:"superadmin",label:"Superadmin"}],ue={user:"User",admin:"Admin",superadmin:"Superadmin"},$e={user:"bg-sunken text-secondary",admin:"bg-warning-tint text-warning",superadmin:"bg-success-tint text-success"},xe=Us(()=>{const b={};for(const a of H.value)a.organization&&(b[a.organization]=(b[a.organization]||0)+1);return b});function Ie(b,a){if(!b)return a;if(b.error)return b.error;if(b.data&&typeof b.data=="object"){const d=[];for(const x in b.data)b.data[x]&&b.data[x].message&&d.push(`${x}: ${b.data[x].message}`);if(d.length)return d.join("; ")}return b.message||a}const me=L({email:"",password:"",role:"user",organization:""}),ce=L(""),Ce=L(""),Tt=L(!1),We=L(""),je=L({}),Lt=L(""),Ve=L("");async function Pt(){G.value="";try{const b=await fetch("/api/users",{headers:K()}),a=await b.json().catch(()=>({}));if(!b.ok){G.value=Ie(a,"Could not load users.");return}H.value=a.users||[]}catch{G.value="Could not reach the API server."}}async function qi(){ce.value="",Ce.value="";const b=me.value.email.trim().toLowerCase();if(!b||!b.includes("@")){ce.value="A valid email is required.";return}if(me.value.password.length<8){ce.value="Password must be at least 8 characters.";return}Tt.value=!0;try{const a=await fetch("/api/users",{method:"POST",headers:K(!0),body:JSON.stringify({email:b,password:me.value.password,role:me.value.role,organization:me.value.organization})}),d=await a.json().catch(()=>({}));if(!a.ok){ce.value=Ie(d,"Could not create the user.");return}me.value={email:"",password:"",role:"user",organization:""},Ce.value=`Created ${d.user?d.user.email:"user"}.`,await Pt()}catch{ce.value="Could not reach the API server."}finally{Tt.value=!1}}function Yi(b){Ve.value="",We.value=We.value===b.id?"":b.id,je.value={email:b.email,role:b.role,organization:b.organization||"",verified:!!b.verified,password:""}}async function Zi(b){Ve.value="",Lt.value=b.id;try{const a={},d=je.value;if(d.email.trim().toLowerCase()!==b.email&&(a.email=d.email.trim().toLowerCase()),d.role!==b.role&&(a.role=d.role),(d.organization||"")!==(b.organization||"")&&(a.organization=d.organization||""),d.verified!==!!b.verified&&(a.verified=d.verified),d.password&&(a.password=d.password),Object.keys(a).length===0){Ve.value="No changes to save.";return}const x=await fetch(`/api/users/${encodeURIComponent(b.id)}`,{method:"PATCH",headers:K(!0),body:JSON.stringify(a)}),te=await x.json().catch(()=>({}));if(!x.ok){Ve.value=Ie(te,"Could not update the user.");return}Ve.value=`Updated ${b.email}.`,We.value="",await Pt()}catch{Ve.value="Could not reach the API server."}finally{Lt.value=""}}async function Xi(b){if(b.id!==(n.value&&n.value.id)&&confirm(`Delete user ${b.email}? This cannot be undone.`)){Ve.value="",Lt.value=b.id;try{const a=await fetch(`/api/users/${encodeURIComponent(b.id)}`,{method:"DELETE",headers:K()}),d=await a.json().catch(()=>({}));if(!a.ok){Ve.value=Ie(d,"Could not delete the user.");return}Ve.value=`Deleted ${b.email}.`,We.value===b.id&&(We.value=""),await Pt()}catch{Ve.value="Could not reach the API server."}finally{Lt.value=""}}}const kn=L(""),Dt=L(""),Tn=L(""),Pn=L(!1),dt=L(""),On=L(""),Bt=L(""),Re=L("");async function $t(){try{const b=await fetch("/api/orgs",{headers:K()});if(!b.ok)return;const a=await b.json().catch(()=>({}));W.value=a.organizations||[]}catch{}}async function Zs(){Dt.value="",Tn.value="";const b=kn.value.trim();if(!b){Dt.value="An organization name is required.";return}Pn.value=!0;try{const a=await fetch("/api/orgs",{method:"POST",headers:K(!0),body:JSON.stringify({name:b})}),d=await a.json().catch(()=>({}));if(!a.ok){Dt.value=Ie(d,"Could not create the organization.");return}kn.value="",Tn.value=`Created ${d.organization?d.organization.name:"organization"}.`,await $t()}catch{Dt.value="Could not reach the API server."}finally{Pn.value=!1}}function Qi(b){Re.value="",dt.value=dt.value===b.id?"":b.id,On.value=b.name}async function Xs(b){Re.value="";const a=On.value.trim();if(!a){Re.value="An organization name is required.";return}if(a===b.name){dt.value="";return}Bt.value=b.id;try{const d=await fetch(`/api/orgs/${encodeURIComponent(b.id)}`,{method:"PATCH",headers:K(!0),body:JSON.stringify({name:a})}),x=await d.json().catch(()=>({}));if(!d.ok){Re.value=Ie(x,"Could not rename the organization.");return}Re.value=`Renamed to ${a}.`,dt.value="",await $t(),await Pt()}catch{Re.value="Could not reach the API server."}finally{Bt.value=""}}async function el(b){const a=xe.value[b.id]||0;if(a>0){Re.value=`${b.name} still has ${a} member${a===1?"":"s"}; reassign or remove them first.`;return}if(confirm(`Delete organization ${b.name}?`)){Re.value="",Bt.value=b.id;try{const d=await fetch(`/api/orgs/${encodeURIComponent(b.id)}`,{method:"DELETE",headers:K()}),x=await d.json().catch(()=>({}));if(!d.ok){Re.value=Ie(x,"Could not delete the organization.");return}Re.value=`Deleted ${b.name}.`,dt.value===b.id&&(dt.value=""),await $t()}catch{Re.value="Could not reach the API server."}finally{Bt.value=""}}}const as=L(null),Un=L(null),jt=L({apiServer:{status:"checking",detail:""},pocketBase:{status:"checking",detail:""},webApp:{status:"checking",detail:""}});let Mn=null;const tl=[{key:"apiServer",label:"API server"},{key:"pocketBase",label:"PocketBase"},{key:"webApp",label:"Web App"}],Qs={checking:{label:"checking",cls:"bg-sunken text-secondary"},ok:{label:"operational",cls:"bg-success-tint text-success"},down:{label:"unreachable",cls:"bg-danger-tint text-danger"},unreachable:{label:"unreachable",cls:"bg-danger-tint text-danger"}};function eo(b){const a=[];return b.httpStatus&&a.push("HTTP "+b.httpStatus),b.url&&a.push(b.url),typeof b.latencyMs=="number"&&a.push(b.latencyMs+"ms"),a.join(" · ")}async function to(){var b,a;try{const d=await fetch("/api/status");if(!d.ok)throw new Error("status "+d.status);const x=await d.json(),te=x.apiServer||{};Un.value=te.devices??0,jt.value={apiServer:{status:"ok",detail:""},pocketBase:{status:((b=x.pocketBase)==null?void 0:b.status)==="ok"?"ok":"down",detail:eo(x.pocketBase||{})},webApp:{status:((a=x.webApp)==null?void 0:a.status)==="ok"?"ok":"down",detail:eo(x.webApp||{})}}}catch{Un.value=null,jt.value={apiServer:{status:"unreachable",detail:""},pocketBase:{status:"unreachable",detail:""},webApp:{status:"unreachable",detail:""}}}as.value=new Date}function no(){to(),clearInterval(Mn),Mn=setInterval(to,1e4)}function so(){clearInterval(Mn),Mn=null}yi(async()=>{t.value&&await h(t.value)?(s.value=!0,no(),Ue(),v(),$t(),Pt()):t.value&&(localStorage.removeItem(Ln),t.value=""),o.value=!1}),Js(()=>so());const nl=[{method:"POST",path:"/api/auth/login",desc:"Exchange email + password for a session (via PocketBase)"},{method:"GET",path:"/api/auth/validate",desc:"Validate the current session token"},{method:"GET",path:"/api/me",desc:"Caller's id, email, role, and organization from their token"},{method:"GET",path:"/api/preferences",desc:"Read the caller's saved settings blob"},{method:"PUT",path:"/api/preferences",desc:"Persist the caller's settings onto their user record"},{method:"GET",path:"/api/devices",desc:"List connected devices and last-known state"},{method:"GET",path:"/api/devices/{id}/track",desc:"GPS track history for a device"},{method:"POST",path:"/api/devices/{id}/command",desc:"Send a command down to a device"},{method:"DELETE",path:"/api/devices/{id}",desc:"Forget a device's stored state"},{method:"GET",path:"/ws/ui",desc:"Live telemetry stream (WebSocket)"}],sl=[{method:"GET",path:"/api/users",desc:"List users (admin: own org · superadmin: all)"},{method:"POST",path:"/api/users",desc:"Create a user {email, password, role, organization?}"},{method:"PATCH",path:"/api/users/{id}",desc:"Edit a user (role/org changes are scope-checked)"},{method:"DELETE",path:"/api/users/{id}",desc:"Delete a user (not self; admins in-org only)"},{method:"GET",path:"/api/orgs",desc:"List organizations (admin: own · superadmin: all)"},{method:"POST",path:"/api/orgs",desc:"Create an organization {name} (superadmin)"},{method:"PATCH",path:"/api/orgs/{id}",desc:"Rename an organization (superadmin)"},{method:"DELETE",path:"/api/orgs/{id}",desc:"Delete an empty organization (superadmin)"},{method:"GET",path:"/api/admin/pb-config",desc:"Read the PocketBase connection + live probe (superadmin)"},{method:"POST",path:"/api/admin/pb-config/test",desc:"Test a candidate connection without applying (superadmin)"},{method:"PUT",path:"/api/admin/pb-config",desc:"Update + persist the PocketBase connection (superadmin)"},{method:"GET",path:"/api/admin/plugins",desc:"List plugins + state + last health (superadmin)"},{method:"POST",path:"/api/admin/plugins",desc:"Register an external plugin {name, baseURL} (superadmin)"},{method:"PUT",path:"/api/admin/plugins/{name}",desc:"Enable/disable + configure a plugin (superadmin)"},{method:"DELETE",path:"/api/admin/plugins/{name}",desc:"Remove an external plugin (superadmin)"},{method:"POST",path:"/api/admin/plugins/{name}/health",desc:"Run a plugin health check (superadmin)"}],ol=[{method:"GET",path:"/ws/device?id={id}",desc:"Device telemetry uplink (WebSocket)"},{method:"POST",path:"/api/telemetry?id={id}",desc:"Push a single telemetry event over HTTP"},{method:"GET",path:"/healthz",desc:"Readiness probe"}];return(b,a)=>(A(),C("div",Ga,[f("div",Wa,[a[25]||(a[25]=Vr('
PilotVault
API server
',3)),s.value&&n.value?(A(),C("span",Ja,O(n.value.email),1)):$("",!0),s.value?(A(),C("button",{key:1,class:"pv-btn-sec pv-btn-sm",onClick:M},"Sign out")):$("",!0),f("button",{class:"pv-btn-sec pv-btn-sm",title:on(yn)==="dark"?"Switch to light theme":"Switch to dark theme",onClick:a[0]||(a[0]=(...d)=>on(Do)&&on(Do)(...d))},[on(yn)==="dark"?(A(),C("svg",Ya,[...a[22]||(a[22]=[f("circle",{cx:"12",cy:"12",r:"4"},null,-1),f("path",{d:"M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41"},null,-1)])])):(A(),C("svg",Za,[...a[23]||(a[23]=[f("path",{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"},null,-1)])])),a[24]||(a[24]=He(" Theme ",-1))],8,qa)]),o.value?(A(),C("div",Xa,[...a[26]||(a[26]=[f("span",{class:"pv-eyebrow"},"Checking session…",-1)])])):s.value?(A(),C(X,{key:2},[f("div",oc,[(A(),C(X,null,he(m,d=>f("button",{key:d.id,class:Fe(["rounded-md px-3.5 py-1.5 text-sm font-semibold transition",u.value===d.id?"bg-brand text-on-brand":"text-secondary hover:text-primary"]),onClick:x=>u.value=d.id},O(d.label),11,ic)),64))]),ie(f("div",lc,[f("div",rc,[f("div",ac,[a[30]||(a[30]=f("div",{class:"text-base font-semibold text-primary"},"Status",-1)),f("span",cc,O(as.value?"checked "+as.value.toLocaleTimeString():"—"),1)]),f("div",null,[(A(),C(X,null,he(tl,d=>f("div",{key:d.key,class:"flex items-center justify-between gap-3 border-t border-subtle px-5 py-3.5 first:border-t-0"},[f("div",uc,[f("div",dc,O(d.label),1),jt.value[d.key].detail?(A(),C("div",fc,O(jt.value[d.key].detail),1)):$("",!0)]),f("span",{class:Fe(["inline-flex shrink-0 items-center gap-1.5 rounded-sm px-2.5 py-1 font-mono text-xs font-medium",Qs[jt.value[d.key].status].cls])},[a[31]||(a[31]=f("span",{class:"h-1.5 w-1.5 rounded-full bg-current"},null,-1)),He(" "+O(Qs[jt.value[d.key].status].label),1)],2)])),64)),f("div",pc,[a[32]||(a[32]=f("div",{class:"text-sm font-semibold text-primary"},"Devices",-1)),f("span",hc,O(Un.value===null?"—":Un.value+" online"),1)])])]),Le(ys,{title:"Client API",auth:"PocketBase session",endpoints:nl}),Le(ys,{title:"Management API",auth:"Admin · superadmin",endpoints:sl}),Le(ys,{title:"Device API",auth:"Device uplink",endpoints:ol})],512),[[nn,u.value==="overview"]]),ie(f("div",bc,[f("div",mc,[a[38]||(a[38]=f("div",{class:"border-b border-subtle px-5 py-4"},[f("div",{class:"text-base font-semibold text-primary"},"Add user"),f("span",{class:"pv-eyebrow"},"Create an account")],-1)),f("div",gc,[f("div",vc,[f("label",xc,[a[33]||(a[33]=f("span",{class:"pv-eyebrow"},"Email",-1)),ie(f("input",{"onUpdate:modelValue":a[3]||(a[3]=d=>me.value.email=d),type:"email",class:"pv-input",placeholder:"pilot@pilotvault.local",autocomplete:"off",spellcheck:"false"},null,512),[[ye,me.value.email]])]),f("label",yc,[a[34]||(a[34]=f("span",{class:"pv-eyebrow"},"Password",-1)),ie(f("input",{"onUpdate:modelValue":a[4]||(a[4]=d=>me.value.password=d),type:"password",class:"pv-input",placeholder:"min. 8 characters",autocomplete:"new-password"},null,512),[[ye,me.value.password]])])]),f("div",_c,[f("label",wc,[a[35]||(a[35]=f("span",{class:"pv-eyebrow"},"Role",-1)),ie(f("select",{"onUpdate:modelValue":a[5]||(a[5]=d=>me.value.role=d),class:"pv-input"},[(A(),C(X,null,he(re,d=>f("option",{key:d.value,value:d.value},O(d.label),9,Sc)),64))],512),[[zt,me.value.role]])]),f("label",Ac,[a[37]||(a[37]=f("span",{class:"pv-eyebrow"},"Organization",-1)),ie(f("select",{"onUpdate:modelValue":a[6]||(a[6]=d=>me.value.organization=d),class:"pv-input"},[a[36]||(a[36]=f("option",{value:""},"— none —",-1)),(A(!0),C(X,null,he(W.value,d=>(A(),C("option",{key:d.id,value:d.id},O(d.name),9,Cc))),128))],512),[[zt,me.value.organization]])])]),ce.value?(A(),C("p",Ec,O(ce.value),1)):Ce.value?(A(),C("p",kc,O(Ce.value),1)):$("",!0),f("div",null,[f("button",{class:"pv-btn",disabled:Tt.value,onClick:qi},O(Tt.value?"Creating…":"Create user"),9,Tc)])])]),f("div",Pc,[f("div",Oc,[f("div",null,[a[39]||(a[39]=f("div",{class:"text-base font-semibold text-primary"},"Users",-1)),f("span",Uc,O(H.value.length)+" total",1)]),f("button",{class:"pv-btn-sec pv-btn-sm",onClick:Pt},"Refresh")]),f("div",Mc,[G.value?(A(),C("p",Ic,O(G.value),1)):$("",!0),Ve.value?(A(),C("p",Rc,O(Ve.value),1)):$("",!0),!H.value.length&&!G.value?(A(),C("p",Fc,"No users yet.")):$("",!0),(A(!0),C(X,null,he(H.value,d=>(A(),C("div",{key:d.id,class:"border-t border-subtle px-5 py-4 first:border-t-0"},[f("div",Nc,[f("div",Lc,[f("div",Dc,[f("span",Bc,O(d.email),1),f("span",{class:Fe(["rounded-sm px-1.5 py-0.5 font-mono text-[10px] font-medium uppercase tracking-wider",$e[d.role]])},O(ue[d.role]||d.role),3),d.id===(n.value&&n.value.id)?(A(),C("span",$c,"you")):$("",!0),d.verified?$("",!0):(A(),C("span",jc,"unverified"))]),f("div",Vc,O(d.organizationName||(d.organization?d.organization:"no organization")),1)]),f("div",Hc,[f("button",{class:"pv-btn-sec pv-btn-sm",onClick:x=>Yi(d)},O(We.value===d.id?"Close":"Edit"),9,Kc),d.id!==(n.value&&n.value.id)?(A(),C("button",{key:0,class:"pv-btn-sec pv-btn-sm !text-danger",disabled:Lt.value===d.id,onClick:x=>Xi(d)}," Delete ",8,zc)):$("",!0)])]),We.value===d.id?(A(),C("div",Gc,[f("div",Wc,[f("label",Jc,[a[40]||(a[40]=f("span",{class:"pv-eyebrow"},"Email",-1)),ie(f("input",{"onUpdate:modelValue":a[7]||(a[7]=x=>je.value.email=x),type:"email",class:"pv-input",autocomplete:"off",spellcheck:"false"},null,512),[[ye,je.value.email]])]),f("label",qc,[a[41]||(a[41]=f("span",{class:"pv-eyebrow"},"New password",-1)),ie(f("input",{"onUpdate:modelValue":a[8]||(a[8]=x=>je.value.password=x),type:"password",class:"pv-input",placeholder:"leave blank to keep current",autocomplete:"new-password"},null,512),[[ye,je.value.password]])])]),f("div",Yc,[f("label",Zc,[a[42]||(a[42]=f("span",{class:"pv-eyebrow"},"Role",-1)),ie(f("select",{"onUpdate:modelValue":a[9]||(a[9]=x=>je.value.role=x),class:"pv-input",disabled:d.id===(n.value&&n.value.id)},[(A(),C(X,null,he(re,x=>f("option",{key:x.value,value:x.value},O(x.label),9,Qc)),64))],8,Xc),[[zt,je.value.role]]),d.id===(n.value&&n.value.id)?(A(),C("span",eu,"You cannot change your own role.")):$("",!0)]),f("label",tu,[a[44]||(a[44]=f("span",{class:"pv-eyebrow"},"Organization",-1)),ie(f("select",{"onUpdate:modelValue":a[10]||(a[10]=x=>je.value.organization=x),class:"pv-input"},[a[43]||(a[43]=f("option",{value:""},"— none —",-1)),(A(!0),C(X,null,he(W.value,x=>(A(),C("option",{key:x.id,value:x.id},O(x.name),9,nu))),128))],512),[[zt,je.value.organization]])])]),f("label",su,[ie(f("input",{"onUpdate:modelValue":a[11]||(a[11]=x=>je.value.verified=x),type:"checkbox",class:"h-4 w-4"},null,512),[[zi,je.value.verified]]),a[45]||(a[45]=f("span",{class:"text-sm text-primary"},"Verified",-1))]),f("div",ou,[f("button",{class:"pv-btn pv-btn-sm",disabled:Lt.value===d.id,onClick:x=>Zi(d)},"Save changes",8,iu),f("button",{class:"pv-btn-sec pv-btn-sm",onClick:a[12]||(a[12]=x=>We.value="")},"Cancel")])])):$("",!0)]))),128))])])],512),[[nn,u.value==="users"]]),ie(f("div",lu,[f("div",ru,[a[46]||(a[46]=f("div",{class:"border-b border-subtle px-5 py-4"},[f("div",{class:"text-base font-semibold text-primary"},"Add organization"),f("span",{class:"pv-eyebrow"},"Create a tenant")],-1)),f("div",au,[f("div",cu,[ie(f("input",{"onUpdate:modelValue":a[13]||(a[13]=d=>kn.value=d),class:"pv-input flex-1",placeholder:"Acme Aerial Ltd.",autocomplete:"off",spellcheck:"false",onKeyup:No(Zs,["enter"])},null,544),[[ye,kn.value]]),f("button",{class:"pv-btn",disabled:Pn.value,onClick:Zs},O(Pn.value?"Creating…":"Create"),9,uu)]),Dt.value?(A(),C("p",du,O(Dt.value),1)):Tn.value?(A(),C("p",fu,O(Tn.value),1)):$("",!0)])]),f("div",pu,[f("div",hu,[f("div",null,[a[47]||(a[47]=f("div",{class:"text-base font-semibold text-primary"},"Organizations",-1)),f("span",bu,O(W.value.length)+" total",1)]),f("button",{class:"pv-btn-sec pv-btn-sm",onClick:$t},"Refresh")]),f("div",mu,[Re.value?(A(),C("p",gu,O(Re.value),1)):$("",!0),W.value.length?$("",!0):(A(),C("p",vu,"No organizations yet.")),(A(!0),C(X,null,he(W.value,d=>(A(),C("div",{key:d.id,class:"border-t border-subtle px-5 py-4 first:border-t-0"},[f("div",xu,[f("div",yu,[f("div",_u,O(d.name),1),f("div",wu,O(xe.value[d.id]||0)+" member"+O((xe.value[d.id]||0)===1?"":"s"),1)]),f("div",Su,[f("button",{class:"pv-btn-sec pv-btn-sm",onClick:x=>Qi(d)},O(dt.value===d.id?"Close":"Rename"),9,Au),f("button",{class:"pv-btn-sec pv-btn-sm !text-danger",disabled:Bt.value===d.id||(xe.value[d.id]||0)>0,title:(xe.value[d.id]||0)>0?"Reassign or remove members first":"Delete organization",onClick:x=>el(d)}," Delete ",8,Cu)])]),dt.value===d.id?(A(),C("div",Eu,[f("label",ku,[a[48]||(a[48]=f("span",{class:"pv-eyebrow"},"Name",-1)),ie(f("input",{"onUpdate:modelValue":a[14]||(a[14]=x=>On.value=x),class:"pv-input",autocomplete:"off",spellcheck:"false",onKeyup:No(x=>Xs(d),["enter"])},null,40,Tu),[[ye,On.value]])]),f("div",Pu,[f("button",{class:"pv-btn pv-btn-sm",disabled:Bt.value===d.id,onClick:x=>Xs(d)},"Save",8,Ou),f("button",{class:"pv-btn-sec pv-btn-sm",onClick:a[15]||(a[15]=x=>dt.value="")},"Cancel")])])):$("",!0)]))),128))])])],512),[[nn,u.value==="organizations"]]),ie(f("div",Uu,[f("div",Mu,[f("div",Iu,[a[50]||(a[50]=f("div",null,[f("div",{class:"text-base font-semibold text-primary"},"PocketBase connection"),f("span",{class:"pv-eyebrow"},"Settings")],-1)),z.value?(A(),C("span",{key:0,class:Fe(["inline-flex shrink-0 items-center gap-1.5 rounded-sm px-2.5 py-1 font-mono text-xs font-medium",z.value.reachable?z.value.superuser?"bg-success-tint text-success":"bg-warning-tint text-warning":"bg-danger-tint text-danger"])},[a[49]||(a[49]=f("span",{class:"h-1.5 w-1.5 rounded-full bg-current"},null,-1)),He(" "+O(z.value.reachable?z.value.superuser?"connected":"reachable":"unreachable"),1)],2)):$("",!0)]),f("div",Ru,[f("label",Fu,[a[51]||(a[51]=f("span",{class:"pv-eyebrow"},"PocketBase URL",-1)),ie(f("input",{"onUpdate:modelValue":a[16]||(a[16]=d=>I.value.url=d),class:"pv-input",placeholder:"http://10.2.1.10:8026",spellcheck:"false"},null,512),[[ye,I.value.url]])]),f("label",Nu,[a[52]||(a[52]=f("span",{class:"pv-eyebrow"},"Service account email",-1)),ie(f("input",{"onUpdate:modelValue":a[17]||(a[17]=d=>I.value.adminEmail=d),class:"pv-input",placeholder:"admin@pilotvault.local",autocomplete:"off",spellcheck:"false"},null,512),[[ye,I.value.adminEmail]])]),f("label",Lu,[a[53]||(a[53]=f("span",{class:"pv-eyebrow"},"Service account password",-1)),ie(f("input",{"onUpdate:modelValue":a[18]||(a[18]=d=>I.value.adminPassword=d),type:"password",class:"pv-input",autocomplete:"new-password",placeholder:J.value&&J.value.adminConfigured?"leave blank to keep current":"set a password"},null,8,Du),[[ye,I.value.adminPassword]])]),z.value?(A(),C("div",Bu,[He(" health: "+O(z.value.reachable?"ok":"down"),1),z.value.latencyMs?(A(),C("span",$u," · "+O(z.value.latencyMs)+"ms",1)):$("",!0),He(" · superuser auth: "+O(z.value.superuser?"ok":"—"),1),z.value.detail?(A(),C("span",ju," · "+O(z.value.detail),1)):$("",!0)])):$("",!0),j.value?(A(),C("p",Vu,O(j.value),1)):Y.value?(A(),C("p",Hu,O(Y.value),1)):$("",!0),f("div",Ku,[f("button",{class:"pv-btn",disabled:Z.value,onClick:Xe},O(Z.value?"Saving…":"Save connection"),9,zu),f("button",{class:"pv-btn-sec",disabled:N.value,onClick:De},O(N.value?"Testing…":"Test connection"),9,Gu)]),a[54]||(a[54]=f("p",{class:"text-[11px] text-muted"}," The service account is used only for user & organization management. Changing the URL repoints the whole API Server at a new PocketBase and may sign you out. ",-1))])])],512),[[nn,u.value==="pocketbase"]]),ie(f("div",Wu,[f("div",Ju,[f("div",{class:"flex items-center justify-between border-b border-subtle px-5 py-4"},[a[55]||(a[55]=f("div",null,[f("div",{class:"text-base font-semibold text-primary"},"Plugins"),f("span",{class:"pv-eyebrow"},"External integrations")],-1)),f("button",{class:"pv-btn-sec pv-btn-sm",onClick:v},"Refresh")]),f("div",qu,[Pe.value?(A(),C("p",Yu,O(Pe.value),1)):$("",!0),de.value?(A(),C("p",Zu,O(de.value),1)):$("",!0),!Be.value.length&&!Pe.value?(A(),C("p",Xu,"No plugins registered yet.")):$("",!0),Be.value.length?(A(),C("div",Qu,[(A(),C(X,null,he(kt,d=>f("button",{key:d.id,class:Fe(["-mb-px whitespace-nowrap border-b-2 px-3 py-2 text-sm font-semibold transition",En.value===d.id?"border-brand text-primary":"border-transparent text-secondary hover:text-primary"]),onClick:x=>En.value=d.id},O(d.label),11,ed)),64))])):$("",!0),Be.value.length&&!g.value.length?(A(),C("p",td,"No plugins in this category.")):$("",!0),(A(!0),C(X,null,he(g.value,d=>(A(),C("div",{key:d.name,class:"border-t border-subtle px-5 py-4 first:border-t-0"},[f("div",nd,[f("div",sd,[f("div",od,[f("span",id,O(d.name),1),f("span",{class:Fe(["rounded-sm px-1.5 py-0.5 font-mono text-[10px] font-medium uppercase tracking-wider",S[d.kind]])},O(d.kind),3),d.health?(A(),C("span",{key:0,class:Fe(["inline-flex items-center gap-1 rounded-sm px-1.5 py-0.5 font-mono text-[10px] font-medium",w[d.health.status]]),title:d.health.detail||""},[a[56]||(a[56]=f("span",{class:"h-1 w-1 rounded-full bg-current"},null,-1)),He(O(d.health.status),1),d.health.latencyMs?(A(),C("span",rd," · "+O(d.health.latencyMs)+"ms",1)):$("",!0)],10,ld)):$("",!0)]),f("div",ad,O(d.provider)+" · v"+O(d.version)+" · "+O(d.authType),1),d.health&&d.health.detail?(A(),C("div",cd,O(d.health.detail),1)):$("",!0),d.capabilities&&d.capabilities.length?(A(),C("div",ud,[a[57]||(a[57]=f("div",{class:"pv-eyebrow"},"Capabilities",-1)),(A(!0),C(X,null,he(d.capabilities,x=>(A(),C("div",{key:x.id,class:"flex flex-wrap items-baseline gap-x-2 gap-y-0.5"},[f("span",dd,O(x.id),1),x.method||x.endpoint?(A(),C("span",fd,O(x.method)+" "+O(x.endpoint),1)):$("",!0),x.description?(A(),C("span",pd,O(x.description),1)):$("",!0)]))),128))])):$("",!0),d.baseURL?(A(),C("div",hd,O(d.baseURL),1)):$("",!0)]),f("div",bd,[f("button",{class:Fe(["pv-btn-sec pv-btn-sm",d.enabled?"!border-transparent !bg-success-tint !text-success":""]),disabled:ve.value===d.name,onClick:x=>E(d)},[f("span",{class:Fe(["h-1.5 w-1.5 rounded-full",d.enabled?"bg-success":"bg-muted"])},null,2),He(" "+O(d.enabled?"Enabled":"Disabled"),1)],10,md),d.configFields&&d.configFields.length?(A(),C("button",{key:0,class:"pv-btn-sec pv-btn-sm",onClick:x=>_(d)},"Configure",8,gd)):$("",!0),An(d)?(A(),C(X,{key:1},[f("select",{value:Cn(d.name),class:"pv-input pv-input-sm max-w-[11rem]",title:"Bounding box used for this Check — smaller areas cost fewer OpenSky credits",onChange:x=>rs(d.name,x.target.value)},[a[58]||(a[58]=f("option",{value:"__default__"},"Probe: saved default",-1)),(A(),C(X,null,he(Ft,x=>f("optgroup",{key:x.label,label:x.label},[(A(!0),C(X,null,he(x.options,te=>(A(),C("option",{key:te.value,value:te.value},O(te.label),9,yd))),128))],8,xd)),64)),a[59]||(a[59]=f("option",{value:"__custom__"},"Custom…",-1))],40,vd),Cn(d.name)==="__custom__"?(A(),C("input",{key:0,value:be.value[d.name]||"",class:"pv-input pv-input-sm w-40 font-mono",placeholder:"lamin,lomin,lamax,lomax",onInput:x=>Ct(d.name,x.target.value)},null,40,_d)):$("",!0)],64)):$("",!0),f("button",{class:"pv-btn-sec pv-btn-sm",disabled:ve.value===d.name,onClick:x=>P(d)},"Check",8,wd),d.kind==="external"?(A(),C("button",{key:2,class:"pv-btn-sec pv-btn-sm !text-danger",disabled:ve.value===d.name,onClick:x=>R(d)},"Remove",8,Sd)):$("",!0)])]),Qe.value===d.name?(A(),C("div",Ad,[(A(!0),C(X,null,he(d.configFields,x=>(A(),C("label",{key:x.key,class:"flex flex-col gap-1"},[f("span",Cd,[He(O(x.label),1),x.required?(A(),C("span",Ed," *")):$("",!0)]),x.type==="select"?ie((A(),C("select",{key:0,"onUpdate:modelValue":te=>Ae.value[x.key]=te,class:"pv-input"},[(A(!0),C(X,null,he(x.options,te=>(A(),C("option",{key:te.value,value:te.value},O(te.label),9,Td))),128))],8,kd)),[[zt,Ae.value[x.key]]]):x.type==="bbox"?(A(),C(X,{key:1},[f("select",{value:et(x.key),class:"pv-input",onChange:te=>Nt(x.key,te.target.value)},[(A(),C(X,null,he(Ft,te=>f("optgroup",{key:te.label,label:te.label},[(A(!0),C(X,null,he(te.options,Vt=>(A(),C("option",{key:Vt.value,value:Vt.value},O(Vt.label),9,Ud))),128))],8,Od)),64)),a[60]||(a[60]=f("option",{value:"__custom__"},"Custom…",-1))],40,Pd),et(x.key)==="__custom__"?ie((A(),C("input",{key:0,"onUpdate:modelValue":te=>Ae.value[x.key]=te,type:"text",class:"pv-input font-mono",autocomplete:"off",placeholder:"50.5,3.2,53.7,7.3"},null,8,Md)),[[ye,Ae.value[x.key]]]):$("",!0)],64)):ie((A(),C("input",{key:2,"onUpdate:modelValue":te=>Ae.value[x.key]=te,type:x.secret||x.type==="password"?"password":x.type==="number"?"number":"text",class:"pv-input",autocomplete:"off",placeholder:x.help||""},null,8,Id)),[[Sa,Ae.value[x.key]]]),x.help?(A(),C("span",Rd,O(x.help),1)):$("",!0)]))),128)),f("div",Fd,[f("button",{class:"pv-btn pv-btn-sm",disabled:ve.value===d.name,onClick:x=>F(d)},"Save configuration",8,Nd),f("button",{class:"pv-btn-sec pv-btn-sm",onClick:a[19]||(a[19]=x=>Qe.value="")},"Cancel")])])):$("",!0)]))),128)),f("div",Ld,[a[61]||(a[61]=f("div",{class:"pv-eyebrow mb-2"},"Register external plugin",-1)),f("div",Dd,[ie(f("input",{"onUpdate:modelValue":a[20]||(a[20]=d=>Me.value.name=d),class:"pv-input sm:w-40",placeholder:"name",autocomplete:"off",spellcheck:"false"},null,512),[[ye,Me.value.name]]),ie(f("input",{"onUpdate:modelValue":a[21]||(a[21]=d=>Me.value.baseURL=d),class:"pv-input flex-1",placeholder:"https://plugin.example.com",autocomplete:"off",spellcheck:"false"},null,512),[[ye,Me.value.baseURL]]),f("button",{class:"pv-btn",disabled:Et.value,onClick:D},O(Et.value?"Adding…":"Add"),9,Bd)]),tt.value?(A(),C("p",$d,O(tt.value),1)):$("",!0),a[62]||(a[62]=f("p",{class:"mt-2 text-[11px] text-muted"},[He(" A remote service that answers "),f("span",{class:"font-mono"},"GET /health"),He(" and "),f("span",{class:"font-mono"},"GET /manifest"),He(" — added at runtime, no rebuild. ")],-1))])])])],512),[[nn,u.value==="plugins"]])],64)):(A(),C("div",Qa,[a[29]||(a[29]=f("div",{class:"border-b border-subtle px-5 py-4"},[f("div",{class:"text-base font-semibold text-primary"},"Sign in"),f("span",{class:"pv-eyebrow"},"Superadmin access only")],-1)),f("form",{class:"flex flex-col gap-3 px-5 py-5",onSubmit:ka(U,["prevent"])},[f("label",ec,[a[27]||(a[27]=f("span",{class:"pv-eyebrow"},"Email",-1)),ie(f("input",{"onUpdate:modelValue":a[1]||(a[1]=d=>i.value.email=d),type:"email",autocomplete:"username",class:"pv-input",placeholder:"superadmin@pilotvault.local"},null,512),[[ye,i.value.email]])]),f("label",tc,[a[28]||(a[28]=f("span",{class:"pv-eyebrow"},"Password",-1)),ie(f("input",{"onUpdate:modelValue":a[2]||(a[2]=d=>i.value.password=d),type:"password",autocomplete:"current-password",class:"pv-input",placeholder:"••••••••"},null,512),[[ye,i.value.password]])]),l.value?(A(),C("p",nc,O(l.value),1)):$("",!0),f("button",{type:"submit",class:"pv-btn mt-1",disabled:r.value},O(r.value?"Signing in…":"Sign in"),9,sc)],32)])),a[63]||(a[63]=f("p",{class:"text-center font-mono text-[11px] text-muted"}," PilotVault — live drone telemetry, command & control. ",-1))]))}};Ua(jd).mount("#app"); diff --git a/API Server/internal/api/dist/index.html b/API Server/internal/api/dist/index.html index a7c14f0..51ea25e 100644 --- a/API Server/internal/api/dist/index.html +++ b/API Server/internal/api/dist/index.html @@ -6,7 +6,7 @@ PilotVault · API Server - + diff --git a/API Server/panel/src/App.vue b/API Server/panel/src/App.vue index 8e27953..6191f91 100644 --- a/API Server/panel/src/App.vue +++ b/API Server/panel/src/App.vue @@ -854,6 +854,43 @@ const clientApi = [ { method: "GET", path: "/ws/ui", desc: "Live telemetry stream (WebSocket)" }, ]; +// Logbook + fleet — the pilot's drones and flight records (BEK 1649 §5). +// Every route is scoped in Go: a user sees their own flights and their org's +// drones, an admin their whole org, a superadmin everything. +const logbookApi = [ + { method: "GET", path: "/api/drones", desc: "List the fleet in scope" }, + { method: "POST", path: "/api/drones", desc: "Register a drone by hand" }, + { method: "POST", path: "/api/drones/auto", desc: "Upsert the drone a device just connected, keyed on its flight controller's serial" }, + { method: "PATCH", path: "/api/drones/{id}", desc: "Edit a drone (whole-record write)" }, + { method: "DELETE", path: "/api/drones/{id}", desc: "Delete a drone" }, + { method: "GET", path: "/api/flights", desc: "List flight records in scope" }, + { method: "POST", path: "/api/flights", desc: "Log a flight" }, + { method: "PATCH", path: "/api/flights/{id}", desc: "Edit a flight record" }, + { method: "DELETE", path: "/api/flights/{id}", desc: "Delete a flight record" }, + { method: "GET", path: "/api/logbook/export", desc: "Export the logbook as CSV, compliance flags included" }, +]; + +// Documents — the operator's document store (certificates, insurance, permits), +// with expiry alerting. File blobs live on PocketBase. +const documentsApi = [ + { method: "GET", path: "/api/documents", desc: "List documents (?expiring filters to those near expiry)" }, + { method: "POST", path: "/api/documents", desc: "Upload a document (multipart)" }, + { method: "PATCH", path: "/api/documents/{id}", desc: "Edit a document, or replace its file" }, + { method: "DELETE", path: "/api/documents/{id}", desc: "Delete a document" }, + { method: "GET", path: "/api/documents/{id}/file", desc: "Stream a document's file down" }, +]; + +// Plugin integrations for end users. Each plugin is routed explicitly rather +// than by wildcard; {plugin} here stands for the five that exist today. +// Settings resolve through the superadmin → org → user cascade, per field. +const integrationsApi = [ + { method: "GET", path: "/api/integrations/{plugin}", desc: "Resolved settings + per-field lock state (opensky · filetransfer · localstorage · webdav · openweather)" }, + { method: "PUT", path: "/api/integrations/{plugin}", desc: "Save settings at a scope ({scope: user | org}; org needs admin)" }, + { method: "POST", path: "/api/integrations/{plugin}/health", desc: "Probe the plugin with the caller's resolved config" }, + { method: "GET", path: "/api/integrations/opensky/states", desc: "Live aircraft state vectors for a bbox (map overlay)" }, + { method: "GET", path: "/api/integrations/openweather/current", desc: "Current weather + 5-day forecast for a point" }, +]; + // Management API — user + organization management. Requires a manager // (admin or superadmin) token; admins are scoped to their own organization, // superadmins span all of them. @@ -871,16 +908,20 @@ const managementApi = [ { method: "PUT", path: "/api/admin/pb-config", desc: "Update + persist the PocketBase connection (superadmin)" }, { method: "GET", path: "/api/admin/plugins", desc: "List plugins + state + last health (superadmin)" }, { method: "POST", path: "/api/admin/plugins", desc: "Register an external plugin {name, baseURL} (superadmin)" }, + { method: "GET", path: "/api/admin/plugins/{name}", desc: "Read one plugin's state + config (superadmin)" }, { method: "PUT", path: "/api/admin/plugins/{name}", desc: "Enable/disable + configure a plugin (superadmin)" }, { method: "DELETE", path: "/api/admin/plugins/{name}", desc: "Remove an external plugin (superadmin)" }, { method: "POST", path: "/api/admin/plugins/{name}/health", desc: "Run a plugin health check (superadmin)" }, ]; -// Device API — used by the Fly App running on the drone/controller. +// Device API — used by the Fly App running on the drone/controller — plus the +// health/status routes, which are public and belong to no audience in particular. const deviceApi = [ { method: "GET", path: "/ws/device?id={id}", desc: "Device telemetry uplink (WebSocket)" }, { method: "POST", path: "/api/telemetry?id={id}", desc: "Push a single telemetry event over HTTP" }, - { method: "GET", path: "/healthz", desc: "Readiness probe" }, + { method: "GET", path: "/healthz", desc: "Readiness probe (public)" }, + { method: "GET", path: "/api/health", desc: "Readiness probe, same answer under the /api prefix (public)" }, + { method: "GET", path: "/api/status", desc: "Server status + PocketBase reachability (public)" }, ]; @@ -1013,8 +1054,11 @@ const deviceApi = [ + + + - +