pac-proxy-cli 1.1.4 → 1.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
(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 r of o)if(r.type==="childList")for(const l of r.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&s(l)}).observe(document,{childList:!0,subtree:!0});function n(o){const r={};return o.integrity&&(r.integrity=o.integrity),o.referrerPolicy&&(r.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?r.credentials="include":o.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function s(o){if(o.ep)return;o.ep=!0;const r=n(o);fetch(o.href,r)}})();/**
|
|
2
|
+
* @vue/shared v3.5.29
|
|
3
|
+
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
4
|
+
* @license MIT
|
|
5
|
+
**/function io(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const pe={},nn=[],ut=()=>{},Br=()=>!1,fs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ao=e=>e.startsWith("onUpdate:"),Te=Object.assign,co=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ti=Object.prototype.hasOwnProperty,ce=(e,t)=>Ti.call(e,t),q=Array.isArray,sn=e=>Bn(e)==="[object Map]",pn=e=>Bn(e)==="[object Set]",Io=e=>Bn(e)==="[object Date]",Z=e=>typeof e=="function",xe=e=>typeof e=="string",dt=e=>typeof e=="symbol",ue=e=>e!==null&&typeof e=="object",Hr=e=>(ue(e)||Z(e))&&Z(e.then)&&Z(e.catch),Fr=Object.prototype.toString,Bn=e=>Fr.call(e),Ri=e=>Bn(e).slice(8,-1),jr=e=>Bn(e)==="[object Object]",uo=e=>xe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,wn=io(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),ds=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Pi=/-\w/g,Qe=ds(e=>e.replace(Pi,t=>t.slice(1).toUpperCase())),Oi=/\B([A-Z])/g,Jt=ds(e=>e.replace(Oi,"-$1").toLowerCase()),ps=ds(e=>e.charAt(0).toUpperCase()+e.slice(1)),Ts=ds(e=>e?`on${ps(e)}`:""),$t=(e,t)=>!Object.is(e,t),Jn=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},Gr=(e,t,n,s=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},hs=e=>{const t=parseFloat(e);return isNaN(t)?e:t},ki=e=>{const t=xe(e)?Number(e):NaN;return isNaN(t)?e:t};let Mo;const gs=()=>Mo||(Mo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ms(e){if(q(e)){const t={};for(let n=0;n<e.length;n++){const s=e[n],o=xe(s)?$i(s):ms(s);if(o)for(const r in o)t[r]=o[r]}return t}else if(xe(e)||ue(e))return e}const Ni=/;(?![^(]*\))/g,Ii=/:([^]+)/,Mi=/\/\*[^]*?\*\//g;function $i(e){const t={};return e.replace(Mi,"").split(Ni).forEach(n=>{if(n){const s=n.split(Ii);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function be(e){let t="";if(xe(e))t=e;else if(q(e))for(let n=0;n<e.length;n++){const s=be(e[n]);s&&(t+=s+" ")}else if(ue(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const Li="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Di=io(Li);function Kr(e){return!!e||e===""}function Vi(e,t){if(e.length!==t.length)return!1;let n=!0;for(let s=0;n&&s<e.length;s++)n=Dt(e[s],t[s]);return n}function Dt(e,t){if(e===t)return!0;let n=Io(e),s=Io(t);if(n||s)return n&&s?e.getTime()===t.getTime():!1;if(n=dt(e),s=dt(t),n||s)return e===t;if(n=q(e),s=q(t),n||s)return n&&s?Vi(e,t):!1;if(n=ue(e),s=ue(t),n||s){if(!n||!s)return!1;const o=Object.keys(e).length,r=Object.keys(t).length;if(o!==r)return!1;for(const l in e){const i=e.hasOwnProperty(l),a=t.hasOwnProperty(l);if(i&&!a||!i&&a||!Dt(e[l],t[l]))return!1}}return String(e)===String(t)}function fo(e,t){return e.findIndex(n=>Dt(n,t))}const Wr=e=>!!(e&&e.__v_isRef===!0),z=e=>xe(e)?e:e==null?"":q(e)||ue(e)&&(e.toString===Fr||!Z(e.toString))?Wr(e)?z(e.value):JSON.stringify(e,zr,2):String(e),zr=(e,t)=>Wr(t)?zr(e,t.value):sn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,o],r)=>(n[Rs(s,r)+" =>"]=o,n),{})}:pn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Rs(n))}:dt(t)?Rs(t):ue(t)&&!q(t)&&!jr(t)?String(t):t,Rs=(e,t="")=>{var n;return dt(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/**
|
|
6
|
+
* @vue/reactivity v3.5.29
|
|
7
|
+
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
8
|
+
* @license MIT
|
|
9
|
+
**/let He;class Ui{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.__v_skip=!0,this.parent=He,!t&&He&&(this.index=(He.scopes||(He.scopes=[])).push(this)-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;t<n;t++)this.scopes[t].pause();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].resume();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].resume()}}run(t){if(this._active){const n=He;try{return He=this,t()}finally{He=n}}}on(){++this._on===1&&(this.prevScope=He,He=this)}off(){this._on>0&&--this._on===0&&(He=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n<s;n++)this.effects[n].stop();for(this.effects.length=0,n=0,s=this.cleanups.length;n<s;n++)this.cleanups[n]();if(this.cleanups.length=0,this.scopes){for(n=0,s=this.scopes.length;n<s;n++)this.scopes[n].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const o=this.parent.scopes.pop();o&&o!==this&&(this.parent.scopes[this.index]=o,o.index=this.index)}this.parent=void 0}}}function Bi(){return He}let me;const Ps=new WeakSet;class qr{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,He&&He.active&&He.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Ps.has(this)&&(Ps.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Qr(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,$o(this),Yr(this);const t=me,n=Ye;me=this,Ye=!0;try{return this.fn()}finally{Xr(this),me=t,Ye=n,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)go(t);this.deps=this.depsTail=void 0,$o(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Ps.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){js(this)&&this.run()}get dirty(){return js(this)}}let Jr=0,xn,Cn;function Qr(e,t=!1){if(e.flags|=8,t){e.next=Cn,Cn=e;return}e.next=xn,xn=e}function po(){Jr++}function ho(){if(--Jr>0)return;if(Cn){let t=Cn;for(Cn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;xn;){let t=xn;for(xn=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 Yr(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Xr(e){let t,n=e.depsTail,s=n;for(;s;){const o=s.prevDep;s.version===-1?(s===n&&(n=o),go(s),Hi(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=o}e.deps=t,e.depsTail=n}function js(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Zr(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Zr(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===kn)||(e.globalVersion=kn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!js(e))))return;e.flags|=2;const t=e.dep,n=me,s=Ye;me=e,Ye=!0;try{Yr(e);const o=e.fn(e._value);(t.version===0||$t(o,e._value))&&(e.flags|=128,e._value=o,t.version++)}catch(o){throw t.version++,o}finally{me=n,Ye=s,Xr(e),e.flags&=-3}}function go(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 r=n.computed.deps;r;r=r.nextDep)go(r,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Hi(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ye=!0;const el=[];function wt(){el.push(Ye),Ye=!1}function xt(){const e=el.pop();Ye=e===void 0?!0:e}function $o(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=me;me=void 0;try{t()}finally{me=n}}}let kn=0;class Fi{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 mo{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(!me||!Ye||me===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==me)n=this.activeLink=new Fi(me,this),me.deps?(n.prevDep=me.depsTail,me.depsTail.nextDep=n,me.depsTail=n):me.deps=me.depsTail=n,tl(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=me.depsTail,n.nextDep=void 0,me.depsTail.nextDep=n,me.depsTail=n,me.deps===n&&(me.deps=s)}return n}trigger(t){this.version++,kn++,this.notify(t)}notify(t){po();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{ho()}}}function tl(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)tl(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Gs=new WeakMap,Wt=Symbol(""),Ks=Symbol(""),Nn=Symbol("");function Ne(e,t,n){if(Ye&&me){let s=Gs.get(e);s||Gs.set(e,s=new Map);let o=s.get(n);o||(s.set(n,o=new mo),o.map=s,o.key=n),o.track()}}function yt(e,t,n,s,o,r){const l=Gs.get(e);if(!l){kn++;return}const i=a=>{a&&a.trigger()};if(po(),t==="clear")l.forEach(i);else{const a=q(e),u=a&&uo(n);if(a&&n==="length"){const f=Number(s);l.forEach((d,g)=>{(g==="length"||g===Nn||!dt(g)&&g>=f)&&i(d)})}else switch((n!==void 0||l.has(void 0))&&i(l.get(n)),u&&i(l.get(Nn)),t){case"add":a?u&&i(l.get("length")):(i(l.get(Wt)),sn(e)&&i(l.get(Ks)));break;case"delete":a||(i(l.get(Wt)),sn(e)&&i(l.get(Ks)));break;case"set":sn(e)&&i(l.get(Wt));break}}ho()}function Xt(e){const t=ie(e);return t===e?t:(Ne(t,"iterate",Nn),ze(e)?t:t.map(Xe))}function vs(e){return Ne(e=ie(e),"iterate",Nn),e}function Nt(e,t){return Ct(e)?an(zt(e)?Xe(t):t):Xe(t)}const ji={__proto__:null,[Symbol.iterator](){return Os(this,Symbol.iterator,e=>Nt(this,e))},concat(...e){return Xt(this).concat(...e.map(t=>q(t)?Xt(t):t))},entries(){return Os(this,"entries",e=>(e[1]=Nt(this,e[1]),e))},every(e,t){return ht(this,"every",e,t,void 0,arguments)},filter(e,t){return ht(this,"filter",e,t,n=>n.map(s=>Nt(this,s)),arguments)},find(e,t){return ht(this,"find",e,t,n=>Nt(this,n),arguments)},findIndex(e,t){return ht(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return ht(this,"findLast",e,t,n=>Nt(this,n),arguments)},findLastIndex(e,t){return ht(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return ht(this,"forEach",e,t,void 0,arguments)},includes(...e){return ks(this,"includes",e)},indexOf(...e){return ks(this,"indexOf",e)},join(e){return Xt(this).join(e)},lastIndexOf(...e){return ks(this,"lastIndexOf",e)},map(e,t){return ht(this,"map",e,t,void 0,arguments)},pop(){return mn(this,"pop")},push(...e){return mn(this,"push",e)},reduce(e,...t){return Lo(this,"reduce",e,t)},reduceRight(e,...t){return Lo(this,"reduceRight",e,t)},shift(){return mn(this,"shift")},some(e,t){return ht(this,"some",e,t,void 0,arguments)},splice(...e){return mn(this,"splice",e)},toReversed(){return Xt(this).toReversed()},toSorted(e){return Xt(this).toSorted(e)},toSpliced(...e){return Xt(this).toSpliced(...e)},unshift(...e){return mn(this,"unshift",e)},values(){return Os(this,"values",e=>Nt(this,e))}};function Os(e,t,n){const s=vs(e),o=s[t]();return s!==e&&!ze(e)&&(o._next=o.next,o.next=()=>{const r=o._next();return r.done||(r.value=n(r.value)),r}),o}const Gi=Array.prototype;function ht(e,t,n,s,o,r){const l=vs(e),i=l!==e&&!ze(e),a=l[t];if(a!==Gi[t]){const d=a.apply(e,r);return i?Xe(d):d}let u=n;l!==e&&(i?u=function(d,g){return n.call(this,Nt(e,d),g,e)}:n.length>2&&(u=function(d,g){return n.call(this,d,g,e)}));const f=a.call(l,u,s);return i&&o?o(f):f}function Lo(e,t,n,s){const o=vs(e);let r=n;return o!==e&&(ze(e)?n.length>3&&(r=function(l,i,a){return n.call(this,l,i,a,e)}):r=function(l,i,a){return n.call(this,l,Nt(e,i),a,e)}),o[t](r,...s)}function ks(e,t,n){const s=ie(e);Ne(s,"iterate",Nn);const o=s[t](...n);return(o===-1||o===!1)&&_o(n[0])?(n[0]=ie(n[0]),s[t](...n)):o}function mn(e,t,n=[]){wt(),po();const s=ie(e)[t].apply(e,n);return ho(),xt(),s}const Ki=io("__proto__,__v_isRef,__isVue"),nl=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(dt));function Wi(e){dt(e)||(e=String(e));const t=ie(this);return Ne(t,"has",e),t.hasOwnProperty(e)}class sl{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,r=this._isShallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return r;if(n==="__v_raw")return s===(o?r?na:il:r?ll:rl).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const l=q(t);if(!o){let a;if(l&&(a=ji[n]))return a;if(n==="hasOwnProperty")return Wi}const i=Reflect.get(t,n,Me(t)?t:s);if((dt(n)?nl.has(n):Ki(n))||(o||Ne(t,"get",n),r))return i;if(Me(i)){const a=l&&uo(n)?i:i.value;return o&&ue(a)?ts(a):a}return ue(i)?o?ts(i):hn(i):i}}class ol extends sl{constructor(t=!1){super(!1,t)}set(t,n,s,o){let r=t[n];const l=q(t)&&uo(n);if(!this._isShallow){const u=Ct(r);if(!ze(s)&&!Ct(s)&&(r=ie(r),s=ie(s)),!l&&Me(r)&&!Me(s))return u||(r.value=s),!0}const i=l?Number(n)<t.length:ce(t,n),a=Reflect.set(t,n,s,Me(t)?t:o);return t===ie(o)&&(i?$t(s,r)&&yt(t,"set",n,s):yt(t,"add",n,s)),a}deleteProperty(t,n){const s=ce(t,n);t[n];const o=Reflect.deleteProperty(t,n);return o&&s&&yt(t,"delete",n,void 0),o}has(t,n){const s=Reflect.has(t,n);return(!dt(n)||!nl.has(n))&&Ne(t,"has",n),s}ownKeys(t){return Ne(t,"iterate",q(t)?"length":Wt),Reflect.ownKeys(t)}}class zi extends sl{constructor(t=!1){super(!0,t)}set(t,n){return!0}deleteProperty(t,n){return!0}}const qi=new ol,Ji=new zi,Qi=new ol(!0);const Ws=e=>e,Gn=e=>Reflect.getPrototypeOf(e);function Yi(e,t,n){return function(...s){const o=this.__v_raw,r=ie(o),l=sn(r),i=e==="entries"||e===Symbol.iterator&&l,a=e==="keys"&&l,u=o[e](...s),f=n?Ws:t?an:Xe;return!t&&Ne(r,"iterate",a?Ks:Wt),Te(Object.create(u),{next(){const{value:d,done:g}=u.next();return g?{value:d,done:g}:{value:i?[f(d[0]),f(d[1])]:f(d),done:g}}})}}function Kn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Xi(e,t){const n={get(o){const r=this.__v_raw,l=ie(r),i=ie(o);e||($t(o,i)&&Ne(l,"get",o),Ne(l,"get",i));const{has:a}=Gn(l),u=t?Ws:e?an:Xe;if(a.call(l,o))return u(r.get(o));if(a.call(l,i))return u(r.get(i));r!==l&&r.get(o)},get size(){const o=this.__v_raw;return!e&&Ne(ie(o),"iterate",Wt),o.size},has(o){const r=this.__v_raw,l=ie(r),i=ie(o);return e||($t(o,i)&&Ne(l,"has",o),Ne(l,"has",i)),o===i?r.has(o):r.has(o)||r.has(i)},forEach(o,r){const l=this,i=l.__v_raw,a=ie(i),u=t?Ws:e?an:Xe;return!e&&Ne(a,"iterate",Wt),i.forEach((f,d)=>o.call(r,u(f),u(d),l))}};return Te(n,e?{add:Kn("add"),set:Kn("set"),delete:Kn("delete"),clear:Kn("clear")}:{add(o){!t&&!ze(o)&&!Ct(o)&&(o=ie(o));const r=ie(this);return Gn(r).has.call(r,o)||(r.add(o),yt(r,"add",o,o)),this},set(o,r){!t&&!ze(r)&&!Ct(r)&&(r=ie(r));const l=ie(this),{has:i,get:a}=Gn(l);let u=i.call(l,o);u||(o=ie(o),u=i.call(l,o));const f=a.call(l,o);return l.set(o,r),u?$t(r,f)&&yt(l,"set",o,r):yt(l,"add",o,r),this},delete(o){const r=ie(this),{has:l,get:i}=Gn(r);let a=l.call(r,o);a||(o=ie(o),a=l.call(r,o)),i&&i.call(r,o);const u=r.delete(o);return a&&yt(r,"delete",o,void 0),u},clear(){const o=ie(this),r=o.size!==0,l=o.clear();return r&&yt(o,"clear",void 0,void 0),l}}),["keys","values","entries",Symbol.iterator].forEach(o=>{n[o]=Yi(o,e,t)}),n}function vo(e,t){const n=Xi(e,t);return(s,o,r)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?s:Reflect.get(ce(n,o)&&o in s?n:s,o,r)}const Zi={get:vo(!1,!1)},ea={get:vo(!1,!0)},ta={get:vo(!0,!1)};const rl=new WeakMap,ll=new WeakMap,il=new WeakMap,na=new WeakMap;function sa(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function oa(e){return e.__v_skip||!Object.isExtensible(e)?0:sa(Ri(e))}function hn(e){return Ct(e)?e:yo(e,!1,qi,Zi,rl)}function al(e){return yo(e,!1,Qi,ea,ll)}function ts(e){return yo(e,!0,Ji,ta,il)}function yo(e,t,n,s,o){if(!ue(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const r=oa(e);if(r===0)return e;const l=o.get(e);if(l)return l;const i=new Proxy(e,r===2?s:n);return o.set(e,i),i}function zt(e){return Ct(e)?zt(e.__v_raw):!!(e&&e.__v_isReactive)}function Ct(e){return!!(e&&e.__v_isReadonly)}function ze(e){return!!(e&&e.__v_isShallow)}function _o(e){return e?!!e.__v_raw:!1}function ie(e){const t=e&&e.__v_raw;return t?ie(t):e}function ra(e){return!ce(e,"__v_skip")&&Object.isExtensible(e)&&Gr(e,"__v_skip",!0),e}const Xe=e=>ue(e)?hn(e):e,an=e=>ue(e)?ts(e):e;function Me(e){return e?e.__v_isRef===!0:!1}function ee(e){return cl(e,!1)}function la(e){return cl(e,!0)}function cl(e,t){return Me(e)?e:new ia(e,t)}class ia{constructor(t,n){this.dep=new mo,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:ie(t),this._value=n?t:Xe(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)||Ct(t);t=s?t:ie(t),$t(t,n)&&(this._rawValue=t,this._value=s?t:Xe(t),this.dep.trigger())}}function ft(e){return Me(e)?e.value:e}const aa={get:(e,t,n)=>t==="__v_raw"?e:ft(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const o=e[t];return Me(o)&&!Me(n)?(o.value=n,!0):Reflect.set(e,t,n,s)}};function ul(e){return zt(e)?e:new Proxy(e,aa)}class ca{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new mo(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=kn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&me!==this)return Qr(this,!0),!0}get value(){const t=this.dep.track();return Zr(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function ua(e,t,n=!1){let s,o;return Z(e)?s=e:(s=e.get,o=e.set),new ca(s,o,n)}const Wn={},ns=new WeakMap;let Gt;function fa(e,t=!1,n=Gt){if(n){let s=ns.get(n);s||ns.set(n,s=[]),s.push(e)}}function da(e,t,n=pe){const{immediate:s,deep:o,once:r,scheduler:l,augmentJob:i,call:a}=n,u=b=>o?b:ze(b)||o===!1||o===0?_t(b,1):_t(b);let f,d,g,m,_=!1,y=!1;if(Me(e)?(d=()=>e.value,_=ze(e)):zt(e)?(d=()=>u(e),_=!0):q(e)?(y=!0,_=e.some(b=>zt(b)||ze(b)),d=()=>e.map(b=>{if(Me(b))return b.value;if(zt(b))return u(b);if(Z(b))return a?a(b,2):b()})):Z(e)?t?d=a?()=>a(e,2):e:d=()=>{if(g){wt();try{g()}finally{xt()}}const b=Gt;Gt=f;try{return a?a(e,3,[m]):e(m)}finally{Gt=b}}:d=ut,t&&o){const b=d,I=o===!0?1/0:o;d=()=>_t(b(),I)}const T=Bi(),P=()=>{f.stop(),T&&T.active&&co(T.effects,f)};if(r&&t){const b=t;t=(...I)=>{b(...I),P()}}let R=y?new Array(e.length).fill(Wn):Wn;const A=b=>{if(!(!(f.flags&1)||!f.dirty&&!b))if(t){const I=f.run();if(o||_||(y?I.some((J,j)=>$t(J,R[j])):$t(I,R))){g&&g();const J=Gt;Gt=f;try{const j=[I,R===Wn?void 0:y&&R[0]===Wn?[]:R,m];R=I,a?a(t,3,j):t(...j)}finally{Gt=J}}}else f.run()};return i&&i(A),f=new qr(d),f.scheduler=l?()=>l(A,!1):A,m=b=>fa(b,!1,f),g=f.onStop=()=>{const b=ns.get(f);if(b){if(a)a(b,4);else for(const I of b)I();ns.delete(f)}},t?s?A(!0):R=f.run():l?l(A.bind(null,!0),!0):f.run(),P.pause=f.pause.bind(f),P.resume=f.resume.bind(f),P.stop=P,P}function _t(e,t=1/0,n){if(t<=0||!ue(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,Me(e))_t(e.value,t,n);else if(q(e))for(let s=0;s<e.length;s++)_t(e[s],t,n);else if(pn(e)||sn(e))e.forEach(s=>{_t(s,t,n)});else if(jr(e)){for(const s in e)_t(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&_t(e[s],t,n)}return e}/**
|
|
10
|
+
* @vue/runtime-core v3.5.29
|
|
11
|
+
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
12
|
+
* @license MIT
|
|
13
|
+
**/function Hn(e,t,n,s){try{return s?e(...s):e()}catch(o){ys(o,t,n)}}function Ze(e,t,n,s){if(Z(e)){const o=Hn(e,t,n,s);return o&&Hr(o)&&o.catch(r=>{ys(r,t,n)}),o}if(q(e)){const o=[];for(let r=0;r<e.length;r++)o.push(Ze(e[r],t,n,s));return o}}function ys(e,t,n,s=!0){const o=t?t.vnode:null,{errorHandler:r,throwUnhandledErrorInProduction:l}=t&&t.appContext.config||pe;if(t){let i=t.parent;const a=t.proxy,u=`https://vuejs.org/error-reference/#runtime-${n}`;for(;i;){const f=i.ec;if(f){for(let d=0;d<f.length;d++)if(f[d](e,a,u)===!1)return}i=i.parent}if(r){wt(),Hn(r,null,10,[e,a,u]),xt();return}}pa(e,n,o,s,l)}function pa(e,t,n,s=!0,o=!1){if(o)throw e;console.error(e)}const De=[];let it=-1;const on=[];let It=null,Zt=0;const fl=Promise.resolve();let ss=null;function bo(e){const t=ss||fl;return e?t.then(this?e.bind(this):e):t}function ha(e){let t=it+1,n=De.length;for(;t<n;){const s=t+n>>>1,o=De[s],r=In(o);r<e||r===e&&o.flags&2?t=s+1:n=s}return t}function wo(e){if(!(e.flags&1)){const t=In(e),n=De[De.length-1];!n||!(e.flags&2)&&t>=In(n)?De.push(e):De.splice(ha(t),0,e),e.flags|=1,dl()}}function dl(){ss||(ss=fl.then(hl))}function ga(e){q(e)?on.push(...e):It&&e.id===-1?It.splice(Zt+1,0,e):e.flags&1||(on.push(e),e.flags|=1),dl()}function Do(e,t,n=it+1){for(;n<De.length;n++){const s=De[n];if(s&&s.flags&2){if(e&&s.id!==e.uid)continue;De.splice(n,1),n--,s.flags&4&&(s.flags&=-2),s(),s.flags&4||(s.flags&=-2)}}}function pl(e){if(on.length){const t=[...new Set(on)].sort((n,s)=>In(n)-In(s));if(on.length=0,It){It.push(...t);return}for(It=t,Zt=0;Zt<It.length;Zt++){const n=It[Zt];n.flags&4&&(n.flags&=-2),n.flags&8||n(),n.flags&=-2}It=null,Zt=0}}const In=e=>e.id==null?e.flags&2?-1:1/0:e.id;function hl(e){try{for(it=0;it<De.length;it++){const t=De[it];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Hn(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;it<De.length;it++){const t=De[it];t&&(t.flags&=-2)}it=-1,De.length=0,pl(),ss=null,(De.length||on.length)&&hl()}}let je=null,gl=null;function os(e){const t=je;return je=e,gl=e&&e.type.__scopeId||null,t}function ct(e,t=je,n){if(!t||e._n)return e;const s=(...o)=>{s._d&&is(-1);const r=os(t);let l;try{l=e(...o)}finally{os(r),s._d&&is(1)}return l};return s._n=!0,s._c=!0,s._d=!0,s}function Ae(e,t){if(je===null)return e;const n=Cs(je),s=e.dirs||(e.dirs=[]);for(let o=0;o<t.length;o++){let[r,l,i,a=pe]=t[o];r&&(Z(r)&&(r={mounted:r,updated:r}),r.deep&&_t(l),s.push({dir:r,instance:n,value:l,oldValue:void 0,arg:i,modifiers:a}))}return e}function Ht(e,t,n,s){const o=e.dirs,r=t&&t.dirs;for(let l=0;l<o.length;l++){const i=o[l];r&&(i.oldValue=r[l].value);let a=i.dir[s];a&&(wt(),Ze(a,n,8,[e.el,i,e,t]),xt())}}function Qn(e,t){if(Ie){let n=Ie.provides;const s=Ie.parent&&Ie.parent.provides;s===n&&(n=Ie.provides=Object.create(s)),n[e]=t}}function qe(e,t,n=!1){const s=ql();if(s||ln){let o=ln?ln._context.provides:s?s.parent==null||s.ce?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides:void 0;if(o&&e in o)return o[e];if(arguments.length>1)return n&&Z(t)?t.call(s&&s.proxy):t}}const ma=Symbol.for("v-scx"),va=()=>qe(ma);function rn(e,t,n){return ml(e,t,n)}function ml(e,t,n=pe){const{immediate:s,deep:o,flush:r,once:l}=n,i=Te({},n),a=t&&s||!t&&r!=="post";let u;if(Vn){if(r==="sync"){const m=va();u=m.__watcherHandles||(m.__watcherHandles=[])}else if(!a){const m=()=>{};return m.stop=ut,m.resume=ut,m.pause=ut,m}}const f=Ie;i.call=(m,_,y)=>Ze(m,f,_,y);let d=!1;r==="post"?i.scheduler=m=>{ke(m,f&&f.suspense)}:r!=="sync"&&(d=!0,i.scheduler=(m,_)=>{_?m():wo(m)}),i.augmentJob=m=>{t&&(m.flags|=4),d&&(m.flags|=2,f&&(m.id=f.uid,m.i=f))};const g=da(e,t,i);return Vn&&(u?u.push(g):a&&g()),g}function ya(e,t,n){const s=this.proxy,o=xe(e)?e.includes(".")?vl(s,e):()=>s[e]:e.bind(s,s);let r;Z(t)?r=t:(r=t.handler,n=t);const l=Fn(this),i=ml(o,r.bind(s),n);return l(),i}function vl(e,t){const n=t.split(".");return()=>{let s=e;for(let o=0;o<n.length&&s;o++)s=s[n[o]];return s}}const yl=Symbol("_vte"),_a=e=>e.__isTeleport,Sn=e=>e&&(e.disabled||e.disabled===""),Vo=e=>e&&(e.defer||e.defer===""),Uo=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Bo=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,zs=(e,t)=>{const n=e&&e.to;return xe(n)?t?t(n):null:n},_l={name:"Teleport",__isTeleport:!0,process(e,t,n,s,o,r,l,i,a,u){const{mc:f,pc:d,pbc:g,o:{insert:m,querySelector:_,createText:y,createComment:T}}=u,P=Sn(t.props);let{shapeFlag:R,children:A,dynamicChildren:b}=t;if(e==null){const I=t.el=y(""),J=t.anchor=y("");m(I,n,s),m(J,n,s);const j=(V,X)=>{R&16&&f(A,V,X,o,r,l,i,a)},le=()=>{const V=t.target=zs(t.props,_),X=qs(V,t,y,m);V&&(l!=="svg"&&Uo(V)?l="svg":l!=="mathml"&&Bo(V)&&(l="mathml"),o&&o.isCE&&(o.ce._teleportTargets||(o.ce._teleportTargets=new Set)).add(V),P||(j(V,X),Yn(t,!1)))};P&&(j(n,J),Yn(t,!0)),Vo(t.props)?(t.el.__isMounted=!1,ke(()=>{le(),delete t.el.__isMounted},r)):le()}else{if(Vo(t.props)&&e.el.__isMounted===!1){ke(()=>{_l.process(e,t,n,s,o,r,l,i,a,u)},r);return}t.el=e.el,t.targetStart=e.targetStart;const I=t.anchor=e.anchor,J=t.target=e.target,j=t.targetAnchor=e.targetAnchor,le=Sn(e.props),V=le?n:J,X=le?I:j;if(l==="svg"||Uo(J)?l="svg":(l==="mathml"||Bo(J))&&(l="mathml"),b?(g(e.dynamicChildren,b,V,o,r,l,i),So(e,t,!0)):a||d(e,t,V,X,o,r,l,i,!1),P)le?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):zn(t,n,I,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const te=t.target=zs(t.props,_);te&&zn(t,te,null,u,0)}else le&&zn(t,J,j,u,1);Yn(t,P)}},remove(e,t,n,{um:s,o:{remove:o}},r){const{shapeFlag:l,children:i,anchor:a,targetStart:u,targetAnchor:f,target:d,props:g}=e;if(d&&(o(u),o(f)),r&&o(a),l&16){const m=r||!Sn(g);for(let _=0;_<i.length;_++){const y=i[_];s(y,t,n,m,!!y.dynamicChildren)}}},move:zn,hydrate:ba};function zn(e,t,n,{o:{insert:s},m:o},r=2){r===0&&s(e.targetAnchor,t,n);const{el:l,anchor:i,shapeFlag:a,children:u,props:f}=e,d=r===2;if(d&&s(l,t,n),(!d||Sn(f))&&a&16)for(let g=0;g<u.length;g++)o(u[g],t,n,2);d&&s(i,t,n)}function ba(e,t,n,s,o,r,{o:{nextSibling:l,parentNode:i,querySelector:a,insert:u,createText:f}},d){function g(T,P){let R=P;for(;R;){if(R&&R.nodeType===8){if(R.data==="teleport start anchor")t.targetStart=R;else if(R.data==="teleport anchor"){t.targetAnchor=R,T._lpa=t.targetAnchor&&l(t.targetAnchor);break}}R=l(R)}}function m(T,P){P.anchor=d(l(T),P,i(T),n,s,o,r)}const _=t.target=zs(t.props,a),y=Sn(t.props);if(_){const T=_._lpa||_.firstChild;t.shapeFlag&16&&(y?(m(e,t),g(_,T),t.targetAnchor||qs(_,t,f,u,i(e)===_?e:null)):(t.anchor=l(e),g(_,T),t.targetAnchor||qs(_,t,f,u),d(T&&l(T),t,_,n,s,o,r))),Yn(t,y)}else y&&t.shapeFlag&16&&(m(e,t),t.targetStart=e,t.targetAnchor=l(e));return t.anchor&&l(t.anchor)}const wa=_l;function Yn(e,t){const n=e.ctx;if(n&&n.ut){let s,o;for(t?(s=e.el,o=e.anchor):(s=e.targetStart,o=e.targetAnchor);s&&s!==o;)s.nodeType===1&&s.setAttribute("data-v-owner",n.uid),s=s.nextSibling;n.ut()}}function qs(e,t,n,s,o=null){const r=t.targetStart=n(""),l=t.targetAnchor=n("");return r[yl]=l,e&&(s(r,e,o),s(l,e,o)),l}const Ot=Symbol("_leaveCb"),vn=Symbol("_enterCb");function xa(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Ut(()=>{e.isMounted=!0}),Rl(()=>{e.isUnmounting=!0}),e}const We=[Function,Array],Ca={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:We,onEnter:We,onAfterEnter:We,onEnterCancelled:We,onBeforeLeave:We,onLeave:We,onAfterLeave:We,onLeaveCancelled:We,onBeforeAppear:We,onAppear:We,onAfterAppear:We,onAppearCancelled:We};function Sa(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Js(e,t,n,s,o){const{appear:r,mode:l,persisted:i=!1,onBeforeEnter:a,onEnter:u,onAfterEnter:f,onEnterCancelled:d,onBeforeLeave:g,onLeave:m,onAfterLeave:_,onLeaveCancelled:y,onBeforeAppear:T,onAppear:P,onAfterAppear:R,onAppearCancelled:A}=t,b=String(e.key),I=Sa(n,e),J=(V,X)=>{V&&Ze(V,s,9,X)},j=(V,X)=>{const te=X[1];J(V,X),q(V)?V.every(L=>L.length<=1)&&te():V.length<=1&&te()},le={mode:l,persisted:i,beforeEnter(V){let X=a;if(!n.isMounted)if(r)X=T||a;else return;V[Ot]&&V[Ot](!0);const te=I[b];te&&en(e,te)&&te.el[Ot]&&te.el[Ot](),J(X,[V])},enter(V){if(I[b]===e)return;let X=u,te=f,L=d;if(!n.isMounted)if(r)X=P||u,te=R||f,L=A||d;else return;let se=!1;V[vn]=G=>{se||(se=!0,G?J(L,[V]):J(te,[V]),le.delayedLeave&&le.delayedLeave(),V[vn]=void 0)};const Ce=V[vn].bind(null,!1);X?j(X,[V,Ce]):Ce()},leave(V,X){const te=String(e.key);if(V[vn]&&V[vn](!0),n.isUnmounting)return X();J(g,[V]);let L=!1;V[Ot]=Ce=>{L||(L=!0,X(),Ce?J(y,[V]):J(_,[V]),V[Ot]=void 0,I[te]===e&&delete I[te])};const se=V[Ot].bind(null,!1);I[te]=e,m?j(m,[V,se]):se()},clone(V){return Js(V,t,n,s)}};return le}function Mn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Mn(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 bl(e,t=!1,n){let s=[],o=0;for(let r=0;r<e.length;r++){let l=e[r];const i=n==null?l.key:String(n)+String(l.key!=null?l.key:r);l.type===Ee?(l.patchFlag&128&&o++,s=s.concat(bl(l.children,t,i))):(t||l.type!==St)&&s.push(i!=null?qt(l,{key:i}):l)}if(o>1)for(let r=0;r<s.length;r++)s[r].patchFlag=-2;return s}function wl(e,t){return Z(e)?Te({name:e.name},t,{setup:e}):e}function xl(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Ho(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const rs=new WeakMap;function En(e,t,n,s,o=!1){if(q(e)){e.forEach((y,T)=>En(y,t&&(q(t)?t[T]:t),n,s,o));return}if(An(s)&&!o){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&En(e,t,n,s.component.subTree);return}const r=s.shapeFlag&4?Cs(s.component):s.el,l=o?null:r,{i,r:a}=e,u=t&&t.r,f=i.refs===pe?i.refs={}:i.refs,d=i.setupState,g=ie(d),m=d===pe?Br:y=>Ho(f,y)?!1:ce(g,y),_=(y,T)=>!(T&&Ho(f,T));if(u!=null&&u!==a){if(Fo(t),xe(u))f[u]=null,m(u)&&(d[u]=null);else if(Me(u)){const y=t;_(u,y.k)&&(u.value=null),y.k&&(f[y.k]=null)}}if(Z(a))Hn(a,i,12,[l,f]);else{const y=xe(a),T=Me(a);if(y||T){const P=()=>{if(e.f){const R=y?m(a)?d[a]:f[a]:_()||!e.k?a.value:f[e.k];if(o)q(R)&&co(R,r);else if(q(R))R.includes(r)||R.push(r);else if(y)f[a]=[r],m(a)&&(d[a]=f[a]);else{const A=[r];_(a,e.k)&&(a.value=A),e.k&&(f[e.k]=A)}}else y?(f[a]=l,m(a)&&(d[a]=l)):T&&(_(a,e.k)&&(a.value=l),e.k&&(f[e.k]=l))};if(l){const R=()=>{P(),rs.delete(e)};R.id=-1,rs.set(e,R),ke(R,n)}else Fo(e),P()}}}function Fo(e){const t=rs.get(e);t&&(t.flags|=8,rs.delete(e))}gs().requestIdleCallback;gs().cancelIdleCallback;const An=e=>!!e.type.__asyncLoader,Cl=e=>e.type.__isKeepAlive;function Sl(e,t){Al(e,"a",t)}function El(e,t){Al(e,"da",t)}function Al(e,t,n=Ie){const s=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(_s(t,s,n),n){let o=n.parent;for(;o&&o.parent;)Cl(o.parent.vnode)&&Ea(s,t,n,o),o=o.parent}}function Ea(e,t,n,s){const o=_s(t,e,s,!0);bs(()=>{co(s[t],o)},n)}function _s(e,t,n=Ie,s=!1){if(n){const o=n[e]||(n[e]=[]),r=t.__weh||(t.__weh=(...l)=>{wt();const i=Fn(n),a=Ze(t,n,e,l);return i(),xt(),a});return s?o.unshift(r):o.push(r),r}}const Et=e=>(t,n=Ie)=>{(!Vn||e==="sp")&&_s(e,(...s)=>t(...s),n)},Aa=Et("bm"),Ut=Et("m"),Ta=Et("bu"),Tl=Et("u"),Rl=Et("bum"),bs=Et("um"),Ra=Et("sp"),Pa=Et("rtg"),Oa=Et("rtc");function ka(e,t=Ie){_s("ec",e,t)}const Na="components";function $n(e,t){return Ma(Na,e,!0,t)||e}const Ia=Symbol.for("v-ndc");function Ma(e,t,n=!0,s=!1){const o=je||Ie;if(o){const r=o.type;{const i=_c(r,!1);if(i&&(i===t||i===Qe(t)||i===ps(Qe(t))))return r}const l=jo(o[e]||r[e],t)||jo(o.appContext[e],t);return!l&&s?r:l}}function jo(e,t){return e&&(e[t]||e[Qe(t)]||e[ps(Qe(t))])}function Ln(e,t,n,s){let o;const r=n,l=q(e);if(l||xe(e)){const i=l&&zt(e);let a=!1,u=!1;i&&(a=!ze(e),u=Ct(e),e=vs(e)),o=new Array(e.length);for(let f=0,d=e.length;f<d;f++)o[f]=t(a?u?an(Xe(e[f])):Xe(e[f]):e[f],f,void 0,r)}else if(typeof e=="number"){o=new Array(e);for(let i=0;i<e;i++)o[i]=t(i+1,i,void 0,r)}else if(ue(e))if(e[Symbol.iterator])o=Array.from(e,(i,a)=>t(i,a,void 0,r));else{const i=Object.keys(e);o=new Array(i.length);for(let a=0,u=i.length;a<u;a++){const f=i[a];o[a]=t(e[f],f,a,r)}}else o=[];return o}const Qs=e=>e?Jl(e)?Cs(e):Qs(e.parent):null,Tn=Te(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=>Qs(e.parent),$root:e=>Qs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Ol(e),$forceUpdate:e=>e.f||(e.f=()=>{wo(e.update)}),$nextTick:e=>e.n||(e.n=bo.bind(e.proxy)),$watch:e=>ya.bind(e)}),Ns=(e,t)=>e!==pe&&!e.__isScriptSetup&&ce(e,t),$a={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:o,props:r,accessCache:l,type:i,appContext:a}=e;if(t[0]!=="$"){const g=l[t];if(g!==void 0)switch(g){case 1:return s[t];case 2:return o[t];case 4:return n[t];case 3:return r[t]}else{if(Ns(s,t))return l[t]=1,s[t];if(o!==pe&&ce(o,t))return l[t]=2,o[t];if(ce(r,t))return l[t]=3,r[t];if(n!==pe&&ce(n,t))return l[t]=4,n[t];Ys&&(l[t]=0)}}const u=Tn[t];let f,d;if(u)return t==="$attrs"&&Ne(e.attrs,"get",""),u(e);if((f=i.__cssModules)&&(f=f[t]))return f;if(n!==pe&&ce(n,t))return l[t]=4,n[t];if(d=a.config.globalProperties,ce(d,t))return d[t]},set({_:e},t,n){const{data:s,setupState:o,ctx:r}=e;return Ns(o,t)?(o[t]=n,!0):s!==pe&&ce(s,t)?(s[t]=n,!0):ce(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:o,props:r,type:l}},i){let a;return!!(n[i]||e!==pe&&i[0]!=="$"&&ce(e,i)||Ns(t,i)||ce(r,i)||ce(s,i)||ce(Tn,i)||ce(o.config.globalProperties,i)||(a=l.__cssModules)&&a[i])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ce(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Go(e){return q(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Ys=!0;function La(e){const t=Ol(e),n=e.proxy,s=e.ctx;Ys=!1,t.beforeCreate&&Ko(t.beforeCreate,e,"bc");const{data:o,computed:r,methods:l,watch:i,provide:a,inject:u,created:f,beforeMount:d,mounted:g,beforeUpdate:m,updated:_,activated:y,deactivated:T,beforeDestroy:P,beforeUnmount:R,destroyed:A,unmounted:b,render:I,renderTracked:J,renderTriggered:j,errorCaptured:le,serverPrefetch:V,expose:X,inheritAttrs:te,components:L,directives:se,filters:Ce}=t;if(u&&Da(u,s,null),l)for(const U in l){const ne=l[U];Z(ne)&&(s[U]=ne.bind(n))}if(o){const U=o.call(n,n);ue(U)&&(e.data=hn(U))}if(Ys=!0,r)for(const U in r){const ne=r[U],pt=Z(ne)?ne.bind(n,n):Z(ne.get)?ne.get.bind(n,n):ut,Tt=!Z(ne)&&Z(ne.set)?ne.set.bind(n):ut,tt=Se({get:pt,set:Tt});Object.defineProperty(s,U,{enumerable:!0,configurable:!0,get:()=>tt.value,set:Ve=>tt.value=Ve})}if(i)for(const U in i)Pl(i[U],s,n,U);if(a){const U=Z(a)?a.call(n):a;Reflect.ownKeys(U).forEach(ne=>{Qn(ne,U[ne])})}f&&Ko(f,e,"c");function k(U,ne){q(ne)?ne.forEach(pt=>U(pt.bind(n))):ne&&U(ne.bind(n))}if(k(Aa,d),k(Ut,g),k(Ta,m),k(Tl,_),k(Sl,y),k(El,T),k(ka,le),k(Oa,J),k(Pa,j),k(Rl,R),k(bs,b),k(Ra,V),q(X))if(X.length){const U=e.exposed||(e.exposed={});X.forEach(ne=>{Object.defineProperty(U,ne,{get:()=>n[ne],set:pt=>n[ne]=pt,enumerable:!0})})}else e.exposed||(e.exposed={});I&&e.render===ut&&(e.render=I),te!=null&&(e.inheritAttrs=te),L&&(e.components=L),se&&(e.directives=se),V&&xl(e)}function Da(e,t,n=ut){q(e)&&(e=Xs(e));for(const s in e){const o=e[s];let r;ue(o)?"default"in o?r=qe(o.from||s,o.default,!0):r=qe(o.from||s):r=qe(o),Me(r)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>r.value,set:l=>r.value=l}):t[s]=r}}function Ko(e,t,n){Ze(q(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Pl(e,t,n,s){let o=s.includes(".")?vl(n,s):()=>n[s];if(xe(e)){const r=t[e];Z(r)&&rn(o,r)}else if(Z(e))rn(o,e.bind(n));else if(ue(e))if(q(e))e.forEach(r=>Pl(r,t,n,s));else{const r=Z(e.handler)?e.handler.bind(n):t[e.handler];Z(r)&&rn(o,r,e)}}function Ol(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:o,optionsCache:r,config:{optionMergeStrategies:l}}=e.appContext,i=r.get(t);let a;return i?a=i:!o.length&&!n&&!s?a=t:(a={},o.length&&o.forEach(u=>ls(a,u,l,!0)),ls(a,t,l)),ue(t)&&r.set(t,a),a}function ls(e,t,n,s=!1){const{mixins:o,extends:r}=t;r&&ls(e,r,n,!0),o&&o.forEach(l=>ls(e,l,n,!0));for(const l in t)if(!(s&&l==="expose")){const i=Va[l]||n&&n[l];e[l]=i?i(e[l],t[l]):t[l]}return e}const Va={data:Wo,props:zo,emits:zo,methods:bn,computed:bn,beforeCreate:$e,created:$e,beforeMount:$e,mounted:$e,beforeUpdate:$e,updated:$e,beforeDestroy:$e,beforeUnmount:$e,destroyed:$e,unmounted:$e,activated:$e,deactivated:$e,errorCaptured:$e,serverPrefetch:$e,components:bn,directives:bn,watch:Ba,provide:Wo,inject:Ua};function Wo(e,t){return t?e?function(){return Te(Z(e)?e.call(this,this):e,Z(t)?t.call(this,this):t)}:t:e}function Ua(e,t){return bn(Xs(e),Xs(t))}function Xs(e){if(q(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function $e(e,t){return e?[...new Set([].concat(e,t))]:t}function bn(e,t){return e?Te(Object.create(null),e,t):t}function zo(e,t){return e?q(e)&&q(t)?[...new Set([...e,...t])]:Te(Object.create(null),Go(e),Go(t??{})):t}function Ba(e,t){if(!e)return t;if(!t)return e;const n=Te(Object.create(null),e);for(const s in t)n[s]=$e(e[s],t[s]);return n}function kl(){return{app:null,config:{isNativeTag:Br,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Ha=0;function Fa(e,t){return function(s,o=null){Z(s)||(s=Te({},s)),o!=null&&!ue(o)&&(o=null);const r=kl(),l=new WeakSet,i=[];let a=!1;const u=r.app={_uid:Ha++,_component:s,_props:o,_container:null,_context:r,_instance:null,version:wc,get config(){return r.config},set config(f){},use(f,...d){return l.has(f)||(f&&Z(f.install)?(l.add(f),f.install(u,...d)):Z(f)&&(l.add(f),f(u,...d))),u},mixin(f){return r.mixins.includes(f)||r.mixins.push(f),u},component(f,d){return d?(r.components[f]=d,u):r.components[f]},directive(f,d){return d?(r.directives[f]=d,u):r.directives[f]},mount(f,d,g){if(!a){const m=u._ceVNode||ve(s,o);return m.appContext=r,g===!0?g="svg":g===!1&&(g=void 0),e(m,f,g),a=!0,u._container=f,f.__vue_app__=u,Cs(m.component)}},onUnmount(f){i.push(f)},unmount(){a&&(Ze(i,u._instance,16),e(null,u._container),delete u._container.__vue_app__)},provide(f,d){return r.provides[f]=d,u},runWithContext(f){const d=ln;ln=u;try{return f()}finally{ln=d}}};return u}}let ln=null;const ja=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Qe(t)}Modifiers`]||e[`${Jt(t)}Modifiers`];function Ga(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||pe;let o=n;const r=t.startsWith("update:"),l=r&&ja(s,t.slice(7));l&&(l.trim&&(o=n.map(f=>xe(f)?f.trim():f)),l.number&&(o=n.map(hs)));let i,a=s[i=Ts(t)]||s[i=Ts(Qe(t))];!a&&r&&(a=s[i=Ts(Jt(t))]),a&&Ze(a,e,6,o);const u=s[i+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,Ze(u,e,6,o)}}const Ka=new WeakMap;function Nl(e,t,n=!1){const s=n?Ka:t.emitsCache,o=s.get(e);if(o!==void 0)return o;const r=e.emits;let l={},i=!1;if(!Z(e)){const a=u=>{const f=Nl(u,t,!0);f&&(i=!0,Te(l,f))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!r&&!i?(ue(e)&&s.set(e,null),null):(q(r)?r.forEach(a=>l[a]=null):Te(l,r),ue(e)&&s.set(e,l),l)}function ws(e,t){return!e||!fs(t)?!1:(t=t.slice(2).replace(/Once$/,""),ce(e,t[0].toLowerCase()+t.slice(1))||ce(e,Jt(t))||ce(e,t))}function qo(e){const{type:t,vnode:n,proxy:s,withProxy:o,propsOptions:[r],slots:l,attrs:i,emit:a,render:u,renderCache:f,props:d,data:g,setupState:m,ctx:_,inheritAttrs:y}=e,T=os(e);let P,R;try{if(n.shapeFlag&4){const b=o||s,I=b;P=at(u.call(I,b,f,d,m,g,_)),R=i}else{const b=t;P=at(b.length>1?b(d,{attrs:i,slots:l,emit:a}):b(d,null)),R=t.props?i:Wa(i)}}catch(b){Rn.length=0,ys(b,e,1),P=ve(St)}let A=P;if(R&&y!==!1){const b=Object.keys(R),{shapeFlag:I}=A;b.length&&I&7&&(r&&b.some(ao)&&(R=za(R,r)),A=qt(A,R,!1,!0))}return n.dirs&&(A=qt(A,null,!1,!0),A.dirs=A.dirs?A.dirs.concat(n.dirs):n.dirs),n.transition&&Mn(A,n.transition),P=A,os(T),P}const Wa=e=>{let t;for(const n in e)(n==="class"||n==="style"||fs(n))&&((t||(t={}))[n]=e[n]);return t},za=(e,t)=>{const n={};for(const s in e)(!ao(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function qa(e,t,n){const{props:s,children:o,component:r}=e,{props:l,children:i,patchFlag:a}=t,u=r.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return s?Jo(s,l,u):!!l;if(a&8){const f=t.dynamicProps;for(let d=0;d<f.length;d++){const g=f[d];if(Il(l,s,g)&&!ws(u,g))return!0}}}else return(o||i)&&(!i||!i.$stable)?!0:s===l?!1:s?l?Jo(s,l,u):!0:!!l;return!1}function Jo(e,t,n){const s=Object.keys(t);if(s.length!==Object.keys(e).length)return!0;for(let o=0;o<s.length;o++){const r=s[o];if(Il(t,e,r)&&!ws(n,r))return!0}return!1}function Il(e,t,n){const s=e[n],o=t[n];return n==="style"&&ue(s)&&ue(o)?!Dt(s,o):s!==o}function Ja({vnode:e,parent:t},n){for(;t;){const s=t.subTree;if(s.suspense&&s.suspense.activeBranch===e&&(s.el=e.el),s===e)(e=t.vnode).el=n,t=t.parent;else break}}const Ml={},$l=()=>Object.create(Ml),Ll=e=>Object.getPrototypeOf(e)===Ml;function Qa(e,t,n,s=!1){const o={},r=$l();e.propsDefaults=Object.create(null),Dl(e,t,o,r);for(const l in e.propsOptions[0])l in o||(o[l]=void 0);n?e.props=s?o:al(o):e.type.props?e.props=o:e.props=r,e.attrs=r}function Ya(e,t,n,s){const{props:o,attrs:r,vnode:{patchFlag:l}}=e,i=ie(o),[a]=e.propsOptions;let u=!1;if((s||l>0)&&!(l&16)){if(l&8){const f=e.vnode.dynamicProps;for(let d=0;d<f.length;d++){let g=f[d];if(ws(e.emitsOptions,g))continue;const m=t[g];if(a)if(ce(r,g))m!==r[g]&&(r[g]=m,u=!0);else{const _=Qe(g);o[_]=Zs(a,i,_,m,e,!1)}else m!==r[g]&&(r[g]=m,u=!0)}}}else{Dl(e,t,o,r)&&(u=!0);let f;for(const d in i)(!t||!ce(t,d)&&((f=Jt(d))===d||!ce(t,f)))&&(a?n&&(n[d]!==void 0||n[f]!==void 0)&&(o[d]=Zs(a,i,d,void 0,e,!0)):delete o[d]);if(r!==i)for(const d in r)(!t||!ce(t,d))&&(delete r[d],u=!0)}u&&yt(e.attrs,"set","")}function Dl(e,t,n,s){const[o,r]=e.propsOptions;let l=!1,i;if(t)for(let a in t){if(wn(a))continue;const u=t[a];let f;o&&ce(o,f=Qe(a))?!r||!r.includes(f)?n[f]=u:(i||(i={}))[f]=u:ws(e.emitsOptions,a)||(!(a in s)||u!==s[a])&&(s[a]=u,l=!0)}if(r){const a=ie(n),u=i||pe;for(let f=0;f<r.length;f++){const d=r[f];n[d]=Zs(o,a,d,u[d],e,!ce(u,d))}}return l}function Zs(e,t,n,s,o,r){const l=e[n];if(l!=null){const i=ce(l,"default");if(i&&s===void 0){const a=l.default;if(l.type!==Function&&!l.skipFactory&&Z(a)){const{propsDefaults:u}=o;if(n in u)s=u[n];else{const f=Fn(o);s=u[n]=a.call(null,t),f()}}else s=a;o.ce&&o.ce._setProp(n,s)}l[0]&&(r&&!i?s=!1:l[1]&&(s===""||s===Jt(n))&&(s=!0))}return s}const Xa=new WeakMap;function Vl(e,t,n=!1){const s=n?Xa:t.propsCache,o=s.get(e);if(o)return o;const r=e.props,l={},i=[];let a=!1;if(!Z(e)){const f=d=>{a=!0;const[g,m]=Vl(d,t,!0);Te(l,g),m&&i.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!r&&!a)return ue(e)&&s.set(e,nn),nn;if(q(r))for(let f=0;f<r.length;f++){const d=Qe(r[f]);Qo(d)&&(l[d]=pe)}else if(r)for(const f in r){const d=Qe(f);if(Qo(d)){const g=r[f],m=l[d]=q(g)||Z(g)?{type:g}:Te({},g),_=m.type;let y=!1,T=!0;if(q(_))for(let P=0;P<_.length;++P){const R=_[P],A=Z(R)&&R.name;if(A==="Boolean"){y=!0;break}else A==="String"&&(T=!1)}else y=Z(_)&&_.name==="Boolean";m[0]=y,m[1]=T,(y||ce(m,"default"))&&i.push(d)}}const u=[l,i];return ue(e)&&s.set(e,u),u}function Qo(e){return e[0]!=="$"&&!wn(e)}const xo=e=>e==="_"||e==="_ctx"||e==="$stable",Co=e=>q(e)?e.map(at):[at(e)],Za=(e,t,n)=>{if(t._n)return t;const s=ct((...o)=>Co(t(...o)),n);return s._c=!1,s},Ul=(e,t,n)=>{const s=e._ctx;for(const o in e){if(xo(o))continue;const r=e[o];if(Z(r))t[o]=Za(o,r,s);else if(r!=null){const l=Co(r);t[o]=()=>l}}},Bl=(e,t)=>{const n=Co(t);e.slots.default=()=>n},Hl=(e,t,n)=>{for(const s in t)(n||!xo(s))&&(e[s]=t[s])},ec=(e,t,n)=>{const s=e.slots=$l();if(e.vnode.shapeFlag&32){const o=t._;o?(Hl(s,t,n),n&&Gr(s,"_",o,!0)):Ul(t,s)}else t&&Bl(e,t)},tc=(e,t,n)=>{const{vnode:s,slots:o}=e;let r=!0,l=pe;if(s.shapeFlag&32){const i=t._;i?n&&i===1?r=!1:Hl(o,t,n):(r=!t.$stable,Ul(t,o)),l=t}else t&&(Bl(e,t),l={default:1});if(r)for(const i in o)!xo(i)&&l[i]==null&&delete o[i]},ke=lc;function nc(e){return sc(e)}function sc(e,t){const n=gs();n.__VUE__=!0;const{insert:s,remove:o,patchProp:r,createElement:l,createText:i,createComment:a,setText:u,setElementText:f,parentNode:d,nextSibling:g,setScopeId:m=ut,insertStaticContent:_}=e,y=(p,h,v,w=null,S=null,x=null,M=void 0,N=null,O=!!h.dynamicChildren)=>{if(p===h)return;p&&!en(p,h)&&(w=C(p),Ve(p,S,x,!0),p=null),h.patchFlag===-2&&(O=!1,h.dynamicChildren=null);const{type:E,ref:Q,shapeFlag:D}=h;switch(E){case xs:T(p,h,v,w);break;case St:P(p,h,v,w);break;case Xn:p==null&&R(h,v,w,M);break;case Ee:L(p,h,v,w,S,x,M,N,O);break;default:D&1?I(p,h,v,w,S,x,M,N,O):D&6?se(p,h,v,w,S,x,M,N,O):(D&64||D&128)&&E.process(p,h,v,w,S,x,M,N,O,K)}Q!=null&&S?En(Q,p&&p.ref,x,h||p,!h):Q==null&&p&&p.ref!=null&&En(p.ref,null,x,p,!0)},T=(p,h,v,w)=>{if(p==null)s(h.el=i(h.children),v,w);else{const S=h.el=p.el;h.children!==p.children&&u(S,h.children)}},P=(p,h,v,w)=>{p==null?s(h.el=a(h.children||""),v,w):h.el=p.el},R=(p,h,v,w)=>{[p.el,p.anchor]=_(p.children,h,v,w,p.el,p.anchor)},A=({el:p,anchor:h},v,w)=>{let S;for(;p&&p!==h;)S=g(p),s(p,v,w),p=S;s(h,v,w)},b=({el:p,anchor:h})=>{let v;for(;p&&p!==h;)v=g(p),o(p),p=v;o(h)},I=(p,h,v,w,S,x,M,N,O)=>{if(h.type==="svg"?M="svg":h.type==="math"&&(M="mathml"),p==null)J(h,v,w,S,x,M,N,O);else{const E=p.el&&p.el._isVueCE?p.el:null;try{E&&E._beginPatch(),V(p,h,S,x,M,N,O)}finally{E&&E._endPatch()}}},J=(p,h,v,w,S,x,M,N)=>{let O,E;const{props:Q,shapeFlag:D,transition:W,dirs:Y}=p;if(O=p.el=l(p.type,x,Q&&Q.is,Q),D&8?f(O,p.children):D&16&&le(p.children,O,null,w,S,Is(p,x),M,N),Y&&Ht(p,null,w,"created"),j(O,p,p.scopeId,M,w),Q){for(const ge in Q)ge!=="value"&&!wn(ge)&&r(O,ge,null,Q[ge],x,w);"value"in Q&&r(O,"value",null,Q.value,x),(E=Q.onVnodeBeforeMount)&&rt(E,w,p)}Y&&Ht(p,null,w,"beforeMount");const re=oc(S,W);re&&W.beforeEnter(O),s(O,h,v),((E=Q&&Q.onVnodeMounted)||re||Y)&&ke(()=>{E&&rt(E,w,p),re&&W.enter(O),Y&&Ht(p,null,w,"mounted")},S)},j=(p,h,v,w,S)=>{if(v&&m(p,v),w)for(let x=0;x<w.length;x++)m(p,w[x]);if(S){let x=S.subTree;if(h===x||Gl(x.type)&&(x.ssContent===h||x.ssFallback===h)){const M=S.vnode;j(p,M,M.scopeId,M.slotScopeIds,S.parent)}}},le=(p,h,v,w,S,x,M,N,O=0)=>{for(let E=O;E<p.length;E++){const Q=p[E]=N?vt(p[E]):at(p[E]);y(null,Q,h,v,w,S,x,M,N)}},V=(p,h,v,w,S,x,M)=>{const N=h.el=p.el;let{patchFlag:O,dynamicChildren:E,dirs:Q}=h;O|=p.patchFlag&16;const D=p.props||pe,W=h.props||pe;let Y;if(v&&Ft(v,!1),(Y=W.onVnodeBeforeUpdate)&&rt(Y,v,h,p),Q&&Ht(h,p,v,"beforeUpdate"),v&&Ft(v,!0),(D.innerHTML&&W.innerHTML==null||D.textContent&&W.textContent==null)&&f(N,""),E?X(p.dynamicChildren,E,N,v,w,Is(h,S),x):M||ne(p,h,N,null,v,w,Is(h,S),x,!1),O>0){if(O&16)te(N,D,W,v,S);else if(O&2&&D.class!==W.class&&r(N,"class",null,W.class,S),O&4&&r(N,"style",D.style,W.style,S),O&8){const re=h.dynamicProps;for(let ge=0;ge<re.length;ge++){const fe=re[ge],Ue=D[fe],Be=W[fe];(Be!==Ue||fe==="value")&&r(N,fe,Ue,Be,S,v)}}O&1&&p.children!==h.children&&f(N,h.children)}else!M&&E==null&&te(N,D,W,v,S);((Y=W.onVnodeUpdated)||Q)&&ke(()=>{Y&&rt(Y,v,h,p),Q&&Ht(h,p,v,"updated")},w)},X=(p,h,v,w,S,x,M)=>{for(let N=0;N<h.length;N++){const O=p[N],E=h[N],Q=O.el&&(O.type===Ee||!en(O,E)||O.shapeFlag&198)?d(O.el):v;y(O,E,Q,null,w,S,x,M,!0)}},te=(p,h,v,w,S)=>{if(h!==v){if(h!==pe)for(const x in h)!wn(x)&&!(x in v)&&r(p,x,h[x],null,S,w);for(const x in v){if(wn(x))continue;const M=v[x],N=h[x];M!==N&&x!=="value"&&r(p,x,N,M,S,w)}"value"in v&&r(p,"value",h.value,v.value,S)}},L=(p,h,v,w,S,x,M,N,O)=>{const E=h.el=p?p.el:i(""),Q=h.anchor=p?p.anchor:i("");let{patchFlag:D,dynamicChildren:W,slotScopeIds:Y}=h;Y&&(N=N?N.concat(Y):Y),p==null?(s(E,v,w),s(Q,v,w),le(h.children||[],v,Q,S,x,M,N,O)):D>0&&D&64&&W&&p.dynamicChildren&&p.dynamicChildren.length===W.length?(X(p.dynamicChildren,W,v,S,x,M,N),(h.key!=null||S&&h===S.subTree)&&So(p,h,!0)):ne(p,h,v,Q,S,x,M,N,O)},se=(p,h,v,w,S,x,M,N,O)=>{h.slotScopeIds=N,p==null?h.shapeFlag&512?S.ctx.activate(h,v,w,M,O):Ce(h,v,w,S,x,M,O):G(p,h,O)},Ce=(p,h,v,w,S,x,M)=>{const N=p.component=hc(p,w,S);if(Cl(p)&&(N.ctx.renderer=K),gc(N,!1,M),N.asyncDep){if(S&&S.registerDep(N,k,M),!p.el){const O=N.subTree=ve(St);P(null,O,h,v),p.placeholder=O.el}}else k(N,p,h,v,S,x,M)},G=(p,h,v)=>{const w=h.component=p.component;if(qa(p,h,v))if(w.asyncDep&&!w.asyncResolved){U(w,h,v);return}else w.next=h,w.update();else h.el=p.el,w.vnode=h},k=(p,h,v,w,S,x,M)=>{const N=()=>{if(p.isMounted){let{next:D,bu:W,u:Y,parent:re,vnode:ge}=p;{const st=Fl(p);if(st){D&&(D.el=ge.el,U(p,D,M)),st.asyncDep.then(()=>{ke(()=>{p.isUnmounted||E()},S)});return}}let fe=D,Ue;Ft(p,!1),D?(D.el=ge.el,U(p,D,M)):D=ge,W&&Jn(W),(Ue=D.props&&D.props.onVnodeBeforeUpdate)&&rt(Ue,re,D,ge),Ft(p,!0);const Be=qo(p),nt=p.subTree;p.subTree=Be,y(nt,Be,d(nt.el),C(nt),p,S,x),D.el=Be.el,fe===null&&Ja(p,Be.el),Y&&ke(Y,S),(Ue=D.props&&D.props.onVnodeUpdated)&&ke(()=>rt(Ue,re,D,ge),S)}else{let D;const{el:W,props:Y}=h,{bm:re,m:ge,parent:fe,root:Ue,type:Be}=p,nt=An(h);Ft(p,!1),re&&Jn(re),!nt&&(D=Y&&Y.onVnodeBeforeMount)&&rt(D,fe,h),Ft(p,!0);{Ue.ce&&Ue.ce._hasShadowRoot()&&Ue.ce._injectChildStyle(Be);const st=p.subTree=qo(p);y(null,st,v,w,p,S,x),h.el=st.el}if(ge&&ke(ge,S),!nt&&(D=Y&&Y.onVnodeMounted)){const st=h;ke(()=>rt(D,fe,st),S)}(h.shapeFlag&256||fe&&An(fe.vnode)&&fe.vnode.shapeFlag&256)&&p.a&&ke(p.a,S),p.isMounted=!0,h=v=w=null}};p.scope.on();const O=p.effect=new qr(N);p.scope.off();const E=p.update=O.run.bind(O),Q=p.job=O.runIfDirty.bind(O);Q.i=p,Q.id=p.uid,O.scheduler=()=>wo(Q),Ft(p,!0),E()},U=(p,h,v)=>{h.component=p;const w=p.vnode.props;p.vnode=h,p.next=null,Ya(p,h.props,w,v),tc(p,h.children,v),wt(),Do(p),xt()},ne=(p,h,v,w,S,x,M,N,O=!1)=>{const E=p&&p.children,Q=p?p.shapeFlag:0,D=h.children,{patchFlag:W,shapeFlag:Y}=h;if(W>0){if(W&128){Tt(E,D,v,w,S,x,M,N,O);return}else if(W&256){pt(E,D,v,w,S,x,M,N,O);return}}Y&8?(Q&16&&Ke(E,S,x),D!==E&&f(v,D)):Q&16?Y&16?Tt(E,D,v,w,S,x,M,N,O):Ke(E,S,x,!0):(Q&8&&f(v,""),Y&16&&le(D,v,w,S,x,M,N,O))},pt=(p,h,v,w,S,x,M,N,O)=>{p=p||nn,h=h||nn;const E=p.length,Q=h.length,D=Math.min(E,Q);let W;for(W=0;W<D;W++){const Y=h[W]=O?vt(h[W]):at(h[W]);y(p[W],Y,v,null,S,x,M,N,O)}E>Q?Ke(p,S,x,!0,!1,D):le(h,v,w,S,x,M,N,O,D)},Tt=(p,h,v,w,S,x,M,N,O)=>{let E=0;const Q=h.length;let D=p.length-1,W=Q-1;for(;E<=D&&E<=W;){const Y=p[E],re=h[E]=O?vt(h[E]):at(h[E]);if(en(Y,re))y(Y,re,v,null,S,x,M,N,O);else break;E++}for(;E<=D&&E<=W;){const Y=p[D],re=h[W]=O?vt(h[W]):at(h[W]);if(en(Y,re))y(Y,re,v,null,S,x,M,N,O);else break;D--,W--}if(E>D){if(E<=W){const Y=W+1,re=Y<Q?h[Y].el:w;for(;E<=W;)y(null,h[E]=O?vt(h[E]):at(h[E]),v,re,S,x,M,N,O),E++}}else if(E>W)for(;E<=D;)Ve(p[E],S,x,!0),E++;else{const Y=E,re=E,ge=new Map;for(E=re;E<=W;E++){const Fe=h[E]=O?vt(h[E]):at(h[E]);Fe.key!=null&&ge.set(Fe.key,E)}let fe,Ue=0;const Be=W-re+1;let nt=!1,st=0;const gn=new Array(Be);for(E=0;E<Be;E++)gn[E]=0;for(E=Y;E<=D;E++){const Fe=p[E];if(Ue>=Be){Ve(Fe,S,x,!0);continue}let ot;if(Fe.key!=null)ot=ge.get(Fe.key);else for(fe=re;fe<=W;fe++)if(gn[fe-re]===0&&en(Fe,h[fe])){ot=fe;break}ot===void 0?Ve(Fe,S,x,!0):(gn[ot-re]=E+1,ot>=st?st=ot:nt=!0,y(Fe,h[ot],v,null,S,x,M,N,O),Ue++)}const Oo=nt?rc(gn):nn;for(fe=Oo.length-1,E=Be-1;E>=0;E--){const Fe=re+E,ot=h[Fe],ko=h[Fe+1],No=Fe+1<Q?ko.el||jl(ko):w;gn[E]===0?y(null,ot,v,No,S,x,M,N,O):nt&&(fe<0||E!==Oo[fe]?tt(ot,v,No,2):fe--)}}},tt=(p,h,v,w,S=null)=>{const{el:x,type:M,transition:N,children:O,shapeFlag:E}=p;if(E&6){tt(p.component.subTree,h,v,w);return}if(E&128){p.suspense.move(h,v,w);return}if(E&64){M.move(p,h,v,K);return}if(M===Ee){s(x,h,v);for(let D=0;D<O.length;D++)tt(O[D],h,v,w);s(p.anchor,h,v);return}if(M===Xn){A(p,h,v);return}if(w!==2&&E&1&&N)if(w===0)N.beforeEnter(x),s(x,h,v),ke(()=>N.enter(x),S);else{const{leave:D,delayLeave:W,afterLeave:Y}=N,re=()=>{p.ctx.isUnmounted?o(x):s(x,h,v)},ge=()=>{x._isLeaving&&x[Ot](!0),D(x,()=>{re(),Y&&Y()})};W?W(x,re,ge):ge()}else s(x,h,v)},Ve=(p,h,v,w=!1,S=!1)=>{const{type:x,props:M,ref:N,children:O,dynamicChildren:E,shapeFlag:Q,patchFlag:D,dirs:W,cacheIndex:Y}=p;if(D===-2&&(S=!1),N!=null&&(wt(),En(N,null,v,p,!0),xt()),Y!=null&&(h.renderCache[Y]=void 0),Q&256){h.ctx.deactivate(p);return}const re=Q&1&&W,ge=!An(p);let fe;if(ge&&(fe=M&&M.onVnodeBeforeUnmount)&&rt(fe,h,p),Q&6)Bt(p.component,v,w);else{if(Q&128){p.suspense.unmount(v,w);return}re&&Ht(p,null,h,"beforeUnmount"),Q&64?p.type.remove(p,h,v,K,w):E&&!E.hasOnce&&(x!==Ee||D>0&&D&64)?Ke(E,h,v,!1,!0):(x===Ee&&D&384||!S&&Q&16)&&Ke(O,h,v),w&&Qt(p)}(ge&&(fe=M&&M.onVnodeUnmounted)||re)&&ke(()=>{fe&&rt(fe,h,p),re&&Ht(p,null,h,"unmounted")},v)},Qt=p=>{const{type:h,el:v,anchor:w,transition:S}=p;if(h===Ee){Yt(v,w);return}if(h===Xn){b(p);return}const x=()=>{o(v),S&&!S.persisted&&S.afterLeave&&S.afterLeave()};if(p.shapeFlag&1&&S&&!S.persisted){const{leave:M,delayLeave:N}=S,O=()=>M(v,x);N?N(p.el,x,O):O()}else x()},Yt=(p,h)=>{let v;for(;p!==h;)v=g(p),o(p),p=v;o(h)},Bt=(p,h,v)=>{const{bum:w,scope:S,job:x,subTree:M,um:N,m:O,a:E}=p;Yo(O),Yo(E),w&&Jn(w),S.stop(),x&&(x.flags|=8,Ve(M,p,h,v)),N&&ke(N,h),ke(()=>{p.isUnmounted=!0},h)},Ke=(p,h,v,w=!1,S=!1,x=0)=>{for(let M=x;M<p.length;M++)Ve(p[M],h,v,w,S)},C=p=>{if(p.shapeFlag&6)return C(p.component.subTree);if(p.shapeFlag&128)return p.suspense.next();const h=g(p.anchor||p.el),v=h&&h[yl];return v?g(v):h};let B=!1;const $=(p,h,v)=>{let w;p==null?h._vnode&&(Ve(h._vnode,null,null,!0),w=h._vnode.component):y(h._vnode||null,p,h,null,null,null,v),h._vnode=p,B||(B=!0,Do(w),pl(),B=!1)},K={p:y,um:Ve,m:tt,r:Qt,mt:Ce,mc:le,pc:ne,pbc:X,n:C,o:e};return{render:$,hydrate:void 0,createApp:Fa($)}}function Is({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 Ft({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function oc(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function So(e,t,n=!1){const s=e.children,o=t.children;if(q(s)&&q(o))for(let r=0;r<s.length;r++){const l=s[r];let i=o[r];i.shapeFlag&1&&!i.dynamicChildren&&((i.patchFlag<=0||i.patchFlag===32)&&(i=o[r]=vt(o[r]),i.el=l.el),!n&&i.patchFlag!==-2&&So(l,i)),i.type===xs&&(i.patchFlag===-1&&(i=o[r]=vt(i)),i.el=l.el),i.type===St&&!i.el&&(i.el=l.el)}}function rc(e){const t=e.slice(),n=[0];let s,o,r,l,i;const a=e.length;for(s=0;s<a;s++){const u=e[s];if(u!==0){if(o=n[n.length-1],e[o]<u){t[s]=o,n.push(s);continue}for(r=0,l=n.length-1;r<l;)i=r+l>>1,e[n[i]]<u?r=i+1:l=i;u<e[n[r]]&&(r>0&&(t[s]=n[r-1]),n[r]=s)}}for(r=n.length,l=n[r-1];r-- >0;)n[r]=l,l=t[l];return n}function Fl(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Fl(t)}function Yo(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function jl(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?jl(t.subTree):null}const Gl=e=>e.__isSuspense;function lc(e,t){t&&t.pendingBranch?q(e)?t.effects.push(...e):t.effects.push(e):ga(e)}const Ee=Symbol.for("v-fgt"),xs=Symbol.for("v-txt"),St=Symbol.for("v-cmt"),Xn=Symbol.for("v-stc"),Rn=[];let Ge=null;function H(e=!1){Rn.push(Ge=e?null:[])}function ic(){Rn.pop(),Ge=Rn[Rn.length-1]||null}let Dn=1;function is(e,t=!1){Dn+=e,e<0&&Ge&&t&&(Ge.hasOnce=!0)}function Kl(e){return e.dynamicChildren=Dn>0?Ge||nn:null,ic(),Dn>0&&Ge&&Ge.push(e),e}function F(e,t,n,s,o,r){return Kl(c(e,t,n,s,o,r,!0))}function Wl(e,t,n,s,o){return Kl(ve(e,t,n,s,o,!0))}function as(e){return e?e.__v_isVNode===!0:!1}function en(e,t){return e.type===t.type&&e.key===t.key}const zl=({key:e})=>e??null,Zn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?xe(e)||Me(e)||Z(e)?{i:je,r:e,k:t,f:!!n}:e:null);function c(e,t=null,n=null,s=0,o=null,r=e===Ee?0:1,l=!1,i=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&zl(t),ref:t&&Zn(t),scopeId:gl,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:r,patchFlag:s,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:je};return i?(Eo(a,n),r&128&&e.normalize(a)):n&&(a.shapeFlag|=xe(n)?8:16),Dn>0&&!l&&Ge&&(a.patchFlag>0||r&6)&&a.patchFlag!==32&&Ge.push(a),a}const ve=ac;function ac(e,t=null,n=null,s=0,o=null,r=!1){if((!e||e===Ia)&&(e=St),as(e)){const i=qt(e,t,!0);return n&&Eo(i,n),Dn>0&&!r&&Ge&&(i.shapeFlag&6?Ge[Ge.indexOf(e)]=i:Ge.push(i)),i.patchFlag=-2,i}if(bc(e)&&(e=e.__vccOpts),t){t=cc(t);let{class:i,style:a}=t;i&&!xe(i)&&(t.class=be(i)),ue(a)&&(_o(a)&&!q(a)&&(a=Te({},a)),t.style=ms(a))}const l=xe(e)?1:Gl(e)?128:_a(e)?64:ue(e)?4:Z(e)?2:0;return c(e,t,n,s,o,l,r,!0)}function cc(e){return e?_o(e)||Ll(e)?Te({},e):e:null}function qt(e,t,n=!1,s=!1){const{props:o,ref:r,patchFlag:l,children:i,transition:a}=e,u=t?fc(o||{},t):o,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&zl(u),ref:t&&t.ref?n&&r?q(r)?r.concat(Zn(t)):[r,Zn(t)]:Zn(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ee?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&qt(e.ssContent),ssFallback:e.ssFallback&&qt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&s&&Mn(f,a.clone(f)),f}function he(e=" ",t=0){return ve(xs,null,e,t)}function uc(e,t){const n=ve(Xn,null,e);return n.staticCount=t,n}function ye(e="",t=!1){return t?(H(),Wl(St,null,e)):ve(St,null,e)}function at(e){return e==null||typeof e=="boolean"?ve(St):q(e)?ve(Ee,null,e.slice()):as(e)?vt(e):ve(xs,null,String(e))}function vt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:qt(e)}function Eo(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(q(t))n=16;else if(typeof t=="object")if(s&65){const o=t.default;o&&(o._c&&(o._d=!1),Eo(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!Ll(t)?t._ctx=je:o===3&&je&&(je.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Z(t)?(t={default:t,_ctx:je},n=32):(t=String(t),s&64?(n=16,t=[he(t)]):n=8);e.children=t,e.shapeFlag|=n}function fc(...e){const t={};for(let n=0;n<e.length;n++){const s=e[n];for(const o in s)if(o==="class")t.class!==s.class&&(t.class=be([t.class,s.class]));else if(o==="style")t.style=ms([t.style,s.style]);else if(fs(o)){const r=t[o],l=s[o];l&&r!==l&&!(q(r)&&r.includes(l))&&(t[o]=r?[].concat(r,l):l)}else o!==""&&(t[o]=s[o])}return t}function rt(e,t,n,s=null){Ze(e,t,7,[n,s])}const dc=kl();let pc=0;function hc(e,t,n){const s=e.type,o=(t?t.appContext:e.appContext)||dc,r={uid:pc++,vnode:e,type:s,parent:t,appContext:o,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Ui(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(o.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Vl(s,o),emitsOptions:Nl(s,o),emit:null,emitted:null,propsDefaults:pe,inheritAttrs:s.inheritAttrs,ctx:pe,data:pe,props:pe,attrs:pe,slots:pe,refs:pe,setupState:pe,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return r.ctx={_:r},r.root=t?t.root:r,r.emit=Ga.bind(null,r),e.ce&&e.ce(r),r}let Ie=null;const ql=()=>Ie||je;let cs,eo;{const e=gs(),t=(n,s)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(s),r=>{o.length>1?o.forEach(l=>l(r)):o[0](r)}};cs=t("__VUE_INSTANCE_SETTERS__",n=>Ie=n),eo=t("__VUE_SSR_SETTERS__",n=>Vn=n)}const Fn=e=>{const t=Ie;return cs(e),e.scope.on(),()=>{e.scope.off(),cs(t)}},Xo=()=>{Ie&&Ie.scope.off(),cs(null)};function Jl(e){return e.vnode.shapeFlag&4}let Vn=!1;function gc(e,t=!1,n=!1){t&&eo(t);const{props:s,children:o}=e.vnode,r=Jl(e);Qa(e,s,r,t),ec(e,o,n||t);const l=r?mc(e,t):void 0;return t&&eo(!1),l}function mc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,$a);const{setup:s}=n;if(s){wt();const o=e.setupContext=s.length>1?yc(e):null,r=Fn(e),l=Hn(s,e,0,[e.props,o]),i=Hr(l);if(xt(),r(),(i||e.sp)&&!An(e)&&xl(e),i){if(l.then(Xo,Xo),t)return l.then(a=>{Zo(e,a)}).catch(a=>{ys(a,e,0)});e.asyncDep=l}else Zo(e,l)}else Ql(e)}function Zo(e,t,n){Z(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ue(t)&&(e.setupState=ul(t)),Ql(e)}function Ql(e,t,n){const s=e.type;e.render||(e.render=s.render||ut);{const o=Fn(e);wt();try{La(e)}finally{xt(),o()}}}const vc={get(e,t){return Ne(e,"get",""),e[t]}};function yc(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,vc),slots:e.slots,emit:e.emit,expose:t}}function Cs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(ul(ra(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Tn)return Tn[n](e)},has(t,n){return n in t||n in Tn}})):e.proxy}function _c(e,t=!0){return Z(e)?e.displayName||e.name:e.name||t&&e.__name}function bc(e){return Z(e)&&"__vccOpts"in e}const Se=(e,t)=>ua(e,t,Vn);function Yl(e,t,n){try{is(-1);const s=arguments.length;return s===2?ue(t)&&!q(t)?as(t)?ve(e,null,[t]):ve(e,t):ve(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&as(n)&&(n=[n]),ve(e,t,n))}finally{is(1)}}const wc="3.5.29";/**
|
|
14
|
+
* @vue/runtime-dom v3.5.29
|
|
15
|
+
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
16
|
+
* @license MIT
|
|
17
|
+
**/let to;const er=typeof window<"u"&&window.trustedTypes;if(er)try{to=er.createPolicy("vue",{createHTML:e=>e})}catch{}const Xl=to?e=>to.createHTML(e):e=>e,xc="http://www.w3.org/2000/svg",Cc="http://www.w3.org/1998/Math/MathML",mt=typeof document<"u"?document:null,tr=mt&&mt.createElement("template"),Sc={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"?mt.createElementNS(xc,e):t==="mathml"?mt.createElementNS(Cc,e):n?mt.createElement(e,{is:n}):mt.createElement(e);return e==="select"&&s&&s.multiple!=null&&o.setAttribute("multiple",s.multiple),o},createText:e=>mt.createTextNode(e),createComment:e=>mt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>mt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,o,r){const l=n?n.previousSibling:t.lastChild;if(o&&(o===r||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===r||!(o=o.nextSibling)););else{tr.innerHTML=Xl(s==="svg"?`<svg>${e}</svg>`:s==="mathml"?`<math>${e}</math>`:e);const i=tr.content;if(s==="svg"||s==="mathml"){const a=i.firstChild;for(;a.firstChild;)i.appendChild(a.firstChild);i.removeChild(a)}t.insertBefore(i,n)}return[l?l.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Rt="transition",yn="animation",cn=Symbol("_vtc"),Zl={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Ec=Te({},Ca,Zl),jt=(e,t=[])=>{q(e)?e.forEach(n=>n(...t)):e&&e(...t)},nr=e=>e?q(e)?e.some(t=>t.length>1):e.length>1:!1;function Ac(e){const t={};for(const L in e)L in Zl||(t[L]=e[L]);if(e.css===!1)return t;const{name:n="v",type:s,duration:o,enterFromClass:r=`${n}-enter-from`,enterActiveClass:l=`${n}-enter-active`,enterToClass:i=`${n}-enter-to`,appearFromClass:a=r,appearActiveClass:u=l,appearToClass:f=i,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:g=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,_=Tc(o),y=_&&_[0],T=_&&_[1],{onBeforeEnter:P,onEnter:R,onEnterCancelled:A,onLeave:b,onLeaveCancelled:I,onBeforeAppear:J=P,onAppear:j=R,onAppearCancelled:le=A}=t,V=(L,se,Ce,G)=>{L._enterCancelled=G,kt(L,se?f:i),kt(L,se?u:l),Ce&&Ce()},X=(L,se)=>{L._isLeaving=!1,kt(L,d),kt(L,m),kt(L,g),se&&se()},te=L=>(se,Ce)=>{const G=L?j:R,k=()=>V(se,L,Ce);jt(G,[se,k]),sr(()=>{kt(se,L?a:r),lt(se,L?f:i),nr(G)||or(se,s,y,k)})};return Te(t,{onBeforeEnter(L){jt(P,[L]),lt(L,r),lt(L,l)},onBeforeAppear(L){jt(J,[L]),lt(L,a),lt(L,u)},onEnter:te(!1),onAppear:te(!0),onLeave(L,se){L._isLeaving=!0;const Ce=()=>X(L,se);lt(L,d),L._enterCancelled?(lt(L,g),no(L)):(no(L),lt(L,g)),sr(()=>{L._isLeaving&&(kt(L,d),lt(L,m),nr(b)||or(L,s,T,Ce))}),jt(b,[L,Ce])},onEnterCancelled(L){V(L,!1,void 0,!0),jt(A,[L])},onAppearCancelled(L){V(L,!0,void 0,!0),jt(le,[L])},onLeaveCancelled(L){X(L),jt(I,[L])}})}function Tc(e){if(e==null)return null;if(ue(e))return[Ms(e.enter),Ms(e.leave)];{const t=Ms(e);return[t,t]}}function Ms(e){return ki(e)}function lt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[cn]||(e[cn]=new Set)).add(t)}function kt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[cn];n&&(n.delete(t),n.size||(e[cn]=void 0))}function sr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Rc=0;function or(e,t,n,s){const o=e._endId=++Rc,r=()=>{o===e._endId&&s()};if(n!=null)return setTimeout(r,n);const{type:l,timeout:i,propCount:a}=ei(e,t);if(!l)return s();const u=l+"end";let f=0;const d=()=>{e.removeEventListener(u,g),r()},g=m=>{m.target===e&&++f>=a&&d()};setTimeout(()=>{f<a&&d()},i+1),e.addEventListener(u,g)}function ei(e,t){const n=window.getComputedStyle(e),s=_=>(n[_]||"").split(", "),o=s(`${Rt}Delay`),r=s(`${Rt}Duration`),l=rr(o,r),i=s(`${yn}Delay`),a=s(`${yn}Duration`),u=rr(i,a);let f=null,d=0,g=0;t===Rt?l>0&&(f=Rt,d=l,g=r.length):t===yn?u>0&&(f=yn,d=u,g=a.length):(d=Math.max(l,u),f=d>0?l>u?Rt:yn:null,g=f?f===Rt?r.length:a.length:0);const m=f===Rt&&/\b(?:transform|all)(?:,|$)/.test(s(`${Rt}Property`).toString());return{type:f,timeout:d,propCount:g,hasTransform:m}}function rr(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((n,s)=>lr(n)+lr(e[s])))}function lr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function no(e){return(e?e.ownerDocument:document).body.offsetHeight}function Pc(e,t,n){const s=e[cn];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const ir=Symbol("_vod"),Oc=Symbol("_vsh"),kc=Symbol(""),Nc=/(?:^|;)\s*display\s*:/;function Ic(e,t,n){const s=e.style,o=xe(n);let r=!1;if(n&&!o){if(t)if(xe(t))for(const l of t.split(";")){const i=l.slice(0,l.indexOf(":")).trim();n[i]==null&&es(s,i,"")}else for(const l in t)n[l]==null&&es(s,l,"");for(const l in n)l==="display"&&(r=!0),es(s,l,n[l])}else if(o){if(t!==n){const l=s[kc];l&&(n+=";"+l),s.cssText=n,r=Nc.test(n)}}else t&&e.removeAttribute("style");ir in e&&(e[ir]=r?s.display:"",e[Oc]&&(s.display="none"))}const ar=/\s*!important$/;function es(e,t,n){if(q(n))n.forEach(s=>es(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Mc(e,t);ar.test(n)?e.setProperty(Jt(s),n.replace(ar,""),"important"):e[s]=n}}const cr=["Webkit","Moz","ms"],$s={};function Mc(e,t){const n=$s[t];if(n)return n;let s=Qe(t);if(s!=="filter"&&s in e)return $s[t]=s;s=ps(s);for(let o=0;o<cr.length;o++){const r=cr[o]+s;if(r in e)return $s[t]=r}return t}const ur="http://www.w3.org/1999/xlink";function fr(e,t,n,s,o,r=Di(t)){s&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(ur,t.slice(6,t.length)):e.setAttributeNS(ur,t,n):n==null||r&&!Kr(n)?e.removeAttribute(t):e.setAttribute(t,r?"":dt(n)?String(n):n)}function dr(e,t,n,s,o){if(t==="innerHTML"||t==="textContent"){n!=null&&(e[t]=t==="innerHTML"?Xl(n):n);return}const r=e.tagName;if(t==="value"&&r!=="PROGRESS"&&!r.includes("-")){const i=r==="OPTION"?e.getAttribute("value")||"":e.value,a=n==null?e.type==="checkbox"?"on":"":String(n);(i!==a||!("_value"in e))&&(e.value=a),n==null&&e.removeAttribute(t),e._value=n;return}let l=!1;if(n===""||n==null){const i=typeof e[t];i==="boolean"?n=Kr(n):n==null&&i==="string"?(n="",l=!0):i==="number"&&(n=0,l=!0)}try{e[t]=n}catch{}l&&e.removeAttribute(o||t)}function bt(e,t,n,s){e.addEventListener(t,n,s)}function $c(e,t,n,s){e.removeEventListener(t,n,s)}const pr=Symbol("_vei");function Lc(e,t,n,s,o=null){const r=e[pr]||(e[pr]={}),l=r[t];if(s&&l)l.value=s;else{const[i,a]=Dc(t);if(s){const u=r[t]=Bc(s,o);bt(e,i,u,a)}else l&&($c(e,i,l,a),r[t]=void 0)}}const hr=/(?:Once|Passive|Capture)$/;function Dc(e){let t;if(hr.test(e)){t={};let s;for(;s=e.match(hr);)e=e.slice(0,e.length-s[0].length),t[s[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Jt(e.slice(2)),t]}let Ls=0;const Vc=Promise.resolve(),Uc=()=>Ls||(Vc.then(()=>Ls=0),Ls=Date.now());function Bc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Ze(Hc(s,n.value),t,5,[s])};return n.value=e,n.attached=Uc(),n}function Hc(e,t){if(q(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>o=>!o._stopped&&s&&s(o))}else return t}const gr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Fc=(e,t,n,s,o,r)=>{const l=o==="svg";t==="class"?Pc(e,s,l):t==="style"?Ic(e,n,s):fs(t)?ao(t)||Lc(e,t,n,s,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):jc(e,t,s,l))?(dr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&fr(e,t,s,l,r,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!xe(s))?dr(e,Qe(t),s,r,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),fr(e,t,s,l))};function jc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&gr(t)&&Z(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 gr(t)&&xe(n)?!1:t in e}const ti=new WeakMap,ni=new WeakMap,us=Symbol("_moveCb"),mr=Symbol("_enterCb"),Gc=e=>(delete e.props.mode,e),Kc=Gc({name:"TransitionGroup",props:Te({},Ec,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=ql(),s=xa();let o,r;return Tl(()=>{if(!o.length)return;const l=e.moveClass||`${e.name||"v"}-move`;if(!Qc(o[0].el,n.vnode.el,l)){o=[];return}o.forEach(zc),o.forEach(qc);const i=o.filter(Jc);no(n.vnode.el),i.forEach(a=>{const u=a.el,f=u.style;lt(u,l),f.transform=f.webkitTransform=f.transitionDuration="";const d=u[us]=g=>{g&&g.target!==u||(!g||g.propertyName.endsWith("transform"))&&(u.removeEventListener("transitionend",d),u[us]=null,kt(u,l))};u.addEventListener("transitionend",d)}),o=[]}),()=>{const l=ie(e),i=Ac(l);let a=l.tag||Ee;if(o=[],r)for(let u=0;u<r.length;u++){const f=r[u];f.el&&f.el instanceof Element&&(o.push(f),Mn(f,Js(f,i,s,n)),ti.set(f,si(f.el)))}r=t.default?bl(t.default()):[];for(let u=0;u<r.length;u++){const f=r[u];f.key!=null&&Mn(f,Js(f,i,s,n))}return ve(a,null,r)}}}),Wc=Kc;function zc(e){const t=e.el;t[us]&&t[us](),t[mr]&&t[mr]()}function qc(e){ni.set(e,si(e.el))}function Jc(e){const t=ti.get(e),n=ni.get(e),s=t.left-n.left,o=t.top-n.top;if(s||o){const r=e.el,l=r.style,i=r.getBoundingClientRect();let a=1,u=1;return r.offsetWidth&&(a=i.width/r.offsetWidth),r.offsetHeight&&(u=i.height/r.offsetHeight),(!Number.isFinite(a)||a===0)&&(a=1),(!Number.isFinite(u)||u===0)&&(u=1),Math.abs(a-1)<.01&&(a=1),Math.abs(u-1)<.01&&(u=1),l.transform=l.webkitTransform=`translate(${s/a}px,${o/u}px)`,l.transitionDuration="0s",e}}function si(e){const t=e.getBoundingClientRect();return{left:t.left,top:t.top}}function Qc(e,t,n){const s=e.cloneNode(),o=e[cn];o&&o.forEach(i=>{i.split(/\s+/).forEach(a=>a&&s.classList.remove(a))}),n.split(/\s+/).forEach(i=>i&&s.classList.add(i)),s.style.display="none";const r=t.nodeType===1?t:t.parentNode;r.appendChild(s);const{hasTransform:l}=ei(s);return r.removeChild(s),l}const Vt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return q(t)?n=>Jn(t,n):t};function Yc(e){e.target.composing=!0}function vr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Je=Symbol("_assign");function yr(e,t,n){return t&&(e=e.trim()),n&&(e=hs(e)),e}const Oe={created(e,{modifiers:{lazy:t,trim:n,number:s}},o){e[Je]=Vt(o);const r=s||o.props&&o.props.type==="number";bt(e,t?"change":"input",l=>{l.target.composing||e[Je](yr(e.value,n,r))}),(n||r)&&bt(e,"change",()=>{e.value=yr(e.value,n,r)}),t||(bt(e,"compositionstart",Yc),bt(e,"compositionend",vr),bt(e,"change",vr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:o,number:r}},l){if(e[Je]=Vt(l),e.composing)return;const i=(r||e.type==="number")&&!/^0\d/.test(e.value)?hs(e.value):e.value,a=t??"";i!==a&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||o&&e.value.trim()===a)||(e.value=a))}},Xc={deep:!0,created(e,t,n){e[Je]=Vt(n),bt(e,"change",()=>{const s=e._modelValue,o=un(e),r=e.checked,l=e[Je];if(q(s)){const i=fo(s,o),a=i!==-1;if(r&&!a)l(s.concat(o));else if(!r&&a){const u=[...s];u.splice(i,1),l(u)}}else if(pn(s)){const i=new Set(s);r?i.add(o):i.delete(o),l(i)}else l(oi(e,r))})},mounted:_r,beforeUpdate(e,t,n){e[Je]=Vt(n),_r(e,t,n)}};function _r(e,{value:t,oldValue:n},s){e._modelValue=t;let o;if(q(t))o=fo(t,s.props.value)>-1;else if(pn(t))o=t.has(s.props.value);else{if(t===n)return;o=Dt(t,oi(e,!0))}e.checked!==o&&(e.checked=o)}const Zc={created(e,{value:t},n){e.checked=Dt(t,n.props.value),e[Je]=Vt(n),bt(e,"change",()=>{e[Je](un(e))})},beforeUpdate(e,{value:t,oldValue:n},s){e[Je]=Vt(s),t!==n&&(e.checked=Dt(t,s.props.value))}},Pn={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const o=pn(t);bt(e,"change",()=>{const r=Array.prototype.filter.call(e.options,l=>l.selected).map(l=>n?hs(un(l)):un(l));e[Je](e.multiple?o?new Set(r):r:r[0]),e._assigning=!0,bo(()=>{e._assigning=!1})}),e[Je]=Vt(s)},mounted(e,{value:t}){br(e,t)},beforeUpdate(e,t,n){e[Je]=Vt(n)},updated(e,{value:t}){e._assigning||br(e,t)}};function br(e,t){const n=e.multiple,s=q(t);if(!(n&&!s&&!pn(t))){for(let o=0,r=e.options.length;o<r;o++){const l=e.options[o],i=un(l);if(n)if(s){const a=typeof i;a==="string"||a==="number"?l.selected=t.some(u=>String(u)===String(i)):l.selected=fo(t,i)>-1}else l.selected=t.has(i);else if(Dt(un(l),t)){e.selectedIndex!==o&&(e.selectedIndex=o);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function un(e){return"_value"in e?e._value:e.value}function oi(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const eu={created(e,t,n){qn(e,t,n,null,"created")},mounted(e,t,n){qn(e,t,n,null,"mounted")},beforeUpdate(e,t,n,s){qn(e,t,n,s,"beforeUpdate")},updated(e,t,n,s){qn(e,t,n,s,"updated")}};function tu(e,t){switch(e){case"SELECT":return Pn;case"TEXTAREA":return Oe;default:switch(t){case"checkbox":return Xc;case"radio":return Zc;default:return Oe}}}function qn(e,t,n,s,o){const l=tu(e.tagName,n.props&&n.props.type)[o];l&&l(e,t,n,s)}const nu=["ctrl","shift","alt","meta"],su={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)=>nu.some(n=>e[`${n}Key`]&&!t.includes(n))},Ss=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(o,...r)=>{for(let l=0;l<t.length;l++){const i=su[t[l]];if(i&&i(o,t))return}return e(o,...r)})},ou=Te({patchProp:Fc},Sc);let wr;function ru(){return wr||(wr=nc(ou))}const lu=(...e)=>{const t=ru().createApp(...e),{mount:n}=t;return t.mount=s=>{const o=au(s);if(!o)return;const r=t._component;!Z(r)&&!r.render&&!r.template&&(r.template=o.innerHTML),o.nodeType===1&&(o.textContent="");const l=n(o,!1,iu(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),l},t};function iu(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function au(e){return xe(e)?document.querySelector(e):e}/*!
|
|
18
|
+
* vue-router v4.6.4
|
|
19
|
+
* (c) 2025 Eduardo San Martin Morote
|
|
20
|
+
* @license MIT
|
|
21
|
+
*/const tn=typeof document<"u";function ri(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function cu(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&ri(e.default)}const ae=Object.assign;function Ds(e,t){const n={};for(const s in t){const o=t[s];n[s]=et(o)?o.map(e):e(o)}return n}const On=()=>{},et=Array.isArray;function xr(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}const li=/#/g,uu=/&/g,fu=/\//g,du=/=/g,pu=/\?/g,ii=/\+/g,hu=/%5B/g,gu=/%5D/g,ai=/%5E/g,mu=/%60/g,ci=/%7B/g,vu=/%7C/g,ui=/%7D/g,yu=/%20/g;function Ao(e){return e==null?"":encodeURI(""+e).replace(vu,"|").replace(hu,"[").replace(gu,"]")}function _u(e){return Ao(e).replace(ci,"{").replace(ui,"}").replace(ai,"^")}function so(e){return Ao(e).replace(ii,"%2B").replace(yu,"+").replace(li,"%23").replace(uu,"%26").replace(mu,"`").replace(ci,"{").replace(ui,"}").replace(ai,"^")}function bu(e){return so(e).replace(du,"%3D")}function wu(e){return Ao(e).replace(li,"%23").replace(pu,"%3F")}function xu(e){return wu(e).replace(fu,"%2F")}function Un(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const Cu=/\/$/,Su=e=>e.replace(Cu,"");function Vs(e,t,n="/"){let s,o={},r="",l="";const i=t.indexOf("#");let a=t.indexOf("?");return a=i>=0&&a>i?-1:a,a>=0&&(s=t.slice(0,a),r=t.slice(a,i>0?i:t.length),o=e(r.slice(1))),i>=0&&(s=s||t.slice(0,i),l=t.slice(i,t.length)),s=Ru(s??t,n),{fullPath:s+r+l,path:s,query:o,hash:Un(l)}}function Eu(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Cr(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Au(e,t,n){const s=t.matched.length-1,o=n.matched.length-1;return s>-1&&s===o&&fn(t.matched[s],n.matched[o])&&fi(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function fn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function fi(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!Tu(e[n],t[n]))return!1;return!0}function Tu(e,t){return et(e)?Sr(e,t):et(t)?Sr(t,e):(e==null?void 0:e.valueOf())===(t==null?void 0:t.valueOf())}function Sr(e,t){return et(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function Ru(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),o=s[s.length-1];(o===".."||o===".")&&s.push("");let r=n.length-1,l,i;for(l=0;l<s.length;l++)if(i=s[l],i!==".")if(i==="..")r>1&&r--;else break;return n.slice(0,r).join("/")+"/"+s.slice(l).join("/")}const Pt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let oo=function(e){return e.pop="pop",e.push="push",e}({}),Us=function(e){return e.back="back",e.forward="forward",e.unknown="",e}({});function Pu(e){if(!e)if(tn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Su(e)}const Ou=/^[^#]+#/;function ku(e,t){return e.replace(Ou,"#")+t}function Nu(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const Es=()=>({left:window.scrollX,top:window.scrollY});function Iu(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),o=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=Nu(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Er(e,t){return(history.state?history.state.position-t:-1)+e}const ro=new Map;function Mu(e,t){ro.set(e,t)}function $u(e){const t=ro.get(e);return ro.delete(e),t}function Lu(e){return typeof e=="string"||e&&typeof e=="object"}function di(e){return typeof e=="string"||typeof e=="symbol"}let we=function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e}({});const pi=Symbol("");we.MATCHER_NOT_FOUND+"",we.NAVIGATION_GUARD_REDIRECT+"",we.NAVIGATION_ABORTED+"",we.NAVIGATION_CANCELLED+"",we.NAVIGATION_DUPLICATED+"";function dn(e,t){return ae(new Error,{type:e,[pi]:!0},t)}function gt(e,t){return e instanceof Error&&pi in e&&(t==null||!!(e.type&t))}const Du=["params","query","hash"];function Vu(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of Du)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function Uu(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;s<n.length;++s){const o=n[s].replace(ii," "),r=o.indexOf("="),l=Un(r<0?o:o.slice(0,r)),i=r<0?null:Un(o.slice(r+1));if(l in t){let a=t[l];et(a)||(a=t[l]=[a]),a.push(i)}else t[l]=i}return t}function Ar(e){let t="";for(let n in e){const s=e[n];if(n=bu(n),s==null){s!==void 0&&(t+=(t.length?"&":"")+n);continue}(et(s)?s.map(o=>o&&so(o)):[s&&so(s)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function Bu(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=et(s)?s.map(o=>o==null?null:""+o):s==null?s:""+s)}return t}const hi=Symbol(""),Tr=Symbol(""),As=Symbol(""),To=Symbol(""),lo=Symbol("");function _n(){let e=[];function t(s){return e.push(s),()=>{const o=e.indexOf(s);o>-1&&e.splice(o,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Hu(e,t,n){const s=()=>{e[t].delete(n)};bs(s),El(s),Sl(()=>{e[t].add(n)}),e[t].add(n)}function Fu(e){const t=qe(hi,{}).value;t&&Hu(t,"leaveGuards",e)}function Mt(e,t,n,s,o,r=l=>l()){const l=s&&(s.enterCallbacks[o]=s.enterCallbacks[o]||[]);return()=>new Promise((i,a)=>{const u=g=>{g===!1?a(dn(we.NAVIGATION_ABORTED,{from:n,to:t})):g instanceof Error?a(g):Lu(g)?a(dn(we.NAVIGATION_GUARD_REDIRECT,{from:t,to:g})):(l&&s.enterCallbacks[o]===l&&typeof g=="function"&&l.push(g),i())},f=r(()=>e.call(s&&s.instances[o],t,n,u));let d=Promise.resolve(f);e.length<3&&(d=d.then(u)),d.catch(g=>a(g))})}function Bs(e,t,n,s,o=r=>r()){const r=[];for(const l of e)for(const i in l.components){let a=l.components[i];if(!(t!=="beforeRouteEnter"&&!l.instances[i]))if(ri(a)){const u=(a.__vccOpts||a)[t];u&&r.push(Mt(u,n,s,l,i,o))}else{let u=a();r.push(()=>u.then(f=>{if(!f)throw new Error(`Couldn't resolve component "${i}" at "${l.path}"`);const d=cu(f)?f.default:f;l.mods[i]=f,l.components[i]=d;const g=(d.__vccOpts||d)[t];return g&&Mt(g,n,s,l,i,o)()}))}}return r}function ju(e,t){const n=[],s=[],o=[],r=Math.max(t.matched.length,e.matched.length);for(let l=0;l<r;l++){const i=t.matched[l];i&&(e.matched.find(u=>fn(u,i))?s.push(i):n.push(i));const a=e.matched[l];a&&(t.matched.find(u=>fn(u,a))||o.push(a))}return[n,s,o]}/*!
|
|
22
|
+
* vue-router v4.6.4
|
|
23
|
+
* (c) 2025 Eduardo San Martin Morote
|
|
24
|
+
* @license MIT
|
|
25
|
+
*/let Gu=()=>location.protocol+"//"+location.host;function gi(e,t){const{pathname:n,search:s,hash:o}=t,r=e.indexOf("#");if(r>-1){let l=o.includes(e.slice(r))?e.slice(r).length:1,i=o.slice(l);return i[0]!=="/"&&(i="/"+i),Cr(i,"")}return Cr(n,e)+s+o}function Ku(e,t,n,s){let o=[],r=[],l=null;const i=({state:g})=>{const m=gi(e,location),_=n.value,y=t.value;let T=0;if(g){if(n.value=m,t.value=g,l&&l===_){l=null;return}T=y?g.position-y.position:0}else s(m);o.forEach(P=>{P(n.value,_,{delta:T,type:oo.pop,direction:T?T>0?Us.forward:Us.back:Us.unknown})})};function a(){l=n.value}function u(g){o.push(g);const m=()=>{const _=o.indexOf(g);_>-1&&o.splice(_,1)};return r.push(m),m}function f(){if(document.visibilityState==="hidden"){const{history:g}=window;if(!g.state)return;g.replaceState(ae({},g.state,{scroll:Es()}),"")}}function d(){for(const g of r)g();r=[],window.removeEventListener("popstate",i),window.removeEventListener("pagehide",f),document.removeEventListener("visibilitychange",f)}return window.addEventListener("popstate",i),window.addEventListener("pagehide",f),document.addEventListener("visibilitychange",f),{pauseListeners:a,listen:u,destroy:d}}function Rr(e,t,n,s=!1,o=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:o?Es():null}}function Wu(e){const{history:t,location:n}=window,s={value:gi(e,n)},o={value:t.state};o.value||r(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function r(a,u,f){const d=e.indexOf("#"),g=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+a:Gu()+e+a;try{t[f?"replaceState":"pushState"](u,"",g),o.value=u}catch(m){console.error(m),n[f?"replace":"assign"](g)}}function l(a,u){r(a,ae({},t.state,Rr(o.value.back,a,o.value.forward,!0),u,{position:o.value.position}),!0),s.value=a}function i(a,u){const f=ae({},o.value,t.state,{forward:a,scroll:Es()});r(f.current,f,!0),r(a,ae({},Rr(s.value,a,null),{position:f.position+1},u),!1),s.value=a}return{location:s,state:o,push:i,replace:l}}function zu(e){e=Pu(e);const t=Wu(e),n=Ku(e,t.state,t.location,t.replace);function s(r,l=!0){l||n.pauseListeners(),history.go(r)}const o=ae({location:"",base:e,go:s,createHref:ku.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}let Kt=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e}({});var Re=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e}(Re||{});const qu={type:Kt.Static,value:""},Ju=/[a-zA-Z0-9_]/;function Qu(e){if(!e)return[[]];if(e==="/")return[[qu]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(m){throw new Error(`ERR (${n})/"${u}": ${m}`)}let n=Re.Static,s=n;const o=[];let r;function l(){r&&o.push(r),r=[]}let i=0,a,u="",f="";function d(){u&&(n===Re.Static?r.push({type:Kt.Static,value:u}):n===Re.Param||n===Re.ParamRegExp||n===Re.ParamRegExpEnd?(r.length>1&&(a==="*"||a==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),r.push({type:Kt.Param,value:u,regexp:f,repeatable:a==="*"||a==="+",optional:a==="*"||a==="?"})):t("Invalid state to consume buffer"),u="")}function g(){u+=a}for(;i<e.length;){if(a=e[i++],a==="\\"&&n!==Re.ParamRegExp){s=n,n=Re.EscapeNext;continue}switch(n){case Re.Static:a==="/"?(u&&d(),l()):a===":"?(d(),n=Re.Param):g();break;case Re.EscapeNext:g(),n=s;break;case Re.Param:a==="("?n=Re.ParamRegExp:Ju.test(a)?g():(d(),n=Re.Static,a!=="*"&&a!=="?"&&a!=="+"&&i--);break;case Re.ParamRegExp:a===")"?f[f.length-1]=="\\"?f=f.slice(0,-1)+a:n=Re.ParamRegExpEnd:f+=a;break;case Re.ParamRegExpEnd:d(),n=Re.Static,a!=="*"&&a!=="?"&&a!=="+"&&i--,f="";break;default:t("Unknown state");break}}return n===Re.ParamRegExp&&t(`Unfinished custom RegExp for param "${u}"`),d(),l(),o}const Pr="[^/]+?",Yu={sensitive:!1,strict:!1,start:!0,end:!0};var Le=function(e){return e[e._multiplier=10]="_multiplier",e[e.Root=90]="Root",e[e.Segment=40]="Segment",e[e.SubSegment=30]="SubSegment",e[e.Static=40]="Static",e[e.Dynamic=20]="Dynamic",e[e.BonusCustomRegExp=10]="BonusCustomRegExp",e[e.BonusWildcard=-50]="BonusWildcard",e[e.BonusRepeatable=-20]="BonusRepeatable",e[e.BonusOptional=-8]="BonusOptional",e[e.BonusStrict=.7000000000000001]="BonusStrict",e[e.BonusCaseSensitive=.25]="BonusCaseSensitive",e}(Le||{});const Xu=/[.+*?^${}()[\]/\\]/g;function Zu(e,t){const n=ae({},Yu,t),s=[];let o=n.start?"^":"";const r=[];for(const u of e){const f=u.length?[]:[Le.Root];n.strict&&!u.length&&(o+="/");for(let d=0;d<u.length;d++){const g=u[d];let m=Le.Segment+(n.sensitive?Le.BonusCaseSensitive:0);if(g.type===Kt.Static)d||(o+="/"),o+=g.value.replace(Xu,"\\$&"),m+=Le.Static;else if(g.type===Kt.Param){const{value:_,repeatable:y,optional:T,regexp:P}=g;r.push({name:_,repeatable:y,optional:T});const R=P||Pr;if(R!==Pr){m+=Le.BonusCustomRegExp;try{`${R}`}catch(b){throw new Error(`Invalid custom RegExp for param "${_}" (${R}): `+b.message)}}let A=y?`((?:${R})(?:/(?:${R}))*)`:`(${R})`;d||(A=T&&u.length<2?`(?:/${A})`:"/"+A),T&&(A+="?"),o+=A,m+=Le.Dynamic,T&&(m+=Le.BonusOptional),y&&(m+=Le.BonusRepeatable),R===".*"&&(m+=Le.BonusWildcard)}f.push(m)}s.push(f)}if(n.strict&&n.end){const u=s.length-1;s[u][s[u].length-1]+=Le.BonusStrict}n.strict||(o+="/?"),n.end?o+="$":n.strict&&!o.endsWith("/")&&(o+="(?:/|$)");const l=new RegExp(o,n.sensitive?"":"i");function i(u){const f=u.match(l),d={};if(!f)return null;for(let g=1;g<f.length;g++){const m=f[g]||"",_=r[g-1];d[_.name]=m&&_.repeatable?m.split("/"):m}return d}function a(u){let f="",d=!1;for(const g of e){(!d||!f.endsWith("/"))&&(f+="/"),d=!1;for(const m of g)if(m.type===Kt.Static)f+=m.value;else if(m.type===Kt.Param){const{value:_,repeatable:y,optional:T}=m,P=_ in u?u[_]:"";if(et(P)&&!y)throw new Error(`Provided param "${_}" is an array but it is not repeatable (* or + modifiers)`);const R=et(P)?P.join("/"):P;if(!R)if(T)g.length<2&&(f.endsWith("/")?f=f.slice(0,-1):d=!0);else throw new Error(`Missing required param "${_}"`);f+=R}}return f||"/"}return{re:l,score:s,keys:r,parse:i,stringify:a}}function ef(e,t){let n=0;for(;n<e.length&&n<t.length;){const s=t[n]-e[n];if(s)return s;n++}return e.length<t.length?e.length===1&&e[0]===Le.Static+Le.Segment?-1:1:e.length>t.length?t.length===1&&t[0]===Le.Static+Le.Segment?1:-1:0}function mi(e,t){let n=0;const s=e.score,o=t.score;for(;n<s.length&&n<o.length;){const r=ef(s[n],o[n]);if(r)return r;n++}if(Math.abs(o.length-s.length)===1){if(Or(s))return 1;if(Or(o))return-1}return o.length-s.length}function Or(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const tf={strict:!1,end:!0,sensitive:!1};function nf(e,t,n){const s=Zu(Qu(e.path),n),o=ae(s,{record:e,parent:t,children:[],alias:[]});return t&&!o.record.aliasOf==!t.record.aliasOf&&t.children.push(o),o}function sf(e,t){const n=[],s=new Map;t=xr(tf,t);function o(d){return s.get(d)}function r(d,g,m){const _=!m,y=Nr(d);y.aliasOf=m&&m.record;const T=xr(t,d),P=[y];if("alias"in d){const b=typeof d.alias=="string"?[d.alias]:d.alias;for(const I of b)P.push(Nr(ae({},y,{components:m?m.record.components:y.components,path:I,aliasOf:m?m.record:y})))}let R,A;for(const b of P){const{path:I}=b;if(g&&I[0]!=="/"){const J=g.record.path,j=J[J.length-1]==="/"?"":"/";b.path=g.record.path+(I&&j+I)}if(R=nf(b,g,T),m?m.alias.push(R):(A=A||R,A!==R&&A.alias.push(R),_&&d.name&&!Ir(R)&&l(d.name)),vi(R)&&a(R),y.children){const J=y.children;for(let j=0;j<J.length;j++)r(J[j],R,m&&m.children[j])}m=m||R}return A?()=>{l(A)}:On}function l(d){if(di(d)){const g=s.get(d);g&&(s.delete(d),n.splice(n.indexOf(g),1),g.children.forEach(l),g.alias.forEach(l))}else{const g=n.indexOf(d);g>-1&&(n.splice(g,1),d.record.name&&s.delete(d.record.name),d.children.forEach(l),d.alias.forEach(l))}}function i(){return n}function a(d){const g=lf(d,n);n.splice(g,0,d),d.record.name&&!Ir(d)&&s.set(d.record.name,d)}function u(d,g){let m,_={},y,T;if("name"in d&&d.name){if(m=s.get(d.name),!m)throw dn(we.MATCHER_NOT_FOUND,{location:d});T=m.record.name,_=ae(kr(g.params,m.keys.filter(A=>!A.optional).concat(m.parent?m.parent.keys.filter(A=>A.optional):[]).map(A=>A.name)),d.params&&kr(d.params,m.keys.map(A=>A.name))),y=m.stringify(_)}else if(d.path!=null)y=d.path,m=n.find(A=>A.re.test(y)),m&&(_=m.parse(y),T=m.record.name);else{if(m=g.name?s.get(g.name):n.find(A=>A.re.test(g.path)),!m)throw dn(we.MATCHER_NOT_FOUND,{location:d,currentLocation:g});T=m.record.name,_=ae({},g.params,d.params),y=m.stringify(_)}const P=[];let R=m;for(;R;)P.unshift(R.record),R=R.parent;return{name:T,path:y,params:_,matched:P,meta:rf(P)}}e.forEach(d=>r(d));function f(){n.length=0,s.clear()}return{addRoute:r,resolve:u,removeRoute:l,clearRoutes:f,getRoutes:i,getRecordMatcher:o}}function kr(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function Nr(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:of(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function of(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function Ir(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function rf(e){return e.reduce((t,n)=>ae(t,n.meta),{})}function lf(e,t){let n=0,s=t.length;for(;n!==s;){const r=n+s>>1;mi(e,t[r])<0?s=r:n=r+1}const o=af(e);return o&&(s=t.lastIndexOf(o,s-1)),s}function af(e){let t=e;for(;t=t.parent;)if(vi(t)&&mi(e,t)===0)return t}function vi({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Mr(e){const t=qe(As),n=qe(To),s=Se(()=>{const a=ft(e.to);return t.resolve(a)}),o=Se(()=>{const{matched:a}=s.value,{length:u}=a,f=a[u-1],d=n.matched;if(!f||!d.length)return-1;const g=d.findIndex(fn.bind(null,f));if(g>-1)return g;const m=$r(a[u-2]);return u>1&&$r(f)===m&&d[d.length-1].path!==m?d.findIndex(fn.bind(null,a[u-2])):g}),r=Se(()=>o.value>-1&&pf(n.params,s.value.params)),l=Se(()=>o.value>-1&&o.value===n.matched.length-1&&fi(n.params,s.value.params));function i(a={}){if(df(a)){const u=t[ft(e.replace)?"replace":"push"](ft(e.to)).catch(On);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>u),u}return Promise.resolve()}return{route:s,href:Se(()=>s.value.href),isActive:r,isExactActive:l,navigate:i}}function cf(e){return e.length===1?e[0]:e}const uf=wl({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Mr,setup(e,{slots:t}){const n=hn(Mr(e)),{options:s}=qe(As),o=Se(()=>({[Lr(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Lr(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const r=t.default&&cf(t.default(n));return e.custom?r:Yl("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},r)}}}),ff=uf;function df(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function pf(e,t){for(const n in t){const s=t[n],o=e[n];if(typeof s=="string"){if(s!==o)return!1}else if(!et(o)||o.length!==s.length||s.some((r,l)=>r.valueOf()!==o[l].valueOf()))return!1}return!0}function $r(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Lr=(e,t,n)=>e??t??n,hf=wl({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=qe(lo),o=Se(()=>e.route||s.value),r=qe(Tr,0),l=Se(()=>{let u=ft(r);const{matched:f}=o.value;let d;for(;(d=f[u])&&!d.components;)u++;return u}),i=Se(()=>o.value.matched[l.value]);Qn(Tr,Se(()=>l.value+1)),Qn(hi,i),Qn(lo,o);const a=ee();return rn(()=>[a.value,i.value,e.name],([u,f,d],[g,m,_])=>{f&&(f.instances[d]=u,m&&m!==f&&u&&u===g&&(f.leaveGuards.size||(f.leaveGuards=m.leaveGuards),f.updateGuards.size||(f.updateGuards=m.updateGuards))),u&&f&&(!m||!fn(f,m)||!g)&&(f.enterCallbacks[d]||[]).forEach(y=>y(u))},{flush:"post"}),()=>{const u=o.value,f=e.name,d=i.value,g=d&&d.components[f];if(!g)return Dr(n.default,{Component:g,route:u});const m=d.props[f],_=m?m===!0?u.params:typeof m=="function"?m(u):m:null,T=Yl(g,ae({},_,t,{onVnodeUnmounted:P=>{P.component.isUnmounted&&(d.instances[f]=null)},ref:a}));return Dr(n.default,{Component:T,route:u})||T}}});function Dr(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const gf=hf;function mf(e){const t=sf(e.routes,e),n=e.parseQuery||Uu,s=e.stringifyQuery||Ar,o=e.history,r=_n(),l=_n(),i=_n(),a=la(Pt);let u=Pt;tn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const f=Ds.bind(null,C=>""+C),d=Ds.bind(null,xu),g=Ds.bind(null,Un);function m(C,B){let $,K;return di(C)?($=t.getRecordMatcher(C),K=B):K=C,t.addRoute(K,$)}function _(C){const B=t.getRecordMatcher(C);B&&t.removeRoute(B)}function y(){return t.getRoutes().map(C=>C.record)}function T(C){return!!t.getRecordMatcher(C)}function P(C,B){if(B=ae({},B||a.value),typeof C=="string"){const v=Vs(n,C,B.path),w=t.resolve({path:v.path},B),S=o.createHref(v.fullPath);return ae(v,w,{params:g(w.params),hash:Un(v.hash),redirectedFrom:void 0,href:S})}let $;if(C.path!=null)$=ae({},C,{path:Vs(n,C.path,B.path).path});else{const v=ae({},C.params);for(const w in v)v[w]==null&&delete v[w];$=ae({},C,{params:d(v)}),B.params=d(B.params)}const K=t.resolve($,B),oe=C.hash||"";K.params=f(g(K.params));const p=Eu(s,ae({},C,{hash:_u(oe),path:K.path})),h=o.createHref(p);return ae({fullPath:p,hash:oe,query:s===Ar?Bu(C.query):C.query||{}},K,{redirectedFrom:void 0,href:h})}function R(C){return typeof C=="string"?Vs(n,C,a.value.path):ae({},C)}function A(C,B){if(u!==C)return dn(we.NAVIGATION_CANCELLED,{from:B,to:C})}function b(C){return j(C)}function I(C){return b(ae(R(C),{replace:!0}))}function J(C,B){const $=C.matched[C.matched.length-1];if($&&$.redirect){const{redirect:K}=$;let oe=typeof K=="function"?K(C,B):K;return typeof oe=="string"&&(oe=oe.includes("?")||oe.includes("#")?oe=R(oe):{path:oe},oe.params={}),ae({query:C.query,hash:C.hash,params:oe.path!=null?{}:C.params},oe)}}function j(C,B){const $=u=P(C),K=a.value,oe=C.state,p=C.force,h=C.replace===!0,v=J($,K);if(v)return j(ae(R(v),{state:typeof v=="object"?ae({},oe,v.state):oe,force:p,replace:h}),B||$);const w=$;w.redirectedFrom=B;let S;return!p&&Au(s,K,$)&&(S=dn(we.NAVIGATION_DUPLICATED,{to:w,from:K}),tt(K,K,!0,!1)),(S?Promise.resolve(S):X(w,K)).catch(x=>gt(x)?gt(x,we.NAVIGATION_GUARD_REDIRECT)?x:Tt(x):ne(x,w,K)).then(x=>{if(x){if(gt(x,we.NAVIGATION_GUARD_REDIRECT))return j(ae({replace:h},R(x.to),{state:typeof x.to=="object"?ae({},oe,x.to.state):oe,force:p}),B||w)}else x=L(w,K,!0,h,oe);return te(w,K,x),x})}function le(C,B){const $=A(C,B);return $?Promise.reject($):Promise.resolve()}function V(C){const B=Yt.values().next().value;return B&&typeof B.runWithContext=="function"?B.runWithContext(C):C()}function X(C,B){let $;const[K,oe,p]=ju(C,B);$=Bs(K.reverse(),"beforeRouteLeave",C,B);for(const v of K)v.leaveGuards.forEach(w=>{$.push(Mt(w,C,B))});const h=le.bind(null,C,B);return $.push(h),Ke($).then(()=>{$=[];for(const v of r.list())$.push(Mt(v,C,B));return $.push(h),Ke($)}).then(()=>{$=Bs(oe,"beforeRouteUpdate",C,B);for(const v of oe)v.updateGuards.forEach(w=>{$.push(Mt(w,C,B))});return $.push(h),Ke($)}).then(()=>{$=[];for(const v of p)if(v.beforeEnter)if(et(v.beforeEnter))for(const w of v.beforeEnter)$.push(Mt(w,C,B));else $.push(Mt(v.beforeEnter,C,B));return $.push(h),Ke($)}).then(()=>(C.matched.forEach(v=>v.enterCallbacks={}),$=Bs(p,"beforeRouteEnter",C,B,V),$.push(h),Ke($))).then(()=>{$=[];for(const v of l.list())$.push(Mt(v,C,B));return $.push(h),Ke($)}).catch(v=>gt(v,we.NAVIGATION_CANCELLED)?v:Promise.reject(v))}function te(C,B,$){i.list().forEach(K=>V(()=>K(C,B,$)))}function L(C,B,$,K,oe){const p=A(C,B);if(p)return p;const h=B===Pt,v=tn?history.state:{};$&&(K||h?o.replace(C.fullPath,ae({scroll:h&&v&&v.scroll},oe)):o.push(C.fullPath,oe)),a.value=C,tt(C,B,$,h),Tt()}let se;function Ce(){se||(se=o.listen((C,B,$)=>{if(!Bt.listening)return;const K=P(C),oe=J(K,Bt.currentRoute.value);if(oe){j(ae(oe,{replace:!0,force:!0}),K).catch(On);return}u=K;const p=a.value;tn&&Mu(Er(p.fullPath,$.delta),Es()),X(K,p).catch(h=>gt(h,we.NAVIGATION_ABORTED|we.NAVIGATION_CANCELLED)?h:gt(h,we.NAVIGATION_GUARD_REDIRECT)?(j(ae(R(h.to),{force:!0}),K).then(v=>{gt(v,we.NAVIGATION_ABORTED|we.NAVIGATION_DUPLICATED)&&!$.delta&&$.type===oo.pop&&o.go(-1,!1)}).catch(On),Promise.reject()):($.delta&&o.go(-$.delta,!1),ne(h,K,p))).then(h=>{h=h||L(K,p,!1),h&&($.delta&&!gt(h,we.NAVIGATION_CANCELLED)?o.go(-$.delta,!1):$.type===oo.pop&>(h,we.NAVIGATION_ABORTED|we.NAVIGATION_DUPLICATED)&&o.go(-1,!1)),te(K,p,h)}).catch(On)}))}let G=_n(),k=_n(),U;function ne(C,B,$){Tt(C);const K=k.list();return K.length?K.forEach(oe=>oe(C,B,$)):console.error(C),Promise.reject(C)}function pt(){return U&&a.value!==Pt?Promise.resolve():new Promise((C,B)=>{G.add([C,B])})}function Tt(C){return U||(U=!C,Ce(),G.list().forEach(([B,$])=>C?$(C):B()),G.reset()),C}function tt(C,B,$,K){const{scrollBehavior:oe}=e;if(!tn||!oe)return Promise.resolve();const p=!$&&$u(Er(C.fullPath,0))||(K||!$)&&history.state&&history.state.scroll||null;return bo().then(()=>oe(C,B,p)).then(h=>h&&Iu(h)).catch(h=>ne(h,C,B))}const Ve=C=>o.go(C);let Qt;const Yt=new Set,Bt={currentRoute:a,listening:!0,addRoute:m,removeRoute:_,clearRoutes:t.clearRoutes,hasRoute:T,getRoutes:y,resolve:P,options:e,push:b,replace:I,go:Ve,back:()=>Ve(-1),forward:()=>Ve(1),beforeEach:r.add,beforeResolve:l.add,afterEach:i.add,onError:k.add,isReady:pt,install(C){C.component("RouterLink",ff),C.component("RouterView",gf),C.config.globalProperties.$router=Bt,Object.defineProperty(C.config.globalProperties,"$route",{enumerable:!0,get:()=>ft(a)}),tn&&!Qt&&a.value===Pt&&(Qt=!0,b(o.location).catch(K=>{}));const B={};for(const K in Pt)Object.defineProperty(B,K,{get:()=>a.value[K],enumerable:!0});C.provide(As,Bt),C.provide(To,al(B)),C.provide(lo,a);const $=C.unmount;Yt.add(C),C.unmount=function(){Yt.delete(C),Yt.size<1&&(u=Pt,se&&se(),se=null,a.value=Pt,Qt=!1,U=!1),$()}}};function Ke(C){return C.reduce((B,$)=>B.then(()=>V($)),Promise.resolve())}return Bt}function jn(){return qe(As)}function yi(e){return qe(To)}const Pe=hn({mode:null,user:null,remoteBaseUrl:"",token:""});function Ro(){return ts(Pe)}function Po(e){Pe.mode=e,typeof localStorage<"u"&&localStorage.setItem("pac_proxy_mode",e)}function _i(){if(typeof localStorage<"u"){const e=localStorage.getItem("pac_proxy_mode");(e==="local"||e==="remote")&&(Pe.mode=e);const t=localStorage.getItem("pac_proxy_token");t&&(Pe.token=t);const n=localStorage.getItem("pac_proxy_remote_base_url");if(n&&typeof n=="string"&&(Pe.remoteBaseUrl=n),Pe.mode==="remote"&&Pe.token)try{const s=JSON.parse(atob(Pe.token.split(".")[1]));Pe.user={username:s.username}}catch{}}return Pe.mode}function bi(e){Pe.user=e}function wi(e){Pe.remoteBaseUrl=e||"",typeof localStorage<"u"&&(e?localStorage.setItem("pac_proxy_remote_base_url",e):localStorage.removeItem("pac_proxy_remote_base_url"))}function xi(e){Pe.token=e,typeof localStorage<"u"&&(e?localStorage.setItem("pac_proxy_token",e):localStorage.removeItem("pac_proxy_token"))}function vf(){return Pe.token||typeof localStorage<"u"&&localStorage.getItem("pac_proxy_token")}function yf(){Pe.token="",Pe.user=null,Pe.remoteBaseUrl="",Pe.mode=null,typeof localStorage<"u"&&(localStorage.removeItem("pac_proxy_token"),localStorage.removeItem("pac_proxy_mode"),localStorage.removeItem("pac_proxy_remote_base_url"))}const _f=()=>{const e=vf(),t={"Content-Type":"application/json"};return e&&(t.Authorization="Bearer "+e),t};async function de(e,t={}){const n=await fetch("/api/local"+e,{...t,headers:{"Content-Type":"application/json",...t.headers}});if(!n.ok)throw new Error((await n.json().catch(()=>({}))).error||n.statusText);return n.json()}async function Hs(e,t,n={}){const s=(e||"").trim().replace(/\/$/,"");if(!s)throw new Error("未配置远程服务器地址。请在 packages/node-cli/.env 中配置 REMOTE_SERVER_URL(填 node-server 的地址,例如 http://127.0.0.1:3000),重启 node-cli 后重新登录。");const o=s+"/api"+t,r=await fetch(o,{...n,headers:{..._f(),...n.headers}});if(!r.ok)throw new Error((await r.json().catch(()=>({}))).error||r.statusText);return r.json()}function Ci(e,t){const n={getProxy:()=>de("/proxy"),setProxy:s=>de("/proxy",{method:"PUT",body:JSON.stringify(s)})};return e==="local"?{...n,getPacRules:()=>de("/pac-rules"),setPacRules:s=>de("/pac-rules",{method:"PUT",body:JSON.stringify(s)}),getConfig:()=>de("/config")}:{...n,getPacRules:()=>Hs(t,"/pac-rules"),setPacRules:async s=>{await Hs(t,"/pac-rules",{method:"PUT",body:JSON.stringify(s)}),await de("/pac-rules",{method:"PUT",body:JSON.stringify(s)})},getConfig:()=>Hs(t,"/config")}}const Lt=hn([]);let Si=0;function bf(){return Lt}function _e(e,t="success",n=2500){const s=++Si;Lt.push({id:s,msg:e,type:t}),setTimeout(()=>{const o=Lt.findIndex(r=>r.id===s);o>=0&&Lt.splice(o,1)},n)}function Vr(e){return new Promise(t=>{const n=++Si;Lt.push({id:n,msg:e,type:"confirm",resolve:t})})}function Ur(e,t){const n=Lt.findIndex(s=>s.id===e);n>=0&&(Lt[n].resolve(t),Lt.splice(n,1))}const At=(e,t)=>{const n=e.__vccOpts||e;for(const[s,o]of t)n[s]=o;return n},wf={class:"toast-container"},xf={key:0,class:"toast-confirm-mask"},Cf={class:"toast-confirm"},Sf={class:"toast-confirm-msg"},Ef={class:"toast-confirm-actions"},Af=["onClick"],Tf=["onClick"],Rf={class:"toast-icon"},Pf={key:0,viewBox:"0 0 20 20",fill:"currentColor"},Of={key:1,viewBox:"0 0 20 20",fill:"currentColor"},kf={key:2,viewBox:"0 0 20 20",fill:"currentColor"},Nf={class:"toast-msg"},If={__name:"Toast",setup(e){const t=bf();return(n,s)=>(H(),Wl(wa,{to:"body"},[c("div",wf,[ve(Wc,{name:"toast"},{default:ct(()=>[(H(!0),F(Ee,null,Ln(ft(t),o=>(H(),F(Ee,{key:o.id},[o.type==="confirm"?(H(),F("div",xf,[c("div",Cf,[c("p",Sf,z(o.msg),1),c("div",Ef,[c("button",{class:"tc-btn cancel",onClick:r=>ft(Ur)(o.id,!1)},"取消",8,Af),c("button",{class:"tc-btn ok",onClick:r=>ft(Ur)(o.id,!0)},"确定",8,Tf)])])])):(H(),F("div",{key:1,class:be(["toast",o.type])},[c("span",Rf,[o.type==="success"?(H(),F("svg",Pf,[...s[0]||(s[0]=[c("path",{"fill-rule":"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z","clip-rule":"evenodd"},null,-1)])])):o.type==="error"?(H(),F("svg",Of,[...s[1]||(s[1]=[c("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z","clip-rule":"evenodd"},null,-1)])])):(H(),F("svg",kf,[...s[2]||(s[2]=[c("path",{"fill-rule":"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z","clip-rule":"evenodd"},null,-1)])]))]),c("span",Nf,z(o.msg),1)],2))],64))),128))]),_:1})])]))}},Mf=At(If,[["__scopeId","data-v-5cf00320"]]),$f={class:"app-layout"},Lf={key:0,class:"sidebar"},Df={class:"side-nav"},Vf={class:"sidebar-footer"},Uf={key:0,class:"topbar"},Bf={class:"topbar-left"},Hf={class:"page-title"},Ff={key:0,class:"topbar-right"},jf={class:"username"},Gf={class:"main"},Kf={__name:"App",setup(e){const t=yi(),n=jn(),s=Ro(),o=Se(()=>s.mode||"local"),r=Se(()=>o.value==="remote"),l=Se(()=>s.user),i=Se(()=>o.value==="local"?"本地模式":"远程模式"),a=Se(()=>t.path!=="/"),u=Se(()=>t.path!=="/"&&!t.path.startsWith("/login")&&!t.path.startsWith("/register")),f=Se(()=>t.path==="/"||t.path.startsWith("/login")||t.path.startsWith("/register")),d={"/console/proxy":"代理设置","/console/shadowsocks":"Shadowsocks","/console/pac-rules":"PAC 规则","/console/traffic":"流量记录"},g=Se(()=>d[t.path]||"");async function m(){try{const _=await de("/config");await de("/config",{method:"PUT",body:JSON.stringify({..._,mode:"local"})})}catch{}yf(),n.push("/")}return(_,y)=>{const T=$n("router-link"),P=$n("router-view");return H(),F(Ee,null,[c("div",$f,[u.value?(H(),F("aside",Lf,[y[5]||(y[5]=c("div",{class:"sidebar-logo"},[c("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[c("circle",{cx:"12",cy:"12",r:"10"}),c("path",{d:"M12 8v4l3 3"})]),c("span",null,"PAC Proxy")],-1)),c("nav",Df,[ve(T,{to:"/console/proxy","active-class":"active"},{default:ct(()=>[...y[0]||(y[0]=[c("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[c("rect",{x:"2",y:"3",width:"20",height:"14",rx:"2"}),c("path",{d:"M8 21h8M12 17v4"})],-1),he(" 代理设置 ",-1)])]),_:1}),ve(T,{to:"/console/shadowsocks","active-class":"active"},{default:ct(()=>[...y[1]||(y[1]=[c("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[c("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2"}),c("path",{d:"M7 11V7a5 5 0 0110 0v4"})],-1),he(" Shadowsocks ",-1)])]),_:1}),ve(T,{to:"/console/pac-rules","active-class":"active"},{default:ct(()=>[...y[2]||(y[2]=[c("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[c("path",{d:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2"}),c("rect",{x:"9",y:"3",width:"6",height:"4",rx:"1"}),c("path",{d:"M9 12h6M9 16h4"})],-1),he(" PAC 规则 ",-1)])]),_:1}),ve(T,{to:"/console/traffic","active-class":"active"},{default:ct(()=>[...y[3]||(y[3]=[c("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[c("path",{d:"M22 12h-4l-3 9L9 3l-3 9H2"})],-1),he(" 流量记录 ",-1)])]),_:1})]),c("div",Vf,[c("span",{class:be(["mode-badge",o.value])},z(i.value),3),ve(T,{to:"/",class:"switch-mode-link"},{default:ct(()=>[...y[4]||(y[4]=[he("切换模式",-1)])]),_:1})])])):ye("",!0),c("div",{class:be(["content-wrap",{"content-standalone":f.value}])},[a.value?(H(),F("header",Uf,[c("div",Bf,[c("span",Hf,z(g.value),1)]),r.value&&l.value?(H(),F("div",Ff,[c("span",jf,z(l.value.username),1),c("button",{type:"button",class:"logout-btn",onClick:m},"退出登录")])):ye("",!0)])):ye("",!0),c("main",Gf,[ve(P)])],2)]),ve(Mf)],64)}}},Wf=At(Kf,[["__scopeId","data-v-ee1bb6ce"]]),zf={class:"mode-select"},qf={class:"card"},Jf={class:"options"},Qf={__name:"ModeSelect",setup(e){const t=jn();async function n(s){if(Po(s),s==="local"){try{const o=await de("/config");await de("/config",{method:"PUT",body:JSON.stringify({...o,mode:"local"})})}catch{}t.push("/console")}else t.push("/login")}return(s,o)=>(H(),F("div",zf,[c("div",qf,[o[4]||(o[4]=c("h1",null,"选择运行模式",-1)),o[5]||(o[5]=c("p",{class:"desc"},"请选择控制台使用方式,选择后可随时在设置中切换。",-1)),c("div",Jf,[c("button",{class:"option local",onClick:o[0]||(o[0]=r=>n("local"))},[...o[2]||(o[2]=[c("span",{class:"title"},"本地模式",-1),c("span",{class:"sub"},"无需登录,配置保存在本机,由 node-cli 维护",-1)])]),c("button",{class:"option remote",onClick:o[1]||(o[1]=r=>n("remote"))},[...o[3]||(o[3]=[c("span",{class:"title"},"远程模式",-1),c("span",{class:"sub"},"需注册/登录,配置与数据保存在云端",-1)])])])])]))}},Yf=At(Qf,[["__scopeId","data-v-b465f762"]]),Xf={class:"auth-page"},Zf={class:"card"},ed={class:"field"},td={class:"field"},nd={key:0,class:"error"},sd=["disabled"],od={class:"footer"},rd={__name:"Login",setup(e){const t=jn(),n=ee(""),s=ee(""),o=ee(""),r=ee(""),l=ee(!1);Ut(async()=>{try{const a=await fetch("/api/local/remote-server-url"),{url:u}=await a.json();n.value=u||""}catch{n.value=""}});async function i(){if(r.value="",!n.value){r.value="请在 node-cli 目录下的 .env 中配置 REMOTE_SERVER_URL";return}l.value=!0;try{const a=n.value.replace(/\/$/,""),u=await fetch(a+"/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:s.value,password:o.value})}),f=await u.json().catch(()=>({}));if(!u.ok)throw new Error(f.error||"登录失败");Po("remote"),wi(a),xi(f.token),bi(f.user||{username:s.value});try{const d=await de("/config");await de("/config",{method:"PUT",body:JSON.stringify({...d,mode:"remote"})});const g=await fetch(a+"/api/pac-rules",{headers:{Authorization:"Bearer "+f.token}}).then(m=>m.json()).catch(()=>[]);Array.isArray(g)&&await de("/pac-rules",{method:"PUT",body:JSON.stringify(g)})}catch{}t.push("/console")}catch(a){r.value=a.message}finally{l.value=!1}}return(a,u)=>{const f=$n("router-link");return H(),F("div",Xf,[c("div",Zf,[u[6]||(u[6]=c("h1",null,"登录",-1)),u[7]||(u[7]=c("p",{class:"desc"},"远程模式需登录后使用云端配置。",-1)),c("form",{onSubmit:Ss(i,["prevent"]),class:"form"},[c("div",ed,[u[2]||(u[2]=c("label",null,"用户名",-1)),Ae(c("input",{"onUpdate:modelValue":u[0]||(u[0]=d=>s.value=d),type:"text",required:""},null,512),[[Oe,s.value]])]),c("div",td,[u[3]||(u[3]=c("label",null,"密码",-1)),Ae(c("input",{"onUpdate:modelValue":u[1]||(u[1]=d=>o.value=d),type:"password",required:""},null,512),[[Oe,o.value]])]),r.value?(H(),F("p",nd,z(r.value),1)):ye("",!0),c("button",{type:"submit",class:"btn primary",disabled:l.value},"登录",8,sd)],32),c("p",od,[u[5]||(u[5]=he("还没有账号? ",-1)),ve(f,{to:"/register"},{default:ct(()=>[...u[4]||(u[4]=[he("注册",-1)])]),_:1})])])])}}},ld=At(rd,[["__scopeId","data-v-d4d57b91"]]),id={class:"auth-page"},ad={class:"card"},cd={class:"field"},ud={class:"field"},fd={key:0,class:"error"},dd={key:1,class:"success"},pd=["disabled"],hd={class:"footer"},gd={__name:"Register",setup(e){const t=jn(),n=ee(""),s=ee(""),o=ee(""),r=ee(""),l=ee(""),i=ee(!1);Ut(async()=>{try{const u=await fetch("/api/local/remote-server-url"),{url:f}=await u.json();n.value=f||""}catch{n.value=""}});async function a(){if(r.value="",l.value="",!n.value){r.value="请在 node-cli 目录下的 .env 中配置 REMOTE_SERVER_URL";return}i.value=!0;try{const u=n.value.replace(/\/$/,""),f=await fetch(u+"/api/auth/register",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:s.value,password:o.value})}),d=await f.json().catch(()=>({}));if(!f.ok)throw new Error(d.error||"注册失败");l.value="注册成功,正在自动登录…";const g=await fetch(u+"/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:s.value,password:o.value})}),m=await g.json().catch(()=>({}));if(!g.ok)throw new Error(m.error||"自动登录失败");Po("remote"),wi(u),xi(m.token),bi(m.user||{username:s.value}),l.value="注册成功,已自动登录";try{const _=await de("/config");await de("/config",{method:"PUT",body:JSON.stringify({..._,mode:"remote"})});const y=await fetch(u+"/api/pac-rules",{headers:{Authorization:"Bearer "+m.token}}).then(T=>T.json()).catch(()=>[]);Array.isArray(y)&&await de("/pac-rules",{method:"PUT",body:JSON.stringify(y)})}catch{}t.push("/console")}catch(u){r.value=u.message}finally{i.value=!1}}return(u,f)=>{const d=$n("router-link");return H(),F("div",id,[c("div",ad,[f[6]||(f[6]=c("h1",null,"注册",-1)),f[7]||(f[7]=c("p",{class:"desc"},"注册后可在远程模式下同步配置。",-1)),c("form",{onSubmit:Ss(a,["prevent"]),class:"form"},[c("div",cd,[f[2]||(f[2]=c("label",null,"用户名",-1)),Ae(c("input",{"onUpdate:modelValue":f[0]||(f[0]=g=>s.value=g),type:"text",required:""},null,512),[[Oe,s.value]])]),c("div",ud,[f[3]||(f[3]=c("label",null,"密码",-1)),Ae(c("input",{"onUpdate:modelValue":f[1]||(f[1]=g=>o.value=g),type:"password",required:""},null,512),[[Oe,o.value]])]),r.value?(H(),F("p",fd,z(r.value),1)):ye("",!0),l.value?(H(),F("p",dd,z(l.value),1)):ye("",!0),c("button",{type:"submit",class:"btn primary",disabled:i.value},"注册",8,pd)],32),c("p",hd,[f[5]||(f[5]=he("已有账号? ",-1)),ve(d,{to:"/login"},{default:ct(()=>[...f[4]||(f[4]=[he("登录",-1)])]),_:1})])])])}}},md=At(gd,[["__scopeId","data-v-a1c8458c"]]),vd={class:"proxy-settings"},yd={class:"card"},_d={class:"mode-cards"},bd=["onClick","disabled"],wd=["innerHTML"],xd={class:"mode-label"},Cd={class:"mode-desc"},Sd={key:0,class:"ca-download"},Ed={class:"card"},Ad={class:"field"},Td={key:0,class:"upstream-managed"},Rd={class:"row"},Pd={class:"field"},Od={class:"field"},kd={class:"actions"},Nd=["disabled"],Id={key:0,class:"btn-spinner"},Md={key:0,class:"card status-card"},$d={class:"status-line"},Ld={key:0,class:"status-port"},Dd={key:0,class:"hint"},Vd={key:1,class:"hint error"},Ud={key:2,class:"hint"},Bd={key:3,class:"hint"},Hd="/api/local/ca-cert",Fd={__name:"ProxySettings",setup(e){const t=Ro();jn();function n(){return Ci(t.mode,t.remoteBaseUrl)}const s=ee(!1),o=ee(1080),r=[{key:"global",label:"全局代理",desc:"所有流量走上游代理",icon:'<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM4.332 8.027a6.012 6.012 0 011.912-2.706C6.512 5.73 6.974 6 7.5 6A1.5 1.5 0 019 7.5V8a2 2 0 004 0 2 2 0 011.523-1.943A5.977 5.977 0 0116 10c0 .34-.028.675-.083 1H15a2 2 0 00-2 2v2.197A5.973 5.973 0 0110 16v-2a2 2 0 00-2-2 2 2 0 01-2-2 2 2 0 00-1.668-1.973z" clip-rule="evenodd"/></svg>'},{key:"pac",label:"PAC 代理",desc:"按规则智能分流",icon:'<svg viewBox="0 0 20 20" fill="currentColor"><path d="M5 3a2 2 0 00-2 2v2a2 2 0 002 2h2a2 2 0 002-2V5a2 2 0 00-2-2H5zM5 11a2 2 0 00-2 2v2a2 2 0 002 2h2a2 2 0 002-2v-2a2 2 0 00-2-2H5zM11 5a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V5zM14 11a1 1 0 011 1v1h1a1 1 0 110 2h-1v1a1 1 0 11-2 0v-1h-1a1 1 0 110-2h1v-1a1 1 0 011-1z"/></svg>'},{key:"mitm",label:"抓包代理",desc:"解密 HTTPS 流量",icon:'<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" clip-rule="evenodd"/></svg>'},{key:"clear",label:"清除代理",desc:"恢复直连",icon:'<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"/></svg>'}],l=ee({enabled:!1,mode:"pac",upstream:"socks5://127.0.0.1:1080",httpPort:5175,httpsPort:5176,applySystemProxy:!0}),i=ee(!1),a=ee(null);async function u(){try{const m=await fetch("/api/local/proxy-status");a.value=await m.json()}catch{a.value={running:!1,port:null}}}function f(){return{enabled:!!l.value.enabled,mode:l.value.mode||"pac",upstream:String(l.value.upstream??"").trim()||"socks5://127.0.0.1:1080",httpPort:Number(l.value.httpPort)||5175,httpsPort:Number(l.value.httpsPort)||5176,applySystemProxy:l.value.applySystemProxy!==!1}}async function d(m){if(!i.value){m==="clear"?(l.value.enabled=!1,l.value.applySystemProxy=!0):(l.value.enabled=!0,l.value.mode=m,l.value.applySystemProxy=!0),i.value=!0;try{const _=f();if(await de("/proxy",{method:"PUT",body:JSON.stringify(_)}),t.mode==="remote")try{const T=await n().getPacRules();await de("/pac-rules",{method:"PUT",body:JSON.stringify(T)})}catch{}await u(),_e(m==="clear"?"已清除系统代理设置":`已切换至${{global:"全局代理",pac:"PAC 代理",mitm:"抓包代理",clear:"已清除代理"}[m]}`,"success")}catch(_){_e("操作失败:"+_.message,"error")}finally{i.value=!1}}}Ut(async()=>{try{const[m,_]=await Promise.all([de("/proxy"),fetch("/api/local/sslocal").then(y=>y.json()).catch(()=>({}))]);if(l.value={...l.value,...m},s.value=_.enabled===!0,o.value=_.localPort||1080,t.mode==="remote")try{const y=await n().getPacRules();await de("/pac-rules",{method:"PUT",body:JSON.stringify(y)})}catch{}await u()}catch{}});async function g(){i.value=!0;try{const m=f();if(await de("/proxy",{method:"PUT",body:JSON.stringify(m)}),t.mode==="remote")try{const _=await n().getPacRules();await de("/pac-rules",{method:"PUT",body:JSON.stringify(_)})}catch{}await u(),_e("设置已保存","success")}catch(m){_e("保存失败:"+m.message,"error")}finally{i.value=!1}}return(m,_)=>{const y=$n("router-link");return H(),F("div",vd,[c("div",yd,[_[5]||(_[5]=c("h3",null,"代理模式",-1)),_[6]||(_[6]=c("p",{class:"desc"},"一键设置本机系统代理(支持 macOS、Windows、Linux GNOME)。",-1)),c("div",_d,[(H(),F(Ee,null,Ln(r,T=>c("button",{key:T.key,class:be(["mode-card",{active:l.value.enabled&&l.value.mode===T.key,clear:T.key==="clear","active-clear":!l.value.enabled&&T.key==="clear"}]),onClick:P=>d(T.key),disabled:i.value,type:"button"},[c("span",{class:"mode-icon",innerHTML:T.icon},null,8,wd),c("span",xd,z(T.label),1),c("span",Cd,z(T.desc),1)],10,bd)),64))]),l.value.enabled&&l.value.mode==="mitm"?(H(),F("div",Sd,[_[3]||(_[3]=c("span",{class:"ca-label"},"CA 证书(用于解密 HTTPS,需安装到系统/浏览器信任):",-1)),c("a",{class:"btn btn-ca",href:Hd,download:"pac-proxy-ca.crt",target:"_blank",rel:"noopener"},"下载 CA 证书"),_[4]||(_[4]=c("p",{class:"ca-hint"},"仅限本机抓包使用,请勿安装到他人设备或生产环境。",-1))])):ye("",!0)]),c("div",Ed,[_[12]||(_[12]=c("h3",null,"上游代理与端口",-1)),_[13]||(_[13]=c("p",{class:"desc"},[he("上游代理地址(如 "),c("code",null,"socks5://127.0.0.1:1080"),he(" 或 "),c("code",null,"http://proxy.example.com"),he(")。本地模式下可将 SOCKS5 转为 HTTP 代理并按规则执行策略。")],-1)),c("div",Ad,[_[9]||(_[9]=c("label",null,"上游代理地址",-1)),s.value?(H(),F("div",Td,[_[8]||(_[8]=c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M5 9V7a5 5 0 0110 0v2a2 2 0 012 2v5a2 2 0 01-2 2H5a2 2 0 01-2-2v-5a2 2 0 012-2zm8-2v2H7V7a3 3 0 016 0z","clip-rule":"evenodd"})],-1)),he(" 由 Shadowsocks 托管(socks5://127.0.0.1:"+z(o.value)+") ",1),ve(y,{to:"/console/shadowsocks"},{default:ct(()=>[..._[7]||(_[7]=[he("管理",-1)])]),_:1})])):Ae((H(),F("input",{key:1,"onUpdate:modelValue":_[0]||(_[0]=T=>l.value.upstream=T),placeholder:"socks5://127.0.0.1:1080"},null,512)),[[Oe,l.value.upstream]])]),c("div",Rd,[c("div",Pd,[_[10]||(_[10]=c("label",null,"HTTP 代理端口",-1)),Ae(c("input",{"onUpdate:modelValue":_[1]||(_[1]=T=>l.value.httpPort=T),type:"number",min:"1",max:"65535"},null,512),[[Oe,l.value.httpPort,void 0,{number:!0}]])]),c("div",Od,[_[11]||(_[11]=c("label",null,"HTTPS 代理端口",-1)),Ae(c("input",{"onUpdate:modelValue":_[2]||(_[2]=T=>l.value.httpsPort=T),type:"number",min:"1",max:"65535"},null,512),[[Oe,l.value.httpsPort,void 0,{number:!0}]])])]),c("div",kd,[c("button",{class:"btn primary",onClick:g,disabled:i.value},[i.value?(H(),F("span",Id)):ye("",!0),he(" "+z(i.value?"保存中…":"保存设置"),1)],8,Nd)])]),a.value!==null?(H(),F("div",Md,[_[16]||(_[16]=c("h3",null,"代理状态",-1)),c("p",$d,[c("span",{class:be(["status-dot",a.value.running?"on":"off"])},null,2),c("span",{class:be(a.value.running?"status-on":"status-off")},z(a.value.running?"运行中":"已关闭"),3),a.value.running?(H(),F("span",Ld,"端口 "+z(a.value.port),1)):ye("",!0)]),a.value.running&&l.value.applySystemProxy&&a.value.systemProxyOk!==!1?(H(),F("p",Dd," 已尝试自动设置"+z(l.value.mode==="pac"?" PAC 代理":l.value.mode==="mitm"?"抓包代理":"系统代理")+"(127.0.0.1:"+z(a.value.port)+")。 ",1)):a.value.running&&l.value.applySystemProxy&&a.value.systemProxyError?(H(),F("p",Vd," 自动设置系统代理失败:"+z(a.value.systemProxyError)+" 请手动在「系统设置 → 网络 → 代理」中设置。 ",1)):a.value.running?(H(),F("p",Ud,[_[14]||(_[14]=he(" 请将系统或浏览器的 HTTP/HTTPS 代理设置为 ",-1)),c("strong",null,"127.0.0.1:"+z(a.value.port),1),_[15]||(_[15]=he("。 ",-1))])):l.value.enabled?(H(),F("p",Bd," 保存后若仍显示已关闭,请查看终端是否有端口占用报错。 ")):ye("",!0)])):ye("",!0)])}}},jd=At(Fd,[["__scopeId","data-v-44d33970"]]),Gd={class:"pac-rules"},Kd={class:"card"},Wd={class:"card-header"},zd={key:0,class:"rule-count"},qd={key:0,class:"desc"},Jd={key:1,class:"desc"},Qd={class:"toolbar"},Yd=["disabled"],Xd=["disabled"],Zd={class:"search-wrap"},ep={class:"table-wrap"},tp={class:"table"},np={class:"pattern-cell"},sp={class:"priority-cell"},op={class:"ops-cell"},rp=["onClick"],lp=["onClick"],ip={key:0},ap={key:1},cp={colspan:"4",class:"empty"},up={class:"modal-content"},fp={class:"field"},dp={class:"field"},pp={class:"action-toggle"},hp={class:"field"},gp={class:"modal-actions"},mp=["disabled"],vp={__name:"PacRules",setup(e){const t=Ro();function n(){return Ci(t.mode,t.remoteBaseUrl)}const s=ee([]),o=ee(null),r=ee({pattern:"",action:"proxy",priority:0}),l=ee(!1),i=ee(""),a=ee(null),u=Se(()=>[...s.value].sort((A,b)=>(b.priority??0)-(A.priority??0))),f=Se(()=>{const A=i.value.trim().toLowerCase();return A?u.value.filter(b=>b.pattern.toLowerCase().includes(A)):u.value});Ut(d);async function d(){try{if(s.value=await n().getPacRules(),Array.isArray(s.value)||(s.value=[]),t.mode==="remote")try{await de("/pac-rules",{method:"PUT",body:JSON.stringify(s.value)})}catch{}}catch{s.value=[]}}function g(A=null){A?r.value={id:A.id,pattern:A.pattern,action:A.action||"proxy",priority:A.priority??0}:r.value={pattern:"",action:"proxy",priority:0},o.value=!0}async function m(){const{id:A,pattern:b,action:I,priority:J}=r.value;if(!b.trim()){_e("请填写 URL 匹配字符","error");return}l.value=!0;try{let j=[...s.value];if(A){const le=j.findIndex(V=>V.id===A);le>=0&&(j[le]={...j[le],pattern:b.trim(),action:I,priority:J})}else{if(j.find(V=>V.pattern.trim()===b.trim())){_e(`规则「${b.trim()}」已存在`,"error"),l.value=!1;return}j.push({id:String(Date.now()),pattern:b.trim(),action:I||"proxy",priority:Number(J)||0})}await n().setPacRules(j),s.value=j,o.value=null,_e(A?"规则已更新":"规则已添加","success")}catch(j){_e("保存失败:"+j.message,"error")}finally{l.value=!1}}async function _(A){if(!await Vr(`确定删除规则「${A.pattern}」?`))return;const I=s.value.filter(J=>J.id!==A.id);try{await n().setPacRules(I),s.value=I,_e("规则已删除","success")}catch(J){_e("删除失败:"+J.message,"error")}}async function y(){if(s.value.length)try{await navigator.clipboard.writeText(s.value.map(A=>(A.pattern||"").trim()).filter(Boolean).join(`
|
|
26
|
+
`)),_e("已复制到剪贴板","success")}catch(A){_e("复制失败:"+A.message,"error")}}function T(){if(!s.value.length)return;const A=new Blob([JSON.stringify(s.value,null,2)],{type:"application/json"}),b=URL.createObjectURL(A),I=document.createElement("a");I.href=b,I.download=`pac-rules-${new Date().toISOString().slice(0,10)}.json`,I.click(),URL.revokeObjectURL(b)}function P(){var A;(A=a.value)==null||A.click()}async function R(A){var I;const b=(I=A.target.files)==null?void 0:I[0];if(b){A.target.value="";try{const J=await b.text(),j=JSON.parse(J);if(!Array.isArray(j)){_e("文件格式错误,需为规则数组","error");return}if(!await Vr(`导入 ${j.length} 条规则,将与现有规则合并(相同 pattern 会覆盖)。确定继续?`))return;const V=[...s.value];for(const X of j){if(!X.pattern)continue;const te=V.findIndex(se=>se.pattern===X.pattern),L={id:X.id||String(Date.now()+Math.random()),pattern:X.pattern,action:X.action||"proxy",priority:Number(X.priority)||0};te>=0?V[te]=L:V.push(L)}await n().setPacRules(V),s.value=V,_e(`已导入 ${j.length} 条规则`,"success")}catch(J){_e("导入失败:"+J.message,"error")}}}return(A,b)=>(H(),F("div",Gd,[c("div",Kd,[c("div",Wd,[c("div",null,[c("h3",null,[b[8]||(b[8]=he("PAC 规则 ",-1)),s.value.length?(H(),F("span",zd,z(s.value.length),1)):ye("",!0)]),ft(t).mode==="remote"?(H(),F("p",qd,"远程模式下规则保存在云端,PAC 模式时由本机按云端规则执行。")):(H(),F("p",Jd,"按优先级从高到低匹配,命中后选择「代理」或「直连」。"))])]),c("div",Qd,[c("button",{class:"btn primary",onClick:b[0]||(b[0]=I=>g())},[...b[9]||(b[9]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M10 3a1 1 0 011 1v5h5a1 1 0 110 2h-5v5a1 1 0 11-2 0v-5H4a1 1 0 110-2h5V4a1 1 0 011-1z","clip-rule":"evenodd"})],-1),he(" 新增规则 ",-1)])]),c("button",{class:"btn",onClick:P,title:"导入 JSON"},[...b[10]||(b[10]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M3 17a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM6.293 6.707a1 1 0 010-1.414l3-3a1 1 0 011.414 0l3 3a1 1 0 01-1.414 1.414L11 5.414V13a1 1 0 11-2 0V5.414L7.707 6.707a1 1 0 01-1.414 0z","clip-rule":"evenodd"})],-1),he(" 导入 ",-1)])]),c("button",{class:"btn",onClick:T,disabled:!s.value.length,title:"导出 JSON"},[...b[11]||(b[11]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M3 17a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zm3.293-7.707a1 1 0 011.414 0L9 10.586V3a1 1 0 112 0v7.586l1.293-1.293a1 1 0 111.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z","clip-rule":"evenodd"})],-1),he(" 导出 ",-1)])],8,Yd),c("button",{class:"btn",onClick:y,disabled:!s.value.length,title:"复制规则"},[...b[12]||(b[12]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{d:"M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z"}),c("path",{d:"M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z"})],-1),he(" 复制 ",-1)])],8,Xd),c("div",Zd,[b[13]||(b[13]=c("svg",{class:"search-icon",viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z","clip-rule":"evenodd"})],-1)),Ae(c("input",{class:"search-input","onUpdate:modelValue":b[1]||(b[1]=I=>i.value=I),placeholder:"搜索规则…"},null,512),[[Oe,i.value]])])]),c("div",ep,[c("table",tp,[b[17]||(b[17]=c("thead",null,[c("tr",null,[c("th",null,"URL 匹配字符"),c("th",null,"动作"),c("th",null,"优先级"),c("th",null,"操作")])],-1)),c("tbody",null,[(H(!0),F(Ee,null,Ln(f.value,I=>(H(),F("tr",{key:I.id},[c("td",np,z(I.pattern),1),c("td",null,[c("span",{class:be(["action-badge",I.action])},z(I.action==="proxy"?"代理":"直连"),3)]),c("td",sp,z(I.priority),1),c("td",op,[c("button",{class:"icon-btn",onClick:J=>g(I),title:"编辑"},[...b[14]||(b[14]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{d:"M13.586 3.586a2 2 0 112.828 2.828l-.793.793-2.828-2.828.793-.793zM11.379 5.793L3 14.172V17h2.828l8.38-8.379-2.83-2.828z"})],-1)])],8,rp),c("button",{class:"icon-btn danger",onClick:J=>_(I),title:"删除"},[...b[15]||(b[15]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M9 2a1 1 0 00-.894.553L7.382 4H4a1 1 0 000 2v10a2 2 0 002 2h8a2 2 0 002-2V6a1 1 0 100-2h-3.382l-.724-1.447A1 1 0 0011 2H9zM7 8a1 1 0 012 0v6a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v6a1 1 0 102 0V8a1 1 0 00-1-1z","clip-rule":"evenodd"})],-1)])],8,lp)])]))),128)),s.value.length?f.value.length?ye("",!0):(H(),F("tr",ap,[c("td",cp,"未找到匹配「"+z(i.value)+"」的规则",1)])):(H(),F("tr",ip,[...b[16]||(b[16]=[c("td",{colspan:"4",class:"empty"},"暂无规则,点击「新增规则」开始添加",-1)])]))])])])]),o.value?(H(),F("div",{key:0,class:"modal",onClick:b[7]||(b[7]=Ss(I=>o.value=null,["self"]))},[c("div",up,[c("h3",null,z(r.value.id?"编辑规则":"新增规则"),1),c("div",fp,[b[18]||(b[18]=c("label",null,"URL 匹配字符",-1)),Ae(c("input",{"onUpdate:modelValue":b[2]||(b[2]=I=>r.value.pattern=I),placeholder:"例如 *.google.com",autofocus:""},null,512),[[Oe,r.value.pattern]])]),c("div",dp,[b[19]||(b[19]=c("label",null,"动作",-1)),c("div",pp,[c("button",{type:"button",class:be(["toggle-opt",{active:r.value.action==="proxy"}]),onClick:b[3]||(b[3]=I=>r.value.action="proxy")},"代理",2),c("button",{type:"button",class:be(["toggle-opt",{active:r.value.action==="direct"}]),onClick:b[4]||(b[4]=I=>r.value.action="direct")},"直连",2)])]),c("div",hp,[b[20]||(b[20]=c("label",null,"优先级(数字越大越优先)",-1)),Ae(c("input",{"onUpdate:modelValue":b[5]||(b[5]=I=>r.value.priority=I),type:"number"},null,512),[[Oe,r.value.priority,void 0,{number:!0}]])]),c("div",gp,[c("button",{class:"btn",onClick:b[6]||(b[6]=I=>o.value=null)},"取消"),c("button",{class:"btn primary",onClick:m,disabled:l.value},"保存",8,mp)])])])):ye("",!0),c("input",{ref_key:"fileInput",ref:a,type:"file",accept:".json",style:{display:"none"},onChange:R},null,544)]))}},yp=At(vp,[["__scopeId","data-v-abe2d935"]]),_p={class:"traffic-page"},bp={key:0,class:"card"},wp={class:"toolbar"},xp={class:"auto-refresh"},Cp=["title"],Sp=["disabled"],Ep={key:0,class:"record-count"},Ap={class:"table-wrap"},Tp={class:"table"},Rp={class:"time-cell"},Pp=["title"],Op={key:0},kp={key:1,class:"card capture-card"},Np={class:"toolbar"},Ip=["title"],Mp=["disabled"],$p={class:"table-wrap"},Lp={class:"table capture-table"},Dp=["onClick"],Vp={class:"time-cell"},Up=["title"],Bp=["onClick"],Hp={key:0},Fp={key:0,class:"pagination"},jp={class:"pagination-info"},Gp=["disabled"],Kp=["disabled"],Wp={key:3,class:"drawer"},zp={class:"drawer-tabs"},qp={class:"drawer-body"},Jp={class:"drawer-url-section"},Qp={class:"drawer-url-head"},Yp={class:"drawer-url"},Xp={class:"detail-section"},Zp={class:"headers-pre"},eh={class:"detail-section"},th={class:"body-pre"},nh={class:"detail-section"},sh={class:"headers-pre"},oh={class:"detail-section"},rh={class:"body-pre"},Fs=50,lh={__name:"Traffic",setup(e){const t=ee([]),n=ee(!1),s=ee(!1),o=ee(!1);let r=null;const l=ee([]),i=ee(0),a=ee(0),u=ee({q:"",method:"",status:"",type:"",sort:"time",order:"desc"});let f=null;const d=ee(null),g=ee("request"),m=ee(!1),_=yi();function y(G){return G?new Date(G).toLocaleString("zh-CN",{hour12:!1}):"-"}function T(G){return!G||typeof G!="object"?"":Object.entries(G).map(([k,U])=>`${k}: ${U}`).join(`
|
|
27
|
+
`)}function P(G){if(G==null||G==="")return"(空)";const k=typeof G=="string"?G:String(G);try{return JSON.stringify(JSON.parse(k),null,2)}catch{return k}}function R(G){return G>=200&&G<300?"status-2xx":G>=300&&G<400?"status-3xx":G>=400&&G<500?"status-4xx":G>=500?"status-5xx":""}async function A(){try{const k=await(await fetch("/api/local/proxy")).json();s.value=(k.mode||"")==="mitm"}catch{s.value=!1}}async function b(){n.value=!0;try{const G=await fetch("/api/local/traffic");t.value=await G.json(),Array.isArray(t.value)||(t.value=[])}catch{t.value=[]}finally{n.value=!1}}function I(){o.value=!o.value,o.value?(r=setInterval(b,5e3),_e("自动刷新已开启(每 5 秒)","info")):(clearInterval(r),r=null,_e("自动刷新已关闭","info"))}function J(){f&&clearTimeout(f),f=setTimeout(j,300)}async function j(){n.value=!0;try{const G=new URLSearchParams;u.value.q&&G.set("q",u.value.q),u.value.method&&G.set("method",u.value.method);const k=String(u.value.status??"").trim();k!==""&&!Number.isNaN(Number(k))&&G.set("status",k),u.value.type&&G.set("type",u.value.type),G.set("sort",u.value.sort),G.set("order",u.value.order),G.set("limit",String(Fs)),G.set("offset",String(a.value));const ne=await(await fetch("/api/local/capture?"+G.toString())).json();l.value=ne.list||[],i.value=ne.total??0}catch{l.value=[],i.value=0}finally{n.value=!1}}function le(){a.value=Math.max(0,a.value-Fs),j()}function V(){a.value+=Fs,j()}function X(){u.value.order=u.value.order==="desc"?"asc":"desc",j()}function te(G){d.value=G,g.value="request"}function L(){d.value=null}async function se(){var G;if((G=d.value)!=null&&G.url)try{await navigator.clipboard.writeText(d.value.url),m.value=!0,setTimeout(()=>{m.value=!1},1500)}catch{_e("复制失败","error")}}async function Ce(){await A(),s.value?(a.value=0,await j()):await b()}return Ut(Ce),bs(()=>{r&&clearInterval(r)}),rn(()=>_.path,G=>{G==="/console/traffic"&&Ce()}),(G,k)=>(H(),F("div",_p,[s.value?(H(),F("div",kp,[k[17]||(k[17]=c("div",{class:"capture-banner"},[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z","clip-rule":"evenodd"})]),he(" 当前为抓包代理,可查看解密后的请求与响应。 ")],-1)),c("div",Np,[Ae(c("input",{"onUpdate:modelValue":k[0]||(k[0]=U=>u.value.q=U),type:"text",placeholder:"搜索 URL…",class:"search-input",onInput:J},null,544),[[Oe,u.value.q]]),Ae(c("select",{"onUpdate:modelValue":k[1]||(k[1]=U=>u.value.method=U),class:"filter-select",onChange:j},[...k[12]||(k[12]=[c("option",{value:""},"全部方法",-1),c("option",null,"GET",-1),c("option",null,"POST",-1),c("option",null,"PUT",-1),c("option",null,"PATCH",-1),c("option",null,"DELETE",-1),c("option",null,"HEAD",-1),c("option",null,"OPTIONS",-1)])],544),[[Pn,u.value.method]]),Ae(c("input",{"onUpdate:modelValue":k[2]||(k[2]=U=>u.value.status=U),type:"text",placeholder:"状态码",class:"status-input",onInput:J},null,544),[[Oe,u.value.status]]),Ae(c("select",{"onUpdate:modelValue":k[3]||(k[3]=U=>u.value.type=U),class:"filter-select",onChange:j},[...k[13]||(k[13]=[c("option",{value:""},"全部类型",-1),c("option",null,"document",-1),c("option",null,"xhr",-1),c("option",null,"script",-1),c("option",null,"stylesheet",-1),c("option",null,"image",-1),c("option",null,"font",-1),c("option",null,"other",-1)])],544),[[Pn,u.value.type]]),Ae(c("select",{"onUpdate:modelValue":k[4]||(k[4]=U=>u.value.sort=U),class:"filter-select",onChange:j},[...k[14]||(k[14]=[c("option",{value:"time"},"按时间",-1),c("option",{value:"method"},"按方法",-1),c("option",{value:"status"},"按状态",-1),c("option",{value:"url"},"按 URL",-1)])],544),[[Pn,u.value.sort]]),c("button",{type:"button",class:"sort-order-btn",onClick:X,title:u.value.order==="desc"?"倒序":"正序"},z(u.value.order==="desc"?"↓":"↑"),9,Ip),c("button",{class:"btn",onClick:j,disabled:n.value},"刷新",8,Mp)]),c("div",$p,[c("table",Lp,[k[16]||(k[16]=c("thead",null,[c("tr",null,[c("th",null,"时间"),c("th",null,"方法"),c("th",null,"URL"),c("th",null,"状态"),c("th",null,"类型"),c("th")])],-1)),c("tbody",null,[(H(!0),F(Ee,null,Ln(l.value,U=>(H(),F("tr",{key:U.id,onClick:ne=>te(U),class:"row-clickable"},[c("td",Vp,z(y(U.time)),1),c("td",null,[c("span",{class:be(["method-tag",U.method])},z(U.method),3)]),c("td",{class:"url-cell",title:U.url},z(U.url),9,Up),c("td",null,[c("span",{class:be(["status-tag",R(U.statusCode)])},z(U.statusCode),3)]),c("td",null,z(U.type),1),c("td",null,[c("button",{type:"button",class:"btn-link",onClick:Ss(ne=>te(U),["stop"])},"详情",8,Bp)])],8,Dp))),128)),!l.value.length&&!n.value?(H(),F("tr",Hp,[...k[15]||(k[15]=[c("td",{colspan:"6",class:"empty"},"暂无抓包记录,请通过抓包代理访问网页。",-1)])])):ye("",!0)])])]),i.value>0?(H(),F("div",Fp,[c("span",jp,"共 "+z(i.value)+" 条",1),c("button",{class:"btn small",disabled:a.value<=0,onClick:le},"上一页",8,Gp),c("button",{class:"btn small",disabled:a.value+l.value.length>=i.value,onClick:V},"下一页",8,Kp)])):ye("",!0)])):(H(),F("div",bp,[c("div",wp,[c("div",xp,[c("button",{type:"button",class:be(["toggle-btn",{on:o.value}]),onClick:I,title:o.value?"关闭自动刷新":"开启自动刷新(每 5 秒)"},[...k[7]||(k[7]=[c("span",{class:"toggle-knob"},null,-1)])],10,Cp),k[8]||(k[8]=c("span",{class:"toggle-label"},"自动刷新",-1))]),c("button",{class:"btn",onClick:b,disabled:n.value},[...k[9]||(k[9]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M4 2a1 1 0 011 1v2.101a7.002 7.002 0 0111.601 2.566 1 1 0 11-1.885.666A5.002 5.002 0 005.999 7H9a1 1 0 010 2H4a1 1 0 01-1-1V3a1 1 0 011-1zm.008 9.057a1 1 0 011.276.61A5.002 5.002 0 0014.001 13H11a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0v-2.101a7.002 7.002 0 01-11.601-2.566 1 1 0 01.61-1.276z","clip-rule":"evenodd"})],-1),he(" 刷新 ",-1)])],8,Sp),t.value.length?(H(),F("span",Ep,z(t.value.length)+" 条记录",1)):ye("",!0)]),c("div",Ap,[c("table",Tp,[k[11]||(k[11]=c("thead",null,[c("tr",null,[c("th",null,"时间"),c("th",null,"类型"),c("th",null,"方法"),c("th",null,"URL / 主机"),c("th",null,"动作")])],-1)),c("tbody",null,[(H(!0),F(Ee,null,Ln(t.value,U=>(H(),F("tr",{key:U.time+(U.url||"")},[c("td",Rp,z(y(U.time)),1),c("td",null,z(U.type),1),c("td",null,[c("span",{class:be(["method-tag",U.method])},z(U.method),3)]),c("td",{class:"url-cell",title:U.url},z(U.url),9,Pp),c("td",null,[c("span",{class:be(["action-badge",U.action])},z(U.action==="proxy"?"代理":"直连"),3)])]))),128)),!t.value.length&&!n.value?(H(),F("tr",Op,[...k[10]||(k[10]=[c("td",{colspan:"5",class:"empty"},"暂无记录,请确保代理已开启并有流量经过。",-1)])])):ye("",!0)])])])])),d.value?(H(),F("div",{key:2,class:"drawer-mask",onClick:L})):ye("",!0),d.value?(H(),F("div",Wp,[c("div",{class:"drawer-header"},[k[18]||(k[18]=c("span",{class:"drawer-title"},"请求详情",-1)),c("button",{type:"button",class:"drawer-close",onClick:L},"×")]),c("div",zp,[c("button",{type:"button",class:be({active:g.value==="request"}),onClick:k[5]||(k[5]=U=>g.value="request")},"请求",2),c("button",{type:"button",class:be({active:g.value==="response"}),onClick:k[6]||(k[6]=U=>g.value="response")},"响应",2)]),c("div",qp,[c("div",Jp,[c("div",Qp,[c("span",{class:be(["drawer-method-tag",d.value.method])},z(d.value.method),3),c("button",{type:"button",class:"btn-copy-url",onClick:se},z(m.value?"已复制":"复制 URL"),1)]),c("pre",Yp,z(d.value.url),1)]),g.value==="request"?(H(),F(Ee,{key:0},[c("div",Xp,[k[19]||(k[19]=c("h4",null,"Request Headers",-1)),c("pre",Zp,z(T(d.value.requestHeaders)),1)]),c("div",eh,[k[20]||(k[20]=c("h4",null,"Request Body",-1)),c("pre",th,z(P(d.value.requestBody)),1)])],64)):(H(),F(Ee,{key:1},[c("div",nh,[k[21]||(k[21]=c("h4",null,"Response Headers",-1)),c("pre",sh,z(T(d.value.responseHeaders)),1)]),c("div",oh,[k[22]||(k[22]=c("h4",null,"Response Body",-1)),c("pre",rh,z(P(d.value.responseBody)),1)])],64))])])):ye("",!0)]))}},ih=At(lh,[["__scopeId","data-v-4331eb78"]]),ah={class:"shadowsocks-page"},ch={class:"card"},uh={class:"enable-row"},fh=["disabled"],dh={class:"card"},ph={class:"fields"},hh={class:"field field-wide"},gh={class:"field"},mh={class:"field field-wide"},vh={class:"password-wrap"},yh=["type"],_h={key:0,viewBox:"0 0 20 20",fill:"currentColor"},bh={key:1,viewBox:"0 0 20 20",fill:"currentColor"},wh={class:"field"},xh={class:"field"},Ch={class:"actions"},Sh=["disabled"],Eh={key:0,class:"btn-spinner"},Ah={class:"card status-card"},Th={class:"status-header"},Rh={class:"status-actions"},Ph=["disabled"],Oh=["disabled"],kh=["disabled"],Nh={class:"status-line"},Ih={key:0,class:"status-pid"},Mh={key:1,class:"status-port"},$h={key:0,class:"status-error"},Lh={class:"log-section"},Dh={class:"log-count"},Vh={key:0,class:"log-pre"},Uh={__name:"Shadowsocks",setup(e){const t=ee({enabled:!1,server:"",serverPort:8388,localPort:1080,password:"",method:"aes-256-gcm",timeout:300}),n=ee({running:!1,pid:null,error:null,logs:[]}),s=ee(!1),o=ee(!1),r=ee(!1),l=ee(!1),i=ee(!1);async function a(){try{const _=await de("/sslocal");t.value={...t.value,..._},i.value=!1}catch{}}Fu(()=>{if(i.value)return confirm("有未保存的更改,离开后将丢失。确定离开吗?")});async function u(){try{const _=await de("/sslocal-status");n.value=_}catch{}}Ut(async()=>{await Promise.all([a(),u()]),rn(t,()=>{i.value=!0},{deep:!0})});async function f(){s.value=!0;try{await de("/sslocal",{method:"PUT",body:JSON.stringify(t.value)}),i.value=!1,await u(),_e("设置已保存","success")}catch(_){_e("保存失败:"+_.message,"error")}finally{s.value=!1}}async function d(){t.value.enabled=!t.value.enabled,await f()}async function g(){o.value=!0;try{const _=await de("/sslocal/start",{method:"POST"});n.value=_,_e("sslocal 已启动","success")}catch(_){_e("启动失败:"+_.message,"error"),await u()}finally{o.value=!1}}async function m(){o.value=!0;try{await de("/sslocal/stop",{method:"POST"}),await u(),_e("sslocal 已停止","info")}catch(_){_e("停止失败:"+_.message,"error")}finally{o.value=!1}}return(_,y)=>{var T;return H(),F("div",ah,[c("div",ch,[c("div",uh,[y[8]||(y[8]=c("div",null,[c("h3",null,"Shadowsocks (sslocal)"),c("p",{class:"desc"},"启用后将自动管理 sslocal 进程,并将其 SOCKS5 输出作为上游代理。")],-1)),c("button",{type:"button",class:be(["toggle-btn",{on:t.value.enabled}]),onClick:d,disabled:s.value},[...y[7]||(y[7]=[c("span",{class:"toggle-knob"},null,-1)])],10,fh)])]),c("div",dh,[y[17]||(y[17]=c("h3",null,"服务器配置",-1)),c("div",ph,[c("div",hh,[y[9]||(y[9]=c("label",null,"服务器地址",-1)),Ae(c("input",{"onUpdate:modelValue":y[0]||(y[0]=P=>t.value.server=P),placeholder:"example.com 或 1.2.3.4"},null,512),[[Oe,t.value.server]])]),c("div",gh,[y[10]||(y[10]=c("label",null,"服务器端口",-1)),Ae(c("input",{"onUpdate:modelValue":y[1]||(y[1]=P=>t.value.serverPort=P),type:"number",min:"1",max:"65535"},null,512),[[Oe,t.value.serverPort,void 0,{number:!0}]])]),c("div",mh,[y[13]||(y[13]=c("label",null,"密码",-1)),c("div",vh,[Ae(c("input",{"onUpdate:modelValue":y[2]||(y[2]=P=>t.value.password=P),type:r.value?"text":"password",placeholder:"密码"},null,8,yh),[[eu,t.value.password]]),c("button",{type:"button",class:"eye-btn",onClick:y[3]||(y[3]=P=>r.value=!r.value),tabindex:"-1"},[r.value?(H(),F("svg",bh,[...y[12]||(y[12]=[c("path",{"fill-rule":"evenodd",d:"M3.707 2.293a1 1 0 00-1.414 1.414l14 14a1 1 0 001.414-1.414l-1.473-1.473A10.014 10.014 0 0019.542 10C18.268 5.943 14.478 3 10 3a9.958 9.958 0 00-4.512 1.074l-1.78-1.781zm4.261 4.26l1.514 1.515a2.003 2.003 0 012.45 2.45l1.514 1.514a4 4 0 00-5.478-5.478z","clip-rule":"evenodd"},null,-1),c("path",{d:"M12.454 16.697L9.75 13.992a4 4 0 01-3.742-3.741L2.335 6.578A9.98 9.98 0 00.458 10c1.274 4.057 5.064 7 9.542 7 .847 0 1.669-.105 2.454-.303z"},null,-1)])])):(H(),F("svg",_h,[...y[11]||(y[11]=[c("path",{d:"M10 12a2 2 0 100-4 2 2 0 000 4z"},null,-1),c("path",{"fill-rule":"evenodd",d:"M.458 10C1.732 5.943 5.522 3 10 3s8.268 2.943 9.542 7c-1.274 4.057-5.064 7-9.542 7S1.732 14.057.458 10zM14 10a4 4 0 11-8 0 4 4 0 018 0z","clip-rule":"evenodd"},null,-1)])]))])])]),c("div",wh,[y[15]||(y[15]=c("label",null,"加密方式",-1)),Ae(c("select",{"onUpdate:modelValue":y[4]||(y[4]=P=>t.value.method=P)},[...y[14]||(y[14]=[uc('<optgroup label="AEAD(推荐)" data-v-2f9daaee><option value="aes-128-gcm" data-v-2f9daaee>aes-128-gcm</option><option value="aes-256-gcm" data-v-2f9daaee>aes-256-gcm</option><option value="chacha20-ietf-poly1305" data-v-2f9daaee>chacha20-ietf-poly1305</option><option value="xchacha20-ietf-poly1305" data-v-2f9daaee>xchacha20-ietf-poly1305</option></optgroup><optgroup label="AEAD 2022" data-v-2f9daaee><option value="2022-blake3-aes-128-gcm" data-v-2f9daaee>2022-blake3-aes-128-gcm</option><option value="2022-blake3-aes-256-gcm" data-v-2f9daaee>2022-blake3-aes-256-gcm</option><option value="2022-blake3-chacha20-poly1305" data-v-2f9daaee>2022-blake3-chacha20-poly1305</option></optgroup><optgroup label="流加密(不推荐)" data-v-2f9daaee><option value="aes-128-cfb" data-v-2f9daaee>aes-128-cfb</option><option value="aes-192-cfb" data-v-2f9daaee>aes-192-cfb</option><option value="aes-256-cfb" data-v-2f9daaee>aes-256-cfb</option><option value="aes-128-ctr" data-v-2f9daaee>aes-128-ctr</option><option value="aes-192-ctr" data-v-2f9daaee>aes-192-ctr</option><option value="aes-256-ctr" data-v-2f9daaee>aes-256-ctr</option><option value="camellia-128-cfb" data-v-2f9daaee>camellia-128-cfb</option><option value="camellia-192-cfb" data-v-2f9daaee>camellia-192-cfb</option><option value="camellia-256-cfb" data-v-2f9daaee>camellia-256-cfb</option><option value="chacha20-ietf" data-v-2f9daaee>chacha20-ietf</option><option value="chacha20" data-v-2f9daaee>chacha20</option><option value="salsa20" data-v-2f9daaee>salsa20</option><option value="rc4-md5" data-v-2f9daaee>rc4-md5</option><option value="bf-cfb" data-v-2f9daaee>bf-cfb</option><option value="cast5-cfb" data-v-2f9daaee>cast5-cfb</option><option value="des-cfb" data-v-2f9daaee>des-cfb</option><option value="idea-cfb" data-v-2f9daaee>idea-cfb</option><option value="rc2-cfb" data-v-2f9daaee>rc2-cfb</option><option value="seed-cfb" data-v-2f9daaee>seed-cfb</option><option value="none" data-v-2f9daaee>none(不加密)</option><option value="plain" data-v-2f9daaee>plain(不加密)</option></optgroup>',3)])],512),[[Pn,t.value.method]])]),c("div",xh,[y[16]||(y[16]=c("label",null,"本地 SOCKS5 端口",-1)),Ae(c("input",{"onUpdate:modelValue":y[5]||(y[5]=P=>t.value.localPort=P),type:"number",min:"1",max:"65535"},null,512),[[Oe,t.value.localPort,void 0,{number:!0}]])])]),c("div",Ch,[c("button",{class:"btn primary",onClick:f,disabled:s.value},[s.value?(H(),F("span",Eh)):ye("",!0),he(" "+z(s.value?"保存中…":"保存设置"),1)],8,Sh)])]),c("div",Ah,[c("div",Th,[y[19]||(y[19]=c("h3",null,"运行状态",-1)),c("div",Rh,[c("button",{class:"btn",onClick:g,disabled:o.value||n.value.running},"启动",8,Ph),c("button",{class:"btn danger",onClick:m,disabled:o.value||!n.value.running},"停止",8,Oh),c("button",{class:"btn icon-only",onClick:u,disabled:o.value,title:"刷新状态"},[...y[18]||(y[18]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M4 2a1 1 0 011 1v2.101a7.002 7.002 0 0111.601 2.566 1 1 0 11-1.885.666A5.002 5.002 0 005.999 7H9a1 1 0 010 2H4a1 1 0 01-1-1V3a1 1 0 011-1zm.008 9.057a1 1 0 011.276.61A5.002 5.002 0 0014.001 13H11a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0v-2.101a7.002 7.002 0 01-11.601-2.566 1 1 0 01.61-1.276z","clip-rule":"evenodd"})],-1)])],8,kh)])]),c("p",Nh,[c("span",{class:be(["status-dot",n.value.running?"on":"off"])},null,2),c("span",{class:be(n.value.running?"status-on":"status-off")},z(n.value.running?"运行中":"已停止"),3),n.value.running&&n.value.pid?(H(),F("span",Ih,"PID "+z(n.value.pid),1)):ye("",!0),n.value.running?(H(),F("span",Mh,"→ socks5://127.0.0.1:"+z(t.value.localPort),1)):ye("",!0)]),n.value.error?(H(),F("p",$h,z(n.value.error),1)):ye("",!0),c("div",Lh,[c("button",{type:"button",class:"log-toggle",onClick:y[6]||(y[6]=P=>l.value=!l.value)},[(H(),F("svg",{viewBox:"0 0 20 20",fill:"currentColor",style:ms({transform:l.value?"rotate(90deg)":"none"})},[...y[20]||(y[20]=[c("path",{"fill-rule":"evenodd",d:"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z","clip-rule":"evenodd"},null,-1)])],4)),y[21]||(y[21]=he(" 最近日志 ",-1)),c("span",Dh,z(((T=n.value.logs)==null?void 0:T.length)??0)+" 行",1)]),l.value?(H(),F("pre",Vh,z((n.value.logs||[]).join(`
|
|
28
|
+
`)||"(暂无日志)"),1)):ye("",!0)])])])}}},Bh=At(Uh,[["__scopeId","data-v-2f9daaee"]]),Hh=[{path:"/",name:"ModeSelect",component:Yf,meta:{title:"选择模式"}},{path:"/login",name:"Login",component:ld,meta:{title:"登录"}},{path:"/register",name:"Register",component:md,meta:{title:"注册"}},{path:"/console",redirect:"/console/traffic"},{path:"/console/traffic",name:"Traffic",component:ih,meta:{title:"流量记录"}},{path:"/console/proxy",name:"ProxySettings",component:jd,meta:{title:"代理设置"}},{path:"/console/pac-rules",name:"PacRules",component:yp,meta:{title:"PAC 规则"}},{path:"/console/shadowsocks",name:"Shadowsocks",component:Bh,meta:{title:"Shadowsocks"}}],Ei=mf({history:zu(),routes:Hh});Ei.beforeEach((e,t,n)=>{const s=_i();e.path!=="/"&&!e.path.startsWith("/login")&&!e.path.startsWith("/register")&&!s?n("/"):n()});_i();const Ai=lu(Wf);Ai.use(Ei);Ai.mount("#app");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.toast-container[data-v-5cf00320]{position:fixed;top:1.25rem;right:1.25rem;z-index:9999;display:flex;flex-direction:column;gap:.5rem;pointer-events:none}.toast[data-v-5cf00320]{display:flex;align-items:center;gap:.5rem;padding:.65rem 1rem;border-radius:8px;font-size:.9rem;font-weight:500;box-shadow:0 4px 12px #00000026;pointer-events:auto;max-width:320px}.toast.success[data-v-5cf00320]{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}.toast.error[data-v-5cf00320]{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.toast.info[data-v-5cf00320]{background:#eff6ff;color:#1e40af;border:1px solid #bfdbfe}.toast-icon[data-v-5cf00320]{flex-shrink:0;width:1.1rem;height:1.1rem;display:flex}.toast-icon svg[data-v-5cf00320]{width:100%;height:100%}.toast-msg[data-v-5cf00320]{line-height:1.4}.toast-confirm-mask[data-v-5cf00320]{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:10000;pointer-events:auto}.toast-confirm[data-v-5cf00320]{background:#fff;border-radius:10px;padding:1.5rem;min-width:280px;max-width:360px;box-shadow:0 8px 24px #0000002e}.toast-confirm-msg[data-v-5cf00320]{font-size:.95rem;color:#0f172a;margin-bottom:1.25rem;line-height:1.5}.toast-confirm-actions[data-v-5cf00320]{display:flex;gap:.75rem;justify-content:flex-end}.tc-btn[data-v-5cf00320]{padding:.45rem 1rem;border-radius:6px;font-size:.9rem;cursor:pointer;border:none;font-weight:500}.tc-btn.cancel[data-v-5cf00320]{background:#f1f5f9;color:#475569}.tc-btn.cancel[data-v-5cf00320]:hover{background:#e2e8f0}.tc-btn.ok[data-v-5cf00320]{background:#2563eb;color:#fff}.tc-btn.ok[data-v-5cf00320]:hover{background:#1d4ed8}.toast-enter-active[data-v-5cf00320]{animation:toast-in-5cf00320 .22s ease}.toast-leave-active[data-v-5cf00320]{animation:toast-out-5cf00320 .18s ease forwards}@keyframes toast-in-5cf00320{0%{opacity:0;transform:translate(1rem)}to{opacity:1;transform:translate(0)}}@keyframes toast-out-5cf00320{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(1rem)}}.app-layout[data-v-ee1bb6ce]{min-height:100vh;display:flex}.sidebar[data-v-ee1bb6ce]{position:fixed;left:0;top:0;bottom:0;width:200px;background:var(--bg-sidebar);display:flex;flex-direction:column;z-index:20}.sidebar-logo[data-v-ee1bb6ce]{display:flex;align-items:center;gap:.6rem;padding:1.25rem 1.25rem 1rem;color:#fff;font-weight:700;font-size:1rem;border-bottom:1px solid rgba(255,255,255,.08)}.sidebar-logo svg[data-v-ee1bb6ce]{width:1.25rem;height:1.25rem;flex-shrink:0;color:#60a5fa}.side-nav[data-v-ee1bb6ce]{flex:1;display:flex;flex-direction:column;padding:.75rem 0}.side-nav a[data-v-ee1bb6ce]{display:flex;align-items:center;gap:.6rem;color:var(--text-sidebar-muted);padding:.6rem 1.25rem;font-size:.9rem;border-left:3px solid transparent;transition:background .15s,color .15s;text-decoration:none}.side-nav a svg[data-v-ee1bb6ce]{width:1rem;height:1rem;flex-shrink:0}.side-nav a[data-v-ee1bb6ce]:hover{background:var(--bg-sidebar-hover);color:var(--text-sidebar);text-decoration:none}.side-nav a.active[data-v-ee1bb6ce]{background:#2563eb40;color:#93c5fd;border-left-color:#3b82f6}.sidebar-footer[data-v-ee1bb6ce]{padding:1rem 1.25rem;border-top:1px solid rgba(255,255,255,.08);display:flex;align-items:center;justify-content:space-between}.mode-badge[data-v-ee1bb6ce]{font-size:.75rem;padding:.2rem .5rem;border-radius:4px;font-weight:500}.mode-badge.local[data-v-ee1bb6ce]{background:#dbeafe26;color:#93c5fd}.mode-badge.remote[data-v-ee1bb6ce]{background:#e9d5ff26;color:#c4b5fd}.switch-mode-link[data-v-ee1bb6ce]{font-size:.78rem;color:var(--text-sidebar-muted);text-decoration:none}.switch-mode-link[data-v-ee1bb6ce]:hover{color:var(--text-sidebar);text-decoration:none}.content-wrap[data-v-ee1bb6ce]{margin-left:200px;flex:1;display:flex;flex-direction:column;min-height:100vh}.content-standalone[data-v-ee1bb6ce]{margin-left:0}.topbar[data-v-ee1bb6ce]{position:sticky;top:0;height:52px;display:flex;align-items:center;justify-content:space-between;padding:0 1.5rem;background:var(--bg-card);border-bottom:1px solid var(--border);z-index:10}.topbar-left .page-title[data-v-ee1bb6ce]{font-weight:600;font-size:.95rem;color:var(--text-primary)}.topbar-right[data-v-ee1bb6ce]{display:flex;align-items:center;gap:.75rem}.username[data-v-ee1bb6ce]{font-size:.875rem;color:var(--text-secondary)}.logout-btn[data-v-ee1bb6ce]{font-size:.85rem;color:var(--text-secondary);background:none;border:none;cursor:pointer;padding:.25rem 0}.logout-btn[data-v-ee1bb6ce]:hover{color:var(--btn-primary)}.main[data-v-ee1bb6ce]{flex:1;padding:1.5rem}.mode-select[data-v-b465f762]{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-main);padding:2rem}.card[data-v-b465f762]{background:var(--bg-card);border-radius:12px;padding:2.5rem;max-width:480px;width:100%;box-shadow:0 1px 3px #00000014}.card h1[data-v-b465f762]{font-size:1.5rem;margin-bottom:.5rem}.desc[data-v-b465f762]{color:var(--text-secondary);font-size:.95rem;margin-bottom:1.5rem}.options[data-v-b465f762]{display:flex;flex-direction:column;gap:1rem}.option[data-v-b465f762]{padding:1.25rem 1.5rem;border:2px solid var(--border);border-radius:var(--radius);background:#fff;text-align:left;transition:border-color .2s,background .2s}.option[data-v-b465f762]:hover{border-color:var(--btn-primary);background:#f8fafc}.option .title[data-v-b465f762]{display:block;font-weight:600;margin-bottom:.25rem}.option .sub[data-v-b465f762]{font-size:.9rem;color:var(--text-secondary)}.auth-page[data-v-d4d57b91]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem}.card[data-v-d4d57b91]{background:var(--bg-card);border-radius:12px;padding:2rem;max-width:400px;width:100%;box-shadow:0 1px 3px #00000014}.card h1[data-v-d4d57b91]{font-size:1.5rem;margin-bottom:.5rem}.desc[data-v-d4d57b91]{color:var(--text-secondary);font-size:.9rem;margin-bottom:1.5rem}.form[data-v-d4d57b91]{display:flex;flex-direction:column;gap:1rem}.field label[data-v-d4d57b91]{display:block;font-size:.9rem;margin-bottom:.35rem;color:var(--text-secondary)}.field input[data-v-d4d57b91]{width:100%;padding:.6rem .75rem;border:1px solid var(--border);border-radius:var(--radius)}.error[data-v-d4d57b91]{color:#dc2626;font-size:.9rem}.btn.primary[data-v-d4d57b91]{background:var(--btn-primary);color:#fff;padding:.65rem 1rem;font-weight:500}.btn.primary[data-v-d4d57b91]:hover:not(:disabled){background:var(--btn-primary-hover)}.btn.primary[data-v-d4d57b91]:disabled{opacity:.6;cursor:not-allowed}.footer[data-v-d4d57b91]{margin-top:1rem;font-size:.9rem;color:var(--text-secondary)}.auth-page[data-v-a1c8458c]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem}.card[data-v-a1c8458c]{background:var(--bg-card);border-radius:12px;padding:2rem;max-width:400px;width:100%;box-shadow:0 1px 3px #00000014}.card h1[data-v-a1c8458c]{font-size:1.5rem;margin-bottom:.5rem}.desc[data-v-a1c8458c]{color:var(--text-secondary);font-size:.9rem;margin-bottom:1.5rem}.form[data-v-a1c8458c]{display:flex;flex-direction:column;gap:1rem}.field label[data-v-a1c8458c]{display:block;font-size:.9rem;margin-bottom:.35rem;color:var(--text-secondary)}.field input[data-v-a1c8458c]{width:100%;padding:.6rem .75rem;border:1px solid var(--border);border-radius:var(--radius)}.error[data-v-a1c8458c]{color:#dc2626;font-size:.9rem}.success[data-v-a1c8458c]{color:#16a34a;font-size:.9rem}.btn.primary[data-v-a1c8458c]{background:var(--btn-primary);color:#fff;padding:.65rem 1rem;font-weight:500}.btn.primary[data-v-a1c8458c]:hover:not(:disabled){background:var(--btn-primary-hover)}.btn.primary[data-v-a1c8458c]:disabled{opacity:.6;cursor:not-allowed}.footer[data-v-a1c8458c]{margin-top:1rem;font-size:.9rem;color:var(--text-secondary)}.proxy-settings[data-v-44d33970]{display:flex;flex-direction:column;gap:1.25rem}.card[data-v-44d33970]{background:var(--bg-card);border-radius:var(--radius);padding:1.5rem;box-shadow:0 1px 3px #0000000f}.card h3[data-v-44d33970]{font-size:.95rem;font-weight:600;margin-bottom:.35rem}.desc[data-v-44d33970]{color:var(--text-secondary);font-size:.875rem;margin-bottom:1.25rem;line-height:1.5}.desc code[data-v-44d33970]{background:#f1f5f9;padding:.1rem .3rem;border-radius:4px;font-size:.82rem}.mode-cards[data-v-44d33970]{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem}.mode-card[data-v-44d33970]{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:1rem .5rem;border:1.5px solid var(--border);border-radius:var(--radius);background:var(--bg-card);cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s;text-align:center}.mode-card[data-v-44d33970]:hover:not(:disabled){border-color:var(--btn-primary);background:#f8fafc}.mode-card.active[data-v-44d33970]{border-color:var(--btn-primary);background:#eff6ff;box-shadow:0 0 0 3px #2563eb1a}.mode-card.active-clear[data-v-44d33970]{border-color:#94a3b8;background:#f8fafc;box-shadow:0 0 0 3px #94a3b826}.mode-card[data-v-44d33970]:disabled{opacity:.55;cursor:not-allowed}.mode-icon[data-v-44d33970]{width:1.5rem;height:1.5rem;color:var(--text-secondary)}.mode-icon[data-v-44d33970] svg{width:100%;height:100%}.mode-card.active .mode-icon[data-v-44d33970]{color:var(--btn-primary)}.mode-card.active-clear .mode-icon[data-v-44d33970]{color:#64748b}.mode-label[data-v-44d33970]{font-size:.875rem;font-weight:600;color:var(--text-primary)}.mode-desc[data-v-44d33970]{font-size:.78rem;color:var(--text-secondary);line-height:1.3}.ca-download[data-v-44d33970]{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border)}.ca-label[data-v-44d33970]{display:block;font-size:.875rem;color:var(--text-secondary);margin-bottom:.5rem}.btn-ca[data-v-44d33970]{display:inline-block;padding:.4rem .8rem;font-size:.875rem;background:var(--btn-primary);color:#fff;border-radius:var(--radius);text-decoration:none;margin-bottom:.5rem}.btn-ca[data-v-44d33970]:hover{background:var(--btn-primary-hover);text-decoration:none}.ca-hint[data-v-44d33970]{font-size:.82rem;color:var(--text-secondary);margin:0}.field[data-v-44d33970]{margin-bottom:1rem}.field label[data-v-44d33970]{display:block;font-size:.875rem;margin-bottom:.35rem;color:var(--text-secondary)}.field input[data-v-44d33970]{width:100%;padding:.5rem .75rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.9rem}.upstream-managed[data-v-44d33970]{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:#eff6ff;border:1px solid #bfdbfe;border-radius:var(--radius);font-size:.875rem;color:#1e40af}.upstream-managed svg[data-v-44d33970]{width:1rem;height:1rem;flex-shrink:0}.upstream-managed a[data-v-44d33970]{color:#2563eb;font-size:.82rem;margin-left:auto}.row[data-v-44d33970]{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.actions[data-v-44d33970]{margin-top:.5rem}.btn.primary[data-v-44d33970]{display:inline-flex;align-items:center;gap:.4rem;background:var(--btn-primary);color:#fff;padding:.5rem 1.25rem;font-size:.9rem;border:none;border-radius:var(--radius);cursor:pointer;transition:background .15s}.btn.primary[data-v-44d33970]:hover:not(:disabled){background:var(--btn-primary-hover)}.btn.primary[data-v-44d33970]:disabled{opacity:.6;cursor:not-allowed}.btn-spinner[data-v-44d33970]{width:.85rem;height:.85rem;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin-44d33970 .6s linear infinite;flex-shrink:0}@keyframes spin-44d33970{to{transform:rotate(360deg)}}.status-card .status-line[data-v-44d33970]{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.status-dot[data-v-44d33970]{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.on[data-v-44d33970]{background:var(--switch-on);box-shadow:0 0 0 3px #22c55e33;animation:pulse-44d33970 2s ease-in-out infinite}.status-dot.off[data-v-44d33970]{background:#cbd5e1}@keyframes pulse-44d33970{0%,to{box-shadow:0 0 0 3px #22c55e33}50%{box-shadow:0 0 0 5px #22c55e14}}.status-on[data-v-44d33970]{color:var(--switch-on);font-weight:600;font-size:.9rem}.status-off[data-v-44d33970]{color:var(--text-secondary);font-size:.9rem}.status-port[data-v-44d33970]{color:var(--text-secondary);font-size:.875rem}.hint[data-v-44d33970]{font-size:.875rem;color:var(--text-secondary);margin-top:.25rem;line-height:1.5}.hint strong[data-v-44d33970]{color:var(--text-primary)}.hint.error[data-v-44d33970]{color:#dc2626}.pac-rules[data-v-abe2d935]{display:flex;flex-direction:column;gap:1.25rem}.card[data-v-abe2d935]{background:var(--bg-card);border-radius:var(--radius);padding:1.5rem;box-shadow:0 1px 3px #0000000f}.card-header[data-v-abe2d935]{margin-bottom:1rem}.card-header h3[data-v-abe2d935]{font-size:.95rem;font-weight:600;display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem}.rule-count[data-v-abe2d935]{display:inline-flex;align-items:center;justify-content:center;background:#e0e7ff;color:#3730a3;font-size:.75rem;font-weight:600;min-width:1.4rem;height:1.4rem;padding:0 .35rem;border-radius:999px}.desc[data-v-abe2d935]{color:var(--text-secondary);font-size:.875rem;line-height:1.5}.toolbar[data-v-abe2d935]{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}.btn[data-v-abe2d935]{display:inline-flex;align-items:center;gap:.35rem;padding:.45rem .85rem;font-size:.875rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);cursor:pointer;color:var(--text-primary);transition:background .15s,border-color .15s;white-space:nowrap}.btn svg[data-v-abe2d935]{width:.9rem;height:.9rem;flex-shrink:0}.btn[data-v-abe2d935]:hover:not(:disabled){background:#f1f5f9;border-color:#cbd5e1}.btn[data-v-abe2d935]:disabled{opacity:.5;cursor:not-allowed}.btn.primary[data-v-abe2d935]{background:var(--btn-primary);color:#fff;border-color:var(--btn-primary)}.btn.primary[data-v-abe2d935]:hover:not(:disabled){background:var(--btn-primary-hover);border-color:var(--btn-primary-hover)}.search-wrap[data-v-abe2d935]{position:relative;margin-left:auto}.search-icon[data-v-abe2d935]{position:absolute;left:.6rem;top:50%;transform:translateY(-50%);width:.9rem;height:.9rem;color:var(--text-secondary);pointer-events:none}.search-input[data-v-abe2d935]{padding:.45rem .75rem .45rem 2rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.875rem;min-width:180px}.table-wrap[data-v-abe2d935]{overflow-x:auto}.table[data-v-abe2d935]{width:100%;border-collapse:collapse}.table th[data-v-abe2d935],.table td[data-v-abe2d935]{padding:.6rem .75rem;text-align:left;border-bottom:1px solid var(--border)}.table th[data-v-abe2d935]{font-weight:600;color:var(--text-secondary);font-size:.82rem;text-transform:uppercase;letter-spacing:.03em}.table tbody tr[data-v-abe2d935]:hover{background:#f8fafc}.table .empty[data-v-abe2d935]{color:var(--text-secondary);text-align:center;padding:2rem;font-size:.9rem}.pattern-cell[data-v-abe2d935]{font-family:Menlo,Consolas,monospace;font-size:.875rem}.priority-cell[data-v-abe2d935]{color:var(--text-secondary);font-size:.875rem}.action-badge[data-v-abe2d935]{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.78rem;font-weight:500}.action-badge.proxy[data-v-abe2d935]{background:#dbeafe;color:#1d4ed8}.action-badge.direct[data-v-abe2d935]{background:#f1f5f9;color:#475569}.ops-cell[data-v-abe2d935]{white-space:nowrap}.icon-btn[data-v-abe2d935]{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border:none;border-radius:6px;background:transparent;cursor:pointer;color:var(--text-secondary);transition:background .15s,color .15s;margin-right:.25rem}.icon-btn svg[data-v-abe2d935]{width:.9rem;height:.9rem}.icon-btn[data-v-abe2d935]:hover{background:#f1f5f9;color:var(--text-primary)}.icon-btn.danger[data-v-abe2d935]:hover{background:#fee2e2;color:#dc2626}.modal[data-v-abe2d935]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100}.modal-content[data-v-abe2d935]{background:var(--bg-card);border-radius:var(--radius);padding:1.5rem;min-width:360px;max-width:440px;width:100%;box-shadow:0 8px 24px #00000026}.modal-content h3[data-v-abe2d935]{font-size:1rem;font-weight:600;margin-bottom:1.25rem}.field[data-v-abe2d935]{margin-bottom:1rem}.field label[data-v-abe2d935]{display:block;font-size:.875rem;margin-bottom:.35rem;color:var(--text-secondary)}.field input[data-v-abe2d935]{width:100%;padding:.5rem .75rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.9rem}.action-toggle[data-v-abe2d935]{display:flex;gap:0;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.toggle-opt[data-v-abe2d935]{flex:1;padding:.45rem 0;font-size:.875rem;border:none;background:transparent;cursor:pointer;color:var(--text-secondary);transition:background .15s,color .15s}.toggle-opt[data-v-abe2d935]:first-child{border-right:1px solid var(--border)}.toggle-opt.active[data-v-abe2d935]{background:var(--btn-primary);color:#fff}.modal-actions[data-v-abe2d935]{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1.25rem}.traffic-page[data-v-4331eb78]{display:flex;flex-direction:column;gap:1.25rem}.card[data-v-4331eb78]{background:var(--bg-card);border-radius:var(--radius);padding:1.5rem;box-shadow:0 1px 3px #0000000f}.capture-card[data-v-4331eb78]{padding:1rem 1.5rem}.capture-banner[data-v-4331eb78]{display:flex;align-items:center;gap:.5rem;background:#eff6ff;color:#1e40af;padding:.5rem .75rem;border-radius:var(--radius);font-size:.875rem;margin-bottom:1rem}.capture-banner svg[data-v-4331eb78]{width:1rem;height:1rem;flex-shrink:0}.toolbar[data-v-4331eb78]{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1rem}.auto-refresh[data-v-4331eb78]{display:flex;align-items:center;gap:.5rem}.toggle-btn[data-v-4331eb78]{width:36px;height:20px;border-radius:10px;background:var(--switch-off);padding:2px;border:none;cursor:pointer;transition:background .2s;position:relative}.toggle-btn.on[data-v-4331eb78]{background:var(--switch-on)}.toggle-knob[data-v-4331eb78]{display:block;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 3px #0003}.toggle-btn.on .toggle-knob[data-v-4331eb78]{transform:translate(16px)}.toggle-label[data-v-4331eb78]{font-size:.875rem;color:var(--text-secondary)}.record-count[data-v-4331eb78]{font-size:.82rem;color:var(--text-secondary);margin-left:auto}.btn[data-v-4331eb78]{display:inline-flex;align-items:center;gap:.35rem;padding:.45rem .85rem;font-size:.875rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);cursor:pointer;color:var(--text-primary);transition:background .15s}.btn svg[data-v-4331eb78]{width:.9rem;height:.9rem}.btn[data-v-4331eb78]:hover:not(:disabled){background:#f1f5f9}.btn[data-v-4331eb78]:disabled{opacity:.5;cursor:not-allowed}.btn.small[data-v-4331eb78]{padding:.35rem .75rem;font-size:.82rem}.toolbar .search-input[data-v-4331eb78],.toolbar .filter-select[data-v-4331eb78],.toolbar .status-input[data-v-4331eb78],.toolbar .sort-order-btn[data-v-4331eb78]{height:2.1rem;padding:0 .6rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.875rem;background:#fff}.toolbar .search-input[data-v-4331eb78]{min-width:160px}.toolbar .filter-select[data-v-4331eb78]{min-width:6rem;cursor:pointer}.toolbar .status-input[data-v-4331eb78]{width:72px}.toolbar .sort-order-btn[data-v-4331eb78]{width:2.1rem;padding:0;cursor:pointer;background:#f8fafc}.table-wrap[data-v-4331eb78]{overflow-x:auto}.table[data-v-4331eb78]{width:100%;border-collapse:collapse}.table th[data-v-4331eb78],.table td[data-v-4331eb78]{padding:.55rem .75rem;text-align:left;border-bottom:1px solid var(--border)}.table th[data-v-4331eb78]{font-weight:600;color:var(--text-secondary);font-size:.82rem;text-transform:uppercase;letter-spacing:.03em}.table tbody tr[data-v-4331eb78]:hover{background:#f8fafc}.table .empty[data-v-4331eb78]{color:var(--text-secondary);text-align:center;padding:2rem;font-size:.9rem}.time-cell[data-v-4331eb78]{font-size:.82rem;color:var(--text-secondary);white-space:nowrap}.url-cell[data-v-4331eb78]{max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.875rem}.action-badge[data-v-4331eb78]{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.78rem;font-weight:500}.action-badge.proxy[data-v-4331eb78]{background:#dbeafe;color:#1d4ed8}.action-badge.direct[data-v-4331eb78]{background:#f1f5f9;color:#475569}.row-clickable[data-v-4331eb78]{cursor:pointer}.method-tag[data-v-4331eb78]{font-size:.78rem;padding:.15rem .4rem;border-radius:4px;font-weight:500}.method-tag.GET[data-v-4331eb78]{background:#dbeafe;color:#1d4ed8}.method-tag.POST[data-v-4331eb78]{background:#d1fae5;color:#047857}.method-tag.PUT[data-v-4331eb78]{background:#fef3c7;color:#b45309}.method-tag.DELETE[data-v-4331eb78]{background:#fee2e2;color:#b91c1c}.method-tag.HEAD[data-v-4331eb78],.method-tag.OPTIONS[data-v-4331eb78]{background:#f1f5f9;color:#64748b}.method-tag.PATCH[data-v-4331eb78]{background:#fce7f3;color:#9d174d}.status-tag[data-v-4331eb78]{font-size:.82rem;padding:.15rem .4rem;border-radius:4px;font-weight:500}.status-2xx[data-v-4331eb78]{background:#d1fae5;color:#047857}.status-3xx[data-v-4331eb78]{background:#e0e7ff;color:#3730a3}.status-4xx[data-v-4331eb78]{background:#fee2e2;color:#b91c1c}.status-5xx[data-v-4331eb78]{background:#fecaca;color:#991b1b}.btn-link[data-v-4331eb78]{background:none;border:none;color:var(--btn-primary);cursor:pointer;font-size:.875rem;padding:0}.btn-link[data-v-4331eb78]:hover{text-decoration:underline}.pagination[data-v-4331eb78]{margin-top:1rem;display:flex;align-items:center;gap:.75rem}.pagination-info[data-v-4331eb78]{font-size:.875rem;color:var(--text-secondary)}.drawer-mask[data-v-4331eb78]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;z-index:100}.drawer[data-v-4331eb78]{position:fixed;top:0;right:0;width:min(560px,100vw);height:100vh;background:var(--bg-card);box-shadow:-2px 0 16px #0000001f;z-index:101;display:flex;flex-direction:column;overflow:hidden}.drawer-header[data-v-4331eb78]{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--border);flex-shrink:0}.drawer-title[data-v-4331eb78]{font-size:.95rem;font-weight:600}.drawer-close[data-v-4331eb78]{width:2rem;height:2rem;border:none;background:none;font-size:1.5rem;line-height:1;cursor:pointer;color:var(--text-secondary);border-radius:6px}.drawer-close[data-v-4331eb78]:hover{background:#f1f5f9;color:var(--text-primary)}.drawer-url-section[data-v-4331eb78]{margin-bottom:1.25rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.drawer-url-head[data-v-4331eb78]{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.35rem}.drawer-method-tag[data-v-4331eb78]{font-size:.78rem;font-weight:600;padding:.15rem .4rem;border-radius:4px}.btn-copy-url[data-v-4331eb78]{padding:.3rem .6rem;font-size:.82rem;border:1px solid var(--border);border-radius:var(--radius);background:#f1f5f9;cursor:pointer}.btn-copy-url[data-v-4331eb78]:hover{background:#e2e8f0}.drawer-url[data-v-4331eb78]{margin:0;padding:.5rem .6rem;background:#f8fafc;border-radius:var(--radius);font-size:.82rem;line-height:1.4;white-space:pre-wrap;word-break:break-all;max-height:5rem;overflow:auto}.drawer-tabs[data-v-4331eb78]{display:flex;gap:.25rem;padding:.5rem 1rem;border-bottom:1px solid var(--border);flex-shrink:0}.drawer-tabs button[data-v-4331eb78]{padding:.4rem .75rem;font-size:.875rem;border:none;background:none;border-radius:var(--radius);cursor:pointer;color:var(--text-secondary)}.drawer-tabs button.active[data-v-4331eb78]{background:var(--btn-primary);color:#fff}.drawer-body[data-v-4331eb78]{flex:1;overflow:auto;padding:1rem 1.25rem}.detail-section[data-v-4331eb78]{margin-bottom:1.25rem}.detail-section h4[data-v-4331eb78]{font-size:.82rem;margin-bottom:.35rem;color:var(--text-secondary);font-weight:600;text-transform:uppercase;letter-spacing:.03em}.headers-pre[data-v-4331eb78],.body-pre[data-v-4331eb78]{margin:0;padding:.75rem;background:#f8fafc;border-radius:var(--radius);font-size:.8rem;line-height:1.4;overflow-x:auto;white-space:pre-wrap;word-break:break-all;max-height:280px;overflow-y:auto}.shadowsocks-page[data-v-2ef4dba1]{display:flex;flex-direction:column;gap:1.25rem}.card[data-v-2ef4dba1]{background:var(--bg-card);border-radius:var(--radius);padding:1.5rem;box-shadow:0 1px 3px #0000000f}.card h3[data-v-2ef4dba1]{font-size:.95rem;font-weight:600;margin-bottom:.35rem}.desc[data-v-2ef4dba1]{color:var(--text-secondary);font-size:.875rem;line-height:1.5}.enable-row[data-v-2ef4dba1]{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.toggle-btn[data-v-2ef4dba1]{flex-shrink:0;width:44px;height:24px;border-radius:12px;background:var(--switch-off);padding:2px;border:none;cursor:pointer;transition:background .2s;margin-top:.2rem}.toggle-btn.on[data-v-2ef4dba1]{background:var(--switch-on)}.toggle-btn[data-v-2ef4dba1]:disabled{opacity:.5;cursor:not-allowed}.toggle-knob[data-v-2ef4dba1]{display:block;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 3px #0003}.toggle-btn.on .toggle-knob[data-v-2ef4dba1]{transform:translate(20px)}.fields[data-v-2ef4dba1]{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1rem}.field-wide[data-v-2ef4dba1]{grid-column:span 2}.field label[data-v-2ef4dba1]{display:block;font-size:.875rem;margin-bottom:.35rem;color:var(--text-secondary)}.field input[data-v-2ef4dba1],.field select[data-v-2ef4dba1]{width:100%;padding:.5rem .75rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.9rem}.password-wrap[data-v-2ef4dba1]{position:relative}.password-wrap input[data-v-2ef4dba1]{padding-right:2.5rem}.eye-btn[data-v-2ef4dba1]{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--text-secondary);padding:.2rem;display:flex;align-items:center}.eye-btn svg[data-v-2ef4dba1]{width:1rem;height:1rem}.eye-btn[data-v-2ef4dba1]:hover{color:var(--text-primary)}.actions[data-v-2ef4dba1]{margin-top:.25rem}.btn[data-v-2ef4dba1]{display:inline-flex;align-items:center;gap:.35rem;padding:.45rem .85rem;font-size:.875rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);cursor:pointer;color:var(--text-primary);transition:background .15s}.btn[data-v-2ef4dba1]:hover:not(:disabled){background:#f1f5f9}.btn[data-v-2ef4dba1]:disabled{opacity:.5;cursor:not-allowed}.btn.primary[data-v-2ef4dba1]{background:var(--btn-primary);color:#fff;border-color:var(--btn-primary)}.btn.primary[data-v-2ef4dba1]:hover:not(:disabled){background:var(--btn-primary-hover);border-color:var(--btn-primary-hover)}.btn.danger[data-v-2ef4dba1]{color:#dc2626;border-color:#fecaca}.btn.danger[data-v-2ef4dba1]:hover:not(:disabled){background:#fef2f2}.btn.icon-only[data-v-2ef4dba1]{padding:.45rem}.btn.icon-only svg[data-v-2ef4dba1]{width:.9rem;height:.9rem}.btn-spinner[data-v-2ef4dba1]{width:.85rem;height:.85rem;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin-2ef4dba1 .6s linear infinite;flex-shrink:0}@keyframes spin-2ef4dba1{to{transform:rotate(360deg)}}.status-header[data-v-2ef4dba1]{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.status-header h3[data-v-2ef4dba1]{margin-bottom:0}.status-actions[data-v-2ef4dba1]{display:flex;gap:.5rem}.status-line[data-v-2ef4dba1]{display:flex;align-items:center;gap:.5rem;margin-bottom:.35rem}.status-dot[data-v-2ef4dba1]{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.on[data-v-2ef4dba1]{background:var(--switch-on);box-shadow:0 0 0 3px #22c55e33;animation:pulse-2ef4dba1 2s ease-in-out infinite}.status-dot.off[data-v-2ef4dba1]{background:#cbd5e1}@keyframes pulse-2ef4dba1{0%,to{box-shadow:0 0 0 3px #22c55e33}50%{box-shadow:0 0 0 5px #22c55e14}}.status-on[data-v-2ef4dba1]{color:var(--switch-on);font-weight:600;font-size:.9rem}.status-off[data-v-2ef4dba1]{color:var(--text-secondary);font-size:.9rem}.status-pid[data-v-2ef4dba1],.status-port[data-v-2ef4dba1]{font-size:.82rem;color:var(--text-secondary)}.status-error[data-v-2ef4dba1]{font-size:.875rem;color:#dc2626;margin-top:.35rem}.log-section[data-v-2ef4dba1]{margin-top:1rem;border-top:1px solid var(--border);padding-top:.75rem}.log-toggle[data-v-2ef4dba1]{display:flex;align-items:center;gap:.35rem;background:none;border:none;cursor:pointer;font-size:.875rem;color:var(--text-secondary);padding:0}.log-toggle svg[data-v-2ef4dba1]{width:.9rem;height:.9rem;transition:transform .15s}.log-toggle[data-v-2ef4dba1]:hover{color:var(--text-primary)}.log-count[data-v-2ef4dba1]{font-size:.78rem;background:#f1f5f9;padding:.1rem .4rem;border-radius:999px}.log-pre[data-v-2ef4dba1]{margin-top:.75rem;padding:.75rem;background:#0f172a;color:#94a3b8;border-radius:var(--radius);font-size:.78rem;line-height:1.5;max-height:240px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}:root{--bg-sidebar: #1e293b;--bg-sidebar-hover: #334155;--bg-sidebar-active: #2563eb;--text-sidebar: #e2e8f0;--text-sidebar-muted: #94a3b8;--bg-main: #f8fafc;--bg-card: #ffffff;--text-primary: #0f172a;--text-secondary: #64748b;--border: #e2e8f0;--switch-on: #22c55e;--switch-off: #cbd5e1;--btn-primary: #2563eb;--btn-primary-hover: #1d4ed8;--radius: 8px;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font);background:var(--bg-main);color:var(--text-primary);line-height:1.5;min-height:100vh}#app{min-height:100vh;display:flex;flex-direction:column}button{font-family:inherit;cursor:pointer;border:none;border-radius:var(--radius)}input,select{font-family:inherit;border-radius:var(--radius);outline:none;transition:border-color .15s}input:focus,select:focus{border-color:var(--btn-primary);box-shadow:0 0 0 3px #2563eb1f}a{color:var(--btn-primary);text-decoration:none}a:hover{text-decoration:underline}
|
|
1
|
+
.toast-container[data-v-5cf00320]{position:fixed;top:1.25rem;right:1.25rem;z-index:9999;display:flex;flex-direction:column;gap:.5rem;pointer-events:none}.toast[data-v-5cf00320]{display:flex;align-items:center;gap:.5rem;padding:.65rem 1rem;border-radius:8px;font-size:.9rem;font-weight:500;box-shadow:0 4px 12px #00000026;pointer-events:auto;max-width:320px}.toast.success[data-v-5cf00320]{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}.toast.error[data-v-5cf00320]{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.toast.info[data-v-5cf00320]{background:#eff6ff;color:#1e40af;border:1px solid #bfdbfe}.toast-icon[data-v-5cf00320]{flex-shrink:0;width:1.1rem;height:1.1rem;display:flex}.toast-icon svg[data-v-5cf00320]{width:100%;height:100%}.toast-msg[data-v-5cf00320]{line-height:1.4}.toast-confirm-mask[data-v-5cf00320]{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:10000;pointer-events:auto}.toast-confirm[data-v-5cf00320]{background:#fff;border-radius:10px;padding:1.5rem;min-width:280px;max-width:360px;box-shadow:0 8px 24px #0000002e}.toast-confirm-msg[data-v-5cf00320]{font-size:.95rem;color:#0f172a;margin-bottom:1.25rem;line-height:1.5}.toast-confirm-actions[data-v-5cf00320]{display:flex;gap:.75rem;justify-content:flex-end}.tc-btn[data-v-5cf00320]{padding:.45rem 1rem;border-radius:6px;font-size:.9rem;cursor:pointer;border:none;font-weight:500}.tc-btn.cancel[data-v-5cf00320]{background:#f1f5f9;color:#475569}.tc-btn.cancel[data-v-5cf00320]:hover{background:#e2e8f0}.tc-btn.ok[data-v-5cf00320]{background:#2563eb;color:#fff}.tc-btn.ok[data-v-5cf00320]:hover{background:#1d4ed8}.toast-enter-active[data-v-5cf00320]{animation:toast-in-5cf00320 .22s ease}.toast-leave-active[data-v-5cf00320]{animation:toast-out-5cf00320 .18s ease forwards}@keyframes toast-in-5cf00320{0%{opacity:0;transform:translate(1rem)}to{opacity:1;transform:translate(0)}}@keyframes toast-out-5cf00320{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(1rem)}}.app-layout[data-v-ee1bb6ce]{min-height:100vh;display:flex}.sidebar[data-v-ee1bb6ce]{position:fixed;left:0;top:0;bottom:0;width:200px;background:var(--bg-sidebar);display:flex;flex-direction:column;z-index:20}.sidebar-logo[data-v-ee1bb6ce]{display:flex;align-items:center;gap:.6rem;padding:1.25rem 1.25rem 1rem;color:#fff;font-weight:700;font-size:1rem;border-bottom:1px solid rgba(255,255,255,.08)}.sidebar-logo svg[data-v-ee1bb6ce]{width:1.25rem;height:1.25rem;flex-shrink:0;color:#60a5fa}.side-nav[data-v-ee1bb6ce]{flex:1;display:flex;flex-direction:column;padding:.75rem 0}.side-nav a[data-v-ee1bb6ce]{display:flex;align-items:center;gap:.6rem;color:var(--text-sidebar-muted);padding:.6rem 1.25rem;font-size:.9rem;border-left:3px solid transparent;transition:background .15s,color .15s;text-decoration:none}.side-nav a svg[data-v-ee1bb6ce]{width:1rem;height:1rem;flex-shrink:0}.side-nav a[data-v-ee1bb6ce]:hover{background:var(--bg-sidebar-hover);color:var(--text-sidebar);text-decoration:none}.side-nav a.active[data-v-ee1bb6ce]{background:#2563eb40;color:#93c5fd;border-left-color:#3b82f6}.sidebar-footer[data-v-ee1bb6ce]{padding:1rem 1.25rem;border-top:1px solid rgba(255,255,255,.08);display:flex;align-items:center;justify-content:space-between}.mode-badge[data-v-ee1bb6ce]{font-size:.75rem;padding:.2rem .5rem;border-radius:4px;font-weight:500}.mode-badge.local[data-v-ee1bb6ce]{background:#dbeafe26;color:#93c5fd}.mode-badge.remote[data-v-ee1bb6ce]{background:#e9d5ff26;color:#c4b5fd}.switch-mode-link[data-v-ee1bb6ce]{font-size:.78rem;color:var(--text-sidebar-muted);text-decoration:none}.switch-mode-link[data-v-ee1bb6ce]:hover{color:var(--text-sidebar);text-decoration:none}.content-wrap[data-v-ee1bb6ce]{margin-left:200px;flex:1;display:flex;flex-direction:column;min-height:100vh}.content-standalone[data-v-ee1bb6ce]{margin-left:0}.topbar[data-v-ee1bb6ce]{position:sticky;top:0;height:52px;display:flex;align-items:center;justify-content:space-between;padding:0 1.5rem;background:var(--bg-card);border-bottom:1px solid var(--border);z-index:10}.topbar-left .page-title[data-v-ee1bb6ce]{font-weight:600;font-size:.95rem;color:var(--text-primary)}.topbar-right[data-v-ee1bb6ce]{display:flex;align-items:center;gap:.75rem}.username[data-v-ee1bb6ce]{font-size:.875rem;color:var(--text-secondary)}.logout-btn[data-v-ee1bb6ce]{font-size:.85rem;color:var(--text-secondary);background:none;border:none;cursor:pointer;padding:.25rem 0}.logout-btn[data-v-ee1bb6ce]:hover{color:var(--btn-primary)}.main[data-v-ee1bb6ce]{flex:1;padding:1.5rem}.mode-select[data-v-b465f762]{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-main);padding:2rem}.card[data-v-b465f762]{background:var(--bg-card);border-radius:12px;padding:2.5rem;max-width:480px;width:100%;box-shadow:0 1px 3px #00000014}.card h1[data-v-b465f762]{font-size:1.5rem;margin-bottom:.5rem}.desc[data-v-b465f762]{color:var(--text-secondary);font-size:.95rem;margin-bottom:1.5rem}.options[data-v-b465f762]{display:flex;flex-direction:column;gap:1rem}.option[data-v-b465f762]{padding:1.25rem 1.5rem;border:2px solid var(--border);border-radius:var(--radius);background:#fff;text-align:left;transition:border-color .2s,background .2s}.option[data-v-b465f762]:hover{border-color:var(--btn-primary);background:#f8fafc}.option .title[data-v-b465f762]{display:block;font-weight:600;margin-bottom:.25rem}.option .sub[data-v-b465f762]{font-size:.9rem;color:var(--text-secondary)}.auth-page[data-v-d4d57b91]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem}.card[data-v-d4d57b91]{background:var(--bg-card);border-radius:12px;padding:2rem;max-width:400px;width:100%;box-shadow:0 1px 3px #00000014}.card h1[data-v-d4d57b91]{font-size:1.5rem;margin-bottom:.5rem}.desc[data-v-d4d57b91]{color:var(--text-secondary);font-size:.9rem;margin-bottom:1.5rem}.form[data-v-d4d57b91]{display:flex;flex-direction:column;gap:1rem}.field label[data-v-d4d57b91]{display:block;font-size:.9rem;margin-bottom:.35rem;color:var(--text-secondary)}.field input[data-v-d4d57b91]{width:100%;padding:.6rem .75rem;border:1px solid var(--border);border-radius:var(--radius)}.error[data-v-d4d57b91]{color:#dc2626;font-size:.9rem}.btn.primary[data-v-d4d57b91]{background:var(--btn-primary);color:#fff;padding:.65rem 1rem;font-weight:500}.btn.primary[data-v-d4d57b91]:hover:not(:disabled){background:var(--btn-primary-hover)}.btn.primary[data-v-d4d57b91]:disabled{opacity:.6;cursor:not-allowed}.footer[data-v-d4d57b91]{margin-top:1rem;font-size:.9rem;color:var(--text-secondary)}.auth-page[data-v-a1c8458c]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem}.card[data-v-a1c8458c]{background:var(--bg-card);border-radius:12px;padding:2rem;max-width:400px;width:100%;box-shadow:0 1px 3px #00000014}.card h1[data-v-a1c8458c]{font-size:1.5rem;margin-bottom:.5rem}.desc[data-v-a1c8458c]{color:var(--text-secondary);font-size:.9rem;margin-bottom:1.5rem}.form[data-v-a1c8458c]{display:flex;flex-direction:column;gap:1rem}.field label[data-v-a1c8458c]{display:block;font-size:.9rem;margin-bottom:.35rem;color:var(--text-secondary)}.field input[data-v-a1c8458c]{width:100%;padding:.6rem .75rem;border:1px solid var(--border);border-radius:var(--radius)}.error[data-v-a1c8458c]{color:#dc2626;font-size:.9rem}.success[data-v-a1c8458c]{color:#16a34a;font-size:.9rem}.btn.primary[data-v-a1c8458c]{background:var(--btn-primary);color:#fff;padding:.65rem 1rem;font-weight:500}.btn.primary[data-v-a1c8458c]:hover:not(:disabled){background:var(--btn-primary-hover)}.btn.primary[data-v-a1c8458c]:disabled{opacity:.6;cursor:not-allowed}.footer[data-v-a1c8458c]{margin-top:1rem;font-size:.9rem;color:var(--text-secondary)}.proxy-settings[data-v-44d33970]{display:flex;flex-direction:column;gap:1.25rem}.card[data-v-44d33970]{background:var(--bg-card);border-radius:var(--radius);padding:1.5rem;box-shadow:0 1px 3px #0000000f}.card h3[data-v-44d33970]{font-size:.95rem;font-weight:600;margin-bottom:.35rem}.desc[data-v-44d33970]{color:var(--text-secondary);font-size:.875rem;margin-bottom:1.25rem;line-height:1.5}.desc code[data-v-44d33970]{background:#f1f5f9;padding:.1rem .3rem;border-radius:4px;font-size:.82rem}.mode-cards[data-v-44d33970]{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem}.mode-card[data-v-44d33970]{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:1rem .5rem;border:1.5px solid var(--border);border-radius:var(--radius);background:var(--bg-card);cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s;text-align:center}.mode-card[data-v-44d33970]:hover:not(:disabled){border-color:var(--btn-primary);background:#f8fafc}.mode-card.active[data-v-44d33970]{border-color:var(--btn-primary);background:#eff6ff;box-shadow:0 0 0 3px #2563eb1a}.mode-card.active-clear[data-v-44d33970]{border-color:#94a3b8;background:#f8fafc;box-shadow:0 0 0 3px #94a3b826}.mode-card[data-v-44d33970]:disabled{opacity:.55;cursor:not-allowed}.mode-icon[data-v-44d33970]{width:1.5rem;height:1.5rem;color:var(--text-secondary)}.mode-icon[data-v-44d33970] svg{width:100%;height:100%}.mode-card.active .mode-icon[data-v-44d33970]{color:var(--btn-primary)}.mode-card.active-clear .mode-icon[data-v-44d33970]{color:#64748b}.mode-label[data-v-44d33970]{font-size:.875rem;font-weight:600;color:var(--text-primary)}.mode-desc[data-v-44d33970]{font-size:.78rem;color:var(--text-secondary);line-height:1.3}.ca-download[data-v-44d33970]{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border)}.ca-label[data-v-44d33970]{display:block;font-size:.875rem;color:var(--text-secondary);margin-bottom:.5rem}.btn-ca[data-v-44d33970]{display:inline-block;padding:.4rem .8rem;font-size:.875rem;background:var(--btn-primary);color:#fff;border-radius:var(--radius);text-decoration:none;margin-bottom:.5rem}.btn-ca[data-v-44d33970]:hover{background:var(--btn-primary-hover);text-decoration:none}.ca-hint[data-v-44d33970]{font-size:.82rem;color:var(--text-secondary);margin:0}.field[data-v-44d33970]{margin-bottom:1rem}.field label[data-v-44d33970]{display:block;font-size:.875rem;margin-bottom:.35rem;color:var(--text-secondary)}.field input[data-v-44d33970]{width:100%;padding:.5rem .75rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.9rem}.upstream-managed[data-v-44d33970]{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:#eff6ff;border:1px solid #bfdbfe;border-radius:var(--radius);font-size:.875rem;color:#1e40af}.upstream-managed svg[data-v-44d33970]{width:1rem;height:1rem;flex-shrink:0}.upstream-managed a[data-v-44d33970]{color:#2563eb;font-size:.82rem;margin-left:auto}.row[data-v-44d33970]{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.actions[data-v-44d33970]{margin-top:.5rem}.btn.primary[data-v-44d33970]{display:inline-flex;align-items:center;gap:.4rem;background:var(--btn-primary);color:#fff;padding:.5rem 1.25rem;font-size:.9rem;border:none;border-radius:var(--radius);cursor:pointer;transition:background .15s}.btn.primary[data-v-44d33970]:hover:not(:disabled){background:var(--btn-primary-hover)}.btn.primary[data-v-44d33970]:disabled{opacity:.6;cursor:not-allowed}.btn-spinner[data-v-44d33970]{width:.85rem;height:.85rem;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin-44d33970 .6s linear infinite;flex-shrink:0}@keyframes spin-44d33970{to{transform:rotate(360deg)}}.status-card .status-line[data-v-44d33970]{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.status-dot[data-v-44d33970]{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.on[data-v-44d33970]{background:var(--switch-on);box-shadow:0 0 0 3px #22c55e33;animation:pulse-44d33970 2s ease-in-out infinite}.status-dot.off[data-v-44d33970]{background:#cbd5e1}@keyframes pulse-44d33970{0%,to{box-shadow:0 0 0 3px #22c55e33}50%{box-shadow:0 0 0 5px #22c55e14}}.status-on[data-v-44d33970]{color:var(--switch-on);font-weight:600;font-size:.9rem}.status-off[data-v-44d33970]{color:var(--text-secondary);font-size:.9rem}.status-port[data-v-44d33970]{color:var(--text-secondary);font-size:.875rem}.hint[data-v-44d33970]{font-size:.875rem;color:var(--text-secondary);margin-top:.25rem;line-height:1.5}.hint strong[data-v-44d33970]{color:var(--text-primary)}.hint.error[data-v-44d33970]{color:#dc2626}.pac-rules[data-v-abe2d935]{display:flex;flex-direction:column;gap:1.25rem}.card[data-v-abe2d935]{background:var(--bg-card);border-radius:var(--radius);padding:1.5rem;box-shadow:0 1px 3px #0000000f}.card-header[data-v-abe2d935]{margin-bottom:1rem}.card-header h3[data-v-abe2d935]{font-size:.95rem;font-weight:600;display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem}.rule-count[data-v-abe2d935]{display:inline-flex;align-items:center;justify-content:center;background:#e0e7ff;color:#3730a3;font-size:.75rem;font-weight:600;min-width:1.4rem;height:1.4rem;padding:0 .35rem;border-radius:999px}.desc[data-v-abe2d935]{color:var(--text-secondary);font-size:.875rem;line-height:1.5}.toolbar[data-v-abe2d935]{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}.btn[data-v-abe2d935]{display:inline-flex;align-items:center;gap:.35rem;padding:.45rem .85rem;font-size:.875rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);cursor:pointer;color:var(--text-primary);transition:background .15s,border-color .15s;white-space:nowrap}.btn svg[data-v-abe2d935]{width:.9rem;height:.9rem;flex-shrink:0}.btn[data-v-abe2d935]:hover:not(:disabled){background:#f1f5f9;border-color:#cbd5e1}.btn[data-v-abe2d935]:disabled{opacity:.5;cursor:not-allowed}.btn.primary[data-v-abe2d935]{background:var(--btn-primary);color:#fff;border-color:var(--btn-primary)}.btn.primary[data-v-abe2d935]:hover:not(:disabled){background:var(--btn-primary-hover);border-color:var(--btn-primary-hover)}.search-wrap[data-v-abe2d935]{position:relative;margin-left:auto}.search-icon[data-v-abe2d935]{position:absolute;left:.6rem;top:50%;transform:translateY(-50%);width:.9rem;height:.9rem;color:var(--text-secondary);pointer-events:none}.search-input[data-v-abe2d935]{padding:.45rem .75rem .45rem 2rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.875rem;min-width:180px}.table-wrap[data-v-abe2d935]{overflow-x:auto}.table[data-v-abe2d935]{width:100%;border-collapse:collapse}.table th[data-v-abe2d935],.table td[data-v-abe2d935]{padding:.6rem .75rem;text-align:left;border-bottom:1px solid var(--border)}.table th[data-v-abe2d935]{font-weight:600;color:var(--text-secondary);font-size:.82rem;text-transform:uppercase;letter-spacing:.03em}.table tbody tr[data-v-abe2d935]:hover{background:#f8fafc}.table .empty[data-v-abe2d935]{color:var(--text-secondary);text-align:center;padding:2rem;font-size:.9rem}.pattern-cell[data-v-abe2d935]{font-family:Menlo,Consolas,monospace;font-size:.875rem}.priority-cell[data-v-abe2d935]{color:var(--text-secondary);font-size:.875rem}.action-badge[data-v-abe2d935]{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.78rem;font-weight:500}.action-badge.proxy[data-v-abe2d935]{background:#dbeafe;color:#1d4ed8}.action-badge.direct[data-v-abe2d935]{background:#f1f5f9;color:#475569}.ops-cell[data-v-abe2d935]{white-space:nowrap}.icon-btn[data-v-abe2d935]{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border:none;border-radius:6px;background:transparent;cursor:pointer;color:var(--text-secondary);transition:background .15s,color .15s;margin-right:.25rem}.icon-btn svg[data-v-abe2d935]{width:.9rem;height:.9rem}.icon-btn[data-v-abe2d935]:hover{background:#f1f5f9;color:var(--text-primary)}.icon-btn.danger[data-v-abe2d935]:hover{background:#fee2e2;color:#dc2626}.modal[data-v-abe2d935]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100}.modal-content[data-v-abe2d935]{background:var(--bg-card);border-radius:var(--radius);padding:1.5rem;min-width:360px;max-width:440px;width:100%;box-shadow:0 8px 24px #00000026}.modal-content h3[data-v-abe2d935]{font-size:1rem;font-weight:600;margin-bottom:1.25rem}.field[data-v-abe2d935]{margin-bottom:1rem}.field label[data-v-abe2d935]{display:block;font-size:.875rem;margin-bottom:.35rem;color:var(--text-secondary)}.field input[data-v-abe2d935]{width:100%;padding:.5rem .75rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.9rem}.action-toggle[data-v-abe2d935]{display:flex;gap:0;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.toggle-opt[data-v-abe2d935]{flex:1;padding:.45rem 0;font-size:.875rem;border:none;background:transparent;cursor:pointer;color:var(--text-secondary);transition:background .15s,color .15s}.toggle-opt[data-v-abe2d935]:first-child{border-right:1px solid var(--border)}.toggle-opt.active[data-v-abe2d935]{background:var(--btn-primary);color:#fff}.modal-actions[data-v-abe2d935]{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1.25rem}.traffic-page[data-v-4331eb78]{display:flex;flex-direction:column;gap:1.25rem}.card[data-v-4331eb78]{background:var(--bg-card);border-radius:var(--radius);padding:1.5rem;box-shadow:0 1px 3px #0000000f}.capture-card[data-v-4331eb78]{padding:1rem 1.5rem}.capture-banner[data-v-4331eb78]{display:flex;align-items:center;gap:.5rem;background:#eff6ff;color:#1e40af;padding:.5rem .75rem;border-radius:var(--radius);font-size:.875rem;margin-bottom:1rem}.capture-banner svg[data-v-4331eb78]{width:1rem;height:1rem;flex-shrink:0}.toolbar[data-v-4331eb78]{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1rem}.auto-refresh[data-v-4331eb78]{display:flex;align-items:center;gap:.5rem}.toggle-btn[data-v-4331eb78]{width:36px;height:20px;border-radius:10px;background:var(--switch-off);padding:2px;border:none;cursor:pointer;transition:background .2s;position:relative}.toggle-btn.on[data-v-4331eb78]{background:var(--switch-on)}.toggle-knob[data-v-4331eb78]{display:block;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 3px #0003}.toggle-btn.on .toggle-knob[data-v-4331eb78]{transform:translate(16px)}.toggle-label[data-v-4331eb78]{font-size:.875rem;color:var(--text-secondary)}.record-count[data-v-4331eb78]{font-size:.82rem;color:var(--text-secondary);margin-left:auto}.btn[data-v-4331eb78]{display:inline-flex;align-items:center;gap:.35rem;padding:.45rem .85rem;font-size:.875rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);cursor:pointer;color:var(--text-primary);transition:background .15s}.btn svg[data-v-4331eb78]{width:.9rem;height:.9rem}.btn[data-v-4331eb78]:hover:not(:disabled){background:#f1f5f9}.btn[data-v-4331eb78]:disabled{opacity:.5;cursor:not-allowed}.btn.small[data-v-4331eb78]{padding:.35rem .75rem;font-size:.82rem}.toolbar .search-input[data-v-4331eb78],.toolbar .filter-select[data-v-4331eb78],.toolbar .status-input[data-v-4331eb78],.toolbar .sort-order-btn[data-v-4331eb78]{height:2.1rem;padding:0 .6rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.875rem;background:#fff}.toolbar .search-input[data-v-4331eb78]{min-width:160px}.toolbar .filter-select[data-v-4331eb78]{min-width:6rem;cursor:pointer}.toolbar .status-input[data-v-4331eb78]{width:72px}.toolbar .sort-order-btn[data-v-4331eb78]{width:2.1rem;padding:0;cursor:pointer;background:#f8fafc}.table-wrap[data-v-4331eb78]{overflow-x:auto}.table[data-v-4331eb78]{width:100%;border-collapse:collapse}.table th[data-v-4331eb78],.table td[data-v-4331eb78]{padding:.55rem .75rem;text-align:left;border-bottom:1px solid var(--border)}.table th[data-v-4331eb78]{font-weight:600;color:var(--text-secondary);font-size:.82rem;text-transform:uppercase;letter-spacing:.03em}.table tbody tr[data-v-4331eb78]:hover{background:#f8fafc}.table .empty[data-v-4331eb78]{color:var(--text-secondary);text-align:center;padding:2rem;font-size:.9rem}.time-cell[data-v-4331eb78]{font-size:.82rem;color:var(--text-secondary);white-space:nowrap}.url-cell[data-v-4331eb78]{max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.875rem}.action-badge[data-v-4331eb78]{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.78rem;font-weight:500}.action-badge.proxy[data-v-4331eb78]{background:#dbeafe;color:#1d4ed8}.action-badge.direct[data-v-4331eb78]{background:#f1f5f9;color:#475569}.row-clickable[data-v-4331eb78]{cursor:pointer}.method-tag[data-v-4331eb78]{font-size:.78rem;padding:.15rem .4rem;border-radius:4px;font-weight:500}.method-tag.GET[data-v-4331eb78]{background:#dbeafe;color:#1d4ed8}.method-tag.POST[data-v-4331eb78]{background:#d1fae5;color:#047857}.method-tag.PUT[data-v-4331eb78]{background:#fef3c7;color:#b45309}.method-tag.DELETE[data-v-4331eb78]{background:#fee2e2;color:#b91c1c}.method-tag.HEAD[data-v-4331eb78],.method-tag.OPTIONS[data-v-4331eb78]{background:#f1f5f9;color:#64748b}.method-tag.PATCH[data-v-4331eb78]{background:#fce7f3;color:#9d174d}.status-tag[data-v-4331eb78]{font-size:.82rem;padding:.15rem .4rem;border-radius:4px;font-weight:500}.status-2xx[data-v-4331eb78]{background:#d1fae5;color:#047857}.status-3xx[data-v-4331eb78]{background:#e0e7ff;color:#3730a3}.status-4xx[data-v-4331eb78]{background:#fee2e2;color:#b91c1c}.status-5xx[data-v-4331eb78]{background:#fecaca;color:#991b1b}.btn-link[data-v-4331eb78]{background:none;border:none;color:var(--btn-primary);cursor:pointer;font-size:.875rem;padding:0}.btn-link[data-v-4331eb78]:hover{text-decoration:underline}.pagination[data-v-4331eb78]{margin-top:1rem;display:flex;align-items:center;gap:.75rem}.pagination-info[data-v-4331eb78]{font-size:.875rem;color:var(--text-secondary)}.drawer-mask[data-v-4331eb78]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;z-index:100}.drawer[data-v-4331eb78]{position:fixed;top:0;right:0;width:min(560px,100vw);height:100vh;background:var(--bg-card);box-shadow:-2px 0 16px #0000001f;z-index:101;display:flex;flex-direction:column;overflow:hidden}.drawer-header[data-v-4331eb78]{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--border);flex-shrink:0}.drawer-title[data-v-4331eb78]{font-size:.95rem;font-weight:600}.drawer-close[data-v-4331eb78]{width:2rem;height:2rem;border:none;background:none;font-size:1.5rem;line-height:1;cursor:pointer;color:var(--text-secondary);border-radius:6px}.drawer-close[data-v-4331eb78]:hover{background:#f1f5f9;color:var(--text-primary)}.drawer-url-section[data-v-4331eb78]{margin-bottom:1.25rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.drawer-url-head[data-v-4331eb78]{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.35rem}.drawer-method-tag[data-v-4331eb78]{font-size:.78rem;font-weight:600;padding:.15rem .4rem;border-radius:4px}.btn-copy-url[data-v-4331eb78]{padding:.3rem .6rem;font-size:.82rem;border:1px solid var(--border);border-radius:var(--radius);background:#f1f5f9;cursor:pointer}.btn-copy-url[data-v-4331eb78]:hover{background:#e2e8f0}.drawer-url[data-v-4331eb78]{margin:0;padding:.5rem .6rem;background:#f8fafc;border-radius:var(--radius);font-size:.82rem;line-height:1.4;white-space:pre-wrap;word-break:break-all;max-height:5rem;overflow:auto}.drawer-tabs[data-v-4331eb78]{display:flex;gap:.25rem;padding:.5rem 1rem;border-bottom:1px solid var(--border);flex-shrink:0}.drawer-tabs button[data-v-4331eb78]{padding:.4rem .75rem;font-size:.875rem;border:none;background:none;border-radius:var(--radius);cursor:pointer;color:var(--text-secondary)}.drawer-tabs button.active[data-v-4331eb78]{background:var(--btn-primary);color:#fff}.drawer-body[data-v-4331eb78]{flex:1;overflow:auto;padding:1rem 1.25rem}.detail-section[data-v-4331eb78]{margin-bottom:1.25rem}.detail-section h4[data-v-4331eb78]{font-size:.82rem;margin-bottom:.35rem;color:var(--text-secondary);font-weight:600;text-transform:uppercase;letter-spacing:.03em}.headers-pre[data-v-4331eb78],.body-pre[data-v-4331eb78]{margin:0;padding:.75rem;background:#f8fafc;border-radius:var(--radius);font-size:.8rem;line-height:1.4;overflow-x:auto;white-space:pre-wrap;word-break:break-all;max-height:280px;overflow-y:auto}.shadowsocks-page[data-v-2f9daaee]{display:flex;flex-direction:column;gap:1.25rem}.card[data-v-2f9daaee]{background:var(--bg-card);border-radius:var(--radius);padding:1.5rem;box-shadow:0 1px 3px #0000000f}.card h3[data-v-2f9daaee]{font-size:.95rem;font-weight:600;margin-bottom:.35rem}.desc[data-v-2f9daaee]{color:var(--text-secondary);font-size:.875rem;line-height:1.5}.enable-row[data-v-2f9daaee]{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.toggle-btn[data-v-2f9daaee]{flex-shrink:0;width:44px;height:24px;border-radius:12px;background:var(--switch-off);padding:2px;border:none;cursor:pointer;transition:background .2s;margin-top:.2rem}.toggle-btn.on[data-v-2f9daaee]{background:var(--switch-on)}.toggle-btn[data-v-2f9daaee]:disabled{opacity:.5;cursor:not-allowed}.toggle-knob[data-v-2f9daaee]{display:block;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 3px #0003}.toggle-btn.on .toggle-knob[data-v-2f9daaee]{transform:translate(20px)}.fields[data-v-2f9daaee]{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1rem}.field-wide[data-v-2f9daaee]{grid-column:span 2}.field label[data-v-2f9daaee]{display:block;font-size:.875rem;margin-bottom:.35rem;color:var(--text-secondary)}.field input[data-v-2f9daaee],.field select[data-v-2f9daaee]{width:100%;padding:.5rem .75rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.9rem}.password-wrap[data-v-2f9daaee]{position:relative}.password-wrap input[data-v-2f9daaee]{padding-right:2.5rem}.eye-btn[data-v-2f9daaee]{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--text-secondary);padding:.2rem;display:flex;align-items:center}.eye-btn svg[data-v-2f9daaee]{width:1rem;height:1rem}.eye-btn[data-v-2f9daaee]:hover{color:var(--text-primary)}.actions[data-v-2f9daaee]{margin-top:.25rem}.btn[data-v-2f9daaee]{display:inline-flex;align-items:center;gap:.35rem;padding:.45rem .85rem;font-size:.875rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);cursor:pointer;color:var(--text-primary);transition:background .15s}.btn[data-v-2f9daaee]:hover:not(:disabled){background:#f1f5f9}.btn[data-v-2f9daaee]:disabled{opacity:.5;cursor:not-allowed}.btn.primary[data-v-2f9daaee]{background:var(--btn-primary);color:#fff;border-color:var(--btn-primary)}.btn.primary[data-v-2f9daaee]:hover:not(:disabled){background:var(--btn-primary-hover);border-color:var(--btn-primary-hover)}.btn.danger[data-v-2f9daaee]{color:#dc2626;border-color:#fecaca}.btn.danger[data-v-2f9daaee]:hover:not(:disabled){background:#fef2f2}.btn.icon-only[data-v-2f9daaee]{padding:.45rem}.btn.icon-only svg[data-v-2f9daaee]{width:.9rem;height:.9rem}.btn-spinner[data-v-2f9daaee]{width:.85rem;height:.85rem;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin-2f9daaee .6s linear infinite;flex-shrink:0}@keyframes spin-2f9daaee{to{transform:rotate(360deg)}}.status-header[data-v-2f9daaee]{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.status-header h3[data-v-2f9daaee]{margin-bottom:0}.status-actions[data-v-2f9daaee]{display:flex;gap:.5rem}.status-line[data-v-2f9daaee]{display:flex;align-items:center;gap:.5rem;margin-bottom:.35rem}.status-dot[data-v-2f9daaee]{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.on[data-v-2f9daaee]{background:var(--switch-on);box-shadow:0 0 0 3px #22c55e33;animation:pulse-2f9daaee 2s ease-in-out infinite}.status-dot.off[data-v-2f9daaee]{background:#cbd5e1}@keyframes pulse-2f9daaee{0%,to{box-shadow:0 0 0 3px #22c55e33}50%{box-shadow:0 0 0 5px #22c55e14}}.status-on[data-v-2f9daaee]{color:var(--switch-on);font-weight:600;font-size:.9rem}.status-off[data-v-2f9daaee]{color:var(--text-secondary);font-size:.9rem}.status-pid[data-v-2f9daaee],.status-port[data-v-2f9daaee]{font-size:.82rem;color:var(--text-secondary)}.status-error[data-v-2f9daaee]{font-size:.875rem;color:#dc2626;margin-top:.35rem}.log-section[data-v-2f9daaee]{margin-top:1rem;border-top:1px solid var(--border);padding-top:.75rem}.log-toggle[data-v-2f9daaee]{display:flex;align-items:center;gap:.35rem;background:none;border:none;cursor:pointer;font-size:.875rem;color:var(--text-secondary);padding:0}.log-toggle svg[data-v-2f9daaee]{width:.9rem;height:.9rem;transition:transform .15s}.log-toggle[data-v-2f9daaee]:hover{color:var(--text-primary)}.log-count[data-v-2f9daaee]{font-size:.78rem;background:#f1f5f9;padding:.1rem .4rem;border-radius:999px}.log-pre[data-v-2f9daaee]{margin-top:.75rem;padding:.75rem;background:#0f172a;color:#94a3b8;border-radius:var(--radius);font-size:.78rem;line-height:1.5;max-height:240px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}:root{--bg-sidebar: #1e293b;--bg-sidebar-hover: #334155;--bg-sidebar-active: #2563eb;--text-sidebar: #e2e8f0;--text-sidebar-muted: #94a3b8;--bg-main: #f8fafc;--bg-card: #ffffff;--text-primary: #0f172a;--text-secondary: #64748b;--border: #e2e8f0;--switch-on: #22c55e;--switch-off: #cbd5e1;--btn-primary: #2563eb;--btn-primary-hover: #1d4ed8;--radius: 8px;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font);background:var(--bg-main);color:var(--text-primary);line-height:1.5;min-height:100vh}#app{min-height:100vh;display:flex;flex-direction:column}button{font-family:inherit;cursor:pointer;border:none;border-radius:var(--radius)}input,select{font-family:inherit;border-radius:var(--radius);outline:none;transition:border-color .15s}input:focus,select:focus{border-color:var(--btn-primary);box-shadow:0 0 0 3px #2563eb1f}a{color:var(--btn-primary);text-decoration:none}a:hover{text-decoration:underline}
|
package/dist/index.html
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>PAC 代理控制台</title>
|
|
7
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-BmlymXKx.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/assets/index-QepWtMiX.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<div id="app"></div>
|
package/lib/server.js
CHANGED
|
@@ -13,7 +13,7 @@ import { startProxyServer, stopProxyServer, getProxyStatus } from './proxy-serve
|
|
|
13
13
|
import { startMitmProxyServer, stopMitmProxyServer, getMitmProxyStatus, getCaCertPath, hasCaCert } from './mitm-proxy-server.js';
|
|
14
14
|
import { setSystemProxy, clearSystemProxy } from './system-proxy.js';
|
|
15
15
|
import { generatePacJs } from './pac-file.js';
|
|
16
|
-
import { startSslocal, stopSslocal, getSslocalStatus } from './sslocal-manager.js';
|
|
16
|
+
import { startSslocal, stopSslocal, getSslocalStatus, getSslocalCiphers } from './sslocal-manager.js';
|
|
17
17
|
|
|
18
18
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
19
19
|
const envDir = path.resolve(__dirname, '..');
|
|
@@ -235,11 +235,6 @@ export async function startServer(port) {
|
|
|
235
235
|
}
|
|
236
236
|
});
|
|
237
237
|
|
|
238
|
-
// SPA fallback
|
|
239
|
-
app.get('*', (req, res) => {
|
|
240
|
-
res.sendFile(path.join(distPath, 'index.html'));
|
|
241
|
-
});
|
|
242
|
-
|
|
243
238
|
// ---------- sslocal API ----------
|
|
244
239
|
app.get('/api/local/sslocal', (req, res) => {
|
|
245
240
|
try { res.json(getSslocalConfig()); }
|
|
@@ -249,17 +244,24 @@ export async function startServer(port) {
|
|
|
249
244
|
app.put('/api/local/sslocal', async (req, res) => {
|
|
250
245
|
try {
|
|
251
246
|
const cfg = setSslocalConfig(req.body);
|
|
252
|
-
// 若已启用且进程未运行则启动;若禁用则停止
|
|
253
247
|
if (cfg.enabled && cfg.server) {
|
|
254
248
|
const status = getSslocalStatus();
|
|
255
249
|
if (!status.running) await startSslocal(cfg);
|
|
250
|
+
else { await stopSslocal(); await startSslocal(cfg); } // 配置变更时重启
|
|
256
251
|
} else if (!cfg.enabled) {
|
|
257
252
|
await stopSslocal();
|
|
258
253
|
}
|
|
254
|
+
// 更新上游代理使配置立即生效
|
|
255
|
+
await applyProxyService();
|
|
259
256
|
res.json(cfg);
|
|
260
257
|
} catch (e) { res.status(500).json({ error: String(e.message) }); }
|
|
261
258
|
});
|
|
262
259
|
|
|
260
|
+
app.get('/api/local/sslocal-ciphers', (req, res) => {
|
|
261
|
+
try { res.json(getSslocalCiphers()); }
|
|
262
|
+
catch (e) { res.status(500).json({ error: String(e.message) }); }
|
|
263
|
+
});
|
|
264
|
+
|
|
263
265
|
app.get('/api/local/sslocal-status', (req, res) => {
|
|
264
266
|
try { res.json(getSslocalStatus()); }
|
|
265
267
|
catch (e) { res.status(500).json({ running: false, pid: null, error: String(e.message), logs: [] }); }
|
|
@@ -281,6 +283,11 @@ export async function startServer(port) {
|
|
|
281
283
|
} catch (e) { res.status(500).json({ error: String(e.message) }); }
|
|
282
284
|
});
|
|
283
285
|
|
|
286
|
+
// SPA fallback
|
|
287
|
+
app.get('*', (req, res) => {
|
|
288
|
+
res.sendFile(path.join(distPath, 'index.html'));
|
|
289
|
+
});
|
|
290
|
+
|
|
284
291
|
const actualPort = await getPort({ port, portRange: [port, port + 100] });
|
|
285
292
|
const server = createServer(app);
|
|
286
293
|
|
package/lib/sslocal-manager.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { spawn } from 'child_process';
|
|
1
|
+
import { spawn, spawnSync } from 'child_process';
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import net from 'net';
|
|
4
4
|
import path from 'path';
|
|
@@ -72,6 +72,29 @@ function waitForPort(port, timeoutMs = 4000) {
|
|
|
72
72
|
});
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
+
export function getSslocalCiphers() {
|
|
76
|
+
try {
|
|
77
|
+
const binPath = getBinaryPath();
|
|
78
|
+
ensureExecutable(binPath);
|
|
79
|
+
const result = spawnSync(binPath, ['--help'], { encoding: 'utf-8', timeout: 3000 });
|
|
80
|
+
const output = (result.stdout || '') + (result.stderr || '');
|
|
81
|
+
// 匹配 [possible values: aes-256-gcm, chacha20-ietf-poly1305, ...]
|
|
82
|
+
const match = output.match(/\[possible values:\s*([^\]]+)\]/i);
|
|
83
|
+
if (match) {
|
|
84
|
+
return match[1].split(',').map((s) => s.trim()).filter(Boolean);
|
|
85
|
+
}
|
|
86
|
+
} catch (_) {}
|
|
87
|
+
// 回退到通用列表
|
|
88
|
+
return [
|
|
89
|
+
'aes-256-gcm',
|
|
90
|
+
'aes-128-gcm',
|
|
91
|
+
'chacha20-ietf-poly1305',
|
|
92
|
+
'2022-blake3-aes-256-gcm',
|
|
93
|
+
'2022-blake3-aes-128-gcm',
|
|
94
|
+
'2022-blake3-chacha20-poly1305',
|
|
95
|
+
];
|
|
96
|
+
}
|
|
97
|
+
|
|
75
98
|
export async function startSslocal(cfg) {
|
|
76
99
|
if (_proc) await stopSslocal();
|
|
77
100
|
|
package/package.json
CHANGED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
(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 r of o)if(r.type==="childList")for(const l of r.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&s(l)}).observe(document,{childList:!0,subtree:!0});function n(o){const r={};return o.integrity&&(r.integrity=o.integrity),o.referrerPolicy&&(r.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?r.credentials="include":o.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function s(o){if(o.ep)return;o.ep=!0;const r=n(o);fetch(o.href,r)}})();/**
|
|
2
|
-
* @vue/shared v3.5.29
|
|
3
|
-
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
4
|
-
* @license MIT
|
|
5
|
-
**/function lo(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const de={},nn=[],ut=()=>{},Br=()=>!1,us=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),io=e=>e.startsWith("onUpdate:"),Te=Object.assign,ao=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Si=Object.prototype.hasOwnProperty,ce=(e,t)=>Si.call(e,t),q=Array.isArray,sn=e=>Bn(e)==="[object Map]",dn=e=>Bn(e)==="[object Set]",Io=e=>Bn(e)==="[object Date]",Z=e=>typeof e=="function",xe=e=>typeof e=="string",dt=e=>typeof e=="symbol",ue=e=>e!==null&&typeof e=="object",Hr=e=>(ue(e)||Z(e))&&Z(e.then)&&Z(e.catch),Fr=Object.prototype.toString,Bn=e=>Fr.call(e),Ei=e=>Bn(e).slice(8,-1),jr=e=>Bn(e)==="[object Object]",co=e=>xe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,bn=lo(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),fs=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Ai=/-\w/g,Je=fs(e=>e.replace(Ai,t=>t.slice(1).toUpperCase())),Ti=/\B([A-Z])/g,Jt=fs(e=>e.replace(Ti,"-$1").toLowerCase()),ds=fs(e=>e.charAt(0).toUpperCase()+e.slice(1)),Es=fs(e=>e?`on${ds(e)}`:""),$t=(e,t)=>!Object.is(e,t),Jn=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},Gr=(e,t,n,s=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},ps=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Ri=e=>{const t=xe(e)?Number(e):NaN;return isNaN(t)?e:t};let Mo;const hs=()=>Mo||(Mo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function gs(e){if(q(e)){const t={};for(let n=0;n<e.length;n++){const s=e[n],o=xe(s)?Ni(s):gs(s);if(o)for(const r in o)t[r]=o[r]}return t}else if(xe(e)||ue(e))return e}const Pi=/;(?![^(]*\))/g,Oi=/:([^]+)/,ki=/\/\*[^]*?\*\//g;function Ni(e){const t={};return e.replace(ki,"").split(Pi).forEach(n=>{if(n){const s=n.split(Oi);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function _e(e){let t="";if(xe(e))t=e;else if(q(e))for(let n=0;n<e.length;n++){const s=_e(e[n]);s&&(t+=s+" ")}else if(ue(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const Ii="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Mi=lo(Ii);function Kr(e){return!!e||e===""}function $i(e,t){if(e.length!==t.length)return!1;let n=!0;for(let s=0;n&&s<e.length;s++)n=Dt(e[s],t[s]);return n}function Dt(e,t){if(e===t)return!0;let n=Io(e),s=Io(t);if(n||s)return n&&s?e.getTime()===t.getTime():!1;if(n=dt(e),s=dt(t),n||s)return e===t;if(n=q(e),s=q(t),n||s)return n&&s?$i(e,t):!1;if(n=ue(e),s=ue(t),n||s){if(!n||!s)return!1;const o=Object.keys(e).length,r=Object.keys(t).length;if(o!==r)return!1;for(const l in e){const a=e.hasOwnProperty(l),i=t.hasOwnProperty(l);if(a&&!i||!a&&i||!Dt(e[l],t[l]))return!1}}return String(e)===String(t)}function uo(e,t){return e.findIndex(n=>Dt(n,t))}const Wr=e=>!!(e&&e.__v_isRef===!0),z=e=>xe(e)?e:e==null?"":q(e)||ue(e)&&(e.toString===Fr||!Z(e.toString))?Wr(e)?z(e.value):JSON.stringify(e,zr,2):String(e),zr=(e,t)=>Wr(t)?zr(e,t.value):sn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,o],r)=>(n[As(s,r)+" =>"]=o,n),{})}:dn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>As(n))}:dt(t)?As(t):ue(t)&&!q(t)&&!jr(t)?String(t):t,As=(e,t="")=>{var n;return dt(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/**
|
|
6
|
-
* @vue/reactivity v3.5.29
|
|
7
|
-
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
8
|
-
* @license MIT
|
|
9
|
-
**/let He;class Li{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.__v_skip=!0,this.parent=He,!t&&He&&(this.index=(He.scopes||(He.scopes=[])).push(this)-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;t<n;t++)this.scopes[t].pause();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].resume();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].resume()}}run(t){if(this._active){const n=He;try{return He=this,t()}finally{He=n}}}on(){++this._on===1&&(this.prevScope=He,He=this)}off(){this._on>0&&--this._on===0&&(He=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n<s;n++)this.effects[n].stop();for(this.effects.length=0,n=0,s=this.cleanups.length;n<s;n++)this.cleanups[n]();if(this.cleanups.length=0,this.scopes){for(n=0,s=this.scopes.length;n<s;n++)this.scopes[n].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const o=this.parent.scopes.pop();o&&o!==this&&(this.parent.scopes[this.index]=o,o.index=this.index)}this.parent=void 0}}}function Di(){return He}let ge;const Ts=new WeakSet;class qr{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,He&&He.active&&He.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Ts.has(this)&&(Ts.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Qr(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,$o(this),Yr(this);const t=ge,n=Qe;ge=this,Qe=!0;try{return this.fn()}finally{Xr(this),ge=t,Qe=n,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)ho(t);this.deps=this.depsTail=void 0,$o(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Ts.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Fs(this)&&this.run()}get dirty(){return Fs(this)}}let Jr=0,wn,xn;function Qr(e,t=!1){if(e.flags|=8,t){e.next=xn,xn=e;return}e.next=wn,wn=e}function fo(){Jr++}function po(){if(--Jr>0)return;if(xn){let t=xn;for(xn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;wn;){let t=wn;for(wn=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 Yr(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Xr(e){let t,n=e.depsTail,s=n;for(;s;){const o=s.prevDep;s.version===-1?(s===n&&(n=o),ho(s),Vi(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=o}e.deps=t,e.depsTail=n}function Fs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Zr(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Zr(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===kn)||(e.globalVersion=kn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Fs(e))))return;e.flags|=2;const t=e.dep,n=ge,s=Qe;ge=e,Qe=!0;try{Yr(e);const o=e.fn(e._value);(t.version===0||$t(o,e._value))&&(e.flags|=128,e._value=o,t.version++)}catch(o){throw t.version++,o}finally{ge=n,Qe=s,Xr(e),e.flags&=-3}}function ho(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 r=n.computed.deps;r;r=r.nextDep)ho(r,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Vi(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 el=[];function wt(){el.push(Qe),Qe=!1}function xt(){const e=el.pop();Qe=e===void 0?!0:e}function $o(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ge;ge=void 0;try{t()}finally{ge=n}}}let kn=0;class Ui{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 go{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(!ge||!Qe||ge===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ge)n=this.activeLink=new Ui(ge,this),ge.deps?(n.prevDep=ge.depsTail,ge.depsTail.nextDep=n,ge.depsTail=n):ge.deps=ge.depsTail=n,tl(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=ge.depsTail,n.nextDep=void 0,ge.depsTail.nextDep=n,ge.depsTail=n,ge.deps===n&&(ge.deps=s)}return n}trigger(t){this.version++,kn++,this.notify(t)}notify(t){fo();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{po()}}}function tl(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)tl(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const js=new WeakMap,Wt=Symbol(""),Gs=Symbol(""),Nn=Symbol("");function Ne(e,t,n){if(Qe&&ge){let s=js.get(e);s||js.set(e,s=new Map);let o=s.get(n);o||(s.set(n,o=new go),o.map=s,o.key=n),o.track()}}function yt(e,t,n,s,o,r){const l=js.get(e);if(!l){kn++;return}const a=i=>{i&&i.trigger()};if(fo(),t==="clear")l.forEach(a);else{const i=q(e),u=i&&co(n);if(i&&n==="length"){const f=Number(s);l.forEach((d,m)=>{(m==="length"||m===Nn||!dt(m)&&m>=f)&&a(d)})}else switch((n!==void 0||l.has(void 0))&&a(l.get(n)),u&&a(l.get(Nn)),t){case"add":i?u&&a(l.get("length")):(a(l.get(Wt)),sn(e)&&a(l.get(Gs)));break;case"delete":i||(a(l.get(Wt)),sn(e)&&a(l.get(Gs)));break;case"set":sn(e)&&a(l.get(Wt));break}}po()}function Xt(e){const t=ie(e);return t===e?t:(Ne(t,"iterate",Nn),ze(e)?t:t.map(Xe))}function ms(e){return Ne(e=ie(e),"iterate",Nn),e}function Nt(e,t){return Ct(e)?ln(zt(e)?Xe(t):t):Xe(t)}const Bi={__proto__:null,[Symbol.iterator](){return Rs(this,Symbol.iterator,e=>Nt(this,e))},concat(...e){return Xt(this).concat(...e.map(t=>q(t)?Xt(t):t))},entries(){return Rs(this,"entries",e=>(e[1]=Nt(this,e[1]),e))},every(e,t){return ht(this,"every",e,t,void 0,arguments)},filter(e,t){return ht(this,"filter",e,t,n=>n.map(s=>Nt(this,s)),arguments)},find(e,t){return ht(this,"find",e,t,n=>Nt(this,n),arguments)},findIndex(e,t){return ht(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return ht(this,"findLast",e,t,n=>Nt(this,n),arguments)},findLastIndex(e,t){return ht(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return ht(this,"forEach",e,t,void 0,arguments)},includes(...e){return Ps(this,"includes",e)},indexOf(...e){return Ps(this,"indexOf",e)},join(e){return Xt(this).join(e)},lastIndexOf(...e){return Ps(this,"lastIndexOf",e)},map(e,t){return ht(this,"map",e,t,void 0,arguments)},pop(){return gn(this,"pop")},push(...e){return gn(this,"push",e)},reduce(e,...t){return Lo(this,"reduce",e,t)},reduceRight(e,...t){return Lo(this,"reduceRight",e,t)},shift(){return gn(this,"shift")},some(e,t){return ht(this,"some",e,t,void 0,arguments)},splice(...e){return gn(this,"splice",e)},toReversed(){return Xt(this).toReversed()},toSorted(e){return Xt(this).toSorted(e)},toSpliced(...e){return Xt(this).toSpliced(...e)},unshift(...e){return gn(this,"unshift",e)},values(){return Rs(this,"values",e=>Nt(this,e))}};function Rs(e,t,n){const s=ms(e),o=s[t]();return s!==e&&!ze(e)&&(o._next=o.next,o.next=()=>{const r=o._next();return r.done||(r.value=n(r.value)),r}),o}const Hi=Array.prototype;function ht(e,t,n,s,o,r){const l=ms(e),a=l!==e&&!ze(e),i=l[t];if(i!==Hi[t]){const d=i.apply(e,r);return a?Xe(d):d}let u=n;l!==e&&(a?u=function(d,m){return n.call(this,Nt(e,d),m,e)}:n.length>2&&(u=function(d,m){return n.call(this,d,m,e)}));const f=i.call(l,u,s);return a&&o?o(f):f}function Lo(e,t,n,s){const o=ms(e);let r=n;return o!==e&&(ze(e)?n.length>3&&(r=function(l,a,i){return n.call(this,l,a,i,e)}):r=function(l,a,i){return n.call(this,l,Nt(e,a),i,e)}),o[t](r,...s)}function Ps(e,t,n){const s=ie(e);Ne(s,"iterate",Nn);const o=s[t](...n);return(o===-1||o===!1)&&yo(n[0])?(n[0]=ie(n[0]),s[t](...n)):o}function gn(e,t,n=[]){wt(),fo();const s=ie(e)[t].apply(e,n);return po(),xt(),s}const Fi=lo("__proto__,__v_isRef,__isVue"),nl=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(dt));function ji(e){dt(e)||(e=String(e));const t=ie(this);return Ne(t,"has",e),t.hasOwnProperty(e)}class sl{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,r=this._isShallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return r;if(n==="__v_raw")return s===(o?r?Zi:il:r?ll:rl).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const l=q(t);if(!o){let i;if(l&&(i=Bi[n]))return i;if(n==="hasOwnProperty")return ji}const a=Reflect.get(t,n,Me(t)?t:s);if((dt(n)?nl.has(n):Fi(n))||(o||Ne(t,"get",n),r))return a;if(Me(a)){const i=l&&co(n)?a:a.value;return o&&ue(i)?es(i):i}return ue(a)?o?es(a):pn(a):a}}class ol extends sl{constructor(t=!1){super(!1,t)}set(t,n,s,o){let r=t[n];const l=q(t)&&co(n);if(!this._isShallow){const u=Ct(r);if(!ze(s)&&!Ct(s)&&(r=ie(r),s=ie(s)),!l&&Me(r)&&!Me(s))return u||(r.value=s),!0}const a=l?Number(n)<t.length:ce(t,n),i=Reflect.set(t,n,s,Me(t)?t:o);return t===ie(o)&&(a?$t(s,r)&&yt(t,"set",n,s):yt(t,"add",n,s)),i}deleteProperty(t,n){const s=ce(t,n);t[n];const o=Reflect.deleteProperty(t,n);return o&&s&&yt(t,"delete",n,void 0),o}has(t,n){const s=Reflect.has(t,n);return(!dt(n)||!nl.has(n))&&Ne(t,"has",n),s}ownKeys(t){return Ne(t,"iterate",q(t)?"length":Wt),Reflect.ownKeys(t)}}class Gi extends sl{constructor(t=!1){super(!0,t)}set(t,n){return!0}deleteProperty(t,n){return!0}}const Ki=new ol,Wi=new Gi,zi=new ol(!0);const Ks=e=>e,Gn=e=>Reflect.getPrototypeOf(e);function qi(e,t,n){return function(...s){const o=this.__v_raw,r=ie(o),l=sn(r),a=e==="entries"||e===Symbol.iterator&&l,i=e==="keys"&&l,u=o[e](...s),f=n?Ks:t?ln:Xe;return!t&&Ne(r,"iterate",i?Gs:Wt),Te(Object.create(u),{next(){const{value:d,done:m}=u.next();return m?{value:d,done:m}:{value:a?[f(d[0]),f(d[1])]:f(d),done:m}}})}}function Kn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Ji(e,t){const n={get(o){const r=this.__v_raw,l=ie(r),a=ie(o);e||($t(o,a)&&Ne(l,"get",o),Ne(l,"get",a));const{has:i}=Gn(l),u=t?Ks:e?ln:Xe;if(i.call(l,o))return u(r.get(o));if(i.call(l,a))return u(r.get(a));r!==l&&r.get(o)},get size(){const o=this.__v_raw;return!e&&Ne(ie(o),"iterate",Wt),o.size},has(o){const r=this.__v_raw,l=ie(r),a=ie(o);return e||($t(o,a)&&Ne(l,"has",o),Ne(l,"has",a)),o===a?r.has(o):r.has(o)||r.has(a)},forEach(o,r){const l=this,a=l.__v_raw,i=ie(a),u=t?Ks:e?ln:Xe;return!e&&Ne(i,"iterate",Wt),a.forEach((f,d)=>o.call(r,u(f),u(d),l))}};return Te(n,e?{add:Kn("add"),set:Kn("set"),delete:Kn("delete"),clear:Kn("clear")}:{add(o){!t&&!ze(o)&&!Ct(o)&&(o=ie(o));const r=ie(this);return Gn(r).has.call(r,o)||(r.add(o),yt(r,"add",o,o)),this},set(o,r){!t&&!ze(r)&&!Ct(r)&&(r=ie(r));const l=ie(this),{has:a,get:i}=Gn(l);let u=a.call(l,o);u||(o=ie(o),u=a.call(l,o));const f=i.call(l,o);return l.set(o,r),u?$t(r,f)&&yt(l,"set",o,r):yt(l,"add",o,r),this},delete(o){const r=ie(this),{has:l,get:a}=Gn(r);let i=l.call(r,o);i||(o=ie(o),i=l.call(r,o)),a&&a.call(r,o);const u=r.delete(o);return i&&yt(r,"delete",o,void 0),u},clear(){const o=ie(this),r=o.size!==0,l=o.clear();return r&&yt(o,"clear",void 0,void 0),l}}),["keys","values","entries",Symbol.iterator].forEach(o=>{n[o]=qi(o,e,t)}),n}function mo(e,t){const n=Ji(e,t);return(s,o,r)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?s:Reflect.get(ce(n,o)&&o in s?n:s,o,r)}const Qi={get:mo(!1,!1)},Yi={get:mo(!1,!0)},Xi={get:mo(!0,!1)};const rl=new WeakMap,ll=new WeakMap,il=new WeakMap,Zi=new WeakMap;function ea(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ta(e){return e.__v_skip||!Object.isExtensible(e)?0:ea(Ei(e))}function pn(e){return Ct(e)?e:vo(e,!1,Ki,Qi,rl)}function al(e){return vo(e,!1,zi,Yi,ll)}function es(e){return vo(e,!0,Wi,Xi,il)}function vo(e,t,n,s,o){if(!ue(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const r=ta(e);if(r===0)return e;const l=o.get(e);if(l)return l;const a=new Proxy(e,r===2?s:n);return o.set(e,a),a}function zt(e){return Ct(e)?zt(e.__v_raw):!!(e&&e.__v_isReactive)}function Ct(e){return!!(e&&e.__v_isReadonly)}function ze(e){return!!(e&&e.__v_isShallow)}function yo(e){return e?!!e.__v_raw:!1}function ie(e){const t=e&&e.__v_raw;return t?ie(t):e}function na(e){return!ce(e,"__v_skip")&&Object.isExtensible(e)&&Gr(e,"__v_skip",!0),e}const Xe=e=>ue(e)?pn(e):e,ln=e=>ue(e)?es(e):e;function Me(e){return e?e.__v_isRef===!0:!1}function ee(e){return cl(e,!1)}function sa(e){return cl(e,!0)}function cl(e,t){return Me(e)?e:new oa(e,t)}class oa{constructor(t,n){this.dep=new go,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:ie(t),this._value=n?t:Xe(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)||Ct(t);t=s?t:ie(t),$t(t,n)&&(this._rawValue=t,this._value=s?t:Xe(t),this.dep.trigger())}}function ft(e){return Me(e)?e.value:e}const ra={get:(e,t,n)=>t==="__v_raw"?e:ft(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const o=e[t];return Me(o)&&!Me(n)?(o.value=n,!0):Reflect.set(e,t,n,s)}};function ul(e){return zt(e)?e:new Proxy(e,ra)}class la{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new go(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=kn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&ge!==this)return Qr(this,!0),!0}get value(){const t=this.dep.track();return Zr(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function ia(e,t,n=!1){let s,o;return Z(e)?s=e:(s=e.get,o=e.set),new la(s,o,n)}const Wn={},ts=new WeakMap;let Gt;function aa(e,t=!1,n=Gt){if(n){let s=ts.get(n);s||ts.set(n,s=[]),s.push(e)}}function ca(e,t,n=de){const{immediate:s,deep:o,once:r,scheduler:l,augmentJob:a,call:i}=n,u=_=>o?_:ze(_)||o===!1||o===0?_t(_,1):_t(_);let f,d,m,g,v=!1,b=!1;if(Me(e)?(d=()=>e.value,v=ze(e)):zt(e)?(d=()=>u(e),v=!0):q(e)?(b=!0,v=e.some(_=>zt(_)||ze(_)),d=()=>e.map(_=>{if(Me(_))return _.value;if(zt(_))return u(_);if(Z(_))return i?i(_,2):_()})):Z(e)?t?d=i?()=>i(e,2):e:d=()=>{if(m){wt();try{m()}finally{xt()}}const _=Gt;Gt=f;try{return i?i(e,3,[g]):e(g)}finally{Gt=_}}:d=ut,t&&o){const _=d,N=o===!0?1/0:o;d=()=>_t(_(),N)}const E=Di(),$=()=>{f.stop(),E&&E.active&&ao(E.effects,f)};if(r&&t){const _=t;t=(...N)=>{_(...N),$()}}let R=b?new Array(e.length).fill(Wn):Wn;const T=_=>{if(!(!(f.flags&1)||!f.dirty&&!_))if(t){const N=f.run();if(o||v||(b?N.some((J,j)=>$t(J,R[j])):$t(N,R))){m&&m();const J=Gt;Gt=f;try{const j=[N,R===Wn?void 0:b&&R[0]===Wn?[]:R,g];R=N,i?i(t,3,j):t(...j)}finally{Gt=J}}}else f.run()};return a&&a(T),f=new qr(d),f.scheduler=l?()=>l(T,!1):T,g=_=>aa(_,!1,f),m=f.onStop=()=>{const _=ts.get(f);if(_){if(i)i(_,4);else for(const N of _)N();ts.delete(f)}},t?s?T(!0):R=f.run():l?l(T.bind(null,!0),!0):f.run(),$.pause=f.pause.bind(f),$.resume=f.resume.bind(f),$.stop=$,$}function _t(e,t=1/0,n){if(t<=0||!ue(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,Me(e))_t(e.value,t,n);else if(q(e))for(let s=0;s<e.length;s++)_t(e[s],t,n);else if(dn(e)||sn(e))e.forEach(s=>{_t(s,t,n)});else if(jr(e)){for(const s in e)_t(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&_t(e[s],t,n)}return e}/**
|
|
10
|
-
* @vue/runtime-core v3.5.29
|
|
11
|
-
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
12
|
-
* @license MIT
|
|
13
|
-
**/function Hn(e,t,n,s){try{return s?e(...s):e()}catch(o){vs(o,t,n)}}function Ze(e,t,n,s){if(Z(e)){const o=Hn(e,t,n,s);return o&&Hr(o)&&o.catch(r=>{vs(r,t,n)}),o}if(q(e)){const o=[];for(let r=0;r<e.length;r++)o.push(Ze(e[r],t,n,s));return o}}function vs(e,t,n,s=!0){const o=t?t.vnode:null,{errorHandler:r,throwUnhandledErrorInProduction:l}=t&&t.appContext.config||de;if(t){let a=t.parent;const i=t.proxy,u=`https://vuejs.org/error-reference/#runtime-${n}`;for(;a;){const f=a.ec;if(f){for(let d=0;d<f.length;d++)if(f[d](e,i,u)===!1)return}a=a.parent}if(r){wt(),Hn(r,null,10,[e,i,u]),xt();return}}ua(e,n,o,s,l)}function ua(e,t,n,s=!0,o=!1){if(o)throw e;console.error(e)}const De=[];let it=-1;const on=[];let It=null,Zt=0;const fl=Promise.resolve();let ns=null;function _o(e){const t=ns||fl;return e?t.then(this?e.bind(this):e):t}function fa(e){let t=it+1,n=De.length;for(;t<n;){const s=t+n>>>1,o=De[s],r=In(o);r<e||r===e&&o.flags&2?t=s+1:n=s}return t}function bo(e){if(!(e.flags&1)){const t=In(e),n=De[De.length-1];!n||!(e.flags&2)&&t>=In(n)?De.push(e):De.splice(fa(t),0,e),e.flags|=1,dl()}}function dl(){ns||(ns=fl.then(hl))}function da(e){q(e)?on.push(...e):It&&e.id===-1?It.splice(Zt+1,0,e):e.flags&1||(on.push(e),e.flags|=1),dl()}function Do(e,t,n=it+1){for(;n<De.length;n++){const s=De[n];if(s&&s.flags&2){if(e&&s.id!==e.uid)continue;De.splice(n,1),n--,s.flags&4&&(s.flags&=-2),s(),s.flags&4||(s.flags&=-2)}}}function pl(e){if(on.length){const t=[...new Set(on)].sort((n,s)=>In(n)-In(s));if(on.length=0,It){It.push(...t);return}for(It=t,Zt=0;Zt<It.length;Zt++){const n=It[Zt];n.flags&4&&(n.flags&=-2),n.flags&8||n(),n.flags&=-2}It=null,Zt=0}}const In=e=>e.id==null?e.flags&2?-1:1/0:e.id;function hl(e){try{for(it=0;it<De.length;it++){const t=De[it];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Hn(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;it<De.length;it++){const t=De[it];t&&(t.flags&=-2)}it=-1,De.length=0,pl(),ns=null,(De.length||on.length)&&hl()}}let je=null,gl=null;function ss(e){const t=je;return je=e,gl=e&&e.type.__scopeId||null,t}function ct(e,t=je,n){if(!t||e._n)return e;const s=(...o)=>{s._d&&ls(-1);const r=ss(t);let l;try{l=e(...o)}finally{ss(r),s._d&&ls(1)}return l};return s._n=!0,s._c=!0,s._d=!0,s}function Ae(e,t){if(je===null)return e;const n=ws(je),s=e.dirs||(e.dirs=[]);for(let o=0;o<t.length;o++){let[r,l,a,i=de]=t[o];r&&(Z(r)&&(r={mounted:r,updated:r}),r.deep&&_t(l),s.push({dir:r,instance:n,value:l,oldValue:void 0,arg:a,modifiers:i}))}return e}function Ht(e,t,n,s){const o=e.dirs,r=t&&t.dirs;for(let l=0;l<o.length;l++){const a=o[l];r&&(a.oldValue=r[l].value);let i=a.dir[s];i&&(wt(),Ze(i,n,8,[e.el,a,e,t]),xt())}}function Qn(e,t){if(Ie){let n=Ie.provides;const s=Ie.parent&&Ie.parent.provides;s===n&&(n=Ie.provides=Object.create(s)),n[e]=t}}function Ye(e,t,n=!1){const s=Wl();if(s||rn){let o=rn?rn._context.provides:s?s.parent==null||s.ce?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides:void 0;if(o&&e in o)return o[e];if(arguments.length>1)return n&&Z(t)?t.call(s&&s.proxy):t}}const pa=Symbol.for("v-scx"),ha=()=>Ye(pa);function Cn(e,t,n){return ml(e,t,n)}function ml(e,t,n=de){const{immediate:s,deep:o,flush:r,once:l}=n,a=Te({},n),i=t&&s||!t&&r!=="post";let u;if(Vn){if(r==="sync"){const g=ha();u=g.__watcherHandles||(g.__watcherHandles=[])}else if(!i){const g=()=>{};return g.stop=ut,g.resume=ut,g.pause=ut,g}}const f=Ie;a.call=(g,v,b)=>Ze(g,f,v,b);let d=!1;r==="post"?a.scheduler=g=>{ke(g,f&&f.suspense)}:r!=="sync"&&(d=!0,a.scheduler=(g,v)=>{v?g():bo(g)}),a.augmentJob=g=>{t&&(g.flags|=4),d&&(g.flags|=2,f&&(g.id=f.uid,g.i=f))};const m=ca(e,t,a);return Vn&&(u?u.push(m):i&&m()),m}function ga(e,t,n){const s=this.proxy,o=xe(e)?e.includes(".")?vl(s,e):()=>s[e]:e.bind(s,s);let r;Z(t)?r=t:(r=t.handler,n=t);const l=Fn(this),a=ml(o,r.bind(s),n);return l(),a}function vl(e,t){const n=t.split(".");return()=>{let s=e;for(let o=0;o<n.length&&s;o++)s=s[n[o]];return s}}const yl=Symbol("_vte"),ma=e=>e.__isTeleport,Sn=e=>e&&(e.disabled||e.disabled===""),Vo=e=>e&&(e.defer||e.defer===""),Uo=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Bo=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Ws=(e,t)=>{const n=e&&e.to;return xe(n)?t?t(n):null:n},_l={name:"Teleport",__isTeleport:!0,process(e,t,n,s,o,r,l,a,i,u){const{mc:f,pc:d,pbc:m,o:{insert:g,querySelector:v,createText:b,createComment:E}}=u,$=Sn(t.props);let{shapeFlag:R,children:T,dynamicChildren:_}=t;if(e==null){const N=t.el=b(""),J=t.anchor=b("");g(N,n,s),g(J,n,s);const j=(V,X)=>{R&16&&f(T,V,X,o,r,l,a,i)},le=()=>{const V=t.target=Ws(t.props,v),X=zs(V,t,b,g);V&&(l!=="svg"&&Uo(V)?l="svg":l!=="mathml"&&Bo(V)&&(l="mathml"),o&&o.isCE&&(o.ce._teleportTargets||(o.ce._teleportTargets=new Set)).add(V),$||(j(V,X),Yn(t,!1)))};$&&(j(n,J),Yn(t,!0)),Vo(t.props)?(t.el.__isMounted=!1,ke(()=>{le(),delete t.el.__isMounted},r)):le()}else{if(Vo(t.props)&&e.el.__isMounted===!1){ke(()=>{_l.process(e,t,n,s,o,r,l,a,i,u)},r);return}t.el=e.el,t.targetStart=e.targetStart;const N=t.anchor=e.anchor,J=t.target=e.target,j=t.targetAnchor=e.targetAnchor,le=Sn(e.props),V=le?n:J,X=le?N:j;if(l==="svg"||Uo(J)?l="svg":(l==="mathml"||Bo(J))&&(l="mathml"),_?(m(e.dynamicChildren,_,V,o,r,l,a),So(e,t,!0)):i||d(e,t,V,X,o,r,l,a,!1),$)le?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):zn(t,n,N,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const te=t.target=Ws(t.props,v);te&&zn(t,te,null,u,0)}else le&&zn(t,J,j,u,1);Yn(t,$)}},remove(e,t,n,{um:s,o:{remove:o}},r){const{shapeFlag:l,children:a,anchor:i,targetStart:u,targetAnchor:f,target:d,props:m}=e;if(d&&(o(u),o(f)),r&&o(i),l&16){const g=r||!Sn(m);for(let v=0;v<a.length;v++){const b=a[v];s(b,t,n,g,!!b.dynamicChildren)}}},move:zn,hydrate:va};function zn(e,t,n,{o:{insert:s},m:o},r=2){r===0&&s(e.targetAnchor,t,n);const{el:l,anchor:a,shapeFlag:i,children:u,props:f}=e,d=r===2;if(d&&s(l,t,n),(!d||Sn(f))&&i&16)for(let m=0;m<u.length;m++)o(u[m],t,n,2);d&&s(a,t,n)}function va(e,t,n,s,o,r,{o:{nextSibling:l,parentNode:a,querySelector:i,insert:u,createText:f}},d){function m(E,$){let R=$;for(;R;){if(R&&R.nodeType===8){if(R.data==="teleport start anchor")t.targetStart=R;else if(R.data==="teleport anchor"){t.targetAnchor=R,E._lpa=t.targetAnchor&&l(t.targetAnchor);break}}R=l(R)}}function g(E,$){$.anchor=d(l(E),$,a(E),n,s,o,r)}const v=t.target=Ws(t.props,i),b=Sn(t.props);if(v){const E=v._lpa||v.firstChild;t.shapeFlag&16&&(b?(g(e,t),m(v,E),t.targetAnchor||zs(v,t,f,u,a(e)===v?e:null)):(t.anchor=l(e),m(v,E),t.targetAnchor||zs(v,t,f,u),d(E&&l(E),t,v,n,s,o,r))),Yn(t,b)}else b&&t.shapeFlag&16&&(g(e,t),t.targetStart=e,t.targetAnchor=l(e));return t.anchor&&l(t.anchor)}const ya=_l;function Yn(e,t){const n=e.ctx;if(n&&n.ut){let s,o;for(t?(s=e.el,o=e.anchor):(s=e.targetStart,o=e.targetAnchor);s&&s!==o;)s.nodeType===1&&s.setAttribute("data-v-owner",n.uid),s=s.nextSibling;n.ut()}}function zs(e,t,n,s,o=null){const r=t.targetStart=n(""),l=t.targetAnchor=n("");return r[yl]=l,e&&(s(r,e,o),s(l,e,o)),l}const Ot=Symbol("_leaveCb"),mn=Symbol("_enterCb");function _a(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Ut(()=>{e.isMounted=!0}),Al(()=>{e.isUnmounting=!0}),e}const We=[Function,Array],ba={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:We,onEnter:We,onAfterEnter:We,onEnterCancelled:We,onBeforeLeave:We,onLeave:We,onAfterLeave:We,onLeaveCancelled:We,onBeforeAppear:We,onAppear:We,onAfterAppear:We,onAppearCancelled:We};function wa(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function qs(e,t,n,s,o){const{appear:r,mode:l,persisted:a=!1,onBeforeEnter:i,onEnter:u,onAfterEnter:f,onEnterCancelled:d,onBeforeLeave:m,onLeave:g,onAfterLeave:v,onLeaveCancelled:b,onBeforeAppear:E,onAppear:$,onAfterAppear:R,onAppearCancelled:T}=t,_=String(e.key),N=wa(n,e),J=(V,X)=>{V&&Ze(V,s,9,X)},j=(V,X)=>{const te=X[1];J(V,X),q(V)?V.every(L=>L.length<=1)&&te():V.length<=1&&te()},le={mode:l,persisted:a,beforeEnter(V){let X=i;if(!n.isMounted)if(r)X=E||i;else return;V[Ot]&&V[Ot](!0);const te=N[_];te&&en(e,te)&&te.el[Ot]&&te.el[Ot](),J(X,[V])},enter(V){if(N[_]===e)return;let X=u,te=f,L=d;if(!n.isMounted)if(r)X=$||u,te=R||f,L=T||d;else return;let se=!1;V[mn]=G=>{se||(se=!0,G?J(L,[V]):J(te,[V]),le.delayedLeave&&le.delayedLeave(),V[mn]=void 0)};const Ce=V[mn].bind(null,!1);X?j(X,[V,Ce]):Ce()},leave(V,X){const te=String(e.key);if(V[mn]&&V[mn](!0),n.isUnmounting)return X();J(m,[V]);let L=!1;V[Ot]=Ce=>{L||(L=!0,X(),Ce?J(b,[V]):J(v,[V]),V[Ot]=void 0,N[te]===e&&delete N[te])};const se=V[Ot].bind(null,!1);N[te]=e,g?j(g,[V,se]):se()},clone(V){return qs(V,t,n,s)}};return le}function Mn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Mn(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 bl(e,t=!1,n){let s=[],o=0;for(let r=0;r<e.length;r++){let l=e[r];const a=n==null?l.key:String(n)+String(l.key!=null?l.key:r);l.type===Ee?(l.patchFlag&128&&o++,s=s.concat(bl(l.children,t,a))):(t||l.type!==St)&&s.push(a!=null?qt(l,{key:a}):l)}if(o>1)for(let r=0;r<s.length;r++)s[r].patchFlag=-2;return s}function wl(e,t){return Z(e)?Te({name:e.name},t,{setup:e}):e}function xl(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Ho(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const os=new WeakMap;function En(e,t,n,s,o=!1){if(q(e)){e.forEach((b,E)=>En(b,t&&(q(t)?t[E]:t),n,s,o));return}if(An(s)&&!o){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&En(e,t,n,s.component.subTree);return}const r=s.shapeFlag&4?ws(s.component):s.el,l=o?null:r,{i:a,r:i}=e,u=t&&t.r,f=a.refs===de?a.refs={}:a.refs,d=a.setupState,m=ie(d),g=d===de?Br:b=>Ho(f,b)?!1:ce(m,b),v=(b,E)=>!(E&&Ho(f,E));if(u!=null&&u!==i){if(Fo(t),xe(u))f[u]=null,g(u)&&(d[u]=null);else if(Me(u)){const b=t;v(u,b.k)&&(u.value=null),b.k&&(f[b.k]=null)}}if(Z(i))Hn(i,a,12,[l,f]);else{const b=xe(i),E=Me(i);if(b||E){const $=()=>{if(e.f){const R=b?g(i)?d[i]:f[i]:v()||!e.k?i.value:f[e.k];if(o)q(R)&&ao(R,r);else if(q(R))R.includes(r)||R.push(r);else if(b)f[i]=[r],g(i)&&(d[i]=f[i]);else{const T=[r];v(i,e.k)&&(i.value=T),e.k&&(f[e.k]=T)}}else b?(f[i]=l,g(i)&&(d[i]=l)):E&&(v(i,e.k)&&(i.value=l),e.k&&(f[e.k]=l))};if(l){const R=()=>{$(),os.delete(e)};R.id=-1,os.set(e,R),ke(R,n)}else Fo(e),$()}}}function Fo(e){const t=os.get(e);t&&(t.flags|=8,os.delete(e))}hs().requestIdleCallback;hs().cancelIdleCallback;const An=e=>!!e.type.__asyncLoader,Cl=e=>e.type.__isKeepAlive;function xa(e,t){Sl(e,"a",t)}function Ca(e,t){Sl(e,"da",t)}function Sl(e,t,n=Ie){const s=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(ys(t,s,n),n){let o=n.parent;for(;o&&o.parent;)Cl(o.parent.vnode)&&Sa(s,t,n,o),o=o.parent}}function Sa(e,t,n,s){const o=ys(t,e,s,!0);wo(()=>{ao(s[t],o)},n)}function ys(e,t,n=Ie,s=!1){if(n){const o=n[e]||(n[e]=[]),r=t.__weh||(t.__weh=(...l)=>{wt();const a=Fn(n),i=Ze(t,n,e,l);return a(),xt(),i});return s?o.unshift(r):o.push(r),r}}const Et=e=>(t,n=Ie)=>{(!Vn||e==="sp")&&ys(e,(...s)=>t(...s),n)},Ea=Et("bm"),Ut=Et("m"),Aa=Et("bu"),El=Et("u"),Al=Et("bum"),wo=Et("um"),Ta=Et("sp"),Ra=Et("rtg"),Pa=Et("rtc");function Oa(e,t=Ie){ys("ec",e,t)}const ka="components";function $n(e,t){return Ia(ka,e,!0,t)||e}const Na=Symbol.for("v-ndc");function Ia(e,t,n=!0,s=!1){const o=je||Ie;if(o){const r=o.type;{const a=vc(r,!1);if(a&&(a===t||a===Je(t)||a===ds(Je(t))))return r}const l=jo(o[e]||r[e],t)||jo(o.appContext[e],t);return!l&&s?r:l}}function jo(e,t){return e&&(e[t]||e[Je(t)]||e[ds(Je(t))])}function Ln(e,t,n,s){let o;const r=n,l=q(e);if(l||xe(e)){const a=l&&zt(e);let i=!1,u=!1;a&&(i=!ze(e),u=Ct(e),e=ms(e)),o=new Array(e.length);for(let f=0,d=e.length;f<d;f++)o[f]=t(i?u?ln(Xe(e[f])):Xe(e[f]):e[f],f,void 0,r)}else if(typeof e=="number"){o=new Array(e);for(let a=0;a<e;a++)o[a]=t(a+1,a,void 0,r)}else if(ue(e))if(e[Symbol.iterator])o=Array.from(e,(a,i)=>t(a,i,void 0,r));else{const a=Object.keys(e);o=new Array(a.length);for(let i=0,u=a.length;i<u;i++){const f=a[i];o[i]=t(e[f],f,i,r)}}else o=[];return o}const Js=e=>e?zl(e)?ws(e):Js(e.parent):null,Tn=Te(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=>Js(e.parent),$root:e=>Js(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Rl(e),$forceUpdate:e=>e.f||(e.f=()=>{bo(e.update)}),$nextTick:e=>e.n||(e.n=_o.bind(e.proxy)),$watch:e=>ga.bind(e)}),Os=(e,t)=>e!==de&&!e.__isScriptSetup&&ce(e,t),Ma={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:o,props:r,accessCache:l,type:a,appContext:i}=e;if(t[0]!=="$"){const m=l[t];if(m!==void 0)switch(m){case 1:return s[t];case 2:return o[t];case 4:return n[t];case 3:return r[t]}else{if(Os(s,t))return l[t]=1,s[t];if(o!==de&&ce(o,t))return l[t]=2,o[t];if(ce(r,t))return l[t]=3,r[t];if(n!==de&&ce(n,t))return l[t]=4,n[t];Qs&&(l[t]=0)}}const u=Tn[t];let f,d;if(u)return t==="$attrs"&&Ne(e.attrs,"get",""),u(e);if((f=a.__cssModules)&&(f=f[t]))return f;if(n!==de&&ce(n,t))return l[t]=4,n[t];if(d=i.config.globalProperties,ce(d,t))return d[t]},set({_:e},t,n){const{data:s,setupState:o,ctx:r}=e;return Os(o,t)?(o[t]=n,!0):s!==de&&ce(s,t)?(s[t]=n,!0):ce(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:o,props:r,type:l}},a){let i;return!!(n[a]||e!==de&&a[0]!=="$"&&ce(e,a)||Os(t,a)||ce(r,a)||ce(s,a)||ce(Tn,a)||ce(o.config.globalProperties,a)||(i=l.__cssModules)&&i[a])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ce(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Go(e){return q(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Qs=!0;function $a(e){const t=Rl(e),n=e.proxy,s=e.ctx;Qs=!1,t.beforeCreate&&Ko(t.beforeCreate,e,"bc");const{data:o,computed:r,methods:l,watch:a,provide:i,inject:u,created:f,beforeMount:d,mounted:m,beforeUpdate:g,updated:v,activated:b,deactivated:E,beforeDestroy:$,beforeUnmount:R,destroyed:T,unmounted:_,render:N,renderTracked:J,renderTriggered:j,errorCaptured:le,serverPrefetch:V,expose:X,inheritAttrs:te,components:L,directives:se,filters:Ce}=t;if(u&&La(u,s,null),l)for(const U in l){const ne=l[U];Z(ne)&&(s[U]=ne.bind(n))}if(o){const U=o.call(n,n);ue(U)&&(e.data=pn(U))}if(Qs=!0,r)for(const U in r){const ne=r[U],pt=Z(ne)?ne.bind(n,n):Z(ne.get)?ne.get.bind(n,n):ut,Tt=!Z(ne)&&Z(ne.set)?ne.set.bind(n):ut,tt=Se({get:pt,set:Tt});Object.defineProperty(s,U,{enumerable:!0,configurable:!0,get:()=>tt.value,set:Ve=>tt.value=Ve})}if(a)for(const U in a)Tl(a[U],s,n,U);if(i){const U=Z(i)?i.call(n):i;Reflect.ownKeys(U).forEach(ne=>{Qn(ne,U[ne])})}f&&Ko(f,e,"c");function O(U,ne){q(ne)?ne.forEach(pt=>U(pt.bind(n))):ne&&U(ne.bind(n))}if(O(Ea,d),O(Ut,m),O(Aa,g),O(El,v),O(xa,b),O(Ca,E),O(Oa,le),O(Pa,J),O(Ra,j),O(Al,R),O(wo,_),O(Ta,V),q(X))if(X.length){const U=e.exposed||(e.exposed={});X.forEach(ne=>{Object.defineProperty(U,ne,{get:()=>n[ne],set:pt=>n[ne]=pt,enumerable:!0})})}else e.exposed||(e.exposed={});N&&e.render===ut&&(e.render=N),te!=null&&(e.inheritAttrs=te),L&&(e.components=L),se&&(e.directives=se),V&&xl(e)}function La(e,t,n=ut){q(e)&&(e=Ys(e));for(const s in e){const o=e[s];let r;ue(o)?"default"in o?r=Ye(o.from||s,o.default,!0):r=Ye(o.from||s):r=Ye(o),Me(r)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>r.value,set:l=>r.value=l}):t[s]=r}}function Ko(e,t,n){Ze(q(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Tl(e,t,n,s){let o=s.includes(".")?vl(n,s):()=>n[s];if(xe(e)){const r=t[e];Z(r)&&Cn(o,r)}else if(Z(e))Cn(o,e.bind(n));else if(ue(e))if(q(e))e.forEach(r=>Tl(r,t,n,s));else{const r=Z(e.handler)?e.handler.bind(n):t[e.handler];Z(r)&&Cn(o,r,e)}}function Rl(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:o,optionsCache:r,config:{optionMergeStrategies:l}}=e.appContext,a=r.get(t);let i;return a?i=a:!o.length&&!n&&!s?i=t:(i={},o.length&&o.forEach(u=>rs(i,u,l,!0)),rs(i,t,l)),ue(t)&&r.set(t,i),i}function rs(e,t,n,s=!1){const{mixins:o,extends:r}=t;r&&rs(e,r,n,!0),o&&o.forEach(l=>rs(e,l,n,!0));for(const l in t)if(!(s&&l==="expose")){const a=Da[l]||n&&n[l];e[l]=a?a(e[l],t[l]):t[l]}return e}const Da={data:Wo,props:zo,emits:zo,methods:_n,computed:_n,beforeCreate:$e,created:$e,beforeMount:$e,mounted:$e,beforeUpdate:$e,updated:$e,beforeDestroy:$e,beforeUnmount:$e,destroyed:$e,unmounted:$e,activated:$e,deactivated:$e,errorCaptured:$e,serverPrefetch:$e,components:_n,directives:_n,watch:Ua,provide:Wo,inject:Va};function Wo(e,t){return t?e?function(){return Te(Z(e)?e.call(this,this):e,Z(t)?t.call(this,this):t)}:t:e}function Va(e,t){return _n(Ys(e),Ys(t))}function Ys(e){if(q(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function $e(e,t){return e?[...new Set([].concat(e,t))]:t}function _n(e,t){return e?Te(Object.create(null),e,t):t}function zo(e,t){return e?q(e)&&q(t)?[...new Set([...e,...t])]:Te(Object.create(null),Go(e),Go(t??{})):t}function Ua(e,t){if(!e)return t;if(!t)return e;const n=Te(Object.create(null),e);for(const s in t)n[s]=$e(e[s],t[s]);return n}function Pl(){return{app:null,config:{isNativeTag:Br,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Ba=0;function Ha(e,t){return function(s,o=null){Z(s)||(s=Te({},s)),o!=null&&!ue(o)&&(o=null);const r=Pl(),l=new WeakSet,a=[];let i=!1;const u=r.app={_uid:Ba++,_component:s,_props:o,_container:null,_context:r,_instance:null,version:_c,get config(){return r.config},set config(f){},use(f,...d){return l.has(f)||(f&&Z(f.install)?(l.add(f),f.install(u,...d)):Z(f)&&(l.add(f),f(u,...d))),u},mixin(f){return r.mixins.includes(f)||r.mixins.push(f),u},component(f,d){return d?(r.components[f]=d,u):r.components[f]},directive(f,d){return d?(r.directives[f]=d,u):r.directives[f]},mount(f,d,m){if(!i){const g=u._ceVNode||me(s,o);return g.appContext=r,m===!0?m="svg":m===!1&&(m=void 0),e(g,f,m),i=!0,u._container=f,f.__vue_app__=u,ws(g.component)}},onUnmount(f){a.push(f)},unmount(){i&&(Ze(a,u._instance,16),e(null,u._container),delete u._container.__vue_app__)},provide(f,d){return r.provides[f]=d,u},runWithContext(f){const d=rn;rn=u;try{return f()}finally{rn=d}}};return u}}let rn=null;const Fa=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Je(t)}Modifiers`]||e[`${Jt(t)}Modifiers`];function ja(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||de;let o=n;const r=t.startsWith("update:"),l=r&&Fa(s,t.slice(7));l&&(l.trim&&(o=n.map(f=>xe(f)?f.trim():f)),l.number&&(o=n.map(ps)));let a,i=s[a=Es(t)]||s[a=Es(Je(t))];!i&&r&&(i=s[a=Es(Jt(t))]),i&&Ze(i,e,6,o);const u=s[a+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,Ze(u,e,6,o)}}const Ga=new WeakMap;function Ol(e,t,n=!1){const s=n?Ga:t.emitsCache,o=s.get(e);if(o!==void 0)return o;const r=e.emits;let l={},a=!1;if(!Z(e)){const i=u=>{const f=Ol(u,t,!0);f&&(a=!0,Te(l,f))};!n&&t.mixins.length&&t.mixins.forEach(i),e.extends&&i(e.extends),e.mixins&&e.mixins.forEach(i)}return!r&&!a?(ue(e)&&s.set(e,null),null):(q(r)?r.forEach(i=>l[i]=null):Te(l,r),ue(e)&&s.set(e,l),l)}function _s(e,t){return!e||!us(t)?!1:(t=t.slice(2).replace(/Once$/,""),ce(e,t[0].toLowerCase()+t.slice(1))||ce(e,Jt(t))||ce(e,t))}function qo(e){const{type:t,vnode:n,proxy:s,withProxy:o,propsOptions:[r],slots:l,attrs:a,emit:i,render:u,renderCache:f,props:d,data:m,setupState:g,ctx:v,inheritAttrs:b}=e,E=ss(e);let $,R;try{if(n.shapeFlag&4){const _=o||s,N=_;$=at(u.call(N,_,f,d,g,m,v)),R=a}else{const _=t;$=at(_.length>1?_(d,{attrs:a,slots:l,emit:i}):_(d,null)),R=t.props?a:Ka(a)}}catch(_){Rn.length=0,vs(_,e,1),$=me(St)}let T=$;if(R&&b!==!1){const _=Object.keys(R),{shapeFlag:N}=T;_.length&&N&7&&(r&&_.some(io)&&(R=Wa(R,r)),T=qt(T,R,!1,!0))}return n.dirs&&(T=qt(T,null,!1,!0),T.dirs=T.dirs?T.dirs.concat(n.dirs):n.dirs),n.transition&&Mn(T,n.transition),$=T,ss(E),$}const Ka=e=>{let t;for(const n in e)(n==="class"||n==="style"||us(n))&&((t||(t={}))[n]=e[n]);return t},Wa=(e,t)=>{const n={};for(const s in e)(!io(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function za(e,t,n){const{props:s,children:o,component:r}=e,{props:l,children:a,patchFlag:i}=t,u=r.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&i>=0){if(i&1024)return!0;if(i&16)return s?Jo(s,l,u):!!l;if(i&8){const f=t.dynamicProps;for(let d=0;d<f.length;d++){const m=f[d];if(kl(l,s,m)&&!_s(u,m))return!0}}}else return(o||a)&&(!a||!a.$stable)?!0:s===l?!1:s?l?Jo(s,l,u):!0:!!l;return!1}function Jo(e,t,n){const s=Object.keys(t);if(s.length!==Object.keys(e).length)return!0;for(let o=0;o<s.length;o++){const r=s[o];if(kl(t,e,r)&&!_s(n,r))return!0}return!1}function kl(e,t,n){const s=e[n],o=t[n];return n==="style"&&ue(s)&&ue(o)?!Dt(s,o):s!==o}function qa({vnode:e,parent:t},n){for(;t;){const s=t.subTree;if(s.suspense&&s.suspense.activeBranch===e&&(s.el=e.el),s===e)(e=t.vnode).el=n,t=t.parent;else break}}const Nl={},Il=()=>Object.create(Nl),Ml=e=>Object.getPrototypeOf(e)===Nl;function Ja(e,t,n,s=!1){const o={},r=Il();e.propsDefaults=Object.create(null),$l(e,t,o,r);for(const l in e.propsOptions[0])l in o||(o[l]=void 0);n?e.props=s?o:al(o):e.type.props?e.props=o:e.props=r,e.attrs=r}function Qa(e,t,n,s){const{props:o,attrs:r,vnode:{patchFlag:l}}=e,a=ie(o),[i]=e.propsOptions;let u=!1;if((s||l>0)&&!(l&16)){if(l&8){const f=e.vnode.dynamicProps;for(let d=0;d<f.length;d++){let m=f[d];if(_s(e.emitsOptions,m))continue;const g=t[m];if(i)if(ce(r,m))g!==r[m]&&(r[m]=g,u=!0);else{const v=Je(m);o[v]=Xs(i,a,v,g,e,!1)}else g!==r[m]&&(r[m]=g,u=!0)}}}else{$l(e,t,o,r)&&(u=!0);let f;for(const d in a)(!t||!ce(t,d)&&((f=Jt(d))===d||!ce(t,f)))&&(i?n&&(n[d]!==void 0||n[f]!==void 0)&&(o[d]=Xs(i,a,d,void 0,e,!0)):delete o[d]);if(r!==a)for(const d in r)(!t||!ce(t,d))&&(delete r[d],u=!0)}u&&yt(e.attrs,"set","")}function $l(e,t,n,s){const[o,r]=e.propsOptions;let l=!1,a;if(t)for(let i in t){if(bn(i))continue;const u=t[i];let f;o&&ce(o,f=Je(i))?!r||!r.includes(f)?n[f]=u:(a||(a={}))[f]=u:_s(e.emitsOptions,i)||(!(i in s)||u!==s[i])&&(s[i]=u,l=!0)}if(r){const i=ie(n),u=a||de;for(let f=0;f<r.length;f++){const d=r[f];n[d]=Xs(o,i,d,u[d],e,!ce(u,d))}}return l}function Xs(e,t,n,s,o,r){const l=e[n];if(l!=null){const a=ce(l,"default");if(a&&s===void 0){const i=l.default;if(l.type!==Function&&!l.skipFactory&&Z(i)){const{propsDefaults:u}=o;if(n in u)s=u[n];else{const f=Fn(o);s=u[n]=i.call(null,t),f()}}else s=i;o.ce&&o.ce._setProp(n,s)}l[0]&&(r&&!a?s=!1:l[1]&&(s===""||s===Jt(n))&&(s=!0))}return s}const Ya=new WeakMap;function Ll(e,t,n=!1){const s=n?Ya:t.propsCache,o=s.get(e);if(o)return o;const r=e.props,l={},a=[];let i=!1;if(!Z(e)){const f=d=>{i=!0;const[m,g]=Ll(d,t,!0);Te(l,m),g&&a.push(...g)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!r&&!i)return ue(e)&&s.set(e,nn),nn;if(q(r))for(let f=0;f<r.length;f++){const d=Je(r[f]);Qo(d)&&(l[d]=de)}else if(r)for(const f in r){const d=Je(f);if(Qo(d)){const m=r[f],g=l[d]=q(m)||Z(m)?{type:m}:Te({},m),v=g.type;let b=!1,E=!0;if(q(v))for(let $=0;$<v.length;++$){const R=v[$],T=Z(R)&&R.name;if(T==="Boolean"){b=!0;break}else T==="String"&&(E=!1)}else b=Z(v)&&v.name==="Boolean";g[0]=b,g[1]=E,(b||ce(g,"default"))&&a.push(d)}}const u=[l,a];return ue(e)&&s.set(e,u),u}function Qo(e){return e[0]!=="$"&&!bn(e)}const xo=e=>e==="_"||e==="_ctx"||e==="$stable",Co=e=>q(e)?e.map(at):[at(e)],Xa=(e,t,n)=>{if(t._n)return t;const s=ct((...o)=>Co(t(...o)),n);return s._c=!1,s},Dl=(e,t,n)=>{const s=e._ctx;for(const o in e){if(xo(o))continue;const r=e[o];if(Z(r))t[o]=Xa(o,r,s);else if(r!=null){const l=Co(r);t[o]=()=>l}}},Vl=(e,t)=>{const n=Co(t);e.slots.default=()=>n},Ul=(e,t,n)=>{for(const s in t)(n||!xo(s))&&(e[s]=t[s])},Za=(e,t,n)=>{const s=e.slots=Il();if(e.vnode.shapeFlag&32){const o=t._;o?(Ul(s,t,n),n&&Gr(s,"_",o,!0)):Dl(t,s)}else t&&Vl(e,t)},ec=(e,t,n)=>{const{vnode:s,slots:o}=e;let r=!0,l=de;if(s.shapeFlag&32){const a=t._;a?n&&a===1?r=!1:Ul(o,t,n):(r=!t.$stable,Dl(t,o)),l=t}else t&&(Vl(e,t),l={default:1});if(r)for(const a in o)!xo(a)&&l[a]==null&&delete o[a]},ke=rc;function tc(e){return nc(e)}function nc(e,t){const n=hs();n.__VUE__=!0;const{insert:s,remove:o,patchProp:r,createElement:l,createText:a,createComment:i,setText:u,setElementText:f,parentNode:d,nextSibling:m,setScopeId:g=ut,insertStaticContent:v}=e,b=(p,h,y,w=null,S=null,x=null,I=void 0,k=null,P=!!h.dynamicChildren)=>{if(p===h)return;p&&!en(p,h)&&(w=C(p),Ve(p,S,x,!0),p=null),h.patchFlag===-2&&(P=!1,h.dynamicChildren=null);const{type:A,ref:Q,shapeFlag:D}=h;switch(A){case bs:E(p,h,y,w);break;case St:$(p,h,y,w);break;case Ns:p==null&&R(h,y,w,I);break;case Ee:L(p,h,y,w,S,x,I,k,P);break;default:D&1?N(p,h,y,w,S,x,I,k,P):D&6?se(p,h,y,w,S,x,I,k,P):(D&64||D&128)&&A.process(p,h,y,w,S,x,I,k,P,K)}Q!=null&&S?En(Q,p&&p.ref,x,h||p,!h):Q==null&&p&&p.ref!=null&&En(p.ref,null,x,p,!0)},E=(p,h,y,w)=>{if(p==null)s(h.el=a(h.children),y,w);else{const S=h.el=p.el;h.children!==p.children&&u(S,h.children)}},$=(p,h,y,w)=>{p==null?s(h.el=i(h.children||""),y,w):h.el=p.el},R=(p,h,y,w)=>{[p.el,p.anchor]=v(p.children,h,y,w,p.el,p.anchor)},T=({el:p,anchor:h},y,w)=>{let S;for(;p&&p!==h;)S=m(p),s(p,y,w),p=S;s(h,y,w)},_=({el:p,anchor:h})=>{let y;for(;p&&p!==h;)y=m(p),o(p),p=y;o(h)},N=(p,h,y,w,S,x,I,k,P)=>{if(h.type==="svg"?I="svg":h.type==="math"&&(I="mathml"),p==null)J(h,y,w,S,x,I,k,P);else{const A=p.el&&p.el._isVueCE?p.el:null;try{A&&A._beginPatch(),V(p,h,S,x,I,k,P)}finally{A&&A._endPatch()}}},J=(p,h,y,w,S,x,I,k)=>{let P,A;const{props:Q,shapeFlag:D,transition:W,dirs:Y}=p;if(P=p.el=l(p.type,x,Q&&Q.is,Q),D&8?f(P,p.children):D&16&&le(p.children,P,null,w,S,ks(p,x),I,k),Y&&Ht(p,null,w,"created"),j(P,p,p.scopeId,I,w),Q){for(const he in Q)he!=="value"&&!bn(he)&&r(P,he,null,Q[he],x,w);"value"in Q&&r(P,"value",null,Q.value,x),(A=Q.onVnodeBeforeMount)&&rt(A,w,p)}Y&&Ht(p,null,w,"beforeMount");const re=sc(S,W);re&&W.beforeEnter(P),s(P,h,y),((A=Q&&Q.onVnodeMounted)||re||Y)&&ke(()=>{A&&rt(A,w,p),re&&W.enter(P),Y&&Ht(p,null,w,"mounted")},S)},j=(p,h,y,w,S)=>{if(y&&g(p,y),w)for(let x=0;x<w.length;x++)g(p,w[x]);if(S){let x=S.subTree;if(h===x||Fl(x.type)&&(x.ssContent===h||x.ssFallback===h)){const I=S.vnode;j(p,I,I.scopeId,I.slotScopeIds,S.parent)}}},le=(p,h,y,w,S,x,I,k,P=0)=>{for(let A=P;A<p.length;A++){const Q=p[A]=k?vt(p[A]):at(p[A]);b(null,Q,h,y,w,S,x,I,k)}},V=(p,h,y,w,S,x,I)=>{const k=h.el=p.el;let{patchFlag:P,dynamicChildren:A,dirs:Q}=h;P|=p.patchFlag&16;const D=p.props||de,W=h.props||de;let Y;if(y&&Ft(y,!1),(Y=W.onVnodeBeforeUpdate)&&rt(Y,y,h,p),Q&&Ht(h,p,y,"beforeUpdate"),y&&Ft(y,!0),(D.innerHTML&&W.innerHTML==null||D.textContent&&W.textContent==null)&&f(k,""),A?X(p.dynamicChildren,A,k,y,w,ks(h,S),x):I||ne(p,h,k,null,y,w,ks(h,S),x,!1),P>0){if(P&16)te(k,D,W,y,S);else if(P&2&&D.class!==W.class&&r(k,"class",null,W.class,S),P&4&&r(k,"style",D.style,W.style,S),P&8){const re=h.dynamicProps;for(let he=0;he<re.length;he++){const fe=re[he],Ue=D[fe],Be=W[fe];(Be!==Ue||fe==="value")&&r(k,fe,Ue,Be,S,y)}}P&1&&p.children!==h.children&&f(k,h.children)}else!I&&A==null&&te(k,D,W,y,S);((Y=W.onVnodeUpdated)||Q)&&ke(()=>{Y&&rt(Y,y,h,p),Q&&Ht(h,p,y,"updated")},w)},X=(p,h,y,w,S,x,I)=>{for(let k=0;k<h.length;k++){const P=p[k],A=h[k],Q=P.el&&(P.type===Ee||!en(P,A)||P.shapeFlag&198)?d(P.el):y;b(P,A,Q,null,w,S,x,I,!0)}},te=(p,h,y,w,S)=>{if(h!==y){if(h!==de)for(const x in h)!bn(x)&&!(x in y)&&r(p,x,h[x],null,S,w);for(const x in y){if(bn(x))continue;const I=y[x],k=h[x];I!==k&&x!=="value"&&r(p,x,k,I,S,w)}"value"in y&&r(p,"value",h.value,y.value,S)}},L=(p,h,y,w,S,x,I,k,P)=>{const A=h.el=p?p.el:a(""),Q=h.anchor=p?p.anchor:a("");let{patchFlag:D,dynamicChildren:W,slotScopeIds:Y}=h;Y&&(k=k?k.concat(Y):Y),p==null?(s(A,y,w),s(Q,y,w),le(h.children||[],y,Q,S,x,I,k,P)):D>0&&D&64&&W&&p.dynamicChildren&&p.dynamicChildren.length===W.length?(X(p.dynamicChildren,W,y,S,x,I,k),(h.key!=null||S&&h===S.subTree)&&So(p,h,!0)):ne(p,h,y,Q,S,x,I,k,P)},se=(p,h,y,w,S,x,I,k,P)=>{h.slotScopeIds=k,p==null?h.shapeFlag&512?S.ctx.activate(h,y,w,I,P):Ce(h,y,w,S,x,I,P):G(p,h,P)},Ce=(p,h,y,w,S,x,I)=>{const k=p.component=dc(p,w,S);if(Cl(p)&&(k.ctx.renderer=K),pc(k,!1,I),k.asyncDep){if(S&&S.registerDep(k,O,I),!p.el){const P=k.subTree=me(St);$(null,P,h,y),p.placeholder=P.el}}else O(k,p,h,y,S,x,I)},G=(p,h,y)=>{const w=h.component=p.component;if(za(p,h,y))if(w.asyncDep&&!w.asyncResolved){U(w,h,y);return}else w.next=h,w.update();else h.el=p.el,w.vnode=h},O=(p,h,y,w,S,x,I)=>{const k=()=>{if(p.isMounted){let{next:D,bu:W,u:Y,parent:re,vnode:he}=p;{const st=Bl(p);if(st){D&&(D.el=he.el,U(p,D,I)),st.asyncDep.then(()=>{ke(()=>{p.isUnmounted||A()},S)});return}}let fe=D,Ue;Ft(p,!1),D?(D.el=he.el,U(p,D,I)):D=he,W&&Jn(W),(Ue=D.props&&D.props.onVnodeBeforeUpdate)&&rt(Ue,re,D,he),Ft(p,!0);const Be=qo(p),nt=p.subTree;p.subTree=Be,b(nt,Be,d(nt.el),C(nt),p,S,x),D.el=Be.el,fe===null&&qa(p,Be.el),Y&&ke(Y,S),(Ue=D.props&&D.props.onVnodeUpdated)&&ke(()=>rt(Ue,re,D,he),S)}else{let D;const{el:W,props:Y}=h,{bm:re,m:he,parent:fe,root:Ue,type:Be}=p,nt=An(h);Ft(p,!1),re&&Jn(re),!nt&&(D=Y&&Y.onVnodeBeforeMount)&&rt(D,fe,h),Ft(p,!0);{Ue.ce&&Ue.ce._hasShadowRoot()&&Ue.ce._injectChildStyle(Be);const st=p.subTree=qo(p);b(null,st,y,w,p,S,x),h.el=st.el}if(he&&ke(he,S),!nt&&(D=Y&&Y.onVnodeMounted)){const st=h;ke(()=>rt(D,fe,st),S)}(h.shapeFlag&256||fe&&An(fe.vnode)&&fe.vnode.shapeFlag&256)&&p.a&&ke(p.a,S),p.isMounted=!0,h=y=w=null}};p.scope.on();const P=p.effect=new qr(k);p.scope.off();const A=p.update=P.run.bind(P),Q=p.job=P.runIfDirty.bind(P);Q.i=p,Q.id=p.uid,P.scheduler=()=>bo(Q),Ft(p,!0),A()},U=(p,h,y)=>{h.component=p;const w=p.vnode.props;p.vnode=h,p.next=null,Qa(p,h.props,w,y),ec(p,h.children,y),wt(),Do(p),xt()},ne=(p,h,y,w,S,x,I,k,P=!1)=>{const A=p&&p.children,Q=p?p.shapeFlag:0,D=h.children,{patchFlag:W,shapeFlag:Y}=h;if(W>0){if(W&128){Tt(A,D,y,w,S,x,I,k,P);return}else if(W&256){pt(A,D,y,w,S,x,I,k,P);return}}Y&8?(Q&16&&Ke(A,S,x),D!==A&&f(y,D)):Q&16?Y&16?Tt(A,D,y,w,S,x,I,k,P):Ke(A,S,x,!0):(Q&8&&f(y,""),Y&16&&le(D,y,w,S,x,I,k,P))},pt=(p,h,y,w,S,x,I,k,P)=>{p=p||nn,h=h||nn;const A=p.length,Q=h.length,D=Math.min(A,Q);let W;for(W=0;W<D;W++){const Y=h[W]=P?vt(h[W]):at(h[W]);b(p[W],Y,y,null,S,x,I,k,P)}A>Q?Ke(p,S,x,!0,!1,D):le(h,y,w,S,x,I,k,P,D)},Tt=(p,h,y,w,S,x,I,k,P)=>{let A=0;const Q=h.length;let D=p.length-1,W=Q-1;for(;A<=D&&A<=W;){const Y=p[A],re=h[A]=P?vt(h[A]):at(h[A]);if(en(Y,re))b(Y,re,y,null,S,x,I,k,P);else break;A++}for(;A<=D&&A<=W;){const Y=p[D],re=h[W]=P?vt(h[W]):at(h[W]);if(en(Y,re))b(Y,re,y,null,S,x,I,k,P);else break;D--,W--}if(A>D){if(A<=W){const Y=W+1,re=Y<Q?h[Y].el:w;for(;A<=W;)b(null,h[A]=P?vt(h[A]):at(h[A]),y,re,S,x,I,k,P),A++}}else if(A>W)for(;A<=D;)Ve(p[A],S,x,!0),A++;else{const Y=A,re=A,he=new Map;for(A=re;A<=W;A++){const Fe=h[A]=P?vt(h[A]):at(h[A]);Fe.key!=null&&he.set(Fe.key,A)}let fe,Ue=0;const Be=W-re+1;let nt=!1,st=0;const hn=new Array(Be);for(A=0;A<Be;A++)hn[A]=0;for(A=Y;A<=D;A++){const Fe=p[A];if(Ue>=Be){Ve(Fe,S,x,!0);continue}let ot;if(Fe.key!=null)ot=he.get(Fe.key);else for(fe=re;fe<=W;fe++)if(hn[fe-re]===0&&en(Fe,h[fe])){ot=fe;break}ot===void 0?Ve(Fe,S,x,!0):(hn[ot-re]=A+1,ot>=st?st=ot:nt=!0,b(Fe,h[ot],y,null,S,x,I,k,P),Ue++)}const Oo=nt?oc(hn):nn;for(fe=Oo.length-1,A=Be-1;A>=0;A--){const Fe=re+A,ot=h[Fe],ko=h[Fe+1],No=Fe+1<Q?ko.el||Hl(ko):w;hn[A]===0?b(null,ot,y,No,S,x,I,k,P):nt&&(fe<0||A!==Oo[fe]?tt(ot,y,No,2):fe--)}}},tt=(p,h,y,w,S=null)=>{const{el:x,type:I,transition:k,children:P,shapeFlag:A}=p;if(A&6){tt(p.component.subTree,h,y,w);return}if(A&128){p.suspense.move(h,y,w);return}if(A&64){I.move(p,h,y,K);return}if(I===Ee){s(x,h,y);for(let D=0;D<P.length;D++)tt(P[D],h,y,w);s(p.anchor,h,y);return}if(I===Ns){T(p,h,y);return}if(w!==2&&A&1&&k)if(w===0)k.beforeEnter(x),s(x,h,y),ke(()=>k.enter(x),S);else{const{leave:D,delayLeave:W,afterLeave:Y}=k,re=()=>{p.ctx.isUnmounted?o(x):s(x,h,y)},he=()=>{x._isLeaving&&x[Ot](!0),D(x,()=>{re(),Y&&Y()})};W?W(x,re,he):he()}else s(x,h,y)},Ve=(p,h,y,w=!1,S=!1)=>{const{type:x,props:I,ref:k,children:P,dynamicChildren:A,shapeFlag:Q,patchFlag:D,dirs:W,cacheIndex:Y}=p;if(D===-2&&(S=!1),k!=null&&(wt(),En(k,null,y,p,!0),xt()),Y!=null&&(h.renderCache[Y]=void 0),Q&256){h.ctx.deactivate(p);return}const re=Q&1&&W,he=!An(p);let fe;if(he&&(fe=I&&I.onVnodeBeforeUnmount)&&rt(fe,h,p),Q&6)Bt(p.component,y,w);else{if(Q&128){p.suspense.unmount(y,w);return}re&&Ht(p,null,h,"beforeUnmount"),Q&64?p.type.remove(p,h,y,K,w):A&&!A.hasOnce&&(x!==Ee||D>0&&D&64)?Ke(A,h,y,!1,!0):(x===Ee&&D&384||!S&&Q&16)&&Ke(P,h,y),w&&Qt(p)}(he&&(fe=I&&I.onVnodeUnmounted)||re)&&ke(()=>{fe&&rt(fe,h,p),re&&Ht(p,null,h,"unmounted")},y)},Qt=p=>{const{type:h,el:y,anchor:w,transition:S}=p;if(h===Ee){Yt(y,w);return}if(h===Ns){_(p);return}const x=()=>{o(y),S&&!S.persisted&&S.afterLeave&&S.afterLeave()};if(p.shapeFlag&1&&S&&!S.persisted){const{leave:I,delayLeave:k}=S,P=()=>I(y,x);k?k(p.el,x,P):P()}else x()},Yt=(p,h)=>{let y;for(;p!==h;)y=m(p),o(p),p=y;o(h)},Bt=(p,h,y)=>{const{bum:w,scope:S,job:x,subTree:I,um:k,m:P,a:A}=p;Yo(P),Yo(A),w&&Jn(w),S.stop(),x&&(x.flags|=8,Ve(I,p,h,y)),k&&ke(k,h),ke(()=>{p.isUnmounted=!0},h)},Ke=(p,h,y,w=!1,S=!1,x=0)=>{for(let I=x;I<p.length;I++)Ve(p[I],h,y,w,S)},C=p=>{if(p.shapeFlag&6)return C(p.component.subTree);if(p.shapeFlag&128)return p.suspense.next();const h=m(p.anchor||p.el),y=h&&h[yl];return y?m(y):h};let B=!1;const M=(p,h,y)=>{let w;p==null?h._vnode&&(Ve(h._vnode,null,null,!0),w=h._vnode.component):b(h._vnode||null,p,h,null,null,null,y),h._vnode=p,B||(B=!0,Do(w),pl(),B=!1)},K={p:b,um:Ve,m:tt,r:Qt,mt:Ce,mc:le,pc:ne,pbc:X,n:C,o:e};return{render:M,hydrate:void 0,createApp:Ha(M)}}function ks({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 Ft({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function sc(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function So(e,t,n=!1){const s=e.children,o=t.children;if(q(s)&&q(o))for(let r=0;r<s.length;r++){const l=s[r];let a=o[r];a.shapeFlag&1&&!a.dynamicChildren&&((a.patchFlag<=0||a.patchFlag===32)&&(a=o[r]=vt(o[r]),a.el=l.el),!n&&a.patchFlag!==-2&&So(l,a)),a.type===bs&&(a.patchFlag===-1&&(a=o[r]=vt(a)),a.el=l.el),a.type===St&&!a.el&&(a.el=l.el)}}function oc(e){const t=e.slice(),n=[0];let s,o,r,l,a;const i=e.length;for(s=0;s<i;s++){const u=e[s];if(u!==0){if(o=n[n.length-1],e[o]<u){t[s]=o,n.push(s);continue}for(r=0,l=n.length-1;r<l;)a=r+l>>1,e[n[a]]<u?r=a+1:l=a;u<e[n[r]]&&(r>0&&(t[s]=n[r-1]),n[r]=s)}}for(r=n.length,l=n[r-1];r-- >0;)n[r]=l,l=t[l];return n}function Bl(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Bl(t)}function Yo(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function Hl(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?Hl(t.subTree):null}const Fl=e=>e.__isSuspense;function rc(e,t){t&&t.pendingBranch?q(e)?t.effects.push(...e):t.effects.push(e):da(e)}const Ee=Symbol.for("v-fgt"),bs=Symbol.for("v-txt"),St=Symbol.for("v-cmt"),Ns=Symbol.for("v-stc"),Rn=[];let Ge=null;function H(e=!1){Rn.push(Ge=e?null:[])}function lc(){Rn.pop(),Ge=Rn[Rn.length-1]||null}let Dn=1;function ls(e,t=!1){Dn+=e,e<0&&Ge&&t&&(Ge.hasOnce=!0)}function jl(e){return e.dynamicChildren=Dn>0?Ge||nn:null,lc(),Dn>0&&Ge&&Ge.push(e),e}function F(e,t,n,s,o,r){return jl(c(e,t,n,s,o,r,!0))}function Gl(e,t,n,s,o){return jl(me(e,t,n,s,o,!0))}function is(e){return e?e.__v_isVNode===!0:!1}function en(e,t){return e.type===t.type&&e.key===t.key}const Kl=({key:e})=>e??null,Xn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?xe(e)||Me(e)||Z(e)?{i:je,r:e,k:t,f:!!n}:e:null);function c(e,t=null,n=null,s=0,o=null,r=e===Ee?0:1,l=!1,a=!1){const i={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Kl(t),ref:t&&Xn(t),scopeId:gl,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:r,patchFlag:s,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:je};return a?(Eo(i,n),r&128&&e.normalize(i)):n&&(i.shapeFlag|=xe(n)?8:16),Dn>0&&!l&&Ge&&(i.patchFlag>0||r&6)&&i.patchFlag!==32&&Ge.push(i),i}const me=ic;function ic(e,t=null,n=null,s=0,o=null,r=!1){if((!e||e===Na)&&(e=St),is(e)){const a=qt(e,t,!0);return n&&Eo(a,n),Dn>0&&!r&&Ge&&(a.shapeFlag&6?Ge[Ge.indexOf(e)]=a:Ge.push(a)),a.patchFlag=-2,a}if(yc(e)&&(e=e.__vccOpts),t){t=ac(t);let{class:a,style:i}=t;a&&!xe(a)&&(t.class=_e(a)),ue(i)&&(yo(i)&&!q(i)&&(i=Te({},i)),t.style=gs(i))}const l=xe(e)?1:Fl(e)?128:ma(e)?64:ue(e)?4:Z(e)?2:0;return c(e,t,n,s,o,l,r,!0)}function ac(e){return e?yo(e)||Ml(e)?Te({},e):e:null}function qt(e,t,n=!1,s=!1){const{props:o,ref:r,patchFlag:l,children:a,transition:i}=e,u=t?cc(o||{},t):o,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&Kl(u),ref:t&&t.ref?n&&r?q(r)?r.concat(Xn(t)):[r,Xn(t)]:Xn(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ee?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:i,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&qt(e.ssContent),ssFallback:e.ssFallback&&qt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return i&&s&&Mn(f,i.clone(f)),f}function pe(e=" ",t=0){return me(bs,null,e,t)}function ve(e="",t=!1){return t?(H(),Gl(St,null,e)):me(St,null,e)}function at(e){return e==null||typeof e=="boolean"?me(St):q(e)?me(Ee,null,e.slice()):is(e)?vt(e):me(bs,null,String(e))}function vt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:qt(e)}function Eo(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(q(t))n=16;else if(typeof t=="object")if(s&65){const o=t.default;o&&(o._c&&(o._d=!1),Eo(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!Ml(t)?t._ctx=je:o===3&&je&&(je.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Z(t)?(t={default:t,_ctx:je},n=32):(t=String(t),s&64?(n=16,t=[pe(t)]):n=8);e.children=t,e.shapeFlag|=n}function cc(...e){const t={};for(let n=0;n<e.length;n++){const s=e[n];for(const o in s)if(o==="class")t.class!==s.class&&(t.class=_e([t.class,s.class]));else if(o==="style")t.style=gs([t.style,s.style]);else if(us(o)){const r=t[o],l=s[o];l&&r!==l&&!(q(r)&&r.includes(l))&&(t[o]=r?[].concat(r,l):l)}else o!==""&&(t[o]=s[o])}return t}function rt(e,t,n,s=null){Ze(e,t,7,[n,s])}const uc=Pl();let fc=0;function dc(e,t,n){const s=e.type,o=(t?t.appContext:e.appContext)||uc,r={uid:fc++,vnode:e,type:s,parent:t,appContext:o,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Li(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(o.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Ll(s,o),emitsOptions:Ol(s,o),emit:null,emitted:null,propsDefaults:de,inheritAttrs:s.inheritAttrs,ctx:de,data:de,props:de,attrs:de,slots:de,refs:de,setupState:de,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return r.ctx={_:r},r.root=t?t.root:r,r.emit=ja.bind(null,r),e.ce&&e.ce(r),r}let Ie=null;const Wl=()=>Ie||je;let as,Zs;{const e=hs(),t=(n,s)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(s),r=>{o.length>1?o.forEach(l=>l(r)):o[0](r)}};as=t("__VUE_INSTANCE_SETTERS__",n=>Ie=n),Zs=t("__VUE_SSR_SETTERS__",n=>Vn=n)}const Fn=e=>{const t=Ie;return as(e),e.scope.on(),()=>{e.scope.off(),as(t)}},Xo=()=>{Ie&&Ie.scope.off(),as(null)};function zl(e){return e.vnode.shapeFlag&4}let Vn=!1;function pc(e,t=!1,n=!1){t&&Zs(t);const{props:s,children:o}=e.vnode,r=zl(e);Ja(e,s,r,t),Za(e,o,n||t);const l=r?hc(e,t):void 0;return t&&Zs(!1),l}function hc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Ma);const{setup:s}=n;if(s){wt();const o=e.setupContext=s.length>1?mc(e):null,r=Fn(e),l=Hn(s,e,0,[e.props,o]),a=Hr(l);if(xt(),r(),(a||e.sp)&&!An(e)&&xl(e),a){if(l.then(Xo,Xo),t)return l.then(i=>{Zo(e,i)}).catch(i=>{vs(i,e,0)});e.asyncDep=l}else Zo(e,l)}else ql(e)}function Zo(e,t,n){Z(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ue(t)&&(e.setupState=ul(t)),ql(e)}function ql(e,t,n){const s=e.type;e.render||(e.render=s.render||ut);{const o=Fn(e);wt();try{$a(e)}finally{xt(),o()}}}const gc={get(e,t){return Ne(e,"get",""),e[t]}};function mc(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,gc),slots:e.slots,emit:e.emit,expose:t}}function ws(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(ul(na(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Tn)return Tn[n](e)},has(t,n){return n in t||n in Tn}})):e.proxy}function vc(e,t=!0){return Z(e)?e.displayName||e.name:e.name||t&&e.__name}function yc(e){return Z(e)&&"__vccOpts"in e}const Se=(e,t)=>ia(e,t,Vn);function Jl(e,t,n){try{ls(-1);const s=arguments.length;return s===2?ue(t)&&!q(t)?is(t)?me(e,null,[t]):me(e,t):me(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&is(n)&&(n=[n]),me(e,t,n))}finally{ls(1)}}const _c="3.5.29";/**
|
|
14
|
-
* @vue/runtime-dom v3.5.29
|
|
15
|
-
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
16
|
-
* @license MIT
|
|
17
|
-
**/let eo;const er=typeof window<"u"&&window.trustedTypes;if(er)try{eo=er.createPolicy("vue",{createHTML:e=>e})}catch{}const Ql=eo?e=>eo.createHTML(e):e=>e,bc="http://www.w3.org/2000/svg",wc="http://www.w3.org/1998/Math/MathML",mt=typeof document<"u"?document:null,tr=mt&&mt.createElement("template"),xc={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"?mt.createElementNS(bc,e):t==="mathml"?mt.createElementNS(wc,e):n?mt.createElement(e,{is:n}):mt.createElement(e);return e==="select"&&s&&s.multiple!=null&&o.setAttribute("multiple",s.multiple),o},createText:e=>mt.createTextNode(e),createComment:e=>mt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>mt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,o,r){const l=n?n.previousSibling:t.lastChild;if(o&&(o===r||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===r||!(o=o.nextSibling)););else{tr.innerHTML=Ql(s==="svg"?`<svg>${e}</svg>`:s==="mathml"?`<math>${e}</math>`:e);const a=tr.content;if(s==="svg"||s==="mathml"){const i=a.firstChild;for(;i.firstChild;)a.appendChild(i.firstChild);a.removeChild(i)}t.insertBefore(a,n)}return[l?l.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Rt="transition",vn="animation",an=Symbol("_vtc"),Yl={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Cc=Te({},ba,Yl),jt=(e,t=[])=>{q(e)?e.forEach(n=>n(...t)):e&&e(...t)},nr=e=>e?q(e)?e.some(t=>t.length>1):e.length>1:!1;function Sc(e){const t={};for(const L in e)L in Yl||(t[L]=e[L]);if(e.css===!1)return t;const{name:n="v",type:s,duration:o,enterFromClass:r=`${n}-enter-from`,enterActiveClass:l=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:i=r,appearActiveClass:u=l,appearToClass:f=a,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:m=`${n}-leave-active`,leaveToClass:g=`${n}-leave-to`}=e,v=Ec(o),b=v&&v[0],E=v&&v[1],{onBeforeEnter:$,onEnter:R,onEnterCancelled:T,onLeave:_,onLeaveCancelled:N,onBeforeAppear:J=$,onAppear:j=R,onAppearCancelled:le=T}=t,V=(L,se,Ce,G)=>{L._enterCancelled=G,kt(L,se?f:a),kt(L,se?u:l),Ce&&Ce()},X=(L,se)=>{L._isLeaving=!1,kt(L,d),kt(L,g),kt(L,m),se&&se()},te=L=>(se,Ce)=>{const G=L?j:R,O=()=>V(se,L,Ce);jt(G,[se,O]),sr(()=>{kt(se,L?i:r),lt(se,L?f:a),nr(G)||or(se,s,b,O)})};return Te(t,{onBeforeEnter(L){jt($,[L]),lt(L,r),lt(L,l)},onBeforeAppear(L){jt(J,[L]),lt(L,i),lt(L,u)},onEnter:te(!1),onAppear:te(!0),onLeave(L,se){L._isLeaving=!0;const Ce=()=>X(L,se);lt(L,d),L._enterCancelled?(lt(L,m),to(L)):(to(L),lt(L,m)),sr(()=>{L._isLeaving&&(kt(L,d),lt(L,g),nr(_)||or(L,s,E,Ce))}),jt(_,[L,Ce])},onEnterCancelled(L){V(L,!1,void 0,!0),jt(T,[L])},onAppearCancelled(L){V(L,!0,void 0,!0),jt(le,[L])},onLeaveCancelled(L){X(L),jt(N,[L])}})}function Ec(e){if(e==null)return null;if(ue(e))return[Is(e.enter),Is(e.leave)];{const t=Is(e);return[t,t]}}function Is(e){return Ri(e)}function lt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[an]||(e[an]=new Set)).add(t)}function kt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[an];n&&(n.delete(t),n.size||(e[an]=void 0))}function sr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Ac=0;function or(e,t,n,s){const o=e._endId=++Ac,r=()=>{o===e._endId&&s()};if(n!=null)return setTimeout(r,n);const{type:l,timeout:a,propCount:i}=Xl(e,t);if(!l)return s();const u=l+"end";let f=0;const d=()=>{e.removeEventListener(u,m),r()},m=g=>{g.target===e&&++f>=i&&d()};setTimeout(()=>{f<i&&d()},a+1),e.addEventListener(u,m)}function Xl(e,t){const n=window.getComputedStyle(e),s=v=>(n[v]||"").split(", "),o=s(`${Rt}Delay`),r=s(`${Rt}Duration`),l=rr(o,r),a=s(`${vn}Delay`),i=s(`${vn}Duration`),u=rr(a,i);let f=null,d=0,m=0;t===Rt?l>0&&(f=Rt,d=l,m=r.length):t===vn?u>0&&(f=vn,d=u,m=i.length):(d=Math.max(l,u),f=d>0?l>u?Rt:vn:null,m=f?f===Rt?r.length:i.length:0);const g=f===Rt&&/\b(?:transform|all)(?:,|$)/.test(s(`${Rt}Property`).toString());return{type:f,timeout:d,propCount:m,hasTransform:g}}function rr(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((n,s)=>lr(n)+lr(e[s])))}function lr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function to(e){return(e?e.ownerDocument:document).body.offsetHeight}function Tc(e,t,n){const s=e[an];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const ir=Symbol("_vod"),Rc=Symbol("_vsh"),Pc=Symbol(""),Oc=/(?:^|;)\s*display\s*:/;function kc(e,t,n){const s=e.style,o=xe(n);let r=!1;if(n&&!o){if(t)if(xe(t))for(const l of t.split(";")){const a=l.slice(0,l.indexOf(":")).trim();n[a]==null&&Zn(s,a,"")}else for(const l in t)n[l]==null&&Zn(s,l,"");for(const l in n)l==="display"&&(r=!0),Zn(s,l,n[l])}else if(o){if(t!==n){const l=s[Pc];l&&(n+=";"+l),s.cssText=n,r=Oc.test(n)}}else t&&e.removeAttribute("style");ir in e&&(e[ir]=r?s.display:"",e[Rc]&&(s.display="none"))}const ar=/\s*!important$/;function Zn(e,t,n){if(q(n))n.forEach(s=>Zn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Nc(e,t);ar.test(n)?e.setProperty(Jt(s),n.replace(ar,""),"important"):e[s]=n}}const cr=["Webkit","Moz","ms"],Ms={};function Nc(e,t){const n=Ms[t];if(n)return n;let s=Je(t);if(s!=="filter"&&s in e)return Ms[t]=s;s=ds(s);for(let o=0;o<cr.length;o++){const r=cr[o]+s;if(r in e)return Ms[t]=r}return t}const ur="http://www.w3.org/1999/xlink";function fr(e,t,n,s,o,r=Mi(t)){s&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(ur,t.slice(6,t.length)):e.setAttributeNS(ur,t,n):n==null||r&&!Kr(n)?e.removeAttribute(t):e.setAttribute(t,r?"":dt(n)?String(n):n)}function dr(e,t,n,s,o){if(t==="innerHTML"||t==="textContent"){n!=null&&(e[t]=t==="innerHTML"?Ql(n):n);return}const r=e.tagName;if(t==="value"&&r!=="PROGRESS"&&!r.includes("-")){const a=r==="OPTION"?e.getAttribute("value")||"":e.value,i=n==null?e.type==="checkbox"?"on":"":String(n);(a!==i||!("_value"in e))&&(e.value=i),n==null&&e.removeAttribute(t),e._value=n;return}let l=!1;if(n===""||n==null){const a=typeof e[t];a==="boolean"?n=Kr(n):n==null&&a==="string"?(n="",l=!0):a==="number"&&(n=0,l=!0)}try{e[t]=n}catch{}l&&e.removeAttribute(o||t)}function bt(e,t,n,s){e.addEventListener(t,n,s)}function Ic(e,t,n,s){e.removeEventListener(t,n,s)}const pr=Symbol("_vei");function Mc(e,t,n,s,o=null){const r=e[pr]||(e[pr]={}),l=r[t];if(s&&l)l.value=s;else{const[a,i]=$c(t);if(s){const u=r[t]=Vc(s,o);bt(e,a,u,i)}else l&&(Ic(e,a,l,i),r[t]=void 0)}}const hr=/(?:Once|Passive|Capture)$/;function $c(e){let t;if(hr.test(e)){t={};let s;for(;s=e.match(hr);)e=e.slice(0,e.length-s[0].length),t[s[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Jt(e.slice(2)),t]}let $s=0;const Lc=Promise.resolve(),Dc=()=>$s||(Lc.then(()=>$s=0),$s=Date.now());function Vc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Ze(Uc(s,n.value),t,5,[s])};return n.value=e,n.attached=Dc(),n}function Uc(e,t){if(q(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>o=>!o._stopped&&s&&s(o))}else return t}const gr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Bc=(e,t,n,s,o,r)=>{const l=o==="svg";t==="class"?Tc(e,s,l):t==="style"?kc(e,n,s):us(t)?io(t)||Mc(e,t,n,s,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Hc(e,t,s,l))?(dr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&fr(e,t,s,l,r,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!xe(s))?dr(e,Je(t),s,r,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),fr(e,t,s,l))};function Hc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&gr(t)&&Z(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 gr(t)&&xe(n)?!1:t in e}const Zl=new WeakMap,ei=new WeakMap,cs=Symbol("_moveCb"),mr=Symbol("_enterCb"),Fc=e=>(delete e.props.mode,e),jc=Fc({name:"TransitionGroup",props:Te({},Cc,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Wl(),s=_a();let o,r;return El(()=>{if(!o.length)return;const l=e.moveClass||`${e.name||"v"}-move`;if(!qc(o[0].el,n.vnode.el,l)){o=[];return}o.forEach(Kc),o.forEach(Wc);const a=o.filter(zc);to(n.vnode.el),a.forEach(i=>{const u=i.el,f=u.style;lt(u,l),f.transform=f.webkitTransform=f.transitionDuration="";const d=u[cs]=m=>{m&&m.target!==u||(!m||m.propertyName.endsWith("transform"))&&(u.removeEventListener("transitionend",d),u[cs]=null,kt(u,l))};u.addEventListener("transitionend",d)}),o=[]}),()=>{const l=ie(e),a=Sc(l);let i=l.tag||Ee;if(o=[],r)for(let u=0;u<r.length;u++){const f=r[u];f.el&&f.el instanceof Element&&(o.push(f),Mn(f,qs(f,a,s,n)),Zl.set(f,ti(f.el)))}r=t.default?bl(t.default()):[];for(let u=0;u<r.length;u++){const f=r[u];f.key!=null&&Mn(f,qs(f,a,s,n))}return me(i,null,r)}}}),Gc=jc;function Kc(e){const t=e.el;t[cs]&&t[cs](),t[mr]&&t[mr]()}function Wc(e){ei.set(e,ti(e.el))}function zc(e){const t=Zl.get(e),n=ei.get(e),s=t.left-n.left,o=t.top-n.top;if(s||o){const r=e.el,l=r.style,a=r.getBoundingClientRect();let i=1,u=1;return r.offsetWidth&&(i=a.width/r.offsetWidth),r.offsetHeight&&(u=a.height/r.offsetHeight),(!Number.isFinite(i)||i===0)&&(i=1),(!Number.isFinite(u)||u===0)&&(u=1),Math.abs(i-1)<.01&&(i=1),Math.abs(u-1)<.01&&(u=1),l.transform=l.webkitTransform=`translate(${s/i}px,${o/u}px)`,l.transitionDuration="0s",e}}function ti(e){const t=e.getBoundingClientRect();return{left:t.left,top:t.top}}function qc(e,t,n){const s=e.cloneNode(),o=e[an];o&&o.forEach(a=>{a.split(/\s+/).forEach(i=>i&&s.classList.remove(i))}),n.split(/\s+/).forEach(a=>a&&s.classList.add(a)),s.style.display="none";const r=t.nodeType===1?t:t.parentNode;r.appendChild(s);const{hasTransform:l}=Xl(s);return r.removeChild(s),l}const Vt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return q(t)?n=>Jn(t,n):t};function Jc(e){e.target.composing=!0}function vr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const qe=Symbol("_assign");function yr(e,t,n){return t&&(e=e.trim()),n&&(e=ps(e)),e}const Oe={created(e,{modifiers:{lazy:t,trim:n,number:s}},o){e[qe]=Vt(o);const r=s||o.props&&o.props.type==="number";bt(e,t?"change":"input",l=>{l.target.composing||e[qe](yr(e.value,n,r))}),(n||r)&&bt(e,"change",()=>{e.value=yr(e.value,n,r)}),t||(bt(e,"compositionstart",Jc),bt(e,"compositionend",vr),bt(e,"change",vr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:o,number:r}},l){if(e[qe]=Vt(l),e.composing)return;const a=(r||e.type==="number")&&!/^0\d/.test(e.value)?ps(e.value):e.value,i=t??"";a!==i&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||o&&e.value.trim()===i)||(e.value=i))}},Qc={deep:!0,created(e,t,n){e[qe]=Vt(n),bt(e,"change",()=>{const s=e._modelValue,o=cn(e),r=e.checked,l=e[qe];if(q(s)){const a=uo(s,o),i=a!==-1;if(r&&!i)l(s.concat(o));else if(!r&&i){const u=[...s];u.splice(a,1),l(u)}}else if(dn(s)){const a=new Set(s);r?a.add(o):a.delete(o),l(a)}else l(ni(e,r))})},mounted:_r,beforeUpdate(e,t,n){e[qe]=Vt(n),_r(e,t,n)}};function _r(e,{value:t,oldValue:n},s){e._modelValue=t;let o;if(q(t))o=uo(t,s.props.value)>-1;else if(dn(t))o=t.has(s.props.value);else{if(t===n)return;o=Dt(t,ni(e,!0))}e.checked!==o&&(e.checked=o)}const Yc={created(e,{value:t},n){e.checked=Dt(t,n.props.value),e[qe]=Vt(n),bt(e,"change",()=>{e[qe](cn(e))})},beforeUpdate(e,{value:t,oldValue:n},s){e[qe]=Vt(s),t!==n&&(e.checked=Dt(t,s.props.value))}},Pn={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const o=dn(t);bt(e,"change",()=>{const r=Array.prototype.filter.call(e.options,l=>l.selected).map(l=>n?ps(cn(l)):cn(l));e[qe](e.multiple?o?new Set(r):r:r[0]),e._assigning=!0,_o(()=>{e._assigning=!1})}),e[qe]=Vt(s)},mounted(e,{value:t}){br(e,t)},beforeUpdate(e,t,n){e[qe]=Vt(n)},updated(e,{value:t}){e._assigning||br(e,t)}};function br(e,t){const n=e.multiple,s=q(t);if(!(n&&!s&&!dn(t))){for(let o=0,r=e.options.length;o<r;o++){const l=e.options[o],a=cn(l);if(n)if(s){const i=typeof a;i==="string"||i==="number"?l.selected=t.some(u=>String(u)===String(a)):l.selected=uo(t,a)>-1}else l.selected=t.has(a);else if(Dt(cn(l),t)){e.selectedIndex!==o&&(e.selectedIndex=o);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function cn(e){return"_value"in e?e._value:e.value}function ni(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Xc={created(e,t,n){qn(e,t,n,null,"created")},mounted(e,t,n){qn(e,t,n,null,"mounted")},beforeUpdate(e,t,n,s){qn(e,t,n,s,"beforeUpdate")},updated(e,t,n,s){qn(e,t,n,s,"updated")}};function Zc(e,t){switch(e){case"SELECT":return Pn;case"TEXTAREA":return Oe;default:switch(t){case"checkbox":return Qc;case"radio":return Yc;default:return Oe}}}function qn(e,t,n,s,o){const l=Zc(e.tagName,n.props&&n.props.type)[o];l&&l(e,t,n,s)}const eu=["ctrl","shift","alt","meta"],tu={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)=>eu.some(n=>e[`${n}Key`]&&!t.includes(n))},xs=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(o,...r)=>{for(let l=0;l<t.length;l++){const a=tu[t[l]];if(a&&a(o,t))return}return e(o,...r)})},nu=Te({patchProp:Bc},xc);let wr;function su(){return wr||(wr=tc(nu))}const ou=(...e)=>{const t=su().createApp(...e),{mount:n}=t;return t.mount=s=>{const o=lu(s);if(!o)return;const r=t._component;!Z(r)&&!r.render&&!r.template&&(r.template=o.innerHTML),o.nodeType===1&&(o.textContent="");const l=n(o,!1,ru(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),l},t};function ru(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function lu(e){return xe(e)?document.querySelector(e):e}/*!
|
|
18
|
-
* vue-router v4.6.4
|
|
19
|
-
* (c) 2025 Eduardo San Martin Morote
|
|
20
|
-
* @license MIT
|
|
21
|
-
*/const tn=typeof document<"u";function si(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function iu(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&si(e.default)}const ae=Object.assign;function Ls(e,t){const n={};for(const s in t){const o=t[s];n[s]=et(o)?o.map(e):e(o)}return n}const On=()=>{},et=Array.isArray;function xr(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}const oi=/#/g,au=/&/g,cu=/\//g,uu=/=/g,fu=/\?/g,ri=/\+/g,du=/%5B/g,pu=/%5D/g,li=/%5E/g,hu=/%60/g,ii=/%7B/g,gu=/%7C/g,ai=/%7D/g,mu=/%20/g;function Ao(e){return e==null?"":encodeURI(""+e).replace(gu,"|").replace(du,"[").replace(pu,"]")}function vu(e){return Ao(e).replace(ii,"{").replace(ai,"}").replace(li,"^")}function no(e){return Ao(e).replace(ri,"%2B").replace(mu,"+").replace(oi,"%23").replace(au,"%26").replace(hu,"`").replace(ii,"{").replace(ai,"}").replace(li,"^")}function yu(e){return no(e).replace(uu,"%3D")}function _u(e){return Ao(e).replace(oi,"%23").replace(fu,"%3F")}function bu(e){return _u(e).replace(cu,"%2F")}function Un(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const wu=/\/$/,xu=e=>e.replace(wu,"");function Ds(e,t,n="/"){let s,o={},r="",l="";const a=t.indexOf("#");let i=t.indexOf("?");return i=a>=0&&i>a?-1:i,i>=0&&(s=t.slice(0,i),r=t.slice(i,a>0?a:t.length),o=e(r.slice(1))),a>=0&&(s=s||t.slice(0,a),l=t.slice(a,t.length)),s=Au(s??t,n),{fullPath:s+r+l,path:s,query:o,hash:Un(l)}}function Cu(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Cr(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Su(e,t,n){const s=t.matched.length-1,o=n.matched.length-1;return s>-1&&s===o&&un(t.matched[s],n.matched[o])&&ci(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function un(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function ci(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!Eu(e[n],t[n]))return!1;return!0}function Eu(e,t){return et(e)?Sr(e,t):et(t)?Sr(t,e):(e==null?void 0:e.valueOf())===(t==null?void 0:t.valueOf())}function Sr(e,t){return et(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function Au(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),o=s[s.length-1];(o===".."||o===".")&&s.push("");let r=n.length-1,l,a;for(l=0;l<s.length;l++)if(a=s[l],a!==".")if(a==="..")r>1&&r--;else break;return n.slice(0,r).join("/")+"/"+s.slice(l).join("/")}const Pt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let so=function(e){return e.pop="pop",e.push="push",e}({}),Vs=function(e){return e.back="back",e.forward="forward",e.unknown="",e}({});function Tu(e){if(!e)if(tn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),xu(e)}const Ru=/^[^#]+#/;function Pu(e,t){return e.replace(Ru,"#")+t}function Ou(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const Cs=()=>({left:window.scrollX,top:window.scrollY});function ku(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),o=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=Ou(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Er(e,t){return(history.state?history.state.position-t:-1)+e}const oo=new Map;function Nu(e,t){oo.set(e,t)}function Iu(e){const t=oo.get(e);return oo.delete(e),t}function Mu(e){return typeof e=="string"||e&&typeof e=="object"}function ui(e){return typeof e=="string"||typeof e=="symbol"}let we=function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e}({});const fi=Symbol("");we.MATCHER_NOT_FOUND+"",we.NAVIGATION_GUARD_REDIRECT+"",we.NAVIGATION_ABORTED+"",we.NAVIGATION_CANCELLED+"",we.NAVIGATION_DUPLICATED+"";function fn(e,t){return ae(new Error,{type:e,[fi]:!0},t)}function gt(e,t){return e instanceof Error&&fi in e&&(t==null||!!(e.type&t))}const $u=["params","query","hash"];function Lu(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of $u)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function Du(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;s<n.length;++s){const o=n[s].replace(ri," "),r=o.indexOf("="),l=Un(r<0?o:o.slice(0,r)),a=r<0?null:Un(o.slice(r+1));if(l in t){let i=t[l];et(i)||(i=t[l]=[i]),i.push(a)}else t[l]=a}return t}function Ar(e){let t="";for(let n in e){const s=e[n];if(n=yu(n),s==null){s!==void 0&&(t+=(t.length?"&":"")+n);continue}(et(s)?s.map(o=>o&&no(o)):[s&&no(s)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function Vu(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=et(s)?s.map(o=>o==null?null:""+o):s==null?s:""+s)}return t}const Uu=Symbol(""),Tr=Symbol(""),Ss=Symbol(""),To=Symbol(""),ro=Symbol("");function yn(){let e=[];function t(s){return e.push(s),()=>{const o=e.indexOf(s);o>-1&&e.splice(o,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Mt(e,t,n,s,o,r=l=>l()){const l=s&&(s.enterCallbacks[o]=s.enterCallbacks[o]||[]);return()=>new Promise((a,i)=>{const u=m=>{m===!1?i(fn(we.NAVIGATION_ABORTED,{from:n,to:t})):m instanceof Error?i(m):Mu(m)?i(fn(we.NAVIGATION_GUARD_REDIRECT,{from:t,to:m})):(l&&s.enterCallbacks[o]===l&&typeof m=="function"&&l.push(m),a())},f=r(()=>e.call(s&&s.instances[o],t,n,u));let d=Promise.resolve(f);e.length<3&&(d=d.then(u)),d.catch(m=>i(m))})}function Us(e,t,n,s,o=r=>r()){const r=[];for(const l of e)for(const a in l.components){let i=l.components[a];if(!(t!=="beforeRouteEnter"&&!l.instances[a]))if(si(i)){const u=(i.__vccOpts||i)[t];u&&r.push(Mt(u,n,s,l,a,o))}else{let u=i();r.push(()=>u.then(f=>{if(!f)throw new Error(`Couldn't resolve component "${a}" at "${l.path}"`);const d=iu(f)?f.default:f;l.mods[a]=f,l.components[a]=d;const m=(d.__vccOpts||d)[t];return m&&Mt(m,n,s,l,a,o)()}))}}return r}function Bu(e,t){const n=[],s=[],o=[],r=Math.max(t.matched.length,e.matched.length);for(let l=0;l<r;l++){const a=t.matched[l];a&&(e.matched.find(u=>un(u,a))?s.push(a):n.push(a));const i=e.matched[l];i&&(t.matched.find(u=>un(u,i))||o.push(i))}return[n,s,o]}/*!
|
|
22
|
-
* vue-router v4.6.4
|
|
23
|
-
* (c) 2025 Eduardo San Martin Morote
|
|
24
|
-
* @license MIT
|
|
25
|
-
*/let Hu=()=>location.protocol+"//"+location.host;function di(e,t){const{pathname:n,search:s,hash:o}=t,r=e.indexOf("#");if(r>-1){let l=o.includes(e.slice(r))?e.slice(r).length:1,a=o.slice(l);return a[0]!=="/"&&(a="/"+a),Cr(a,"")}return Cr(n,e)+s+o}function Fu(e,t,n,s){let o=[],r=[],l=null;const a=({state:m})=>{const g=di(e,location),v=n.value,b=t.value;let E=0;if(m){if(n.value=g,t.value=m,l&&l===v){l=null;return}E=b?m.position-b.position:0}else s(g);o.forEach($=>{$(n.value,v,{delta:E,type:so.pop,direction:E?E>0?Vs.forward:Vs.back:Vs.unknown})})};function i(){l=n.value}function u(m){o.push(m);const g=()=>{const v=o.indexOf(m);v>-1&&o.splice(v,1)};return r.push(g),g}function f(){if(document.visibilityState==="hidden"){const{history:m}=window;if(!m.state)return;m.replaceState(ae({},m.state,{scroll:Cs()}),"")}}function d(){for(const m of r)m();r=[],window.removeEventListener("popstate",a),window.removeEventListener("pagehide",f),document.removeEventListener("visibilitychange",f)}return window.addEventListener("popstate",a),window.addEventListener("pagehide",f),document.addEventListener("visibilitychange",f),{pauseListeners:i,listen:u,destroy:d}}function Rr(e,t,n,s=!1,o=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:o?Cs():null}}function ju(e){const{history:t,location:n}=window,s={value:di(e,n)},o={value:t.state};o.value||r(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function r(i,u,f){const d=e.indexOf("#"),m=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+i:Hu()+e+i;try{t[f?"replaceState":"pushState"](u,"",m),o.value=u}catch(g){console.error(g),n[f?"replace":"assign"](m)}}function l(i,u){r(i,ae({},t.state,Rr(o.value.back,i,o.value.forward,!0),u,{position:o.value.position}),!0),s.value=i}function a(i,u){const f=ae({},o.value,t.state,{forward:i,scroll:Cs()});r(f.current,f,!0),r(i,ae({},Rr(s.value,i,null),{position:f.position+1},u),!1),s.value=i}return{location:s,state:o,push:a,replace:l}}function Gu(e){e=Tu(e);const t=ju(e),n=Fu(e,t.state,t.location,t.replace);function s(r,l=!0){l||n.pauseListeners(),history.go(r)}const o=ae({location:"",base:e,go:s,createHref:Pu.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}let Kt=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e}({});var Re=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e}(Re||{});const Ku={type:Kt.Static,value:""},Wu=/[a-zA-Z0-9_]/;function zu(e){if(!e)return[[]];if(e==="/")return[[Ku]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${u}": ${g}`)}let n=Re.Static,s=n;const o=[];let r;function l(){r&&o.push(r),r=[]}let a=0,i,u="",f="";function d(){u&&(n===Re.Static?r.push({type:Kt.Static,value:u}):n===Re.Param||n===Re.ParamRegExp||n===Re.ParamRegExpEnd?(r.length>1&&(i==="*"||i==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),r.push({type:Kt.Param,value:u,regexp:f,repeatable:i==="*"||i==="+",optional:i==="*"||i==="?"})):t("Invalid state to consume buffer"),u="")}function m(){u+=i}for(;a<e.length;){if(i=e[a++],i==="\\"&&n!==Re.ParamRegExp){s=n,n=Re.EscapeNext;continue}switch(n){case Re.Static:i==="/"?(u&&d(),l()):i===":"?(d(),n=Re.Param):m();break;case Re.EscapeNext:m(),n=s;break;case Re.Param:i==="("?n=Re.ParamRegExp:Wu.test(i)?m():(d(),n=Re.Static,i!=="*"&&i!=="?"&&i!=="+"&&a--);break;case Re.ParamRegExp:i===")"?f[f.length-1]=="\\"?f=f.slice(0,-1)+i:n=Re.ParamRegExpEnd:f+=i;break;case Re.ParamRegExpEnd:d(),n=Re.Static,i!=="*"&&i!=="?"&&i!=="+"&&a--,f="";break;default:t("Unknown state");break}}return n===Re.ParamRegExp&&t(`Unfinished custom RegExp for param "${u}"`),d(),l(),o}const Pr="[^/]+?",qu={sensitive:!1,strict:!1,start:!0,end:!0};var Le=function(e){return e[e._multiplier=10]="_multiplier",e[e.Root=90]="Root",e[e.Segment=40]="Segment",e[e.SubSegment=30]="SubSegment",e[e.Static=40]="Static",e[e.Dynamic=20]="Dynamic",e[e.BonusCustomRegExp=10]="BonusCustomRegExp",e[e.BonusWildcard=-50]="BonusWildcard",e[e.BonusRepeatable=-20]="BonusRepeatable",e[e.BonusOptional=-8]="BonusOptional",e[e.BonusStrict=.7000000000000001]="BonusStrict",e[e.BonusCaseSensitive=.25]="BonusCaseSensitive",e}(Le||{});const Ju=/[.+*?^${}()[\]/\\]/g;function Qu(e,t){const n=ae({},qu,t),s=[];let o=n.start?"^":"";const r=[];for(const u of e){const f=u.length?[]:[Le.Root];n.strict&&!u.length&&(o+="/");for(let d=0;d<u.length;d++){const m=u[d];let g=Le.Segment+(n.sensitive?Le.BonusCaseSensitive:0);if(m.type===Kt.Static)d||(o+="/"),o+=m.value.replace(Ju,"\\$&"),g+=Le.Static;else if(m.type===Kt.Param){const{value:v,repeatable:b,optional:E,regexp:$}=m;r.push({name:v,repeatable:b,optional:E});const R=$||Pr;if(R!==Pr){g+=Le.BonusCustomRegExp;try{`${R}`}catch(_){throw new Error(`Invalid custom RegExp for param "${v}" (${R}): `+_.message)}}let T=b?`((?:${R})(?:/(?:${R}))*)`:`(${R})`;d||(T=E&&u.length<2?`(?:/${T})`:"/"+T),E&&(T+="?"),o+=T,g+=Le.Dynamic,E&&(g+=Le.BonusOptional),b&&(g+=Le.BonusRepeatable),R===".*"&&(g+=Le.BonusWildcard)}f.push(g)}s.push(f)}if(n.strict&&n.end){const u=s.length-1;s[u][s[u].length-1]+=Le.BonusStrict}n.strict||(o+="/?"),n.end?o+="$":n.strict&&!o.endsWith("/")&&(o+="(?:/|$)");const l=new RegExp(o,n.sensitive?"":"i");function a(u){const f=u.match(l),d={};if(!f)return null;for(let m=1;m<f.length;m++){const g=f[m]||"",v=r[m-1];d[v.name]=g&&v.repeatable?g.split("/"):g}return d}function i(u){let f="",d=!1;for(const m of e){(!d||!f.endsWith("/"))&&(f+="/"),d=!1;for(const g of m)if(g.type===Kt.Static)f+=g.value;else if(g.type===Kt.Param){const{value:v,repeatable:b,optional:E}=g,$=v in u?u[v]:"";if(et($)&&!b)throw new Error(`Provided param "${v}" is an array but it is not repeatable (* or + modifiers)`);const R=et($)?$.join("/"):$;if(!R)if(E)m.length<2&&(f.endsWith("/")?f=f.slice(0,-1):d=!0);else throw new Error(`Missing required param "${v}"`);f+=R}}return f||"/"}return{re:l,score:s,keys:r,parse:a,stringify:i}}function Yu(e,t){let n=0;for(;n<e.length&&n<t.length;){const s=t[n]-e[n];if(s)return s;n++}return e.length<t.length?e.length===1&&e[0]===Le.Static+Le.Segment?-1:1:e.length>t.length?t.length===1&&t[0]===Le.Static+Le.Segment?1:-1:0}function pi(e,t){let n=0;const s=e.score,o=t.score;for(;n<s.length&&n<o.length;){const r=Yu(s[n],o[n]);if(r)return r;n++}if(Math.abs(o.length-s.length)===1){if(Or(s))return 1;if(Or(o))return-1}return o.length-s.length}function Or(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const Xu={strict:!1,end:!0,sensitive:!1};function Zu(e,t,n){const s=Qu(zu(e.path),n),o=ae(s,{record:e,parent:t,children:[],alias:[]});return t&&!o.record.aliasOf==!t.record.aliasOf&&t.children.push(o),o}function ef(e,t){const n=[],s=new Map;t=xr(Xu,t);function o(d){return s.get(d)}function r(d,m,g){const v=!g,b=Nr(d);b.aliasOf=g&&g.record;const E=xr(t,d),$=[b];if("alias"in d){const _=typeof d.alias=="string"?[d.alias]:d.alias;for(const N of _)$.push(Nr(ae({},b,{components:g?g.record.components:b.components,path:N,aliasOf:g?g.record:b})))}let R,T;for(const _ of $){const{path:N}=_;if(m&&N[0]!=="/"){const J=m.record.path,j=J[J.length-1]==="/"?"":"/";_.path=m.record.path+(N&&j+N)}if(R=Zu(_,m,E),g?g.alias.push(R):(T=T||R,T!==R&&T.alias.push(R),v&&d.name&&!Ir(R)&&l(d.name)),hi(R)&&i(R),b.children){const J=b.children;for(let j=0;j<J.length;j++)r(J[j],R,g&&g.children[j])}g=g||R}return T?()=>{l(T)}:On}function l(d){if(ui(d)){const m=s.get(d);m&&(s.delete(d),n.splice(n.indexOf(m),1),m.children.forEach(l),m.alias.forEach(l))}else{const m=n.indexOf(d);m>-1&&(n.splice(m,1),d.record.name&&s.delete(d.record.name),d.children.forEach(l),d.alias.forEach(l))}}function a(){return n}function i(d){const m=sf(d,n);n.splice(m,0,d),d.record.name&&!Ir(d)&&s.set(d.record.name,d)}function u(d,m){let g,v={},b,E;if("name"in d&&d.name){if(g=s.get(d.name),!g)throw fn(we.MATCHER_NOT_FOUND,{location:d});E=g.record.name,v=ae(kr(m.params,g.keys.filter(T=>!T.optional).concat(g.parent?g.parent.keys.filter(T=>T.optional):[]).map(T=>T.name)),d.params&&kr(d.params,g.keys.map(T=>T.name))),b=g.stringify(v)}else if(d.path!=null)b=d.path,g=n.find(T=>T.re.test(b)),g&&(v=g.parse(b),E=g.record.name);else{if(g=m.name?s.get(m.name):n.find(T=>T.re.test(m.path)),!g)throw fn(we.MATCHER_NOT_FOUND,{location:d,currentLocation:m});E=g.record.name,v=ae({},m.params,d.params),b=g.stringify(v)}const $=[];let R=g;for(;R;)$.unshift(R.record),R=R.parent;return{name:E,path:b,params:v,matched:$,meta:nf($)}}e.forEach(d=>r(d));function f(){n.length=0,s.clear()}return{addRoute:r,resolve:u,removeRoute:l,clearRoutes:f,getRoutes:a,getRecordMatcher:o}}function kr(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function Nr(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:tf(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function tf(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function Ir(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function nf(e){return e.reduce((t,n)=>ae(t,n.meta),{})}function sf(e,t){let n=0,s=t.length;for(;n!==s;){const r=n+s>>1;pi(e,t[r])<0?s=r:n=r+1}const o=of(e);return o&&(s=t.lastIndexOf(o,s-1)),s}function of(e){let t=e;for(;t=t.parent;)if(hi(t)&&pi(e,t)===0)return t}function hi({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Mr(e){const t=Ye(Ss),n=Ye(To),s=Se(()=>{const i=ft(e.to);return t.resolve(i)}),o=Se(()=>{const{matched:i}=s.value,{length:u}=i,f=i[u-1],d=n.matched;if(!f||!d.length)return-1;const m=d.findIndex(un.bind(null,f));if(m>-1)return m;const g=$r(i[u-2]);return u>1&&$r(f)===g&&d[d.length-1].path!==g?d.findIndex(un.bind(null,i[u-2])):m}),r=Se(()=>o.value>-1&&uf(n.params,s.value.params)),l=Se(()=>o.value>-1&&o.value===n.matched.length-1&&ci(n.params,s.value.params));function a(i={}){if(cf(i)){const u=t[ft(e.replace)?"replace":"push"](ft(e.to)).catch(On);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>u),u}return Promise.resolve()}return{route:s,href:Se(()=>s.value.href),isActive:r,isExactActive:l,navigate:a}}function rf(e){return e.length===1?e[0]:e}const lf=wl({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Mr,setup(e,{slots:t}){const n=pn(Mr(e)),{options:s}=Ye(Ss),o=Se(()=>({[Lr(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Lr(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const r=t.default&&rf(t.default(n));return e.custom?r:Jl("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},r)}}}),af=lf;function cf(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function uf(e,t){for(const n in t){const s=t[n],o=e[n];if(typeof s=="string"){if(s!==o)return!1}else if(!et(o)||o.length!==s.length||s.some((r,l)=>r.valueOf()!==o[l].valueOf()))return!1}return!0}function $r(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Lr=(e,t,n)=>e??t??n,ff=wl({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=Ye(ro),o=Se(()=>e.route||s.value),r=Ye(Tr,0),l=Se(()=>{let u=ft(r);const{matched:f}=o.value;let d;for(;(d=f[u])&&!d.components;)u++;return u}),a=Se(()=>o.value.matched[l.value]);Qn(Tr,Se(()=>l.value+1)),Qn(Uu,a),Qn(ro,o);const i=ee();return Cn(()=>[i.value,a.value,e.name],([u,f,d],[m,g,v])=>{f&&(f.instances[d]=u,g&&g!==f&&u&&u===m&&(f.leaveGuards.size||(f.leaveGuards=g.leaveGuards),f.updateGuards.size||(f.updateGuards=g.updateGuards))),u&&f&&(!g||!un(f,g)||!m)&&(f.enterCallbacks[d]||[]).forEach(b=>b(u))},{flush:"post"}),()=>{const u=o.value,f=e.name,d=a.value,m=d&&d.components[f];if(!m)return Dr(n.default,{Component:m,route:u});const g=d.props[f],v=g?g===!0?u.params:typeof g=="function"?g(u):g:null,E=Jl(m,ae({},v,t,{onVnodeUnmounted:$=>{$.component.isUnmounted&&(d.instances[f]=null)},ref:i}));return Dr(n.default,{Component:E,route:u})||E}}});function Dr(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const df=ff;function pf(e){const t=ef(e.routes,e),n=e.parseQuery||Du,s=e.stringifyQuery||Ar,o=e.history,r=yn(),l=yn(),a=yn(),i=sa(Pt);let u=Pt;tn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const f=Ls.bind(null,C=>""+C),d=Ls.bind(null,bu),m=Ls.bind(null,Un);function g(C,B){let M,K;return ui(C)?(M=t.getRecordMatcher(C),K=B):K=C,t.addRoute(K,M)}function v(C){const B=t.getRecordMatcher(C);B&&t.removeRoute(B)}function b(){return t.getRoutes().map(C=>C.record)}function E(C){return!!t.getRecordMatcher(C)}function $(C,B){if(B=ae({},B||i.value),typeof C=="string"){const y=Ds(n,C,B.path),w=t.resolve({path:y.path},B),S=o.createHref(y.fullPath);return ae(y,w,{params:m(w.params),hash:Un(y.hash),redirectedFrom:void 0,href:S})}let M;if(C.path!=null)M=ae({},C,{path:Ds(n,C.path,B.path).path});else{const y=ae({},C.params);for(const w in y)y[w]==null&&delete y[w];M=ae({},C,{params:d(y)}),B.params=d(B.params)}const K=t.resolve(M,B),oe=C.hash||"";K.params=f(m(K.params));const p=Cu(s,ae({},C,{hash:vu(oe),path:K.path})),h=o.createHref(p);return ae({fullPath:p,hash:oe,query:s===Ar?Vu(C.query):C.query||{}},K,{redirectedFrom:void 0,href:h})}function R(C){return typeof C=="string"?Ds(n,C,i.value.path):ae({},C)}function T(C,B){if(u!==C)return fn(we.NAVIGATION_CANCELLED,{from:B,to:C})}function _(C){return j(C)}function N(C){return _(ae(R(C),{replace:!0}))}function J(C,B){const M=C.matched[C.matched.length-1];if(M&&M.redirect){const{redirect:K}=M;let oe=typeof K=="function"?K(C,B):K;return typeof oe=="string"&&(oe=oe.includes("?")||oe.includes("#")?oe=R(oe):{path:oe},oe.params={}),ae({query:C.query,hash:C.hash,params:oe.path!=null?{}:C.params},oe)}}function j(C,B){const M=u=$(C),K=i.value,oe=C.state,p=C.force,h=C.replace===!0,y=J(M,K);if(y)return j(ae(R(y),{state:typeof y=="object"?ae({},oe,y.state):oe,force:p,replace:h}),B||M);const w=M;w.redirectedFrom=B;let S;return!p&&Su(s,K,M)&&(S=fn(we.NAVIGATION_DUPLICATED,{to:w,from:K}),tt(K,K,!0,!1)),(S?Promise.resolve(S):X(w,K)).catch(x=>gt(x)?gt(x,we.NAVIGATION_GUARD_REDIRECT)?x:Tt(x):ne(x,w,K)).then(x=>{if(x){if(gt(x,we.NAVIGATION_GUARD_REDIRECT))return j(ae({replace:h},R(x.to),{state:typeof x.to=="object"?ae({},oe,x.to.state):oe,force:p}),B||w)}else x=L(w,K,!0,h,oe);return te(w,K,x),x})}function le(C,B){const M=T(C,B);return M?Promise.reject(M):Promise.resolve()}function V(C){const B=Yt.values().next().value;return B&&typeof B.runWithContext=="function"?B.runWithContext(C):C()}function X(C,B){let M;const[K,oe,p]=Bu(C,B);M=Us(K.reverse(),"beforeRouteLeave",C,B);for(const y of K)y.leaveGuards.forEach(w=>{M.push(Mt(w,C,B))});const h=le.bind(null,C,B);return M.push(h),Ke(M).then(()=>{M=[];for(const y of r.list())M.push(Mt(y,C,B));return M.push(h),Ke(M)}).then(()=>{M=Us(oe,"beforeRouteUpdate",C,B);for(const y of oe)y.updateGuards.forEach(w=>{M.push(Mt(w,C,B))});return M.push(h),Ke(M)}).then(()=>{M=[];for(const y of p)if(y.beforeEnter)if(et(y.beforeEnter))for(const w of y.beforeEnter)M.push(Mt(w,C,B));else M.push(Mt(y.beforeEnter,C,B));return M.push(h),Ke(M)}).then(()=>(C.matched.forEach(y=>y.enterCallbacks={}),M=Us(p,"beforeRouteEnter",C,B,V),M.push(h),Ke(M))).then(()=>{M=[];for(const y of l.list())M.push(Mt(y,C,B));return M.push(h),Ke(M)}).catch(y=>gt(y,we.NAVIGATION_CANCELLED)?y:Promise.reject(y))}function te(C,B,M){a.list().forEach(K=>V(()=>K(C,B,M)))}function L(C,B,M,K,oe){const p=T(C,B);if(p)return p;const h=B===Pt,y=tn?history.state:{};M&&(K||h?o.replace(C.fullPath,ae({scroll:h&&y&&y.scroll},oe)):o.push(C.fullPath,oe)),i.value=C,tt(C,B,M,h),Tt()}let se;function Ce(){se||(se=o.listen((C,B,M)=>{if(!Bt.listening)return;const K=$(C),oe=J(K,Bt.currentRoute.value);if(oe){j(ae(oe,{replace:!0,force:!0}),K).catch(On);return}u=K;const p=i.value;tn&&Nu(Er(p.fullPath,M.delta),Cs()),X(K,p).catch(h=>gt(h,we.NAVIGATION_ABORTED|we.NAVIGATION_CANCELLED)?h:gt(h,we.NAVIGATION_GUARD_REDIRECT)?(j(ae(R(h.to),{force:!0}),K).then(y=>{gt(y,we.NAVIGATION_ABORTED|we.NAVIGATION_DUPLICATED)&&!M.delta&&M.type===so.pop&&o.go(-1,!1)}).catch(On),Promise.reject()):(M.delta&&o.go(-M.delta,!1),ne(h,K,p))).then(h=>{h=h||L(K,p,!1),h&&(M.delta&&!gt(h,we.NAVIGATION_CANCELLED)?o.go(-M.delta,!1):M.type===so.pop&>(h,we.NAVIGATION_ABORTED|we.NAVIGATION_DUPLICATED)&&o.go(-1,!1)),te(K,p,h)}).catch(On)}))}let G=yn(),O=yn(),U;function ne(C,B,M){Tt(C);const K=O.list();return K.length?K.forEach(oe=>oe(C,B,M)):console.error(C),Promise.reject(C)}function pt(){return U&&i.value!==Pt?Promise.resolve():new Promise((C,B)=>{G.add([C,B])})}function Tt(C){return U||(U=!C,Ce(),G.list().forEach(([B,M])=>C?M(C):B()),G.reset()),C}function tt(C,B,M,K){const{scrollBehavior:oe}=e;if(!tn||!oe)return Promise.resolve();const p=!M&&Iu(Er(C.fullPath,0))||(K||!M)&&history.state&&history.state.scroll||null;return _o().then(()=>oe(C,B,p)).then(h=>h&&ku(h)).catch(h=>ne(h,C,B))}const Ve=C=>o.go(C);let Qt;const Yt=new Set,Bt={currentRoute:i,listening:!0,addRoute:g,removeRoute:v,clearRoutes:t.clearRoutes,hasRoute:E,getRoutes:b,resolve:$,options:e,push:_,replace:N,go:Ve,back:()=>Ve(-1),forward:()=>Ve(1),beforeEach:r.add,beforeResolve:l.add,afterEach:a.add,onError:O.add,isReady:pt,install(C){C.component("RouterLink",af),C.component("RouterView",df),C.config.globalProperties.$router=Bt,Object.defineProperty(C.config.globalProperties,"$route",{enumerable:!0,get:()=>ft(i)}),tn&&!Qt&&i.value===Pt&&(Qt=!0,_(o.location).catch(K=>{}));const B={};for(const K in Pt)Object.defineProperty(B,K,{get:()=>i.value[K],enumerable:!0});C.provide(Ss,Bt),C.provide(To,al(B)),C.provide(ro,i);const M=C.unmount;Yt.add(C),C.unmount=function(){Yt.delete(C),Yt.size<1&&(u=Pt,se&&se(),se=null,i.value=Pt,Qt=!1,U=!1),M()}}};function Ke(C){return C.reduce((B,M)=>B.then(()=>V(M)),Promise.resolve())}return Bt}function jn(){return Ye(Ss)}function gi(e){return Ye(To)}const Pe=pn({mode:null,user:null,remoteBaseUrl:"",token:""});function Ro(){return es(Pe)}function Po(e){Pe.mode=e,typeof localStorage<"u"&&localStorage.setItem("pac_proxy_mode",e)}function mi(){if(typeof localStorage<"u"){const e=localStorage.getItem("pac_proxy_mode");(e==="local"||e==="remote")&&(Pe.mode=e);const t=localStorage.getItem("pac_proxy_token");t&&(Pe.token=t);const n=localStorage.getItem("pac_proxy_remote_base_url");if(n&&typeof n=="string"&&(Pe.remoteBaseUrl=n),Pe.mode==="remote"&&Pe.token)try{const s=JSON.parse(atob(Pe.token.split(".")[1]));Pe.user={username:s.username}}catch{}}return Pe.mode}function vi(e){Pe.user=e}function yi(e){Pe.remoteBaseUrl=e||"",typeof localStorage<"u"&&(e?localStorage.setItem("pac_proxy_remote_base_url",e):localStorage.removeItem("pac_proxy_remote_base_url"))}function _i(e){Pe.token=e,typeof localStorage<"u"&&(e?localStorage.setItem("pac_proxy_token",e):localStorage.removeItem("pac_proxy_token"))}function hf(){return Pe.token||typeof localStorage<"u"&&localStorage.getItem("pac_proxy_token")}function gf(){Pe.token="",Pe.user=null,Pe.remoteBaseUrl="",Pe.mode=null,typeof localStorage<"u"&&(localStorage.removeItem("pac_proxy_token"),localStorage.removeItem("pac_proxy_mode"),localStorage.removeItem("pac_proxy_remote_base_url"))}const mf=()=>{const e=hf(),t={"Content-Type":"application/json"};return e&&(t.Authorization="Bearer "+e),t};async function be(e,t={}){const n=await fetch("/api/local"+e,{...t,headers:{"Content-Type":"application/json",...t.headers}});if(!n.ok)throw new Error((await n.json().catch(()=>({}))).error||n.statusText);return n.json()}async function Bs(e,t,n={}){const s=(e||"").trim().replace(/\/$/,"");if(!s)throw new Error("未配置远程服务器地址。请在 packages/node-cli/.env 中配置 REMOTE_SERVER_URL(填 node-server 的地址,例如 http://127.0.0.1:3000),重启 node-cli 后重新登录。");const o=s+"/api"+t,r=await fetch(o,{...n,headers:{...mf(),...n.headers}});if(!r.ok)throw new Error((await r.json().catch(()=>({}))).error||r.statusText);return r.json()}function bi(e,t){const n={getProxy:()=>be("/proxy"),setProxy:s=>be("/proxy",{method:"PUT",body:JSON.stringify(s)})};return e==="local"?{...n,getPacRules:()=>be("/pac-rules"),setPacRules:s=>be("/pac-rules",{method:"PUT",body:JSON.stringify(s)}),getConfig:()=>be("/config")}:{...n,getPacRules:()=>Bs(t,"/pac-rules"),setPacRules:async s=>{await Bs(t,"/pac-rules",{method:"PUT",body:JSON.stringify(s)}),await be("/pac-rules",{method:"PUT",body:JSON.stringify(s)})},getConfig:()=>Bs(t,"/config")}}const Lt=pn([]);let wi=0;function vf(){return Lt}function ye(e,t="success",n=2500){const s=++wi;Lt.push({id:s,msg:e,type:t}),setTimeout(()=>{const o=Lt.findIndex(r=>r.id===s);o>=0&&Lt.splice(o,1)},n)}function Vr(e){return new Promise(t=>{const n=++wi;Lt.push({id:n,msg:e,type:"confirm",resolve:t})})}function Ur(e,t){const n=Lt.findIndex(s=>s.id===e);n>=0&&(Lt[n].resolve(t),Lt.splice(n,1))}const At=(e,t)=>{const n=e.__vccOpts||e;for(const[s,o]of t)n[s]=o;return n},yf={class:"toast-container"},_f={key:0,class:"toast-confirm-mask"},bf={class:"toast-confirm"},wf={class:"toast-confirm-msg"},xf={class:"toast-confirm-actions"},Cf=["onClick"],Sf=["onClick"],Ef={class:"toast-icon"},Af={key:0,viewBox:"0 0 20 20",fill:"currentColor"},Tf={key:1,viewBox:"0 0 20 20",fill:"currentColor"},Rf={key:2,viewBox:"0 0 20 20",fill:"currentColor"},Pf={class:"toast-msg"},Of={__name:"Toast",setup(e){const t=vf();return(n,s)=>(H(),Gl(ya,{to:"body"},[c("div",yf,[me(Gc,{name:"toast"},{default:ct(()=>[(H(!0),F(Ee,null,Ln(ft(t),o=>(H(),F(Ee,{key:o.id},[o.type==="confirm"?(H(),F("div",_f,[c("div",bf,[c("p",wf,z(o.msg),1),c("div",xf,[c("button",{class:"tc-btn cancel",onClick:r=>ft(Ur)(o.id,!1)},"取消",8,Cf),c("button",{class:"tc-btn ok",onClick:r=>ft(Ur)(o.id,!0)},"确定",8,Sf)])])])):(H(),F("div",{key:1,class:_e(["toast",o.type])},[c("span",Ef,[o.type==="success"?(H(),F("svg",Af,[...s[0]||(s[0]=[c("path",{"fill-rule":"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z","clip-rule":"evenodd"},null,-1)])])):o.type==="error"?(H(),F("svg",Tf,[...s[1]||(s[1]=[c("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z","clip-rule":"evenodd"},null,-1)])])):(H(),F("svg",Rf,[...s[2]||(s[2]=[c("path",{"fill-rule":"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z","clip-rule":"evenodd"},null,-1)])]))]),c("span",Pf,z(o.msg),1)],2))],64))),128))]),_:1})])]))}},kf=At(Of,[["__scopeId","data-v-5cf00320"]]),Nf={class:"app-layout"},If={key:0,class:"sidebar"},Mf={class:"side-nav"},$f={class:"sidebar-footer"},Lf={key:0,class:"topbar"},Df={class:"topbar-left"},Vf={class:"page-title"},Uf={key:0,class:"topbar-right"},Bf={class:"username"},Hf={class:"main"},Ff={__name:"App",setup(e){const t=gi(),n=jn(),s=Ro(),o=Se(()=>s.mode||"local"),r=Se(()=>o.value==="remote"),l=Se(()=>s.user),a=Se(()=>o.value==="local"?"本地模式":"远程模式"),i=Se(()=>t.path!=="/"),u=Se(()=>t.path!=="/"&&!t.path.startsWith("/login")&&!t.path.startsWith("/register")),f=Se(()=>t.path==="/"||t.path.startsWith("/login")||t.path.startsWith("/register")),d={"/console/proxy":"代理设置","/console/shadowsocks":"Shadowsocks","/console/pac-rules":"PAC 规则","/console/traffic":"流量记录"},m=Se(()=>d[t.path]||"");async function g(){try{const v=await be("/config");await be("/config",{method:"PUT",body:JSON.stringify({...v,mode:"local"})})}catch{}gf(),n.push("/")}return(v,b)=>{const E=$n("router-link"),$=$n("router-view");return H(),F(Ee,null,[c("div",Nf,[u.value?(H(),F("aside",If,[b[5]||(b[5]=c("div",{class:"sidebar-logo"},[c("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[c("circle",{cx:"12",cy:"12",r:"10"}),c("path",{d:"M12 8v4l3 3"})]),c("span",null,"PAC Proxy")],-1)),c("nav",Mf,[me(E,{to:"/console/proxy","active-class":"active"},{default:ct(()=>[...b[0]||(b[0]=[c("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[c("rect",{x:"2",y:"3",width:"20",height:"14",rx:"2"}),c("path",{d:"M8 21h8M12 17v4"})],-1),pe(" 代理设置 ",-1)])]),_:1}),me(E,{to:"/console/shadowsocks","active-class":"active"},{default:ct(()=>[...b[1]||(b[1]=[c("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[c("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2"}),c("path",{d:"M7 11V7a5 5 0 0110 0v4"})],-1),pe(" Shadowsocks ",-1)])]),_:1}),me(E,{to:"/console/pac-rules","active-class":"active"},{default:ct(()=>[...b[2]||(b[2]=[c("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[c("path",{d:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2"}),c("rect",{x:"9",y:"3",width:"6",height:"4",rx:"1"}),c("path",{d:"M9 12h6M9 16h4"})],-1),pe(" PAC 规则 ",-1)])]),_:1}),me(E,{to:"/console/traffic","active-class":"active"},{default:ct(()=>[...b[3]||(b[3]=[c("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[c("path",{d:"M22 12h-4l-3 9L9 3l-3 9H2"})],-1),pe(" 流量记录 ",-1)])]),_:1})]),c("div",$f,[c("span",{class:_e(["mode-badge",o.value])},z(a.value),3),me(E,{to:"/",class:"switch-mode-link"},{default:ct(()=>[...b[4]||(b[4]=[pe("切换模式",-1)])]),_:1})])])):ve("",!0),c("div",{class:_e(["content-wrap",{"content-standalone":f.value}])},[i.value?(H(),F("header",Lf,[c("div",Df,[c("span",Vf,z(m.value),1)]),r.value&&l.value?(H(),F("div",Uf,[c("span",Bf,z(l.value.username),1),c("button",{type:"button",class:"logout-btn",onClick:g},"退出登录")])):ve("",!0)])):ve("",!0),c("main",Hf,[me($)])],2)]),me(kf)],64)}}},jf=At(Ff,[["__scopeId","data-v-ee1bb6ce"]]),Gf={class:"mode-select"},Kf={class:"card"},Wf={class:"options"},zf={__name:"ModeSelect",setup(e){const t=jn();async function n(s){if(Po(s),s==="local"){try{const o=await be("/config");await be("/config",{method:"PUT",body:JSON.stringify({...o,mode:"local"})})}catch{}t.push("/console")}else t.push("/login")}return(s,o)=>(H(),F("div",Gf,[c("div",Kf,[o[4]||(o[4]=c("h1",null,"选择运行模式",-1)),o[5]||(o[5]=c("p",{class:"desc"},"请选择控制台使用方式,选择后可随时在设置中切换。",-1)),c("div",Wf,[c("button",{class:"option local",onClick:o[0]||(o[0]=r=>n("local"))},[...o[2]||(o[2]=[c("span",{class:"title"},"本地模式",-1),c("span",{class:"sub"},"无需登录,配置保存在本机,由 node-cli 维护",-1)])]),c("button",{class:"option remote",onClick:o[1]||(o[1]=r=>n("remote"))},[...o[3]||(o[3]=[c("span",{class:"title"},"远程模式",-1),c("span",{class:"sub"},"需注册/登录,配置与数据保存在云端",-1)])])])])]))}},qf=At(zf,[["__scopeId","data-v-b465f762"]]),Jf={class:"auth-page"},Qf={class:"card"},Yf={class:"field"},Xf={class:"field"},Zf={key:0,class:"error"},ed=["disabled"],td={class:"footer"},nd={__name:"Login",setup(e){const t=jn(),n=ee(""),s=ee(""),o=ee(""),r=ee(""),l=ee(!1);Ut(async()=>{try{const i=await fetch("/api/local/remote-server-url"),{url:u}=await i.json();n.value=u||""}catch{n.value=""}});async function a(){if(r.value="",!n.value){r.value="请在 node-cli 目录下的 .env 中配置 REMOTE_SERVER_URL";return}l.value=!0;try{const i=n.value.replace(/\/$/,""),u=await fetch(i+"/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:s.value,password:o.value})}),f=await u.json().catch(()=>({}));if(!u.ok)throw new Error(f.error||"登录失败");Po("remote"),yi(i),_i(f.token),vi(f.user||{username:s.value});try{const d=await be("/config");await be("/config",{method:"PUT",body:JSON.stringify({...d,mode:"remote"})});const m=await fetch(i+"/api/pac-rules",{headers:{Authorization:"Bearer "+f.token}}).then(g=>g.json()).catch(()=>[]);Array.isArray(m)&&await be("/pac-rules",{method:"PUT",body:JSON.stringify(m)})}catch{}t.push("/console")}catch(i){r.value=i.message}finally{l.value=!1}}return(i,u)=>{const f=$n("router-link");return H(),F("div",Jf,[c("div",Qf,[u[6]||(u[6]=c("h1",null,"登录",-1)),u[7]||(u[7]=c("p",{class:"desc"},"远程模式需登录后使用云端配置。",-1)),c("form",{onSubmit:xs(a,["prevent"]),class:"form"},[c("div",Yf,[u[2]||(u[2]=c("label",null,"用户名",-1)),Ae(c("input",{"onUpdate:modelValue":u[0]||(u[0]=d=>s.value=d),type:"text",required:""},null,512),[[Oe,s.value]])]),c("div",Xf,[u[3]||(u[3]=c("label",null,"密码",-1)),Ae(c("input",{"onUpdate:modelValue":u[1]||(u[1]=d=>o.value=d),type:"password",required:""},null,512),[[Oe,o.value]])]),r.value?(H(),F("p",Zf,z(r.value),1)):ve("",!0),c("button",{type:"submit",class:"btn primary",disabled:l.value},"登录",8,ed)],32),c("p",td,[u[5]||(u[5]=pe("还没有账号? ",-1)),me(f,{to:"/register"},{default:ct(()=>[...u[4]||(u[4]=[pe("注册",-1)])]),_:1})])])])}}},sd=At(nd,[["__scopeId","data-v-d4d57b91"]]),od={class:"auth-page"},rd={class:"card"},ld={class:"field"},id={class:"field"},ad={key:0,class:"error"},cd={key:1,class:"success"},ud=["disabled"],fd={class:"footer"},dd={__name:"Register",setup(e){const t=jn(),n=ee(""),s=ee(""),o=ee(""),r=ee(""),l=ee(""),a=ee(!1);Ut(async()=>{try{const u=await fetch("/api/local/remote-server-url"),{url:f}=await u.json();n.value=f||""}catch{n.value=""}});async function i(){if(r.value="",l.value="",!n.value){r.value="请在 node-cli 目录下的 .env 中配置 REMOTE_SERVER_URL";return}a.value=!0;try{const u=n.value.replace(/\/$/,""),f=await fetch(u+"/api/auth/register",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:s.value,password:o.value})}),d=await f.json().catch(()=>({}));if(!f.ok)throw new Error(d.error||"注册失败");l.value="注册成功,正在自动登录…";const m=await fetch(u+"/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:s.value,password:o.value})}),g=await m.json().catch(()=>({}));if(!m.ok)throw new Error(g.error||"自动登录失败");Po("remote"),yi(u),_i(g.token),vi(g.user||{username:s.value}),l.value="注册成功,已自动登录";try{const v=await be("/config");await be("/config",{method:"PUT",body:JSON.stringify({...v,mode:"remote"})});const b=await fetch(u+"/api/pac-rules",{headers:{Authorization:"Bearer "+g.token}}).then(E=>E.json()).catch(()=>[]);Array.isArray(b)&&await be("/pac-rules",{method:"PUT",body:JSON.stringify(b)})}catch{}t.push("/console")}catch(u){r.value=u.message}finally{a.value=!1}}return(u,f)=>{const d=$n("router-link");return H(),F("div",od,[c("div",rd,[f[6]||(f[6]=c("h1",null,"注册",-1)),f[7]||(f[7]=c("p",{class:"desc"},"注册后可在远程模式下同步配置。",-1)),c("form",{onSubmit:xs(i,["prevent"]),class:"form"},[c("div",ld,[f[2]||(f[2]=c("label",null,"用户名",-1)),Ae(c("input",{"onUpdate:modelValue":f[0]||(f[0]=m=>s.value=m),type:"text",required:""},null,512),[[Oe,s.value]])]),c("div",id,[f[3]||(f[3]=c("label",null,"密码",-1)),Ae(c("input",{"onUpdate:modelValue":f[1]||(f[1]=m=>o.value=m),type:"password",required:""},null,512),[[Oe,o.value]])]),r.value?(H(),F("p",ad,z(r.value),1)):ve("",!0),l.value?(H(),F("p",cd,z(l.value),1)):ve("",!0),c("button",{type:"submit",class:"btn primary",disabled:a.value},"注册",8,ud)],32),c("p",fd,[f[5]||(f[5]=pe("已有账号? ",-1)),me(d,{to:"/login"},{default:ct(()=>[...f[4]||(f[4]=[pe("登录",-1)])]),_:1})])])])}}},pd=At(dd,[["__scopeId","data-v-a1c8458c"]]),hd={class:"proxy-settings"},gd={class:"card"},md={class:"mode-cards"},vd=["onClick","disabled"],yd=["innerHTML"],_d={class:"mode-label"},bd={class:"mode-desc"},wd={key:0,class:"ca-download"},xd={class:"card"},Cd={class:"field"},Sd={key:0,class:"upstream-managed"},Ed={class:"row"},Ad={class:"field"},Td={class:"field"},Rd={class:"actions"},Pd=["disabled"],Od={key:0,class:"btn-spinner"},kd={key:0,class:"card status-card"},Nd={class:"status-line"},Id={key:0,class:"status-port"},Md={key:0,class:"hint"},$d={key:1,class:"hint error"},Ld={key:2,class:"hint"},Dd={key:3,class:"hint"},Vd="/api/local/ca-cert",Ud={__name:"ProxySettings",setup(e){const t=Ro();jn();function n(){return bi(t.mode,t.remoteBaseUrl)}const s=ee(!1),o=ee(1080),r=[{key:"global",label:"全局代理",desc:"所有流量走上游代理",icon:'<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM4.332 8.027a6.012 6.012 0 011.912-2.706C6.512 5.73 6.974 6 7.5 6A1.5 1.5 0 019 7.5V8a2 2 0 004 0 2 2 0 011.523-1.943A5.977 5.977 0 0116 10c0 .34-.028.675-.083 1H15a2 2 0 00-2 2v2.197A5.973 5.973 0 0110 16v-2a2 2 0 00-2-2 2 2 0 01-2-2 2 2 0 00-1.668-1.973z" clip-rule="evenodd"/></svg>'},{key:"pac",label:"PAC 代理",desc:"按规则智能分流",icon:'<svg viewBox="0 0 20 20" fill="currentColor"><path d="M5 3a2 2 0 00-2 2v2a2 2 0 002 2h2a2 2 0 002-2V5a2 2 0 00-2-2H5zM5 11a2 2 0 00-2 2v2a2 2 0 002 2h2a2 2 0 002-2v-2a2 2 0 00-2-2H5zM11 5a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V5zM14 11a1 1 0 011 1v1h1a1 1 0 110 2h-1v1a1 1 0 11-2 0v-1h-1a1 1 0 110-2h1v-1a1 1 0 011-1z"/></svg>'},{key:"mitm",label:"抓包代理",desc:"解密 HTTPS 流量",icon:'<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" clip-rule="evenodd"/></svg>'},{key:"clear",label:"清除代理",desc:"恢复直连",icon:'<svg viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"/></svg>'}],l=ee({enabled:!1,mode:"pac",upstream:"socks5://127.0.0.1:1080",httpPort:5175,httpsPort:5176,applySystemProxy:!0}),a=ee(!1),i=ee(null);async function u(){try{const g=await fetch("/api/local/proxy-status");i.value=await g.json()}catch{i.value={running:!1,port:null}}}function f(){return{enabled:!!l.value.enabled,mode:l.value.mode||"pac",upstream:String(l.value.upstream??"").trim()||"socks5://127.0.0.1:1080",httpPort:Number(l.value.httpPort)||5175,httpsPort:Number(l.value.httpsPort)||5176,applySystemProxy:l.value.applySystemProxy!==!1}}async function d(g){if(!a.value){g==="clear"?(l.value.enabled=!1,l.value.applySystemProxy=!0):(l.value.enabled=!0,l.value.mode=g,l.value.applySystemProxy=!0),a.value=!0;try{const v=f();if(await be("/proxy",{method:"PUT",body:JSON.stringify(v)}),t.mode==="remote")try{const E=await n().getPacRules();await be("/pac-rules",{method:"PUT",body:JSON.stringify(E)})}catch{}await u(),ye(g==="clear"?"已清除系统代理设置":`已切换至${{global:"全局代理",pac:"PAC 代理",mitm:"抓包代理",clear:"已清除代理"}[g]}`,"success")}catch(v){ye("操作失败:"+v.message,"error")}finally{a.value=!1}}}Ut(async()=>{try{const[g,v]=await Promise.all([be("/proxy"),fetch("/api/local/sslocal").then(b=>b.json()).catch(()=>({}))]);if(l.value={...l.value,...g},s.value=v.enabled===!0,o.value=v.localPort||1080,t.mode==="remote")try{const b=await n().getPacRules();await be("/pac-rules",{method:"PUT",body:JSON.stringify(b)})}catch{}await u()}catch{}});async function m(){a.value=!0;try{const g=f();if(await be("/proxy",{method:"PUT",body:JSON.stringify(g)}),t.mode==="remote")try{const v=await n().getPacRules();await be("/pac-rules",{method:"PUT",body:JSON.stringify(v)})}catch{}await u(),ye("设置已保存","success")}catch(g){ye("保存失败:"+g.message,"error")}finally{a.value=!1}}return(g,v)=>{const b=$n("router-link");return H(),F("div",hd,[c("div",gd,[v[5]||(v[5]=c("h3",null,"代理模式",-1)),v[6]||(v[6]=c("p",{class:"desc"},"一键设置本机系统代理(支持 macOS、Windows、Linux GNOME)。",-1)),c("div",md,[(H(),F(Ee,null,Ln(r,E=>c("button",{key:E.key,class:_e(["mode-card",{active:l.value.enabled&&l.value.mode===E.key,clear:E.key==="clear","active-clear":!l.value.enabled&&E.key==="clear"}]),onClick:$=>d(E.key),disabled:a.value,type:"button"},[c("span",{class:"mode-icon",innerHTML:E.icon},null,8,yd),c("span",_d,z(E.label),1),c("span",bd,z(E.desc),1)],10,vd)),64))]),l.value.enabled&&l.value.mode==="mitm"?(H(),F("div",wd,[v[3]||(v[3]=c("span",{class:"ca-label"},"CA 证书(用于解密 HTTPS,需安装到系统/浏览器信任):",-1)),c("a",{class:"btn btn-ca",href:Vd,download:"pac-proxy-ca.crt",target:"_blank",rel:"noopener"},"下载 CA 证书"),v[4]||(v[4]=c("p",{class:"ca-hint"},"仅限本机抓包使用,请勿安装到他人设备或生产环境。",-1))])):ve("",!0)]),c("div",xd,[v[12]||(v[12]=c("h3",null,"上游代理与端口",-1)),v[13]||(v[13]=c("p",{class:"desc"},[pe("上游代理地址(如 "),c("code",null,"socks5://127.0.0.1:1080"),pe(" 或 "),c("code",null,"http://proxy.example.com"),pe(")。本地模式下可将 SOCKS5 转为 HTTP 代理并按规则执行策略。")],-1)),c("div",Cd,[v[9]||(v[9]=c("label",null,"上游代理地址",-1)),s.value?(H(),F("div",Sd,[v[8]||(v[8]=c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M5 9V7a5 5 0 0110 0v2a2 2 0 012 2v5a2 2 0 01-2 2H5a2 2 0 01-2-2v-5a2 2 0 012-2zm8-2v2H7V7a3 3 0 016 0z","clip-rule":"evenodd"})],-1)),pe(" 由 Shadowsocks 托管(socks5://127.0.0.1:"+z(o.value)+") ",1),me(b,{to:"/console/shadowsocks"},{default:ct(()=>[...v[7]||(v[7]=[pe("管理",-1)])]),_:1})])):Ae((H(),F("input",{key:1,"onUpdate:modelValue":v[0]||(v[0]=E=>l.value.upstream=E),placeholder:"socks5://127.0.0.1:1080"},null,512)),[[Oe,l.value.upstream]])]),c("div",Ed,[c("div",Ad,[v[10]||(v[10]=c("label",null,"HTTP 代理端口",-1)),Ae(c("input",{"onUpdate:modelValue":v[1]||(v[1]=E=>l.value.httpPort=E),type:"number",min:"1",max:"65535"},null,512),[[Oe,l.value.httpPort,void 0,{number:!0}]])]),c("div",Td,[v[11]||(v[11]=c("label",null,"HTTPS 代理端口",-1)),Ae(c("input",{"onUpdate:modelValue":v[2]||(v[2]=E=>l.value.httpsPort=E),type:"number",min:"1",max:"65535"},null,512),[[Oe,l.value.httpsPort,void 0,{number:!0}]])])]),c("div",Rd,[c("button",{class:"btn primary",onClick:m,disabled:a.value},[a.value?(H(),F("span",Od)):ve("",!0),pe(" "+z(a.value?"保存中…":"保存设置"),1)],8,Pd)])]),i.value!==null?(H(),F("div",kd,[v[16]||(v[16]=c("h3",null,"代理状态",-1)),c("p",Nd,[c("span",{class:_e(["status-dot",i.value.running?"on":"off"])},null,2),c("span",{class:_e(i.value.running?"status-on":"status-off")},z(i.value.running?"运行中":"已关闭"),3),i.value.running?(H(),F("span",Id,"端口 "+z(i.value.port),1)):ve("",!0)]),i.value.running&&l.value.applySystemProxy&&i.value.systemProxyOk!==!1?(H(),F("p",Md," 已尝试自动设置"+z(l.value.mode==="pac"?" PAC 代理":l.value.mode==="mitm"?"抓包代理":"系统代理")+"(127.0.0.1:"+z(i.value.port)+")。 ",1)):i.value.running&&l.value.applySystemProxy&&i.value.systemProxyError?(H(),F("p",$d," 自动设置系统代理失败:"+z(i.value.systemProxyError)+" 请手动在「系统设置 → 网络 → 代理」中设置。 ",1)):i.value.running?(H(),F("p",Ld,[v[14]||(v[14]=pe(" 请将系统或浏览器的 HTTP/HTTPS 代理设置为 ",-1)),c("strong",null,"127.0.0.1:"+z(i.value.port),1),v[15]||(v[15]=pe("。 ",-1))])):l.value.enabled?(H(),F("p",Dd," 保存后若仍显示已关闭,请查看终端是否有端口占用报错。 ")):ve("",!0)])):ve("",!0)])}}},Bd=At(Ud,[["__scopeId","data-v-44d33970"]]),Hd={class:"pac-rules"},Fd={class:"card"},jd={class:"card-header"},Gd={key:0,class:"rule-count"},Kd={key:0,class:"desc"},Wd={key:1,class:"desc"},zd={class:"toolbar"},qd=["disabled"],Jd=["disabled"],Qd={class:"search-wrap"},Yd={class:"table-wrap"},Xd={class:"table"},Zd={class:"pattern-cell"},ep={class:"priority-cell"},tp={class:"ops-cell"},np=["onClick"],sp=["onClick"],op={key:0},rp={key:1},lp={colspan:"4",class:"empty"},ip={class:"modal-content"},ap={class:"field"},cp={class:"field"},up={class:"action-toggle"},fp={class:"field"},dp={class:"modal-actions"},pp=["disabled"],hp={__name:"PacRules",setup(e){const t=Ro();function n(){return bi(t.mode,t.remoteBaseUrl)}const s=ee([]),o=ee(null),r=ee({pattern:"",action:"proxy",priority:0}),l=ee(!1),a=ee(""),i=ee(null),u=Se(()=>[...s.value].sort((T,_)=>(_.priority??0)-(T.priority??0))),f=Se(()=>{const T=a.value.trim().toLowerCase();return T?u.value.filter(_=>_.pattern.toLowerCase().includes(T)):u.value});Ut(d);async function d(){try{if(s.value=await n().getPacRules(),Array.isArray(s.value)||(s.value=[]),t.mode==="remote")try{await be("/pac-rules",{method:"PUT",body:JSON.stringify(s.value)})}catch{}}catch{s.value=[]}}function m(T=null){T?r.value={id:T.id,pattern:T.pattern,action:T.action||"proxy",priority:T.priority??0}:r.value={pattern:"",action:"proxy",priority:0},o.value=!0}async function g(){const{id:T,pattern:_,action:N,priority:J}=r.value;if(!_.trim()){ye("请填写 URL 匹配字符","error");return}l.value=!0;try{let j=[...s.value];if(T){const le=j.findIndex(V=>V.id===T);le>=0&&(j[le]={...j[le],pattern:_.trim(),action:N,priority:J})}else{if(j.find(V=>V.pattern.trim()===_.trim())){ye(`规则「${_.trim()}」已存在`,"error"),l.value=!1;return}j.push({id:String(Date.now()),pattern:_.trim(),action:N||"proxy",priority:Number(J)||0})}await n().setPacRules(j),s.value=j,o.value=null,ye(T?"规则已更新":"规则已添加","success")}catch(j){ye("保存失败:"+j.message,"error")}finally{l.value=!1}}async function v(T){if(!await Vr(`确定删除规则「${T.pattern}」?`))return;const N=s.value.filter(J=>J.id!==T.id);try{await n().setPacRules(N),s.value=N,ye("规则已删除","success")}catch(J){ye("删除失败:"+J.message,"error")}}async function b(){if(s.value.length)try{await navigator.clipboard.writeText(s.value.map(T=>(T.pattern||"").trim()).filter(Boolean).join(`
|
|
26
|
-
`)),ye("已复制到剪贴板","success")}catch(T){ye("复制失败:"+T.message,"error")}}function E(){if(!s.value.length)return;const T=new Blob([JSON.stringify(s.value,null,2)],{type:"application/json"}),_=URL.createObjectURL(T),N=document.createElement("a");N.href=_,N.download=`pac-rules-${new Date().toISOString().slice(0,10)}.json`,N.click(),URL.revokeObjectURL(_)}function $(){var T;(T=i.value)==null||T.click()}async function R(T){var N;const _=(N=T.target.files)==null?void 0:N[0];if(_){T.target.value="";try{const J=await _.text(),j=JSON.parse(J);if(!Array.isArray(j)){ye("文件格式错误,需为规则数组","error");return}if(!await Vr(`导入 ${j.length} 条规则,将与现有规则合并(相同 pattern 会覆盖)。确定继续?`))return;const V=[...s.value];for(const X of j){if(!X.pattern)continue;const te=V.findIndex(se=>se.pattern===X.pattern),L={id:X.id||String(Date.now()+Math.random()),pattern:X.pattern,action:X.action||"proxy",priority:Number(X.priority)||0};te>=0?V[te]=L:V.push(L)}await n().setPacRules(V),s.value=V,ye(`已导入 ${j.length} 条规则`,"success")}catch(J){ye("导入失败:"+J.message,"error")}}}return(T,_)=>(H(),F("div",Hd,[c("div",Fd,[c("div",jd,[c("div",null,[c("h3",null,[_[8]||(_[8]=pe("PAC 规则 ",-1)),s.value.length?(H(),F("span",Gd,z(s.value.length),1)):ve("",!0)]),ft(t).mode==="remote"?(H(),F("p",Kd,"远程模式下规则保存在云端,PAC 模式时由本机按云端规则执行。")):(H(),F("p",Wd,"按优先级从高到低匹配,命中后选择「代理」或「直连」。"))])]),c("div",zd,[c("button",{class:"btn primary",onClick:_[0]||(_[0]=N=>m())},[..._[9]||(_[9]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M10 3a1 1 0 011 1v5h5a1 1 0 110 2h-5v5a1 1 0 11-2 0v-5H4a1 1 0 110-2h5V4a1 1 0 011-1z","clip-rule":"evenodd"})],-1),pe(" 新增规则 ",-1)])]),c("button",{class:"btn",onClick:$,title:"导入 JSON"},[..._[10]||(_[10]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M3 17a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM6.293 6.707a1 1 0 010-1.414l3-3a1 1 0 011.414 0l3 3a1 1 0 01-1.414 1.414L11 5.414V13a1 1 0 11-2 0V5.414L7.707 6.707a1 1 0 01-1.414 0z","clip-rule":"evenodd"})],-1),pe(" 导入 ",-1)])]),c("button",{class:"btn",onClick:E,disabled:!s.value.length,title:"导出 JSON"},[..._[11]||(_[11]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M3 17a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zm3.293-7.707a1 1 0 011.414 0L9 10.586V3a1 1 0 112 0v7.586l1.293-1.293a1 1 0 111.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z","clip-rule":"evenodd"})],-1),pe(" 导出 ",-1)])],8,qd),c("button",{class:"btn",onClick:b,disabled:!s.value.length,title:"复制规则"},[..._[12]||(_[12]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{d:"M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z"}),c("path",{d:"M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z"})],-1),pe(" 复制 ",-1)])],8,Jd),c("div",Qd,[_[13]||(_[13]=c("svg",{class:"search-icon",viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z","clip-rule":"evenodd"})],-1)),Ae(c("input",{class:"search-input","onUpdate:modelValue":_[1]||(_[1]=N=>a.value=N),placeholder:"搜索规则…"},null,512),[[Oe,a.value]])])]),c("div",Yd,[c("table",Xd,[_[17]||(_[17]=c("thead",null,[c("tr",null,[c("th",null,"URL 匹配字符"),c("th",null,"动作"),c("th",null,"优先级"),c("th",null,"操作")])],-1)),c("tbody",null,[(H(!0),F(Ee,null,Ln(f.value,N=>(H(),F("tr",{key:N.id},[c("td",Zd,z(N.pattern),1),c("td",null,[c("span",{class:_e(["action-badge",N.action])},z(N.action==="proxy"?"代理":"直连"),3)]),c("td",ep,z(N.priority),1),c("td",tp,[c("button",{class:"icon-btn",onClick:J=>m(N),title:"编辑"},[..._[14]||(_[14]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{d:"M13.586 3.586a2 2 0 112.828 2.828l-.793.793-2.828-2.828.793-.793zM11.379 5.793L3 14.172V17h2.828l8.38-8.379-2.83-2.828z"})],-1)])],8,np),c("button",{class:"icon-btn danger",onClick:J=>v(N),title:"删除"},[..._[15]||(_[15]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M9 2a1 1 0 00-.894.553L7.382 4H4a1 1 0 000 2v10a2 2 0 002 2h8a2 2 0 002-2V6a1 1 0 100-2h-3.382l-.724-1.447A1 1 0 0011 2H9zM7 8a1 1 0 012 0v6a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v6a1 1 0 102 0V8a1 1 0 00-1-1z","clip-rule":"evenodd"})],-1)])],8,sp)])]))),128)),s.value.length?f.value.length?ve("",!0):(H(),F("tr",rp,[c("td",lp,"未找到匹配「"+z(a.value)+"」的规则",1)])):(H(),F("tr",op,[..._[16]||(_[16]=[c("td",{colspan:"4",class:"empty"},"暂无规则,点击「新增规则」开始添加",-1)])]))])])])]),o.value?(H(),F("div",{key:0,class:"modal",onClick:_[7]||(_[7]=xs(N=>o.value=null,["self"]))},[c("div",ip,[c("h3",null,z(r.value.id?"编辑规则":"新增规则"),1),c("div",ap,[_[18]||(_[18]=c("label",null,"URL 匹配字符",-1)),Ae(c("input",{"onUpdate:modelValue":_[2]||(_[2]=N=>r.value.pattern=N),placeholder:"例如 *.google.com",autofocus:""},null,512),[[Oe,r.value.pattern]])]),c("div",cp,[_[19]||(_[19]=c("label",null,"动作",-1)),c("div",up,[c("button",{type:"button",class:_e(["toggle-opt",{active:r.value.action==="proxy"}]),onClick:_[3]||(_[3]=N=>r.value.action="proxy")},"代理",2),c("button",{type:"button",class:_e(["toggle-opt",{active:r.value.action==="direct"}]),onClick:_[4]||(_[4]=N=>r.value.action="direct")},"直连",2)])]),c("div",fp,[_[20]||(_[20]=c("label",null,"优先级(数字越大越优先)",-1)),Ae(c("input",{"onUpdate:modelValue":_[5]||(_[5]=N=>r.value.priority=N),type:"number"},null,512),[[Oe,r.value.priority,void 0,{number:!0}]])]),c("div",dp,[c("button",{class:"btn",onClick:_[6]||(_[6]=N=>o.value=null)},"取消"),c("button",{class:"btn primary",onClick:g,disabled:l.value},"保存",8,pp)])])])):ve("",!0),c("input",{ref_key:"fileInput",ref:i,type:"file",accept:".json",style:{display:"none"},onChange:R},null,544)]))}},gp=At(hp,[["__scopeId","data-v-abe2d935"]]),mp={class:"traffic-page"},vp={key:0,class:"card"},yp={class:"toolbar"},_p={class:"auto-refresh"},bp=["title"],wp=["disabled"],xp={key:0,class:"record-count"},Cp={class:"table-wrap"},Sp={class:"table"},Ep={class:"time-cell"},Ap=["title"],Tp={key:0},Rp={key:1,class:"card capture-card"},Pp={class:"toolbar"},Op=["title"],kp=["disabled"],Np={class:"table-wrap"},Ip={class:"table capture-table"},Mp=["onClick"],$p={class:"time-cell"},Lp=["title"],Dp=["onClick"],Vp={key:0},Up={key:0,class:"pagination"},Bp={class:"pagination-info"},Hp=["disabled"],Fp=["disabled"],jp={key:3,class:"drawer"},Gp={class:"drawer-tabs"},Kp={class:"drawer-body"},Wp={class:"drawer-url-section"},zp={class:"drawer-url-head"},qp={class:"drawer-url"},Jp={class:"detail-section"},Qp={class:"headers-pre"},Yp={class:"detail-section"},Xp={class:"body-pre"},Zp={class:"detail-section"},eh={class:"headers-pre"},th={class:"detail-section"},nh={class:"body-pre"},Hs=50,sh={__name:"Traffic",setup(e){const t=ee([]),n=ee(!1),s=ee(!1),o=ee(!1);let r=null;const l=ee([]),a=ee(0),i=ee(0),u=ee({q:"",method:"",status:"",type:"",sort:"time",order:"desc"});let f=null;const d=ee(null),m=ee("request"),g=ee(!1),v=gi();function b(G){return G?new Date(G).toLocaleString("zh-CN",{hour12:!1}):"-"}function E(G){return!G||typeof G!="object"?"":Object.entries(G).map(([O,U])=>`${O}: ${U}`).join(`
|
|
27
|
-
`)}function $(G){if(G==null||G==="")return"(空)";const O=typeof G=="string"?G:String(G);try{return JSON.stringify(JSON.parse(O),null,2)}catch{return O}}function R(G){return G>=200&&G<300?"status-2xx":G>=300&&G<400?"status-3xx":G>=400&&G<500?"status-4xx":G>=500?"status-5xx":""}async function T(){try{const O=await(await fetch("/api/local/proxy")).json();s.value=(O.mode||"")==="mitm"}catch{s.value=!1}}async function _(){n.value=!0;try{const G=await fetch("/api/local/traffic");t.value=await G.json(),Array.isArray(t.value)||(t.value=[])}catch{t.value=[]}finally{n.value=!1}}function N(){o.value=!o.value,o.value?(r=setInterval(_,5e3),ye("自动刷新已开启(每 5 秒)","info")):(clearInterval(r),r=null,ye("自动刷新已关闭","info"))}function J(){f&&clearTimeout(f),f=setTimeout(j,300)}async function j(){n.value=!0;try{const G=new URLSearchParams;u.value.q&&G.set("q",u.value.q),u.value.method&&G.set("method",u.value.method);const O=String(u.value.status??"").trim();O!==""&&!Number.isNaN(Number(O))&&G.set("status",O),u.value.type&&G.set("type",u.value.type),G.set("sort",u.value.sort),G.set("order",u.value.order),G.set("limit",String(Hs)),G.set("offset",String(i.value));const ne=await(await fetch("/api/local/capture?"+G.toString())).json();l.value=ne.list||[],a.value=ne.total??0}catch{l.value=[],a.value=0}finally{n.value=!1}}function le(){i.value=Math.max(0,i.value-Hs),j()}function V(){i.value+=Hs,j()}function X(){u.value.order=u.value.order==="desc"?"asc":"desc",j()}function te(G){d.value=G,m.value="request"}function L(){d.value=null}async function se(){var G;if((G=d.value)!=null&&G.url)try{await navigator.clipboard.writeText(d.value.url),g.value=!0,setTimeout(()=>{g.value=!1},1500)}catch{ye("复制失败","error")}}async function Ce(){await T(),s.value?(i.value=0,await j()):await _()}return Ut(Ce),wo(()=>{r&&clearInterval(r)}),Cn(()=>v.path,G=>{G==="/console/traffic"&&Ce()}),(G,O)=>(H(),F("div",mp,[s.value?(H(),F("div",Rp,[O[17]||(O[17]=c("div",{class:"capture-banner"},[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z","clip-rule":"evenodd"})]),pe(" 当前为抓包代理,可查看解密后的请求与响应。 ")],-1)),c("div",Pp,[Ae(c("input",{"onUpdate:modelValue":O[0]||(O[0]=U=>u.value.q=U),type:"text",placeholder:"搜索 URL…",class:"search-input",onInput:J},null,544),[[Oe,u.value.q]]),Ae(c("select",{"onUpdate:modelValue":O[1]||(O[1]=U=>u.value.method=U),class:"filter-select",onChange:j},[...O[12]||(O[12]=[c("option",{value:""},"全部方法",-1),c("option",null,"GET",-1),c("option",null,"POST",-1),c("option",null,"PUT",-1),c("option",null,"PATCH",-1),c("option",null,"DELETE",-1),c("option",null,"HEAD",-1),c("option",null,"OPTIONS",-1)])],544),[[Pn,u.value.method]]),Ae(c("input",{"onUpdate:modelValue":O[2]||(O[2]=U=>u.value.status=U),type:"text",placeholder:"状态码",class:"status-input",onInput:J},null,544),[[Oe,u.value.status]]),Ae(c("select",{"onUpdate:modelValue":O[3]||(O[3]=U=>u.value.type=U),class:"filter-select",onChange:j},[...O[13]||(O[13]=[c("option",{value:""},"全部类型",-1),c("option",null,"document",-1),c("option",null,"xhr",-1),c("option",null,"script",-1),c("option",null,"stylesheet",-1),c("option",null,"image",-1),c("option",null,"font",-1),c("option",null,"other",-1)])],544),[[Pn,u.value.type]]),Ae(c("select",{"onUpdate:modelValue":O[4]||(O[4]=U=>u.value.sort=U),class:"filter-select",onChange:j},[...O[14]||(O[14]=[c("option",{value:"time"},"按时间",-1),c("option",{value:"method"},"按方法",-1),c("option",{value:"status"},"按状态",-1),c("option",{value:"url"},"按 URL",-1)])],544),[[Pn,u.value.sort]]),c("button",{type:"button",class:"sort-order-btn",onClick:X,title:u.value.order==="desc"?"倒序":"正序"},z(u.value.order==="desc"?"↓":"↑"),9,Op),c("button",{class:"btn",onClick:j,disabled:n.value},"刷新",8,kp)]),c("div",Np,[c("table",Ip,[O[16]||(O[16]=c("thead",null,[c("tr",null,[c("th",null,"时间"),c("th",null,"方法"),c("th",null,"URL"),c("th",null,"状态"),c("th",null,"类型"),c("th")])],-1)),c("tbody",null,[(H(!0),F(Ee,null,Ln(l.value,U=>(H(),F("tr",{key:U.id,onClick:ne=>te(U),class:"row-clickable"},[c("td",$p,z(b(U.time)),1),c("td",null,[c("span",{class:_e(["method-tag",U.method])},z(U.method),3)]),c("td",{class:"url-cell",title:U.url},z(U.url),9,Lp),c("td",null,[c("span",{class:_e(["status-tag",R(U.statusCode)])},z(U.statusCode),3)]),c("td",null,z(U.type),1),c("td",null,[c("button",{type:"button",class:"btn-link",onClick:xs(ne=>te(U),["stop"])},"详情",8,Dp)])],8,Mp))),128)),!l.value.length&&!n.value?(H(),F("tr",Vp,[...O[15]||(O[15]=[c("td",{colspan:"6",class:"empty"},"暂无抓包记录,请通过抓包代理访问网页。",-1)])])):ve("",!0)])])]),a.value>0?(H(),F("div",Up,[c("span",Bp,"共 "+z(a.value)+" 条",1),c("button",{class:"btn small",disabled:i.value<=0,onClick:le},"上一页",8,Hp),c("button",{class:"btn small",disabled:i.value+l.value.length>=a.value,onClick:V},"下一页",8,Fp)])):ve("",!0)])):(H(),F("div",vp,[c("div",yp,[c("div",_p,[c("button",{type:"button",class:_e(["toggle-btn",{on:o.value}]),onClick:N,title:o.value?"关闭自动刷新":"开启自动刷新(每 5 秒)"},[...O[7]||(O[7]=[c("span",{class:"toggle-knob"},null,-1)])],10,bp),O[8]||(O[8]=c("span",{class:"toggle-label"},"自动刷新",-1))]),c("button",{class:"btn",onClick:_,disabled:n.value},[...O[9]||(O[9]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M4 2a1 1 0 011 1v2.101a7.002 7.002 0 0111.601 2.566 1 1 0 11-1.885.666A5.002 5.002 0 005.999 7H9a1 1 0 010 2H4a1 1 0 01-1-1V3a1 1 0 011-1zm.008 9.057a1 1 0 011.276.61A5.002 5.002 0 0014.001 13H11a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0v-2.101a7.002 7.002 0 01-11.601-2.566 1 1 0 01.61-1.276z","clip-rule":"evenodd"})],-1),pe(" 刷新 ",-1)])],8,wp),t.value.length?(H(),F("span",xp,z(t.value.length)+" 条记录",1)):ve("",!0)]),c("div",Cp,[c("table",Sp,[O[11]||(O[11]=c("thead",null,[c("tr",null,[c("th",null,"时间"),c("th",null,"类型"),c("th",null,"方法"),c("th",null,"URL / 主机"),c("th",null,"动作")])],-1)),c("tbody",null,[(H(!0),F(Ee,null,Ln(t.value,U=>(H(),F("tr",{key:U.time+(U.url||"")},[c("td",Ep,z(b(U.time)),1),c("td",null,z(U.type),1),c("td",null,[c("span",{class:_e(["method-tag",U.method])},z(U.method),3)]),c("td",{class:"url-cell",title:U.url},z(U.url),9,Ap),c("td",null,[c("span",{class:_e(["action-badge",U.action])},z(U.action==="proxy"?"代理":"直连"),3)])]))),128)),!t.value.length&&!n.value?(H(),F("tr",Tp,[...O[10]||(O[10]=[c("td",{colspan:"5",class:"empty"},"暂无记录,请确保代理已开启并有流量经过。",-1)])])):ve("",!0)])])])])),d.value?(H(),F("div",{key:2,class:"drawer-mask",onClick:L})):ve("",!0),d.value?(H(),F("div",jp,[c("div",{class:"drawer-header"},[O[18]||(O[18]=c("span",{class:"drawer-title"},"请求详情",-1)),c("button",{type:"button",class:"drawer-close",onClick:L},"×")]),c("div",Gp,[c("button",{type:"button",class:_e({active:m.value==="request"}),onClick:O[5]||(O[5]=U=>m.value="request")},"请求",2),c("button",{type:"button",class:_e({active:m.value==="response"}),onClick:O[6]||(O[6]=U=>m.value="response")},"响应",2)]),c("div",Kp,[c("div",Wp,[c("div",zp,[c("span",{class:_e(["drawer-method-tag",d.value.method])},z(d.value.method),3),c("button",{type:"button",class:"btn-copy-url",onClick:se},z(g.value?"已复制":"复制 URL"),1)]),c("pre",qp,z(d.value.url),1)]),m.value==="request"?(H(),F(Ee,{key:0},[c("div",Jp,[O[19]||(O[19]=c("h4",null,"Request Headers",-1)),c("pre",Qp,z(E(d.value.requestHeaders)),1)]),c("div",Yp,[O[20]||(O[20]=c("h4",null,"Request Body",-1)),c("pre",Xp,z($(d.value.requestBody)),1)])],64)):(H(),F(Ee,{key:1},[c("div",Zp,[O[21]||(O[21]=c("h4",null,"Response Headers",-1)),c("pre",eh,z(E(d.value.responseHeaders)),1)]),c("div",th,[O[22]||(O[22]=c("h4",null,"Response Body",-1)),c("pre",nh,z($(d.value.responseBody)),1)])],64))])])):ve("",!0)]))}},oh=At(sh,[["__scopeId","data-v-4331eb78"]]),rh={class:"shadowsocks-page"},lh={class:"card"},ih={class:"enable-row"},ah=["disabled"],ch={class:"card"},uh={class:"fields"},fh={class:"field field-wide"},dh={class:"field"},ph={class:"field field-wide"},hh={class:"password-wrap"},gh=["type"],mh={key:0,viewBox:"0 0 20 20",fill:"currentColor"},vh={key:1,viewBox:"0 0 20 20",fill:"currentColor"},yh={class:"field"},_h={class:"field"},bh={class:"actions"},wh=["disabled"],xh={key:0,class:"btn-spinner"},Ch={class:"card status-card"},Sh={class:"status-header"},Eh={class:"status-actions"},Ah=["disabled"],Th=["disabled"],Rh=["disabled"],Ph={class:"status-line"},Oh={key:0,class:"status-pid"},kh={key:1,class:"status-port"},Nh={key:0,class:"status-error"},Ih={class:"log-section"},Mh={class:"log-count"},$h={key:0,class:"log-pre"},Lh={__name:"Shadowsocks",setup(e){const t=ee({enabled:!1,server:"",serverPort:8388,localPort:1080,password:"",method:"aes-256-gcm",timeout:300}),n=ee({running:!1,pid:null,error:null,logs:[]}),s=ee(!1),o=ee(!1),r=ee(!1),l=ee(!1);async function a(){try{const g=await fetch("/api/local/sslocal");t.value={...t.value,...await g.json()}}catch{}}async function i(){try{const g=await fetch("/api/local/sslocal-status");n.value=await g.json()}catch{}}Ut(async()=>{await a(),await i()});async function u(){s.value=!0;try{const g=await fetch("/api/local/sslocal",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t.value)});if(!g.ok)throw new Error((await g.json()).error||g.statusText);t.value={...t.value,...await g.json()},await i(),ye("设置已保存","success")}catch(g){ye("保存失败:"+g.message,"error")}finally{s.value=!1}}async function f(){t.value.enabled=!t.value.enabled,await u()}async function d(){o.value=!0;try{const g=await fetch("/api/local/sslocal/start",{method:"POST"}),v=await g.json();if(!g.ok)throw new Error(v.error||g.statusText);n.value=v,ye("sslocal 已启动","success")}catch(g){ye("启动失败:"+g.message,"error"),await i()}finally{o.value=!1}}async function m(){o.value=!0;try{await fetch("/api/local/sslocal/stop",{method:"POST"}),await i(),ye("sslocal 已停止","info")}catch(g){ye("停止失败:"+g.message,"error")}finally{o.value=!1}}return(g,v)=>{var b;return H(),F("div",rh,[c("div",lh,[c("div",ih,[v[8]||(v[8]=c("div",null,[c("h3",null,"Shadowsocks (sslocal)"),c("p",{class:"desc"},"启用后将自动管理 sslocal 进程,并将其 SOCKS5 输出作为上游代理。")],-1)),c("button",{type:"button",class:_e(["toggle-btn",{on:t.value.enabled}]),onClick:f,disabled:s.value},[...v[7]||(v[7]=[c("span",{class:"toggle-knob"},null,-1)])],10,ah)])]),c("div",ch,[v[17]||(v[17]=c("h3",null,"服务器配置",-1)),c("div",uh,[c("div",fh,[v[9]||(v[9]=c("label",null,"服务器地址",-1)),Ae(c("input",{"onUpdate:modelValue":v[0]||(v[0]=E=>t.value.server=E),placeholder:"example.com 或 1.2.3.4"},null,512),[[Oe,t.value.server]])]),c("div",dh,[v[10]||(v[10]=c("label",null,"服务器端口",-1)),Ae(c("input",{"onUpdate:modelValue":v[1]||(v[1]=E=>t.value.serverPort=E),type:"number",min:"1",max:"65535"},null,512),[[Oe,t.value.serverPort,void 0,{number:!0}]])]),c("div",ph,[v[13]||(v[13]=c("label",null,"密码",-1)),c("div",hh,[Ae(c("input",{"onUpdate:modelValue":v[2]||(v[2]=E=>t.value.password=E),type:r.value?"text":"password",placeholder:"密码"},null,8,gh),[[Xc,t.value.password]]),c("button",{type:"button",class:"eye-btn",onClick:v[3]||(v[3]=E=>r.value=!r.value),tabindex:"-1"},[r.value?(H(),F("svg",vh,[...v[12]||(v[12]=[c("path",{"fill-rule":"evenodd",d:"M3.707 2.293a1 1 0 00-1.414 1.414l14 14a1 1 0 001.414-1.414l-1.473-1.473A10.014 10.014 0 0019.542 10C18.268 5.943 14.478 3 10 3a9.958 9.958 0 00-4.512 1.074l-1.78-1.781zm4.261 4.26l1.514 1.515a2.003 2.003 0 012.45 2.45l1.514 1.514a4 4 0 00-5.478-5.478z","clip-rule":"evenodd"},null,-1),c("path",{d:"M12.454 16.697L9.75 13.992a4 4 0 01-3.742-3.741L2.335 6.578A9.98 9.98 0 00.458 10c1.274 4.057 5.064 7 9.542 7 .847 0 1.669-.105 2.454-.303z"},null,-1)])])):(H(),F("svg",mh,[...v[11]||(v[11]=[c("path",{d:"M10 12a2 2 0 100-4 2 2 0 000 4z"},null,-1),c("path",{"fill-rule":"evenodd",d:"M.458 10C1.732 5.943 5.522 3 10 3s8.268 2.943 9.542 7c-1.274 4.057-5.064 7-9.542 7S1.732 14.057.458 10zM14 10a4 4 0 11-8 0 4 4 0 018 0z","clip-rule":"evenodd"},null,-1)])]))])])]),c("div",yh,[v[15]||(v[15]=c("label",null,"加密方式",-1)),Ae(c("select",{"onUpdate:modelValue":v[4]||(v[4]=E=>t.value.method=E)},[...v[14]||(v[14]=[c("option",null,"aes-256-gcm",-1),c("option",null,"aes-128-gcm",-1),c("option",null,"chacha20-ietf-poly1305",-1),c("option",null,"2022-blake3-aes-256-gcm",-1),c("option",null,"2022-blake3-aes-128-gcm",-1),c("option",null,"2022-blake3-chacha20-poly1305",-1)])],512),[[Pn,t.value.method]])]),c("div",_h,[v[16]||(v[16]=c("label",null,"本地 SOCKS5 端口",-1)),Ae(c("input",{"onUpdate:modelValue":v[5]||(v[5]=E=>t.value.localPort=E),type:"number",min:"1",max:"65535"},null,512),[[Oe,t.value.localPort,void 0,{number:!0}]])])]),c("div",bh,[c("button",{class:"btn primary",onClick:u,disabled:s.value},[s.value?(H(),F("span",xh)):ve("",!0),pe(" "+z(s.value?"保存中…":"保存设置"),1)],8,wh)])]),c("div",Ch,[c("div",Sh,[v[19]||(v[19]=c("h3",null,"运行状态",-1)),c("div",Eh,[c("button",{class:"btn",onClick:d,disabled:o.value||n.value.running},"启动",8,Ah),c("button",{class:"btn danger",onClick:m,disabled:o.value||!n.value.running},"停止",8,Th),c("button",{class:"btn icon-only",onClick:i,disabled:o.value,title:"刷新状态"},[...v[18]||(v[18]=[c("svg",{viewBox:"0 0 20 20",fill:"currentColor"},[c("path",{"fill-rule":"evenodd",d:"M4 2a1 1 0 011 1v2.101a7.002 7.002 0 0111.601 2.566 1 1 0 11-1.885.666A5.002 5.002 0 005.999 7H9a1 1 0 010 2H4a1 1 0 01-1-1V3a1 1 0 011-1zm.008 9.057a1 1 0 011.276.61A5.002 5.002 0 0014.001 13H11a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0v-2.101a7.002 7.002 0 01-11.601-2.566 1 1 0 01.61-1.276z","clip-rule":"evenodd"})],-1)])],8,Rh)])]),c("p",Ph,[c("span",{class:_e(["status-dot",n.value.running?"on":"off"])},null,2),c("span",{class:_e(n.value.running?"status-on":"status-off")},z(n.value.running?"运行中":"已停止"),3),n.value.running&&n.value.pid?(H(),F("span",Oh,"PID "+z(n.value.pid),1)):ve("",!0),n.value.running?(H(),F("span",kh,"→ socks5://127.0.0.1:"+z(t.value.localPort),1)):ve("",!0)]),n.value.error?(H(),F("p",Nh,z(n.value.error),1)):ve("",!0),c("div",Ih,[c("button",{type:"button",class:"log-toggle",onClick:v[6]||(v[6]=E=>l.value=!l.value)},[(H(),F("svg",{viewBox:"0 0 20 20",fill:"currentColor",style:gs({transform:l.value?"rotate(90deg)":"none"})},[...v[20]||(v[20]=[c("path",{"fill-rule":"evenodd",d:"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z","clip-rule":"evenodd"},null,-1)])],4)),v[21]||(v[21]=pe(" 最近日志 ",-1)),c("span",Mh,z(((b=n.value.logs)==null?void 0:b.length)??0)+" 行",1)]),l.value?(H(),F("pre",$h,z((n.value.logs||[]).join(`
|
|
28
|
-
`)||"(暂无日志)"),1)):ve("",!0)])])])}}},Dh=At(Lh,[["__scopeId","data-v-2ef4dba1"]]),Vh=[{path:"/",name:"ModeSelect",component:qf,meta:{title:"选择模式"}},{path:"/login",name:"Login",component:sd,meta:{title:"登录"}},{path:"/register",name:"Register",component:pd,meta:{title:"注册"}},{path:"/console",redirect:"/console/traffic"},{path:"/console/traffic",name:"Traffic",component:oh,meta:{title:"流量记录"}},{path:"/console/proxy",name:"ProxySettings",component:Bd,meta:{title:"代理设置"}},{path:"/console/pac-rules",name:"PacRules",component:gp,meta:{title:"PAC 规则"}},{path:"/console/shadowsocks",name:"Shadowsocks",component:Dh,meta:{title:"Shadowsocks"}}],xi=pf({history:Gu(),routes:Vh});xi.beforeEach((e,t,n)=>{const s=mi();e.path!=="/"&&!e.path.startsWith("/login")&&!e.path.startsWith("/register")&&!s?n("/"):n()});mi();const Ci=ou(jf);Ci.use(xi);Ci.mount("#app");
|