From 14e22728d1c03eb4cc770c8c93cfe9296b1a9441 Mon Sep 17 00:00:00 2001
From: wujingjing <gersonwu@qq.com>
Date: 星期一, 06 一月 2025 13:39:57 +0800
Subject: [PATCH] 下载到本地

---
 customer_list/ch/ai_html/lib/vue-3.3.4.js                 | 15363 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 customer_list/ch/ai_html/views/extension/index.css        |    9 
 customer_list/ch/ai_html/views/extension/index.html       |  240 
 customer_list/ch/ai_html/lib/unocss-attributify.global.js |   11 
 4 files changed, 15,525 insertions(+), 98 deletions(-)

diff --git a/customer_list/ch/ai_html/lib/unocss-attributify.global.js b/customer_list/ch/ai_html/lib/unocss-attributify.global.js
new file mode 100644
index 0000000..2f6ff52
--- /dev/null
+++ b/customer_list/ch/ai_html/lib/unocss-attributify.global.js
@@ -0,0 +1,11 @@
+"use strict";(()=>{var nl=Object.defineProperty;var ol=(e,t)=>{for(var r in t)nl(e,r,{get:t[r],enumerable:!0})};var Fe="default",lt="preflights",il="shortcuts",sl="imports",In={[sl]:-200,[lt]:-100,[il]:-10,[Fe]:0};var ct=/[\\:]?[\s'"`;{}]+/g;function al(e){return e.split(ct)}var ut={name:"@unocss/core/extractor-split",order:0,extract({code:e}){return al(e)}};function O(e=[]){return Array.isArray(e)?e:[e]}function X(e){return Array.from(new Set(e))}function Br(e,t){return e.reduce((r,n)=>(r.findIndex(i=>t(n,i))===-1&&r.push(n),r),[])}function P(e){return typeof e=="string"}var _e=class extends Set{_map;constructor(t){super(t),this._map??=new Map}add(t){return this._map??=new Map,this._map.set(t,(this._map.get(t)??0)+1),super.add(t)}delete(t){return this._map.delete(t),super.delete(t)}clear(){this._map.clear(),super.clear()}getCount(t){return this._map.get(t)??0}setCount(t,r){return this._map.set(t,r),super.add(t)}};function ft(e){return e instanceof _e}function fe(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function se(e){let t=e.length,r=-1,n,o="",i=e.charCodeAt(0);for(;++r<t;){if(n=e.charCodeAt(r),n===0){o+="\uFFFD";continue}if(n===37){o+="\\%";continue}if(n===44){o+="\\,";continue}if(n>=1&&n<=31||n===127||r===0&&n>=48&&n<=57||r===1&&n>=48&&n<=57&&i===45){o+=`\\${n.toString(16)} `;continue}if(r===0&&t===1&&n===45){o+=`\\${e.charAt(r)}`;continue}if(n>=128||n===45||n===95||n>=48&&n<=57||n>=65&&n<=90||n>=97&&n<=122){o+=e.charAt(r);continue}o+=`\\${e.charAt(r)}`}return o}var pt=se;var ll=/^\[(.+?)~?="(.*)"\]$/;var cl=/[\w\u00A0-\uFFFF%-?]/;function Kn(e){return e.match(ll)}function Le(e=""){return cl.test(e)}function Gn(e){return typeof e=="function"?{match:e}:e}function Nr(e){return e.length===3}function dt(e){return e!=null}function Hn(){}var mt=class{_map=new Map;get(t,r){let n=this._map.get(t);if(n)return n.get(r)}getFallback(t,r,n){let o=this._map.get(t);return o||(o=new Map,this._map.set(t,o)),o.has(r)||o.set(r,n),o.get(r)}set(t,r,n){let o=this._map.get(t);return o||(o=new Map,this._map.set(t,o)),o.set(r,n),this}has(t,r){return this._map.get(t)?.has(r)}delete(t,r){return this._map.get(t)?.delete(r)||!1}deleteTop(t){return this._map.delete(t)}map(t){return Array.from(this._map.entries()).flatMap(([r,n])=>Array.from(n.entries()).map(([o,i])=>t(i,r,o)))}},ht=class extends Map{getFallback(t,r){let n=this.get(t);return n===void 0?(this.set(t,r),r):n}map(t){let r=[];return this.forEach((n,o)=>{r.push(t(n,o))}),r}flatMap(t){let r=[];return this.forEach((n,o)=>{r.push(...t(n,o))}),r}};function $e(e){return P(e)?e:(Array.isArray(e)?e:Object.entries(e)).filter(t=>t[1]!=null)}function qn(e){return Array.isArray(e)?e.find(t=>!Array.isArray(t)||Array.isArray(t[0]))?e.map(t=>$e(t)):[e]:[$e(e)]}function ul(e){return e.filter(([t,r],n)=>{if(t.startsWith("$$"))return!1;for(let o=n-1;o>=0;o--)if(e[o][0]===t&&e[o][1]===r)return!1;return!0})}function Se(e){return e==null?"":ul(e).map(([t,r])=>r!=null&&typeof r!="function"?`${t}:${r};`:void 0).filter(Boolean).join("")}function gt(e){return e&&typeof e=="object"&&!Array.isArray(e)}function Dr(e,t,r=!1){let n=e,o=t;if(Array.isArray(o))return r&&Array.isArray(o)?[...n,...o]:[...o];let i={...n};return gt(n)&&gt(o)&&Object.keys(o).forEach(s=>{gt(n[s])&&gt(o[s])||Array.isArray(n[s])&&Array.isArray(o[s])?i[s]=Dr(n[s],o[s],r):Object.assign(i,{[s]:o[s]})}),i}function Ue(e){let t,r,n;if(Array.isArray(e)){for(r=Array.from({length:t=e.length});t--;)r[t]=(n=e[t])&&typeof n=="object"?Ue(n):n;return r}if(Object.prototype.toString.call(e)==="[object Object]"){r={};for(t in e)t==="__proto__"?Object.defineProperty(r,t,{value:Ue(e[t]),configurable:!0,enumerable:!0,writable:!0}):r[t]=(n=e[t])&&typeof n=="object"?Ue(n):n;return r}return e}function Yn(e){return P(e[0])}function Xn(e){return P(e[0])}var bt={};function fl(e=["-",":"]){let t=e.join("|");return bt[t]||(bt[t]=new RegExp(`((?:[!@<~\\w+:_-]|\\[&?>?:?\\S*\\])+?)(${t})\\(((?:[~!<>\\w\\s:/\\\\,%#.$?-]|\\[.*?\\])+?)\\)(?!\\s*?=>)`,"gm")),bt[t].lastIndex=0,bt[t]}function pl(e,t=["-",":"],r=5){let n=fl(t),o,i=e.toString(),s=new Set,l=new Map;do o=!1,i=i.replace(n,(u,f,p,m,d)=>{if(!t.includes(p))return u;o=!0,s.add(f+p);let h=d+f.length+p.length+1,g={length:u.length,items:[]};l.set(d,g);for(let w of[...m.matchAll(/\S+/g)]){let j=h+w.index,y=l.get(j)?.items;y?l.delete(j):y=[{offset:j,length:w[0].length,className:w[0]}];for(let $ of y)$.className=$.className==="~"?f:$.className.replace(/^(!?)(.*)/,`$1${f}${p}$2`),g.items.push($)}return"$".repeat(u.length)}),r-=1;while(o&&r);let a;if(typeof e=="string"){a="";let u=0;for(let[f,p]of l)a+=e.slice(u,f),a+=p.items.map(m=>m.className).join(" "),u=f+p.length;a+=e.slice(u)}else{a=e;for(let[u,f]of l)a.overwrite(u,u+f.length,f.items.map(p=>p.className).join(" "))}return{prefixes:Array.from(s),hasChanged:o,groupsByOffset:l,get expanded(){return a.toString()}}}function Zn(e,t=["-",":"],r=5){let n=pl(e,t,r);return typeof e=="string"?n.expanded:e}var Jn=new Set;function Qn(e){Jn.has(e)||(console.warn("[unocss]",e),Jn.add(e))}function ro(e){return O(e).flatMap(t=>Array.isArray(t)?[t]:Object.entries(t))}var eo="_uno_resolved";async function dl(e){let t=typeof e=="function"?await e():await e;if(eo in t)return t;t={...t},Object.defineProperty(t,eo,{value:!0,enumerable:!1});let r=t.shortcuts?ro(t.shortcuts):void 0;if(t.shortcuts=r,t.prefix||t.layer){let n=o=>{o[2]||(o[2]={});let i=o[2];i.prefix==null&&t.prefix&&(i.prefix=O(t.prefix)),i.layer==null&&t.layer&&(i.layer=t.layer)};r?.forEach(n),t.rules?.forEach(n)}return t}async function no(e){let t=await dl(e);if(!t.presets)return[t];let r=(await Promise.all((t.presets||[]).flatMap(O).flatMap(no))).flat();return[t,...r]}function ml(e){if(e.length===0)return{};let t=[],r=[],n=!1,o=[],i=[],s=[];for(let a of e){if(a.pipeline===!1){n=!0;break}else a.pipeline?.include&&t.push(a.pipeline.include),a.pipeline?.exclude&&r.push(a.pipeline.exclude);a.filesystem&&o.push(a.filesystem),a.inline&&i.push(a.inline),a.plain&&s.push(a.plain)}let l={pipeline:n?!1:{include:X(to(...t)),exclude:X(to(...r))}};return o.length&&(l.filesystem=X(o.flat())),i.length&&(l.inline=X(i.flat())),s.length&&(l.plain=X(s.flat())),l}async function Ir(e={},t={}){let r=Object.assign({},t,e),n=Br((await Promise.all((r.presets||[]).flatMap(O).flatMap(no))).flat(),(x,b)=>x.name===b.name),o=[...n.filter(x=>x.enforce==="pre"),...n.filter(x=>!x.enforce),...n.filter(x=>x.enforce==="post")],i=[...o,r],s=[...i].reverse(),l=Object.assign({},In,...i.map(x=>x.layers));function a(x){return X(i.flatMap(b=>O(b[x]||[])))}let u=a("extractors"),f=s.find(x=>x.extractorDefault!==void 0)?.extractorDefault;f===void 0&&(f=ut),f&&!u.includes(f)&&u.unshift(f),u.sort((x,b)=>(x.order||0)-(b.order||0));let p=a("rules"),m={},d=p.length,h=p.filter(x=>Yn(x)?(O(x[2]?.prefix||"").forEach(k=>{m[k+x[0]]=x}),!1):!0).reverse(),g=hl(i.map(x=>x.theme)),w=a("extendTheme");for(let x of w)g=x(g)||g;let j={templates:X(i.flatMap(x=>O(x.autocomplete?.templates))),extractors:i.flatMap(x=>O(x.autocomplete?.extractors)).sort((x,b)=>(x.order||0)-(b.order||0)),shorthands:gl(i.map(x=>x.autocomplete?.shorthands||{}))},y=a("separators");y.length||(y=[":","-"]);let $=a("content"),L=ml($),E={mergeSelectors:!0,warn:!0,sortLayers:x=>x,...r,blocklist:a("blocklist"),presets:o,envMode:r.envMode||"build",shortcutsLayer:r.shortcutsLayer||"shortcuts",layers:l,theme:g,rules:p,rulesSize:d,rulesDynamic:h,rulesStaticMap:m,preprocess:a("preprocess"),postprocess:a("postprocess"),preflights:a("preflights"),autocomplete:j,variants:a("variants").map(Gn).sort((x,b)=>(x.order||0)-(b.order||0)),shortcuts:ro(a("shortcuts")).reverse(),extractors:u,safelist:a("safelist"),separators:y,details:r.details??r.envMode==="dev",content:L,transformers:Br(a("transformers"),(x,b)=>x.name===b.name)};for(let x of i)x?.configResolved?.(E);return E}function hl(e){return e.map(t=>t?Ue(t):{}).reduce((t,r)=>Dr(t,r),{})}function gl(e){return e.reduce((t,r)=>{let n={};for(let o in r){let i=r[o];Array.isArray(i)?n[o]=`(${i.join("|")})`:n[o]=i}return{...t,...n}},{})}function to(...e){return e.flatMap(bl)}function bl(e){return Array.isArray(e)?e:e?[e]:[]}var oo="0.65.3";function io(){return{events:{},emit(e,...t){(this.events[e]||[]).forEach(r=>r(...t))},on(e,t){return(this.events[e]=this.events[e]||[]).push(t),()=>this.events[e]=(this.events[e]||[]).filter(r=>r!==t)}}}var pe={shortcutsNoMerge:"$$symbol-shortcut-no-merge",variants:"$$symbol-variants",parent:"$$symbol-parent",selector:"$$symbol-selector",layer:"$$symbol-layer",sort:"$$symbol-sort"},Kr=class e{constructor(t={},r={}){this.userConfig=t;this.defaults=r}version=oo;events=io();config=void 0;cache=new Map;blocked=new Set;parentOrders=new Map;activatedRules=new Set;static async create(t={},r={}){let n=new e(t,r);return n.config=await Ir(n.userConfig,n.defaults),n.events.emit("config",n.config),n}async setConfig(t,r){t&&(r&&(this.defaults=r),this.userConfig=t,this.blocked.clear(),this.parentOrders.clear(),this.activatedRules.clear(),this.cache.clear(),this.config=await Ir(t,this.defaults),this.events.emit("config",this.config))}async applyExtractors(t,r,n=new Set){let o={original:t,code:t,id:r,extracted:n,envMode:this.config.envMode};for(let i of this.config.extractors){let s=await i.extract?.(o);if(s)if(ft(s)&&ft(n))for(let l of s)n.setCount(l,n.getCount(l)+s.getCount(l));else for(let l of s)n.add(l)}return n}makeContext(t,r){let n={rawSelector:t,currentSelector:r[1],theme:this.config.theme,generator:this,symbols:pe,variantHandlers:r[2],constructCSS:(...o)=>this.constructCustomCSS(n,...o),variantMatch:r};return n}async parseToken(t,r){if(this.blocked.has(t))return;let n=`${t}${r?` ${r}`:""}`;if(this.cache.has(n))return this.cache.get(n);let o=t;for(let a of this.config.preprocess)o=a(t);if(this.isBlocked(o)){this.blocked.add(t),this.cache.set(n,null);return}let i=await this.matchVariants(t,o);if(i.every(a=>!a||this.isBlocked(a[1]))){this.blocked.add(t),this.cache.set(n,null);return}let s=async a=>{let u=this.makeContext(t,[r||a[0],a[1],a[2],a[3]]);this.config.details&&(u.variants=[...a[3]]);let f=await this.expandShortcut(u.currentSelector,u);return f?await this.stringifyShortcuts(u.variantMatch,u,f[0],f[1]):(await this.parseUtil(u.variantMatch,u))?.map(m=>this.stringifyUtil(m,u)).filter(dt)},l=(await Promise.all(i.map(a=>s(a)))).flat().filter(a=>!!a);if(l?.length)return this.cache.set(n,l),l;this.cache.set(n,null)}async generate(t,r={}){let{id:n,scope:o,preflights:i=!0,safelist:s=!0,minify:l=!1,extendedInfo:a=!1}=r,u=P(t)?await this.applyExtractors(t,n,a?new _e:new Set):Array.isArray(t)?new Set(t):t;if(s){let b={generator:this,theme:this.config.theme};this.config.safelist.flatMap(k=>typeof k=="function"?k(b):k).forEach(k=>{u.has(k)||u.add(k)})}let f=l?"":`
+`,p=new Set([Fe]),m=a?new Map:new Set,d=new Map,h={},g=Array.from(u).map(async b=>{if(m.has(b))return;let k=await this.parseToken(b);if(k!=null){m instanceof Map?m.set(b,{data:k,count:ft(u)?u.getCount(b):-1}):m.add(b);for(let R of k){let H=R[3]||"",q=R[4]?.layer;d.has(H)||d.set(H,[]),d.get(H).push(R),q&&p.add(q)}}});await Promise.all(g),await(async()=>{if(!i)return;let b={generator:this,theme:this.config.theme},k=new Set([]);this.config.preflights.forEach(({layer:R=lt})=>{p.add(R),k.add(R)}),h=Object.fromEntries(await Promise.all(Array.from(k).map(async R=>{let q=(await Promise.all(this.config.preflights.filter(ee=>(ee.layer||lt)===R).map(async ee=>await ee.getCSS(b)))).filter(Boolean).join(f);return[R,q]})))})();let w=this.config.sortLayers(Array.from(p).sort((b,k)=>(this.config.layers[b]??0)-(this.config.layers[k]??0)||b.localeCompare(k))),j={},y=this.config.outputToCssLayers,$=b=>{let k=b;return typeof y=="object"&&(k=y.cssLayerName?.(b)),k===null?null:k??b},L=(b=Fe)=>{if(j[b])return j[b];let k=Array.from(d).sort((q,ee)=>(this.parentOrders.get(q[0])??0)-(this.parentOrders.get(ee[0])??0)||q[0]?.localeCompare(ee[0]||"")||0).map(([q,ee])=>{let C=ee.length,A=ee.filter(z=>(z[4]?.layer||Fe)===b).sort((z,D)=>z[0]-D[0]||(z[4]?.sort||0)-(D[4]?.sort||0)||z[5]?.currentSelector?.localeCompare(D[5]?.currentSelector??"")||z[1]?.localeCompare(D[1]||"")||z[2]?.localeCompare(D[2]||"")||0).map(([,z,D,,at,,Ur])=>[[[(z&&vl(z,o))??"",at?.sort??0]],D,!!(Ur??at?.noMerge)]);if(!A.length)return;let F=A.reverse().map(([z,D,at],Ur)=>{if(!at&&this.config.mergeSelectors)for(let ue=Ur+1;ue<C;ue++){let re=A[ue];if(re&&!re[2]&&(z&&re[0]||z==null&&re[0]==null)&&re[1]===D)return z&&re[0]&&re[0].push(...z),null}let Wr=z?X(z.sort((ue,re)=>ue[1]-re[1]||ue[0]?.localeCompare(re[0]||"")||0).map(ue=>ue[0]).filter(Boolean)):[];return Wr.length?`${Wr.join(`,${f}`)}{${D}}`:D}).filter(Boolean).reverse().join(f);if(!q)return F;let U=q.split(" $$ ");return`${U.join("{")}{${f}${F}${f}${"}".repeat(U.length)}`}).filter(Boolean).join(f);i&&(k=[h[b],k].filter(Boolean).join(f));let R;y&&k&&(R=$(b),R!==null&&(k=`@layer ${R}{${f}${k}${f}}`));let H=l?"":`/* layer: ${b}${R&&R!==b?`, alias: ${R}`:""} */${f}`;return j[b]=k?H+k:""},E=(b=w,k)=>{let R=b.filter(H=>!k?.includes(H));return[y&&R.length>0?`@layer ${R.map($).filter(dt).join(", ")};`:void 0,...R.map(H=>L(H)||"")].filter(Boolean).join(f)};return{get css(){return E()},layers:w,matched:m,getLayers:E,getLayer:L,setLayer:async(b,k)=>{let R=await k(L(b));return j[b]=R,R}}}async matchVariants(t,r){let n={rawSelector:t,theme:this.config.theme,generator:this},o=async i=>{let s=!0,[,,l,a]=i;for(;s;){s=!1;let u=i[1];for(let f of this.config.variants){if(!f.multiPass&&a.has(f))continue;let p=await f.match(u,n);if(p){if(P(p)){if(p===u)continue;p={matcher:p}}if(Array.isArray(p)){if(!p.length)continue;if(p.length===1)p=p[0];else{if(f.multiPass)throw new Error("multiPass can not be used together with array return variants");let m=p.map(d=>{let h=d.matcher??u,g=[d,...l],w=new Set(a);return w.add(f),[i[0],h,g,w]});return(await Promise.all(m.map(d=>o(d)))).flat()}}i[1]=p.matcher??u,l.unshift(p),a.add(f),s=!0;break}}if(!s)break;if(l.length>500)throw new Error(`Too many variants applied to "${t}"`)}return[i]};return await o([t,r||t,[],new Set])}applyVariants(t,r=t[4],n=t[1]){let i=r.slice().sort((u,f)=>(u.order||0)-(f.order||0)).reduceRight((u,f)=>p=>{let m=f.body?.(p.entries)||p.entries,d=Array.isArray(f.parent)?f.parent:[f.parent,void 0];return(f.handle??kl)({...p,entries:m,selector:f.selector?.(p.selector,m)||p.selector,parent:d[0]||p.parent,parentOrder:d[1]||p.parentOrder,layer:f.layer||p.layer,sort:f.sort||p.sort},u)},u=>u)({prefix:"",selector:wl(n),pseudo:"",entries:t[2]}),{parent:s,parentOrder:l}=i;s!=null&&l!=null&&this.parentOrders.set(s,l);let a={selector:[i.prefix,i.selector,i.pseudo].join(""),entries:i.entries,parent:s,layer:i.layer,sort:i.sort,noMerge:i.noMerge};for(let u of this.config.postprocess)u(a);return a}constructCustomCSS(t,r,n){let o=$e(r);if(P(o))return o;let{selector:i,entries:s,parent:l}=this.applyVariants([0,n||t.rawSelector,o,void 0,t.variantHandlers]),a=`${i}{${Se(s)}}`;return l?`${l}{${a}}`:a}async parseUtil(t,r,n=!1,o){let i=P(t)?await this.matchVariants(t):[t],s=async([a,u,f])=>{this.config.details&&(r.rules=r.rules??[]);let p=this.config.rulesStaticMap[u];if(p&&p[1]&&(n||!p[2]?.internal)){r.generator.activatedRules.add(p),this.config.details&&r.rules.push(p);let d=this.config.rules.indexOf(p),h=$e(p[1]),g=p[2];return P(h)?[[d,h,g]]:[[d,a,h,g,f]]}r.variantHandlers=f;let{rulesDynamic:m}=this.config;for(let d of m){let[h,g,w]=d;if(w?.internal&&!n)continue;let j=u;if(w?.prefix){let E=O(w.prefix);if(o){let x=O(o);if(!E.some(b=>x.includes(b)))continue}else{let x=E.find(b=>u.startsWith(b));if(x==null)continue;j=u.slice(x.length)}}let y=j.match(h);if(!y)continue;let $=await g(y,r);if(!$)continue;if(r.generator.activatedRules.add(d),this.config.details&&r.rules.push(d),typeof $!="string")if(Symbol.asyncIterator in $){let E=[];for await(let x of $)x&&E.push(x);$=E}else Symbol.iterator in $&&!Array.isArray($)&&($=Array.from($).filter(dt));let L=qn($).filter(E=>E.length);if(L.length){let E=this.config.rules.indexOf(d);return L.map(x=>{if(P(x))return[E,x,w];let b=f,k=w;for(let R of x)R[0]===pe.variants?b=[...O(R[1]),...b]:R[0]===pe.parent?b=[{parent:R[1]},...b]:R[0]===pe.selector?b=[{selector:R[1]},...b]:R[0]===pe.layer?b=[{layer:R[1]},...b]:R[0]===pe.sort&&(k={...k,sort:R[1]});return[E,a,x,k,b]})}}},l=(await Promise.all(i.map(a=>s(a)))).flat().filter(a=>!!a);if(l.length)return l}stringifyUtil(t,r){if(!t)return;if(Nr(t))return[t[0],void 0,t[1],void 0,t[2],this.config.details?r:void 0,void 0];let{selector:n,entries:o,parent:i,layer:s,sort:l,noMerge:a}=this.applyVariants(t),u=Se(o);if(!u)return;let{layer:f,sort:p,...m}=t[3]??{},d={...m,layer:s??f,sort:l??p};return[t[0],n,u,i,d,this.config.details?r:void 0,a]}async expandShortcut(t,r,n=5){if(n===0)return;let o=this.config.details?u=>{r.shortcuts=r.shortcuts??[],r.shortcuts.push(u)}:Hn,i,s,l,a;for(let u of this.config.shortcuts){let f=t;if(u[2]?.prefix){let m=O(u[2].prefix).find(d=>t.startsWith(d));if(m==null)continue;f=t.slice(m.length)}if(Xn(u)){if(u[0]===f){i=i||u[2],s=u[1],o(u);break}}else{let p=f.match(u[0]);if(p&&(s=u[1](p,r)),s){i=i||u[2],o(u);break}}}if(s&&(l=X(O(s).filter(P).map(u=>Zn(u.trim()).split(/\s+/g)).flat()),a=O(s).filter(u=>!P(u)).map(u=>({handles:[],value:u}))),!s){let u=P(t)?await this.matchVariants(t):[t];for(let f of u){let[p,m,d]=f;if(p!==m){let h=await this.expandShortcut(m,r,n-1);h&&(l=h[0].filter(P).map(g=>p.replace(m,g)),a=h[0].filter(g=>!P(g)).map(g=>({handles:[...g.handles,...d],value:g.value})))}}}if(!(!l?.length&&!a?.length))return[[await Promise.all(O(l).map(async u=>(await this.expandShortcut(u,r,n-1))?.[0]||[u])),a].flat(2).filter(u=>!!u),i]}async stringifyShortcuts(t,r,n,o={layer:this.config.shortcutsLayer}){let i=new ht,s=(await Promise.all(X(n).map(async f=>{let p=P(f)?await this.parseUtil(f,r,!0,o.prefix):[[Number.POSITIVE_INFINITY,"{inline}",$e(f.value),void 0,f.handles]];return!p&&this.config.warn&&Qn(`unmatched utility "${f}" in shortcut "${t[1]}"`),p||[]}))).flat(1).filter(Boolean).sort((f,p)=>f[0]-p[0]),[l,,a]=t,u=[];for(let f of s){if(Nr(f)){u.push([f[0],void 0,f[1],void 0,f[2],r,void 0]);continue}let{selector:p,entries:m,parent:d,sort:h,noMerge:g,layer:w}=this.applyVariants(f,[...f[4],...a],l);i.getFallback(w??o.layer,new mt).getFallback(p,d,[[],f[0]])[0].push([m,!!(g??f[3]?.noMerge),h??0])}return u.concat(i.flatMap((f,p)=>f.map(([m,d],h,g)=>{let w=(y,$,L)=>{let E=Math.max(...L.map(b=>b[1])),x=L.map(b=>b[0]);return(y?[x.flat(1)]:x).map(b=>{let k=Se(b);if(k)return[d,h,k,g,{...o,noMerge:$,sort:E,layer:p},r,void 0]})};return[[m.filter(([,y])=>y).map(([y,,$])=>[y,$]),!0],[m.filter(([,y])=>!y).map(([y,,$])=>[y,$]),!1]].map(([y,$])=>[...w(!1,$,y.filter(([L])=>L.some(E=>E[0]===pe.shortcutsNoMerge))),...w(!0,$,y.filter(([L])=>L.every(E=>E[0]!==pe.shortcutsNoMerge)))])}).flat(2).filter(Boolean)))}isBlocked(t){return!t||this.config.blocklist.map(r=>Array.isArray(r)?r[0]:r).some(r=>typeof r=="function"?r(t):P(r)?r===t:r.test(t))}getBlocked(t){let r=this.config.blocklist.find(n=>{let o=Array.isArray(n)?n[0]:n;return typeof o=="function"?o(t):P(o)?o===t:o.test(t)});return r?Array.isArray(r)?r:[r,void 0]:void 0}};async function ao(e,t){return await Kr.create(e,t)}var lo=/\s\$\$\s+/g;function yl(e){return lo.test(e)}function vl(e,t){return yl(e)?e.replace(lo,t?` ${t} `:" "):t?`${t} ${e}`:e}var so=/^\[(.+?)(~?=)"(.*)"\]$/;function wl(e){return so.test(e)?e.replace(so,(t,r,n,o)=>`[${pt(r)}${n}"${pt(o)}"]`):`.${pt(e)}`}function kl(e,t){return t(e)}var Gr=/^(?!.*\[[^:]+:.+\]$)((?:.+:)?!?)(.*)$/;function co(e={}){let t=e.prefix??"un-",r=e.prefixedOnly??!1,n=e.trueToNonValued??!1,o;return{name:"attributify",match(i,{generator:s}){let l=Kn(i);if(!l)return;let a=l[1];if(a.startsWith(t))a=a.slice(t.length);else if(r)return;let u=l[2],[,f="",p=u]=u.match(Gr)||[];if(p==="~"||n&&p==="true"||!p)return`${f}${a}`;if(o==null){let m=s?.config?.separators?.join("|");m?o=new RegExp(`^(.*\\](?:${m}))(\\[[^\\]]+?\\])$`):o=!1}if(o){let[,m,d]=u.match(o)||[];if(d)return`${m}${f}${a}-${d}`}if(f&&p.match(/^[\d.]+$/)){let m=f.split(/([^:]*:)/g).filter(Boolean),d=m.pop()+p,h=m.join("");return[{matcher:`${f}${a}-${p}`},{matcher:`${h}${a}-${d}`}]}return`${f}${a}-${p}`}}}var $l=/(<\w[\w:.$-]*\s)((?:'[^>']*'|"[^>"]*"|`[^>`]*`|\{[^>}]*\}|[^>]*?)*)/g,Sl=/(\?|(?!\d|-{2}|-\d)[\w\u00A0-\uFFFF-:%]+)(?:=("[^"]*|'[^']*))?/g,uo=/[\s'"`;>]+/;function fo(e){return{name:"attributify",extract:({content:t,cursor:r})=>{let n=t.matchAll($l),o,i=0;for(let y of n){let[,$,L]=y,E=y.index+$.length;if(r>E&&r<=E+L.length){i=E,o=L;break}}if(!o)return null;let s=o.matchAll(Sl),l=0,a,u;for(let y of s){let[$,L,E]=y,x=i+y.index;if(r>x&&r<=x+$.length){l=x,a=L,u=E?.slice(1);break}}if(!a||a==="class"||a==="className"||a===":class")return null;let f=!!e?.prefix&&a.startsWith(e.prefix);if(e?.prefixedOnly&&!f)return null;let p=f?a.slice(e.prefix.length):a;if(u===void 0)return{extracted:p,resolveReplacement(y){let $=f?e.prefix.length:0;return{start:l+$,end:l+a.length,replacement:y}}};let m=l+a.length+2,d=uo.exec(u),h=0,g;for(;d;){let[y]=d;if(r>m+h&&r<=m+h+d.index){g=u.slice(h,h+d.index);break}h+=d.index+y.length,d=uo.exec(u.slice(h))}g===void 0&&(g=u.slice(h));let[,w="",j]=g.match(Gr)||[];return{extracted:`${w}${p}-${j}`,transformSuggestions(y){return y.filter($=>$.startsWith(`${w}${p}-`)).map($=>w+$.slice(w.length+p.length+1))},resolveReplacement(y){return{start:h+m,end:h+m+g.length,replacement:w+y.slice(w.length+p.length+1)}}}}}}var Cl=["v-bind:",":"],po=/[\s'"`;]+/g,Hr=/<[^>\s]*\s((?:'[^']*'|"[^"]*"|`[^`]*`|\{[^}]*\}|=>|[^>]*?)*)/g,Rl=/(\?|(?!\d|-{2}|-\d)[\w\u00A0-\uFFFF:!%.~<-]+)=?(?:"([^"]*)"|'([^']*)'|\{([^}]*)\})?/g,qr=["placeholder","fill","opacity","stroke-opacity"];function mo(e){let t=e?.ignoreAttributes??qr,r=e?.nonValuedAttribute??!0,n=e?.trueToNonValued??!1;return{name:"@unocss/preset-attributify/extractor",extract({code:o}){return Array.from(o.matchAll(Hr)).flatMap(i=>Array.from((i[1]||"").matchAll(Rl))).flatMap(([,i,...s])=>{let l=s.filter(Boolean).join("");if(t.includes(i))return[];for(let a of Cl)if(i.startsWith(a)){i=i.slice(a.length);break}if(!l){if(Le(i)&&r!==!1){let a=[`[${i}=""]`];return n&&a.push(`[${i}="true"]`),a}return[]}return["class","className"].includes(i)?l.split(po).filter(Le):Hr.test(l)?(Hr.lastIndex=0,this.extract({code:l})):e?.prefixedOnly&&e.prefix&&!i.startsWith(e.prefix)?[]:l.split(po).filter(a=>!!a&&a!==":").map(a=>`[${i}~="${a}"]`)})}}}var El=(e={})=>{e.strict=e.strict??!1,e.prefix=e.prefix??"un-",e.prefixedOnly=e.prefixedOnly??!1,e.nonValuedAttribute=e.nonValuedAttribute??!0,e.ignoreAttributes=e.ignoreAttributes??qr;let t=[co(e)],r=[mo(e)],n=[fo(e)];return{name:"@unocss/preset-attributify",enforce:"post",variants:t,extractors:r,options:e,autocomplete:{extractors:n},extractorDefault:e.strict?!1:void 0}},ho=El;function Tl(e){let t,r,n=2166136261;for(t=0,r=e.length;t<r;t++)n^=e.charCodeAt(t),n+=(n<<1)+(n<<4)+(n<<7)+(n<<8)+(n<<24);return`00000${(n>>>0).toString(36)}`.slice(-6)}function go(e,t,r,n){for(let o of Array.from(e.matchAll(r)))if(o!=null){let i=o[0],s=`${n}${Tl(i)}`;t.set(s,i),e=e.replace(i,s)}return e}function bo(e,t){for(let[r,n]of t.entries())e=e.replaceAll(r,n);return e}var jl=/\/\/#\s*sourceMappingURL=.*\n?/g;function xo(e){return e.includes("sourceMappingURL=")?e.replace(jl,""):e}var zl=/(?:[\w&:[\]-]|\[\S{1,64}=\S{1,64}\]){1,64}\[\\?['"]?\S{1,64}?['"]\]\]?[\w:-]{0,64}/g,Al=/\[(\\\W|[\w-]){1,64}:[^\s:]{0,64}?("\S{1,64}?"|'\S{1,64}?'|`\S{1,64}?`|[^\s:]{1,64}?)[^\s:]{0,64}?\)?\]/g,Ol=/^\[(?:\\\W|[\w-]){1,64}:['"]?\S{1,64}?['"]?\]$/;function Vl(e){let t=[];for(let o of e.matchAll(Al))o.index!==0&&!/^[\s'"`]/.test(e[o.index-1]??"")||t.push(o[0]);for(let o of e.matchAll(zl))t.push(o[0]);let r=new Map,n="@unocss-skip-arbitrary-brackets";return e=go(e,r,/-\[(?!&.+?;)[^\]]*\]/g,n),e&&e.split(ct).forEach(o=>{o.includes(n)&&(o=bo(o,r)),Le(o)&&!Ol.test(o)&&t.push(o)}),t}function yo(){return{name:"@unocss/extractor-arbitrary-variants",order:0,extract({code:e}){return Vl(xo(e))}}}function vo(e){if(e.preflight)return[{layer:"preflights",getCSS({theme:t,generator:r}){if(t.preflightBase){let n=Object.entries(t.preflightBase);if(e.preflight==="on-demand"){let o=new Set(Array.from(r.activatedRules).map(i=>i[2]?.custom?.preflightKeys).filter(Boolean).flat());n=n.filter(([i])=>o.has(i))}if(n.length>0){let o=Se(n);return e.variablePrefix!=="un-"&&(o=o.replace(/--un-/g,`--${e.variablePrefix}`)),O(t.preflightRoot??["*,::before,::after","::backdrop"]).map(s=>`${s}{${o}}`).join("")}}}}]}function Ce(e,t,r){if(e==="")return;let n=e.length,o=0,i=!1,s=0;for(let l=0;l<n;l++)switch(e[l]){case t:i||(i=!0,s=l),o++;break;case r:if(--o,o<0)return;if(o===0)return[e.slice(s,l+1),e.slice(l+1),e.slice(0,s)];break}}function de(e,t,r,n){if(e===""||(P(n)&&(n=[n]),n.length===0))return;let o=e.length,i=0;for(let s=0;s<o;s++)switch(e[s]){case t:i++;break;case r:if(--i<0)return;break;default:for(let l of n){let a=l.length;if(a&&l===e.slice(s,s+a)&&i===0)return s===0||s===o-a?void 0:[e.slice(0,s),e.slice(s+a)]}}return[e,""]}function xe(e,t,r){r=r??10;let n=[],o=0;for(;e!=="";){if(++o>r)return;let i=de(e,"(",")",t);if(!i)return;let[s,l]=i;n.push(s),e=l}if(n.length>0)return n}var Yr=["hsl","hsla","hwb","lab","lch","oklab","oklch","rgb","rgba"],wo=["%alpha","<alpha-value>"],Pl=new RegExp(wo.map(e=>fe(e)).join("|"));function Y(e=""){let t=Ml(e);if(t==null||t===!1)return;let{type:r,components:n,alpha:o}=t,i=r.toLowerCase();if(n.length!==0&&!(Yr.includes(i)&&![1,3].includes(n.length)))return{type:i,components:n.map(s=>typeof s=="string"?s.trim():s),alpha:typeof o=="string"?o.trim():o}}function ae(e){let t=e.alpha??1;return typeof t=="string"&&wo.includes(t)?1:t}function M(e,t){if(typeof e=="string")return e.replace(Pl,`${t??1}`);let{components:r}=e,{alpha:n,type:o}=e;return n=t??n,o=o.toLowerCase(),["hsla","rgba"].includes(o)?`${o}(${r.join(", ")}${n==null?"":`, ${n}`})`:(n=n==null?"":` / ${n}`,Yr.includes(o)?`${o}(${r.join(" ")}${n})`:`color(${o} ${r.join(" ")}${n})`)}function Ml(e){if(!e)return;let t=Fl(e);if(t!=null||(t=_l(e),t!=null)||(t=Ll(e),t!=null)||(t=Wl(e),t!=null)||(t=Bl(e),t!=null))return t}function Fl(e){let[,t]=e.match(/^#([\da-f]+)$/i)||[];if(t)switch(t.length){case 3:case 4:let r=Array.from(t,o=>Number.parseInt(o,16)).map(o=>o<<4|o);return{type:"rgb",components:r.slice(0,3),alpha:t.length===3?void 0:Math.round(r[3]/255*100)/100};case 6:case 8:let n=Number.parseInt(t,16);return{type:"rgb",components:t.length===6?[n>>16&255,n>>8&255,n&255]:[n>>24&255,n>>16&255,n>>8&255],alpha:t.length===6?void 0:Math.round((n&255)/255*100)/100}}}function _l(e){let t={rebeccapurple:[102,51,153,1]}[e];if(t!=null)return{type:"rgb",components:t.slice(0,3),alpha:t[3]}}function Ll(e){let t=e.match(/^(rgb|rgba|hsl|hsla)\((.+)\)$/i);if(!t)return;let[,r,n]=t,o=xe(n,",",5);if(o){if([3,4].includes(o.length))return{type:r,components:o.slice(0,3),alpha:o[3]};if(o.length!==1)return!1}}var Ul=new RegExp(`^(${Yr.join("|")})\\((.+)\\)$`,"i");function Wl(e){let t=e.match(Ul);if(!t)return;let[,r,n]=t,o=ko(`${r} ${n}`);if(o){let{alpha:i,components:[s,...l]}=o;return{type:s,components:l,alpha:i}}}function Bl(e){let t=e.match(/^color\((.+)\)$/);if(!t)return;let r=ko(t[1]);if(r){let{alpha:n,components:[o,...i]}=r;return{type:o,components:i,alpha:n}}}function ko(e){let t=xe(e," ");if(!t)return;let r=t.length;if(t[r-2]==="/")return{components:t.slice(0,r-2),alpha:t[r-1]};if(t[r-2]!=null&&(t[r-2].endsWith("/")||t[r-1].startsWith("/"))){let i=t.splice(r-2);t.push(i.join(" ")),--r}let n=xe(t[r-1],"/",2);if(!n)return;if(n.length===1||n[n.length-1]==="")return{components:t};let o=n.pop();return t[r-1]=n.join("/"),{components:t,alpha:o}}function xt(e){let t=function(n){let o=this.__options?.sequence||[];this.__options.sequence=[];for(let i of o){let s=e[i](n);if(s!=null)return s}};function r(n,o){return n.__options||(n.__options={sequence:[]}),n.__options.sequence.push(o),n}for(let n of Object.keys(e))Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get(){return r(this,n)}});return t}var $o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ro=new Uint8Array(64),Nl=new Uint8Array(128);for(let e=0;e<$o.length;e++){let t=$o.charCodeAt(e);Ro[e]=t,Nl[t]=e}function We(e,t,r){let n=t-r;n=n<0?-n<<1|1:n<<1;do{let o=n&31;n>>>=5,n>0&&(o|=32),e.write(Ro[o])}while(n>0);return t}var So=1024*16,Co=typeof TextDecoder<"u"?new TextDecoder:typeof Buffer<"u"?{decode(e){return Buffer.from(e.buffer,e.byteOffset,e.byteLength).toString()}}:{decode(e){let t="";for(let r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return t}},Xr=class{constructor(){this.pos=0,this.out="",this.buffer=new Uint8Array(So)}write(t){let{buffer:r}=this;r[this.pos++]=t,this.pos===So&&(this.out+=Co.decode(r),this.pos=0)}flush(){let{buffer:t,out:r,pos:n}=this;return n>0?r+Co.decode(t.subarray(0,n)):r}};function Eo(e){let t=new Xr,r=0,n=0,o=0,i=0;for(let s=0;s<e.length;s++){let l=e[s];if(s>0&&t.write(59),l.length===0)continue;let a=0;for(let u=0;u<l.length;u++){let f=l[u];u>0&&t.write(44),a=We(t,f[0],a),f.length!==1&&(r=We(t,f[1],r),n=We(t,f[2],n),o=We(t,f[3],o),f.length!==4&&(i=We(t,f[4],i)))}}return t.flush()}var yt=class e{constructor(t){this.bits=t instanceof e?t.bits.slice():[]}add(t){this.bits[t>>5]|=1<<(t&31)}has(t){return!!(this.bits[t>>5]&1<<(t&31))}},vt=class e{constructor(t,r,n){this.start=t,this.end=r,this.original=n,this.intro="",this.outro="",this.content=n,this.storeName=!1,this.edited=!1,this.previous=null,this.next=null}appendLeft(t){this.outro+=t}appendRight(t){this.intro=this.intro+t}clone(){let t=new e(this.start,this.end,this.original);return t.intro=this.intro,t.outro=this.outro,t.content=this.content,t.storeName=this.storeName,t.edited=this.edited,t}contains(t){return this.start<t&&t<this.end}eachNext(t){let r=this;for(;r;)t(r),r=r.next}eachPrevious(t){let r=this;for(;r;)t(r),r=r.previous}edit(t,r,n){return this.content=t,n||(this.intro="",this.outro=""),this.storeName=r,this.edited=!0,this}prependLeft(t){this.outro=t+this.outro}prependRight(t){this.intro=t+this.intro}reset(){this.intro="",this.outro="",this.edited&&(this.content=this.original,this.storeName=!1,this.edited=!1)}split(t){let r=t-this.start,n=this.original.slice(0,r),o=this.original.slice(r);this.original=n;let i=new e(t,this.end,o);return i.outro=this.outro,this.outro="",this.end=t,this.edited?(i.edit("",!1),this.content=""):this.content=n,i.next=this.next,i.next&&(i.next.previous=i),i.previous=this,this.next=i,i}toString(){return this.intro+this.content+this.outro}trimEnd(t){if(this.outro=this.outro.replace(t,""),this.outro.length)return!0;let r=this.content.replace(t,"");if(r.length)return r!==this.content&&(this.split(this.start+r.length).edit("",void 0,!0),this.edited&&this.edit(r,this.storeName,!0)),!0;if(this.edit("",void 0,!0),this.intro=this.intro.replace(t,""),this.intro.length)return!0}trimStart(t){if(this.intro=this.intro.replace(t,""),this.intro.length)return!0;let r=this.content.replace(t,"");if(r.length){if(r!==this.content){let n=this.split(this.end-r.length);this.edited&&n.edit(r,this.storeName,!0),this.edit("",void 0,!0)}return!0}else if(this.edit("",void 0,!0),this.outro=this.outro.replace(t,""),this.outro.length)return!0}};function Dl(){return typeof globalThis<"u"&&typeof globalThis.btoa=="function"?e=>globalThis.btoa(unescape(encodeURIComponent(e))):typeof Buffer=="function"?e=>Buffer.from(e,"utf-8").toString("base64"):()=>{throw new Error("Unsupported environment: `window.btoa` or `Buffer` should be supported.")}}var Il=Dl(),Zr=class{constructor(t){this.version=3,this.file=t.file,this.sources=t.sources,this.sourcesContent=t.sourcesContent,this.names=t.names,this.mappings=Eo(t.mappings),typeof t.x_google_ignoreList<"u"&&(this.x_google_ignoreList=t.x_google_ignoreList),typeof t.debugId<"u"&&(this.debugId=t.debugId)}toString(){return JSON.stringify(this)}toUrl(){return"data:application/json;charset=utf-8;base64,"+Il(this.toString())}};function Kl(e){let t=e.split(`
+`),r=t.filter(i=>/^\t+/.test(i)),n=t.filter(i=>/^ {2,}/.test(i));if(r.length===0&&n.length===0)return null;if(r.length>=n.length)return"	";let o=n.reduce((i,s)=>{let l=/^ +/.exec(s)[0].length;return Math.min(l,i)},1/0);return new Array(o+1).join(" ")}function Gl(e,t){let r=e.split(/[/\\]/),n=t.split(/[/\\]/);for(r.pop();r[0]===n[0];)r.shift(),n.shift();if(r.length){let o=r.length;for(;o--;)r[o]=".."}return r.concat(n).join("/")}var Hl=Object.prototype.toString;function ql(e){return Hl.call(e)==="[object Object]"}function To(e){let t=e.split(`
+`),r=[];for(let n=0,o=0;n<t.length;n++)r.push(o),o+=t[n].length+1;return function(o){let i=0,s=r.length;for(;i<s;){let u=i+s>>1;o<r[u]?s=u:i=u+1}let l=i-1,a=o-r[l];return{line:l,column:a}}}var Yl=/\w/,Jr=class{constructor(t){this.hires=t,this.generatedCodeLine=0,this.generatedCodeColumn=0,this.raw=[],this.rawSegments=this.raw[this.generatedCodeLine]=[],this.pending=null}addEdit(t,r,n,o){if(r.length){let i=r.length-1,s=r.indexOf(`
+`,0),l=-1;for(;s>=0&&i>s;){let u=[this.generatedCodeColumn,t,n.line,n.column];o>=0&&u.push(o),this.rawSegments.push(u),this.generatedCodeLine+=1,this.raw[this.generatedCodeLine]=this.rawSegments=[],this.generatedCodeColumn=0,l=s,s=r.indexOf(`
+`,s+1)}let a=[this.generatedCodeColumn,t,n.line,n.column];o>=0&&a.push(o),this.rawSegments.push(a),this.advance(r.slice(l+1))}else this.pending&&(this.rawSegments.push(this.pending),this.advance(r));this.pending=null}addUneditedChunk(t,r,n,o,i){let s=r.start,l=!0,a=!1;for(;s<r.end;){if(n[s]===`
+`)o.line+=1,o.column=0,this.generatedCodeLine+=1,this.raw[this.generatedCodeLine]=this.rawSegments=[],this.generatedCodeColumn=0,l=!0,a=!1;else{if(this.hires||l||i.has(s)){let u=[this.generatedCodeColumn,t,o.line,o.column];this.hires==="boundary"?Yl.test(n[s])?a||(this.rawSegments.push(u),a=!0):(this.rawSegments.push(u),a=!1):this.rawSegments.push(u)}o.column+=1,this.generatedCodeColumn+=1,l=!1}s+=1}this.pending=null}advance(t){if(!t)return;let r=t.split(`
+`);if(r.length>1){for(let n=0;n<r.length-1;n++)this.generatedCodeLine++,this.raw[this.generatedCodeLine]=this.rawSegments=[];this.generatedCodeColumn=0}this.generatedCodeColumn+=r[r.length-1].length}},Be=`
+`,Re={insertLeft:!1,insertRight:!1,storeName:!1},wt=class e{constructor(t,r={}){let n=new vt(0,t.length,t);Object.defineProperties(this,{original:{writable:!0,value:t},outro:{writable:!0,value:""},intro:{writable:!0,value:""},firstChunk:{writable:!0,value:n},lastChunk:{writable:!0,value:n},lastSearchedChunk:{writable:!0,value:n},byStart:{writable:!0,value:{}},byEnd:{writable:!0,value:{}},filename:{writable:!0,value:r.filename},indentExclusionRanges:{writable:!0,value:r.indentExclusionRanges},sourcemapLocations:{writable:!0,value:new yt},storedNames:{writable:!0,value:{}},indentStr:{writable:!0,value:void 0},ignoreList:{writable:!0,value:r.ignoreList},offset:{writable:!0,value:r.offset||0}}),this.byStart[0]=n,this.byEnd[t.length]=n}addSourcemapLocation(t){this.sourcemapLocations.add(t)}append(t){if(typeof t!="string")throw new TypeError("outro content must be a string");return this.outro+=t,this}appendLeft(t,r){if(t=t+this.offset,typeof r!="string")throw new TypeError("inserted content must be a string");this._split(t);let n=this.byEnd[t];return n?n.appendLeft(r):this.intro+=r,this}appendRight(t,r){if(t=t+this.offset,typeof r!="string")throw new TypeError("inserted content must be a string");this._split(t);let n=this.byStart[t];return n?n.appendRight(r):this.outro+=r,this}clone(){let t=new e(this.original,{filename:this.filename,offset:this.offset}),r=this.firstChunk,n=t.firstChunk=t.lastSearchedChunk=r.clone();for(;r;){t.byStart[n.start]=n,t.byEnd[n.end]=n;let o=r.next,i=o&&o.clone();i&&(n.next=i,i.previous=n,n=i),r=o}return t.lastChunk=n,this.indentExclusionRanges&&(t.indentExclusionRanges=this.indentExclusionRanges.slice()),t.sourcemapLocations=new yt(this.sourcemapLocations),t.intro=this.intro,t.outro=this.outro,t}generateDecodedMap(t){t=t||{};let r=0,n=Object.keys(this.storedNames),o=new Jr(t.hires),i=To(this.original);return this.intro&&o.advance(this.intro),this.firstChunk.eachNext(s=>{let l=i(s.start);s.intro.length&&o.advance(s.intro),s.edited?o.addEdit(r,s.content,l,s.storeName?n.indexOf(s.original):-1):o.addUneditedChunk(r,s,this.original,l,this.sourcemapLocations),s.outro.length&&o.advance(s.outro)}),{file:t.file?t.file.split(/[/\\]/).pop():void 0,sources:[t.source?Gl(t.file||"",t.source):t.file||""],sourcesContent:t.includeContent?[this.original]:void 0,names:n,mappings:o.raw,x_google_ignoreList:this.ignoreList?[r]:void 0}}generateMap(t){return new Zr(this.generateDecodedMap(t))}_ensureindentStr(){this.indentStr===void 0&&(this.indentStr=Kl(this.original))}_getRawIndentString(){return this._ensureindentStr(),this.indentStr}getIndentString(){return this._ensureindentStr(),this.indentStr===null?"	":this.indentStr}indent(t,r){let n=/^[^\r\n]/gm;if(ql(t)&&(r=t,t=void 0),t===void 0&&(this._ensureindentStr(),t=this.indentStr||"	"),t==="")return this;r=r||{};let o={};r.exclude&&(typeof r.exclude[0]=="number"?[r.exclude]:r.exclude).forEach(f=>{for(let p=f[0];p<f[1];p+=1)o[p]=!0});let i=r.indentStart!==!1,s=u=>i?`${t}${u}`:(i=!0,u);this.intro=this.intro.replace(n,s);let l=0,a=this.firstChunk;for(;a;){let u=a.end;if(a.edited)o[l]||(a.content=a.content.replace(n,s),a.content.length&&(i=a.content[a.content.length-1]===`
+`));else for(l=a.start;l<u;){if(!o[l]){let f=this.original[l];f===`
+`?i=!0:f!=="\r"&&i&&(i=!1,l===a.start||(this._splitChunk(a,l),a=a.next),a.prependRight(t))}l+=1}l=a.end,a=a.next}return this.outro=this.outro.replace(n,s),this}insert(){throw new Error("magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)")}insertLeft(t,r){return Re.insertLeft||(console.warn("magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead"),Re.insertLeft=!0),this.appendLeft(t,r)}insertRight(t,r){return Re.insertRight||(console.warn("magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead"),Re.insertRight=!0),this.prependRight(t,r)}move(t,r,n){if(t=t+this.offset,r=r+this.offset,n=n+this.offset,n>=t&&n<=r)throw new Error("Cannot move a selection inside itself");this._split(t),this._split(r),this._split(n);let o=this.byStart[t],i=this.byEnd[r],s=o.previous,l=i.next,a=this.byStart[n];if(!a&&i===this.lastChunk)return this;let u=a?a.previous:this.lastChunk;return s&&(s.next=l),l&&(l.previous=s),u&&(u.next=o),a&&(a.previous=i),o.previous||(this.firstChunk=i.next),i.next||(this.lastChunk=o.previous,this.lastChunk.next=null),o.previous=u,i.next=a||null,u||(this.firstChunk=o),a||(this.lastChunk=i),this}overwrite(t,r,n,o){return o=o||{},this.update(t,r,n,{...o,overwrite:!o.contentOnly})}update(t,r,n,o){if(t=t+this.offset,r=r+this.offset,typeof n!="string")throw new TypeError("replacement content must be a string");if(this.original.length!==0){for(;t<0;)t+=this.original.length;for(;r<0;)r+=this.original.length}if(r>this.original.length)throw new Error("end is out of bounds");if(t===r)throw new Error("Cannot overwrite a zero-length range \u2013 use appendLeft or prependRight instead");this._split(t),this._split(r),o===!0&&(Re.storeName||(console.warn("The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string"),Re.storeName=!0),o={storeName:!0});let i=o!==void 0?o.storeName:!1,s=o!==void 0?o.overwrite:!1;if(i){let u=this.original.slice(t,r);Object.defineProperty(this.storedNames,u,{writable:!0,value:!0,enumerable:!0})}let l=this.byStart[t],a=this.byEnd[r];if(l){let u=l;for(;u!==a;){if(u.next!==this.byStart[u.end])throw new Error("Cannot overwrite across a split point");u=u.next,u.edit("",!1)}l.edit(n,i,!s)}else{let u=new vt(t,r,"").edit(n,i);a.next=u,u.previous=a}return this}prepend(t){if(typeof t!="string")throw new TypeError("outro content must be a string");return this.intro=t+this.intro,this}prependLeft(t,r){if(t=t+this.offset,typeof r!="string")throw new TypeError("inserted content must be a string");this._split(t);let n=this.byEnd[t];return n?n.prependLeft(r):this.intro=r+this.intro,this}prependRight(t,r){if(t=t+this.offset,typeof r!="string")throw new TypeError("inserted content must be a string");this._split(t);let n=this.byStart[t];return n?n.prependRight(r):this.outro=r+this.outro,this}remove(t,r){if(t=t+this.offset,r=r+this.offset,this.original.length!==0){for(;t<0;)t+=this.original.length;for(;r<0;)r+=this.original.length}if(t===r)return this;if(t<0||r>this.original.length)throw new Error("Character is out of bounds");if(t>r)throw new Error("end must be greater than start");this._split(t),this._split(r);let n=this.byStart[t];for(;n;)n.intro="",n.outro="",n.edit(""),n=r>n.end?this.byStart[n.end]:null;return this}reset(t,r){if(t=t+this.offset,r=r+this.offset,this.original.length!==0){for(;t<0;)t+=this.original.length;for(;r<0;)r+=this.original.length}if(t===r)return this;if(t<0||r>this.original.length)throw new Error("Character is out of bounds");if(t>r)throw new Error("end must be greater than start");this._split(t),this._split(r);let n=this.byStart[t];for(;n;)n.reset(),n=r>n.end?this.byStart[n.end]:null;return this}lastChar(){if(this.outro.length)return this.outro[this.outro.length-1];let t=this.lastChunk;do{if(t.outro.length)return t.outro[t.outro.length-1];if(t.content.length)return t.content[t.content.length-1];if(t.intro.length)return t.intro[t.intro.length-1]}while(t=t.previous);return this.intro.length?this.intro[this.intro.length-1]:""}lastLine(){let t=this.outro.lastIndexOf(Be);if(t!==-1)return this.outro.substr(t+1);let r=this.outro,n=this.lastChunk;do{if(n.outro.length>0){if(t=n.outro.lastIndexOf(Be),t!==-1)return n.outro.substr(t+1)+r;r=n.outro+r}if(n.content.length>0){if(t=n.content.lastIndexOf(Be),t!==-1)return n.content.substr(t+1)+r;r=n.content+r}if(n.intro.length>0){if(t=n.intro.lastIndexOf(Be),t!==-1)return n.intro.substr(t+1)+r;r=n.intro+r}}while(n=n.previous);return t=this.intro.lastIndexOf(Be),t!==-1?this.intro.substr(t+1)+r:this.intro+r}slice(t=0,r=this.original.length-this.offset){if(t=t+this.offset,r=r+this.offset,this.original.length!==0){for(;t<0;)t+=this.original.length;for(;r<0;)r+=this.original.length}let n="",o=this.firstChunk;for(;o&&(o.start>t||o.end<=t);){if(o.start<r&&o.end>=r)return n;o=o.next}if(o&&o.edited&&o.start!==t)throw new Error(`Cannot use replaced character ${t} as slice start anchor.`);let i=o;for(;o;){o.intro&&(i!==o||o.start===t)&&(n+=o.intro);let s=o.start<r&&o.end>=r;if(s&&o.edited&&o.end!==r)throw new Error(`Cannot use replaced character ${r} as slice end anchor.`);let l=i===o?t-o.start:0,a=s?o.content.length+r-o.end:o.content.length;if(n+=o.content.slice(l,a),o.outro&&(!s||o.end===r)&&(n+=o.outro),s)break;o=o.next}return n}snip(t,r){let n=this.clone();return n.remove(0,t),n.remove(r,n.original.length),n}_split(t){if(this.byStart[t]||this.byEnd[t])return;let r=this.lastSearchedChunk,n=t>r.end;for(;r;){if(r.contains(t))return this._splitChunk(r,t);r=n?this.byStart[r.end]:this.byEnd[r.start]}}_splitChunk(t,r){if(t.edited&&t.content.length){let o=To(this.original)(r);throw new Error(`Cannot split a chunk that has already been edited (${o.line}:${o.column} \u2013 "${t.original}")`)}let n=t.split(r);return this.byEnd[r]=t,this.byStart[r]=n,this.byEnd[n.end]=n,t===this.lastChunk&&(this.lastChunk=n),this.lastSearchedChunk=t,!0}toString(){let t=this.intro,r=this.firstChunk;for(;r;)t+=r.toString(),r=r.next;return t+this.outro}isEmpty(){let t=this.firstChunk;do if(t.intro.length&&t.intro.trim()||t.content.length&&t.content.trim()||t.outro.length&&t.outro.trim())return!1;while(t=t.next);return!0}length(){let t=this.firstChunk,r=0;do r+=t.intro.length+t.content.length+t.outro.length;while(t=t.next);return r}trimLines(){return this.trim("[\\r\\n]")}trim(t){return this.trimStart(t).trimEnd(t)}trimEndAborted(t){let r=new RegExp((t||"\\s")+"+$");if(this.outro=this.outro.replace(r,""),this.outro.length)return!0;let n=this.lastChunk;do{let o=n.end,i=n.trimEnd(r);if(n.end!==o&&(this.lastChunk===n&&(this.lastChunk=n.next),this.byEnd[n.end]=n,this.byStart[n.next.start]=n.next,this.byEnd[n.next.end]=n.next),i)return!0;n=n.previous}while(n);return!1}trimEnd(t){return this.trimEndAborted(t),this}trimStartAborted(t){let r=new RegExp("^"+(t||"\\s")+"+");if(this.intro=this.intro.replace(r,""),this.intro.length)return!0;let n=this.firstChunk;do{let o=n.end,i=n.trimStart(r);if(n.end!==o&&(n===this.lastChunk&&(this.lastChunk=n.next),this.byEnd[n.end]=n,this.byStart[n.next.start]=n.next,this.byEnd[n.next.end]=n.next),i)return!0;n=n.next}while(n);return!1}trimStart(t){return this.trimStartAborted(t),this}hasChanged(){return this.original!==this.toString()}_replaceRegexp(t,r){function n(i,s){return typeof r=="string"?r.replace(/\$(\$|&|\d+)/g,(l,a)=>a==="$"?"$":a==="&"?i[0]:+a<i.length?i[+a]:`$${a}`):r(...i,i.index,s,i.groups)}function o(i,s){let l,a=[];for(;l=i.exec(s);)a.push(l);return a}if(t.global)o(t,this.original).forEach(s=>{if(s.index!=null){let l=n(s,this.original);l!==s[0]&&this.overwrite(s.index,s.index+s[0].length,l)}});else{let i=this.original.match(t);if(i&&i.index!=null){let s=n(i,this.original);s!==i[0]&&this.overwrite(i.index,i.index+i[0].length,s)}}return this}_replaceString(t,r){let{original:n}=this,o=n.indexOf(t);return o!==-1&&this.overwrite(o,o+t.length,r),this}replace(t,r){return typeof t=="string"?this._replaceString(t,r):this._replaceRegexp(t,r)}_replaceAllString(t,r){let{original:n}=this,o=t.length;for(let i=n.indexOf(t);i!==-1;i=n.indexOf(t,i+o))n.slice(i,i+o)!==r&&this.overwrite(i,i+o,r);return this}replaceAll(t,r){if(typeof t=="string")return this._replaceAllString(t,r);if(!t.global)throw new TypeError("MagicString.prototype.replaceAll called with a non-global RegExp argument");return this._replaceRegexp(t,r)}};var Xl=/theme\(\s*(['"])?(.*?)\1?\s*\)/g;function jo(e){return e.includes("theme(")&&e.includes(")")}function zo(e,t,r=!0){let n=Array.from(e.toString().matchAll(Xl));if(!n.length)return e;let o=new wt(e);for(let i of n){let s=i[2];if(!s)throw new Error("theme() expect exact one argument, but got 0");let l=Zl(s,t,r);l&&o.overwrite(i.index,i.index+i[0].length,l)}return o.toString()}function Zl(e,t,r=!0){let[n,o]=e.split("/"),s=n.trim().split(".").reduce((l,a)=>l?.[a],t);if(typeof s=="object"&&(s=s.DEFAULT),typeof s=="string"){if(o){let l=Y(s);l&&(s=M(l,o))}return s}else if(r)throw new Error(`theme of "${e}" did not found`)}function K(e,t){let r;return{name:e,match(n,o){r||(r=new RegExp(`^${fe(e)}(?:${o.generator.config.separators.join("|")})`));let i=n.match(r);if(i)return{matcher:n.slice(i[0].length),handle:(s,l)=>l({...s,...t(s)})}},autocomplete:`${e}:`}}function G(e,t){let r;return{name:e,match(n,o){r||(r=new RegExp(`^${fe(e)}(?:${o.generator.config.separators.join("|")})`));let i=n.match(r);if(i)return{matcher:n.slice(i[0].length),handle:(s,l)=>l({...s,parent:`${s.parent?`${s.parent} $$ `:""}${t}`})}},autocomplete:`${e}:`}}function me(e,t,r){if(t.startsWith(`${e}[`)){let[n,o]=Ce(t.slice(e.length),"[","]")??[];if(n&&o){for(let i of r)if(o.startsWith(i))return[n,o.slice(i.length),i];return[n,o,""]}}}function I(e,t,r){if(t.startsWith(e)){let n=me(e,t,r);if(n){let[o="",i=n[1]]=I("/",n[1],r)??[];return[n[0],i,o]}for(let o of r.filter(i=>i!=="/")){let i=t.indexOf(o,e.length);if(i!==-1){let s=t.indexOf("/",e.length),l=s===-1||i<=s;return[t.slice(e.length,l?i:s),t.slice(i+o.length),l?"":t.slice(s+1,i)]}}}}var on={};ol(on,{auto:()=>ec,bracket:()=>sc,bracketOfColor:()=>ac,bracketOfLength:()=>lc,bracketOfPosition:()=>cc,cssvar:()=>uc,degree:()=>pc,fraction:()=>ic,global:()=>dc,number:()=>nc,numberWithUnit:()=>Ql,percent:()=>oc,position:()=>hc,properties:()=>mc,px:()=>rc,rem:()=>tc,time:()=>fc});var N={l:["-left"],r:["-right"],t:["-top"],b:["-bottom"],s:["-inline-start"],e:["-inline-end"],x:["-left","-right"],y:["-top","-bottom"],"":[""],bs:["-block-start"],be:["-block-end"],is:["-inline-start"],ie:["-inline-end"],block:["-block-start","-block-end"],inline:["-inline-start","-inline-end"]},Qr={...N,s:["-inset-inline-start"],start:["-inset-inline-start"],e:["-inset-inline-end"],end:["-inset-inline-end"],bs:["-inset-block-start"],be:["-inset-block-end"],is:["-inset-inline-start"],ie:["-inset-inline-end"],block:["-inset-block-start","-inset-block-end"],inline:["-inset-inline-start","-inset-inline-end"]},en={l:["-top-left","-bottom-left"],r:["-top-right","-bottom-right"],t:["-top-left","-top-right"],b:["-bottom-left","-bottom-right"],tl:["-top-left"],lt:["-top-left"],tr:["-top-right"],rt:["-top-right"],bl:["-bottom-left"],lb:["-bottom-left"],br:["-bottom-right"],rb:["-bottom-right"],"":[""],bs:["-start-start","-start-end"],be:["-end-start","-end-end"],s:["-end-start","-start-start"],is:["-end-start","-start-start"],e:["-start-end","-end-end"],ie:["-start-end","-end-end"],ss:["-start-start"],"bs-is":["-start-start"],"is-bs":["-start-start"],se:["-start-end"],"bs-ie":["-start-end"],"ie-bs":["-start-end"],es:["-end-start"],"be-is":["-end-start"],"is-be":["-end-start"],ee:["-end-end"],"be-ie":["-end-end"],"ie-be":["-end-end"]},Oo={x:["-x"],y:["-y"],z:["-z"],"":["-x","-y"]},Vo=["x","y","z"],Ao=["top","top center","top left","top right","bottom","bottom center","bottom left","bottom right","left","left center","left top","left bottom","right","right center","right top","right bottom","center","center top","center bottom","center left","center right","center center"],B=Object.assign({},...Ao.map(e=>({[e.replace(/ /,"-")]:e})),...Ao.map(e=>({[e.replace(/\b(\w)\w+/g,"$1").replace(/ /,"")]:e}))),S=["inherit","initial","revert","revert-layer","unset"],Ne=/^(calc|clamp|min|max)\s*\((.+)\)(.*)/,kt=/^(var)\s*\((.+)\)(.*)/;var Ee=/^(-?\d*(?:\.\d+)?)(px|pt|pc|%|r?(?:em|ex|lh|cap|ch|ic)|(?:[sld]?v|cq)(?:[whib]|min|max)|in|cm|mm|rpx)?$/i,tn=/^(-?\d*(?:\.\d+)?)$/,rn=/^(px|[sld]?v[wh])$/i,nn={px:1,vw:100,vh:100,svw:100,svh:100,dvw:100,dvh:100,lvh:100,lvw:100},$t=/^\[(color|image|length|size|position|quoted|string):/i,Po=/,(?![^()]*\))/g;var Jl=["color","border-color","background-color","outline-color","text-decoration-color","flex-grow","flex","flex-shrink","caret-color","font","gap","opacity","visibility","z-index","font-weight","zoom","text-shadow","transform","box-shadow","border","background-position","left","right","top","bottom","object-position","max-height","min-height","max-width","min-width","height","width","border-width","margin","padding","outline-width","outline-offset","font-size","line-height","text-indent","vertical-align","border-spacing","letter-spacing","word-spacing","stroke","filter","backdrop-filter","fill","mask","mask-size","mask-border","clip-path","clip","border-radius"];function Z(e){return+e.toFixed(10)}function Ql(e){let t=e.match(Ee);if(!t)return;let[,r,n]=t,o=Number.parseFloat(r);if(n&&!Number.isNaN(o))return`${Z(o)}${n}`}function ec(e){if(e==="auto"||e==="a")return"auto"}function tc(e){if(!e)return;if(rn.test(e))return`${nn[e]}${e}`;let t=e.match(Ee);if(!t)return;let[,r,n]=t,o=Number.parseFloat(r);if(!Number.isNaN(o))return o===0?"0":n?`${Z(o)}${n}`:`${Z(o/4)}rem`}function rc(e){if(rn.test(e))return`${nn[e]}${e}`;let t=e.match(Ee);if(!t)return;let[,r,n]=t,o=Number.parseFloat(r);if(!Number.isNaN(o))return n?`${Z(o)}${n}`:`${Z(o)}px`}function nc(e){if(!tn.test(e))return;let t=Number.parseFloat(e);if(!Number.isNaN(t))return Z(t)}function oc(e){if(e.endsWith("%")&&(e=e.slice(0,-1)),!tn.test(e))return;let t=Number.parseFloat(e);if(!Number.isNaN(t))return`${Z(t/100)}`}function ic(e){if(!e)return;if(e==="full")return"100%";let[t,r]=e.split("/"),n=Number.parseFloat(t)/Number.parseFloat(r);if(!Number.isNaN(n))return n===0?"0":`${Z(n*100)}%`}function St(e,t){if(e&&e.startsWith("[")&&e.endsWith("]")){let r,n,o=e.match($t);if(o?(t||(n=o[1]),r=e.slice(o[0].length,-1)):r=e.slice(1,-1),!r||r==='=""')return;r.startsWith("--")&&(r=`var(${r})`);let i=0;for(let s of r)if(s==="[")i+=1;else if(s==="]"&&(i-=1,i<0))return;if(i)return;switch(n){case"string":return r.replace(/(^|[^\\])_/g,"$1 ").replace(/\\_/g,"_");case"quoted":return r.replace(/(^|[^\\])_/g,"$1 ").replace(/\\_/g,"_").replace(/(["\\])/g,"\\$1").replace(/^(.+)$/,'"$1"')}return r.replace(/(url\(.*?\))/g,s=>s.replace(/_/g,"\\_")).replace(/(^|[^\\])_/g,"$1 ").replace(/\\_/g,"_").replace(/(?:calc|clamp|max|min)\((.*)/g,s=>{let l=[];return s.replace(/var\((--.+?)[,)]/g,(a,u)=>(l.push(u),a.replace(u,"--un-calc"))).replace(/(-?\d*\.?\d(?!-\d.+[,)](?![^+\-/*])\D)(?:%|[a-z]+)?|\))([+\-/*])/g,"$1 $2 ").replace(/--un-calc/g,()=>l.shift())})}}function sc(e){return St(e)}function ac(e){return St(e,"color")}function lc(e){return St(e,"length")}function cc(e){return St(e,"position")}function uc(e){if(/^\$[^\s'"`;{}]/.test(e)){let[t,r]=e.slice(1).split(",");return`var(--${se(t)}${r?`, ${r}`:""})`}}function fc(e){let t=e.match(/^(-?[0-9.]+)(s|ms)?$/i);if(!t)return;let[,r,n]=t,o=Number.parseFloat(r);if(!Number.isNaN(o))return o===0&&!n?"0s":n?`${Z(o)}${n}`:`${Z(o)}ms`}function pc(e){let t=e.match(/^(-?[0-9.]+)(deg|rad|grad|turn)?$/i);if(!t)return;let[,r,n]=t,o=Number.parseFloat(r);if(!Number.isNaN(o))return o===0?"0":n?`${Z(o)}${n}`:`${Z(o)}deg`}function dc(e){if(S.includes(e))return e}function mc(e){if(e.split(",").every(t=>Jl.includes(t)))return e}function hc(e){if(["top","left","right","bottom","center"].includes(e))return e}var gc=xt(on),c=gc;var Mo={mid:"middle",base:"baseline",btm:"bottom",baseline:"baseline",top:"top",start:"top",middle:"middle",bottom:"bottom",end:"bottom","text-top":"text-top","text-bottom":"text-bottom",sub:"sub",super:"super",...Object.fromEntries(S.map(e=>[e,e]))},Ct=[[/^(?:vertical|align|v)-([-\w]+%?)$/,([,e])=>({"vertical-align":Mo[e]??c.numberWithUnit(e)}),{autocomplete:[`(vertical|align|v)-(${Object.keys(Mo).join("|")})`,"(vertical|align|v)-<percentage>"]}]],Fo=["center","left","right","justify","start","end"],Rt=[...Fo.map(e=>[`text-${e}`,{"text-align":e}]),...[...S,...Fo].map(e=>[`text-align-${e}`,{"text-align":e}])];var Wo="$$mini-no-negative";function _(e){return([t,r,n],{theme:o})=>{let i=o.spacing?.[n||"DEFAULT"]??c.bracket.cssvar.global.auto.fraction.rem(n);if(i!=null)return N[r].map(s=>[`${e}${s}`,i]);if(n?.startsWith("-")){let s=o.spacing?.[n.slice(1)];if(s!=null)return N[r].map(l=>[`${e}${l}`,`calc(${s} * -1)`])}}}function _o(e,t,r="colors"){let n=e[r],o=-1;for(let i of t){if(o+=1,n&&typeof n!="string"){let s=t.slice(o).join("-").replace(/(-[a-z])/g,l=>l.slice(1).toUpperCase());if(n[s])return n[s];if(n[i]){n=n[i];continue}}return}return n}function Lo(e,t,r){return _o(e,t,r)||_o(e,t,"colors")}function an(e,t){let[r,n]=de(e,"[","]",["/",":"])??[];if(r!=null){let o=(r.match($t)??[])[1];if(o==null||o===t)return[r,n]}}function Te(e,t,r){let n=an(e,"color");if(!n)return;let[o,i]=n,s=o.replace(/([a-z])(\d)/g,"$1-$2").split(/-/g),[l]=s;if(!l)return;let a,u=c.bracketOfColor(o),f=u||o;if(c.numberWithUnit(f))return;if(/^#[\da-f]+$/i.test(f)?a=f:/^hex-[\da-fA-F]+$/.test(f)?a=`#${f.slice(4)}`:o.startsWith("$")&&(a=c.cssvar(o)),a=a||u,!a){let m=Lo(t,[o],r);typeof m=="string"&&(a=m)}let p="DEFAULT";if(!a){let m=s,d,[h]=s.slice(-1);/^\d+$/.test(h)&&(p=d=h,m=s.slice(0,-1));let g=Lo(t,m,r);typeof g=="object"?a=g[d??p]:typeof g=="string"&&!d&&(a=g)}return{opacity:i,name:l,no:p,color:a,cssColor:Y(a),alpha:c.bracket.cssvar.percent(i??"")}}function V(e,t,r,n){return([,o],{theme:i,generator:s})=>{let l=Te(o,i,r);if(!l)return;let{alpha:a,color:u,cssColor:f}=l,m=s.config.envMode==="dev"&&u?` /* ${u} */`:"",d={};if(f)if(a!=null)d[e]=M(f,a)+m;else{let h=`--un-${t}-opacity`,g=M(f,`var(${h})`);g.includes(h)&&(d[h]=ae(f)),d[e]=g+m}else if(u)if(a!=null)d[e]=M(u,a)+m;else{let h=`--un-${t}-opacity`,g=M(u,`var(${h})`);g.includes(h)&&(d[h]=1),d[e]=g+m}if(n?.(d)!==!1)return d}}function je(e,t){let r=[];e=O(e);for(let n=0;n<e.length;n++){let o=xe(e[n]," ",6);if(!o||o.length<3)return e;let i=!1,s=o.indexOf("inset");s!==-1&&(o.splice(s,1),i=!0);let l="",a=o.at(-1);if(Y(o.at(0))){let u=Y(o.shift());u&&(l=`, ${M(u)}`)}else if(Y(a)){let u=Y(o.pop());u&&(l=`, ${M(u)}`)}else a&&kt.test(a)&&(l=`, ${o.pop()}`);r.push(`${i?"inset ":""}${o.join(" ")} var(${t}${l})`)}return r}function ze(e,t,r){return e!=null&&!!Te(e,t,r)?.color}var Uo=/[a-z]+/gi,sn=new WeakMap;function ye({theme:e,generator:t},r="breakpoints"){let n=t?.userConfig?.theme?.[r]||e[r];if(!n)return;if(sn.has(e))return sn.get(e);let o=Object.entries(n).sort((i,s)=>Number.parseInt(i[1].replace(Uo,""))-Number.parseInt(s[1].replace(Uo,""))).map(([i,s])=>({point:i,size:s}));return sn.set(e,o),o}function v(e,t){return S.map(r=>[`${e}-${r}`,{[t??e]:r}])}function J(e){return e!=null&&Ne.test(e)}function Bo(e){return e[0]==="["&&e.slice(-1)==="]"&&(e=e.slice(1,-1)),Ne.test(e)||Ee.test(e)}function Et(e,t,r){let n=t.split(Po);return e||!e&&n.length===1?Oo[e].map(o=>[`--un-${r}${o}`,t]):n.map((o,i)=>[`--un-${r}-${Vo[i]}`,o])}var Tt=[[/^outline-(?:width-|size-)?(.+)$/,No,{autocomplete:"outline-(width|size)-<num>"}],[/^outline-(?:color-)?(.+)$/,bc,{autocomplete:"outline-$colors"}],[/^outline-offset-(.+)$/,([,e],{theme:t})=>({"outline-offset":t.lineWidth?.[e]??c.bracket.cssvar.global.px(e)}),{autocomplete:"outline-(offset)-<num>"}],["outline",{"outline-style":"solid"}],...["auto","dashed","dotted","double","hidden","solid","groove","ridge","inset","outset",...S].map(e=>[`outline-${e}`,{"outline-style":e}]),["outline-none",{outline:"2px solid transparent","outline-offset":"2px"}]];function No([,e],{theme:t}){return{"outline-width":t.lineWidth?.[e]??c.bracket.cssvar.global.px(e)}}function bc(e,t){return J(c.bracket(e[1]))?No(e,t):V("outline-color","outline-color","borderColor")(e,t)}var jt=[["appearance-auto",{"-webkit-appearance":"auto",appearance:"auto"}],["appearance-none",{"-webkit-appearance":"none",appearance:"none"}]];function xc(e){return c.properties.auto.global(e)??{contents:"contents",scroll:"scroll-position"}[e]}var zt=[[/^will-change-(.+)/,([,e])=>({"will-change":xc(e)})]];var ve=["solid","dashed","dotted","double","hidden","none","groove","ridge","inset","outset",...S],At=[[/^(?:border|b)()(?:-(.+))?$/,te,{autocomplete:"(border|b)-<directions>"}],[/^(?:border|b)-([xy])(?:-(.+))?$/,te],[/^(?:border|b)-([rltbse])(?:-(.+))?$/,te],[/^(?:border|b)-(block|inline)(?:-(.+))?$/,te],[/^(?:border|b)-([bi][se])(?:-(.+))?$/,te],[/^(?:border|b)-()(?:width|size)-(.+)$/,te,{autocomplete:["(border|b)-<num>","(border|b)-<directions>-<num>"]}],[/^(?:border|b)-([xy])-(?:width|size)-(.+)$/,te],[/^(?:border|b)-([rltbse])-(?:width|size)-(.+)$/,te],[/^(?:border|b)-(block|inline)-(?:width|size)-(.+)$/,te],[/^(?:border|b)-([bi][se])-(?:width|size)-(.+)$/,te],[/^(?:border|b)-()(?:color-)?(.+)$/,De,{autocomplete:["(border|b)-$colors","(border|b)-<directions>-$colors"]}],[/^(?:border|b)-([xy])-(?:color-)?(.+)$/,De],[/^(?:border|b)-([rltbse])-(?:color-)?(.+)$/,De],[/^(?:border|b)-(block|inline)-(?:color-)?(.+)$/,De],[/^(?:border|b)-([bi][se])-(?:color-)?(.+)$/,De],[/^(?:border|b)-()op(?:acity)?-?(.+)$/,Ie,{autocomplete:"(border|b)-(op|opacity)-<percent>"}],[/^(?:border|b)-([xy])-op(?:acity)?-?(.+)$/,Ie],[/^(?:border|b)-([rltbse])-op(?:acity)?-?(.+)$/,Ie],[/^(?:border|b)-(block|inline)-op(?:acity)?-?(.+)$/,Ie],[/^(?:border|b)-([bi][se])-op(?:acity)?-?(.+)$/,Ie],[/^(?:border-|b-)?(?:rounded|rd)()(?:-(.+))?$/,Ke,{autocomplete:["(border|b)-(rounded|rd)","(border|b)-(rounded|rd)-$borderRadius","(rounded|rd)","(rounded|rd)-$borderRadius"]}],[/^(?:border-|b-)?(?:rounded|rd)-([rltbse])(?:-(.+))?$/,Ke],[/^(?:border-|b-)?(?:rounded|rd)-([rltb]{2})(?:-(.+))?$/,Ke],[/^(?:border-|b-)?(?:rounded|rd)-([bise][se])(?:-(.+))?$/,Ke],[/^(?:border-|b-)?(?:rounded|rd)-([bi][se]-[bi][se])(?:-(.+))?$/,Ke],[/^(?:border|b)-(?:style-)?()(.+)$/,Ge,{autocomplete:["(border|b)-style",`(border|b)-(${ve.join("|")})`,"(border|b)-<directions>-style",`(border|b)-<directions>-(${ve.join("|")})`,`(border|b)-<directions>-style-(${ve.join("|")})`,`(border|b)-style-(${ve.join("|")})`]}],[/^(?:border|b)-([xy])-(?:style-)?(.+)$/,Ge],[/^(?:border|b)-([rltbse])-(?:style-)?(.+)$/,Ge],[/^(?:border|b)-(block|inline)-(?:style-)?(.+)$/,Ge],[/^(?:border|b)-([bi][se])-(?:style-)?(.+)$/,Ge]];function Do(e,t,r){if(t!=null)return{[`border${r}-color`]:M(e,t)};if(r===""){let n={},o="--un-border-opacity",i=M(e,`var(${o})`);return i.includes(o)&&(n[o]=typeof e=="string"?1:ae(e)),n["border-color"]=i,n}else{let n={},o="--un-border-opacity",i=`--un-border${r}-opacity`,s=M(e,`var(${i})`);return s.includes(i)&&(n[o]=typeof e=="string"?1:ae(e),n[i]=`var(${o})`),n[`border${r}-color`]=s,n}}function yc(e){return([,t],r)=>{let n=Te(t,r,"borderColor");if(!n)return;let{alpha:o,color:i,cssColor:s}=n;if(s)return Do(s,o,e);if(i)return Do(i,o,e)}}function te([,e="",t],{theme:r}){let n=r.lineWidth?.[t||"DEFAULT"]??c.bracket.cssvar.global.px(t||"1");if(e in N&&n!=null)return N[e].map(o=>[`border${o}-width`,n])}function De([,e="",t],r){if(e in N){if(J(c.bracket(t)))return te(["",e,t],r);if(ze(t,r.theme,"borderColor"))return Object.assign({},...N[e].map(n=>yc(n)(["",t],r.theme)))}}function Ie([,e="",t]){let r=c.bracket.percent.cssvar(t);if(e in N&&r!=null)return N[e].map(n=>[`--un-border${n}-opacity`,r])}function Ke([,e="",t],{theme:r}){let n=r.borderRadius?.[t||"DEFAULT"]||c.bracket.cssvar.global.fraction.rem(t||"1");if(e in en&&n!=null)return en[e].map(o=>[`border${o}-radius`,n])}function Ge([,e="",t]){if(ve.includes(t)&&e in N)return N[e].map(r=>[`border${r}-style`,t])}var Ot=[[/^op(?:acity)?-?(.+)$/,([,e])=>({opacity:c.bracket.percent.cssvar(e)})]],vc=/^\[url\(.+\)\]$/,wc=/^\[(?:length|size):.+\]$/,kc=/^\[position:.+\]$/,$c=/^\[(?:linear|conic|radial)-gradient\(.+\)\]$/,Sc=/^\[image:.+\]$/,Vt=[[/^bg-(.+)$/,(...e)=>{let t=e[0][1];if(vc.test(t))return{"--un-url":c.bracket(t),"background-image":"var(--un-url)"};if(wc.test(t)&&c.bracketOfLength(t)!=null)return{"background-size":c.bracketOfLength(t).split(" ").map(r=>c.fraction.auto.px.cssvar(r)??r).join(" ")};if((Bo(t)||kc.test(t))&&c.bracketOfPosition(t)!=null)return{"background-position":c.bracketOfPosition(t).split(" ").map(r=>c.position.fraction.auto.px.cssvar(r)??r).join(" ")};if($c.test(t)||Sc.test(t)){let r=c.bracket(t);if(r)return{"background-image":(r.startsWith("http")?`url(${r})`:c.cssvar(r))??r}}return V("background-color","bg","backgroundColor")(...e)},{autocomplete:"bg-$colors"}],[/^bg-op(?:acity)?-?(.+)$/,([,e])=>({"--un-bg-opacity":c.bracket.percent.cssvar(e)}),{autocomplete:"bg-(op|opacity)-<percent>"}]],Pt=[[/^color-scheme-(\w+)$/,([,e])=>({"color-scheme":e})]];var Mt=[[/^@container(?:\/(\w+))?(?:-(normal))?$/,([,e,t])=>({"container-type":t??"inline-size","container-name":e})]];var Io=["solid","double","dotted","dashed","wavy",...S],Ft=[[/^(?:decoration-)?(underline|overline|line-through)$/,([,e])=>({"text-decoration-line":e}),{autocomplete:"decoration-(underline|overline|line-through)"}],[/^(?:underline|decoration)-(?:size-)?(.+)$/,Ko,{autocomplete:"(underline|decoration)-<num>"}],[/^(?:underline|decoration)-(auto|from-font)$/,([,e])=>({"text-decoration-thickness":e}),{autocomplete:"(underline|decoration)-(auto|from-font)"}],[/^(?:underline|decoration)-(.+)$/,Cc,{autocomplete:"(underline|decoration)-$colors"}],[/^(?:underline|decoration)-op(?:acity)?-?(.+)$/,([,e])=>({"--un-line-opacity":c.bracket.percent.cssvar(e)}),{autocomplete:"(underline|decoration)-(op|opacity)-<percent>"}],[/^(?:underline|decoration)-offset-(.+)$/,([,e],{theme:t})=>({"text-underline-offset":t.lineWidth?.[e]??c.auto.bracket.cssvar.global.px(e)}),{autocomplete:"(underline|decoration)-(offset)-<num>"}],...Io.map(e=>[`underline-${e}`,{"text-decoration-style":e}]),...Io.map(e=>[`decoration-${e}`,{"text-decoration-style":e}]),["no-underline",{"text-decoration":"none"}],["decoration-none",{"text-decoration":"none"}]];function Ko([,e],{theme:t}){return{"text-decoration-thickness":t.lineWidth?.[e]??c.bracket.cssvar.global.px(e)}}function Cc(e,t){if(J(c.bracket(e[1])))return Ko(e,t);let r=V("text-decoration-color","line","borderColor")(e,t);if(r)return{"-webkit-text-decoration-color":r["text-decoration-color"],...r}}var _t=[["flex",{display:"flex"}],["inline-flex",{display:"inline-flex"}],["flex-inline",{display:"inline-flex"}],[/^flex-(.*)$/,([,e])=>({flex:c.bracket(e)!=null?c.bracket(e).split(" ").map(t=>c.cssvar.fraction(t)??t).join(" "):c.cssvar.fraction(e)})],["flex-1",{flex:"1 1 0%"}],["flex-auto",{flex:"1 1 auto"}],["flex-initial",{flex:"0 1 auto"}],["flex-none",{flex:"none"}],[/^(?:flex-)?shrink(?:-(.*))?$/,([,e=""])=>({"flex-shrink":c.bracket.cssvar.number(e)??1}),{autocomplete:["flex-shrink-<num>","shrink-<num>"]}],[/^(?:flex-)?grow(?:-(.*))?$/,([,e=""])=>({"flex-grow":c.bracket.cssvar.number(e)??1}),{autocomplete:["flex-grow-<num>","grow-<num>"]}],[/^(?:flex-)?basis-(.+)$/,([,e],{theme:t})=>({"flex-basis":t.spacing?.[e]??c.bracket.cssvar.auto.fraction.rem(e)}),{autocomplete:["flex-basis-$spacing","basis-$spacing"]}],["flex-row",{"flex-direction":"row"}],["flex-row-reverse",{"flex-direction":"row-reverse"}],["flex-col",{"flex-direction":"column"}],["flex-col-reverse",{"flex-direction":"column-reverse"}],["flex-wrap",{"flex-wrap":"wrap"}],["flex-wrap-reverse",{"flex-wrap":"wrap-reverse"}],["flex-nowrap",{"flex-wrap":"nowrap"}]];var Rc={"":"",x:"column-",y:"row-",col:"column-",row:"row-"};function ln([,e="",t],{theme:r}){let n=r.spacing?.[t]??c.bracket.cssvar.global.rem(t);if(n!=null)return{[`${Rc[e]}gap`]:n}}var Lt=[[/^(?:flex-|grid-)?gap-?()(.+)$/,ln,{autocomplete:["gap-$spacing","gap-<num>"]}],[/^(?:flex-|grid-)?gap-([xy])-?(.+)$/,ln,{autocomplete:["gap-(x|y)-$spacing","gap-(x|y)-<num>"]}],[/^(?:flex-|grid-)?gap-(col|row)-?(.+)$/,ln,{autocomplete:["gap-(col|row)-$spacing","gap-(col|row)-<num>"]}]];function ne(e){return e.replace("col","column")}function cn(e){return e[0]==="r"?"Row":"Column"}function Ec(e,t,r){let n=t[`gridAuto${cn(e)}`]?.[r];if(n!=null)return n;switch(r){case"min":return"min-content";case"max":return"max-content";case"fr":return"minmax(0,1fr)"}return c.bracket.cssvar.auto.rem(r)}var Ut=[["grid",{display:"grid"}],["inline-grid",{display:"inline-grid"}],[/^(?:grid-)?(row|col)-(.+)$/,([,e,t],{theme:r})=>({[`grid-${ne(e)}`]:r[`grid${cn(e)}`]?.[t]??c.bracket.cssvar.auto(t)})],[/^(?:grid-)?(row|col)-span-(.+)$/,([,e,t])=>{if(t==="full")return{[`grid-${ne(e)}`]:"1/-1"};let r=c.bracket.number(t);if(r!=null)return{[`grid-${ne(e)}`]:`span ${r}/span ${r}`}},{autocomplete:"(grid-row|grid-col|row|col)-span-<num>"}],[/^(?:grid-)?(row|col)-start-(.+)$/,([,e,t])=>({[`grid-${ne(e)}-start`]:c.bracket.cssvar(t)??t})],[/^(?:grid-)?(row|col)-end-(.+)$/,([,e,t])=>({[`grid-${ne(e)}-end`]:c.bracket.cssvar(t)??t}),{autocomplete:"(grid-row|grid-col|row|col)-(start|end)-<num>"}],[/^(?:grid-)?auto-(rows|cols)-(.+)$/,([,e,t],{theme:r})=>({[`grid-auto-${ne(e)}`]:Ec(e,r,t)}),{autocomplete:"(grid-auto|auto)-(rows|cols)-<num>"}],[/^(?:grid-auto-flow|auto-flow|grid-flow)-(.+)$/,([,e])=>({"grid-auto-flow":c.bracket.cssvar(e)})],[/^(?:grid-auto-flow|auto-flow|grid-flow)-(row|col|dense|row-dense|col-dense)$/,([,e])=>({"grid-auto-flow":ne(e).replace("-"," ")}),{autocomplete:["(grid-auto-flow|auto-flow|grid-flow)-(row|col|dense|row-dense|col-dense)"]}],[/^(?:grid-)?(rows|cols)-(.+)$/,([,e,t],{theme:r})=>({[`grid-template-${ne(e)}`]:r[`gridTemplate${cn(e)}`]?.[t]??c.bracket.cssvar(t)})],[/^(?:grid-)?(rows|cols)-minmax-([\w.-]+)$/,([,e,t])=>({[`grid-template-${ne(e)}`]:`repeat(auto-fill,minmax(${t},1fr))`})],[/^(?:grid-)?(rows|cols)-(\d+)$/,([,e,t])=>({[`grid-template-${ne(e)}`]:`repeat(${t},minmax(0,1fr))`}),{autocomplete:"(grid-rows|grid-cols|rows|cols)-<num>"}],[/^grid-area(s)?-(.+)$/,([,e,t])=>e!=null?{"grid-template-areas":c.cssvar(t)??t.split("-").map(r=>`"${c.bracket(r)}"`).join(" ")}:{"grid-area":c.bracket.cssvar(t)}],["grid-rows-none",{"grid-template-rows":"none"}],["grid-cols-none",{"grid-template-columns":"none"}],["grid-rows-subgrid",{"grid-template-rows":"subgrid"}],["grid-cols-subgrid",{"grid-template-columns":"subgrid"}]];var Wt=["auto","hidden","clip","visible","scroll","overlay",...S],Bt=[[/^(?:overflow|of)-(.+)$/,([,e])=>Wt.includes(e)?{overflow:e}:void 0,{autocomplete:[`(overflow|of)-(${Wt.join("|")})`,`(overflow|of)-(x|y)-(${Wt.join("|")})`]}],[/^(?:overflow|of)-([xy])-(.+)$/,([,e,t])=>Wt.includes(t)?{[`overflow-${e}`]:t}:void 0]];var Nt=[[/^(?:position-|pos-)?(relative|absolute|fixed|sticky)$/,([,e])=>({position:e}),{autocomplete:["(position|pos)-<position>","(position|pos)-<globalKeyword>","<position>"]}],[/^(?:position-|pos-)([-\w]+)$/,([,e])=>S.includes(e)?{position:e}:void 0],[/^(?:position-|pos-)?(static)$/,([,e])=>({position:e})]],qe=[["justify-start",{"justify-content":"flex-start"}],["justify-end",{"justify-content":"flex-end"}],["justify-center",{"justify-content":"center"}],["justify-between",{"justify-content":"space-between"}],["justify-around",{"justify-content":"space-around"}],["justify-evenly",{"justify-content":"space-evenly"}],["justify-stretch",{"justify-content":"stretch"}],["justify-left",{"justify-content":"left"}],["justify-right",{"justify-content":"right"}],...v("justify","justify-content"),["justify-items-start",{"justify-items":"start"}],["justify-items-end",{"justify-items":"end"}],["justify-items-center",{"justify-items":"center"}],["justify-items-stretch",{"justify-items":"stretch"}],...v("justify-items"),["justify-self-auto",{"justify-self":"auto"}],["justify-self-start",{"justify-self":"start"}],["justify-self-end",{"justify-self":"end"}],["justify-self-center",{"justify-self":"center"}],["justify-self-stretch",{"justify-self":"stretch"}],...v("justify-self")],Dt=[[/^order-(.+)$/,([,e])=>({order:c.bracket.cssvar.number(e)})],["order-first",{order:"-9999"}],["order-last",{order:"9999"}],["order-none",{order:"0"}]],Ye=[["content-center",{"align-content":"center"}],["content-start",{"align-content":"flex-start"}],["content-end",{"align-content":"flex-end"}],["content-between",{"align-content":"space-between"}],["content-around",{"align-content":"space-around"}],["content-evenly",{"align-content":"space-evenly"}],...v("content","align-content"),["items-start",{"align-items":"flex-start"}],["items-end",{"align-items":"flex-end"}],["items-center",{"align-items":"center"}],["items-baseline",{"align-items":"baseline"}],["items-stretch",{"align-items":"stretch"}],...v("items","align-items"),["self-auto",{"align-self":"auto"}],["self-start",{"align-self":"flex-start"}],["self-end",{"align-self":"flex-end"}],["self-center",{"align-self":"center"}],["self-stretch",{"align-self":"stretch"}],["self-baseline",{"align-self":"baseline"}],...v("self","align-self")],Xe=[["place-content-center",{"place-content":"center"}],["place-content-start",{"place-content":"start"}],["place-content-end",{"place-content":"end"}],["place-content-between",{"place-content":"space-between"}],["place-content-around",{"place-content":"space-around"}],["place-content-evenly",{"place-content":"space-evenly"}],["place-content-stretch",{"place-content":"stretch"}],...v("place-content"),["place-items-start",{"place-items":"start"}],["place-items-end",{"place-items":"end"}],["place-items-center",{"place-items":"center"}],["place-items-stretch",{"place-items":"stretch"}],...v("place-items"),["place-self-auto",{"place-self":"auto"}],["place-self-start",{"place-self":"start"}],["place-self-end",{"place-self":"end"}],["place-self-center",{"place-self":"center"}],["place-self-stretch",{"place-self":"stretch"}],...v("place-self")],It=[...qe,...Ye,...Xe].flatMap(([e,t])=>[[`flex-${e}`,t],[`grid-${e}`,t]]);function un(e,{theme:t}){return t.spacing?.[e]??c.bracket.cssvar.global.auto.fraction.rem(e)}function He([,e,t],r){let n=un(t,r);if(n!=null&&e in Qr)return Qr[e].map(o=>[o.slice(1),n])}var Kt=[[/^(?:position-|pos-)?inset-(.+)$/,([,e],t)=>({inset:un(e,t)}),{autocomplete:["(position|pos)-inset-<directions>-$spacing","(position|pos)-inset-(block|inline)-$spacing","(position|pos)-inset-(bs|be|is|ie)-$spacing","(position|pos)-(top|left|right|bottom)-$spacing"]}],[/^(?:position-|pos-)?(start|end)-(.+)$/,He],[/^(?:position-|pos-)?inset-([xy])-(.+)$/,He],[/^(?:position-|pos-)?inset-([rltbse])-(.+)$/,He],[/^(?:position-|pos-)?inset-(block|inline)-(.+)$/,He],[/^(?:position-|pos-)?inset-([bi][se])-(.+)$/,He],[/^(?:position-|pos-)?(top|left|right|bottom)-(.+)$/,([,e,t],r)=>({[e]:un(t,r)})]],Gt=[["float-left",{float:"left"}],["float-right",{float:"right"}],["float-start",{float:"inline-start"}],["float-end",{float:"inline-end"}],["float-none",{float:"none"}],...v("float"),["clear-left",{clear:"left"}],["clear-right",{clear:"right"}],["clear-both",{clear:"both"}],["clear-start",{clear:"inline-start"}],["clear-end",{clear:"inline-end"}],["clear-none",{clear:"none"}],...v("clear")],Ht=[[/^(?:position-|pos-)?z([\d.]+)$/,([,e])=>({"z-index":c.number(e)})],[/^(?:position-|pos-)?z-(.+)$/,([,e],{theme:t})=>({"z-index":t.zIndex?.[e]??c.bracket.cssvar.global.auto.number(e)}),{autocomplete:"z-<num>"}]],qt=[["box-border",{"box-sizing":"border-box"}],["box-content",{"box-sizing":"content-box"}],...v("box","box-sizing")];var Yt=[[/^(where|\?)$/,(e,{constructCSS:t,generator:r})=>{if(r.userConfig.envMode==="dev")return`@keyframes __un_qm{0%{box-shadow:inset 4px 4px #ff1e90, inset -4px -4px #ff1e90}100%{box-shadow:inset 8px 8px #3399ff, inset -8px -8px #3399ff}} ${t({animation:"__un_qm 0.5s ease-in-out alternate infinite"})}`}]];var Tc=["auto","default","none","context-menu","help","pointer","progress","wait","cell","crosshair","text","vertical-text","alias","copy","move","no-drop","not-allowed","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out"],jc=["none","strict","content","size","inline-size","layout","style","paint"],T=" ",Xt=[["inline",{display:"inline"}],["block",{display:"block"}],["inline-block",{display:"inline-block"}],["contents",{display:"contents"}],["flow-root",{display:"flow-root"}],["list-item",{display:"list-item"}],["hidden",{display:"none"}],[/^display-(.+)$/,([,e])=>({display:c.bracket.cssvar.global(e)})]],Zt=[["visible",{visibility:"visible"}],["invisible",{visibility:"hidden"}],["backface-visible",{"backface-visibility":"visible"}],["backface-hidden",{"backface-visibility":"hidden"}],...v("backface","backface-visibility")],Jt=[[/^cursor-(.+)$/,([,e])=>({cursor:c.bracket.cssvar.global(e)})],...Tc.map(e=>[`cursor-${e}`,{cursor:e}])],Qt=[[/^contain-(.*)$/,([,e])=>c.bracket(e)!=null?{contain:c.bracket(e).split(" ").map(t=>c.cssvar.fraction(t)??t).join(" ")}:jc.includes(e)?{contain:e}:void 0]],er=[["pointer-events-auto",{"pointer-events":"auto"}],["pointer-events-none",{"pointer-events":"none"}],...v("pointer-events")],tr=[["resize-x",{resize:"horizontal"}],["resize-y",{resize:"vertical"}],["resize",{resize:"both"}],["resize-none",{resize:"none"}],...v("resize")],rr=[["select-auto",{"-webkit-user-select":"auto","user-select":"auto"}],["select-all",{"-webkit-user-select":"all","user-select":"all"}],["select-text",{"-webkit-user-select":"text","user-select":"text"}],["select-none",{"-webkit-user-select":"none","user-select":"none"}],...v("select","user-select")],nr=[[/^(?:whitespace-|ws-)([-\w]+)$/,([,e])=>["normal","nowrap","pre","pre-line","pre-wrap","break-spaces",...S].includes(e)?{"white-space":e}:void 0,{autocomplete:"(whitespace|ws)-(normal|nowrap|pre|pre-line|pre-wrap|break-spaces)"}]],or=[[/^intrinsic-size-(.+)$/,([,e])=>({"contain-intrinsic-size":c.bracket.cssvar.global.fraction.rem(e)}),{autocomplete:"intrinsic-size-<num>"}],["content-visibility-visible",{"content-visibility":"visible"}],["content-visibility-hidden",{"content-visibility":"hidden"}],["content-visibility-auto",{"content-visibility":"auto"}],...v("content-visibility")],ir=[[/^content-(.+)$/,([,e])=>({content:c.bracket.cssvar(e)})],["content-empty",{content:'""'}],["content-none",{content:"none"}]],sr=[["break-normal",{"overflow-wrap":"normal","word-break":"normal"}],["break-words",{"overflow-wrap":"break-word"}],["break-all",{"word-break":"break-all"}],["break-keep",{"word-break":"keep-all"}],["break-anywhere",{"overflow-wrap":"anywhere"}]],ar=[["text-wrap",{"text-wrap":"wrap"}],["text-nowrap",{"text-wrap":"nowrap"}],["text-balance",{"text-wrap":"balance"}],["text-pretty",{"text-wrap":"pretty"}]],lr=[["truncate",{overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}],["text-truncate",{overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}],["text-ellipsis",{"text-overflow":"ellipsis"}],["text-clip",{"text-overflow":"clip"}]],cr=[["case-upper",{"text-transform":"uppercase"}],["case-lower",{"text-transform":"lowercase"}],["case-capital",{"text-transform":"capitalize"}],["case-normal",{"text-transform":"none"}],...v("case","text-transform")],ur=[["italic",{"font-style":"italic"}],["not-italic",{"font-style":"normal"}],["font-italic",{"font-style":"italic"}],["font-not-italic",{"font-style":"normal"}],["oblique",{"font-style":"oblique"}],["not-oblique",{"font-style":"normal"}],["font-oblique",{"font-style":"oblique"}],["font-not-oblique",{"font-style":"normal"}]],fr=[["antialiased",{"-webkit-font-smoothing":"antialiased","-moz-osx-font-smoothing":"grayscale"}],["subpixel-antialiased",{"-webkit-font-smoothing":"auto","-moz-osx-font-smoothing":"auto"}]];var Ze={"--un-ring-inset":T,"--un-ring-offset-width":"0px","--un-ring-offset-color":"#fff","--un-ring-width":"0px","--un-ring-color":"rgb(147 197 253 / 0.5)","--un-shadow":"0 0 rgb(0 0 0 / 0)"},zc=Object.keys(Ze),pr=[[/^ring(?:-(.+))?$/,([,e],{theme:t})=>{let r=t.ringWidth?.[e||"DEFAULT"]??c.px(e||"1");if(r)return{"--un-ring-width":r,"--un-ring-offset-shadow":"var(--un-ring-inset) 0 0 0 var(--un-ring-offset-width) var(--un-ring-offset-color)","--un-ring-shadow":"var(--un-ring-inset) 0 0 0 calc(var(--un-ring-width) + var(--un-ring-offset-width)) var(--un-ring-color)","box-shadow":"var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow)"}},{custom:{preflightKeys:zc},autocomplete:"ring-$ringWidth"}],[/^ring-(?:width-|size-)(.+)$/,Go,{autocomplete:"ring-(width|size)-$lineWidth"}],["ring-offset",{"--un-ring-offset-width":"1px"}],[/^ring-offset-(?:width-|size-)?(.+)$/,([,e],{theme:t})=>({"--un-ring-offset-width":t.lineWidth?.[e]??c.bracket.cssvar.px(e)}),{autocomplete:"ring-offset-(width|size)-$lineWidth"}],[/^ring-(.+)$/,Ac,{autocomplete:"ring-$colors"}],[/^ring-op(?:acity)?-?(.+)$/,([,e])=>({"--un-ring-opacity":c.bracket.percent.cssvar(e)}),{autocomplete:"ring-(op|opacity)-<percent>"}],[/^ring-offset-(.+)$/,V("--un-ring-offset-color","ring-offset","borderColor"),{autocomplete:"ring-offset-$colors"}],[/^ring-offset-op(?:acity)?-?(.+)$/,([,e])=>({"--un-ring-offset-opacity":c.bracket.percent.cssvar(e)}),{autocomplete:"ring-offset-(op|opacity)-<percent>"}],["ring-inset",{"--un-ring-inset":"inset"}]];function Go([,e],{theme:t}){return{"--un-ring-width":t.ringWidth?.[e]??c.bracket.cssvar.px(e)}}function Ac(e,t){return J(c.bracket(e[1]))?Go(e,t):V("--un-ring-color","ring","borderColor")(e,t)}var Je={"--un-ring-offset-shadow":"0 0 rgb(0 0 0 / 0)","--un-ring-shadow":"0 0 rgb(0 0 0 / 0)","--un-shadow-inset":T,"--un-shadow":"0 0 rgb(0 0 0 / 0)"},Oc=Object.keys(Je),dr=[[/^shadow(?:-(.+))?$/,(e,t)=>{let[,r]=e,{theme:n}=t,o=n.boxShadow?.[r||"DEFAULT"],i=r?c.bracket.cssvar(r):void 0;return(o!=null||i!=null)&&!ze(i,n,"shadowColor")?{"--un-shadow":je(o||i,"--un-shadow-color").join(","),"box-shadow":"var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow)"}:V("--un-shadow-color","shadow","shadowColor")(e,t)},{custom:{preflightKeys:Oc},autocomplete:["shadow-$colors","shadow-$boxShadow"]}],[/^shadow-op(?:acity)?-?(.+)$/,([,e])=>({"--un-shadow-opacity":c.bracket.percent.cssvar(e)}),{autocomplete:"shadow-(op|opacity)-<percent>"}],["shadow-inset",{"--un-shadow-inset":"inset"}]];var Vc={h:"height",w:"width",inline:"inline-size",block:"block-size"};function we(e,t){return`${e||""}${Vc[t]}`}function mr(e,t,r,n){let o=we(e,t).replace(/-(\w)/g,(s,l)=>l.toUpperCase()),i=r[o]?.[n];if(i!=null)return i;switch(n){case"fit":case"max":case"min":return`${n}-content`}return c.bracket.cssvar.global.auto.fraction.rem(n)}var hr=[[/^size-(min-|max-)?(.+)$/,([,e,t],{theme:r})=>({[we(e,"w")]:mr(e,"w",r,t),[we(e,"h")]:mr(e,"h",r,t)})],[/^(?:size-)?(min-|max-)?([wh])-?(.+)$/,([,e,t,r],{theme:n})=>({[we(e,t)]:mr(e,t,n,r)})],[/^(?:size-)?(min-|max-)?(block|inline)-(.+)$/,([,e,t,r],{theme:n})=>({[we(e,t)]:mr(e,t,n,r)}),{autocomplete:["(w|h)-$width|height|maxWidth|maxHeight|minWidth|minHeight|inlineSize|blockSize|maxInlineSize|maxBlockSize|minInlineSize|minBlockSize","(block|inline)-$width|height|maxWidth|maxHeight|minWidth|minHeight|inlineSize|blockSize|maxInlineSize|maxBlockSize|minInlineSize|minBlockSize","(max|min)-(w|h|block|inline)","(max|min)-(w|h|block|inline)-$width|height|maxWidth|maxHeight|minWidth|minHeight|inlineSize|blockSize|maxInlineSize|maxBlockSize|minInlineSize|minBlockSize","(w|h)-full","(max|min)-(w|h)-full"]}],[/^(?:size-)?(min-|max-)?(h)-screen-(.+)$/,([,e,t,r],n)=>({[we(e,t)]:Ho(n,r,"verticalBreakpoints")})],[/^(?:size-)?(min-|max-)?(w)-screen-(.+)$/,([,e,t,r],n)=>({[we(e,t)]:Ho(n,r)}),{autocomplete:["(w|h)-screen","(min|max)-(w|h)-screen","h-screen-$verticalBreakpoints","(min|max)-h-screen-$verticalBreakpoints","w-screen-$breakpoints","(min|max)-w-screen-$breakpoints"]}]];function Ho(e,t,r="breakpoints"){let n=ye(e,r);if(n)return n.find(o=>o.point===t)?.size}function Pc(e){if(/^\d+\/\d+$/.test(e))return e;switch(e){case"square":return"1/1";case"video":return"16/9"}return c.bracket.cssvar.global.auto.number(e)}var gr=[[/^(?:size-)?aspect-(?:ratio-)?(.+)$/,([,e])=>({"aspect-ratio":Pc(e)}),{autocomplete:["aspect-(square|video|ratio)","aspect-ratio-(square|video)"]}]];var br=[[/^pa?()-?(.+)$/,_("padding"),{autocomplete:["(m|p)<num>","(m|p)-<num>"]}],[/^p-?xy()()$/,_("padding"),{autocomplete:"(m|p)-(xy)"}],[/^p-?([xy])(?:-?(.+))?$/,_("padding")],[/^p-?([rltbse])(?:-?(.+))?$/,_("padding"),{autocomplete:"(m|p)<directions>-<num>"}],[/^p-(block|inline)(?:-(.+))?$/,_("padding"),{autocomplete:"(m|p)-(block|inline)-<num>"}],[/^p-?([bi][se])(?:-?(.+))?$/,_("padding"),{autocomplete:"(m|p)-(bs|be|is|ie)-<num>"}]],xr=[[/^ma?()-?(.+)$/,_("margin")],[/^m-?xy()()$/,_("margin")],[/^m-?([xy])(?:-?(.+))?$/,_("margin")],[/^m-?([rltbse])(?:-?(.+))?$/,_("margin")],[/^m-(block|inline)(?:-(.+))?$/,_("margin")],[/^m-?([bi][se])(?:-?(.+))?$/,_("margin")]];var yr=[[/^fill-(.+)$/,V("fill","fill","backgroundColor"),{autocomplete:"fill-$colors"}],[/^fill-op(?:acity)?-?(.+)$/,([,e])=>({"--un-fill-opacity":c.bracket.percent.cssvar(e)}),{autocomplete:"fill-(op|opacity)-<percent>"}],["fill-none",{fill:"none"}],[/^stroke-(?:width-|size-)?(.+)$/,qo,{autocomplete:["stroke-width-$lineWidth","stroke-size-$lineWidth"]}],[/^stroke-dash-(.+)$/,([,e])=>({"stroke-dasharray":c.bracket.cssvar.number(e)}),{autocomplete:"stroke-dash-<num>"}],[/^stroke-offset-(.+)$/,([,e],{theme:t})=>({"stroke-dashoffset":t.lineWidth?.[e]??c.bracket.cssvar.px.numberWithUnit(e)}),{autocomplete:"stroke-offset-$lineWidth"}],[/^stroke-(.+)$/,Mc,{autocomplete:"stroke-$colors"}],[/^stroke-op(?:acity)?-?(.+)$/,([,e])=>({"--un-stroke-opacity":c.bracket.percent.cssvar(e)}),{autocomplete:"stroke-(op|opacity)-<percent>"}],["stroke-cap-square",{"stroke-linecap":"square"}],["stroke-cap-round",{"stroke-linecap":"round"}],["stroke-cap-auto",{"stroke-linecap":"butt"}],["stroke-join-arcs",{"stroke-linejoin":"arcs"}],["stroke-join-bevel",{"stroke-linejoin":"bevel"}],["stroke-join-clip",{"stroke-linejoin":"miter-clip"}],["stroke-join-round",{"stroke-linejoin":"round"}],["stroke-join-auto",{"stroke-linejoin":"miter"}],["stroke-none",{stroke:"none"}]];function qo([,e],{theme:t}){return{"stroke-width":t.lineWidth?.[e]??c.bracket.cssvar.fraction.px.number(e)}}function Mc(e,t){return J(c.bracket(e[1]))?qo(e,t):V("stroke","stroke","borderColor")(e,t)}var vr=["translate","rotate","scale"],Fc=["translateX(var(--un-translate-x))","translateY(var(--un-translate-y))","rotate(var(--un-rotate))","rotateZ(var(--un-rotate-z))","skewX(var(--un-skew-x))","skewY(var(--un-skew-y))","scaleX(var(--un-scale-x))","scaleY(var(--un-scale-y))"].join(" "),Ae=["translateX(var(--un-translate-x))","translateY(var(--un-translate-y))","translateZ(var(--un-translate-z))","rotate(var(--un-rotate))","rotateX(var(--un-rotate-x))","rotateY(var(--un-rotate-y))","rotateZ(var(--un-rotate-z))","skewX(var(--un-skew-x))","skewY(var(--un-skew-y))","scaleX(var(--un-scale-x))","scaleY(var(--un-scale-y))","scaleZ(var(--un-scale-z))"].join(" "),_c=["translate3d(var(--un-translate-x), var(--un-translate-y), var(--un-translate-z))","rotate(var(--un-rotate))","rotateX(var(--un-rotate-x))","rotateY(var(--un-rotate-y))","rotateZ(var(--un-rotate-z))","skewX(var(--un-skew-x))","skewY(var(--un-skew-y))","scaleX(var(--un-scale-x))","scaleY(var(--un-scale-y))","scaleZ(var(--un-scale-z))"].join(" "),Qe={"--un-rotate":0,"--un-rotate-x":0,"--un-rotate-y":0,"--un-rotate-z":0,"--un-scale-x":1,"--un-scale-y":1,"--un-scale-z":1,"--un-skew-x":0,"--un-skew-y":0,"--un-translate-x":0,"--un-translate-y":0,"--un-translate-z":0},oe=Object.keys(Qe),wr=[[/^(?:transform-)?origin-(.+)$/,([,e])=>({"transform-origin":B[e]??c.bracket.cssvar(e)}),{autocomplete:[`transform-origin-(${Object.keys(B).join("|")})`,`origin-(${Object.keys(B).join("|")})`]}],[/^(?:transform-)?perspect(?:ive)?-(.+)$/,([,e])=>{let t=c.bracket.cssvar.px.numberWithUnit(e);if(t!=null)return{"-webkit-perspective":t,perspective:t}}],[/^(?:transform-)?perspect(?:ive)?-origin-(.+)$/,([,e])=>{let t=c.bracket.cssvar(e)??(e.length>=3?B[e]:void 0);if(t!=null)return{"-webkit-perspective-origin":t,"perspective-origin":t}}],[/^(?:transform-)?translate-()(.+)$/,Yo,{custom:{preflightKeys:oe}}],[/^(?:transform-)?translate-([xyz])-(.+)$/,Yo,{custom:{preflightKeys:oe}}],[/^(?:transform-)?rotate-()(.+)$/,Zo,{custom:{preflightKeys:oe}}],[/^(?:transform-)?rotate-([xyz])-(.+)$/,Zo,{custom:{preflightKeys:oe}}],[/^(?:transform-)?skew-()(.+)$/,Jo,{custom:{preflightKeys:oe}}],[/^(?:transform-)?skew-([xy])-(.+)$/,Jo,{custom:{preflightKeys:oe},autocomplete:["transform-skew-(x|y)-<percent>","skew-(x|y)-<percent>"]}],[/^(?:transform-)?scale-()(.+)$/,Xo,{custom:{preflightKeys:oe}}],[/^(?:transform-)?scale-([xyz])-(.+)$/,Xo,{custom:{preflightKeys:oe},autocomplete:[`transform-(${vr.join("|")})-<percent>`,`transform-(${vr.join("|")})-(x|y|z)-<percent>`,`(${vr.join("|")})-<percent>`,`(${vr.join("|")})-(x|y|z)-<percent>`]}],[/^(?:transform-)?preserve-3d$/,()=>({"transform-style":"preserve-3d"})],[/^(?:transform-)?preserve-flat$/,()=>({"transform-style":"flat"})],["transform",{transform:Ae},{custom:{preflightKeys:oe}}],["transform-cpu",{transform:Fc},{custom:{preflightKeys:["--un-translate-x","--un-translate-y","--un-rotate","--un-rotate-z","--un-skew-x","--un-skew-y","--un-scale-x","--un-scale-y"]}}],["transform-gpu",{transform:_c},{custom:{preflightKeys:oe}}],["transform-none",{transform:"none"}],...v("transform")];function Yo([,e,t],{theme:r}){let n=r.spacing?.[t]??c.bracket.cssvar.fraction.rem(t);if(n!=null)return[...Et(e,n,"translate"),["transform",Ae]]}function Xo([,e,t]){let r=c.bracket.cssvar.fraction.percent(t);if(r!=null)return[...Et(e,r,"scale"),["transform",Ae]]}function Zo([,e="",t]){let r=c.bracket.cssvar.degree(t);if(r!=null)return e?{"--un-rotate":0,[`--un-rotate-${e}`]:r,transform:Ae}:{"--un-rotate-x":0,"--un-rotate-y":0,"--un-rotate-z":0,"--un-rotate":r,transform:Ae}}function Jo([,e,t]){let r=c.bracket.cssvar.degree(t);if(r!=null)return[...Et(e,r,"skew"),["transform",Ae]]}function Qo(e,t){let r;if(c.cssvar(e)!=null)r=c.cssvar(e);else{e.startsWith("[")&&e.endsWith("]")&&(e=e.slice(1,-1));let n=e.split(",").map(o=>t.transitionProperty?.[o]??c.properties(o));n.every(Boolean)&&(r=n.join(","))}return r}var kr=[[/^transition(?:-(\D+?))?(?:-(\d+))?$/,([,e,t],{theme:r})=>{if(!e&&!t)return{"transition-property":r.transitionProperty?.DEFAULT,"transition-timing-function":r.easing?.DEFAULT,"transition-duration":r.duration?.DEFAULT??c.time("150")};if(e!=null){let n=Qo(e,r),o=r.duration?.[t||"DEFAULT"]??c.time(t||"150");if(n)return{"transition-property":n,"transition-timing-function":r.easing?.DEFAULT,"transition-duration":o}}else if(t!=null)return{"transition-property":r.transitionProperty?.DEFAULT,"transition-timing-function":r.easing?.DEFAULT,"transition-duration":r.duration?.[t]??c.time(t)}},{autocomplete:"transition-$transitionProperty-$duration"}],[/^(?:transition-)?duration-(.+)$/,([,e],{theme:t})=>({"transition-duration":t.duration?.[e||"DEFAULT"]??c.bracket.cssvar.time(e)}),{autocomplete:["transition-duration-$duration","duration-$duration"]}],[/^(?:transition-)?delay-(.+)$/,([,e],{theme:t})=>({"transition-delay":t.duration?.[e||"DEFAULT"]??c.bracket.cssvar.time(e)}),{autocomplete:["transition-delay-$duration","delay-$duration"]}],[/^(?:transition-)?ease(?:-(.+))?$/,([,e],{theme:t})=>({"transition-timing-function":t.easing?.[e||"DEFAULT"]??c.bracket.cssvar(e)}),{autocomplete:["transition-ease-(linear|in|out|in-out|DEFAULT)","ease-(linear|in|out|in-out|DEFAULT)"]}],[/^(?:transition-)?property-(.+)$/,([,e],{theme:t})=>{let r=c.global(e)||Qo(e,t);if(r)return{"transition-property":r}},{autocomplete:[`transition-property-(${[...S].join("|")})`,"transition-property-$transitionProperty","property-$transitionProperty"]}],["transition-none",{transition:"none"}],...v("transition"),["transition-discrete",{"transition-behavior":"allow-discrete"}],["transition-normal",{"transition-behavior":"normal"}]];var $r=[[/^text-(.+)$/,Uc,{autocomplete:"text-$fontSize"}],[/^(?:text|font)-size-(.+)$/,ei,{autocomplete:"text-size-$fontSize"}],[/^text-(?:color-)?(.+)$/,Lc,{autocomplete:"text-$colors"}],[/^(?:color|c)-(.+)$/,V("color","text","textColor"),{autocomplete:"(color|c)-$colors"}],[/^(?:text|color|c)-(.+)$/,([,e])=>S.includes(e)?{color:e}:void 0,{autocomplete:`(text|color|c)-(${S.join("|")})`}],[/^(?:text|color|c)-op(?:acity)?-?(.+)$/,([,e])=>({"--un-text-opacity":c.bracket.percent.cssvar(e)}),{autocomplete:"(text|color|c)-(op|opacity)-<percent>"}],[/^(?:font|fw)-?([^-]+)$/,([,e],{theme:t})=>({"font-weight":t.fontWeight?.[e]||c.bracket.global.number(e)}),{autocomplete:["(font|fw)-(100|200|300|400|500|600|700|800|900)","(font|fw)-$fontWeight"]}],[/^(?:font-)?(?:leading|lh|line-height)-(.+)$/,([,e],{theme:t})=>({"line-height":fn(e,t,"lineHeight")}),{autocomplete:"(leading|lh|line-height)-$lineHeight"}],["font-synthesis-weight",{"font-synthesis":"weight"}],["font-synthesis-style",{"font-synthesis":"style"}],["font-synthesis-small-caps",{"font-synthesis":"small-caps"}],["font-synthesis-none",{"font-synthesis":"none"}],[/^font-synthesis-(.+)$/,([,e])=>({"font-synthesis":c.bracket.cssvar.global(e)})],[/^(?:font-)?tracking-(.+)$/,([,e],{theme:t})=>({"letter-spacing":t.letterSpacing?.[e]||c.bracket.cssvar.global.rem(e)}),{autocomplete:"tracking-$letterSpacing"}],[/^(?:font-)?word-spacing-(.+)$/,([,e],{theme:t})=>({"word-spacing":t.wordSpacing?.[e]||c.bracket.cssvar.global.rem(e)}),{autocomplete:"word-spacing-$wordSpacing"}],["font-stretch-normal",{"font-stretch":"normal"}],["font-stretch-ultra-condensed",{"font-stretch":"ultra-condensed"}],["font-stretch-extra-condensed",{"font-stretch":"extra-condensed"}],["font-stretch-condensed",{"font-stretch":"condensed"}],["font-stretch-semi-condensed",{"font-stretch":"semi-condensed"}],["font-stretch-semi-expanded",{"font-stretch":"semi-expanded"}],["font-stretch-expanded",{"font-stretch":"expanded"}],["font-stretch-extra-expanded",{"font-stretch":"extra-expanded"}],["font-stretch-ultra-expanded",{"font-stretch":"ultra-expanded"}],[/^font-stretch-(.+)$/,([,e])=>({"font-stretch":c.bracket.cssvar.fraction.global(e)}),{autocomplete:"font-stretch-<percentage>"}],[/^font-(.+)$/,([,e],{theme:t})=>({"font-family":t.fontFamily?.[e]||c.bracket.cssvar.global(e)}),{autocomplete:"font-$fontFamily"}]],Sr=[[/^tab(?:-(.+))?$/,([,e])=>{let t=c.bracket.cssvar.global.number(e||"4");if(t!=null)return{"-moz-tab-size":t,"-o-tab-size":t,"tab-size":t}}]],Cr=[[/^indent(?:-(.+))?$/,([,e],{theme:t})=>({"text-indent":t.textIndent?.[e||"DEFAULT"]||c.bracket.cssvar.global.fraction.rem(e)}),{autocomplete:"indent-$textIndent"}]],Rr=[[/^text-stroke(?:-(.+))?$/,([,e],{theme:t})=>({"-webkit-text-stroke-width":t.textStrokeWidth?.[e||"DEFAULT"]||c.bracket.cssvar.px(e)}),{autocomplete:"text-stroke-$textStrokeWidth"}],[/^text-stroke-(.+)$/,V("-webkit-text-stroke-color","text-stroke","borderColor"),{autocomplete:"text-stroke-$colors"}],[/^text-stroke-op(?:acity)?-?(.+)$/,([,e])=>({"--un-text-stroke-opacity":c.bracket.percent.cssvar(e)}),{autocomplete:"text-stroke-(op|opacity)-<percent>"}]],Er=[[/^text-shadow(?:-(.+))?$/,([,e],{theme:t})=>{let r=t.textShadow?.[e||"DEFAULT"];return r!=null?{"--un-text-shadow":je(r,"--un-text-shadow-color").join(","),"text-shadow":"var(--un-text-shadow)"}:{"text-shadow":c.bracket.cssvar.global(e)}},{autocomplete:"text-shadow-$textShadow"}],[/^text-shadow-color-(.+)$/,V("--un-text-shadow-color","text-shadow","shadowColor"),{autocomplete:"text-shadow-color-$colors"}],[/^text-shadow-color-op(?:acity)?-?(.+)$/,([,e])=>({"--un-text-shadow-opacity":c.bracket.percent.cssvar(e)}),{autocomplete:"text-shadow-color-(op|opacity)-<percent>"}]];function fn(e,t,r){return t[r]?.[e]||c.bracket.cssvar.global.rem(e)}function ei([,e],{theme:t}){let n=O(t.fontSize?.[e])?.[0]??c.bracket.cssvar.global.rem(e);if(n!=null)return{"font-size":n}}function Lc(e,t){return J(c.bracket(e[1]))?ei(e,t):V("color","text","textColor")(e,t)}function Uc([,e="base"],{theme:t}){let r=an(e,"length");if(!r)return;let[n,o]=r,i=O(t.fontSize?.[n]),s=o?fn(o,t,"lineHeight"):void 0;if(i?.[0]){let[a,u,f]=i;return typeof u=="object"?{"font-size":a,...u}:{"font-size":a,"line-height":s??u??"1","letter-spacing":f?fn(f,t,"letterSpacing"):void 0}}let l=c.bracketOfLength.rem(n);return s&&l?{"font-size":l,"line-height":s}:{"font-size":c.bracketOfLength.rem(e)}}var Wc={backface:"backface-visibility",break:"word-break",case:"text-transform",content:"align-content",fw:"font-weight",items:"align-items",justify:"justify-content",select:"user-select",self:"align-self",vertical:"vertical-align",visible:"visibility",whitespace:"white-space",ws:"white-space"},Tr=[[/^(.+?)-(\$.+)$/,([,e,t])=>{let r=Wc[e];if(r)return{[r]:c.cssvar(t)}}]],jr=[[/^\[(.*)\]$/,([e,t])=>{if(!t.includes(":"))return;let[r,...n]=t.split(":"),o=n.join(":");if(!Nc(t)&&/^[a-z-]+$/.test(r)&&Bc(o)){let i=c.bracket(`[${o}]`);if(i)return{[r]:i}}}]];function Bc(e){let t=0;function r(n){for(;t<e.length;)if(t+=1,e[t]===n)return!0;return!1}for(t=0;t<e.length;t++){let n=e[t];if("\"`'".includes(n)){if(!r(n))return!1}else if(n==="("){if(!r(")"))return!1}else if("[]{}:".includes(n))return!1}return!0}function Nc(e){if(!e.includes("://"))return!1;try{return new URL(e).host!==""}catch{return!1}}var ti=[Tr,jr,Qt,er,Zt,Nt,Kt,Ht,Dt,Ut,Gt,xr,qt,Xt,gr,hr,_t,wr,Jt,rr,tr,jt,Xe,Ye,qe,Lt,It,Bt,lr,nr,sr,At,Vt,Pt,yr,br,Rt,Cr,ar,Ct,$r,cr,ur,Ft,fr,Sr,Rr,Er,Ot,dr,Tt,pr,kr,zt,or,ir,Mt,Yt].flat(1);var ri={position:["relative","absolute","fixed","sticky","static"],globalKeyword:S};var pn={inherit:"inherit",current:"currentColor",transparent:"transparent",black:"#000",white:"#fff",rose:{50:"#fff1f2",100:"#ffe4e6",200:"#fecdd3",300:"#fda4af",400:"#fb7185",500:"#f43f5e",600:"#e11d48",700:"#be123c",800:"#9f1239",900:"#881337",950:"#4c0519"},pink:{50:"#fdf2f8",100:"#fce7f3",200:"#fbcfe8",300:"#f9a8d4",400:"#f472b6",500:"#ec4899",600:"#db2777",700:"#be185d",800:"#9d174d",900:"#831843",950:"#500724"},fuchsia:{50:"#fdf4ff",100:"#fae8ff",200:"#f5d0fe",300:"#f0abfc",400:"#e879f9",500:"#d946ef",600:"#c026d3",700:"#a21caf",800:"#86198f",900:"#701a75",950:"#4a044e"},purple:{50:"#faf5ff",100:"#f3e8ff",200:"#e9d5ff",300:"#d8b4fe",400:"#c084fc",500:"#a855f7",600:"#9333ea",700:"#7e22ce",800:"#6b21a8",900:"#581c87",950:"#3b0764"},violet:{50:"#f5f3ff",100:"#ede9fe",200:"#ddd6fe",300:"#c4b5fd",400:"#a78bfa",500:"#8b5cf6",600:"#7c3aed",700:"#6d28d9",800:"#5b21b6",900:"#4c1d95",950:"#2e1065"},indigo:{50:"#eef2ff",100:"#e0e7ff",200:"#c7d2fe",300:"#a5b4fc",400:"#818cf8",500:"#6366f1",600:"#4f46e5",700:"#4338ca",800:"#3730a3",900:"#312e81",950:"#1e1b4b"},blue:{50:"#eff6ff",100:"#dbeafe",200:"#bfdbfe",300:"#93c5fd",400:"#60a5fa",500:"#3b82f6",600:"#2563eb",700:"#1d4ed8",800:"#1e40af",900:"#1e3a8a",950:"#172554"},sky:{50:"#f0f9ff",100:"#e0f2fe",200:"#bae6fd",300:"#7dd3fc",400:"#38bdf8",500:"#0ea5e9",600:"#0284c7",700:"#0369a1",800:"#075985",900:"#0c4a6e",950:"#082f49"},cyan:{50:"#ecfeff",100:"#cffafe",200:"#a5f3fc",300:"#67e8f9",400:"#22d3ee",500:"#06b6d4",600:"#0891b2",700:"#0e7490",800:"#155e75",900:"#164e63",950:"#083344"},teal:{50:"#f0fdfa",100:"#ccfbf1",200:"#99f6e4",300:"#5eead4",400:"#2dd4bf",500:"#14b8a6",600:"#0d9488",700:"#0f766e",800:"#115e59",900:"#134e4a",950:"#042f2e"},emerald:{50:"#ecfdf5",100:"#d1fae5",200:"#a7f3d0",300:"#6ee7b7",400:"#34d399",500:"#10b981",600:"#059669",700:"#047857",800:"#065f46",900:"#064e3b",950:"#022c22"},green:{50:"#f0fdf4",100:"#dcfce7",200:"#bbf7d0",300:"#86efac",400:"#4ade80",500:"#22c55e",600:"#16a34a",700:"#15803d",800:"#166534",900:"#14532d",950:"#052e16"},lime:{50:"#f7fee7",100:"#ecfccb",200:"#d9f99d",300:"#bef264",400:"#a3e635",500:"#84cc16",600:"#65a30d",700:"#4d7c0f",800:"#3f6212",900:"#365314",950:"#1a2e05"},yellow:{50:"#fefce8",100:"#fef9c3",200:"#fef08a",300:"#fde047",400:"#facc15",500:"#eab308",600:"#ca8a04",700:"#a16207",800:"#854d0e",900:"#713f12",950:"#422006"},amber:{50:"#fffbeb",100:"#fef3c7",200:"#fde68a",300:"#fcd34d",400:"#fbbf24",500:"#f59e0b",600:"#d97706",700:"#b45309",800:"#92400e",900:"#78350f",950:"#451a03"},orange:{50:"#fff7ed",100:"#ffedd5",200:"#fed7aa",300:"#fdba74",400:"#fb923c",500:"#f97316",600:"#ea580c",700:"#c2410c",800:"#9a3412",900:"#7c2d12",950:"#431407"},red:{50:"#fef2f2",100:"#fee2e2",200:"#fecaca",300:"#fca5a5",400:"#f87171",500:"#ef4444",600:"#dc2626",700:"#b91c1c",800:"#991b1b",900:"#7f1d1d",950:"#450a0a"},gray:{50:"#f9fafb",100:"#f3f4f6",200:"#e5e7eb",300:"#d1d5db",400:"#9ca3af",500:"#6b7280",600:"#4b5563",700:"#374151",800:"#1f2937",900:"#111827",950:"#030712"},slate:{50:"#f8fafc",100:"#f1f5f9",200:"#e2e8f0",300:"#cbd5e1",400:"#94a3b8",500:"#64748b",600:"#475569",700:"#334155",800:"#1e293b",900:"#0f172a",950:"#020617"},zinc:{50:"#fafafa",100:"#f4f4f5",200:"#e4e4e7",300:"#d4d4d8",400:"#a1a1aa",500:"#71717a",600:"#52525b",700:"#3f3f46",800:"#27272a",900:"#18181b",950:"#09090b"},neutral:{50:"#fafafa",100:"#f5f5f5",200:"#e5e5e5",300:"#d4d4d4",400:"#a3a3a3",500:"#737373",600:"#525252",700:"#404040",800:"#262626",900:"#171717",950:"#0a0a0a"},stone:{50:"#fafaf9",100:"#f5f5f4",200:"#e7e5e4",300:"#d6d3d1",400:"#a8a29e",500:"#78716c",600:"#57534e",700:"#44403c",800:"#292524",900:"#1c1917",950:"#0c0a09"},light:{50:"#fdfdfd",100:"#fcfcfc",200:"#fafafa",300:"#f8f9fa",400:"#f6f6f6",500:"#f2f2f2",600:"#f1f3f5",700:"#e9ecef",800:"#dee2e6",900:"#dde1e3",950:"#d8dcdf"},dark:{50:"#4a4a4a",100:"#3c3c3c",200:"#323232",300:"#2d2d2d",400:"#222222",500:"#1f1f1f",600:"#1c1c1e",700:"#1b1b1b",800:"#181818",900:"#0f0f0f",950:"#080808"},get lightblue(){return this.sky},get lightBlue(){return this.sky},get warmgray(){return this.stone},get warmGray(){return this.stone},get truegray(){return this.neutral},get trueGray(){return this.neutral},get coolgray(){return this.gray},get coolGray(){return this.gray},get bluegray(){return this.slate},get blueGray(){return this.slate}};Object.values(pn).forEach(e=>{typeof e!="string"&&e!==void 0&&(e.DEFAULT=e.DEFAULT||e[400],Object.keys(e).forEach(t=>{let r=+t/100;r===Math.round(r)&&(e[r]=e[t])}))});var ni={DEFAULT:"8px",0:"0",sm:"4px",md:"12px",lg:"16px",xl:"24px","2xl":"40px","3xl":"64px"},oi={DEFAULT:["0 1px 2px rgb(0 0 0 / 0.1)","0 1px 1px rgb(0 0 0 / 0.06)"],sm:"0 1px 1px rgb(0 0 0 / 0.05)",md:["0 4px 3px rgb(0 0 0 / 0.07)","0 2px 2px rgb(0 0 0 / 0.06)"],lg:["0 10px 8px rgb(0 0 0 / 0.04)","0 4px 3px rgb(0 0 0 / 0.1)"],xl:["0 20px 13px rgb(0 0 0 / 0.03)","0 8px 5px rgb(0 0 0 / 0.08)"],"2xl":"0 25px 25px rgb(0 0 0 / 0.15)",none:"0 0 rgb(0 0 0 / 0)"};var ii={sans:["ui-sans-serif","system-ui","-apple-system","BlinkMacSystemFont",'"Segoe UI"',"Roboto",'"Helvetica Neue"',"Arial",'"Noto Sans"',"sans-serif",'"Apple Color Emoji"','"Segoe UI Emoji"','"Segoe UI Symbol"','"Noto Color Emoji"'].join(","),serif:["ui-serif","Georgia","Cambria",'"Times New Roman"',"Times","serif"].join(","),mono:["ui-monospace","SFMono-Regular","Menlo","Monaco","Consolas",'"Liberation Mono"','"Courier New"',"monospace"].join(",")},si={xs:["0.75rem","1rem"],sm:["0.875rem","1.25rem"],base:["1rem","1.5rem"],lg:["1.125rem","1.75rem"],xl:["1.25rem","1.75rem"],"2xl":["1.5rem","2rem"],"3xl":["1.875rem","2.25rem"],"4xl":["2.25rem","2.5rem"],"5xl":["3rem","1"],"6xl":["3.75rem","1"],"7xl":["4.5rem","1"],"8xl":["6rem","1"],"9xl":["8rem","1"]},ai={DEFAULT:"1.5rem",xs:"0.5rem",sm:"1rem",md:"1.5rem",lg:"2rem",xl:"2.5rem","2xl":"3rem","3xl":"4rem"},li={DEFAULT:"1.5rem",none:"0",sm:"thin",md:"medium",lg:"thick"},ci={DEFAULT:["0 0 1px rgb(0 0 0 / 0.2)","0 0 1px rgb(1 0 5 / 0.1)"],none:"0 0 rgb(0 0 0 / 0)",sm:"1px 1px 3px rgb(36 37 47 / 0.25)",md:["0 1px 2px rgb(30 29 39 / 0.19)","1px 2px 4px rgb(54 64 147 / 0.18)"],lg:["3px 3px 6px rgb(0 0 0 / 0.26)","0 0 5px rgb(15 3 86 / 0.22)"],xl:["1px 1px 3px rgb(0 0 0 / 0.29)","2px 4px 7px rgb(73 64 125 / 0.35)"]},ui={none:"1",tight:"1.25",snug:"1.375",normal:"1.5",relaxed:"1.625",loose:"2"},dn={tighter:"-0.05em",tight:"-0.025em",normal:"0em",wide:"0.025em",wider:"0.05em",widest:"0.1em"},fi={thin:"100",extralight:"200",light:"300",normal:"400",medium:"500",semibold:"600",bold:"700",extrabold:"800",black:"900"},pi=dn;var mn={sm:"640px",md:"768px",lg:"1024px",xl:"1280px","2xl":"1536px"},di={...mn},mi={DEFAULT:"1px",none:"0"},hi={DEFAULT:"1rem",none:"0",xs:"0.75rem",sm:"0.875rem",lg:"1.125rem",xl:"1.25rem","2xl":"1.5rem","3xl":"1.875rem","4xl":"2.25rem","5xl":"3rem","6xl":"3.75rem","7xl":"4.5rem","8xl":"6rem","9xl":"8rem"},gi={DEFAULT:"150ms",none:"0s",75:"75ms",100:"100ms",150:"150ms",200:"200ms",300:"300ms",500:"500ms",700:"700ms",1e3:"1000ms"},bi={DEFAULT:"0.25rem",none:"0",sm:"0.125rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem","3xl":"1.5rem",full:"9999px"},xi={DEFAULT:["var(--un-shadow-inset) 0 1px 3px 0 rgb(0 0 0 / 0.1)","var(--un-shadow-inset) 0 1px 2px -1px rgb(0 0 0 / 0.1)"],none:"0 0 rgb(0 0 0 / 0)",sm:"var(--un-shadow-inset) 0 1px 2px 0 rgb(0 0 0 / 0.05)",md:["var(--un-shadow-inset) 0 4px 6px -1px rgb(0 0 0 / 0.1)","var(--un-shadow-inset) 0 2px 4px -2px rgb(0 0 0 / 0.1)"],lg:["var(--un-shadow-inset) 0 10px 15px -3px rgb(0 0 0 / 0.1)","var(--un-shadow-inset) 0 4px 6px -4px rgb(0 0 0 / 0.1)"],xl:["var(--un-shadow-inset) 0 20px 25px -5px rgb(0 0 0 / 0.1)","var(--un-shadow-inset) 0 8px 10px -6px rgb(0 0 0 / 0.1)"],"2xl":"var(--un-shadow-inset) 0 25px 50px -12px rgb(0 0 0 / 0.25)",inner:"inset 0 2px 4px 0 rgb(0 0 0 / 0.05)"},yi={DEFAULT:"3px",none:"0"},vi={auto:"auto"},wi={mouse:"(hover) and (pointer: fine)"};var ki={...Qe,...Je,...Ze};var et={xs:"20rem",sm:"24rem",md:"28rem",lg:"32rem",xl:"36rem","2xl":"42rem","3xl":"48rem","4xl":"56rem","5xl":"64rem","6xl":"72rem","7xl":"80rem",prose:"65ch"},hn={auto:"auto",...et,screen:"100vw"},tt={none:"none",...et,screen:"100vw"},gn={auto:"auto",...et,screen:"100vh"},rt={none:"none",...et,screen:"100vh"},$i={...et};var Si={DEFAULT:"cubic-bezier(0.4, 0, 0.2, 1)",linear:"linear",in:"cubic-bezier(0.4, 0, 1, 1)",out:"cubic-bezier(0, 0, 0.2, 1)","in-out":"cubic-bezier(0.4, 0, 0.2, 1)"},Ci={none:"none",all:"all",colors:["color","background-color","border-color","text-decoration-color","fill","stroke"].join(","),opacity:"opacity",shadow:"box-shadow",transform:"transform",get DEFAULT(){return[this.colors,"opacity","box-shadow","transform","filter","backdrop-filter"].join(",")}};var Ri={width:hn,height:gn,maxWidth:tt,maxHeight:rt,minWidth:tt,minHeight:rt,inlineSize:hn,blockSize:gn,maxInlineSize:tt,maxBlockSize:rt,minInlineSize:tt,minBlockSize:rt,colors:pn,fontFamily:ii,fontSize:si,fontWeight:fi,breakpoints:mn,verticalBreakpoints:di,borderRadius:bi,lineHeight:ui,letterSpacing:dn,wordSpacing:pi,boxShadow:xi,textIndent:ai,textShadow:ci,textStrokeWidth:li,blur:ni,dropShadow:oi,easing:Si,transitionProperty:Ci,lineWidth:mi,spacing:hi,duration:gi,ringWidth:yi,preflightBase:ki,containers:$i,zIndex:vi,media:wi};var Ei={name:"aria",match(e,t){let r=I("aria-",e,t.generator.config.separators);if(r){let[n,o]=r,i=c.bracket(n)??t.theme.aria?.[n]??"";if(i)return{matcher:o,selector:s=>`${s}[aria-${i}]`}}}};function zr(e){return{name:`${e}-aria`,match(t,r){let n=I(`${e}-aria-`,t,r.generator.config.separators);if(n){let[o,i]=n,s=c.bracket(o)??r.theme.aria?.[o]??"";if(s)return{matcher:`${e}-[[aria-${s}]]:${i}`}}}}}var Ti=[zr("group"),zr("peer"),zr("parent"),zr("previous")];function ji(e){let t=e.match(/^-?\d+\.?\d*/)?.[0]||"",r=e.slice(t.length);if(r==="px"){let n=Number.parseFloat(t)-.1;return Number.isNaN(n)?e:`${n}${r}`}return`calc(${e} - 0.1px)`}var zi=/(max|min)-\[([^\]]*)\]:/;function Ai(){let e={};return{name:"breakpoints",match(t,r){if(zi.test(t)){let o=t.match(zi);return{matcher:t.replace(o[0],""),handle:(s,l)=>l({...s,parent:`${s.parent?`${s.parent} $$ `:""}@media (${o[1]}-width: ${o[2]})`})}}let n=(ye(r)??[]).map(({point:o,size:i},s)=>[o,i,s]);for(let[o,i,s]of n){e[o]||(e[o]=new RegExp(`^((?:([al]t-|[<~]|max-))?${o}(?:${r.generator.config.separators.join("|")}))`));let l=t.match(e[o]);if(!l)continue;let[,a]=l,u=t.slice(a.length);if(u==="container")continue;let f=a.startsWith("lt-")||a.startsWith("<")||a.startsWith("max-"),p=a.startsWith("at-")||a.startsWith("~"),m=3e3;return f?(m-=s+1,{matcher:u,handle:(d,h)=>h({...d,parent:`${d.parent?`${d.parent} $$ `:""}@media (max-width: ${ji(i)})`,parentOrder:m})}):(m+=s+1,p&&s<n.length-1?{matcher:u,handle:(d,h)=>h({...d,parent:`${d.parent?`${d.parent} $$ `:""}@media (min-width: ${i}) and (max-width: ${ji(n[s+1][1])})`,parentOrder:m})}:{matcher:u,handle:(d,h)=>h({...d,parent:`${d.parent?`${d.parent} $$ `:""}@media (min-width: ${i})`,parentOrder:m})})}},multiPass:!0,autocomplete:"(at-|lt-|max-|)$breakpoints:"}}var Oi=[K("*",e=>({selector:`${e.selector} > *`}))];function nt(e,t){return{name:`combinator:${e}`,match(r,n){if(!r.startsWith(e))return;let o=n.generator.config.separators,i=me(`${e}-`,r,o);if(!i){for(let l of o)if(r.startsWith(`${e}${l}`)){i=["",r.slice(e.length+l.length)];break}if(!i)return}let s=c.bracket(i[0])??"";return s===""&&(s="*"),{matcher:i[1],selector:l=>`${l}${t}${s}`}},multiPass:!0}}var Vi=[nt("all"," "),nt("children",">"),nt("next","+"),nt("sibling","+"),nt("siblings","~")];var Pi={name:"@",match(e,t){if(e.startsWith("@container"))return;let r=I("@",e,t.generator.config.separators);if(r){let[n,o,i]=r,s=c.bracket(n),l;if(s?l=c.numberWithUnit(s):l=t.theme.containers?.[n]??"",l){let a=1e3+Object.keys(t.theme.containers??{}).indexOf(n);return i&&(a+=1e3),{matcher:o,handle:(u,f)=>f({...u,parent:`${u.parent?`${u.parent} $$ `:""}@container${i?` ${i} `:" "}(min-width: ${l})`,parentOrder:a})}}}},multiPass:!0};function Mi(e={}){if(e?.dark==="class"||typeof e.dark=="object"){let{dark:t=".dark",light:r=".light"}=typeof e.dark=="string"?{}:e.dark;return[K("dark",n=>({prefix:`${t} $$ ${n.prefix}`})),K("light",n=>({prefix:`${r} $$ ${n.prefix}`}))]}return[G("dark","@media (prefers-color-scheme: dark)"),G("light","@media (prefers-color-scheme: light)")]}var Fi={name:"data",match(e,t){let r=I("data-",e,t.generator.config.separators);if(r){let[n,o]=r,i=c.bracket(n)??t.theme.data?.[n]??"";if(i)return{matcher:o,selector:s=>`${s}[data-${i}]`}}}};function Ar(e){return{name:`${e}-data`,match(t,r){let n=I(`${e}-data-`,t,r.generator.config.separators);if(n){let[o,i,s]=n,l=c.bracket(o)??r.theme.data?.[o]??"";if(l)return{matcher:`${e}-[[data-${l}]]${s?`/${s}`:""}:${i}`}}}}}var _i=[Ar("group"),Ar("peer"),Ar("parent"),Ar("previous")];var Li=[K("rtl",e=>({prefix:`[dir="rtl"] $$ ${e.prefix}`})),K("ltr",e=>({prefix:`[dir="ltr"] $$ ${e.prefix}`}))];function Ui(){let e;return{name:"important",match(t,r){e||(e=new RegExp(`^(important(?:${r.generator.config.separators.join("|")})|!)`));let n,o=t.match(e);if(o?n=t.slice(o[0].length):t.endsWith("!")&&(n=t.slice(0,-1)),n)return{matcher:n,body:i=>(i.forEach(s=>{s[1]!=null&&(s[1]+=" !important")}),i)}}}}var Wi=G("print","@media print"),Bi={name:"media",match(e,t){let r=I("media-",e,t.generator.config.separators);if(r){let[n,o]=r,i=c.bracket(n)??"";if(i===""&&(i=t.theme.media?.[n]??""),i)return{matcher:o,handle:(s,l)=>l({...s,parent:`${s.parent?`${s.parent} $$ `:""}@media ${i}`})}}},multiPass:!0};var Ni={name:"selector",match(e,t){let r=me("selector-",e,t.generator.config.separators);if(r){let[n,o]=r,i=c.bracket(n);if(i)return{matcher:o,selector:()=>i}}}},Di={name:"layer",match(e,t){let r=I("layer-",e,t.generator.config.separators);if(r){let[n,o]=r,i=c.bracket(n)??n;if(i)return{matcher:o,handle:(s,l)=>l({...s,parent:`${s.parent?`${s.parent} $$ `:""}@layer ${i}`})}}}},Ii={name:"uno-layer",match(e,t){let r=I("uno-layer-",e,t.generator.config.separators);if(r){let[n,o]=r,i=c.bracket(n)??n;if(i)return{matcher:o,layer:i}}}},Ki={name:"scope",match(e,t){let r=me("scope-",e,t.generator.config.separators);if(r){let[n,o]=r,i=c.bracket(n);if(i)return{matcher:o,selector:s=>`${i} $$ ${s}`}}}},Gi={name:"variables",match(e,t){if(!e.startsWith("["))return;let[r,n]=Ce(e,"[","]")??[];if(!(r&&n))return;let o;for(let l of t.generator.config.separators)if(n.startsWith(l)){o=n.slice(l.length);break}if(o==null)return;let i=c.bracket(r)??"",s=i.startsWith("@");if(s||i.includes("&"))return{matcher:o,handle(l,a){let u=s?{parent:`${l.parent?`${l.parent} $$ `:""}${i}`}:{selector:i.replace(/&/g,l.selector)};return a({...l,...u})}}},multiPass:!0},Hi={name:"theme-variables",match(e,t){if(jo(e))return{matcher:e,handle(r,n){return n({...r,entries:JSON.parse(zo(JSON.stringify(r.entries),t.theme))})}}}};var qi=/^-?[0-9.]+(?:[a-z]+|%)?$/,Yi=/-?[0-9.]+(?:[a-z]+|%)?/,Dc=[/\b(opacity|color|flex|backdrop-filter|^filter|transform)\b/];function Ic(e){let t=e.match(Ne)||e.match(kt);if(t){let[r,n]=de(`(${t[2]})${t[3]}`,"(",")"," ")??[];if(r)return`calc(${t[1]}${r} * -1)${n?` ${n}`:""}`}}var Kc=/\b(hue-rotate)\s*(\(.*)/;function Gc(e){let t=e.match(Kc);if(t){let[r,n]=de(t[2],"(",")"," ")??[];if(r){let o=qi.test(r.slice(1,-1))?r.replace(Yi,i=>i.startsWith("-")?i.slice(1):`-${i}`):`(calc(${r} * -1))`;return`${t[1]}${o}${n?` ${n}`:""}`}}}var Xi={name:"negative",match(e){if(e.startsWith("-"))return{matcher:e.slice(1),body:t=>{if(t.find(n=>n[0]===Wo))return;let r=!1;return t.forEach(n=>{let o=n[1]?.toString();if(!o||o==="0"||Dc.some(l=>l.test(n[0])))return;let i=Ic(o);if(i){n[1]=i,r=!0;return}let s=Gc(o);if(s){n[1]=s,r=!0;return}qi.test(o)&&(n[1]=o.replace(Yi,l=>l.startsWith("-")?l.slice(1):`-${l}`),r=!0)}),r?t:[]}}}};var Oe=Object.fromEntries([["first-letter","::first-letter"],["first-line","::first-line"],"any-link","link","visited","target",["open","[open]"],"default","checked","indeterminate","placeholder-shown","autofill","optional","required","valid","invalid","user-valid","user-invalid","in-range","out-of-range","read-only","read-write","empty","focus-within","hover","focus","focus-visible","active","enabled","disabled","popover-open","root","empty",["even-of-type",":nth-of-type(even)"],["even",":nth-child(even)"],["odd-of-type",":nth-of-type(odd)"],["odd",":nth-child(odd)"],"first-of-type",["first",":first-child"],"last-of-type",["last",":last-child"],"only-child","only-of-type",["backdrop-element","::backdrop"],["placeholder","::placeholder"],["before","::before"],["after","::after"],["file","::file-selector-button"]].map(e=>Array.isArray(e)?e:[e,`:${e}`])),es=Object.keys(Oe),Ve=Object.fromEntries([["backdrop","::backdrop"]].map(e=>Array.isArray(e)?e:[e,`:${e}`])),ts=Object.keys(Ve),Hc=["not","is","where","has"],rs=Object.fromEntries([["selection",["::selection"," *::selection"]],["marker",["::marker"," *::marker"]]]),bn=Object.entries(Oe).filter(([,e])=>!e.startsWith("::")).map(([e])=>e).sort((e,t)=>t.length-e.length).join("|"),xn=Object.entries(Ve).filter(([,e])=>!e.startsWith("::")).map(([e])=>e).sort((e,t)=>t.length-e.length).join("|"),ke=Hc.join("|"),Zi=Object.keys(rs).sort((e,t)=>t.length-e.length).join("|");function qc(e,t,r){let n=new RegExp(`^(${fe(t)}:)(\\S+)${fe(r)}\\1`),o,i,s,l,a=p=>{let m=me(`${e}-`,p,[]);if(!m)return;let[d,h]=m,g=c.bracket(d);if(g==null)return;let w=h.split(o,1)?.[0]??"",j=`${t}${se(w)}`;return[w,p.slice(p.length-(h.length-w.length-1)),g.includes("&")?g.replace(/&/g,j):`${j}${g}`]},u=p=>{let m=p.match(i)||p.match(s);if(!m)return;let[d,h,g]=m,w=m[3]??"",j=Oe[g]||Ve[g]||`:${g}`;return h&&(j=`:${h}(${j})`),[w,p.slice(d.length),`${t}${se(w)}${j}`,g]},f=p=>{let m=p.match(l);if(!m)return;let[d,h,g]=m,w=m[3]??"",j=`:${h}(${g})`;return[w,p.slice(d.length),`${t}${se(w)}${j}`]};return{name:`pseudo:${e}`,match(p,m){if(o&&i&&s||(o=new RegExp(`(?:${m.generator.config.separators.join("|")})`),i=new RegExp(`^${e}-(?:(?:(${ke})-)?(${bn}))(?:(/\\w+))?(?:${m.generator.config.separators.join("|")})`),s=new RegExp(`^${e}-(?:(?:(${ke})-)?(${xn}))(?:(/\\w+))?(?:${m.generator.config.separators.filter(y=>y!=="-").join("|")})`),l=new RegExp(`^${e}-(?:(${ke})-)?\\[(.+)\\](?:(/\\w+))?(?:${m.generator.config.separators.filter(y=>y!=="-").join("|")})`)),!p.startsWith(e))return;let d=a(p)||u(p)||f(p);if(!d)return;let[h,g,w,j=""]=d;return{matcher:g,handle:(y,$)=>$({...y,prefix:`${w}${r}${y.prefix}`.replace(n,"$1$2:"),sort:es.indexOf(j)??ts.indexOf(j)})}},multiPass:!0}}var Yc=["::-webkit-resizer","::-webkit-scrollbar","::-webkit-scrollbar-button","::-webkit-scrollbar-corner","::-webkit-scrollbar-thumb","::-webkit-scrollbar-track","::-webkit-scrollbar-track-piece","::file-selector-button"],Ji=Object.entries(Oe).map(([e])=>e).sort((e,t)=>t.length-e.length).join("|"),Qi=Object.entries(Ve).map(([e])=>e).sort((e,t)=>t.length-e.length).join("|");function ns(){let e,t,r;return[{name:"pseudo",match(n,o){e&&t||(e=new RegExp(`^(${Ji})(?:${o.generator.config.separators.join("|")})`),t=new RegExp(`^(${Qi})(?:${o.generator.config.separators.filter(s=>s!=="-").join("|")})`));let i=n.match(e)||n.match(t);if(i){let s=Oe[i[1]]||Ve[i[1]]||`:${i[1]}`,l=es.indexOf(i[1]);return l===-1&&(l=ts.indexOf(i[1])),l===-1&&(l=void 0),{matcher:n.slice(i[0].length),handle:(a,u)=>{let f=s.includes("::")&&!Yc.includes(s)?{pseudo:`${a.pseudo}${s}`}:{selector:`${a.selector}${s}`};return u({...a,...f,sort:l,noMerge:!0})}}}},multiPass:!0,autocomplete:`(${Ji}|${Qi}):`},{name:"pseudo:multi",match(n,o){r||(r=new RegExp(`^(${Zi})(?:${o.generator.config.separators.join("|")})`));let i=n.match(r);if(i)return rs[i[1]].map(l=>({matcher:n.slice(i[0].length),handle:(a,u)=>u({...a,pseudo:`${a.pseudo}${l}`})}))},multiPass:!1,autocomplete:`(${Zi}):`}]}function os(){let e,t,r;return{match(n,o){e&&t||(e=new RegExp(`^(${ke})-(${bn})(?:${o.generator.config.separators.join("|")})`),t=new RegExp(`^(${ke})-(${xn})(?:${o.generator.config.separators.filter(s=>s!=="-").join("|")})`),r=new RegExp(`^(${ke})-(\\[.+\\])(?:${o.generator.config.separators.filter(s=>s!=="-").join("|")})`));let i=n.match(e)||n.match(t)||n.match(r);if(i){let s=i[1],a=Ce(i[2],"[","]")?c.bracket(i[2]):Oe[i[2]]||Ve[i[2]]||`:${i[2]}`;return{matcher:n.slice(i[0].length),selector:u=>`${u}:${s}(${a})`}}},multiPass:!0,autocomplete:`(${ke})-(${bn}|${xn}):`}}function is(e={}){let t=!!e?.attributifyPseudo,r=e?.prefix??"";r=(Array.isArray(r)?r:[r]).filter(Boolean)[0]??"";let n=(o,i)=>qc(o,t?`[${r}${o}=""]`:`.${r}${o}`,i);return[n("group"," "),n("peer","~"),n("parent",">"),n("previous","+"),n("group-aria"," "),n("peer-aria","~"),n("parent-aria",">"),n("previous-aria","+")]}var Xc=/(part-\[(.+)\]:)(.+)/,ss={match(e){let t=e.match(Xc);if(t){let r=`part(${t[2]})`;return{matcher:e.slice(t[1].length),selector:n=>`${n}::${r}`}}},multiPass:!0};var as={name:"starting",match(e){if(e.startsWith("starting:"))return{matcher:e.slice(9),handle:(t,r)=>r({...t,parent:"@starting-style"})}}};var ls={name:"supports",match(e,t){let r=I("supports-",e,t.generator.config.separators);if(r){let[n,o]=r,i=c.bracket(n)??"";if(i===""&&(i=t.theme.supports?.[n]??""),i)return{matcher:o,handle:(s,l)=>l({...s,parent:`${s.parent?`${s.parent} $$ `:""}@supports ${i}`})}}},multiPass:!0};function Or(e){return[Ei,Fi,Di,Ni,Ii,Xi,as,Ui(),ls,Wi,Bi,Ai(),...Vi,...ns(),os(),...is(e),ss,...Mi(e),...Li,Ki,...Oi,Pi,Gi,..._i,...Ti,Hi]}var yn=(e={})=>(e.dark=e.dark??"class",e.attributifyPseudo=e.attributifyPseudo??!1,e.preflight=e.preflight??!0,e.variablePrefix=e.variablePrefix??"un-",{name:"@unocss/preset-mini",theme:Ri,rules:ti,variants:Or(e),options:e,prefix:e.prefix,postprocess:Zc(e.variablePrefix),preflights:vo(e),extractorDefault:e.arbitraryVariants===!1?void 0:yo(),autocomplete:{shorthands:ri}}),cs=yn;function Zc(e){if(e!=="un-")return t=>{t.entries.forEach(r=>{r[0]=r[0].replace(/^--un-/,`--${e}`),typeof r[1]=="string"&&(r[1]=r[1].replace(/var\(--un-/g,`var(--${e}`))})}}function us(e){if(e==null||e===!1)return[];let t=r=>r.startsWith(":is(")&&r.endsWith(")")?r:r.includes("::")?r.replace(/(.*?)((?:\s\*)?::.*)/,":is($1)$2"):`:is(${r})`;return[e===!0?r=>{r.entries.forEach(n=>{n[1]!=null&&!String(n[1]).endsWith("!important")&&(n[1]+=" !important")})}:r=>{r.selector.startsWith(e)||(r.selector=`${e} ${t(r.selector)}`)}]}function fs(e){return[...O(cs(e).postprocess),...us(e.important)]}var ps=[[/^(?:animate-)?keyframes-(.+)$/,([,e],{theme:t})=>{let r=t.animation?.keyframes?.[e];if(r)return[`@keyframes ${e}${r}`,{animation:e}]},{autocomplete:["animate-keyframes-$animation.keyframes","keyframes-$animation.keyframes"]}],[/^animate-(.+)$/,([,e],{theme:t})=>{let r=t.animation?.keyframes?.[e];if(r){let n=t.animation?.durations?.[e]??"1s",o=t.animation?.timingFns?.[e]??"linear",i=t.animation?.counts?.[e]??1,s=t.animation?.properties?.[e];return[`@keyframes ${e}${r}`,{animation:`${e} ${n} ${o} ${i}`,...s}]}return{animation:c.bracket.cssvar(e)}},{autocomplete:"animate-$animation.keyframes"}],[/^animate-name-(.+)/,([,e])=>({"animation-name":c.bracket.cssvar(e)??e})],[/^animate-duration-(.+)$/,([,e],{theme:t})=>({"animation-duration":t.duration?.[e||"DEFAULT"]??c.bracket.cssvar.time(e)}),{autocomplete:["animate-duration","animate-duration-$duration"]}],[/^animate-delay-(.+)$/,([,e],{theme:t})=>({"animation-delay":t.duration?.[e||"DEFAULT"]??c.bracket.cssvar.time(e)}),{autocomplete:["animate-delay","animate-delay-$duration"]}],[/^animate-ease(?:-(.+))?$/,([,e],{theme:t})=>({"animation-timing-function":t.easing?.[e||"DEFAULT"]??c.bracket.cssvar(e)}),{autocomplete:["animate-ease","animate-ease-$easing"]}],[/^animate-(fill-mode-|fill-|mode-)?(.+)$/,([,e,t])=>["none","forwards","backwards","both",e?S:[]].includes(t)?{"animation-fill-mode":t}:void 0,{autocomplete:["animate-(fill|mode|fill-mode)","animate-(fill|mode|fill-mode)-(none|forwards|backwards|both|inherit|initial|revert|revert-layer|unset)","animate-(none|forwards|backwards|both|inherit|initial|revert|revert-layer|unset)"]}],[/^animate-(direction-)?(.+)$/,([,e,t])=>["normal","reverse","alternate","alternate-reverse",e?S:[]].includes(t)?{"animation-direction":t}:void 0,{autocomplete:["animate-direction","animate-direction-(normal|reverse|alternate|alternate-reverse|inherit|initial|revert|revert-layer|unset)","animate-(normal|reverse|alternate|alternate-reverse|inherit|initial|revert|revert-layer|unset)"]}],[/^animate-(?:iteration-count-|iteration-|count-)(.+)$/,([,e])=>({"animation-iteration-count":c.bracket.cssvar(e)??e.replace(/-/g,",")}),{autocomplete:["animate-(iteration|count|iteration-count)","animate-(iteration|count|iteration-count)-<num>"]}],[/^animate-(play-state-|play-|state-)?(.+)$/,([,e,t])=>["paused","running",e?S:[]].includes(t)?{"animation-play-state":t}:void 0,{autocomplete:["animate-(play|state|play-state)","animate-(play|state|play-state)-(paused|running|inherit|initial|revert|revert-layer|unset)","animate-(paused|running|inherit|initial|revert|revert-layer|unset)"]}],["animate-none",{animation:"none"}],...v("animate","animation")];function ds(e){return e?M(e,0):"rgb(255 255 255 / 0)"}function Jc(e,t,r,n){return t?n!=null?M(t,n):M(t,`var(--un-${e}-opacity, ${ae(t)})`):M(r,n)}function vn(){return([,e,t],{theme:r})=>{let n=Te(t,r,"backgroundColor");if(!n)return;let{alpha:o,color:i,cssColor:s}=n;if(!i)return;let l=Jc(e,s,i,o);switch(e){case"from":return{"--un-gradient-from-position":"0%","--un-gradient-from":`${l} var(--un-gradient-from-position)`,"--un-gradient-to-position":"100%","--un-gradient-to":`${ds(s)} var(--un-gradient-to-position)`,"--un-gradient-stops":"var(--un-gradient-from), var(--un-gradient-to)"};case"via":return{"--un-gradient-via-position":"50%","--un-gradient-to":ds(s),"--un-gradient-stops":`var(--un-gradient-from), ${l} var(--un-gradient-via-position), var(--un-gradient-to)`};case"to":return{"--un-gradient-to-position":"100%","--un-gradient-to":`${l} var(--un-gradient-to-position)`}}}}function Qc(){return([,e,t])=>({[`--un-gradient-${e}-position`]:`${Number(c.bracket.cssvar.percent(t))*100}%`})}var ms=[[/^bg-gradient-(.+)$/,([,e])=>({"--un-gradient":c.bracket(e)}),{autocomplete:["bg-gradient","bg-gradient-(from|to|via)","bg-gradient-(from|to|via)-$colors","bg-gradient-(from|to|via)-(op|opacity)","bg-gradient-(from|to|via)-(op|opacity)-<percent>"]}],[/^(?:bg-gradient-)?stops-(\[.+\])$/,([,e])=>({"--un-gradient-stops":c.bracket(e)})],[/^(?:bg-gradient-)?(from)-(.+)$/,vn()],[/^(?:bg-gradient-)?(via)-(.+)$/,vn()],[/^(?:bg-gradient-)?(to)-(.+)$/,vn()],[/^(?:bg-gradient-)?(from|via|to)-op(?:acity)?-?(.+)$/,([,e,t])=>({[`--un-${e}-opacity`]:c.bracket.percent(t)})],[/^(from|via|to)-([\d.]+)%$/,Qc()],[/^bg-gradient-((?:repeating-)?(?:linear|radial|conic))$/,([,e])=>({"background-image":`${e}-gradient(var(--un-gradient, var(--un-gradient-stops, rgb(255 255 255 / 0))))`}),{autocomplete:["bg-gradient-repeating","bg-gradient-(linear|radial|conic)","bg-gradient-repeating-(linear|radial|conic)"]}],[/^bg-gradient-to-([rltb]{1,2})$/,([,e])=>{if(e in B)return{"--un-gradient-shape":`to ${B[e]} in oklch`,"--un-gradient":"var(--un-gradient-shape), var(--un-gradient-stops)","background-image":"linear-gradient(var(--un-gradient))"}},{autocomplete:`bg-gradient-to-(${Object.keys(B).filter(e=>e.length<=2&&Array.from(e).every(t=>"rltb".includes(t))).join("|")})`}],[/^(?:bg-gradient-)?shape-(.+)$/,([,e])=>{let t=e in B?`to ${B[e]}`:c.bracket(e);if(t!=null)return{"--un-gradient-shape":`${t} in oklch`,"--un-gradient":"var(--un-gradient-shape), var(--un-gradient-stops)"}},{autocomplete:["bg-gradient-shape",`bg-gradient-shape-(${Object.keys(B).join("|")})`,`shape-(${Object.keys(B).join("|")})`]}],["bg-none",{"background-image":"none"}],["box-decoration-slice",{"box-decoration-break":"slice"}],["box-decoration-clone",{"box-decoration-break":"clone"}],...v("box-decoration","box-decoration-break"),["bg-auto",{"background-size":"auto"}],["bg-cover",{"background-size":"cover"}],["bg-contain",{"background-size":"contain"}],["bg-fixed",{"background-attachment":"fixed"}],["bg-local",{"background-attachment":"local"}],["bg-scroll",{"background-attachment":"scroll"}],["bg-clip-border",{"-webkit-background-clip":"border-box","background-clip":"border-box"}],["bg-clip-content",{"-webkit-background-clip":"content-box","background-clip":"content-box"}],["bg-clip-padding",{"-webkit-background-clip":"padding-box","background-clip":"padding-box"}],["bg-clip-text",{"-webkit-background-clip":"text","background-clip":"text"}],...S.map(e=>[`bg-clip-${e}`,{"-webkit-background-clip":e,"background-clip":e}]),[/^bg-([-\w]{3,})$/,([,e])=>({"background-position":B[e]})],["bg-repeat",{"background-repeat":"repeat"}],["bg-no-repeat",{"background-repeat":"no-repeat"}],["bg-repeat-x",{"background-repeat":"repeat-x"}],["bg-repeat-y",{"background-repeat":"repeat-y"}],["bg-repeat-round",{"background-repeat":"round"}],["bg-repeat-space",{"background-repeat":"space"}],...v("bg-repeat","background-repeat"),["bg-origin-border",{"background-origin":"border-box"}],["bg-origin-padding",{"background-origin":"padding-box"}],["bg-origin-content",{"background-origin":"content-box"}],...v("bg-origin","background-origin")];var wn={disc:"disc",circle:"circle",square:"square",decimal:"decimal","zero-decimal":"decimal-leading-zero",greek:"lower-greek",roman:"lower-roman","upper-roman":"upper-roman",alpha:"lower-alpha","upper-alpha":"upper-alpha",latin:"lower-latin","upper-latin":"upper-latin"},hs=[[/^list-(.+?)(?:-(outside|inside))?$/,([,e,t])=>{let r=wn[e];if(r)return t?{"list-style-position":t,"list-style-type":r}:{"list-style-type":r}},{autocomplete:[`list-(${Object.keys(wn).join("|")})`,`list-(${Object.keys(wn).join("|")})-(outside|inside)`]}],["list-outside",{"list-style-position":"outside"}],["list-inside",{"list-style-position":"inside"}],["list-none",{"list-style-type":"none"}],[/^list-image-(.+)$/,([,e])=>{if(/^\[url\(.+\)\]$/.test(e))return{"list-style-image":c.bracket(e)}}],["list-image-none",{"list-style-image":"none"}],...v("list","list-style-type")],gs=[[/^accent-(.+)$/,V("accent-color","accent","accentColor"),{autocomplete:"accent-$colors"}],[/^accent-op(?:acity)?-?(.+)$/,([,e])=>({"--un-accent-opacity":c.bracket.percent(e)}),{autocomplete:["accent-(op|opacity)","accent-(op|opacity)-<percent>"]}]],bs=[[/^caret-(.+)$/,V("caret-color","caret","textColor"),{autocomplete:"caret-$colors"}],[/^caret-op(?:acity)?-?(.+)$/,([,e])=>({"--un-caret-opacity":c.bracket.percent(e)}),{autocomplete:["caret-(op|opacity)","caret-(op|opacity)-<percent>"]}]],xs=[["image-render-auto",{"image-rendering":"auto"}],["image-render-edge",{"image-rendering":"crisp-edges"}],["image-render-pixel",[["-ms-interpolation-mode","nearest-neighbor"],["image-rendering","-webkit-optimize-contrast"],["image-rendering","-moz-crisp-edges"],["image-rendering","-o-pixelated"],["image-rendering","pixelated"]]]],ys=[["overscroll-auto",{"overscroll-behavior":"auto"}],["overscroll-contain",{"overscroll-behavior":"contain"}],["overscroll-none",{"overscroll-behavior":"none"}],...v("overscroll","overscroll-behavior"),["overscroll-x-auto",{"overscroll-behavior-x":"auto"}],["overscroll-x-contain",{"overscroll-behavior-x":"contain"}],["overscroll-x-none",{"overscroll-behavior-x":"none"}],...v("overscroll-x","overscroll-behavior-x"),["overscroll-y-auto",{"overscroll-behavior-y":"auto"}],["overscroll-y-contain",{"overscroll-behavior-y":"contain"}],["overscroll-y-none",{"overscroll-behavior-y":"none"}],...v("overscroll-y","overscroll-behavior-y")],vs=[["scroll-auto",{"scroll-behavior":"auto"}],["scroll-smooth",{"scroll-behavior":"smooth"}],...v("scroll","scroll-behavior")];var ws=[[/^columns-(.+)$/,([,e])=>({columns:c.bracket.global.number.auto.numberWithUnit(e)}),{autocomplete:"columns-<num>"}],["break-before-auto",{"break-before":"auto"}],["break-before-avoid",{"break-before":"avoid"}],["break-before-all",{"break-before":"all"}],["break-before-avoid-page",{"break-before":"avoid-page"}],["break-before-page",{"break-before":"page"}],["break-before-left",{"break-before":"left"}],["break-before-right",{"break-before":"right"}],["break-before-column",{"break-before":"column"}],...v("break-before"),["break-inside-auto",{"break-inside":"auto"}],["break-inside-avoid",{"break-inside":"avoid"}],["break-inside-avoid-page",{"break-inside":"avoid-page"}],["break-inside-avoid-column",{"break-inside":"avoid-column"}],...v("break-inside"),["break-after-auto",{"break-after":"auto"}],["break-after-avoid",{"break-after":"avoid"}],["break-after-all",{"break-after":"all"}],["break-after-avoid-page",{"break-after":"avoid-page"}],["break-after-page",{"break-after":"page"}],["break-after-left",{"break-after":"left"}],["break-after-right",{"break-after":"right"}],["break-after-column",{"break-after":"column"}],...v("break-after")];var eu=/@media \(min-width: (.+)\)/,ks=[[/^__container$/,(e,t)=>{let{theme:r,variantHandlers:n}=t,o=r.container?.padding,i;P(o)?i=o:i=o?.DEFAULT;let s=r.container?.maxWidth,l;for(let u of n){let f=u.handle?.({},p=>p)?.parent;if(P(f)){let p=f.match(eu)?.[1];if(p){let d=(ye(t)??[]).find(h=>h.size===p)?.point;s?d&&(l=s?.[d]):l=p,d&&!P(o)&&(i=o?.[d]??i)}}}let a={"max-width":l};return n.length||(a.width="100%"),r.container?.center&&(a["margin-left"]="auto",a["margin-right"]="auto"),o&&(a["padding-left"]=i,a["padding-right"]=i),a},{internal:!0}]],$s=[[/^(?:(\w+)[:-])?container$/,([,e],t)=>{let r=(ye(t)??[]).map(o=>o.point);if(e){if(!r.includes(e))return;r=r.slice(r.indexOf(e))}let n=r.map(o=>`${o}:__container`);return e||n.unshift("__container"),n}]];var Ss=[[/^divide-?([xy])$/,Vr,{autocomplete:["divide-(x|y|block|inline)","divide-(x|y|block|inline)-reverse","divide-(x|y|block|inline)-$lineWidth"]}],[/^divide-?([xy])-?(.+)$/,Vr],[/^divide-?([xy])-reverse$/,([,e])=>({[`--un-divide-${e}-reverse`]:1})],[/^divide-(block|inline)$/,Vr],[/^divide-(block|inline)-(.+)$/,Vr],[/^divide-(block|inline)-reverse$/,([,e])=>({[`--un-divide-${e}-reverse`]:1})],[/^divide-(.+)$/,V("border-color","divide","borderColor"),{autocomplete:"divide-$colors"}],[/^divide-op(?:acity)?-?(.+)$/,([,e])=>({"--un-divide-opacity":c.bracket.percent(e)}),{autocomplete:["divide-(op|opacity)","divide-(op|opacity)-<percent>"]}],...ve.map(e=>[`divide-${e}`,{"border-style":e}])];function Vr([,e,t],{theme:r}){let n=r.lineWidth?.[t||"DEFAULT"]??c.bracket.cssvar.px(t||"1");if(n!=null){n==="0"&&(n="0px");let o=N[e].map(i=>{let s=`border${i}-width`,l=i.endsWith("right")||i.endsWith("bottom")?`calc(${n} * var(--un-divide-${e}-reverse))`:`calc(${n} * calc(1 - var(--un-divide-${e}-reverse)))`;return[s,l]});if(o)return[[`--un-divide-${e}-reverse`,0],...o]}}var $n={"--un-blur":T,"--un-brightness":T,"--un-contrast":T,"--un-drop-shadow":T,"--un-grayscale":T,"--un-hue-rotate":T,"--un-invert":T,"--un-saturate":T,"--un-sepia":T},Rs=Object.keys($n),Cs={preflightKeys:Rs},Pr="var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)",Sn={"--un-backdrop-blur":T,"--un-backdrop-brightness":T,"--un-backdrop-contrast":T,"--un-backdrop-grayscale":T,"--un-backdrop-hue-rotate":T,"--un-backdrop-invert":T,"--un-backdrop-opacity":T,"--un-backdrop-saturate":T,"--un-backdrop-sepia":T},Es=Object.keys(Sn),tu={preflightKeys:Es},Mr="var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia)",le={preflightKeys:[...Rs,...Es]};function kn(e){let t=c.bracket.cssvar(e||"");if(t!=null||(t=e?c.percent(e):"1",t!=null&&Number.parseFloat(t)<=1))return t}function ce(e,t){return([,r,n],{theme:o})=>{let i=t(n,o)??(n==="none"?"0":"");if(i!=="")return r?{[`--un-${r}${e}`]:`${e}(${i})`,"-webkit-backdrop-filter":Mr,"backdrop-filter":Mr}:{[`--un-${e}`]:`${e}(${i})`,filter:Pr}}}function ru([,e],{theme:t}){let r=t.dropShadow?.[e||"DEFAULT"];if(r!=null)return{"--un-drop-shadow":`drop-shadow(${je(r,"--un-drop-shadow-color").join(") drop-shadow(")})`,filter:Pr};if(r=c.bracket.cssvar(e),r!=null)return{"--un-drop-shadow":`drop-shadow(${r})`,filter:Pr}}var Ts=[[/^(?:(backdrop-)|filter-)?blur(?:-(.+))?$/,ce("blur",(e,t)=>t.blur?.[e||"DEFAULT"]||c.bracket.cssvar.px(e)),{custom:le,autocomplete:["(backdrop|filter)-blur-$blur","blur-$blur","filter-blur"]}],[/^(?:(backdrop-)|filter-)?brightness-(.+)$/,ce("brightness",e=>c.bracket.cssvar.percent(e)),{custom:le,autocomplete:["(backdrop|filter)-brightness-<percent>","brightness-<percent>"]}],[/^(?:(backdrop-)|filter-)?contrast-(.+)$/,ce("contrast",e=>c.bracket.cssvar.percent(e)),{custom:le,autocomplete:["(backdrop|filter)-contrast-<percent>","contrast-<percent>"]}],[/^(?:filter-)?drop-shadow(?:-(.+))?$/,ru,{custom:Cs,autocomplete:["filter-drop","filter-drop-shadow","filter-drop-shadow-color","drop-shadow","drop-shadow-color","filter-drop-shadow-$dropShadow","drop-shadow-$dropShadow","filter-drop-shadow-color-$colors","drop-shadow-color-$colors","filter-drop-shadow-color-(op|opacity)","drop-shadow-color-(op|opacity)","filter-drop-shadow-color-(op|opacity)-<percent>","drop-shadow-color-(op|opacity)-<percent>"]}],[/^(?:filter-)?drop-shadow-color-(.+)$/,V("--un-drop-shadow-color","drop-shadow","shadowColor")],[/^(?:filter-)?drop-shadow-color-op(?:acity)?-?(.+)$/,([,e])=>({"--un-drop-shadow-opacity":c.bracket.percent(e)})],[/^(?:(backdrop-)|filter-)?grayscale(?:-(.+))?$/,ce("grayscale",kn),{custom:le,autocomplete:["(backdrop|filter)-grayscale","(backdrop|filter)-grayscale-<percent>","grayscale-<percent>"]}],[/^(?:(backdrop-)|filter-)?hue-rotate-(.+)$/,ce("hue-rotate",e=>c.bracket.cssvar.degree(e)),{custom:le}],[/^(?:(backdrop-)|filter-)?invert(?:-(.+))?$/,ce("invert",kn),{custom:le,autocomplete:["(backdrop|filter)-invert","(backdrop|filter)-invert-<percent>","invert-<percent>"]}],[/^(backdrop-)op(?:acity)?-(.+)$/,ce("opacity",e=>c.bracket.cssvar.percent(e)),{custom:le,autocomplete:["backdrop-(op|opacity)","backdrop-(op|opacity)-<percent>"]}],[/^(?:(backdrop-)|filter-)?saturate-(.+)$/,ce("saturate",e=>c.bracket.cssvar.percent(e)),{custom:le,autocomplete:["(backdrop|filter)-saturate","(backdrop|filter)-saturate-<percent>","saturate-<percent>"]}],[/^(?:(backdrop-)|filter-)?sepia(?:-(.+))?$/,ce("sepia",kn),{custom:le,autocomplete:["(backdrop|filter)-sepia","(backdrop|filter)-sepia-<percent>","sepia-<percent>"]}],["filter",{filter:Pr},{custom:Cs}],["backdrop-filter",{"-webkit-backdrop-filter":Mr,"backdrop-filter":Mr},{custom:tu}],["filter-none",{filter:"none"}],["backdrop-filter-none",{"-webkit-backdrop-filter":"none","backdrop-filter":"none"}],...S.map(e=>[`filter-${e}`,{filter:e}]),...S.map(e=>[`backdrop-filter-${e}`,{"-webkit-backdrop-filter":e,"backdrop-filter":e}])];var js=[[/^line-clamp-(\d+)$/,([,e])=>({overflow:"hidden",display:"-webkit-box","-webkit-box-orient":"vertical","-webkit-line-clamp":e,"line-clamp":e}),{autocomplete:["line-clamp","line-clamp-<num>"]}],...["none",...S].map(e=>[`line-clamp-${e}`,{overflow:"visible",display:"block","-webkit-box-orient":"horizontal","-webkit-line-clamp":e,"line-clamp":e}])];var zs=[[/^\$ placeholder-(.+)$/,V("color","placeholder","accentColor"),{autocomplete:"placeholder-$colors"}],[/^\$ placeholder-op(?:acity)?-?(.+)$/,([,e])=>({"--un-placeholder-opacity":c.bracket.percent(e)}),{autocomplete:["placeholder-(op|opacity)","placeholder-(op|opacity)-<percent>"]}]];var Cn={"--un-scroll-snap-strictness":"proximity"},As={preflightKeys:Object.keys(Cn)},Os=[[/^snap-(x|y)$/,([,e])=>({"scroll-snap-type":`${e} var(--un-scroll-snap-strictness)`}),{custom:As,autocomplete:"snap-(x|y|both)"}],[/^snap-both$/,()=>({"scroll-snap-type":"both var(--un-scroll-snap-strictness)"}),{custom:As}],["snap-mandatory",{"--un-scroll-snap-strictness":"mandatory"}],["snap-proximity",{"--un-scroll-snap-strictness":"proximity"}],["snap-none",{"scroll-snap-type":"none"}],["snap-start",{"scroll-snap-align":"start"}],["snap-end",{"scroll-snap-align":"end"}],["snap-center",{"scroll-snap-align":"center"}],["snap-align-none",{"scroll-snap-align":"none"}],["snap-normal",{"scroll-snap-stop":"normal"}],["snap-always",{"scroll-snap-stop":"always"}],[/^scroll-ma?()-?(.+)$/,_("scroll-margin"),{autocomplete:["scroll-(m|p|ma|pa|block|inline)","scroll-(m|p|ma|pa|block|inline)-$spacing","scroll-(m|p|ma|pa|block|inline)-(x|y|r|l|t|b|bs|be|is|ie)","scroll-(m|p|ma|pa|block|inline)-(x|y|r|l|t|b|bs|be|is|ie)-$spacing"]}],[/^scroll-m-?([xy])-?(.+)$/,_("scroll-margin")],[/^scroll-m-?([rltb])-?(.+)$/,_("scroll-margin")],[/^scroll-m-(block|inline)-(.+)$/,_("scroll-margin")],[/^scroll-m-?([bi][se])-?(.+)$/,_("scroll-margin")],[/^scroll-pa?()-?(.+)$/,_("scroll-padding")],[/^scroll-p-?([xy])-?(.+)$/,_("scroll-padding")],[/^scroll-p-?([rltb])-?(.+)$/,_("scroll-padding")],[/^scroll-p-(block|inline)-(.+)$/,_("scroll-padding")],[/^scroll-p-?([bi][se])-?(.+)$/,_("scroll-padding")]];var Ps=[[/^space-([xy])-(.+)$/,Vs,{autocomplete:["space-(x|y|block|inline)","space-(x|y|block|inline)-reverse","space-(x|y|block|inline)-$spacing"]}],[/^space-([xy])-reverse$/,([,e])=>({[`--un-space-${e}-reverse`]:1})],[/^space-(block|inline)-(.+)$/,Vs],[/^space-(block|inline)-reverse$/,([,e])=>({[`--un-space-${e}-reverse`]:1})]];function Vs([,e,t],{theme:r}){let n=r.spacing?.[t||"DEFAULT"]??c.bracket.cssvar.auto.fraction.rem(t||"1");if(n!=null){n==="0"&&(n="0px");let o=N[e].map(i=>{let s=`margin${i}`,l=i.endsWith("right")||i.endsWith("bottom")?`calc(${n} * var(--un-space-${e}-reverse))`:`calc(${n} * calc(1 - var(--un-space-${e}-reverse)))`;return[s,l]});if(o)return[[`--un-space-${e}-reverse`,0],...o]}}var Ms=[["uppercase",{"text-transform":"uppercase"}],["lowercase",{"text-transform":"lowercase"}],["capitalize",{"text-transform":"capitalize"}],["normal-case",{"text-transform":"none"}]],Fs=[...["manual","auto","none",...S].map(e=>[`hyphens-${e}`,{"-webkit-hyphens":e,"-ms-hyphens":e,hyphens:e}])],_s=[["write-vertical-right",{"writing-mode":"vertical-rl"}],["write-vertical-left",{"writing-mode":"vertical-lr"}],["write-normal",{"writing-mode":"horizontal-tb"}],...v("write","writing-mode")],Ls=[["write-orient-mixed",{"text-orientation":"mixed"}],["write-orient-sideways",{"text-orientation":"sideways"}],["write-orient-upright",{"text-orientation":"upright"}],...v("write-orient","text-orientation")],Us=[["sr-only",{position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0,0,0,0)","white-space":"nowrap","border-width":0}],["not-sr-only",{position:"static",width:"auto",height:"auto",padding:"0",margin:"0",overflow:"visible",clip:"auto","white-space":"normal"}]],Ws=[["isolate",{isolation:"isolate"}],["isolate-auto",{isolation:"auto"}],["isolation-auto",{isolation:"auto"}]],Bs=[["object-cover",{"object-fit":"cover"}],["object-contain",{"object-fit":"contain"}],["object-fill",{"object-fit":"fill"}],["object-scale-down",{"object-fit":"scale-down"}],["object-none",{"object-fit":"none"}],[/^object-(.+)$/,([,e])=>{if(B[e])return{"object-position":B[e]};if(c.bracketOfPosition(e)!=null)return{"object-position":c.bracketOfPosition(e).split(" ").map(t=>c.position.fraction.auto.px.cssvar(t)??t).join(" ")}},{autocomplete:`object-(${Object.keys(B).join("|")})`}]],Ns=[["bg-blend-multiply",{"background-blend-mode":"multiply"}],["bg-blend-screen",{"background-blend-mode":"screen"}],["bg-blend-overlay",{"background-blend-mode":"overlay"}],["bg-blend-darken",{"background-blend-mode":"darken"}],["bg-blend-lighten",{"background-blend-mode":"lighten"}],["bg-blend-color-dodge",{"background-blend-mode":"color-dodge"}],["bg-blend-color-burn",{"background-blend-mode":"color-burn"}],["bg-blend-hard-light",{"background-blend-mode":"hard-light"}],["bg-blend-soft-light",{"background-blend-mode":"soft-light"}],["bg-blend-difference",{"background-blend-mode":"difference"}],["bg-blend-exclusion",{"background-blend-mode":"exclusion"}],["bg-blend-hue",{"background-blend-mode":"hue"}],["bg-blend-saturation",{"background-blend-mode":"saturation"}],["bg-blend-color",{"background-blend-mode":"color"}],["bg-blend-luminosity",{"background-blend-mode":"luminosity"}],["bg-blend-normal",{"background-blend-mode":"normal"}],...v("bg-blend","background-blend")],Ds=[["mix-blend-multiply",{"mix-blend-mode":"multiply"}],["mix-blend-screen",{"mix-blend-mode":"screen"}],["mix-blend-overlay",{"mix-blend-mode":"overlay"}],["mix-blend-darken",{"mix-blend-mode":"darken"}],["mix-blend-lighten",{"mix-blend-mode":"lighten"}],["mix-blend-color-dodge",{"mix-blend-mode":"color-dodge"}],["mix-blend-color-burn",{"mix-blend-mode":"color-burn"}],["mix-blend-hard-light",{"mix-blend-mode":"hard-light"}],["mix-blend-soft-light",{"mix-blend-mode":"soft-light"}],["mix-blend-difference",{"mix-blend-mode":"difference"}],["mix-blend-exclusion",{"mix-blend-mode":"exclusion"}],["mix-blend-hue",{"mix-blend-mode":"hue"}],["mix-blend-saturation",{"mix-blend-mode":"saturation"}],["mix-blend-color",{"mix-blend-mode":"color"}],["mix-blend-luminosity",{"mix-blend-mode":"luminosity"}],["mix-blend-plus-lighter",{"mix-blend-mode":"plus-lighter"}],["mix-blend-normal",{"mix-blend-mode":"normal"}],...v("mix-blend")],Is=[["min-h-dvh",{"min-height":"100dvh"}],["min-h-svh",{"min-height":"100svh"}],["min-h-lvh",{"min-height":"100lvh"}],["h-dvh",{height:"100dvh"}],["h-svh",{height:"100svh"}],["h-lvh",{height:"100lvh"}],["max-h-dvh",{"max-height":"100dvh"}],["max-h-svh",{"max-height":"100svh"}],["max-h-lvh",{"max-height":"100lvh"}]];var Rn={"--un-border-spacing-x":0,"--un-border-spacing-y":0},Ks={preflightKeys:Object.keys(Rn)},Gs="var(--un-border-spacing-x) var(--un-border-spacing-y)",Hs=[["inline-table",{display:"inline-table"}],["table",{display:"table"}],["table-caption",{display:"table-caption"}],["table-cell",{display:"table-cell"}],["table-column",{display:"table-column"}],["table-column-group",{display:"table-column-group"}],["table-footer-group",{display:"table-footer-group"}],["table-header-group",{display:"table-header-group"}],["table-row",{display:"table-row"}],["table-row-group",{display:"table-row-group"}],["border-collapse",{"border-collapse":"collapse"}],["border-separate",{"border-collapse":"separate"}],[/^border-spacing-(.+)$/,([,e],{theme:t})=>{let r=t.spacing?.[e]??c.bracket.cssvar.global.auto.fraction.rem(e);if(r!=null)return{"--un-border-spacing-x":r,"--un-border-spacing-y":r,"border-spacing":Gs}},{custom:Ks,autocomplete:["border-spacing","border-spacing-$spacing"]}],[/^border-spacing-([xy])-(.+)$/,([,e,t],{theme:r})=>{let n=r.spacing?.[t]??c.bracket.cssvar.global.auto.fraction.rem(t);if(n!=null)return{[`--un-border-spacing-${e}`]:n,"border-spacing":Gs}},{custom:Ks,autocomplete:["border-spacing-(x|y)","border-spacing-(x|y)-$spacing"]}],["caption-top",{"caption-side":"top"}],["caption-bottom",{"caption-side":"bottom"}],["table-auto",{"table-layout":"auto"}],["table-fixed",{"table-layout":"fixed"}],["table-empty-cells-visible",{"empty-cells":"show"}],["table-empty-cells-hidden",{"empty-cells":"hide"}]];var jn={"--un-pan-x":T,"--un-pan-y":T,"--un-pinch-zoom":T},En={preflightKeys:Object.keys(jn)},Tn="var(--un-pan-x) var(--un-pan-y) var(--un-pinch-zoom)",qs=[[/^touch-pan-(x|left|right)$/,([,e])=>({"--un-pan-x":`pan-${e}`,"touch-action":Tn}),{custom:En,autocomplete:["touch-pan","touch-pan-(x|left|right|y|up|down)"]}],[/^touch-pan-(y|up|down)$/,([,e])=>({"--un-pan-y":`pan-${e}`,"touch-action":Tn}),{custom:En}],["touch-pinch-zoom",{"--un-pinch-zoom":"pinch-zoom","touch-action":Tn},{custom:En}],["touch-auto",{"touch-action":"auto"}],["touch-manipulation",{"touch-action":"manipulation"}],["touch-none",{"touch-action":"none"}],...v("touch","touch-action")];var zn={"--un-ordinal":T,"--un-slashed-zero":T,"--un-numeric-figure":T,"--un-numeric-spacing":T,"--un-numeric-fraction":T},he={preflightKeys:Object.keys(zn)};function ge(e){return{...e,"font-variant-numeric":"var(--un-ordinal) var(--un-slashed-zero) var(--un-numeric-figure) var(--un-numeric-spacing) var(--un-numeric-fraction)"}}var Ys=[[/^ordinal$/,()=>ge({"--un-ordinal":"ordinal"}),{custom:he,autocomplete:"ordinal"}],[/^slashed-zero$/,()=>ge({"--un-slashed-zero":"slashed-zero"}),{custom:he,autocomplete:"slashed-zero"}],[/^lining-nums$/,()=>ge({"--un-numeric-figure":"lining-nums"}),{custom:he,autocomplete:"lining-nums"}],[/^oldstyle-nums$/,()=>ge({"--un-numeric-figure":"oldstyle-nums"}),{custom:he,autocomplete:"oldstyle-nums"}],[/^proportional-nums$/,()=>ge({"--un-numeric-spacing":"proportional-nums"}),{custom:he,autocomplete:"proportional-nums"}],[/^tabular-nums$/,()=>ge({"--un-numeric-spacing":"tabular-nums"}),{custom:he,autocomplete:"tabular-nums"}],[/^diagonal-fractions$/,()=>ge({"--un-numeric-fraction":"diagonal-fractions"}),{custom:he,autocomplete:"diagonal-fractions"}],[/^stacked-fractions$/,()=>ge({"--un-numeric-fraction":"stacked-fractions"}),{custom:he,autocomplete:"stacked-fractions"}],["normal-nums",{"font-variant-numeric":"normal"}]];var nu={"bg-blend":"background-blend-mode","bg-clip":"-webkit-background-clip","bg-gradient":"linear-gradient","bg-image":"background-image","bg-origin":"background-origin","bg-position":"background-position","bg-repeat":"background-repeat","bg-size":"background-size","mix-blend":"mix-blend-mode",object:"object-fit","object-position":"object-position",write:"writing-mode","write-orient":"text-orientation"},Xs=[[/^(.+?)-(\$.+)$/,([,e,t])=>{let r=nu[e];if(r)return{[r]:c.cssvar(t)}}]];var Zs=[[/^view-transition-([\w-]+)$/,([,e])=>({"view-transition-name":e})]];var Js=[Tr,Xs,jr,ks,Qt,Us,er,Zt,Nt,Kt,js,Ws,Ht,Dt,Ut,Gt,xr,qt,Xt,gr,hr,_t,Hs,wr,ps,Jt,qs,rr,tr,Os,hs,jt,ws,Xe,Ye,qe,Lt,It,Ps,Ss,Bt,ys,vs,lr,nr,sr,At,Vt,ms,Pt,yr,Bs,br,Rt,Cr,ar,Ct,$r,cr,Ms,ur,Ys,Ft,fr,Sr,Rr,Er,Fs,_s,Ls,bs,gs,Ot,Ns,Ds,dr,Tt,pr,xs,Ts,kr,zt,or,ir,zs,Mt,Zs,Is,Yt].flat(1);var Qs=[...$s];var An={inherit:"inherit",current:"currentColor",transparent:"transparent",black:"#000",white:"#fff",rose:{50:"#fff1f2",100:"#ffe4e6",200:"#fecdd3",300:"#fda4af",400:"#fb7185",500:"#f43f5e",600:"#e11d48",700:"#be123c",800:"#9f1239",900:"#881337",950:"#4c0519"},pink:{50:"#fdf2f8",100:"#fce7f3",200:"#fbcfe8",300:"#f9a8d4",400:"#f472b6",500:"#ec4899",600:"#db2777",700:"#be185d",800:"#9d174d",900:"#831843",950:"#500724"},fuchsia:{50:"#fdf4ff",100:"#fae8ff",200:"#f5d0fe",300:"#f0abfc",400:"#e879f9",500:"#d946ef",600:"#c026d3",700:"#a21caf",800:"#86198f",900:"#701a75",950:"#4a044e"},purple:{50:"#faf5ff",100:"#f3e8ff",200:"#e9d5ff",300:"#d8b4fe",400:"#c084fc",500:"#a855f7",600:"#9333ea",700:"#7e22ce",800:"#6b21a8",900:"#581c87",950:"#3b0764"},violet:{50:"#f5f3ff",100:"#ede9fe",200:"#ddd6fe",300:"#c4b5fd",400:"#a78bfa",500:"#8b5cf6",600:"#7c3aed",700:"#6d28d9",800:"#5b21b6",900:"#4c1d95",950:"#2e1065"},indigo:{50:"#eef2ff",100:"#e0e7ff",200:"#c7d2fe",300:"#a5b4fc",400:"#818cf8",500:"#6366f1",600:"#4f46e5",700:"#4338ca",800:"#3730a3",900:"#312e81",950:"#1e1b4b"},blue:{50:"#eff6ff",100:"#dbeafe",200:"#bfdbfe",300:"#93c5fd",400:"#60a5fa",500:"#3b82f6",600:"#2563eb",700:"#1d4ed8",800:"#1e40af",900:"#1e3a8a",950:"#172554"},sky:{50:"#f0f9ff",100:"#e0f2fe",200:"#bae6fd",300:"#7dd3fc",400:"#38bdf8",500:"#0ea5e9",600:"#0284c7",700:"#0369a1",800:"#075985",900:"#0c4a6e",950:"#082f49"},cyan:{50:"#ecfeff",100:"#cffafe",200:"#a5f3fc",300:"#67e8f9",400:"#22d3ee",500:"#06b6d4",600:"#0891b2",700:"#0e7490",800:"#155e75",900:"#164e63",950:"#083344"},teal:{50:"#f0fdfa",100:"#ccfbf1",200:"#99f6e4",300:"#5eead4",400:"#2dd4bf",500:"#14b8a6",600:"#0d9488",700:"#0f766e",800:"#115e59",900:"#134e4a",950:"#042f2e"},emerald:{50:"#ecfdf5",100:"#d1fae5",200:"#a7f3d0",300:"#6ee7b7",400:"#34d399",500:"#10b981",600:"#059669",700:"#047857",800:"#065f46",900:"#064e3b",950:"#022c22"},green:{50:"#f0fdf4",100:"#dcfce7",200:"#bbf7d0",300:"#86efac",400:"#4ade80",500:"#22c55e",600:"#16a34a",700:"#15803d",800:"#166534",900:"#14532d",950:"#052e16"},lime:{50:"#f7fee7",100:"#ecfccb",200:"#d9f99d",300:"#bef264",400:"#a3e635",500:"#84cc16",600:"#65a30d",700:"#4d7c0f",800:"#3f6212",900:"#365314",950:"#1a2e05"},yellow:{50:"#fefce8",100:"#fef9c3",200:"#fef08a",300:"#fde047",400:"#facc15",500:"#eab308",600:"#ca8a04",700:"#a16207",800:"#854d0e",900:"#713f12",950:"#422006"},amber:{50:"#fffbeb",100:"#fef3c7",200:"#fde68a",300:"#fcd34d",400:"#fbbf24",500:"#f59e0b",600:"#d97706",700:"#b45309",800:"#92400e",900:"#78350f",950:"#451a03"},orange:{50:"#fff7ed",100:"#ffedd5",200:"#fed7aa",300:"#fdba74",400:"#fb923c",500:"#f97316",600:"#ea580c",700:"#c2410c",800:"#9a3412",900:"#7c2d12",950:"#431407"},red:{50:"#fef2f2",100:"#fee2e2",200:"#fecaca",300:"#fca5a5",400:"#f87171",500:"#ef4444",600:"#dc2626",700:"#b91c1c",800:"#991b1b",900:"#7f1d1d",950:"#450a0a"},gray:{50:"#f9fafb",100:"#f3f4f6",200:"#e5e7eb",300:"#d1d5db",400:"#9ca3af",500:"#6b7280",600:"#4b5563",700:"#374151",800:"#1f2937",900:"#111827",950:"#030712"},slate:{50:"#f8fafc",100:"#f1f5f9",200:"#e2e8f0",300:"#cbd5e1",400:"#94a3b8",500:"#64748b",600:"#475569",700:"#334155",800:"#1e293b",900:"#0f172a",950:"#020617"},zinc:{50:"#fafafa",100:"#f4f4f5",200:"#e4e4e7",300:"#d4d4d8",400:"#a1a1aa",500:"#71717a",600:"#52525b",700:"#3f3f46",800:"#27272a",900:"#18181b",950:"#09090b"},neutral:{50:"#fafafa",100:"#f5f5f5",200:"#e5e5e5",300:"#d4d4d4",400:"#a3a3a3",500:"#737373",600:"#525252",700:"#404040",800:"#262626",900:"#171717",950:"#0a0a0a"},stone:{50:"#fafaf9",100:"#f5f5f4",200:"#e7e5e4",300:"#d6d3d1",400:"#a8a29e",500:"#78716c",600:"#57534e",700:"#44403c",800:"#292524",900:"#1c1917",950:"#0c0a09"},light:{50:"#fdfdfd",100:"#fcfcfc",200:"#fafafa",300:"#f8f9fa",400:"#f6f6f6",500:"#f2f2f2",600:"#f1f3f5",700:"#e9ecef",800:"#dee2e6",900:"#dde1e3",950:"#d8dcdf"},dark:{50:"#4a4a4a",100:"#3c3c3c",200:"#323232",300:"#2d2d2d",400:"#222222",500:"#1f1f1f",600:"#1c1c1e",700:"#1b1b1b",800:"#181818",900:"#0f0f0f",950:"#080808"},get lightblue(){return this.sky},get lightBlue(){return this.sky},get warmgray(){return this.stone},get warmGray(){return this.stone},get truegray(){return this.neutral},get trueGray(){return this.neutral},get coolgray(){return this.gray},get coolGray(){return this.gray},get bluegray(){return this.slate},get blueGray(){return this.slate}};Object.values(An).forEach(e=>{typeof e!="string"&&e!==void 0&&(e.DEFAULT=e.DEFAULT||e[400],Object.keys(e).forEach(t=>{let r=+t/100;r===Math.round(r)&&(e[r]=e[t])}))});var ou={l:["-left"],r:["-right"],t:["-top"],b:["-bottom"],s:["-inline-start"],e:["-inline-end"],x:["-left","-right"],y:["-top","-bottom"],"":[""],bs:["-block-start"],be:["-block-end"],is:["-inline-start"],ie:["-inline-end"],block:["-block-start","-block-end"],inline:["-inline-start","-inline-end"]},ah={...ou,s:["-inset-inline-start"],start:["-inset-inline-start"],e:["-inset-inline-end"],end:["-inset-inline-end"],bs:["-inset-block-start"],be:["-inset-block-end"],is:["-inset-inline-start"],ie:["-inset-inline-end"],block:["-inset-block-start","-inset-block-end"],inline:["-inset-inline-start","-inset-inline-end"]};var iu={x:["-x"],y:["-y"],z:["-z"],"":["-x","-y"]},su=["x","y","z"],ea=["top","top center","top left","top right","bottom","bottom center","bottom left","bottom right","left","left center","left top","left bottom","right","right center","right top","right bottom","center","center top","center bottom","center left","center right","center center"],ot=Object.assign({},...ea.map(e=>({[e.replace(/ /,"-")]:e})),...ea.map(e=>({[e.replace(/\b(\w)\w+/g,"$1").replace(/ /,"")]:e}))),On=["inherit","initial","revert","revert-layer","unset"],au=/^(calc|clamp|min|max)\s*\((.+)\)(.*)/;var Vn=/^(-?\d*(?:\.\d+)?)(px|pt|pc|%|r?(?:em|ex|lh|cap|ch|ic)|(?:[sld]?v|cq)(?:[whib]|min|max)|in|cm|mm|rpx)?$/i,na=/^(-?\d*(?:\.\d+)?)$/,oa=/^(px|[sld]?v[wh])$/i,ia={px:1,vw:100,vh:100,svw:100,svh:100,dvw:100,dvh:100,lvh:100,lvw:100},sa=/^\[(color|image|length|size|position|quoted|string):/i,lu=/,(?![^()]*\))/g,cu=["color","border-color","background-color","outline-color","text-decoration-color","flex-grow","flex","flex-shrink","caret-color","font","gap","opacity","visibility","z-index","font-weight","zoom","text-shadow","transform","box-shadow","border","background-position","left","right","top","bottom","object-position","max-height","min-height","max-width","min-width","height","width","border-width","margin","padding","outline-width","outline-offset","font-size","line-height","text-indent","vertical-align","border-spacing","letter-spacing","word-spacing","stroke","filter","backdrop-filter","fill","mask","mask-size","mask-border","clip-path","clip","border-radius"];function Q(e){return+e.toFixed(10)}function uu(e){let t=e.match(Vn);if(!t)return;let[,r,n]=t,o=Number.parseFloat(r);if(n&&!Number.isNaN(o))return`${Q(o)}${n}`}function fu(e){if(e==="auto"||e==="a")return"auto"}function pu(e){if(!e)return;if(oa.test(e))return`${ia[e]}${e}`;let t=e.match(Vn);if(!t)return;let[,r,n]=t,o=Number.parseFloat(r);if(!Number.isNaN(o))return o===0?"0":n?`${Q(o)}${n}`:`${Q(o/4)}rem`}function du(e){if(oa.test(e))return`${ia[e]}${e}`;let t=e.match(Vn);if(!t)return;let[,r,n]=t,o=Number.parseFloat(r);if(!Number.isNaN(o))return n?`${Q(o)}${n}`:`${Q(o)}px`}function mu(e){if(!na.test(e))return;let t=Number.parseFloat(e);if(!Number.isNaN(t))return Q(t)}function hu(e){if(e.endsWith("%")&&(e=e.slice(0,-1)),!na.test(e))return;let t=Number.parseFloat(e);if(!Number.isNaN(t))return`${Q(t/100)}`}function gu(e){if(!e)return;if(e==="full")return"100%";let[t,r]=e.split("/"),n=Number.parseFloat(t)/Number.parseFloat(r);if(!Number.isNaN(n))return n===0?"0":`${Q(n*100)}%`}function Fr(e,t){if(e&&e.startsWith("[")&&e.endsWith("]")){let r,n,o=e.match(sa);if(o?(t||(n=o[1]),r=e.slice(o[0].length,-1)):r=e.slice(1,-1),!r||r==='=""')return;r.startsWith("--")&&(r=`var(${r})`);let i=0;for(let s of r)if(s==="[")i+=1;else if(s==="]"&&(i-=1,i<0))return;if(i)return;switch(n){case"string":return r.replace(/(^|[^\\])_/g,"$1 ").replace(/\\_/g,"_");case"quoted":return r.replace(/(^|[^\\])_/g,"$1 ").replace(/\\_/g,"_").replace(/(["\\])/g,"\\$1").replace(/^(.+)$/,'"$1"')}return r.replace(/(url\(.*?\))/g,s=>s.replace(/_/g,"\\_")).replace(/(^|[^\\])_/g,"$1 ").replace(/\\_/g,"_").replace(/(?:calc|clamp|max|min)\((.*)/g,s=>{let l=[];return s.replace(/var\((--.+?)[,)]/g,(a,u)=>(l.push(u),a.replace(u,"--un-calc"))).replace(/(-?\d*\.?\d(?!-\d.+[,)](?![^+\-/*])\D)(?:%|[a-z]+)?|\))([+\-/*])/g,"$1 $2 ").replace(/--un-calc/g,()=>l.shift())})}}function bu(e){return Fr(e)}function xu(e){return Fr(e,"color")}function yu(e){return Fr(e,"length")}function vu(e){return Fr(e,"position")}function wu(e){if(/^\$[^\s'"`;{}]/.test(e)){let[t,r]=e.slice(1).split(",");return`var(--${se(t)}${r?`, ${r}`:""})`}}function ku(e){let t=e.match(/^(-?[0-9.]+)(s|ms)?$/i);if(!t)return;let[,r,n]=t,o=Number.parseFloat(r);if(!Number.isNaN(o))return o===0&&!n?"0s":n?`${Q(o)}${n}`:`${Q(o)}ms`}function $u(e){let t=e.match(/^(-?[0-9.]+)(deg|rad|grad|turn)?$/i);if(!t)return;let[,r,n]=t,o=Number.parseFloat(r);if(!Number.isNaN(o))return o===0?"0":n?`${Q(o)}${n}`:`${Q(o)}deg`}function Su(e){if(On.includes(e))return e}function Cu(e){if(e.split(",").every(t=>cu.includes(t)))return e}function Ru(e){if(["top","left","right","bottom","center"].includes(e))return e}var Eu={__proto__:null,auto:fu,bracket:bu,bracketOfColor:xu,bracketOfLength:yu,bracketOfPosition:vu,cssvar:wu,degree:$u,fraction:gu,global:Su,number:mu,numberWithUnit:uu,percent:hu,position:Ru,properties:Cu,px:du,rem:pu,time:ku},Tu=xt(Eu),W=Tu;function ta(e,t,r="colors"){let n=e[r],o=-1;for(let i of t){if(o+=1,n&&typeof n!="string"){let s=t.slice(o).join("-").replace(/(-[a-z])/g,l=>l.slice(1).toUpperCase());if(n[s])return n[s];if(n[i]){n=n[i];continue}}return}return n}function ra(e,t,r){return ta(e,t,r)||ta(e,t,"colors")}function ju(e,t){let[r,n]=de(e,"[","]",["/",":"])??[];if(r!=null){let o=(r.match(sa)??[])[1];if(o==null||o===t)return[r,n]}}function zu(e,t,r){let n=ju(e,"color");if(!n)return;let[o,i]=n,s=o.replace(/([a-z])(\d)/g,"$1-$2").split(/-/g),[l]=s;if(!l)return;let a,u=W.bracketOfColor(o),f=u||o;if(W.numberWithUnit(f))return;if(/^#[\da-f]+$/i.test(f)?a=f:/^hex-[\da-fA-F]+$/.test(f)?a=`#${f.slice(4)}`:o.startsWith("$")&&(a=W.cssvar(o)),a=a||u,!a){let m=ra(t,[o],r);typeof m=="string"&&(a=m)}let p="DEFAULT";if(!a){let m=s,d,[h]=s.slice(-1);/^\d+$/.test(h)&&(p=d=h,m=s.slice(0,-1));let g=ra(t,m,r);typeof g=="object"?a=g[d??p]:typeof g=="string"&&!d&&(a=g)}return{opacity:i,name:l,no:p,color:a,cssColor:Y(a),alpha:W.bracket.cssvar.percent(i??"")}}function Pn(e,t,r,n){return([,o],{theme:i,generator:s})=>{let l=zu(o,i,r);if(!l)return;let{alpha:a,color:u,cssColor:f}=l,m=s.config.envMode==="dev"&&u?` /* ${u} */`:"",d={};if(f)if(a!=null)d[e]=M(f,a)+m;else{let h=`--un-${t}-opacity`,g=M(f,`var(${h})`);g.includes(h)&&(d[h]=ae(f)),d[e]=g+m}else if(u)if(a!=null)d[e]=M(u,a)+m;else{let h=`--un-${t}-opacity`,g=M(u,`var(${h})`);g.includes(h)&&(d[h]=1),d[e]=g+m}if(n?.(d)!==!1)return d}}function be(e,t){return On.map(r=>[`${e}-${r}`,{[t??e]:r}])}function aa(e){return e!=null&&au.test(e)}function _r(e,t,r){let n=t.split(lu);return e||!e&&n.length===1?iu[e].map(o=>[`--un-${r}${o}`,t]):n.map((o,i)=>[`--un-${r}-${su[i]}`,o])}var Au=["auto","default","none","context-menu","help","pointer","progress","wait","cell","crosshair","text","vertical-text","alias","copy","move","no-drop","not-allowed","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out"];var pa=" ";var ph=[["visible",{visibility:"visible"}],["invisible",{visibility:"hidden"}],["backface-visible",{"backface-visibility":"visible"}],["backface-hidden",{"backface-visibility":"hidden"}],...be("backface","backface-visibility")],dh=[[/^cursor-(.+)$/,([,e])=>({cursor:W.bracket.cssvar.global(e)})],...Au.map(e=>[`cursor-${e}`,{cursor:e}])];var mh=[["pointer-events-auto",{"pointer-events":"auto"}],["pointer-events-none",{"pointer-events":"none"}],...be("pointer-events")],hh=[["resize-x",{resize:"horizontal"}],["resize-y",{resize:"vertical"}],["resize",{resize:"both"}],["resize-none",{resize:"none"}],...be("resize")],gh=[["select-auto",{"-webkit-user-select":"auto","user-select":"auto"}],["select-all",{"-webkit-user-select":"all","user-select":"all"}],["select-text",{"-webkit-user-select":"text","user-select":"text"}],["select-none",{"-webkit-user-select":"none","user-select":"none"}],...be("select","user-select")];var bh=[[/^intrinsic-size-(.+)$/,([,e])=>({"contain-intrinsic-size":W.bracket.cssvar.global.fraction.rem(e)}),{autocomplete:"intrinsic-size-<num>"}],["content-visibility-visible",{"content-visibility":"visible"}],["content-visibility-hidden",{"content-visibility":"hidden"}],["content-visibility-auto",{"content-visibility":"auto"}],...be("content-visibility")];var xh=[["case-upper",{"text-transform":"uppercase"}],["case-lower",{"text-transform":"lowercase"}],["case-capital",{"text-transform":"capitalize"}],["case-normal",{"text-transform":"none"}],...be("case","text-transform")];var Mn={"--un-ring-inset":pa,"--un-ring-offset-width":"0px","--un-ring-offset-color":"#fff","--un-ring-width":"0px","--un-ring-color":"rgb(147 197 253 / 0.5)","--un-shadow":"0 0 rgb(0 0 0 / 0)"},Ou=Object.keys(Mn),yh=[[/^ring(?:-(.+))?$/,([,e],{theme:t})=>{let r=t.ringWidth?.[e||"DEFAULT"]??W.px(e||"1");if(r)return{"--un-ring-width":r,"--un-ring-offset-shadow":"var(--un-ring-inset) 0 0 0 var(--un-ring-offset-width) var(--un-ring-offset-color)","--un-ring-shadow":"var(--un-ring-inset) 0 0 0 calc(var(--un-ring-width) + var(--un-ring-offset-width)) var(--un-ring-color)","box-shadow":"var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow)"}},{custom:{preflightKeys:Ou},autocomplete:"ring-$ringWidth"}],[/^ring-(?:width-|size-)(.+)$/,da,{autocomplete:"ring-(width|size)-$lineWidth"}],["ring-offset",{"--un-ring-offset-width":"1px"}],[/^ring-offset-(?:width-|size-)?(.+)$/,([,e],{theme:t})=>({"--un-ring-offset-width":t.lineWidth?.[e]??W.bracket.cssvar.px(e)}),{autocomplete:"ring-offset-(width|size)-$lineWidth"}],[/^ring-(.+)$/,Vu,{autocomplete:"ring-$colors"}],[/^ring-op(?:acity)?-?(.+)$/,([,e])=>({"--un-ring-opacity":W.bracket.percent.cssvar(e)}),{autocomplete:"ring-(op|opacity)-<percent>"}],[/^ring-offset-(.+)$/,Pn("--un-ring-offset-color","ring-offset","borderColor"),{autocomplete:"ring-offset-$colors"}],[/^ring-offset-op(?:acity)?-?(.+)$/,([,e])=>({"--un-ring-offset-opacity":W.bracket.percent.cssvar(e)}),{autocomplete:"ring-offset-(op|opacity)-<percent>"}],["ring-inset",{"--un-ring-inset":"inset"}]];function da([,e],{theme:t}){return{"--un-ring-width":t.ringWidth?.[e]??W.bracket.cssvar.px(e)}}function Vu(e,t){return aa(W.bracket(e[1]))?da(e,t):Pn("--un-ring-color","ring","borderColor")(e,t)}var Fn={"--un-ring-offset-shadow":"0 0 rgb(0 0 0 / 0)","--un-ring-shadow":"0 0 rgb(0 0 0 / 0)","--un-shadow-inset":pa,"--un-shadow":"0 0 rgb(0 0 0 / 0)"},vh=Object.keys(Fn);var Lr=["translate","rotate","scale"],Pu=["translateX(var(--un-translate-x))","translateY(var(--un-translate-y))","rotate(var(--un-rotate))","rotateZ(var(--un-rotate-z))","skewX(var(--un-skew-x))","skewY(var(--un-skew-y))","scaleX(var(--un-scale-x))","scaleY(var(--un-scale-y))"].join(" "),Pe=["translateX(var(--un-translate-x))","translateY(var(--un-translate-y))","translateZ(var(--un-translate-z))","rotate(var(--un-rotate))","rotateX(var(--un-rotate-x))","rotateY(var(--un-rotate-y))","rotateZ(var(--un-rotate-z))","skewX(var(--un-skew-x))","skewY(var(--un-skew-y))","scaleX(var(--un-scale-x))","scaleY(var(--un-scale-y))","scaleZ(var(--un-scale-z))"].join(" "),Mu=["translate3d(var(--un-translate-x), var(--un-translate-y), var(--un-translate-z))","rotate(var(--un-rotate))","rotateX(var(--un-rotate-x))","rotateY(var(--un-rotate-y))","rotateZ(var(--un-rotate-z))","skewX(var(--un-skew-x))","skewY(var(--un-skew-y))","scaleX(var(--un-scale-x))","scaleY(var(--un-scale-y))","scaleZ(var(--un-scale-z))"].join(" "),_n={"--un-rotate":0,"--un-rotate-x":0,"--un-rotate-y":0,"--un-rotate-z":0,"--un-scale-x":1,"--un-scale-y":1,"--un-scale-z":1,"--un-skew-x":0,"--un-skew-y":0,"--un-translate-x":0,"--un-translate-y":0,"--un-translate-z":0},ie=Object.keys(_n),wh=[[/^(?:transform-)?origin-(.+)$/,([,e])=>({"transform-origin":ot[e]??W.bracket.cssvar(e)}),{autocomplete:[`transform-origin-(${Object.keys(ot).join("|")})`,`origin-(${Object.keys(ot).join("|")})`]}],[/^(?:transform-)?perspect(?:ive)?-(.+)$/,([,e])=>{let t=W.bracket.cssvar.px.numberWithUnit(e);if(t!=null)return{"-webkit-perspective":t,perspective:t}}],[/^(?:transform-)?perspect(?:ive)?-origin-(.+)$/,([,e])=>{let t=W.bracket.cssvar(e)??(e.length>=3?ot[e]:void 0);if(t!=null)return{"-webkit-perspective-origin":t,"perspective-origin":t}}],[/^(?:transform-)?translate-()(.+)$/,la,{custom:{preflightKeys:ie}}],[/^(?:transform-)?translate-([xyz])-(.+)$/,la,{custom:{preflightKeys:ie}}],[/^(?:transform-)?rotate-()(.+)$/,ua,{custom:{preflightKeys:ie}}],[/^(?:transform-)?rotate-([xyz])-(.+)$/,ua,{custom:{preflightKeys:ie}}],[/^(?:transform-)?skew-()(.+)$/,fa,{custom:{preflightKeys:ie}}],[/^(?:transform-)?skew-([xy])-(.+)$/,fa,{custom:{preflightKeys:ie},autocomplete:["transform-skew-(x|y)-<percent>","skew-(x|y)-<percent>"]}],[/^(?:transform-)?scale-()(.+)$/,ca,{custom:{preflightKeys:ie}}],[/^(?:transform-)?scale-([xyz])-(.+)$/,ca,{custom:{preflightKeys:ie},autocomplete:[`transform-(${Lr.join("|")})-<percent>`,`transform-(${Lr.join("|")})-(x|y|z)-<percent>`,`(${Lr.join("|")})-<percent>`,`(${Lr.join("|")})-(x|y|z)-<percent>`]}],[/^(?:transform-)?preserve-3d$/,()=>({"transform-style":"preserve-3d"})],[/^(?:transform-)?preserve-flat$/,()=>({"transform-style":"flat"})],["transform",{transform:Pe},{custom:{preflightKeys:ie}}],["transform-cpu",{transform:Pu},{custom:{preflightKeys:["--un-translate-x","--un-translate-y","--un-rotate","--un-rotate-z","--un-skew-x","--un-skew-y","--un-scale-x","--un-scale-y"]}}],["transform-gpu",{transform:Mu},{custom:{preflightKeys:ie}}],["transform-none",{transform:"none"}],...be("transform")];function la([,e,t],{theme:r}){let n=r.spacing?.[t]??W.bracket.cssvar.fraction.rem(t);if(n!=null)return[..._r(e,n,"translate"),["transform",Pe]]}function ca([,e,t]){let r=W.bracket.cssvar.fraction.percent(t);if(r!=null)return[..._r(e,r,"scale"),["transform",Pe]]}function ua([,e="",t]){let r=W.bracket.cssvar.degree(t);if(r!=null)return e?{"--un-rotate":0,[`--un-rotate-${e}`]:r,transform:Pe}:{"--un-rotate-x":0,"--un-rotate-y":0,"--un-rotate-z":0,"--un-rotate":r,transform:Pe}}function fa([,e,t]){let r=W.bracket.cssvar.degree(t);if(r!=null)return[..._r(e,r,"skew"),["transform",Pe]]}var ma={DEFAULT:"8px",0:"0",sm:"4px",md:"12px",lg:"16px",xl:"24px","2xl":"40px","3xl":"64px"},ha={DEFAULT:["0 1px 2px rgb(0 0 0 / 0.1)","0 1px 1px rgb(0 0 0 / 0.06)"],sm:"0 1px 1px rgb(0 0 0 / 0.05)",md:["0 4px 3px rgb(0 0 0 / 0.07)","0 2px 2px rgb(0 0 0 / 0.06)"],lg:["0 10px 8px rgb(0 0 0 / 0.04)","0 4px 3px rgb(0 0 0 / 0.1)"],xl:["0 20px 13px rgb(0 0 0 / 0.03)","0 8px 5px rgb(0 0 0 / 0.08)"],"2xl":"0 25px 25px rgb(0 0 0 / 0.15)",none:"0 0 rgb(0 0 0 / 0)"},ga={sans:["ui-sans-serif","system-ui","-apple-system","BlinkMacSystemFont",'"Segoe UI"',"Roboto",'"Helvetica Neue"',"Arial",'"Noto Sans"',"sans-serif",'"Apple Color Emoji"','"Segoe UI Emoji"','"Segoe UI Symbol"','"Noto Color Emoji"'].join(","),serif:["ui-serif","Georgia","Cambria",'"Times New Roman"',"Times","serif"].join(","),mono:["ui-monospace","SFMono-Regular","Menlo","Monaco","Consolas",'"Liberation Mono"','"Courier New"',"monospace"].join(",")},ba={xs:["0.75rem","1rem"],sm:["0.875rem","1.25rem"],base:["1rem","1.5rem"],lg:["1.125rem","1.75rem"],xl:["1.25rem","1.75rem"],"2xl":["1.5rem","2rem"],"3xl":["1.875rem","2.25rem"],"4xl":["2.25rem","2.5rem"],"5xl":["3rem","1"],"6xl":["3.75rem","1"],"7xl":["4.5rem","1"],"8xl":["6rem","1"],"9xl":["8rem","1"]},xa={DEFAULT:"1.5rem",xs:"0.5rem",sm:"1rem",md:"1.5rem",lg:"2rem",xl:"2.5rem","2xl":"3rem","3xl":"4rem"},ya={DEFAULT:"1.5rem",none:"0",sm:"thin",md:"medium",lg:"thick"},va={DEFAULT:["0 0 1px rgb(0 0 0 / 0.2)","0 0 1px rgb(1 0 5 / 0.1)"],none:"0 0 rgb(0 0 0 / 0)",sm:"1px 1px 3px rgb(36 37 47 / 0.25)",md:["0 1px 2px rgb(30 29 39 / 0.19)","1px 2px 4px rgb(54 64 147 / 0.18)"],lg:["3px 3px 6px rgb(0 0 0 / 0.26)","0 0 5px rgb(15 3 86 / 0.22)"],xl:["1px 1px 3px rgb(0 0 0 / 0.29)","2px 4px 7px rgb(73 64 125 / 0.35)"]},wa={none:"1",tight:"1.25",snug:"1.375",normal:"1.5",relaxed:"1.625",loose:"2"},Wn={tighter:"-0.05em",tight:"-0.025em",normal:"0em",wide:"0.025em",wider:"0.05em",widest:"0.1em"},ka={thin:"100",extralight:"200",light:"300",normal:"400",medium:"500",semibold:"600",bold:"700",extrabold:"800",black:"900"},$a=Wn,Bn={sm:"640px",md:"768px",lg:"1024px",xl:"1280px","2xl":"1536px"},Sa={...Bn},Ca={DEFAULT:"1px",none:"0"},Ra={DEFAULT:"1rem",none:"0",xs:"0.75rem",sm:"0.875rem",lg:"1.125rem",xl:"1.25rem","2xl":"1.5rem","3xl":"1.875rem","4xl":"2.25rem","5xl":"3rem","6xl":"3.75rem","7xl":"4.5rem","8xl":"6rem","9xl":"8rem"},Ea={DEFAULT:"150ms",none:"0s",75:"75ms",100:"100ms",150:"150ms",200:"200ms",300:"300ms",500:"500ms",700:"700ms",1e3:"1000ms"},Ta={DEFAULT:"0.25rem",none:"0",sm:"0.125rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem","3xl":"1.5rem",full:"9999px"},ja={DEFAULT:["var(--un-shadow-inset) 0 1px 3px 0 rgb(0 0 0 / 0.1)","var(--un-shadow-inset) 0 1px 2px -1px rgb(0 0 0 / 0.1)"],none:"0 0 rgb(0 0 0 / 0)",sm:"var(--un-shadow-inset) 0 1px 2px 0 rgb(0 0 0 / 0.05)",md:["var(--un-shadow-inset) 0 4px 6px -1px rgb(0 0 0 / 0.1)","var(--un-shadow-inset) 0 2px 4px -2px rgb(0 0 0 / 0.1)"],lg:["var(--un-shadow-inset) 0 10px 15px -3px rgb(0 0 0 / 0.1)","var(--un-shadow-inset) 0 4px 6px -4px rgb(0 0 0 / 0.1)"],xl:["var(--un-shadow-inset) 0 20px 25px -5px rgb(0 0 0 / 0.1)","var(--un-shadow-inset) 0 8px 10px -6px rgb(0 0 0 / 0.1)"],"2xl":"var(--un-shadow-inset) 0 25px 50px -12px rgb(0 0 0 / 0.25)",inner:"inset 0 2px 4px 0 rgb(0 0 0 / 0.05)"},za={DEFAULT:"3px",none:"0"},Aa={auto:"auto"},Oa={mouse:"(hover) and (pointer: fine)"},Va={..._n,...Fn,...Mn},Me={xs:"20rem",sm:"24rem",md:"28rem",lg:"32rem",xl:"36rem","2xl":"42rem","3xl":"48rem","4xl":"56rem","5xl":"64rem","6xl":"72rem","7xl":"80rem",prose:"65ch"},Ln={auto:"auto",...Me,screen:"100vw"},it={none:"none",...Me,screen:"100vw"},Un={auto:"auto",...Me,screen:"100vh"},st={none:"none",...Me,screen:"100vh"},Pa={...Me},Fu={DEFAULT:"cubic-bezier(0.4, 0, 0.2, 1)",linear:"linear",in:"cubic-bezier(0.4, 0, 1, 1)",out:"cubic-bezier(0, 0, 0.2, 1)","in-out":"cubic-bezier(0.4, 0, 0.2, 1)"},_u={none:"none",all:"all",colors:["color","background-color","border-color","text-decoration-color","fill","stroke"].join(","),opacity:"opacity",shadow:"box-shadow",transform:"transform",get DEFAULT(){return[this.colors,"opacity","box-shadow","transform","filter","backdrop-filter"].join(",")}},Nn={width:Ln,height:Un,maxWidth:it,maxHeight:st,minWidth:it,minHeight:st,inlineSize:Ln,blockSize:Un,maxInlineSize:it,maxBlockSize:st,minInlineSize:it,minBlockSize:st,colors:An,fontFamily:ga,fontSize:ba,fontWeight:ka,breakpoints:Bn,verticalBreakpoints:Sa,borderRadius:Ta,lineHeight:wa,letterSpacing:Wn,wordSpacing:$a,boxShadow:ja,textIndent:xa,textShadow:va,textStrokeWidth:ya,blur:ma,dropShadow:ha,easing:Fu,transitionProperty:_u,lineWidth:Ca,spacing:Ra,duration:Ea,ringWidth:za,preflightBase:Va,containers:Pa,zIndex:Aa,media:Oa};var Ma={...Nn,aria:{busy:'busy="true"',checked:'checked="true"',disabled:'disabled="true"',expanded:'expanded="true"',hidden:'hidden="true"',pressed:'pressed="true"',readonly:'readonly="true"',required:'required="true"',selected:'selected="true"'},animation:{keyframes:{pulse:"{0%, 100% {opacity:1} 50% {opacity:.5}}",bounce:"{0%, 100% {transform:translateY(-25%);animation-timing-function:cubic-bezier(0.8,0,1,1)} 50% {transform:translateY(0);animation-timing-function:cubic-bezier(0,0,0.2,1)}}",spin:"{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}",ping:"{0%{transform:scale(1);opacity:1}75%,100%{transform:scale(2);opacity:0}}","bounce-alt":"{from,20%,53%,80%,to{animation-timing-function:cubic-bezier(0.215,0.61,0.355,1);transform:translate3d(0,0,0)}40%,43%{animation-timing-function:cubic-bezier(0.755,0.05,0.855,0.06);transform:translate3d(0,-30px,0)}70%{animation-timing-function:cubic-bezier(0.755,0.05,0.855,0.06);transform:translate3d(0,-15px,0)}90%{transform:translate3d(0,-4px,0)}}",flash:"{from,50%,to{opacity:1}25%,75%{opacity:0}}","pulse-alt":"{from{transform:scale3d(1,1,1)}50%{transform:scale3d(1.05,1.05,1.05)}to{transform:scale3d(1,1,1)}}","rubber-band":"{from{transform:scale3d(1,1,1)}30%{transform:scale3d(1.25,0.75,1)}40%{transform:scale3d(0.75,1.25,1)}50%{transform:scale3d(1.15,0.85,1)}65%{transform:scale3d(0.95,1.05,1)}75%{transform:scale3d(1.05,0.95,1)}to{transform:scale3d(1,1,1)}}","shake-x":"{from,to{transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{transform:translate3d(-10px,0,0)}20%,40%,60%,80%{transform:translate3d(10px,0,0)}}","shake-y":"{from,to{transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{transform:translate3d(0,-10px,0)}20%,40%,60%,80%{transform:translate3d(0,10px,0)}}","head-shake":"{0%{transform:translateX(0)}6.5%{transform:translateX(-6px) rotateY(-9deg)}18.5%{transform:translateX(5px) rotateY(7deg)}31.5%{transform:translateX(-3px) rotateY(-5deg)}43.5%{transform:translateX(2px) rotateY(3deg)}50%{transform:translateX(0)}}",swing:"{20%{transform:rotate3d(0,0,1,15deg)}40%{transform:rotate3d(0,0,1,-10deg)}60%{transform:rotate3d(0,0,1,5deg)}80%{transform:rotate3d(0,0,1,-5deg)}to{transform:rotate3d(0,0,1,0deg)}}",tada:"{from{transform:scale3d(1,1,1)}10%,20%{transform:scale3d(0.9,0.9,0.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}to{transform:scale3d(1,1,1)}}",wobble:"{from{transform:translate3d(0,0,0)}15%{transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}to{transform:translate3d(0,0,0)}}",jello:"{from,11.1%,to{transform:translate3d(0,0,0)}22.2%{transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{transform:skewX(6.25deg) skewY(6.25deg)}44.4%{transform:skewX(-3.125deg)skewY(-3.125deg)}55.5%{transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{transform:skewX(-0.78125deg) skewY(-0.78125deg)}77.7%{transform:skewX(0.390625deg) skewY(0.390625deg)}88.8%{transform:skewX(-0.1953125deg) skewY(-0.1953125deg)}}","heart-beat":"{0%{transform:scale(1)}14%{transform:scale(1.3)}28%{transform:scale(1)}42%{transform:scale(1.3)}70%{transform:scale(1)}}",hinge:"{0%{transform-origin:top left;animation-timing-function:ease-in-out}20%,60%{transform:rotate3d(0,0,1,80deg);transform-origin:top left;animation-timing-function:ease-in-out}40%,80%{transform:rotate3d(0,0,1,60deg);transform-origin:top left;animation-timing-function:ease-in-out}to{transform:translate3d(0,700px,0);opacity:0}}","jack-in-the-box":"{from{opacity:0;transform-origin:center bottom;transform:scale(0.1) rotate(30deg)}50%{transform:rotate(-10deg)}70%{transform:rotate(3deg)}to{transform:scale(1)}}","light-speed-in-left":"{from{opacity:0;transform:translate3d(-100%,0,0) skewX(-30deg)}60%{opacity:1;transform:skewX(20deg)}80%{transform:skewX(-5deg)}to{transform:translate3d(0,0,0)}}","light-speed-in-right":"{from{opacity:0;transform:translate3d(100%,0,0) skewX(-30deg)}60%{opacity:1;transform:skewX(20deg)}80%{transform:skewX(-5deg)}to{transform:translate3d(0,0,0)}}","light-speed-out-left":"{from{opacity:1}to{opacity:0;transform:translate3d(-100%,0,0) skewX(30deg)}}","light-speed-out-right":"{from{opacity:1}to{opacity:0;transform:translate3d(100%,0,0) skewX(30deg)}}",flip:"{from{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,0) rotate3d(0,1,0,-360deg);animation-timing-function:ease-out}40%{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);animation-timing-function:ease-out}50%{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);animation-timing-function:ease-in}80%{transform:perspective(400px) scale3d(0.95,0.95,0.95) translate3d(0,0,0) rotate3d(0,1,0,0deg);animation-timing-function:ease-in}to{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,0) rotate3d(0,1,0,0deg);animation-timing-function:ease-in}}","flip-in-x":"{from{transform:perspective(400px) rotate3d(1,0,0,90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(1,0,0,-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{transform:perspective(400px) rotate3d(1,0,0,-5deg)}to{transform:perspective(400px)}}","flip-in-y":"{from{transform:perspective(400px) rotate3d(0,1,0,90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(0,1,0,-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{transform:perspective(400px) rotate3d(0,1,0,-5deg)}to{transform:perspective(400px)}}","flip-out-x":"{from{transform:perspective(400px)}30%{transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}to{transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}","flip-out-y":"{from{transform:perspective(400px)}30%{transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}to{transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}","rotate-in":"{from{transform-origin:center;transform:rotate3d(0,0,1,-200deg);opacity:0}to{transform-origin:center;transform:translate3d(0,0,0);opacity:1}}","rotate-in-down-left":"{from{transform-origin:left bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}to{transform-origin:left bottom;transform:translate3d(0,0,0);opacity:1}}","rotate-in-down-right":"{from{transform-origin:right bottom;transform:rotate3d(0,0,1,45deg);opacity:0}to{transform-origin:right bottom;transform:translate3d(0,0,0);opacity:1}}","rotate-in-up-left":"{from{transform-origin:left top;transform:rotate3d(0,0,1,45deg);opacity:0}to{transform-origin:left top;transform:translate3d(0,0,0);opacity:1}}","rotate-in-up-right":"{from{transform-origin:right bottom;transform:rotate3d(0,0,1,-90deg);opacity:0}to{transform-origin:right bottom;transform:translate3d(0,0,0);opacity:1}}","rotate-out":"{from{transform-origin:center;opacity:1}to{transform-origin:center;transform:rotate3d(0,0,1,200deg);opacity:0}}","rotate-out-down-left":"{from{transform-origin:left bottom;opacity:1}to{transform-origin:left bottom;transform:rotate3d(0,0,1,45deg);opacity:0}}","rotate-out-down-right":"{from{transform-origin:right bottom;opacity:1}to{transform-origin:right bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}}","rotate-out-up-left":"{from{transform-origin:left bottom;opacity:1}to{transform-origin:left bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}}","rotate-out-up-right":"{from{transform-origin:right bottom;opacity:1}to{transform-origin:left bottom;transform:rotate3d(0,0,1,90deg);opacity:0}}","roll-in":"{from{opacity:0;transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}to{opacity:1;transform:translate3d(0,0,0)}}","roll-out":"{from{opacity:1}to{opacity:0;transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}","zoom-in":"{from{opacity:0;transform:scale3d(0.3,0.3,0.3)}50%{opacity:1}}","zoom-in-down":"{from{opacity:0;transform:scale3d(0.1,0.1,0.1) translate3d(0,-1000px,0);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}60%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(0,60px,0);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}","zoom-in-left":"{from{opacity:0;transform:scale3d(0.1,0.1,0.1) translate3d(-1000px,0,0);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}60%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(10px,0,0);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}","zoom-in-right":"{from{opacity:0;transform:scale3d(0.1,0.1,0.1) translate3d(1000px,0,0);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}60%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(-10px,0,0);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}","zoom-in-up":"{from{opacity:0;transform:scale3d(0.1,0.1,0.1) translate3d(0,1000px,0);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}60%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(0,-60px,0);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}","zoom-out":"{from{opacity:1}50%{opacity:0;transform:scale3d(0.3,0.3,0.3)}to{opacity:0}}","zoom-out-down":"{40%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(0,-60px,0);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}to{opacity:0;transform:scale3d(0.1,0.1,0.1) translate3d(0,2000px,0);transform-origin:center bottom;animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}","zoom-out-left":"{40%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(42px,0,0)}to{opacity:0;transform:scale(0.1) translate3d(-2000px,0,0);transform-origin:left center}}","zoom-out-right":"{40%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(-42px,0,0)}to{opacity:0;transform:scale(0.1) translate3d(2000px,0,0);transform-origin:right center}}","zoom-out-up":"{40%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(0,60px,0);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}to{opacity:0;transform:scale3d(0.1,0.1,0.1) translate3d(0,-2000px,0);transform-origin:center bottom;animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}","bounce-in":"{from,20%,40%,60%,80%,to{animation-timing-function:ease-in-out}0%{opacity:0;transform:scale3d(0.3,0.3,0.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(0.9,0.9,0.9)}60%{transform:scale3d(1.03,1.03,1.03);opacity:1}80%{transform:scale3d(0.97,0.97,0.97)}to{opacity:1;transform:scale3d(1,1,1)}}","bounce-in-down":"{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215,0.61,0.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:translate3d(0,0,0)}}","bounce-in-left":"{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215,0.61,0.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:translate3d(0,0,0)}}","bounce-in-right":"{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215,0.61,0.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:translate3d(0,0,0)}}","bounce-in-up":"{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215,0.61,0.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translate3d(0,0,0)}}","bounce-out":"{20%{transform:scale3d(0.9,0.9,0.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(0.3,0.3,0.3)}}","bounce-out-down":"{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}","bounce-out-left":"{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}","bounce-out-right":"{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}","bounce-out-up":"{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}","slide-in-down":"{from{transform:translate3d(0,-100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}","slide-in-left":"{from{transform:translate3d(-100%,0,0);visibility:visible}to{transform:translate3d(0,0,0)}}","slide-in-right":"{from{transform:translate3d(100%,0,0);visibility:visible}to{transform:translate3d(0,0,0)}}","slide-in-up":"{from{transform:translate3d(0,100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}","slide-out-down":"{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(0,100%,0)}}","slide-out-left":"{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(-100%,0,0)}}","slide-out-right":"{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(100%,0,0)}}","slide-out-up":"{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(0,-100%,0)}}","fade-in":"{from{opacity:0}to{opacity:1}}","fade-in-down":"{from{opacity:0;transform:translate3d(0,-100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}","fade-in-down-big":"{from{opacity:0;transform:translate3d(0,-2000px,0)}to{opacity:1;transform:translate3d(0,0,0)}}","fade-in-left":"{from{opacity:0;transform:translate3d(-100%,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}","fade-in-left-big":"{from{opacity:0;transform:translate3d(-2000px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}","fade-in-right":"{from{opacity:0;transform:translate3d(100%,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}","fade-in-right-big":"{from{opacity:0;transform:translate3d(2000px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}","fade-in-up":"{from{opacity:0;transform:translate3d(0,100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}","fade-in-up-big":"{from{opacity:0;transform:translate3d(0,2000px,0)}to{opacity:1;transform:translate3d(0,0,0)}}","fade-in-top-left":"{from{opacity:0;transform:translate3d(-100%,-100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}","fade-in-top-right":"{from{opacity:0;transform:translate3d(100%,-100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}","fade-in-bottom-left":"{from{opacity:0;transform:translate3d(-100%,100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}","fade-in-bottom-right":"{from{opacity:0;transform:translate3d(100%,100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}","fade-out":"{from{opacity:1}to{opacity:0}}","fade-out-down":"{from{opacity:1}to{opacity:0;transform:translate3d(0,100%,0)}}","fade-out-down-big":"{from{opacity:1}to{opacity:0;transform:translate3d(0,2000px,0)}}","fade-out-left":"{from{opacity:1}to{opacity:0;transform:translate3d(-100%,0,0)}}","fade-out-left-big":"{from{opacity:1}to{opacity:0;transform:translate3d(-2000px,0,0)}}","fade-out-right":"{from{opacity:1}to{opacity:0;transform:translate3d(100%,0,0)}}","fade-out-right-big":"{from{opacity:1}to{opacity:0;transform:translate3d(2000px,0,0)}}","fade-out-up":"{from{opacity:1}to{opacity:0;transform:translate3d(0,-100%,0)}}","fade-out-up-big":"{from{opacity:1}to{opacity:0;transform:translate3d(0,-2000px,0)}}","fade-out-top-left":"{from{opacity:1;transform:translate3d(0,0,0)}to{opacity:0;transform:translate3d(-100%,-100%,0)}}","fade-out-top-right":"{from{opacity:1;transform:translate3d(0,0,0)}to{opacity:0;transform:translate3d(100%,-100%,0)}}","fade-out-bottom-left":"{from{opacity:1;transform:translate3d(0,0,0)}to{opacity:0;transform:translate3d(-100%,100%,0)}}","fade-out-bottom-right":"{from{opacity:1;transform:translate3d(0,0,0)}to{opacity:0;transform:translate3d(100%,100%,0)}}","back-in-up":"{0%{opacity:0.7;transform:translateY(1200px) scale(0.7)}80%{opacity:0.7;transform:translateY(0px) scale(0.7)}100%{opacity:1;transform:scale(1)}}","back-in-down":"{0%{opacity:0.7;transform:translateY(-1200px) scale(0.7)}80%{opacity:0.7;transform:translateY(0px) scale(0.7)}100%{opacity:1;transform:scale(1)}}","back-in-right":"{0%{opacity:0.7;transform:translateX(2000px) scale(0.7)}80%{opacity:0.7;transform:translateY(0px) scale(0.7)}100%{opacity:1;transform:scale(1)}}","back-in-left":"{0%{opacity:0.7;transform:translateX(-2000px) scale(0.7)}80%{opacity:0.7;transform:translateX(0px) scale(0.7)}100%{opacity:1;transform:scale(1)}}","back-out-up":"{0%{opacity:1;transform:scale(1)}80%{opacity:0.7;transform:translateY(0px) scale(0.7)}100%{opacity:0.7;transform:translateY(-700px) scale(0.7)}}","back-out-down":"{0%{opacity:1;transform:scale(1)}80%{opacity:0.7;transform:translateY(0px) scale(0.7)}100%{opacity:0.7;transform:translateY(700px) scale(0.7)}}","back-out-right":"{0%{opacity:1;transform:scale(1)}80%{opacity:0.7;transform:translateY(0px) scale(0.7)}100%{opacity:0.7;transform:translateX(2000px) scale(0.7)}}","back-out-left":"{0%{opacity:1;transform:scale(1)}80%{opacity:0.7;transform:translateX(-2000px) scale(0.7)}100%{opacity:0.7;transform:translateY(-700px) scale(0.7)}}"},durations:{pulse:"2s","heart-beat":"1.3s","bounce-in":"0.75s","bounce-out":"0.75s","flip-out-x":"0.75s","flip-out-y":"0.75s",hinge:"2s"},timingFns:{pulse:"cubic-bezier(0.4,0,.6,1)",ping:"cubic-bezier(0,0,.2,1)","head-shake":"ease-in-out","heart-beat":"ease-in-out","pulse-alt":"ease-in-out","light-speed-in-left":"ease-out","light-speed-in-right":"ease-out","light-speed-out-left":"ease-in","light-speed-out-right":"ease-in"},properties:{"bounce-alt":{"transform-origin":"center bottom"},jello:{"transform-origin":"center"},swing:{"transform-origin":"top center"},flip:{"backface-visibility":"visible"},"flip-in-x":{"backface-visibility":"visible !important"},"flip-in-y":{"backface-visibility":"visible !important"},"flip-out-x":{"backface-visibility":"visible !important"},"flip-out-y":{"backface-visibility":"visible !important"},"rotate-in":{"transform-origin":"center"},"rotate-in-down-left":{"transform-origin":"left bottom"},"rotate-in-down-right":{"transform-origin":"right bottom"},"rotate-in-up-left":{"transform-origin":"left bottom"},"rotate-in-up-right":{"transform-origin":"right bottom"},"rotate-out":{"transform-origin":"center"},"rotate-out-down-left":{"transform-origin":"left bottom"},"rotate-out-down-right":{"transform-origin":"right bottom"},"rotate-out-up-left":{"transform-origin":"left bottom"},"rotate-out-up-right":{"transform-origin":"right bottom"},hinge:{"transform-origin":"top left"},"zoom-out-down":{"transform-origin":"center bottom"},"zoom-out-left":{"transform-origin":"left center"},"zoom-out-right":{"transform-origin":"right center"},"zoom-out-up":{"transform-origin":"center bottom"}},counts:{spin:"infinite",ping:"infinite",pulse:"infinite","pulse-alt":"infinite",bounce:"infinite","bounce-alt":"infinite"},category:{pulse:"Attention Seekers",bounce:"Attention Seekers",spin:"Attention Seekers",ping:"Attention Seekers","bounce-alt":"Attention Seekers",flash:"Attention Seekers","pulse-alt":"Attention Seekers","rubber-band":"Attention Seekers","shake-x":"Attention Seekers","shake-y":"Attention Seekers","head-shake":"Attention Seekers",swing:"Attention Seekers",tada:"Attention Seekers",wobble:"Attention Seekers",jello:"Attention Seekers","heart-beat":"Attention Seekers",hinge:"Specials","jack-in-the-box":"Specials","light-speed-in-left":"Lightspeed","light-speed-in-right":"Lightspeed","light-speed-out-left":"Lightspeed","light-speed-out-right":"Lightspeed",flip:"Flippers","flip-in-x":"Flippers","flip-in-y":"Flippers","flip-out-x":"Flippers","flip-out-y":"Flippers","rotate-in":"Rotating Entrances","rotate-in-down-left":"Rotating Entrances","rotate-in-down-right":"Rotating Entrances","rotate-in-up-left":"Rotating Entrances","rotate-in-up-right":"Rotating Entrances","rotate-out":"Rotating Exits","rotate-out-down-left":"Rotating Exits","rotate-out-down-right":"Rotating Exits","rotate-out-up-left":"Rotating Exits","rotate-out-up-right":"Rotating Exits","roll-in":"Specials","roll-out":"Specials","zoom-in":"Zooming Entrances","zoom-in-down":"Zooming Entrances","zoom-in-left":"Zooming Entrances","zoom-in-right":"Zooming Entrances","zoom-in-up":"Zooming Entrances","zoom-out":"Zooming Exits","zoom-out-down":"Zooming Exits","zoom-out-left":"Zooming Exits","zoom-out-right":"Zooming Exits","zoom-out-up":"Zooming Exits","bounce-in":"Bouncing Entrances","bounce-in-down":"Bouncing Entrances","bounce-in-left":"Bouncing Entrances","bounce-in-right":"Bouncing Entrances","bounce-in-up":"Bouncing Entrances","bounce-out":"Bouncing Exits","bounce-out-down":"Bouncing Exits","bounce-out-left":"Bouncing Exits","bounce-out-right":"Bouncing Exits","bounce-out-up":"Bouncing Exits","slide-in-down":"Sliding Entrances","slide-in-left":"Sliding Entrances","slide-in-right":"Sliding Entrances","slide-in-up":"Sliding Entrances","slide-out-down":"Sliding Exits","slide-out-left":"Sliding Exits","slide-out-right":"Sliding Exits","slide-out-up":"Sliding Exits","fade-in":"Fading Entrances","fade-in-down":"Fading Entrances","fade-in-down-big":"Fading Entrances","fade-in-left":"Fading Entrances","fade-in-left-big":"Fading Entrances","fade-in-right":"Fading Entrances","fade-in-right-big":"Fading Entrances","fade-in-up":"Fading Entrances","fade-in-up-big":"Fading Entrances","fade-in-top-left":"Fading Entrances","fade-in-top-right":"Fading Entrances","fade-in-bottom-left":"Fading Entrances","fade-in-bottom-right":"Fading Entrances","fade-out":"Fading Exits","fade-out-down":"Fading Exits","fade-out-down-big":"Fading Exits","fade-out-left":"Fading Exits","fade-out-left-big":"Fading Exits","fade-out-right":"Fading Exits","fade-out-right-big":"Fading Exits","fade-out-up":"Fading Exits","fade-out-up-big":"Fading Exits","fade-out-top-left":"Fading Exits","fade-out-top-right":"Fading Exits","fade-out-bottom-left":"Fading Exits","fade-out-bottom-right":"Fading Exits","back-in-up":"Back Entrances","back-in-down":"Back Entrances","back-in-right":"Back Entrances","back-in-left":"Back Entrances","back-out-up":"Back Exits","back-out-down":"Back Exits","back-out-right":"Back Exits","back-out-left":"Back Exits"}},media:{portrait:"(orientation: portrait)",landscape:"(orientation: landscape)",os_dark:"(prefers-color-scheme: dark)",os_light:"(prefers-color-scheme: light)",motion_ok:"(prefers-reduced-motion: no-preference)",motion_not_ok:"(prefers-reduced-motion: reduce)",high_contrast:"(prefers-contrast: high)",low_contrast:"(prefers-contrast: low)",opacity_ok:"(prefers-reduced-transparency: no-preference)",opacity_not_ok:"(prefers-reduced-transparency: reduce)",use_data_ok:"(prefers-reduced-data: no-preference)",use_data_not_ok:"(prefers-reduced-data: reduce)",touch:"(hover: none) and (pointer: coarse)",stylus:"(hover: none) and (pointer: fine)",pointer:"(hover) and (pointer: coarse)",mouse:"(hover) and (pointer: fine)",hd_color:"(dynamic-range: high)"},supports:{grid:"(display: grid)"},preflightBase:{...Qe,...jn,...Cn,...zn,...Rn,...Je,...Ze,...$n,...Sn}};var Fa=[K("svg",e=>({selector:`${e.selector} svg`}))];var _a=[K(".dark",e=>({prefix:`.dark $$ ${e.prefix}`})),K(".light",e=>({prefix:`.light $$ ${e.prefix}`})),G("@dark","@media (prefers-color-scheme: dark)"),G("@light","@media (prefers-color-scheme: light)")];var La=[G("contrast-more","@media (prefers-contrast: more)"),G("contrast-less","@media (prefers-contrast: less)")],Ua=[G("motion-reduce","@media (prefers-reduced-motion: reduce)"),G("motion-safe","@media (prefers-reduced-motion: no-preference)")],Wa=[G("landscape","@media (orientation: landscape)"),G("portrait","@media (orientation: portrait)")];var Ba=e=>{if(!e.startsWith("_")&&(/space-[xy]-.+$/.test(e)||/divide-/.test(e)))return{matcher:e,selector:t=>{let r=">:not([hidden])~:not([hidden])";return t.includes(r)?t:`${t}${r}`}}},Na=[K("@hover",e=>({parent:`${e.parent?`${e.parent} $$ `:""}@media (hover: hover) and (pointer: fine)`,selector:`${e.selector||""}:hover`}))];var Da=(e,{theme:t})=>{let r=e.match(/^(.*)\b(placeholder-)(.+)$/);if(r){let[,n="",o,i]=r;if(ze(i,t,"accentColor")||Lu(i))return{matcher:`${n}placeholder-$ ${o}${i}`}}};function Lu(e){let t=e.match(/^op(?:acity)?-?(.+)$/);return t&&t[1]!=null?c.bracket.percent(t[1])!=null:!1}function Ia(e){return[Da,Ba,...Or(e),...La,...Wa,...Ua,...Fa,..._a,...Na]}var Ka=(e={})=>(e.important=e.important??!1,{...yn(e),name:"@unocss/preset-wind",theme:Ma,rules:Js,shortcuts:Qs,variants:Ia(e),postprocess:fs(e)});function Ga(e,t,r){return`calc(${t} + (${e} - ${t}) * ${r} / 100)`}function Ha(e,t,r){let n=[e,t],o=[];for(let s=0;s<2;s++){let l=typeof n[s]=="string"?Y(n[s]):n[s];if(!l||!["rgb","rgba"].includes(l.type))return;o.push(l)}let i=[];for(let s=0;s<3;s++)i.push(Ga(o[0].components[s],o[1].components[s],r));return{type:"rgb",components:i,alpha:Ga(o[0].alpha??1,o[1].alpha??1,r)}}function qa(e,t){return Ha("#fff",e,t)}function Ya(e,t){return Ha("#000",e,t)}function Uu(e,t){let r=Number.parseFloat(`${t}`);if(!Number.isNaN(r))return r>0?Ya(e,t):qa(e,-r)}var Wu={tint:qa,shade:Ya,shift:Uu};function Xa(){let e;return{name:"mix",match(t,r){e||(e=new RegExp(`^mix-(tint|shade|shift)-(-?\\d{1,3})(?:${r.generator.config.separators.join("|")})`));let n=t.match(e);if(n)return{matcher:t.slice(n[0].length),body:o=>(o.forEach(i=>{if(i[1]){let s=Y(`${i[1]}`);if(s){let l=Wu[n[1]](s,n[2]);l&&(i[1]=M(l))}}}),o)}}}}var Bu=(e={})=>{let t=Ka(e);return{...t,name:"@unocss/preset-uno",variants:[...t.variants,Xa()]}},Za=Bu;function Nu(e){return e.replace(/-(\w)/g,(t,r)=>r?r.toUpperCase():"")}function Ja(e){return e.charAt(0).toUpperCase()+e.slice(1)}function Qa(e){return e.replace(/(?:^|\B)([A-Z])/g,"-$1").toLowerCase()}var el=["Webkit","Moz","ms"];function tl(e){let t={};function r(n){let o=t[n];if(o)return o;let i=Nu(n);if(i!=="filter"&&i in e)return t[n]=Qa(i);i=Ja(i);for(let s=0;s<el.length;s++){let l=`${el[s]}${i}`;if(l in e)return t[n]=Qa(Ja(l))}return n}return({entries:n})=>n.forEach(o=>{o[0].startsWith("--")||(o[0]=r(o[0]))})}function rl(e){return e.replace(/&amp;/g,"&").replace(/&gt;/g,">").replace(/&lt;/g,"<")}async function Dn(e={}){if(typeof window>"u"){console.warn("@unocss/runtime been used in non-browser environment, skipped.");return}let t=window,r=window.document,n=()=>r.documentElement,o=t.__unocss||{},i=Object.assign({},e,o.runtime),s=i.defaults||{},l=i.cloakAttribute??"un-cloak";i.autoPrefix&&(s.postprocess=O(s.postprocess)).unshift(tl(r.createElement("div").style)),i.configResolved?.(o,s);let a=await ao(o,s),u=C=>i.inject?i.inject(C):n().prepend(C),f=()=>i.rootElement?i.rootElement():r.body,p=new Map,m=!0,d=new Set,h,g,w=[],j=()=>new Promise(C=>{w.push(C),g!=null&&clearTimeout(g),g=setTimeout(()=>L().then(()=>{let A=w;w=[],A.forEach(F=>F())}),0)});function y(C,A=!1){if(C.nodeType!==1)return;let F=C;F.hasAttribute(l)&&F.removeAttribute(l),A&&F.querySelectorAll(`[${l}]`).forEach(U=>{U.removeAttribute(l)})}function $(C,A){let F=p.get(C);if(!F)if(F=r.createElement("style"),F.setAttribute("data-unocss-runtime-layer",C),p.set(C,F),A==null)u(F);else{let U=$(A),z=U.parentNode;z?z.insertBefore(F,U.nextSibling):u(F)}return F}async function L(){let C=[...d],A=await a.generate(C);return A.layers.reduce((U,z)=>($(z,U).innerHTML=A.getLayer(z)??"",z),void 0),C.filter(U=>!A.matched.has(U)).forEach(U=>d.delete(U)),{...A,getStyleElement:U=>p.get(U),getStyleElements:()=>p}}async function E(C){let A=d.size;await a.applyExtractors(C,void 0,d),A!==d.size&&await j()}async function x(C=f()){let A=C&&C.outerHTML;A&&(await E(`${A} ${rl(A)}`),y(n()),y(C,!0))}let b=new MutationObserver(C=>{m||C.forEach(async A=>{if(A.target.nodeType!==1)return;let F=A.target;for(let U of p)if(F===U[1])return;if(A.type==="childList")A.addedNodes.forEach(async U=>{if(U.nodeType!==1)return;let z=U;h&&!h(z)||(await E(z.outerHTML),y(z))});else{if(h&&!h(F))return;if(A.attributeName!==l){let U=Array.from(F.attributes).map(D=>D.value?`${D.name}="${D.value}"`:D.name).join(" "),z=`<${F.tagName.toLowerCase()} ${U}>`;await E(z)}y(F)}})}),k=!1;function R(){if(k)return;let C=i.observer?.target?i.observer.target():f();C&&(b.observe(C,{childList:!0,subtree:!0,attributes:!0,attributeFilter:i.observer?.attributeFilter}),k=!0)}function H(){i.bypassDefined&&Du(a.blocked),x(),R()}function q(){r.readyState==="loading"?t.addEventListener("DOMContentLoaded",H):H()}let ee=t.__unocss_runtime=t.__unocss_runtime={version:a.version,uno:a,async extract(C){P(C)||(C.forEach(A=>d.add(A)),C=""),await E(C)},extractAll:x,inspect(C){h=C},toggleObserver(C){C===void 0?m=!m:m=!!C,!k&&!m&&q()},update:L,presets:t.__unocss_runtime?.presets??{}};i.ready?.(ee)!==!1&&(m=!1,q())}function Du(e=new Set){for(let t=0;t<document.styleSheets.length;t++){let r=document.styleSheets[t],n;try{if(n=r.cssRules||r.rules,!n)continue;Array.from(n).flatMap(o=>o.selectorText?.split(/,/g)||[]).forEach(o=>{o&&(o=o.trim(),o.startsWith(".")&&(o=o.slice(1)),e.add(o))})}catch{continue}}return e}Dn({defaults:{presets:[Za(),ho()]}});})();
\ No newline at end of file
diff --git a/customer_list/ch/ai_html/lib/vue-3.3.4.js b/customer_list/ch/ai_html/lib/vue-3.3.4.js
new file mode 100644
index 0000000..f742f1c
--- /dev/null
+++ b/customer_list/ch/ai_html/lib/vue-3.3.4.js
@@ -0,0 +1,15363 @@
+var Vue = (function (exports) {
+    'use strict';
+  
+    function makeMap(str, expectsLowerCase) {
+      const map = /* @__PURE__ */ Object.create(null);
+      const list = str.split(",");
+      for (let i = 0; i < list.length; i++) {
+        map[list[i]] = true;
+      }
+      return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];
+    }
+  
+    const EMPTY_OBJ = Object.freeze({}) ;
+    const EMPTY_ARR = Object.freeze([]) ;
+    const NOOP = () => {
+    };
+    const NO = () => false;
+    const onRE = /^on[^a-z]/;
+    const isOn = (key) => onRE.test(key);
+    const isModelListener = (key) => key.startsWith("onUpdate:");
+    const extend = Object.assign;
+    const remove = (arr, el) => {
+      const i = arr.indexOf(el);
+      if (i > -1) {
+        arr.splice(i, 1);
+      }
+    };
+    const hasOwnProperty$1 = Object.prototype.hasOwnProperty;
+    const hasOwn = (val, key) => hasOwnProperty$1.call(val, key);
+    const isArray = Array.isArray;
+    const isMap = (val) => toTypeString(val) === "[object Map]";
+    const isSet = (val) => toTypeString(val) === "[object Set]";
+    const isDate = (val) => toTypeString(val) === "[object Date]";
+    const isRegExp = (val) => toTypeString(val) === "[object RegExp]";
+    const isFunction = (val) => typeof val === "function";
+    const isString = (val) => typeof val === "string";
+    const isSymbol = (val) => typeof val === "symbol";
+    const isObject = (val) => val !== null && typeof val === "object";
+    const isPromise = (val) => {
+      return isObject(val) && isFunction(val.then) && isFunction(val.catch);
+    };
+    const objectToString = Object.prototype.toString;
+    const toTypeString = (value) => objectToString.call(value);
+    const toRawType = (value) => {
+      return toTypeString(value).slice(8, -1);
+    };
+    const isPlainObject = (val) => toTypeString(val) === "[object Object]";
+    const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key;
+    const isReservedProp = /* @__PURE__ */ makeMap(
+      // the leading comma is intentional so empty string "" is also included
+      ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"
+    );
+    const isBuiltInDirective = /* @__PURE__ */ makeMap(
+      "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"
+    );
+    const cacheStringFunction = (fn) => {
+      const cache = /* @__PURE__ */ Object.create(null);
+      return (str) => {
+        const hit = cache[str];
+        return hit || (cache[str] = fn(str));
+      };
+    };
+    const camelizeRE = /-(\w)/g;
+    const camelize = cacheStringFunction((str) => {
+      return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : "");
+    });
+    const hyphenateRE = /\B([A-Z])/g;
+    const hyphenate = cacheStringFunction(
+      (str) => str.replace(hyphenateRE, "-$1").toLowerCase()
+    );
+    const capitalize = cacheStringFunction(
+      (str) => str.charAt(0).toUpperCase() + str.slice(1)
+    );
+    const toHandlerKey = cacheStringFunction(
+      (str) => str ? `on${capitalize(str)}` : ``
+    );
+    const hasChanged = (value, oldValue) => !Object.is(value, oldValue);
+    const invokeArrayFns = (fns, arg) => {
+      for (let i = 0; i < fns.length; i++) {
+        fns[i](arg);
+      }
+    };
+    const def = (obj, key, value) => {
+      Object.defineProperty(obj, key, {
+        configurable: true,
+        enumerable: false,
+        value
+      });
+    };
+    const looseToNumber = (val) => {
+      const n = parseFloat(val);
+      return isNaN(n) ? val : n;
+    };
+    const toNumber = (val) => {
+      const n = isString(val) ? Number(val) : NaN;
+      return isNaN(n) ? val : n;
+    };
+    let _globalThis;
+    const getGlobalThis = () => {
+      return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {});
+    };
+  
+    const PatchFlagNames = {
+      [1]: `TEXT`,
+      [2]: `CLASS`,
+      [4]: `STYLE`,
+      [8]: `PROPS`,
+      [16]: `FULL_PROPS`,
+      [32]: `HYDRATE_EVENTS`,
+      [64]: `STABLE_FRAGMENT`,
+      [128]: `KEYED_FRAGMENT`,
+      [256]: `UNKEYED_FRAGMENT`,
+      [512]: `NEED_PATCH`,
+      [1024]: `DYNAMIC_SLOTS`,
+      [2048]: `DEV_ROOT_FRAGMENT`,
+      [-1]: `HOISTED`,
+      [-2]: `BAIL`
+    };
+  
+    const slotFlagsText = {
+      [1]: "STABLE",
+      [2]: "DYNAMIC",
+      [3]: "FORWARDED"
+    };
+  
+    const GLOBALS_WHITE_LISTED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console";
+    const isGloballyWhitelisted = /* @__PURE__ */ makeMap(GLOBALS_WHITE_LISTED);
+  
+    const range = 2;
+    function generateCodeFrame(source, start = 0, end = source.length) {
+      let lines = source.split(/(\r?\n)/);
+      const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);
+      lines = lines.filter((_, idx) => idx % 2 === 0);
+      let count = 0;
+      const res = [];
+      for (let i = 0; i < lines.length; i++) {
+        count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);
+        if (count >= start) {
+          for (let j = i - range; j <= i + range || end > count; j++) {
+            if (j < 0 || j >= lines.length)
+              continue;
+            const line = j + 1;
+            res.push(
+              `${line}${" ".repeat(Math.max(3 - String(line).length, 0))}|  ${lines[j]}`
+            );
+            const lineLength = lines[j].length;
+            const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;
+            if (j === i) {
+              const pad = start - (count - (lineLength + newLineSeqLength));
+              const length = Math.max(
+                1,
+                end > count ? lineLength - pad : end - start
+              );
+              res.push(`   |  ` + " ".repeat(pad) + "^".repeat(length));
+            } else if (j > i) {
+              if (end > count) {
+                const length = Math.max(Math.min(end - count, lineLength), 1);
+                res.push(`   |  ` + "^".repeat(length));
+              }
+              count += lineLength + newLineSeqLength;
+            }
+          }
+          break;
+        }
+      }
+      return res.join("\n");
+    }
+  
+    function normalizeStyle(value) {
+      if (isArray(value)) {
+        const res = {};
+        for (let i = 0; i < value.length; i++) {
+          const item = value[i];
+          const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);
+          if (normalized) {
+            for (const key in normalized) {
+              res[key] = normalized[key];
+            }
+          }
+        }
+        return res;
+      } else if (isString(value)) {
+        return value;
+      } else if (isObject(value)) {
+        return value;
+      }
+    }
+    const listDelimiterRE = /;(?![^(]*\))/g;
+    const propertyDelimiterRE = /:([^]+)/;
+    const styleCommentRE = /\/\*[^]*?\*\//g;
+    function parseStringStyle(cssText) {
+      const ret = {};
+      cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => {
+        if (item) {
+          const tmp = item.split(propertyDelimiterRE);
+          tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());
+        }
+      });
+      return ret;
+    }
+    function normalizeClass(value) {
+      let res = "";
+      if (isString(value)) {
+        res = value;
+      } else if (isArray(value)) {
+        for (let i = 0; i < value.length; i++) {
+          const normalized = normalizeClass(value[i]);
+          if (normalized) {
+            res += normalized + " ";
+          }
+        }
+      } else if (isObject(value)) {
+        for (const name in value) {
+          if (value[name]) {
+            res += name + " ";
+          }
+        }
+      }
+      return res.trim();
+    }
+    function normalizeProps(props) {
+      if (!props)
+        return null;
+      let { class: klass, style } = props;
+      if (klass && !isString(klass)) {
+        props.class = normalizeClass(klass);
+      }
+      if (style) {
+        props.style = normalizeStyle(style);
+      }
+      return props;
+    }
+  
+    const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot";
+    const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view";
+    const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr";
+    const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);
+    const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);
+    const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);
+  
+    const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
+    const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);
+    function includeBooleanAttr(value) {
+      return !!value || value === "";
+    }
+  
+    function looseCompareArrays(a, b) {
+      if (a.length !== b.length)
+        return false;
+      let equal = true;
+      for (let i = 0; equal && i < a.length; i++) {
+        equal = looseEqual(a[i], b[i]);
+      }
+      return equal;
+    }
+    function looseEqual(a, b) {
+      if (a === b)
+        return true;
+      let aValidType = isDate(a);
+      let bValidType = isDate(b);
+      if (aValidType || bValidType) {
+        return aValidType && bValidType ? a.getTime() === b.getTime() : false;
+      }
+      aValidType = isSymbol(a);
+      bValidType = isSymbol(b);
+      if (aValidType || bValidType) {
+        return a === b;
+      }
+      aValidType = isArray(a);
+      bValidType = isArray(b);
+      if (aValidType || bValidType) {
+        return aValidType && bValidType ? looseCompareArrays(a, b) : false;
+      }
+      aValidType = isObject(a);
+      bValidType = isObject(b);
+      if (aValidType || bValidType) {
+        if (!aValidType || !bValidType) {
+          return false;
+        }
+        const aKeysCount = Object.keys(a).length;
+        const bKeysCount = Object.keys(b).length;
+        if (aKeysCount !== bKeysCount) {
+          return false;
+        }
+        for (const key in a) {
+          const aHasKey = a.hasOwnProperty(key);
+          const bHasKey = b.hasOwnProperty(key);
+          if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {
+            return false;
+          }
+        }
+      }
+      return String(a) === String(b);
+    }
+    function looseIndexOf(arr, val) {
+      return arr.findIndex((item) => looseEqual(item, val));
+    }
+  
+    const toDisplayString = (val) => {
+      return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);
+    };
+    const replacer = (_key, val) => {
+      if (val && val.__v_isRef) {
+        return replacer(_key, val.value);
+      } else if (isMap(val)) {
+        return {
+          [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val2]) => {
+            entries[`${key} =>`] = val2;
+            return entries;
+          }, {})
+        };
+      } else if (isSet(val)) {
+        return {
+          [`Set(${val.size})`]: [...val.values()]
+        };
+      } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {
+        return String(val);
+      }
+      return val;
+    };
+  
+    function warn$1(msg, ...args) {
+      console.warn(`[Vue warn] ${msg}`, ...args);
+    }
+  
+    let activeEffectScope;
+    class EffectScope {
+      constructor(detached = false) {
+        this.detached = detached;
+        /**
+         * @internal
+         */
+        this._active = true;
+        /**
+         * @internal
+         */
+        this.effects = [];
+        /**
+         * @internal
+         */
+        this.cleanups = [];
+        this.parent = activeEffectScope;
+        if (!detached && activeEffectScope) {
+          this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(
+            this
+          ) - 1;
+        }
+      }
+      get active() {
+        return this._active;
+      }
+      run(fn) {
+        if (this._active) {
+          const currentEffectScope = activeEffectScope;
+          try {
+            activeEffectScope = this;
+            return fn();
+          } finally {
+            activeEffectScope = currentEffectScope;
+          }
+        } else {
+          warn$1(`cannot run an inactive effect scope.`);
+        }
+      }
+      /**
+       * This should only be called on non-detached scopes
+       * @internal
+       */
+      on() {
+        activeEffectScope = this;
+      }
+      /**
+       * This should only be called on non-detached scopes
+       * @internal
+       */
+      off() {
+        activeEffectScope = this.parent;
+      }
+      stop(fromParent) {
+        if (this._active) {
+          let i, l;
+          for (i = 0, l = this.effects.length; i < l; i++) {
+            this.effects[i].stop();
+          }
+          for (i = 0, l = this.cleanups.length; i < l; i++) {
+            this.cleanups[i]();
+          }
+          if (this.scopes) {
+            for (i = 0, l = this.scopes.length; i < l; i++) {
+              this.scopes[i].stop(true);
+            }
+          }
+          if (!this.detached && this.parent && !fromParent) {
+            const last = this.parent.scopes.pop();
+            if (last && last !== this) {
+              this.parent.scopes[this.index] = last;
+              last.index = this.index;
+            }
+          }
+          this.parent = void 0;
+          this._active = false;
+        }
+      }
+    }
+    function effectScope(detached) {
+      return new EffectScope(detached);
+    }
+    function recordEffectScope(effect, scope = activeEffectScope) {
+      if (scope && scope.active) {
+        scope.effects.push(effect);
+      }
+    }
+    function getCurrentScope() {
+      return activeEffectScope;
+    }
+    function onScopeDispose(fn) {
+      if (activeEffectScope) {
+        activeEffectScope.cleanups.push(fn);
+      } else {
+        warn$1(
+          `onScopeDispose() is called when there is no active effect scope to be associated with.`
+        );
+      }
+    }
+  
+    const createDep = (effects) => {
+      const dep = new Set(effects);
+      dep.w = 0;
+      dep.n = 0;
+      return dep;
+    };
+    const wasTracked = (dep) => (dep.w & trackOpBit) > 0;
+    const newTracked = (dep) => (dep.n & trackOpBit) > 0;
+    const initDepMarkers = ({ deps }) => {
+      if (deps.length) {
+        for (let i = 0; i < deps.length; i++) {
+          deps[i].w |= trackOpBit;
+        }
+      }
+    };
+    const finalizeDepMarkers = (effect) => {
+      const { deps } = effect;
+      if (deps.length) {
+        let ptr = 0;
+        for (let i = 0; i < deps.length; i++) {
+          const dep = deps[i];
+          if (wasTracked(dep) && !newTracked(dep)) {
+            dep.delete(effect);
+          } else {
+            deps[ptr++] = dep;
+          }
+          dep.w &= ~trackOpBit;
+          dep.n &= ~trackOpBit;
+        }
+        deps.length = ptr;
+      }
+    };
+  
+    const targetMap = /* @__PURE__ */ new WeakMap();
+    let effectTrackDepth = 0;
+    let trackOpBit = 1;
+    const maxMarkerBits = 30;
+    let activeEffect;
+    const ITERATE_KEY = Symbol("iterate" );
+    const MAP_KEY_ITERATE_KEY = Symbol("Map key iterate" );
+    class ReactiveEffect {
+      constructor(fn, scheduler = null, scope) {
+        this.fn = fn;
+        this.scheduler = scheduler;
+        this.active = true;
+        this.deps = [];
+        this.parent = void 0;
+        recordEffectScope(this, scope);
+      }
+      run() {
+        if (!this.active) {
+          return this.fn();
+        }
+        let parent = activeEffect;
+        let lastShouldTrack = shouldTrack;
+        while (parent) {
+          if (parent === this) {
+            return;
+          }
+          parent = parent.parent;
+        }
+        try {
+          this.parent = activeEffect;
+          activeEffect = this;
+          shouldTrack = true;
+          trackOpBit = 1 << ++effectTrackDepth;
+          if (effectTrackDepth <= maxMarkerBits) {
+            initDepMarkers(this);
+          } else {
+            cleanupEffect(this);
+          }
+          return this.fn();
+        } finally {
+          if (effectTrackDepth <= maxMarkerBits) {
+            finalizeDepMarkers(this);
+          }
+          trackOpBit = 1 << --effectTrackDepth;
+          activeEffect = this.parent;
+          shouldTrack = lastShouldTrack;
+          this.parent = void 0;
+          if (this.deferStop) {
+            this.stop();
+          }
+        }
+      }
+      stop() {
+        if (activeEffect === this) {
+          this.deferStop = true;
+        } else if (this.active) {
+          cleanupEffect(this);
+          if (this.onStop) {
+            this.onStop();
+          }
+          this.active = false;
+        }
+      }
+    }
+    function cleanupEffect(effect2) {
+      const { deps } = effect2;
+      if (deps.length) {
+        for (let i = 0; i < deps.length; i++) {
+          deps[i].delete(effect2);
+        }
+        deps.length = 0;
+      }
+    }
+    function effect(fn, options) {
+      if (fn.effect) {
+        fn = fn.effect.fn;
+      }
+      const _effect = new ReactiveEffect(fn);
+      if (options) {
+        extend(_effect, options);
+        if (options.scope)
+          recordEffectScope(_effect, options.scope);
+      }
+      if (!options || !options.lazy) {
+        _effect.run();
+      }
+      const runner = _effect.run.bind(_effect);
+      runner.effect = _effect;
+      return runner;
+    }
+    function stop(runner) {
+      runner.effect.stop();
+    }
+    let shouldTrack = true;
+    const trackStack = [];
+    function pauseTracking() {
+      trackStack.push(shouldTrack);
+      shouldTrack = false;
+    }
+    function resetTracking() {
+      const last = trackStack.pop();
+      shouldTrack = last === void 0 ? true : last;
+    }
+    function track(target, type, key) {
+      if (shouldTrack && activeEffect) {
+        let depsMap = targetMap.get(target);
+        if (!depsMap) {
+          targetMap.set(target, depsMap = /* @__PURE__ */ new Map());
+        }
+        let dep = depsMap.get(key);
+        if (!dep) {
+          depsMap.set(key, dep = createDep());
+        }
+        const eventInfo = { effect: activeEffect, target, type, key } ;
+        trackEffects(dep, eventInfo);
+      }
+    }
+    function trackEffects(dep, debuggerEventExtraInfo) {
+      let shouldTrack2 = false;
+      if (effectTrackDepth <= maxMarkerBits) {
+        if (!newTracked(dep)) {
+          dep.n |= trackOpBit;
+          shouldTrack2 = !wasTracked(dep);
+        }
+      } else {
+        shouldTrack2 = !dep.has(activeEffect);
+      }
+      if (shouldTrack2) {
+        dep.add(activeEffect);
+        activeEffect.deps.push(dep);
+        if (activeEffect.onTrack) {
+          activeEffect.onTrack(
+            extend(
+              {
+                effect: activeEffect
+              },
+              debuggerEventExtraInfo
+            )
+          );
+        }
+      }
+    }
+    function trigger(target, type, key, newValue, oldValue, oldTarget) {
+      const depsMap = targetMap.get(target);
+      if (!depsMap) {
+        return;
+      }
+      let deps = [];
+      if (type === "clear") {
+        deps = [...depsMap.values()];
+      } else if (key === "length" && isArray(target)) {
+        const newLength = Number(newValue);
+        depsMap.forEach((dep, key2) => {
+          if (key2 === "length" || key2 >= newLength) {
+            deps.push(dep);
+          }
+        });
+      } else {
+        if (key !== void 0) {
+          deps.push(depsMap.get(key));
+        }
+        switch (type) {
+          case "add":
+            if (!isArray(target)) {
+              deps.push(depsMap.get(ITERATE_KEY));
+              if (isMap(target)) {
+                deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));
+              }
+            } else if (isIntegerKey(key)) {
+              deps.push(depsMap.get("length"));
+            }
+            break;
+          case "delete":
+            if (!isArray(target)) {
+              deps.push(depsMap.get(ITERATE_KEY));
+              if (isMap(target)) {
+                deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));
+              }
+            }
+            break;
+          case "set":
+            if (isMap(target)) {
+              deps.push(depsMap.get(ITERATE_KEY));
+            }
+            break;
+        }
+      }
+      const eventInfo = { target, type, key, newValue, oldValue, oldTarget } ;
+      if (deps.length === 1) {
+        if (deps[0]) {
+          {
+            triggerEffects(deps[0], eventInfo);
+          }
+        }
+      } else {
+        const effects = [];
+        for (const dep of deps) {
+          if (dep) {
+            effects.push(...dep);
+          }
+        }
+        {
+          triggerEffects(createDep(effects), eventInfo);
+        }
+      }
+    }
+    function triggerEffects(dep, debuggerEventExtraInfo) {
+      const effects = isArray(dep) ? dep : [...dep];
+      for (const effect2 of effects) {
+        if (effect2.computed) {
+          triggerEffect(effect2, debuggerEventExtraInfo);
+        }
+      }
+      for (const effect2 of effects) {
+        if (!effect2.computed) {
+          triggerEffect(effect2, debuggerEventExtraInfo);
+        }
+      }
+    }
+    function triggerEffect(effect2, debuggerEventExtraInfo) {
+      if (effect2 !== activeEffect || effect2.allowRecurse) {
+        if (effect2.onTrigger) {
+          effect2.onTrigger(extend({ effect: effect2 }, debuggerEventExtraInfo));
+        }
+        if (effect2.scheduler) {
+          effect2.scheduler();
+        } else {
+          effect2.run();
+        }
+      }
+    }
+    function getDepFromReactive(object, key) {
+      var _a;
+      return (_a = targetMap.get(object)) == null ? void 0 : _a.get(key);
+    }
+  
+    const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);
+    const builtInSymbols = new Set(
+      /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol)
+    );
+    const get$1 = /* @__PURE__ */ createGetter();
+    const shallowGet = /* @__PURE__ */ createGetter(false, true);
+    const readonlyGet = /* @__PURE__ */ createGetter(true);
+    const shallowReadonlyGet = /* @__PURE__ */ createGetter(true, true);
+    const arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();
+    function createArrayInstrumentations() {
+      const instrumentations = {};
+      ["includes", "indexOf", "lastIndexOf"].forEach((key) => {
+        instrumentations[key] = function(...args) {
+          const arr = toRaw(this);
+          for (let i = 0, l = this.length; i < l; i++) {
+            track(arr, "get", i + "");
+          }
+          const res = arr[key](...args);
+          if (res === -1 || res === false) {
+            return arr[key](...args.map(toRaw));
+          } else {
+            return res;
+          }
+        };
+      });
+      ["push", "pop", "shift", "unshift", "splice"].forEach((key) => {
+        instrumentations[key] = function(...args) {
+          pauseTracking();
+          const res = toRaw(this)[key].apply(this, args);
+          resetTracking();
+          return res;
+        };
+      });
+      return instrumentations;
+    }
+    function hasOwnProperty(key) {
+      const obj = toRaw(this);
+      track(obj, "has", key);
+      return obj.hasOwnProperty(key);
+    }
+    function createGetter(isReadonly2 = false, shallow = false) {
+      return function get2(target, key, receiver) {
+        if (key === "__v_isReactive") {
+          return !isReadonly2;
+        } else if (key === "__v_isReadonly") {
+          return isReadonly2;
+        } else if (key === "__v_isShallow") {
+          return shallow;
+        } else if (key === "__v_raw" && receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) {
+          return target;
+        }
+        const targetIsArray = isArray(target);
+        if (!isReadonly2) {
+          if (targetIsArray && hasOwn(arrayInstrumentations, key)) {
+            return Reflect.get(arrayInstrumentations, key, receiver);
+          }
+          if (key === "hasOwnProperty") {
+            return hasOwnProperty;
+          }
+        }
+        const res = Reflect.get(target, key, receiver);
+        if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {
+          return res;
+        }
+        if (!isReadonly2) {
+          track(target, "get", key);
+        }
+        if (shallow) {
+          return res;
+        }
+        if (isRef(res)) {
+          return targetIsArray && isIntegerKey(key) ? res : res.value;
+        }
+        if (isObject(res)) {
+          return isReadonly2 ? readonly(res) : reactive(res);
+        }
+        return res;
+      };
+    }
+    const set$1 = /* @__PURE__ */ createSetter();
+    const shallowSet = /* @__PURE__ */ createSetter(true);
+    function createSetter(shallow = false) {
+      return function set2(target, key, value, receiver) {
+        let oldValue = target[key];
+        if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {
+          return false;
+        }
+        if (!shallow) {
+          if (!isShallow(value) && !isReadonly(value)) {
+            oldValue = toRaw(oldValue);
+            value = toRaw(value);
+          }
+          if (!isArray(target) && isRef(oldValue) && !isRef(value)) {
+            oldValue.value = value;
+            return true;
+          }
+        }
+        const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);
+        const result = Reflect.set(target, key, value, receiver);
+        if (target === toRaw(receiver)) {
+          if (!hadKey) {
+            trigger(target, "add", key, value);
+          } else if (hasChanged(value, oldValue)) {
+            trigger(target, "set", key, value, oldValue);
+          }
+        }
+        return result;
+      };
+    }
+    function deleteProperty(target, key) {
+      const hadKey = hasOwn(target, key);
+      const oldValue = target[key];
+      const result = Reflect.deleteProperty(target, key);
+      if (result && hadKey) {
+        trigger(target, "delete", key, void 0, oldValue);
+      }
+      return result;
+    }
+    function has$1(target, key) {
+      const result = Reflect.has(target, key);
+      if (!isSymbol(key) || !builtInSymbols.has(key)) {
+        track(target, "has", key);
+      }
+      return result;
+    }
+    function ownKeys(target) {
+      track(target, "iterate", isArray(target) ? "length" : ITERATE_KEY);
+      return Reflect.ownKeys(target);
+    }
+    const mutableHandlers = {
+      get: get$1,
+      set: set$1,
+      deleteProperty,
+      has: has$1,
+      ownKeys
+    };
+    const readonlyHandlers = {
+      get: readonlyGet,
+      set(target, key) {
+        {
+          warn$1(
+            `Set operation on key "${String(key)}" failed: target is readonly.`,
+            target
+          );
+        }
+        return true;
+      },
+      deleteProperty(target, key) {
+        {
+          warn$1(
+            `Delete operation on key "${String(key)}" failed: target is readonly.`,
+            target
+          );
+        }
+        return true;
+      }
+    };
+    const shallowReactiveHandlers = /* @__PURE__ */ extend(
+      {},
+      mutableHandlers,
+      {
+        get: shallowGet,
+        set: shallowSet
+      }
+    );
+    const shallowReadonlyHandlers = /* @__PURE__ */ extend(
+      {},
+      readonlyHandlers,
+      {
+        get: shallowReadonlyGet
+      }
+    );
+  
+    const toShallow = (value) => value;
+    const getProto = (v) => Reflect.getPrototypeOf(v);
+    function get(target, key, isReadonly = false, isShallow = false) {
+      target = target["__v_raw"];
+      const rawTarget = toRaw(target);
+      const rawKey = toRaw(key);
+      if (!isReadonly) {
+        if (key !== rawKey) {
+          track(rawTarget, "get", key);
+        }
+        track(rawTarget, "get", rawKey);
+      }
+      const { has: has2 } = getProto(rawTarget);
+      const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
+      if (has2.call(rawTarget, key)) {
+        return wrap(target.get(key));
+      } else if (has2.call(rawTarget, rawKey)) {
+        return wrap(target.get(rawKey));
+      } else if (target !== rawTarget) {
+        target.get(key);
+      }
+    }
+    function has(key, isReadonly = false) {
+      const target = this["__v_raw"];
+      const rawTarget = toRaw(target);
+      const rawKey = toRaw(key);
+      if (!isReadonly) {
+        if (key !== rawKey) {
+          track(rawTarget, "has", key);
+        }
+        track(rawTarget, "has", rawKey);
+      }
+      return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);
+    }
+    function size(target, isReadonly = false) {
+      target = target["__v_raw"];
+      !isReadonly && track(toRaw(target), "iterate", ITERATE_KEY);
+      return Reflect.get(target, "size", target);
+    }
+    function add(value) {
+      value = toRaw(value);
+      const target = toRaw(this);
+      const proto = getProto(target);
+      const hadKey = proto.has.call(target, value);
+      if (!hadKey) {
+        target.add(value);
+        trigger(target, "add", value, value);
+      }
+      return this;
+    }
+    function set(key, value) {
+      value = toRaw(value);
+      const target = toRaw(this);
+      const { has: has2, get: get2 } = getProto(target);
+      let hadKey = has2.call(target, key);
+      if (!hadKey) {
+        key = toRaw(key);
+        hadKey = has2.call(target, key);
+      } else {
+        checkIdentityKeys(target, has2, key);
+      }
+      const oldValue = get2.call(target, key);
+      target.set(key, value);
+      if (!hadKey) {
+        trigger(target, "add", key, value);
+      } else if (hasChanged(value, oldValue)) {
+        trigger(target, "set", key, value, oldValue);
+      }
+      return this;
+    }
+    function deleteEntry(key) {
+      const target = toRaw(this);
+      const { has: has2, get: get2 } = getProto(target);
+      let hadKey = has2.call(target, key);
+      if (!hadKey) {
+        key = toRaw(key);
+        hadKey = has2.call(target, key);
+      } else {
+        checkIdentityKeys(target, has2, key);
+      }
+      const oldValue = get2 ? get2.call(target, key) : void 0;
+      const result = target.delete(key);
+      if (hadKey) {
+        trigger(target, "delete", key, void 0, oldValue);
+      }
+      return result;
+    }
+    function clear() {
+      const target = toRaw(this);
+      const hadItems = target.size !== 0;
+      const oldTarget = isMap(target) ? new Map(target) : new Set(target) ;
+      const result = target.clear();
+      if (hadItems) {
+        trigger(target, "clear", void 0, void 0, oldTarget);
+      }
+      return result;
+    }
+    function createForEach(isReadonly, isShallow) {
+      return function forEach(callback, thisArg) {
+        const observed = this;
+        const target = observed["__v_raw"];
+        const rawTarget = toRaw(target);
+        const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
+        !isReadonly && track(rawTarget, "iterate", ITERATE_KEY);
+        return target.forEach((value, key) => {
+          return callback.call(thisArg, wrap(value), wrap(key), observed);
+        });
+      };
+    }
+    function createIterableMethod(method, isReadonly, isShallow) {
+      return function(...args) {
+        const target = this["__v_raw"];
+        const rawTarget = toRaw(target);
+        const targetIsMap = isMap(rawTarget);
+        const isPair = method === "entries" || method === Symbol.iterator && targetIsMap;
+        const isKeyOnly = method === "keys" && targetIsMap;
+        const innerIterator = target[method](...args);
+        const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
+        !isReadonly && track(
+          rawTarget,
+          "iterate",
+          isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY
+        );
+        return {
+          // iterator protocol
+          next() {
+            const { value, done } = innerIterator.next();
+            return done ? { value, done } : {
+              value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),
+              done
+            };
+          },
+          // iterable protocol
+          [Symbol.iterator]() {
+            return this;
+          }
+        };
+      };
+    }
+    function createReadonlyMethod(type) {
+      return function(...args) {
+        {
+          const key = args[0] ? `on key "${args[0]}" ` : ``;
+          console.warn(
+            `${capitalize(type)} operation ${key}failed: target is readonly.`,
+            toRaw(this)
+          );
+        }
+        return type === "delete" ? false : this;
+      };
+    }
+    function createInstrumentations() {
+      const mutableInstrumentations2 = {
+        get(key) {
+          return get(this, key);
+        },
+        get size() {
+          return size(this);
+        },
+        has,
+        add,
+        set,
+        delete: deleteEntry,
+        clear,
+        forEach: createForEach(false, false)
+      };
+      const shallowInstrumentations2 = {
+        get(key) {
+          return get(this, key, false, true);
+        },
+        get size() {
+          return size(this);
+        },
+        has,
+        add,
+        set,
+        delete: deleteEntry,
+        clear,
+        forEach: createForEach(false, true)
+      };
+      const readonlyInstrumentations2 = {
+        get(key) {
+          return get(this, key, true);
+        },
+        get size() {
+          return size(this, true);
+        },
+        has(key) {
+          return has.call(this, key, true);
+        },
+        add: createReadonlyMethod("add"),
+        set: createReadonlyMethod("set"),
+        delete: createReadonlyMethod("delete"),
+        clear: createReadonlyMethod("clear"),
+        forEach: createForEach(true, false)
+      };
+      const shallowReadonlyInstrumentations2 = {
+        get(key) {
+          return get(this, key, true, true);
+        },
+        get size() {
+          return size(this, true);
+        },
+        has(key) {
+          return has.call(this, key, true);
+        },
+        add: createReadonlyMethod("add"),
+        set: createReadonlyMethod("set"),
+        delete: createReadonlyMethod("delete"),
+        clear: createReadonlyMethod("clear"),
+        forEach: createForEach(true, true)
+      };
+      const iteratorMethods = ["keys", "values", "entries", Symbol.iterator];
+      iteratorMethods.forEach((method) => {
+        mutableInstrumentations2[method] = createIterableMethod(
+          method,
+          false,
+          false
+        );
+        readonlyInstrumentations2[method] = createIterableMethod(
+          method,
+          true,
+          false
+        );
+        shallowInstrumentations2[method] = createIterableMethod(
+          method,
+          false,
+          true
+        );
+        shallowReadonlyInstrumentations2[method] = createIterableMethod(
+          method,
+          true,
+          true
+        );
+      });
+      return [
+        mutableInstrumentations2,
+        readonlyInstrumentations2,
+        shallowInstrumentations2,
+        shallowReadonlyInstrumentations2
+      ];
+    }
+    const [
+      mutableInstrumentations,
+      readonlyInstrumentations,
+      shallowInstrumentations,
+      shallowReadonlyInstrumentations
+    ] = /* @__PURE__ */ createInstrumentations();
+    function createInstrumentationGetter(isReadonly, shallow) {
+      const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;
+      return (target, key, receiver) => {
+        if (key === "__v_isReactive") {
+          return !isReadonly;
+        } else if (key === "__v_isReadonly") {
+          return isReadonly;
+        } else if (key === "__v_raw") {
+          return target;
+        }
+        return Reflect.get(
+          hasOwn(instrumentations, key) && key in target ? instrumentations : target,
+          key,
+          receiver
+        );
+      };
+    }
+    const mutableCollectionHandlers = {
+      get: /* @__PURE__ */ createInstrumentationGetter(false, false)
+    };
+    const shallowCollectionHandlers = {
+      get: /* @__PURE__ */ createInstrumentationGetter(false, true)
+    };
+    const readonlyCollectionHandlers = {
+      get: /* @__PURE__ */ createInstrumentationGetter(true, false)
+    };
+    const shallowReadonlyCollectionHandlers = {
+      get: /* @__PURE__ */ createInstrumentationGetter(true, true)
+    };
+    function checkIdentityKeys(target, has2, key) {
+      const rawKey = toRaw(key);
+      if (rawKey !== key && has2.call(target, rawKey)) {
+        const type = toRawType(target);
+        console.warn(
+          `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`
+        );
+      }
+    }
+  
+    const reactiveMap = /* @__PURE__ */ new WeakMap();
+    const shallowReactiveMap = /* @__PURE__ */ new WeakMap();
+    const readonlyMap = /* @__PURE__ */ new WeakMap();
+    const shallowReadonlyMap = /* @__PURE__ */ new WeakMap();
+    function targetTypeMap(rawType) {
+      switch (rawType) {
+        case "Object":
+        case "Array":
+          return 1 /* COMMON */;
+        case "Map":
+        case "Set":
+        case "WeakMap":
+        case "WeakSet":
+          return 2 /* COLLECTION */;
+        default:
+          return 0 /* INVALID */;
+      }
+    }
+    function getTargetType(value) {
+      return value["__v_skip"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));
+    }
+    function reactive(target) {
+      if (isReadonly(target)) {
+        return target;
+      }
+      return createReactiveObject(
+        target,
+        false,
+        mutableHandlers,
+        mutableCollectionHandlers,
+        reactiveMap
+      );
+    }
+    function shallowReactive(target) {
+      return createReactiveObject(
+        target,
+        false,
+        shallowReactiveHandlers,
+        shallowCollectionHandlers,
+        shallowReactiveMap
+      );
+    }
+    function readonly(target) {
+      return createReactiveObject(
+        target,
+        true,
+        readonlyHandlers,
+        readonlyCollectionHandlers,
+        readonlyMap
+      );
+    }
+    function shallowReadonly(target) {
+      return createReactiveObject(
+        target,
+        true,
+        shallowReadonlyHandlers,
+        shallowReadonlyCollectionHandlers,
+        shallowReadonlyMap
+      );
+    }
+    function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {
+      if (!isObject(target)) {
+        {
+          console.warn(`value cannot be made reactive: ${String(target)}`);
+        }
+        return target;
+      }
+      if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) {
+        return target;
+      }
+      const existingProxy = proxyMap.get(target);
+      if (existingProxy) {
+        return existingProxy;
+      }
+      const targetType = getTargetType(target);
+      if (targetType === 0 /* INVALID */) {
+        return target;
+      }
+      const proxy = new Proxy(
+        target,
+        targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers
+      );
+      proxyMap.set(target, proxy);
+      return proxy;
+    }
+    function isReactive(value) {
+      if (isReadonly(value)) {
+        return isReactive(value["__v_raw"]);
+      }
+      return !!(value && value["__v_isReactive"]);
+    }
+    function isReadonly(value) {
+      return !!(value && value["__v_isReadonly"]);
+    }
+    function isShallow(value) {
+      return !!(value && value["__v_isShallow"]);
+    }
+    function isProxy(value) {
+      return isReactive(value) || isReadonly(value);
+    }
+    function toRaw(observed) {
+      const raw = observed && observed["__v_raw"];
+      return raw ? toRaw(raw) : observed;
+    }
+    function markRaw(value) {
+      def(value, "__v_skip", true);
+      return value;
+    }
+    const toReactive = (value) => isObject(value) ? reactive(value) : value;
+    const toReadonly = (value) => isObject(value) ? readonly(value) : value;
+  
+    function trackRefValue(ref2) {
+      if (shouldTrack && activeEffect) {
+        ref2 = toRaw(ref2);
+        {
+          trackEffects(ref2.dep || (ref2.dep = createDep()), {
+            target: ref2,
+            type: "get",
+            key: "value"
+          });
+        }
+      }
+    }
+    function triggerRefValue(ref2, newVal) {
+      ref2 = toRaw(ref2);
+      const dep = ref2.dep;
+      if (dep) {
+        {
+          triggerEffects(dep, {
+            target: ref2,
+            type: "set",
+            key: "value",
+            newValue: newVal
+          });
+        }
+      }
+    }
+    function isRef(r) {
+      return !!(r && r.__v_isRef === true);
+    }
+    function ref(value) {
+      return createRef(value, false);
+    }
+    function shallowRef(value) {
+      return createRef(value, true);
+    }
+    function createRef(rawValue, shallow) {
+      if (isRef(rawValue)) {
+        return rawValue;
+      }
+      return new RefImpl(rawValue, shallow);
+    }
+    class RefImpl {
+      constructor(value, __v_isShallow) {
+        this.__v_isShallow = __v_isShallow;
+        this.dep = void 0;
+        this.__v_isRef = true;
+        this._rawValue = __v_isShallow ? value : toRaw(value);
+        this._value = __v_isShallow ? value : toReactive(value);
+      }
+      get value() {
+        trackRefValue(this);
+        return this._value;
+      }
+      set value(newVal) {
+        const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);
+        newVal = useDirectValue ? newVal : toRaw(newVal);
+        if (hasChanged(newVal, this._rawValue)) {
+          this._rawValue = newVal;
+          this._value = useDirectValue ? newVal : toReactive(newVal);
+          triggerRefValue(this, newVal);
+        }
+      }
+    }
+    function triggerRef(ref2) {
+      triggerRefValue(ref2, ref2.value );
+    }
+    function unref(ref2) {
+      return isRef(ref2) ? ref2.value : ref2;
+    }
+    function toValue(source) {
+      return isFunction(source) ? source() : unref(source);
+    }
+    const shallowUnwrapHandlers = {
+      get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),
+      set: (target, key, value, receiver) => {
+        const oldValue = target[key];
+        if (isRef(oldValue) && !isRef(value)) {
+          oldValue.value = value;
+          return true;
+        } else {
+          return Reflect.set(target, key, value, receiver);
+        }
+      }
+    };
+    function proxyRefs(objectWithRefs) {
+      return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);
+    }
+    class CustomRefImpl {
+      constructor(factory) {
+        this.dep = void 0;
+        this.__v_isRef = true;
+        const { get, set } = factory(
+          () => trackRefValue(this),
+          () => triggerRefValue(this)
+        );
+        this._get = get;
+        this._set = set;
+      }
+      get value() {
+        return this._get();
+      }
+      set value(newVal) {
+        this._set(newVal);
+      }
+    }
+    function customRef(factory) {
+      return new CustomRefImpl(factory);
+    }
+    function toRefs(object) {
+      if (!isProxy(object)) {
+        console.warn(`toRefs() expects a reactive object but received a plain one.`);
+      }
+      const ret = isArray(object) ? new Array(object.length) : {};
+      for (const key in object) {
+        ret[key] = propertyToRef(object, key);
+      }
+      return ret;
+    }
+    class ObjectRefImpl {
+      constructor(_object, _key, _defaultValue) {
+        this._object = _object;
+        this._key = _key;
+        this._defaultValue = _defaultValue;
+        this.__v_isRef = true;
+      }
+      get value() {
+        const val = this._object[this._key];
+        return val === void 0 ? this._defaultValue : val;
+      }
+      set value(newVal) {
+        this._object[this._key] = newVal;
+      }
+      get dep() {
+        return getDepFromReactive(toRaw(this._object), this._key);
+      }
+    }
+    class GetterRefImpl {
+      constructor(_getter) {
+        this._getter = _getter;
+        this.__v_isRef = true;
+        this.__v_isReadonly = true;
+      }
+      get value() {
+        return this._getter();
+      }
+    }
+    function toRef(source, key, defaultValue) {
+      if (isRef(source)) {
+        return source;
+      } else if (isFunction(source)) {
+        return new GetterRefImpl(source);
+      } else if (isObject(source) && arguments.length > 1) {
+        return propertyToRef(source, key, defaultValue);
+      } else {
+        return ref(source);
+      }
+    }
+    function propertyToRef(source, key, defaultValue) {
+      const val = source[key];
+      return isRef(val) ? val : new ObjectRefImpl(
+        source,
+        key,
+        defaultValue
+      );
+    }
+  
+    class ComputedRefImpl {
+      constructor(getter, _setter, isReadonly, isSSR) {
+        this._setter = _setter;
+        this.dep = void 0;
+        this.__v_isRef = true;
+        this["__v_isReadonly"] = false;
+        this._dirty = true;
+        this.effect = new ReactiveEffect(getter, () => {
+          if (!this._dirty) {
+            this._dirty = true;
+            triggerRefValue(this);
+          }
+        });
+        this.effect.computed = this;
+        this.effect.active = this._cacheable = !isSSR;
+        this["__v_isReadonly"] = isReadonly;
+      }
+      get value() {
+        const self = toRaw(this);
+        trackRefValue(self);
+        if (self._dirty || !self._cacheable) {
+          self._dirty = false;
+          self._value = self.effect.run();
+        }
+        return self._value;
+      }
+      set value(newValue) {
+        this._setter(newValue);
+      }
+    }
+    function computed$1(getterOrOptions, debugOptions, isSSR = false) {
+      let getter;
+      let setter;
+      const onlyGetter = isFunction(getterOrOptions);
+      if (onlyGetter) {
+        getter = getterOrOptions;
+        setter = () => {
+          console.warn("Write operation failed: computed value is readonly");
+        } ;
+      } else {
+        getter = getterOrOptions.get;
+        setter = getterOrOptions.set;
+      }
+      const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);
+      if (debugOptions && !isSSR) {
+        cRef.effect.onTrack = debugOptions.onTrack;
+        cRef.effect.onTrigger = debugOptions.onTrigger;
+      }
+      return cRef;
+    }
+  
+    const stack = [];
+    function pushWarningContext(vnode) {
+      stack.push(vnode);
+    }
+    function popWarningContext() {
+      stack.pop();
+    }
+    function warn(msg, ...args) {
+      pauseTracking();
+      const instance = stack.length ? stack[stack.length - 1].component : null;
+      const appWarnHandler = instance && instance.appContext.config.warnHandler;
+      const trace = getComponentTrace();
+      if (appWarnHandler) {
+        callWithErrorHandling(
+          appWarnHandler,
+          instance,
+          11,
+          [
+            msg + args.join(""),
+            instance && instance.proxy,
+            trace.map(
+              ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`
+            ).join("\n"),
+            trace
+          ]
+        );
+      } else {
+        const warnArgs = [`[Vue warn]: ${msg}`, ...args];
+        if (trace.length && // avoid spamming console during tests
+        true) {
+          warnArgs.push(`
+  `, ...formatTrace(trace));
+        }
+        console.warn(...warnArgs);
+      }
+      resetTracking();
+    }
+    function getComponentTrace() {
+      let currentVNode = stack[stack.length - 1];
+      if (!currentVNode) {
+        return [];
+      }
+      const normalizedStack = [];
+      while (currentVNode) {
+        const last = normalizedStack[0];
+        if (last && last.vnode === currentVNode) {
+          last.recurseCount++;
+        } else {
+          normalizedStack.push({
+            vnode: currentVNode,
+            recurseCount: 0
+          });
+        }
+        const parentInstance = currentVNode.component && currentVNode.component.parent;
+        currentVNode = parentInstance && parentInstance.vnode;
+      }
+      return normalizedStack;
+    }
+    function formatTrace(trace) {
+      const logs = [];
+      trace.forEach((entry, i) => {
+        logs.push(...i === 0 ? [] : [`
+  `], ...formatTraceEntry(entry));
+      });
+      return logs;
+    }
+    function formatTraceEntry({ vnode, recurseCount }) {
+      const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;
+      const isRoot = vnode.component ? vnode.component.parent == null : false;
+      const open = ` at <${formatComponentName(
+      vnode.component,
+      vnode.type,
+      isRoot
+    )}`;
+      const close = `>` + postfix;
+      return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];
+    }
+    function formatProps(props) {
+      const res = [];
+      const keys = Object.keys(props);
+      keys.slice(0, 3).forEach((key) => {
+        res.push(...formatProp(key, props[key]));
+      });
+      if (keys.length > 3) {
+        res.push(` ...`);
+      }
+      return res;
+    }
+    function formatProp(key, value, raw) {
+      if (isString(value)) {
+        value = JSON.stringify(value);
+        return raw ? value : [`${key}=${value}`];
+      } else if (typeof value === "number" || typeof value === "boolean" || value == null) {
+        return raw ? value : [`${key}=${value}`];
+      } else if (isRef(value)) {
+        value = formatProp(key, toRaw(value.value), true);
+        return raw ? value : [`${key}=Ref<`, value, `>`];
+      } else if (isFunction(value)) {
+        return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];
+      } else {
+        value = toRaw(value);
+        return raw ? value : [`${key}=`, value];
+      }
+    }
+    function assertNumber(val, type) {
+      if (val === void 0) {
+        return;
+      } else if (typeof val !== "number") {
+        warn(`${type} is not a valid number - got ${JSON.stringify(val)}.`);
+      } else if (isNaN(val)) {
+        warn(`${type} is NaN - the duration expression might be incorrect.`);
+      }
+    }
+  
+    const ErrorTypeStrings = {
+      ["sp"]: "serverPrefetch hook",
+      ["bc"]: "beforeCreate hook",
+      ["c"]: "created hook",
+      ["bm"]: "beforeMount hook",
+      ["m"]: "mounted hook",
+      ["bu"]: "beforeUpdate hook",
+      ["u"]: "updated",
+      ["bum"]: "beforeUnmount hook",
+      ["um"]: "unmounted hook",
+      ["a"]: "activated hook",
+      ["da"]: "deactivated hook",
+      ["ec"]: "errorCaptured hook",
+      ["rtc"]: "renderTracked hook",
+      ["rtg"]: "renderTriggered hook",
+      [0]: "setup function",
+      [1]: "render function",
+      [2]: "watcher getter",
+      [3]: "watcher callback",
+      [4]: "watcher cleanup function",
+      [5]: "native event handler",
+      [6]: "component event handler",
+      [7]: "vnode hook",
+      [8]: "directive hook",
+      [9]: "transition hook",
+      [10]: "app errorHandler",
+      [11]: "app warnHandler",
+      [12]: "ref function",
+      [13]: "async component loader",
+      [14]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core"
+    };
+    function callWithErrorHandling(fn, instance, type, args) {
+      let res;
+      try {
+        res = args ? fn(...args) : fn();
+      } catch (err) {
+        handleError(err, instance, type);
+      }
+      return res;
+    }
+    function callWithAsyncErrorHandling(fn, instance, type, args) {
+      if (isFunction(fn)) {
+        const res = callWithErrorHandling(fn, instance, type, args);
+        if (res && isPromise(res)) {
+          res.catch((err) => {
+            handleError(err, instance, type);
+          });
+        }
+        return res;
+      }
+      const values = [];
+      for (let i = 0; i < fn.length; i++) {
+        values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));
+      }
+      return values;
+    }
+    function handleError(err, instance, type, throwInDev = true) {
+      const contextVNode = instance ? instance.vnode : null;
+      if (instance) {
+        let cur = instance.parent;
+        const exposedInstance = instance.proxy;
+        const errorInfo = ErrorTypeStrings[type] ;
+        while (cur) {
+          const errorCapturedHooks = cur.ec;
+          if (errorCapturedHooks) {
+            for (let i = 0; i < errorCapturedHooks.length; i++) {
+              if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {
+                return;
+              }
+            }
+          }
+          cur = cur.parent;
+        }
+        const appErrorHandler = instance.appContext.config.errorHandler;
+        if (appErrorHandler) {
+          callWithErrorHandling(
+            appErrorHandler,
+            null,
+            10,
+            [err, exposedInstance, errorInfo]
+          );
+          return;
+        }
+      }
+      logError(err, type, contextVNode, throwInDev);
+    }
+    function logError(err, type, contextVNode, throwInDev = true) {
+      {
+        const info = ErrorTypeStrings[type];
+        if (contextVNode) {
+          pushWarningContext(contextVNode);
+        }
+        warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`);
+        if (contextVNode) {
+          popWarningContext();
+        }
+        if (throwInDev) {
+          throw err;
+        } else {
+          console.error(err);
+        }
+      }
+    }
+  
+    let isFlushing = false;
+    let isFlushPending = false;
+    const queue = [];
+    let flushIndex = 0;
+    const pendingPostFlushCbs = [];
+    let activePostFlushCbs = null;
+    let postFlushIndex = 0;
+    const resolvedPromise = /* @__PURE__ */ Promise.resolve();
+    let currentFlushPromise = null;
+    const RECURSION_LIMIT = 100;
+    function nextTick(fn) {
+      const p = currentFlushPromise || resolvedPromise;
+      return fn ? p.then(this ? fn.bind(this) : fn) : p;
+    }
+    function findInsertionIndex(id) {
+      let start = flushIndex + 1;
+      let end = queue.length;
+      while (start < end) {
+        const middle = start + end >>> 1;
+        const middleJobId = getId(queue[middle]);
+        middleJobId < id ? start = middle + 1 : end = middle;
+      }
+      return start;
+    }
+    function queueJob(job) {
+      if (!queue.length || !queue.includes(
+        job,
+        isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex
+      )) {
+        if (job.id == null) {
+          queue.push(job);
+        } else {
+          queue.splice(findInsertionIndex(job.id), 0, job);
+        }
+        queueFlush();
+      }
+    }
+    function queueFlush() {
+      if (!isFlushing && !isFlushPending) {
+        isFlushPending = true;
+        currentFlushPromise = resolvedPromise.then(flushJobs);
+      }
+    }
+    function invalidateJob(job) {
+      const i = queue.indexOf(job);
+      if (i > flushIndex) {
+        queue.splice(i, 1);
+      }
+    }
+    function queuePostFlushCb(cb) {
+      if (!isArray(cb)) {
+        if (!activePostFlushCbs || !activePostFlushCbs.includes(
+          cb,
+          cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex
+        )) {
+          pendingPostFlushCbs.push(cb);
+        }
+      } else {
+        pendingPostFlushCbs.push(...cb);
+      }
+      queueFlush();
+    }
+    function flushPreFlushCbs(seen, i = isFlushing ? flushIndex + 1 : 0) {
+      {
+        seen = seen || /* @__PURE__ */ new Map();
+      }
+      for (; i < queue.length; i++) {
+        const cb = queue[i];
+        if (cb && cb.pre) {
+          if (checkRecursiveUpdates(seen, cb)) {
+            continue;
+          }
+          queue.splice(i, 1);
+          i--;
+          cb();
+        }
+      }
+    }
+    function flushPostFlushCbs(seen) {
+      if (pendingPostFlushCbs.length) {
+        const deduped = [...new Set(pendingPostFlushCbs)];
+        pendingPostFlushCbs.length = 0;
+        if (activePostFlushCbs) {
+          activePostFlushCbs.push(...deduped);
+          return;
+        }
+        activePostFlushCbs = deduped;
+        {
+          seen = seen || /* @__PURE__ */ new Map();
+        }
+        activePostFlushCbs.sort((a, b) => getId(a) - getId(b));
+        for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {
+          if (checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {
+            continue;
+          }
+          activePostFlushCbs[postFlushIndex]();
+        }
+        activePostFlushCbs = null;
+        postFlushIndex = 0;
+      }
+    }
+    const getId = (job) => job.id == null ? Infinity : job.id;
+    const comparator = (a, b) => {
+      const diff = getId(a) - getId(b);
+      if (diff === 0) {
+        if (a.pre && !b.pre)
+          return -1;
+        if (b.pre && !a.pre)
+          return 1;
+      }
+      return diff;
+    };
+    function flushJobs(seen) {
+      isFlushPending = false;
+      isFlushing = true;
+      {
+        seen = seen || /* @__PURE__ */ new Map();
+      }
+      queue.sort(comparator);
+      const check = (job) => checkRecursiveUpdates(seen, job) ;
+      try {
+        for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {
+          const job = queue[flushIndex];
+          if (job && job.active !== false) {
+            if (check(job)) {
+              continue;
+            }
+            callWithErrorHandling(job, null, 14);
+          }
+        }
+      } finally {
+        flushIndex = 0;
+        queue.length = 0;
+        flushPostFlushCbs(seen);
+        isFlushing = false;
+        currentFlushPromise = null;
+        if (queue.length || pendingPostFlushCbs.length) {
+          flushJobs(seen);
+        }
+      }
+    }
+    function checkRecursiveUpdates(seen, fn) {
+      if (!seen.has(fn)) {
+        seen.set(fn, 1);
+      } else {
+        const count = seen.get(fn);
+        if (count > RECURSION_LIMIT) {
+          const instance = fn.ownerInstance;
+          const componentName = instance && getComponentName(instance.type);
+          warn(
+            `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`
+          );
+          return true;
+        } else {
+          seen.set(fn, count + 1);
+        }
+      }
+    }
+  
+    let isHmrUpdating = false;
+    const hmrDirtyComponents = /* @__PURE__ */ new Set();
+    {
+      getGlobalThis().__VUE_HMR_RUNTIME__ = {
+        createRecord: tryWrap(createRecord),
+        rerender: tryWrap(rerender),
+        reload: tryWrap(reload)
+      };
+    }
+    const map = /* @__PURE__ */ new Map();
+    function registerHMR(instance) {
+      const id = instance.type.__hmrId;
+      let record = map.get(id);
+      if (!record) {
+        createRecord(id, instance.type);
+        record = map.get(id);
+      }
+      record.instances.add(instance);
+    }
+    function unregisterHMR(instance) {
+      map.get(instance.type.__hmrId).instances.delete(instance);
+    }
+    function createRecord(id, initialDef) {
+      if (map.has(id)) {
+        return false;
+      }
+      map.set(id, {
+        initialDef: normalizeClassComponent(initialDef),
+        instances: /* @__PURE__ */ new Set()
+      });
+      return true;
+    }
+    function normalizeClassComponent(component) {
+      return isClassComponent(component) ? component.__vccOpts : component;
+    }
+    function rerender(id, newRender) {
+      const record = map.get(id);
+      if (!record) {
+        return;
+      }
+      record.initialDef.render = newRender;
+      [...record.instances].forEach((instance) => {
+        if (newRender) {
+          instance.render = newRender;
+          normalizeClassComponent(instance.type).render = newRender;
+        }
+        instance.renderCache = [];
+        isHmrUpdating = true;
+        instance.update();
+        isHmrUpdating = false;
+      });
+    }
+    function reload(id, newComp) {
+      const record = map.get(id);
+      if (!record)
+        return;
+      newComp = normalizeClassComponent(newComp);
+      updateComponentDef(record.initialDef, newComp);
+      const instances = [...record.instances];
+      for (const instance of instances) {
+        const oldComp = normalizeClassComponent(instance.type);
+        if (!hmrDirtyComponents.has(oldComp)) {
+          if (oldComp !== record.initialDef) {
+            updateComponentDef(oldComp, newComp);
+          }
+          hmrDirtyComponents.add(oldComp);
+        }
+        instance.appContext.propsCache.delete(instance.type);
+        instance.appContext.emitsCache.delete(instance.type);
+        instance.appContext.optionsCache.delete(instance.type);
+        if (instance.ceReload) {
+          hmrDirtyComponents.add(oldComp);
+          instance.ceReload(newComp.styles);
+          hmrDirtyComponents.delete(oldComp);
+        } else if (instance.parent) {
+          queueJob(instance.parent.update);
+        } else if (instance.appContext.reload) {
+          instance.appContext.reload();
+        } else if (typeof window !== "undefined") {
+          window.location.reload();
+        } else {
+          console.warn(
+            "[HMR] Root or manually mounted instance modified. Full reload required."
+          );
+        }
+      }
+      queuePostFlushCb(() => {
+        for (const instance of instances) {
+          hmrDirtyComponents.delete(
+            normalizeClassComponent(instance.type)
+          );
+        }
+      });
+    }
+    function updateComponentDef(oldComp, newComp) {
+      extend(oldComp, newComp);
+      for (const key in oldComp) {
+        if (key !== "__file" && !(key in newComp)) {
+          delete oldComp[key];
+        }
+      }
+    }
+    function tryWrap(fn) {
+      return (id, arg) => {
+        try {
+          return fn(id, arg);
+        } catch (e) {
+          console.error(e);
+          console.warn(
+            `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`
+          );
+        }
+      };
+    }
+  
+    exports.devtools = void 0;
+    let buffer = [];
+    let devtoolsNotInstalled = false;
+    function emit$1(event, ...args) {
+      if (exports.devtools) {
+        exports.devtools.emit(event, ...args);
+      } else if (!devtoolsNotInstalled) {
+        buffer.push({ event, args });
+      }
+    }
+    function setDevtoolsHook(hook, target) {
+      var _a, _b;
+      exports.devtools = hook;
+      if (exports.devtools) {
+        exports.devtools.enabled = true;
+        buffer.forEach(({ event, args }) => exports.devtools.emit(event, ...args));
+        buffer = [];
+      } else if (
+        // handle late devtools injection - only do this if we are in an actual
+        // browser environment to avoid the timer handle stalling test runner exit
+        // (#4815)
+        typeof window !== "undefined" && // some envs mock window but not fully
+        window.HTMLElement && // also exclude jsdom
+        !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom"))
+      ) {
+        const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];
+        replay.push((newHook) => {
+          setDevtoolsHook(newHook, target);
+        });
+        setTimeout(() => {
+          if (!exports.devtools) {
+            target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;
+            devtoolsNotInstalled = true;
+            buffer = [];
+          }
+        }, 3e3);
+      } else {
+        devtoolsNotInstalled = true;
+        buffer = [];
+      }
+    }
+    function devtoolsInitApp(app, version) {
+      emit$1("app:init" /* APP_INIT */, app, version, {
+        Fragment,
+        Text,
+        Comment,
+        Static
+      });
+    }
+    function devtoolsUnmountApp(app) {
+      emit$1("app:unmount" /* APP_UNMOUNT */, app);
+    }
+    const devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(
+      "component:added" /* COMPONENT_ADDED */
+    );
+    const devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook("component:updated" /* COMPONENT_UPDATED */);
+    const _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(
+      "component:removed" /* COMPONENT_REMOVED */
+    );
+    const devtoolsComponentRemoved = (component) => {
+      if (exports.devtools && typeof exports.devtools.cleanupBuffer === "function" && // remove the component if it wasn't buffered
+      !exports.devtools.cleanupBuffer(component)) {
+        _devtoolsComponentRemoved(component);
+      }
+    };
+    function createDevtoolsComponentHook(hook) {
+      return (component) => {
+        emit$1(
+          hook,
+          component.appContext.app,
+          component.uid,
+          component.parent ? component.parent.uid : void 0,
+          component
+        );
+      };
+    }
+    const devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(
+      "perf:start" /* PERFORMANCE_START */
+    );
+    const devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(
+      "perf:end" /* PERFORMANCE_END */
+    );
+    function createDevtoolsPerformanceHook(hook) {
+      return (component, type, time) => {
+        emit$1(hook, component.appContext.app, component.uid, component, type, time);
+      };
+    }
+    function devtoolsComponentEmit(component, event, params) {
+      emit$1(
+        "component:emit" /* COMPONENT_EMIT */,
+        component.appContext.app,
+        component,
+        event,
+        params
+      );
+    }
+  
+    function emit(instance, event, ...rawArgs) {
+      if (instance.isUnmounted)
+        return;
+      const props = instance.vnode.props || EMPTY_OBJ;
+      {
+        const {
+          emitsOptions,
+          propsOptions: [propsOptions]
+        } = instance;
+        if (emitsOptions) {
+          if (!(event in emitsOptions) && true) {
+            if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {
+              warn(
+                `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey(event)}" prop.`
+              );
+            }
+          } else {
+            const validator = emitsOptions[event];
+            if (isFunction(validator)) {
+              const isValid = validator(...rawArgs);
+              if (!isValid) {
+                warn(
+                  `Invalid event arguments: event validation failed for event "${event}".`
+                );
+              }
+            }
+          }
+        }
+      }
+      let args = rawArgs;
+      const isModelListener = event.startsWith("update:");
+      const modelArg = isModelListener && event.slice(7);
+      if (modelArg && modelArg in props) {
+        const modifiersKey = `${modelArg === "modelValue" ? "model" : modelArg}Modifiers`;
+        const { number, trim } = props[modifiersKey] || EMPTY_OBJ;
+        if (trim) {
+          args = rawArgs.map((a) => isString(a) ? a.trim() : a);
+        }
+        if (number) {
+          args = rawArgs.map(looseToNumber);
+        }
+      }
+      {
+        devtoolsComponentEmit(instance, event, args);
+      }
+      {
+        const lowerCaseEvent = event.toLowerCase();
+        if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {
+          warn(
+            `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName(
+            instance,
+            instance.type
+          )} but the handler is registered for "${event}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${hyphenate(event)}" instead of "${event}".`
+          );
+        }
+      }
+      let handlerName;
+      let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)
+      props[handlerName = toHandlerKey(camelize(event))];
+      if (!handler && isModelListener) {
+        handler = props[handlerName = toHandlerKey(hyphenate(event))];
+      }
+      if (handler) {
+        callWithAsyncErrorHandling(
+          handler,
+          instance,
+          6,
+          args
+        );
+      }
+      const onceHandler = props[handlerName + `Once`];
+      if (onceHandler) {
+        if (!instance.emitted) {
+          instance.emitted = {};
+        } else if (instance.emitted[handlerName]) {
+          return;
+        }
+        instance.emitted[handlerName] = true;
+        callWithAsyncErrorHandling(
+          onceHandler,
+          instance,
+          6,
+          args
+        );
+      }
+    }
+    function normalizeEmitsOptions(comp, appContext, asMixin = false) {
+      const cache = appContext.emitsCache;
+      const cached = cache.get(comp);
+      if (cached !== void 0) {
+        return cached;
+      }
+      const raw = comp.emits;
+      let normalized = {};
+      let hasExtends = false;
+      if (!isFunction(comp)) {
+        const extendEmits = (raw2) => {
+          const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);
+          if (normalizedFromExtend) {
+            hasExtends = true;
+            extend(normalized, normalizedFromExtend);
+          }
+        };
+        if (!asMixin && appContext.mixins.length) {
+          appContext.mixins.forEach(extendEmits);
+        }
+        if (comp.extends) {
+          extendEmits(comp.extends);
+        }
+        if (comp.mixins) {
+          comp.mixins.forEach(extendEmits);
+        }
+      }
+      if (!raw && !hasExtends) {
+        if (isObject(comp)) {
+          cache.set(comp, null);
+        }
+        return null;
+      }
+      if (isArray(raw)) {
+        raw.forEach((key) => normalized[key] = null);
+      } else {
+        extend(normalized, raw);
+      }
+      if (isObject(comp)) {
+        cache.set(comp, normalized);
+      }
+      return normalized;
+    }
+    function isEmitListener(options, key) {
+      if (!options || !isOn(key)) {
+        return false;
+      }
+      key = key.slice(2).replace(/Once$/, "");
+      return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);
+    }
+  
+    let currentRenderingInstance = null;
+    let currentScopeId = null;
+    function setCurrentRenderingInstance(instance) {
+      const prev = currentRenderingInstance;
+      currentRenderingInstance = instance;
+      currentScopeId = instance && instance.type.__scopeId || null;
+      return prev;
+    }
+    function pushScopeId(id) {
+      currentScopeId = id;
+    }
+    function popScopeId() {
+      currentScopeId = null;
+    }
+    const withScopeId = (_id) => withCtx;
+    function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {
+      if (!ctx)
+        return fn;
+      if (fn._n) {
+        return fn;
+      }
+      const renderFnWithContext = (...args) => {
+        if (renderFnWithContext._d) {
+          setBlockTracking(-1);
+        }
+        const prevInstance = setCurrentRenderingInstance(ctx);
+        let res;
+        try {
+          res = fn(...args);
+        } finally {
+          setCurrentRenderingInstance(prevInstance);
+          if (renderFnWithContext._d) {
+            setBlockTracking(1);
+          }
+        }
+        {
+          devtoolsComponentUpdated(ctx);
+        }
+        return res;
+      };
+      renderFnWithContext._n = true;
+      renderFnWithContext._c = true;
+      renderFnWithContext._d = true;
+      return renderFnWithContext;
+    }
+  
+    let accessedAttrs = false;
+    function markAttrsAccessed() {
+      accessedAttrs = true;
+    }
+    function renderComponentRoot(instance) {
+      const {
+        type: Component,
+        vnode,
+        proxy,
+        withProxy,
+        props,
+        propsOptions: [propsOptions],
+        slots,
+        attrs,
+        emit,
+        render,
+        renderCache,
+        data,
+        setupState,
+        ctx,
+        inheritAttrs
+      } = instance;
+      let result;
+      let fallthroughAttrs;
+      const prev = setCurrentRenderingInstance(instance);
+      {
+        accessedAttrs = false;
+      }
+      try {
+        if (vnode.shapeFlag & 4) {
+          const proxyToUse = withProxy || proxy;
+          result = normalizeVNode(
+            render.call(
+              proxyToUse,
+              proxyToUse,
+              renderCache,
+              props,
+              setupState,
+              data,
+              ctx
+            )
+          );
+          fallthroughAttrs = attrs;
+        } else {
+          const render2 = Component;
+          if (attrs === props) {
+            markAttrsAccessed();
+          }
+          result = normalizeVNode(
+            render2.length > 1 ? render2(
+              props,
+              true ? {
+                get attrs() {
+                  markAttrsAccessed();
+                  return attrs;
+                },
+                slots,
+                emit
+              } : { attrs, slots, emit }
+            ) : render2(
+              props,
+              null
+              /* we know it doesn't need it */
+            )
+          );
+          fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);
+        }
+      } catch (err) {
+        blockStack.length = 0;
+        handleError(err, instance, 1);
+        result = createVNode(Comment);
+      }
+      let root = result;
+      let setRoot = void 0;
+      if (result.patchFlag > 0 && result.patchFlag & 2048) {
+        [root, setRoot] = getChildRoot(result);
+      }
+      if (fallthroughAttrs && inheritAttrs !== false) {
+        const keys = Object.keys(fallthroughAttrs);
+        const { shapeFlag } = root;
+        if (keys.length) {
+          if (shapeFlag & (1 | 6)) {
+            if (propsOptions && keys.some(isModelListener)) {
+              fallthroughAttrs = filterModelListeners(
+                fallthroughAttrs,
+                propsOptions
+              );
+            }
+            root = cloneVNode(root, fallthroughAttrs);
+          } else if (!accessedAttrs && root.type !== Comment) {
+            const allAttrs = Object.keys(attrs);
+            const eventAttrs = [];
+            const extraAttrs = [];
+            for (let i = 0, l = allAttrs.length; i < l; i++) {
+              const key = allAttrs[i];
+              if (isOn(key)) {
+                if (!isModelListener(key)) {
+                  eventAttrs.push(key[2].toLowerCase() + key.slice(3));
+                }
+              } else {
+                extraAttrs.push(key);
+              }
+            }
+            if (extraAttrs.length) {
+              warn(
+                `Extraneous non-props attributes (${extraAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`
+              );
+            }
+            if (eventAttrs.length) {
+              warn(
+                `Extraneous non-emits event listeners (${eventAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.`
+              );
+            }
+          }
+        }
+      }
+      if (vnode.dirs) {
+        if (!isElementRoot(root)) {
+          warn(
+            `Runtime directive used on component with non-element root node. The directives will not function as intended.`
+          );
+        }
+        root = cloneVNode(root);
+        root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;
+      }
+      if (vnode.transition) {
+        if (!isElementRoot(root)) {
+          warn(
+            `Component inside <Transition> renders non-element root node that cannot be animated.`
+          );
+        }
+        root.transition = vnode.transition;
+      }
+      if (setRoot) {
+        setRoot(root);
+      } else {
+        result = root;
+      }
+      setCurrentRenderingInstance(prev);
+      return result;
+    }
+    const getChildRoot = (vnode) => {
+      const rawChildren = vnode.children;
+      const dynamicChildren = vnode.dynamicChildren;
+      const childRoot = filterSingleRoot(rawChildren);
+      if (!childRoot) {
+        return [vnode, void 0];
+      }
+      const index = rawChildren.indexOf(childRoot);
+      const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;
+      const setRoot = (updatedRoot) => {
+        rawChildren[index] = updatedRoot;
+        if (dynamicChildren) {
+          if (dynamicIndex > -1) {
+            dynamicChildren[dynamicIndex] = updatedRoot;
+          } else if (updatedRoot.patchFlag > 0) {
+            vnode.dynamicChildren = [...dynamicChildren, updatedRoot];
+          }
+        }
+      };
+      return [normalizeVNode(childRoot), setRoot];
+    };
+    function filterSingleRoot(children) {
+      let singleRoot;
+      for (let i = 0; i < children.length; i++) {
+        const child = children[i];
+        if (isVNode(child)) {
+          if (child.type !== Comment || child.children === "v-if") {
+            if (singleRoot) {
+              return;
+            } else {
+              singleRoot = child;
+            }
+          }
+        } else {
+          return;
+        }
+      }
+      return singleRoot;
+    }
+    const getFunctionalFallthrough = (attrs) => {
+      let res;
+      for (const key in attrs) {
+        if (key === "class" || key === "style" || isOn(key)) {
+          (res || (res = {}))[key] = attrs[key];
+        }
+      }
+      return res;
+    };
+    const filterModelListeners = (attrs, props) => {
+      const res = {};
+      for (const key in attrs) {
+        if (!isModelListener(key) || !(key.slice(9) in props)) {
+          res[key] = attrs[key];
+        }
+      }
+      return res;
+    };
+    const isElementRoot = (vnode) => {
+      return vnode.shapeFlag & (6 | 1) || vnode.type === Comment;
+    };
+    function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
+      const { props: prevProps, children: prevChildren, component } = prevVNode;
+      const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;
+      const emits = component.emitsOptions;
+      if ((prevChildren || nextChildren) && isHmrUpdating) {
+        return true;
+      }
+      if (nextVNode.dirs || nextVNode.transition) {
+        return true;
+      }
+      if (optimized && patchFlag >= 0) {
+        if (patchFlag & 1024) {
+          return true;
+        }
+        if (patchFlag & 16) {
+          if (!prevProps) {
+            return !!nextProps;
+          }
+          return hasPropsChanged(prevProps, nextProps, emits);
+        } else if (patchFlag & 8) {
+          const dynamicProps = nextVNode.dynamicProps;
+          for (let i = 0; i < dynamicProps.length; i++) {
+            const key = dynamicProps[i];
+            if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {
+              return true;
+            }
+          }
+        }
+      } else {
+        if (prevChildren || nextChildren) {
+          if (!nextChildren || !nextChildren.$stable) {
+            return true;
+          }
+        }
+        if (prevProps === nextProps) {
+          return false;
+        }
+        if (!prevProps) {
+          return !!nextProps;
+        }
+        if (!nextProps) {
+          return true;
+        }
+        return hasPropsChanged(prevProps, nextProps, emits);
+      }
+      return false;
+    }
+    function hasPropsChanged(prevProps, nextProps, emitsOptions) {
+      const nextKeys = Object.keys(nextProps);
+      if (nextKeys.length !== Object.keys(prevProps).length) {
+        return true;
+      }
+      for (let i = 0; i < nextKeys.length; i++) {
+        const key = nextKeys[i];
+        if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {
+          return true;
+        }
+      }
+      return false;
+    }
+    function updateHOCHostEl({ vnode, parent }, el) {
+      while (parent && parent.subTree === vnode) {
+        (vnode = parent.vnode).el = el;
+        parent = parent.parent;
+      }
+    }
+  
+    const isSuspense = (type) => type.__isSuspense;
+    const SuspenseImpl = {
+      name: "Suspense",
+      // In order to make Suspense tree-shakable, we need to avoid importing it
+      // directly in the renderer. The renderer checks for the __isSuspense flag
+      // on a vnode's type and calls the `process` method, passing in renderer
+      // internals.
+      __isSuspense: true,
+      process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {
+        if (n1 == null) {
+          mountSuspense(
+            n2,
+            container,
+            anchor,
+            parentComponent,
+            parentSuspense,
+            isSVG,
+            slotScopeIds,
+            optimized,
+            rendererInternals
+          );
+        } else {
+          patchSuspense(
+            n1,
+            n2,
+            container,
+            anchor,
+            parentComponent,
+            isSVG,
+            slotScopeIds,
+            optimized,
+            rendererInternals
+          );
+        }
+      },
+      hydrate: hydrateSuspense,
+      create: createSuspenseBoundary,
+      normalize: normalizeSuspenseChildren
+    };
+    const Suspense = SuspenseImpl ;
+    function triggerEvent(vnode, name) {
+      const eventListener = vnode.props && vnode.props[name];
+      if (isFunction(eventListener)) {
+        eventListener();
+      }
+    }
+    function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {
+      const {
+        p: patch,
+        o: { createElement }
+      } = rendererInternals;
+      const hiddenContainer = createElement("div");
+      const suspense = vnode.suspense = createSuspenseBoundary(
+        vnode,
+        parentSuspense,
+        parentComponent,
+        container,
+        hiddenContainer,
+        anchor,
+        isSVG,
+        slotScopeIds,
+        optimized,
+        rendererInternals
+      );
+      patch(
+        null,
+        suspense.pendingBranch = vnode.ssContent,
+        hiddenContainer,
+        null,
+        parentComponent,
+        suspense,
+        isSVG,
+        slotScopeIds
+      );
+      if (suspense.deps > 0) {
+        triggerEvent(vnode, "onPending");
+        triggerEvent(vnode, "onFallback");
+        patch(
+          null,
+          vnode.ssFallback,
+          container,
+          anchor,
+          parentComponent,
+          null,
+          // fallback tree will not have suspense context
+          isSVG,
+          slotScopeIds
+        );
+        setActiveBranch(suspense, vnode.ssFallback);
+      } else {
+        suspense.resolve(false, true);
+      }
+    }
+    function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {
+      const suspense = n2.suspense = n1.suspense;
+      suspense.vnode = n2;
+      n2.el = n1.el;
+      const newBranch = n2.ssContent;
+      const newFallback = n2.ssFallback;
+      const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;
+      if (pendingBranch) {
+        suspense.pendingBranch = newBranch;
+        if (isSameVNodeType(newBranch, pendingBranch)) {
+          patch(
+            pendingBranch,
+            newBranch,
+            suspense.hiddenContainer,
+            null,
+            parentComponent,
+            suspense,
+            isSVG,
+            slotScopeIds,
+            optimized
+          );
+          if (suspense.deps <= 0) {
+            suspense.resolve();
+          } else if (isInFallback) {
+            patch(
+              activeBranch,
+              newFallback,
+              container,
+              anchor,
+              parentComponent,
+              null,
+              // fallback tree will not have suspense context
+              isSVG,
+              slotScopeIds,
+              optimized
+            );
+            setActiveBranch(suspense, newFallback);
+          }
+        } else {
+          suspense.pendingId++;
+          if (isHydrating) {
+            suspense.isHydrating = false;
+            suspense.activeBranch = pendingBranch;
+          } else {
+            unmount(pendingBranch, parentComponent, suspense);
+          }
+          suspense.deps = 0;
+          suspense.effects.length = 0;
+          suspense.hiddenContainer = createElement("div");
+          if (isInFallback) {
+            patch(
+              null,
+              newBranch,
+              suspense.hiddenContainer,
+              null,
+              parentComponent,
+              suspense,
+              isSVG,
+              slotScopeIds,
+              optimized
+            );
+            if (suspense.deps <= 0) {
+              suspense.resolve();
+            } else {
+              patch(
+                activeBranch,
+                newFallback,
+                container,
+                anchor,
+                parentComponent,
+                null,
+                // fallback tree will not have suspense context
+                isSVG,
+                slotScopeIds,
+                optimized
+              );
+              setActiveBranch(suspense, newFallback);
+            }
+          } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {
+            patch(
+              activeBranch,
+              newBranch,
+              container,
+              anchor,
+              parentComponent,
+              suspense,
+              isSVG,
+              slotScopeIds,
+              optimized
+            );
+            suspense.resolve(true);
+          } else {
+            patch(
+              null,
+              newBranch,
+              suspense.hiddenContainer,
+              null,
+              parentComponent,
+              suspense,
+              isSVG,
+              slotScopeIds,
+              optimized
+            );
+            if (suspense.deps <= 0) {
+              suspense.resolve();
+            }
+          }
+        }
+      } else {
+        if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {
+          patch(
+            activeBranch,
+            newBranch,
+            container,
+            anchor,
+            parentComponent,
+            suspense,
+            isSVG,
+            slotScopeIds,
+            optimized
+          );
+          setActiveBranch(suspense, newBranch);
+        } else {
+          triggerEvent(n2, "onPending");
+          suspense.pendingBranch = newBranch;
+          suspense.pendingId++;
+          patch(
+            null,
+            newBranch,
+            suspense.hiddenContainer,
+            null,
+            parentComponent,
+            suspense,
+            isSVG,
+            slotScopeIds,
+            optimized
+          );
+          if (suspense.deps <= 0) {
+            suspense.resolve();
+          } else {
+            const { timeout, pendingId } = suspense;
+            if (timeout > 0) {
+              setTimeout(() => {
+                if (suspense.pendingId === pendingId) {
+                  suspense.fallback(newFallback);
+                }
+              }, timeout);
+            } else if (timeout === 0) {
+              suspense.fallback(newFallback);
+            }
+          }
+        }
+      }
+    }
+    let hasWarned = false;
+    function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) {
+      if (!hasWarned) {
+        hasWarned = true;
+        console[console.info ? "info" : "log"](
+          `<Suspense> is an experimental feature and its API will likely change.`
+        );
+      }
+      const {
+        p: patch,
+        m: move,
+        um: unmount,
+        n: next,
+        o: { parentNode, remove }
+      } = rendererInternals;
+      let parentSuspenseId;
+      const isSuspensible = isVNodeSuspensible(vnode);
+      if (isSuspensible) {
+        if (parentSuspense == null ? void 0 : parentSuspense.pendingBranch) {
+          parentSuspenseId = parentSuspense.pendingId;
+          parentSuspense.deps++;
+        }
+      }
+      const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0;
+      {
+        assertNumber(timeout, `Suspense timeout`);
+      }
+      const suspense = {
+        vnode,
+        parent: parentSuspense,
+        parentComponent,
+        isSVG,
+        container,
+        hiddenContainer,
+        anchor,
+        deps: 0,
+        pendingId: 0,
+        timeout: typeof timeout === "number" ? timeout : -1,
+        activeBranch: null,
+        pendingBranch: null,
+        isInFallback: true,
+        isHydrating,
+        isUnmounted: false,
+        effects: [],
+        resolve(resume = false, sync = false) {
+          {
+            if (!resume && !suspense.pendingBranch) {
+              throw new Error(
+                `suspense.resolve() is called without a pending branch.`
+              );
+            }
+            if (suspense.isUnmounted) {
+              throw new Error(
+                `suspense.resolve() is called on an already unmounted suspense boundary.`
+              );
+            }
+          }
+          const {
+            vnode: vnode2,
+            activeBranch,
+            pendingBranch,
+            pendingId,
+            effects,
+            parentComponent: parentComponent2,
+            container: container2
+          } = suspense;
+          if (suspense.isHydrating) {
+            suspense.isHydrating = false;
+          } else if (!resume) {
+            const delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in";
+            if (delayEnter) {
+              activeBranch.transition.afterLeave = () => {
+                if (pendingId === suspense.pendingId) {
+                  move(pendingBranch, container2, anchor2, 0);
+                }
+              };
+            }
+            let { anchor: anchor2 } = suspense;
+            if (activeBranch) {
+              anchor2 = next(activeBranch);
+              unmount(activeBranch, parentComponent2, suspense, true);
+            }
+            if (!delayEnter) {
+              move(pendingBranch, container2, anchor2, 0);
+            }
+          }
+          setActiveBranch(suspense, pendingBranch);
+          suspense.pendingBranch = null;
+          suspense.isInFallback = false;
+          let parent = suspense.parent;
+          let hasUnresolvedAncestor = false;
+          while (parent) {
+            if (parent.pendingBranch) {
+              parent.effects.push(...effects);
+              hasUnresolvedAncestor = true;
+              break;
+            }
+            parent = parent.parent;
+          }
+          if (!hasUnresolvedAncestor) {
+            queuePostFlushCb(effects);
+          }
+          suspense.effects = [];
+          if (isSuspensible) {
+            if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {
+              parentSuspense.deps--;
+              if (parentSuspense.deps === 0 && !sync) {
+                parentSuspense.resolve();
+              }
+            }
+          }
+          triggerEvent(vnode2, "onResolve");
+        },
+        fallback(fallbackVNode) {
+          if (!suspense.pendingBranch) {
+            return;
+          }
+          const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, isSVG: isSVG2 } = suspense;
+          triggerEvent(vnode2, "onFallback");
+          const anchor2 = next(activeBranch);
+          const mountFallback = () => {
+            if (!suspense.isInFallback) {
+              return;
+            }
+            patch(
+              null,
+              fallbackVNode,
+              container2,
+              anchor2,
+              parentComponent2,
+              null,
+              // fallback tree will not have suspense context
+              isSVG2,
+              slotScopeIds,
+              optimized
+            );
+            setActiveBranch(suspense, fallbackVNode);
+          };
+          const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in";
+          if (delayEnter) {
+            activeBranch.transition.afterLeave = mountFallback;
+          }
+          suspense.isInFallback = true;
+          unmount(
+            activeBranch,
+            parentComponent2,
+            null,
+            // no suspense so unmount hooks fire now
+            true
+            // shouldRemove
+          );
+          if (!delayEnter) {
+            mountFallback();
+          }
+        },
+        move(container2, anchor2, type) {
+          suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type);
+          suspense.container = container2;
+        },
+        next() {
+          return suspense.activeBranch && next(suspense.activeBranch);
+        },
+        registerDep(instance, setupRenderEffect) {
+          const isInPendingSuspense = !!suspense.pendingBranch;
+          if (isInPendingSuspense) {
+            suspense.deps++;
+          }
+          const hydratedEl = instance.vnode.el;
+          instance.asyncDep.catch((err) => {
+            handleError(err, instance, 0);
+          }).then((asyncSetupResult) => {
+            if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) {
+              return;
+            }
+            instance.asyncResolved = true;
+            const { vnode: vnode2 } = instance;
+            {
+              pushWarningContext(vnode2);
+            }
+            handleSetupResult(instance, asyncSetupResult, false);
+            if (hydratedEl) {
+              vnode2.el = hydratedEl;
+            }
+            const placeholder = !hydratedEl && instance.subTree.el;
+            setupRenderEffect(
+              instance,
+              vnode2,
+              // component may have been moved before resolve.
+              // if this is not a hydration, instance.subTree will be the comment
+              // placeholder.
+              parentNode(hydratedEl || instance.subTree.el),
+              // anchor will not be used if this is hydration, so only need to
+              // consider the comment placeholder case.
+              hydratedEl ? null : next(instance.subTree),
+              suspense,
+              isSVG,
+              optimized
+            );
+            if (placeholder) {
+              remove(placeholder);
+            }
+            updateHOCHostEl(instance, vnode2.el);
+            {
+              popWarningContext();
+            }
+            if (isInPendingSuspense && --suspense.deps === 0) {
+              suspense.resolve();
+            }
+          });
+        },
+        unmount(parentSuspense2, doRemove) {
+          suspense.isUnmounted = true;
+          if (suspense.activeBranch) {
+            unmount(
+              suspense.activeBranch,
+              parentComponent,
+              parentSuspense2,
+              doRemove
+            );
+          }
+          if (suspense.pendingBranch) {
+            unmount(
+              suspense.pendingBranch,
+              parentComponent,
+              parentSuspense2,
+              doRemove
+            );
+          }
+        }
+      };
+      return suspense;
+    }
+    function hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) {
+      const suspense = vnode.suspense = createSuspenseBoundary(
+        vnode,
+        parentSuspense,
+        parentComponent,
+        node.parentNode,
+        document.createElement("div"),
+        null,
+        isSVG,
+        slotScopeIds,
+        optimized,
+        rendererInternals,
+        true
+        /* hydrating */
+      );
+      const result = hydrateNode(
+        node,
+        suspense.pendingBranch = vnode.ssContent,
+        parentComponent,
+        suspense,
+        slotScopeIds,
+        optimized
+      );
+      if (suspense.deps === 0) {
+        suspense.resolve(false, true);
+      }
+      return result;
+    }
+    function normalizeSuspenseChildren(vnode) {
+      const { shapeFlag, children } = vnode;
+      const isSlotChildren = shapeFlag & 32;
+      vnode.ssContent = normalizeSuspenseSlot(
+        isSlotChildren ? children.default : children
+      );
+      vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment);
+    }
+    function normalizeSuspenseSlot(s) {
+      let block;
+      if (isFunction(s)) {
+        const trackBlock = isBlockTreeEnabled && s._c;
+        if (trackBlock) {
+          s._d = false;
+          openBlock();
+        }
+        s = s();
+        if (trackBlock) {
+          s._d = true;
+          block = currentBlock;
+          closeBlock();
+        }
+      }
+      if (isArray(s)) {
+        const singleChild = filterSingleRoot(s);
+        if (!singleChild) {
+          warn(`<Suspense> slots expect a single root node.`);
+        }
+        s = singleChild;
+      }
+      s = normalizeVNode(s);
+      if (block && !s.dynamicChildren) {
+        s.dynamicChildren = block.filter((c) => c !== s);
+      }
+      return s;
+    }
+    function queueEffectWithSuspense(fn, suspense) {
+      if (suspense && suspense.pendingBranch) {
+        if (isArray(fn)) {
+          suspense.effects.push(...fn);
+        } else {
+          suspense.effects.push(fn);
+        }
+      } else {
+        queuePostFlushCb(fn);
+      }
+    }
+    function setActiveBranch(suspense, branch) {
+      suspense.activeBranch = branch;
+      const { vnode, parentComponent } = suspense;
+      const el = vnode.el = branch.el;
+      if (parentComponent && parentComponent.subTree === vnode) {
+        parentComponent.vnode.el = el;
+        updateHOCHostEl(parentComponent, el);
+      }
+    }
+    function isVNodeSuspensible(vnode) {
+      var _a;
+      return ((_a = vnode.props) == null ? void 0 : _a.suspensible) != null && vnode.props.suspensible !== false;
+    }
+  
+    function watchEffect(effect, options) {
+      return doWatch(effect, null, options);
+    }
+    function watchPostEffect(effect, options) {
+      return doWatch(
+        effect,
+        null,
+        extend({}, options, { flush: "post" }) 
+      );
+    }
+    function watchSyncEffect(effect, options) {
+      return doWatch(
+        effect,
+        null,
+        extend({}, options, { flush: "sync" }) 
+      );
+    }
+    const INITIAL_WATCHER_VALUE = {};
+    function watch(source, cb, options) {
+      if (!isFunction(cb)) {
+        warn(
+          `\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.`
+        );
+      }
+      return doWatch(source, cb, options);
+    }
+    function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) {
+      var _a;
+      if (!cb) {
+        if (immediate !== void 0) {
+          warn(
+            `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.`
+          );
+        }
+        if (deep !== void 0) {
+          warn(
+            `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.`
+          );
+        }
+      }
+      const warnInvalidSource = (s) => {
+        warn(
+          `Invalid watch source: `,
+          s,
+          `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`
+        );
+      };
+      const instance = getCurrentScope() === ((_a = currentInstance) == null ? void 0 : _a.scope) ? currentInstance : null;
+      let getter;
+      let forceTrigger = false;
+      let isMultiSource = false;
+      if (isRef(source)) {
+        getter = () => source.value;
+        forceTrigger = isShallow(source);
+      } else if (isReactive(source)) {
+        getter = () => source;
+        deep = true;
+      } else if (isArray(source)) {
+        isMultiSource = true;
+        forceTrigger = source.some((s) => isReactive(s) || isShallow(s));
+        getter = () => source.map((s) => {
+          if (isRef(s)) {
+            return s.value;
+          } else if (isReactive(s)) {
+            return traverse(s);
+          } else if (isFunction(s)) {
+            return callWithErrorHandling(s, instance, 2);
+          } else {
+            warnInvalidSource(s);
+          }
+        });
+      } else if (isFunction(source)) {
+        if (cb) {
+          getter = () => callWithErrorHandling(source, instance, 2);
+        } else {
+          getter = () => {
+            if (instance && instance.isUnmounted) {
+              return;
+            }
+            if (cleanup) {
+              cleanup();
+            }
+            return callWithAsyncErrorHandling(
+              source,
+              instance,
+              3,
+              [onCleanup]
+            );
+          };
+        }
+      } else {
+        getter = NOOP;
+        warnInvalidSource(source);
+      }
+      if (cb && deep) {
+        const baseGetter = getter;
+        getter = () => traverse(baseGetter());
+      }
+      let cleanup;
+      let onCleanup = (fn) => {
+        cleanup = effect.onStop = () => {
+          callWithErrorHandling(fn, instance, 4);
+        };
+      };
+      let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;
+      const job = () => {
+        if (!effect.active) {
+          return;
+        }
+        if (cb) {
+          const newValue = effect.run();
+          if (deep || forceTrigger || (isMultiSource ? newValue.some(
+            (v, i) => hasChanged(v, oldValue[i])
+          ) : hasChanged(newValue, oldValue)) || false) {
+            if (cleanup) {
+              cleanup();
+            }
+            callWithAsyncErrorHandling(cb, instance, 3, [
+              newValue,
+              // pass undefined as the old value when it's changed for the first time
+              oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,
+              onCleanup
+            ]);
+            oldValue = newValue;
+          }
+        } else {
+          effect.run();
+        }
+      };
+      job.allowRecurse = !!cb;
+      let scheduler;
+      if (flush === "sync") {
+        scheduler = job;
+      } else if (flush === "post") {
+        scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);
+      } else {
+        job.pre = true;
+        if (instance)
+          job.id = instance.uid;
+        scheduler = () => queueJob(job);
+      }
+      const effect = new ReactiveEffect(getter, scheduler);
+      {
+        effect.onTrack = onTrack;
+        effect.onTrigger = onTrigger;
+      }
+      if (cb) {
+        if (immediate) {
+          job();
+        } else {
+          oldValue = effect.run();
+        }
+      } else if (flush === "post") {
+        queuePostRenderEffect(
+          effect.run.bind(effect),
+          instance && instance.suspense
+        );
+      } else {
+        effect.run();
+      }
+      const unwatch = () => {
+        effect.stop();
+        if (instance && instance.scope) {
+          remove(instance.scope.effects, effect);
+        }
+      };
+      return unwatch;
+    }
+    function instanceWatch(source, value, options) {
+      const publicThis = this.proxy;
+      const getter = isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);
+      let cb;
+      if (isFunction(value)) {
+        cb = value;
+      } else {
+        cb = value.handler;
+        options = value;
+      }
+      const cur = currentInstance;
+      setCurrentInstance(this);
+      const res = doWatch(getter, cb.bind(publicThis), options);
+      if (cur) {
+        setCurrentInstance(cur);
+      } else {
+        unsetCurrentInstance();
+      }
+      return res;
+    }
+    function createPathGetter(ctx, path) {
+      const segments = path.split(".");
+      return () => {
+        let cur = ctx;
+        for (let i = 0; i < segments.length && cur; i++) {
+          cur = cur[segments[i]];
+        }
+        return cur;
+      };
+    }
+    function traverse(value, seen) {
+      if (!isObject(value) || value["__v_skip"]) {
+        return value;
+      }
+      seen = seen || /* @__PURE__ */ new Set();
+      if (seen.has(value)) {
+        return value;
+      }
+      seen.add(value);
+      if (isRef(value)) {
+        traverse(value.value, seen);
+      } else if (isArray(value)) {
+        for (let i = 0; i < value.length; i++) {
+          traverse(value[i], seen);
+        }
+      } else if (isSet(value) || isMap(value)) {
+        value.forEach((v) => {
+          traverse(v, seen);
+        });
+      } else if (isPlainObject(value)) {
+        for (const key in value) {
+          traverse(value[key], seen);
+        }
+      }
+      return value;
+    }
+  
+    function validateDirectiveName(name) {
+      if (isBuiltInDirective(name)) {
+        warn("Do not use built-in directive ids as custom directive id: " + name);
+      }
+    }
+    function withDirectives(vnode, directives) {
+      const internalInstance = currentRenderingInstance;
+      if (internalInstance === null) {
+        warn(`withDirectives can only be used inside render functions.`);
+        return vnode;
+      }
+      const instance = getExposeProxy(internalInstance) || internalInstance.proxy;
+      const bindings = vnode.dirs || (vnode.dirs = []);
+      for (let i = 0; i < directives.length; i++) {
+        let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];
+        if (dir) {
+          if (isFunction(dir)) {
+            dir = {
+              mounted: dir,
+              updated: dir
+            };
+          }
+          if (dir.deep) {
+            traverse(value);
+          }
+          bindings.push({
+            dir,
+            instance,
+            value,
+            oldValue: void 0,
+            arg,
+            modifiers
+          });
+        }
+      }
+      return vnode;
+    }
+    function invokeDirectiveHook(vnode, prevVNode, instance, name) {
+      const bindings = vnode.dirs;
+      const oldBindings = prevVNode && prevVNode.dirs;
+      for (let i = 0; i < bindings.length; i++) {
+        const binding = bindings[i];
+        if (oldBindings) {
+          binding.oldValue = oldBindings[i].value;
+        }
+        let hook = binding.dir[name];
+        if (hook) {
+          pauseTracking();
+          callWithAsyncErrorHandling(hook, instance, 8, [
+            vnode.el,
+            binding,
+            vnode,
+            prevVNode
+          ]);
+          resetTracking();
+        }
+      }
+    }
+  
+    function useTransitionState() {
+      const state = {
+        isMounted: false,
+        isLeaving: false,
+        isUnmounting: false,
+        leavingVNodes: /* @__PURE__ */ new Map()
+      };
+      onMounted(() => {
+        state.isMounted = true;
+      });
+      onBeforeUnmount(() => {
+        state.isUnmounting = true;
+      });
+      return state;
+    }
+    const TransitionHookValidator = [Function, Array];
+    const BaseTransitionPropsValidators = {
+      mode: String,
+      appear: Boolean,
+      persisted: Boolean,
+      // enter
+      onBeforeEnter: TransitionHookValidator,
+      onEnter: TransitionHookValidator,
+      onAfterEnter: TransitionHookValidator,
+      onEnterCancelled: TransitionHookValidator,
+      // leave
+      onBeforeLeave: TransitionHookValidator,
+      onLeave: TransitionHookValidator,
+      onAfterLeave: TransitionHookValidator,
+      onLeaveCancelled: TransitionHookValidator,
+      // appear
+      onBeforeAppear: TransitionHookValidator,
+      onAppear: TransitionHookValidator,
+      onAfterAppear: TransitionHookValidator,
+      onAppearCancelled: TransitionHookValidator
+    };
+    const BaseTransitionImpl = {
+      name: `BaseTransition`,
+      props: BaseTransitionPropsValidators,
+      setup(props, { slots }) {
+        const instance = getCurrentInstance();
+        const state = useTransitionState();
+        let prevTransitionKey;
+        return () => {
+          const children = slots.default && getTransitionRawChildren(slots.default(), true);
+          if (!children || !children.length) {
+            return;
+          }
+          let child = children[0];
+          if (children.length > 1) {
+            let hasFound = false;
+            for (const c of children) {
+              if (c.type !== Comment) {
+                if (hasFound) {
+                  warn(
+                    "<transition> can only be used on a single element or component. Use <transition-group> for lists."
+                  );
+                  break;
+                }
+                child = c;
+                hasFound = true;
+              }
+            }
+          }
+          const rawProps = toRaw(props);
+          const { mode } = rawProps;
+          if (mode && mode !== "in-out" && mode !== "out-in" && mode !== "default") {
+            warn(`invalid <transition> mode: ${mode}`);
+          }
+          if (state.isLeaving) {
+            return emptyPlaceholder(child);
+          }
+          const innerChild = getKeepAliveChild(child);
+          if (!innerChild) {
+            return emptyPlaceholder(child);
+          }
+          const enterHooks = resolveTransitionHooks(
+            innerChild,
+            rawProps,
+            state,
+            instance
+          );
+          setTransitionHooks(innerChild, enterHooks);
+          const oldChild = instance.subTree;
+          const oldInnerChild = oldChild && getKeepAliveChild(oldChild);
+          let transitionKeyChanged = false;
+          const { getTransitionKey } = innerChild.type;
+          if (getTransitionKey) {
+            const key = getTransitionKey();
+            if (prevTransitionKey === void 0) {
+              prevTransitionKey = key;
+            } else if (key !== prevTransitionKey) {
+              prevTransitionKey = key;
+              transitionKeyChanged = true;
+            }
+          }
+          if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {
+            const leavingHooks = resolveTransitionHooks(
+              oldInnerChild,
+              rawProps,
+              state,
+              instance
+            );
+            setTransitionHooks(oldInnerChild, leavingHooks);
+            if (mode === "out-in") {
+              state.isLeaving = true;
+              leavingHooks.afterLeave = () => {
+                state.isLeaving = false;
+                if (instance.update.active !== false) {
+                  instance.update();
+                }
+              };
+              return emptyPlaceholder(child);
+            } else if (mode === "in-out" && innerChild.type !== Comment) {
+              leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {
+                const leavingVNodesCache = getLeavingNodesForType(
+                  state,
+                  oldInnerChild
+                );
+                leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;
+                el._leaveCb = () => {
+                  earlyRemove();
+                  el._leaveCb = void 0;
+                  delete enterHooks.delayedLeave;
+                };
+                enterHooks.delayedLeave = delayedLeave;
+              };
+            }
+          }
+          return child;
+        };
+      }
+    };
+    const BaseTransition = BaseTransitionImpl;
+    function getLeavingNodesForType(state, vnode) {
+      const { leavingVNodes } = state;
+      let leavingVNodesCache = leavingVNodes.get(vnode.type);
+      if (!leavingVNodesCache) {
+        leavingVNodesCache = /* @__PURE__ */ Object.create(null);
+        leavingVNodes.set(vnode.type, leavingVNodesCache);
+      }
+      return leavingVNodesCache;
+    }
+    function resolveTransitionHooks(vnode, props, state, instance) {
+      const {
+        appear,
+        mode,
+        persisted = false,
+        onBeforeEnter,
+        onEnter,
+        onAfterEnter,
+        onEnterCancelled,
+        onBeforeLeave,
+        onLeave,
+        onAfterLeave,
+        onLeaveCancelled,
+        onBeforeAppear,
+        onAppear,
+        onAfterAppear,
+        onAppearCancelled
+      } = props;
+      const key = String(vnode.key);
+      const leavingVNodesCache = getLeavingNodesForType(state, vnode);
+      const callHook = (hook, args) => {
+        hook && callWithAsyncErrorHandling(
+          hook,
+          instance,
+          9,
+          args
+        );
+      };
+      const callAsyncHook = (hook, args) => {
+        const done = args[1];
+        callHook(hook, args);
+        if (isArray(hook)) {
+          if (hook.every((hook2) => hook2.length <= 1))
+            done();
+        } else if (hook.length <= 1) {
+          done();
+        }
+      };
+      const hooks = {
+        mode,
+        persisted,
+        beforeEnter(el) {
+          let hook = onBeforeEnter;
+          if (!state.isMounted) {
+            if (appear) {
+              hook = onBeforeAppear || onBeforeEnter;
+            } else {
+              return;
+            }
+          }
+          if (el._leaveCb) {
+            el._leaveCb(
+              true
+              /* cancelled */
+            );
+          }
+          const leavingVNode = leavingVNodesCache[key];
+          if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el._leaveCb) {
+            leavingVNode.el._leaveCb();
+          }
+          callHook(hook, [el]);
+        },
+        enter(el) {
+          let hook = onEnter;
+          let afterHook = onAfterEnter;
+          let cancelHook = onEnterCancelled;
+          if (!state.isMounted) {
+            if (appear) {
+              hook = onAppear || onEnter;
+              afterHook = onAfterAppear || onAfterEnter;
+              cancelHook = onAppearCancelled || onEnterCancelled;
+            } else {
+              return;
+            }
+          }
+          let called = false;
+          const done = el._enterCb = (cancelled) => {
+            if (called)
+              return;
+            called = true;
+            if (cancelled) {
+              callHook(cancelHook, [el]);
+            } else {
+              callHook(afterHook, [el]);
+            }
+            if (hooks.delayedLeave) {
+              hooks.delayedLeave();
+            }
+            el._enterCb = void 0;
+          };
+          if (hook) {
+            callAsyncHook(hook, [el, done]);
+          } else {
+            done();
+          }
+        },
+        leave(el, remove) {
+          const key2 = String(vnode.key);
+          if (el._enterCb) {
+            el._enterCb(
+              true
+              /* cancelled */
+            );
+          }
+          if (state.isUnmounting) {
+            return remove();
+          }
+          callHook(onBeforeLeave, [el]);
+          let called = false;
+          const done = el._leaveCb = (cancelled) => {
+            if (called)
+              return;
+            called = true;
+            remove();
+            if (cancelled) {
+              callHook(onLeaveCancelled, [el]);
+            } else {
+              callHook(onAfterLeave, [el]);
+            }
+            el._leaveCb = void 0;
+            if (leavingVNodesCache[key2] === vnode) {
+              delete leavingVNodesCache[key2];
+            }
+          };
+          leavingVNodesCache[key2] = vnode;
+          if (onLeave) {
+            callAsyncHook(onLeave, [el, done]);
+          } else {
+            done();
+          }
+        },
+        clone(vnode2) {
+          return resolveTransitionHooks(vnode2, props, state, instance);
+        }
+      };
+      return hooks;
+    }
+    function emptyPlaceholder(vnode) {
+      if (isKeepAlive(vnode)) {
+        vnode = cloneVNode(vnode);
+        vnode.children = null;
+        return vnode;
+      }
+    }
+    function getKeepAliveChild(vnode) {
+      return isKeepAlive(vnode) ? vnode.children ? vnode.children[0] : void 0 : vnode;
+    }
+    function setTransitionHooks(vnode, hooks) {
+      if (vnode.shapeFlag & 6 && vnode.component) {
+        setTransitionHooks(vnode.component.subTree, hooks);
+      } else if (vnode.shapeFlag & 128) {
+        vnode.ssContent.transition = hooks.clone(vnode.ssContent);
+        vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);
+      } else {
+        vnode.transition = hooks;
+      }
+    }
+    function getTransitionRawChildren(children, keepComment = false, parentKey) {
+      let ret = [];
+      let keyedFragmentCount = 0;
+      for (let i = 0; i < children.length; i++) {
+        let child = children[i];
+        const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);
+        if (child.type === Fragment) {
+          if (child.patchFlag & 128)
+            keyedFragmentCount++;
+          ret = ret.concat(
+            getTransitionRawChildren(child.children, keepComment, key)
+          );
+        } else if (keepComment || child.type !== Comment) {
+          ret.push(key != null ? cloneVNode(child, { key }) : child);
+        }
+      }
+      if (keyedFragmentCount > 1) {
+        for (let i = 0; i < ret.length; i++) {
+          ret[i].patchFlag = -2;
+        }
+      }
+      return ret;
+    }
+  
+    function defineComponent(options, extraOptions) {
+      return isFunction(options) ? (
+        // #8326: extend call and options.name access are considered side-effects
+        // by Rollup, so we have to wrap it in a pure-annotated IIFE.
+        /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()
+      ) : options;
+    }
+  
+    const isAsyncWrapper = (i) => !!i.type.__asyncLoader;
+    function defineAsyncComponent(source) {
+      if (isFunction(source)) {
+        source = { loader: source };
+      }
+      const {
+        loader,
+        loadingComponent,
+        errorComponent,
+        delay = 200,
+        timeout,
+        // undefined = never times out
+        suspensible = true,
+        onError: userOnError
+      } = source;
+      let pendingRequest = null;
+      let resolvedComp;
+      let retries = 0;
+      const retry = () => {
+        retries++;
+        pendingRequest = null;
+        return load();
+      };
+      const load = () => {
+        let thisRequest;
+        return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {
+          err = err instanceof Error ? err : new Error(String(err));
+          if (userOnError) {
+            return new Promise((resolve, reject) => {
+              const userRetry = () => resolve(retry());
+              const userFail = () => reject(err);
+              userOnError(err, userRetry, userFail, retries + 1);
+            });
+          } else {
+            throw err;
+          }
+        }).then((comp) => {
+          if (thisRequest !== pendingRequest && pendingRequest) {
+            return pendingRequest;
+          }
+          if (!comp) {
+            warn(
+              `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`
+            );
+          }
+          if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) {
+            comp = comp.default;
+          }
+          if (comp && !isObject(comp) && !isFunction(comp)) {
+            throw new Error(`Invalid async component load result: ${comp}`);
+          }
+          resolvedComp = comp;
+          return comp;
+        }));
+      };
+      return defineComponent({
+        name: "AsyncComponentWrapper",
+        __asyncLoader: load,
+        get __asyncResolved() {
+          return resolvedComp;
+        },
+        setup() {
+          const instance = currentInstance;
+          if (resolvedComp) {
+            return () => createInnerComp(resolvedComp, instance);
+          }
+          const onError = (err) => {
+            pendingRequest = null;
+            handleError(
+              err,
+              instance,
+              13,
+              !errorComponent
+              /* do not throw in dev if user provided error component */
+            );
+          };
+          if (suspensible && instance.suspense || false) {
+            return load().then((comp) => {
+              return () => createInnerComp(comp, instance);
+            }).catch((err) => {
+              onError(err);
+              return () => errorComponent ? createVNode(errorComponent, {
+                error: err
+              }) : null;
+            });
+          }
+          const loaded = ref(false);
+          const error = ref();
+          const delayed = ref(!!delay);
+          if (delay) {
+            setTimeout(() => {
+              delayed.value = false;
+            }, delay);
+          }
+          if (timeout != null) {
+            setTimeout(() => {
+              if (!loaded.value && !error.value) {
+                const err = new Error(
+                  `Async component timed out after ${timeout}ms.`
+                );
+                onError(err);
+                error.value = err;
+              }
+            }, timeout);
+          }
+          load().then(() => {
+            loaded.value = true;
+            if (instance.parent && isKeepAlive(instance.parent.vnode)) {
+              queueJob(instance.parent.update);
+            }
+          }).catch((err) => {
+            onError(err);
+            error.value = err;
+          });
+          return () => {
+            if (loaded.value && resolvedComp) {
+              return createInnerComp(resolvedComp, instance);
+            } else if (error.value && errorComponent) {
+              return createVNode(errorComponent, {
+                error: error.value
+              });
+            } else if (loadingComponent && !delayed.value) {
+              return createVNode(loadingComponent);
+            }
+          };
+        }
+      });
+    }
+    function createInnerComp(comp, parent) {
+      const { ref: ref2, props, children, ce } = parent.vnode;
+      const vnode = createVNode(comp, props, children);
+      vnode.ref = ref2;
+      vnode.ce = ce;
+      delete parent.vnode.ce;
+      return vnode;
+    }
+  
+    const isKeepAlive = (vnode) => vnode.type.__isKeepAlive;
+    const KeepAliveImpl = {
+      name: `KeepAlive`,
+      // Marker for special handling inside the renderer. We are not using a ===
+      // check directly on KeepAlive in the renderer, because importing it directly
+      // would prevent it from being tree-shaken.
+      __isKeepAlive: true,
+      props: {
+        include: [String, RegExp, Array],
+        exclude: [String, RegExp, Array],
+        max: [String, Number]
+      },
+      setup(props, { slots }) {
+        const instance = getCurrentInstance();
+        const sharedContext = instance.ctx;
+        const cache = /* @__PURE__ */ new Map();
+        const keys = /* @__PURE__ */ new Set();
+        let current = null;
+        {
+          instance.__v_cache = cache;
+        }
+        const parentSuspense = instance.suspense;
+        const {
+          renderer: {
+            p: patch,
+            m: move,
+            um: _unmount,
+            o: { createElement }
+          }
+        } = sharedContext;
+        const storageContainer = createElement("div");
+        sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => {
+          const instance2 = vnode.component;
+          move(vnode, container, anchor, 0, parentSuspense);
+          patch(
+            instance2.vnode,
+            vnode,
+            container,
+            anchor,
+            instance2,
+            parentSuspense,
+            isSVG,
+            vnode.slotScopeIds,
+            optimized
+          );
+          queuePostRenderEffect(() => {
+            instance2.isDeactivated = false;
+            if (instance2.a) {
+              invokeArrayFns(instance2.a);
+            }
+            const vnodeHook = vnode.props && vnode.props.onVnodeMounted;
+            if (vnodeHook) {
+              invokeVNodeHook(vnodeHook, instance2.parent, vnode);
+            }
+          }, parentSuspense);
+          {
+            devtoolsComponentAdded(instance2);
+          }
+        };
+        sharedContext.deactivate = (vnode) => {
+          const instance2 = vnode.component;
+          move(vnode, storageContainer, null, 1, parentSuspense);
+          queuePostRenderEffect(() => {
+            if (instance2.da) {
+              invokeArrayFns(instance2.da);
+            }
+            const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;
+            if (vnodeHook) {
+              invokeVNodeHook(vnodeHook, instance2.parent, vnode);
+            }
+            instance2.isDeactivated = true;
+          }, parentSuspense);
+          {
+            devtoolsComponentAdded(instance2);
+          }
+        };
+        function unmount(vnode) {
+          resetShapeFlag(vnode);
+          _unmount(vnode, instance, parentSuspense, true);
+        }
+        function pruneCache(filter) {
+          cache.forEach((vnode, key) => {
+            const name = getComponentName(vnode.type);
+            if (name && (!filter || !filter(name))) {
+              pruneCacheEntry(key);
+            }
+          });
+        }
+        function pruneCacheEntry(key) {
+          const cached = cache.get(key);
+          if (!current || !isSameVNodeType(cached, current)) {
+            unmount(cached);
+          } else if (current) {
+            resetShapeFlag(current);
+          }
+          cache.delete(key);
+          keys.delete(key);
+        }
+        watch(
+          () => [props.include, props.exclude],
+          ([include, exclude]) => {
+            include && pruneCache((name) => matches(include, name));
+            exclude && pruneCache((name) => !matches(exclude, name));
+          },
+          // prune post-render after `current` has been updated
+          { flush: "post", deep: true }
+        );
+        let pendingCacheKey = null;
+        const cacheSubtree = () => {
+          if (pendingCacheKey != null) {
+            cache.set(pendingCacheKey, getInnerChild(instance.subTree));
+          }
+        };
+        onMounted(cacheSubtree);
+        onUpdated(cacheSubtree);
+        onBeforeUnmount(() => {
+          cache.forEach((cached) => {
+            const { subTree, suspense } = instance;
+            const vnode = getInnerChild(subTree);
+            if (cached.type === vnode.type && cached.key === vnode.key) {
+              resetShapeFlag(vnode);
+              const da = vnode.component.da;
+              da && queuePostRenderEffect(da, suspense);
+              return;
+            }
+            unmount(cached);
+          });
+        });
+        return () => {
+          pendingCacheKey = null;
+          if (!slots.default) {
+            return null;
+          }
+          const children = slots.default();
+          const rawVNode = children[0];
+          if (children.length > 1) {
+            {
+              warn(`KeepAlive should contain exactly one component child.`);
+            }
+            current = null;
+            return children;
+          } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {
+            current = null;
+            return rawVNode;
+          }
+          let vnode = getInnerChild(rawVNode);
+          const comp = vnode.type;
+          const name = getComponentName(
+            isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp
+          );
+          const { include, exclude, max } = props;
+          if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {
+            current = vnode;
+            return rawVNode;
+          }
+          const key = vnode.key == null ? comp : vnode.key;
+          const cachedVNode = cache.get(key);
+          if (vnode.el) {
+            vnode = cloneVNode(vnode);
+            if (rawVNode.shapeFlag & 128) {
+              rawVNode.ssContent = vnode;
+            }
+          }
+          pendingCacheKey = key;
+          if (cachedVNode) {
+            vnode.el = cachedVNode.el;
+            vnode.component = cachedVNode.component;
+            if (vnode.transition) {
+              setTransitionHooks(vnode, vnode.transition);
+            }
+            vnode.shapeFlag |= 512;
+            keys.delete(key);
+            keys.add(key);
+          } else {
+            keys.add(key);
+            if (max && keys.size > parseInt(max, 10)) {
+              pruneCacheEntry(keys.values().next().value);
+            }
+          }
+          vnode.shapeFlag |= 256;
+          current = vnode;
+          return isSuspense(rawVNode.type) ? rawVNode : vnode;
+        };
+      }
+    };
+    const KeepAlive = KeepAliveImpl;
+    function matches(pattern, name) {
+      if (isArray(pattern)) {
+        return pattern.some((p) => matches(p, name));
+      } else if (isString(pattern)) {
+        return pattern.split(",").includes(name);
+      } else if (isRegExp(pattern)) {
+        return pattern.test(name);
+      }
+      return false;
+    }
+    function onActivated(hook, target) {
+      registerKeepAliveHook(hook, "a", target);
+    }
+    function onDeactivated(hook, target) {
+      registerKeepAliveHook(hook, "da", target);
+    }
+    function registerKeepAliveHook(hook, type, target = currentInstance) {
+      const wrappedHook = hook.__wdc || (hook.__wdc = () => {
+        let current = target;
+        while (current) {
+          if (current.isDeactivated) {
+            return;
+          }
+          current = current.parent;
+        }
+        return hook();
+      });
+      injectHook(type, wrappedHook, target);
+      if (target) {
+        let current = target.parent;
+        while (current && current.parent) {
+          if (isKeepAlive(current.parent.vnode)) {
+            injectToKeepAliveRoot(wrappedHook, type, target, current);
+          }
+          current = current.parent;
+        }
+      }
+    }
+    function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {
+      const injected = injectHook(
+        type,
+        hook,
+        keepAliveRoot,
+        true
+        /* prepend */
+      );
+      onUnmounted(() => {
+        remove(keepAliveRoot[type], injected);
+      }, target);
+    }
+    function resetShapeFlag(vnode) {
+      vnode.shapeFlag &= ~256;
+      vnode.shapeFlag &= ~512;
+    }
+    function getInnerChild(vnode) {
+      return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;
+    }
+  
+    function injectHook(type, hook, target = currentInstance, prepend = false) {
+      if (target) {
+        const hooks = target[type] || (target[type] = []);
+        const wrappedHook = hook.__weh || (hook.__weh = (...args) => {
+          if (target.isUnmounted) {
+            return;
+          }
+          pauseTracking();
+          setCurrentInstance(target);
+          const res = callWithAsyncErrorHandling(hook, target, type, args);
+          unsetCurrentInstance();
+          resetTracking();
+          return res;
+        });
+        if (prepend) {
+          hooks.unshift(wrappedHook);
+        } else {
+          hooks.push(wrappedHook);
+        }
+        return wrappedHook;
+      } else {
+        const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, ""));
+        warn(
+          `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )
+        );
+      }
+    }
+    const createHook = (lifecycle) => (hook, target = currentInstance) => (
+      // post-create lifecycle registrations are noops during SSR (except for serverPrefetch)
+      (!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, (...args) => hook(...args), target)
+    );
+    const onBeforeMount = createHook("bm");
+    const onMounted = createHook("m");
+    const onBeforeUpdate = createHook("bu");
+    const onUpdated = createHook("u");
+    const onBeforeUnmount = createHook("bum");
+    const onUnmounted = createHook("um");
+    const onServerPrefetch = createHook("sp");
+    const onRenderTriggered = createHook(
+      "rtg"
+    );
+    const onRenderTracked = createHook(
+      "rtc"
+    );
+    function onErrorCaptured(hook, target = currentInstance) {
+      injectHook("ec", hook, target);
+    }
+  
+    const COMPONENTS = "components";
+    const DIRECTIVES = "directives";
+    function resolveComponent(name, maybeSelfReference) {
+      return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;
+    }
+    const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc");
+    function resolveDynamicComponent(component) {
+      if (isString(component)) {
+        return resolveAsset(COMPONENTS, component, false) || component;
+      } else {
+        return component || NULL_DYNAMIC_COMPONENT;
+      }
+    }
+    function resolveDirective(name) {
+      return resolveAsset(DIRECTIVES, name);
+    }
+    function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {
+      const instance = currentRenderingInstance || currentInstance;
+      if (instance) {
+        const Component = instance.type;
+        if (type === COMPONENTS) {
+          const selfName = getComponentName(
+            Component,
+            false
+            /* do not include inferred name to avoid breaking existing code */
+          );
+          if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {
+            return Component;
+          }
+        }
+        const res = (
+          // local registration
+          // check instance[type] first which is resolved for options API
+          resolve(instance[type] || Component[type], name) || // global registration
+          resolve(instance.appContext[type], name)
+        );
+        if (!res && maybeSelfReference) {
+          return Component;
+        }
+        if (warnMissing && !res) {
+          const extra = type === COMPONENTS ? `
+  If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;
+          warn(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);
+        }
+        return res;
+      } else {
+        warn(
+          `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`
+        );
+      }
+    }
+    function resolve(registry, name) {
+      return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);
+    }
+  
+    function renderList(source, renderItem, cache, index) {
+      let ret;
+      const cached = cache && cache[index];
+      if (isArray(source) || isString(source)) {
+        ret = new Array(source.length);
+        for (let i = 0, l = source.length; i < l; i++) {
+          ret[i] = renderItem(source[i], i, void 0, cached && cached[i]);
+        }
+      } else if (typeof source === "number") {
+        if (!Number.isInteger(source)) {
+          warn(`The v-for range expect an integer value but got ${source}.`);
+        }
+        ret = new Array(source);
+        for (let i = 0; i < source; i++) {
+          ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);
+        }
+      } else if (isObject(source)) {
+        if (source[Symbol.iterator]) {
+          ret = Array.from(
+            source,
+            (item, i) => renderItem(item, i, void 0, cached && cached[i])
+          );
+        } else {
+          const keys = Object.keys(source);
+          ret = new Array(keys.length);
+          for (let i = 0, l = keys.length; i < l; i++) {
+            const key = keys[i];
+            ret[i] = renderItem(source[key], key, i, cached && cached[i]);
+          }
+        }
+      } else {
+        ret = [];
+      }
+      if (cache) {
+        cache[index] = ret;
+      }
+      return ret;
+    }
+  
+    function createSlots(slots, dynamicSlots) {
+      for (let i = 0; i < dynamicSlots.length; i++) {
+        const slot = dynamicSlots[i];
+        if (isArray(slot)) {
+          for (let j = 0; j < slot.length; j++) {
+            slots[slot[j].name] = slot[j].fn;
+          }
+        } else if (slot) {
+          slots[slot.name] = slot.key ? (...args) => {
+            const res = slot.fn(...args);
+            if (res)
+              res.key = slot.key;
+            return res;
+          } : slot.fn;
+        }
+      }
+      return slots;
+    }
+  
+    function renderSlot(slots, name, props = {}, fallback, noSlotted) {
+      if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) {
+        if (name !== "default")
+          props.name = name;
+        return createVNode("slot", props, fallback && fallback());
+      }
+      let slot = slots[name];
+      if (slot && slot.length > 1) {
+        warn(
+          `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`
+        );
+        slot = () => [];
+      }
+      if (slot && slot._c) {
+        slot._d = false;
+      }
+      openBlock();
+      const validSlotContent = slot && ensureValidVNode(slot(props));
+      const rendered = createBlock(
+        Fragment,
+        {
+          key: props.key || // slot content array of a dynamic conditional slot may have a branch
+          // key attached in the `createSlots` helper, respect that
+          validSlotContent && validSlotContent.key || `_${name}`
+        },
+        validSlotContent || (fallback ? fallback() : []),
+        validSlotContent && slots._ === 1 ? 64 : -2
+      );
+      if (!noSlotted && rendered.scopeId) {
+        rendered.slotScopeIds = [rendered.scopeId + "-s"];
+      }
+      if (slot && slot._c) {
+        slot._d = true;
+      }
+      return rendered;
+    }
+    function ensureValidVNode(vnodes) {
+      return vnodes.some((child) => {
+        if (!isVNode(child))
+          return true;
+        if (child.type === Comment)
+          return false;
+        if (child.type === Fragment && !ensureValidVNode(child.children))
+          return false;
+        return true;
+      }) ? vnodes : null;
+    }
+  
+    function toHandlers(obj, preserveCaseIfNecessary) {
+      const ret = {};
+      if (!isObject(obj)) {
+        warn(`v-on with no argument expects an object value.`);
+        return ret;
+      }
+      for (const key in obj) {
+        ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];
+      }
+      return ret;
+    }
+  
+    const getPublicInstance = (i) => {
+      if (!i)
+        return null;
+      if (isStatefulComponent(i))
+        return getExposeProxy(i) || i.proxy;
+      return getPublicInstance(i.parent);
+    };
+    const publicPropertiesMap = (
+      // Move PURE marker to new line to workaround compiler discarding it
+      // due to type annotation
+      /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {
+        $: (i) => i,
+        $el: (i) => i.vnode.el,
+        $data: (i) => i.data,
+        $props: (i) => shallowReadonly(i.props) ,
+        $attrs: (i) => shallowReadonly(i.attrs) ,
+        $slots: (i) => shallowReadonly(i.slots) ,
+        $refs: (i) => shallowReadonly(i.refs) ,
+        $parent: (i) => getPublicInstance(i.parent),
+        $root: (i) => getPublicInstance(i.root),
+        $emit: (i) => i.emit,
+        $options: (i) => resolveMergedOptions(i) ,
+        $forceUpdate: (i) => i.f || (i.f = () => queueJob(i.update)),
+        $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),
+        $watch: (i) => instanceWatch.bind(i) 
+      })
+    );
+    const isReservedPrefix = (key) => key === "_" || key === "$";
+    const hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);
+    const PublicInstanceProxyHandlers = {
+      get({ _: instance }, key) {
+        const { ctx, setupState, data, props, accessCache, type, appContext } = instance;
+        if (key === "__isVue") {
+          return true;
+        }
+        let normalizedProps;
+        if (key[0] !== "$") {
+          const n = accessCache[key];
+          if (n !== void 0) {
+            switch (n) {
+              case 1 /* SETUP */:
+                return setupState[key];
+              case 2 /* DATA */:
+                return data[key];
+              case 4 /* CONTEXT */:
+                return ctx[key];
+              case 3 /* PROPS */:
+                return props[key];
+            }
+          } else if (hasSetupBinding(setupState, key)) {
+            accessCache[key] = 1 /* SETUP */;
+            return setupState[key];
+          } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
+            accessCache[key] = 2 /* DATA */;
+            return data[key];
+          } else if (
+            // only cache other properties when instance has declared (thus stable)
+            // props
+            (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)
+          ) {
+            accessCache[key] = 3 /* PROPS */;
+            return props[key];
+          } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {
+            accessCache[key] = 4 /* CONTEXT */;
+            return ctx[key];
+          } else if (shouldCacheAccess) {
+            accessCache[key] = 0 /* OTHER */;
+          }
+        }
+        const publicGetter = publicPropertiesMap[key];
+        let cssModule, globalProperties;
+        if (publicGetter) {
+          if (key === "$attrs") {
+            track(instance, "get", key);
+            markAttrsAccessed();
+          } else if (key === "$slots") {
+            track(instance, "get", key);
+          }
+          return publicGetter(instance);
+        } else if (
+          // css module (injected by vue-loader)
+          (cssModule = type.__cssModules) && (cssModule = cssModule[key])
+        ) {
+          return cssModule;
+        } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {
+          accessCache[key] = 4 /* CONTEXT */;
+          return ctx[key];
+        } else if (
+          // global properties
+          globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)
+        ) {
+          {
+            return globalProperties[key];
+          }
+        } else if (currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading
+        // to infinite warning loop
+        key.indexOf("__v") !== 0)) {
+          if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {
+            warn(
+              `Property ${JSON.stringify(
+              key
+            )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.`
+            );
+          } else if (instance === currentRenderingInstance) {
+            warn(
+              `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`
+            );
+          }
+        }
+      },
+      set({ _: instance }, key, value) {
+        const { data, setupState, ctx } = instance;
+        if (hasSetupBinding(setupState, key)) {
+          setupState[key] = value;
+          return true;
+        } else if (setupState.__isScriptSetup && hasOwn(setupState, key)) {
+          warn(`Cannot mutate <script setup> binding "${key}" from Options API.`);
+          return false;
+        } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
+          data[key] = value;
+          return true;
+        } else if (hasOwn(instance.props, key)) {
+          warn(`Attempting to mutate prop "${key}". Props are readonly.`);
+          return false;
+        }
+        if (key[0] === "$" && key.slice(1) in instance) {
+          warn(
+            `Attempting to mutate public property "${key}". Properties starting with $ are reserved and readonly.`
+          );
+          return false;
+        } else {
+          if (key in instance.appContext.config.globalProperties) {
+            Object.defineProperty(ctx, key, {
+              enumerable: true,
+              configurable: true,
+              value
+            });
+          } else {
+            ctx[key] = value;
+          }
+        }
+        return true;
+      },
+      has({
+        _: { data, setupState, accessCache, ctx, appContext, propsOptions }
+      }, key) {
+        let normalizedProps;
+        return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key);
+      },
+      defineProperty(target, key, descriptor) {
+        if (descriptor.get != null) {
+          target._.accessCache[key] = 0;
+        } else if (hasOwn(descriptor, "value")) {
+          this.set(target, key, descriptor.value, null);
+        }
+        return Reflect.defineProperty(target, key, descriptor);
+      }
+    };
+    {
+      PublicInstanceProxyHandlers.ownKeys = (target) => {
+        warn(
+          `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.`
+        );
+        return Reflect.ownKeys(target);
+      };
+    }
+    const RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ extend(
+      {},
+      PublicInstanceProxyHandlers,
+      {
+        get(target, key) {
+          if (key === Symbol.unscopables) {
+            return;
+          }
+          return PublicInstanceProxyHandlers.get(target, key, target);
+        },
+        has(_, key) {
+          const has = key[0] !== "_" && !isGloballyWhitelisted(key);
+          if (!has && PublicInstanceProxyHandlers.has(_, key)) {
+            warn(
+              `Property ${JSON.stringify(
+              key
+            )} should not start with _ which is a reserved prefix for Vue internals.`
+            );
+          }
+          return has;
+        }
+      }
+    );
+    function createDevRenderContext(instance) {
+      const target = {};
+      Object.defineProperty(target, `_`, {
+        configurable: true,
+        enumerable: false,
+        get: () => instance
+      });
+      Object.keys(publicPropertiesMap).forEach((key) => {
+        Object.defineProperty(target, key, {
+          configurable: true,
+          enumerable: false,
+          get: () => publicPropertiesMap[key](instance),
+          // intercepted by the proxy so no need for implementation,
+          // but needed to prevent set errors
+          set: NOOP
+        });
+      });
+      return target;
+    }
+    function exposePropsOnRenderContext(instance) {
+      const {
+        ctx,
+        propsOptions: [propsOptions]
+      } = instance;
+      if (propsOptions) {
+        Object.keys(propsOptions).forEach((key) => {
+          Object.defineProperty(ctx, key, {
+            enumerable: true,
+            configurable: true,
+            get: () => instance.props[key],
+            set: NOOP
+          });
+        });
+      }
+    }
+    function exposeSetupStateOnRenderContext(instance) {
+      const { ctx, setupState } = instance;
+      Object.keys(toRaw(setupState)).forEach((key) => {
+        if (!setupState.__isScriptSetup) {
+          if (isReservedPrefix(key[0])) {
+            warn(
+              `setup() return property ${JSON.stringify(
+              key
+            )} should not start with "$" or "_" which are reserved prefixes for Vue internals.`
+            );
+            return;
+          }
+          Object.defineProperty(ctx, key, {
+            enumerable: true,
+            configurable: true,
+            get: () => setupState[key],
+            set: NOOP
+          });
+        }
+      });
+    }
+  
+    const warnRuntimeUsage = (method) => warn(
+      `${method}() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.`
+    );
+    function defineProps() {
+      {
+        warnRuntimeUsage(`defineProps`);
+      }
+      return null;
+    }
+    function defineEmits() {
+      {
+        warnRuntimeUsage(`defineEmits`);
+      }
+      return null;
+    }
+    function defineExpose(exposed) {
+      {
+        warnRuntimeUsage(`defineExpose`);
+      }
+    }
+    function defineOptions(options) {
+      {
+        warnRuntimeUsage(`defineOptions`);
+      }
+    }
+    function defineSlots() {
+      {
+        warnRuntimeUsage(`defineSlots`);
+      }
+      return null;
+    }
+    function defineModel() {
+      {
+        warnRuntimeUsage("defineModel");
+      }
+    }
+    function withDefaults(props, defaults) {
+      {
+        warnRuntimeUsage(`withDefaults`);
+      }
+      return null;
+    }
+    function useSlots() {
+      return getContext().slots;
+    }
+    function useAttrs() {
+      return getContext().attrs;
+    }
+    function useModel(props, name, options) {
+      const i = getCurrentInstance();
+      if (!i) {
+        warn(`useModel() called without active instance.`);
+        return ref();
+      }
+      if (!i.propsOptions[0][name]) {
+        warn(`useModel() called with prop "${name}" which is not declared.`);
+        return ref();
+      }
+      if (options && options.local) {
+        const proxy = ref(props[name]);
+        watch(
+          () => props[name],
+          (v) => proxy.value = v
+        );
+        watch(proxy, (value) => {
+          if (value !== props[name]) {
+            i.emit(`update:${name}`, value);
+          }
+        });
+        return proxy;
+      } else {
+        return {
+          __v_isRef: true,
+          get value() {
+            return props[name];
+          },
+          set value(value) {
+            i.emit(`update:${name}`, value);
+          }
+        };
+      }
+    }
+    function getContext() {
+      const i = getCurrentInstance();
+      if (!i) {
+        warn(`useContext() called without active instance.`);
+      }
+      return i.setupContext || (i.setupContext = createSetupContext(i));
+    }
+    function normalizePropsOrEmits(props) {
+      return isArray(props) ? props.reduce(
+        (normalized, p) => (normalized[p] = null, normalized),
+        {}
+      ) : props;
+    }
+    function mergeDefaults(raw, defaults) {
+      const props = normalizePropsOrEmits(raw);
+      for (const key in defaults) {
+        if (key.startsWith("__skip"))
+          continue;
+        let opt = props[key];
+        if (opt) {
+          if (isArray(opt) || isFunction(opt)) {
+            opt = props[key] = { type: opt, default: defaults[key] };
+          } else {
+            opt.default = defaults[key];
+          }
+        } else if (opt === null) {
+          opt = props[key] = { default: defaults[key] };
+        } else {
+          warn(`props default key "${key}" has no corresponding declaration.`);
+        }
+        if (opt && defaults[`__skip_${key}`]) {
+          opt.skipFactory = true;
+        }
+      }
+      return props;
+    }
+    function mergeModels(a, b) {
+      if (!a || !b)
+        return a || b;
+      if (isArray(a) && isArray(b))
+        return a.concat(b);
+      return extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b));
+    }
+    function createPropsRestProxy(props, excludedKeys) {
+      const ret = {};
+      for (const key in props) {
+        if (!excludedKeys.includes(key)) {
+          Object.defineProperty(ret, key, {
+            enumerable: true,
+            get: () => props[key]
+          });
+        }
+      }
+      return ret;
+    }
+    function withAsyncContext(getAwaitable) {
+      const ctx = getCurrentInstance();
+      if (!ctx) {
+        warn(
+          `withAsyncContext called without active current instance. This is likely a bug.`
+        );
+      }
+      let awaitable = getAwaitable();
+      unsetCurrentInstance();
+      if (isPromise(awaitable)) {
+        awaitable = awaitable.catch((e) => {
+          setCurrentInstance(ctx);
+          throw e;
+        });
+      }
+      return [awaitable, () => setCurrentInstance(ctx)];
+    }
+  
+    function createDuplicateChecker() {
+      const cache = /* @__PURE__ */ Object.create(null);
+      return (type, key) => {
+        if (cache[key]) {
+          warn(`${type} property "${key}" is already defined in ${cache[key]}.`);
+        } else {
+          cache[key] = type;
+        }
+      };
+    }
+    let shouldCacheAccess = true;
+    function applyOptions(instance) {
+      const options = resolveMergedOptions(instance);
+      const publicThis = instance.proxy;
+      const ctx = instance.ctx;
+      shouldCacheAccess = false;
+      if (options.beforeCreate) {
+        callHook$1(options.beforeCreate, instance, "bc");
+      }
+      const {
+        // state
+        data: dataOptions,
+        computed: computedOptions,
+        methods,
+        watch: watchOptions,
+        provide: provideOptions,
+        inject: injectOptions,
+        // lifecycle
+        created,
+        beforeMount,
+        mounted,
+        beforeUpdate,
+        updated,
+        activated,
+        deactivated,
+        beforeDestroy,
+        beforeUnmount,
+        destroyed,
+        unmounted,
+        render,
+        renderTracked,
+        renderTriggered,
+        errorCaptured,
+        serverPrefetch,
+        // public API
+        expose,
+        inheritAttrs,
+        // assets
+        components,
+        directives,
+        filters
+      } = options;
+      const checkDuplicateProperties = createDuplicateChecker() ;
+      {
+        const [propsOptions] = instance.propsOptions;
+        if (propsOptions) {
+          for (const key in propsOptions) {
+            checkDuplicateProperties("Props" /* PROPS */, key);
+          }
+        }
+      }
+      if (injectOptions) {
+        resolveInjections(injectOptions, ctx, checkDuplicateProperties);
+      }
+      if (methods) {
+        for (const key in methods) {
+          const methodHandler = methods[key];
+          if (isFunction(methodHandler)) {
+            {
+              Object.defineProperty(ctx, key, {
+                value: methodHandler.bind(publicThis),
+                configurable: true,
+                enumerable: true,
+                writable: true
+              });
+            }
+            {
+              checkDuplicateProperties("Methods" /* METHODS */, key);
+            }
+          } else {
+            warn(
+              `Method "${key}" has type "${typeof methodHandler}" in the component definition. Did you reference the function correctly?`
+            );
+          }
+        }
+      }
+      if (dataOptions) {
+        if (!isFunction(dataOptions)) {
+          warn(
+            `The data option must be a function. Plain object usage is no longer supported.`
+          );
+        }
+        const data = dataOptions.call(publicThis, publicThis);
+        if (isPromise(data)) {
+          warn(
+            `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.`
+          );
+        }
+        if (!isObject(data)) {
+          warn(`data() should return an object.`);
+        } else {
+          instance.data = reactive(data);
+          {
+            for (const key in data) {
+              checkDuplicateProperties("Data" /* DATA */, key);
+              if (!isReservedPrefix(key[0])) {
+                Object.defineProperty(ctx, key, {
+                  configurable: true,
+                  enumerable: true,
+                  get: () => data[key],
+                  set: NOOP
+                });
+              }
+            }
+          }
+        }
+      }
+      shouldCacheAccess = true;
+      if (computedOptions) {
+        for (const key in computedOptions) {
+          const opt = computedOptions[key];
+          const get = isFunction(opt) ? opt.bind(publicThis, publicThis) : isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP;
+          if (get === NOOP) {
+            warn(`Computed property "${key}" has no getter.`);
+          }
+          const set = !isFunction(opt) && isFunction(opt.set) ? opt.set.bind(publicThis) : () => {
+            warn(
+              `Write operation failed: computed property "${key}" is readonly.`
+            );
+          } ;
+          const c = computed({
+            get,
+            set
+          });
+          Object.defineProperty(ctx, key, {
+            enumerable: true,
+            configurable: true,
+            get: () => c.value,
+            set: (v) => c.value = v
+          });
+          {
+            checkDuplicateProperties("Computed" /* COMPUTED */, key);
+          }
+        }
+      }
+      if (watchOptions) {
+        for (const key in watchOptions) {
+          createWatcher(watchOptions[key], ctx, publicThis, key);
+        }
+      }
+      if (provideOptions) {
+        const provides = isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions;
+        Reflect.ownKeys(provides).forEach((key) => {
+          provide(key, provides[key]);
+        });
+      }
+      if (created) {
+        callHook$1(created, instance, "c");
+      }
+      function registerLifecycleHook(register, hook) {
+        if (isArray(hook)) {
+          hook.forEach((_hook) => register(_hook.bind(publicThis)));
+        } else if (hook) {
+          register(hook.bind(publicThis));
+        }
+      }
+      registerLifecycleHook(onBeforeMount, beforeMount);
+      registerLifecycleHook(onMounted, mounted);
+      registerLifecycleHook(onBeforeUpdate, beforeUpdate);
+      registerLifecycleHook(onUpdated, updated);
+      registerLifecycleHook(onActivated, activated);
+      registerLifecycleHook(onDeactivated, deactivated);
+      registerLifecycleHook(onErrorCaptured, errorCaptured);
+      registerLifecycleHook(onRenderTracked, renderTracked);
+      registerLifecycleHook(onRenderTriggered, renderTriggered);
+      registerLifecycleHook(onBeforeUnmount, beforeUnmount);
+      registerLifecycleHook(onUnmounted, unmounted);
+      registerLifecycleHook(onServerPrefetch, serverPrefetch);
+      if (isArray(expose)) {
+        if (expose.length) {
+          const exposed = instance.exposed || (instance.exposed = {});
+          expose.forEach((key) => {
+            Object.defineProperty(exposed, key, {
+              get: () => publicThis[key],
+              set: (val) => publicThis[key] = val
+            });
+          });
+        } else if (!instance.exposed) {
+          instance.exposed = {};
+        }
+      }
+      if (render && instance.render === NOOP) {
+        instance.render = render;
+      }
+      if (inheritAttrs != null) {
+        instance.inheritAttrs = inheritAttrs;
+      }
+      if (components)
+        instance.components = components;
+      if (directives)
+        instance.directives = directives;
+    }
+    function resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) {
+      if (isArray(injectOptions)) {
+        injectOptions = normalizeInject(injectOptions);
+      }
+      for (const key in injectOptions) {
+        const opt = injectOptions[key];
+        let injected;
+        if (isObject(opt)) {
+          if ("default" in opt) {
+            injected = inject(
+              opt.from || key,
+              opt.default,
+              true
+              /* treat default function as factory */
+            );
+          } else {
+            injected = inject(opt.from || key);
+          }
+        } else {
+          injected = inject(opt);
+        }
+        if (isRef(injected)) {
+          Object.defineProperty(ctx, key, {
+            enumerable: true,
+            configurable: true,
+            get: () => injected.value,
+            set: (v) => injected.value = v
+          });
+        } else {
+          ctx[key] = injected;
+        }
+        {
+          checkDuplicateProperties("Inject" /* INJECT */, key);
+        }
+      }
+    }
+    function callHook$1(hook, instance, type) {
+      callWithAsyncErrorHandling(
+        isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy),
+        instance,
+        type
+      );
+    }
+    function createWatcher(raw, ctx, publicThis, key) {
+      const getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key];
+      if (isString(raw)) {
+        const handler = ctx[raw];
+        if (isFunction(handler)) {
+          watch(getter, handler);
+        } else {
+          warn(`Invalid watch handler specified by key "${raw}"`, handler);
+        }
+      } else if (isFunction(raw)) {
+        watch(getter, raw.bind(publicThis));
+      } else if (isObject(raw)) {
+        if (isArray(raw)) {
+          raw.forEach((r) => createWatcher(r, ctx, publicThis, key));
+        } else {
+          const handler = isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];
+          if (isFunction(handler)) {
+            watch(getter, handler, raw);
+          } else {
+            warn(`Invalid watch handler specified by key "${raw.handler}"`, handler);
+          }
+        }
+      } else {
+        warn(`Invalid watch option: "${key}"`, raw);
+      }
+    }
+    function resolveMergedOptions(instance) {
+      const base = instance.type;
+      const { mixins, extends: extendsOptions } = base;
+      const {
+        mixins: globalMixins,
+        optionsCache: cache,
+        config: { optionMergeStrategies }
+      } = instance.appContext;
+      const cached = cache.get(base);
+      let resolved;
+      if (cached) {
+        resolved = cached;
+      } else if (!globalMixins.length && !mixins && !extendsOptions) {
+        {
+          resolved = base;
+        }
+      } else {
+        resolved = {};
+        if (globalMixins.length) {
+          globalMixins.forEach(
+            (m) => mergeOptions(resolved, m, optionMergeStrategies, true)
+          );
+        }
+        mergeOptions(resolved, base, optionMergeStrategies);
+      }
+      if (isObject(base)) {
+        cache.set(base, resolved);
+      }
+      return resolved;
+    }
+    function mergeOptions(to, from, strats, asMixin = false) {
+      const { mixins, extends: extendsOptions } = from;
+      if (extendsOptions) {
+        mergeOptions(to, extendsOptions, strats, true);
+      }
+      if (mixins) {
+        mixins.forEach(
+          (m) => mergeOptions(to, m, strats, true)
+        );
+      }
+      for (const key in from) {
+        if (asMixin && key === "expose") {
+          warn(
+            `"expose" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.`
+          );
+        } else {
+          const strat = internalOptionMergeStrats[key] || strats && strats[key];
+          to[key] = strat ? strat(to[key], from[key]) : from[key];
+        }
+      }
+      return to;
+    }
+    const internalOptionMergeStrats = {
+      data: mergeDataFn,
+      props: mergeEmitsOrPropsOptions,
+      emits: mergeEmitsOrPropsOptions,
+      // objects
+      methods: mergeObjectOptions,
+      computed: mergeObjectOptions,
+      // lifecycle
+      beforeCreate: mergeAsArray$1,
+      created: mergeAsArray$1,
+      beforeMount: mergeAsArray$1,
+      mounted: mergeAsArray$1,
+      beforeUpdate: mergeAsArray$1,
+      updated: mergeAsArray$1,
+      beforeDestroy: mergeAsArray$1,
+      beforeUnmount: mergeAsArray$1,
+      destroyed: mergeAsArray$1,
+      unmounted: mergeAsArray$1,
+      activated: mergeAsArray$1,
+      deactivated: mergeAsArray$1,
+      errorCaptured: mergeAsArray$1,
+      serverPrefetch: mergeAsArray$1,
+      // assets
+      components: mergeObjectOptions,
+      directives: mergeObjectOptions,
+      // watch
+      watch: mergeWatchOptions,
+      // provide / inject
+      provide: mergeDataFn,
+      inject: mergeInject
+    };
+    function mergeDataFn(to, from) {
+      if (!from) {
+        return to;
+      }
+      if (!to) {
+        return from;
+      }
+      return function mergedDataFn() {
+        return (extend)(
+          isFunction(to) ? to.call(this, this) : to,
+          isFunction(from) ? from.call(this, this) : from
+        );
+      };
+    }
+    function mergeInject(to, from) {
+      return mergeObjectOptions(normalizeInject(to), normalizeInject(from));
+    }
+    function normalizeInject(raw) {
+      if (isArray(raw)) {
+        const res = {};
+        for (let i = 0; i < raw.length; i++) {
+          res[raw[i]] = raw[i];
+        }
+        return res;
+      }
+      return raw;
+    }
+    function mergeAsArray$1(to, from) {
+      return to ? [...new Set([].concat(to, from))] : from;
+    }
+    function mergeObjectOptions(to, from) {
+      return to ? extend(/* @__PURE__ */ Object.create(null), to, from) : from;
+    }
+    function mergeEmitsOrPropsOptions(to, from) {
+      if (to) {
+        if (isArray(to) && isArray(from)) {
+          return [.../* @__PURE__ */ new Set([...to, ...from])];
+        }
+        return extend(
+          /* @__PURE__ */ Object.create(null),
+          normalizePropsOrEmits(to),
+          normalizePropsOrEmits(from != null ? from : {})
+        );
+      } else {
+        return from;
+      }
+    }
+    function mergeWatchOptions(to, from) {
+      if (!to)
+        return from;
+      if (!from)
+        return to;
+      const merged = extend(/* @__PURE__ */ Object.create(null), to);
+      for (const key in from) {
+        merged[key] = mergeAsArray$1(to[key], from[key]);
+      }
+      return merged;
+    }
+  
+    function createAppContext() {
+      return {
+        app: null,
+        config: {
+          isNativeTag: NO,
+          performance: false,
+          globalProperties: {},
+          optionMergeStrategies: {},
+          errorHandler: void 0,
+          warnHandler: void 0,
+          compilerOptions: {}
+        },
+        mixins: [],
+        components: {},
+        directives: {},
+        provides: /* @__PURE__ */ Object.create(null),
+        optionsCache: /* @__PURE__ */ new WeakMap(),
+        propsCache: /* @__PURE__ */ new WeakMap(),
+        emitsCache: /* @__PURE__ */ new WeakMap()
+      };
+    }
+    let uid$1 = 0;
+    function createAppAPI(render, hydrate) {
+      return function createApp(rootComponent, rootProps = null) {
+        if (!isFunction(rootComponent)) {
+          rootComponent = extend({}, rootComponent);
+        }
+        if (rootProps != null && !isObject(rootProps)) {
+          warn(`root props passed to app.mount() must be an object.`);
+          rootProps = null;
+        }
+        const context = createAppContext();
+        {
+          Object.defineProperty(context.config, "unwrapInjectedRef", {
+            get() {
+              return true;
+            },
+            set() {
+              warn(
+                `app.config.unwrapInjectedRef has been deprecated. 3.3 now alawys unwraps injected refs in Options API.`
+              );
+            }
+          });
+        }
+        const installedPlugins = /* @__PURE__ */ new Set();
+        let isMounted = false;
+        const app = context.app = {
+          _uid: uid$1++,
+          _component: rootComponent,
+          _props: rootProps,
+          _container: null,
+          _context: context,
+          _instance: null,
+          version,
+          get config() {
+            return context.config;
+          },
+          set config(v) {
+            {
+              warn(
+                `app.config cannot be replaced. Modify individual options instead.`
+              );
+            }
+          },
+          use(plugin, ...options) {
+            if (installedPlugins.has(plugin)) {
+              warn(`Plugin has already been applied to target app.`);
+            } else if (plugin && isFunction(plugin.install)) {
+              installedPlugins.add(plugin);
+              plugin.install(app, ...options);
+            } else if (isFunction(plugin)) {
+              installedPlugins.add(plugin);
+              plugin(app, ...options);
+            } else {
+              warn(
+                `A plugin must either be a function or an object with an "install" function.`
+              );
+            }
+            return app;
+          },
+          mixin(mixin) {
+            {
+              if (!context.mixins.includes(mixin)) {
+                context.mixins.push(mixin);
+              } else {
+                warn(
+                  "Mixin has already been applied to target app" + (mixin.name ? `: ${mixin.name}` : "")
+                );
+              }
+            }
+            return app;
+          },
+          component(name, component) {
+            {
+              validateComponentName(name, context.config);
+            }
+            if (!component) {
+              return context.components[name];
+            }
+            if (context.components[name]) {
+              warn(`Component "${name}" has already been registered in target app.`);
+            }
+            context.components[name] = component;
+            return app;
+          },
+          directive(name, directive) {
+            {
+              validateDirectiveName(name);
+            }
+            if (!directive) {
+              return context.directives[name];
+            }
+            if (context.directives[name]) {
+              warn(`Directive "${name}" has already been registered in target app.`);
+            }
+            context.directives[name] = directive;
+            return app;
+          },
+          mount(rootContainer, isHydrate, isSVG) {
+            if (!isMounted) {
+              if (rootContainer.__vue_app__) {
+                warn(
+                  `There is already an app instance mounted on the host container.
+   If you want to mount another app on the same host container, you need to unmount the previous app by calling \`app.unmount()\` first.`
+                );
+              }
+              const vnode = createVNode(
+                rootComponent,
+                rootProps
+              );
+              vnode.appContext = context;
+              {
+                context.reload = () => {
+                  render(cloneVNode(vnode), rootContainer, isSVG);
+                };
+              }
+              if (isHydrate && hydrate) {
+                hydrate(vnode, rootContainer);
+              } else {
+                render(vnode, rootContainer, isSVG);
+              }
+              isMounted = true;
+              app._container = rootContainer;
+              rootContainer.__vue_app__ = app;
+              {
+                app._instance = vnode.component;
+                devtoolsInitApp(app, version);
+              }
+              return getExposeProxy(vnode.component) || vnode.component.proxy;
+            } else {
+              warn(
+                `App has already been mounted.
+  If you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. \`const createMyApp = () => createApp(App)\``
+              );
+            }
+          },
+          unmount() {
+            if (isMounted) {
+              render(null, app._container);
+              {
+                app._instance = null;
+                devtoolsUnmountApp(app);
+              }
+              delete app._container.__vue_app__;
+            } else {
+              warn(`Cannot unmount an app that is not mounted.`);
+            }
+          },
+          provide(key, value) {
+            if (key in context.provides) {
+              warn(
+                `App already provides property with key "${String(key)}". It will be overwritten with the new value.`
+              );
+            }
+            context.provides[key] = value;
+            return app;
+          },
+          runWithContext(fn) {
+            currentApp = app;
+            try {
+              return fn();
+            } finally {
+              currentApp = null;
+            }
+          }
+        };
+        return app;
+      };
+    }
+    let currentApp = null;
+  
+    function provide(key, value) {
+      if (!currentInstance) {
+        {
+          warn(`provide() can only be used inside setup().`);
+        }
+      } else {
+        let provides = currentInstance.provides;
+        const parentProvides = currentInstance.parent && currentInstance.parent.provides;
+        if (parentProvides === provides) {
+          provides = currentInstance.provides = Object.create(parentProvides);
+        }
+        provides[key] = value;
+      }
+    }
+    function inject(key, defaultValue, treatDefaultAsFactory = false) {
+      const instance = currentInstance || currentRenderingInstance;
+      if (instance || currentApp) {
+        const provides = instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : currentApp._context.provides;
+        if (provides && key in provides) {
+          return provides[key];
+        } else if (arguments.length > 1) {
+          return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;
+        } else {
+          warn(`injection "${String(key)}" not found.`);
+        }
+      } else {
+        warn(`inject() can only be used inside setup() or functional components.`);
+      }
+    }
+    function hasInjectionContext() {
+      return !!(currentInstance || currentRenderingInstance || currentApp);
+    }
+  
+    function initProps(instance, rawProps, isStateful, isSSR = false) {
+      const props = {};
+      const attrs = {};
+      def(attrs, InternalObjectKey, 1);
+      instance.propsDefaults = /* @__PURE__ */ Object.create(null);
+      setFullProps(instance, rawProps, props, attrs);
+      for (const key in instance.propsOptions[0]) {
+        if (!(key in props)) {
+          props[key] = void 0;
+        }
+      }
+      {
+        validateProps(rawProps || {}, props, instance);
+      }
+      if (isStateful) {
+        instance.props = isSSR ? props : shallowReactive(props);
+      } else {
+        if (!instance.type.props) {
+          instance.props = attrs;
+        } else {
+          instance.props = props;
+        }
+      }
+      instance.attrs = attrs;
+    }
+    function isInHmrContext(instance) {
+      while (instance) {
+        if (instance.type.__hmrId)
+          return true;
+        instance = instance.parent;
+      }
+    }
+    function updateProps(instance, rawProps, rawPrevProps, optimized) {
+      const {
+        props,
+        attrs,
+        vnode: { patchFlag }
+      } = instance;
+      const rawCurrentProps = toRaw(props);
+      const [options] = instance.propsOptions;
+      let hasAttrsChanged = false;
+      if (
+        // always force full diff in dev
+        // - #1942 if hmr is enabled with sfc component
+        // - vite#872 non-sfc component used by sfc component
+        !isInHmrContext(instance) && (optimized || patchFlag > 0) && !(patchFlag & 16)
+      ) {
+        if (patchFlag & 8) {
+          const propsToUpdate = instance.vnode.dynamicProps;
+          for (let i = 0; i < propsToUpdate.length; i++) {
+            let key = propsToUpdate[i];
+            if (isEmitListener(instance.emitsOptions, key)) {
+              continue;
+            }
+            const value = rawProps[key];
+            if (options) {
+              if (hasOwn(attrs, key)) {
+                if (value !== attrs[key]) {
+                  attrs[key] = value;
+                  hasAttrsChanged = true;
+                }
+              } else {
+                const camelizedKey = camelize(key);
+                props[camelizedKey] = resolvePropValue(
+                  options,
+                  rawCurrentProps,
+                  camelizedKey,
+                  value,
+                  instance,
+                  false
+                  /* isAbsent */
+                );
+              }
+            } else {
+              if (value !== attrs[key]) {
+                attrs[key] = value;
+                hasAttrsChanged = true;
+              }
+            }
+          }
+        }
+      } else {
+        if (setFullProps(instance, rawProps, props, attrs)) {
+          hasAttrsChanged = true;
+        }
+        let kebabKey;
+        for (const key in rawCurrentProps) {
+          if (!rawProps || // for camelCase
+          !hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case
+          // and converted to camelCase (#955)
+          ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey))) {
+            if (options) {
+              if (rawPrevProps && // for camelCase
+              (rawPrevProps[key] !== void 0 || // for kebab-case
+              rawPrevProps[kebabKey] !== void 0)) {
+                props[key] = resolvePropValue(
+                  options,
+                  rawCurrentProps,
+                  key,
+                  void 0,
+                  instance,
+                  true
+                  /* isAbsent */
+                );
+              }
+            } else {
+              delete props[key];
+            }
+          }
+        }
+        if (attrs !== rawCurrentProps) {
+          for (const key in attrs) {
+            if (!rawProps || !hasOwn(rawProps, key) && true) {
+              delete attrs[key];
+              hasAttrsChanged = true;
+            }
+          }
+        }
+      }
+      if (hasAttrsChanged) {
+        trigger(instance, "set", "$attrs");
+      }
+      {
+        validateProps(rawProps || {}, props, instance);
+      }
+    }
+    function setFullProps(instance, rawProps, props, attrs) {
+      const [options, needCastKeys] = instance.propsOptions;
+      let hasAttrsChanged = false;
+      let rawCastValues;
+      if (rawProps) {
+        for (let key in rawProps) {
+          if (isReservedProp(key)) {
+            continue;
+          }
+          const value = rawProps[key];
+          let camelKey;
+          if (options && hasOwn(options, camelKey = camelize(key))) {
+            if (!needCastKeys || !needCastKeys.includes(camelKey)) {
+              props[camelKey] = value;
+            } else {
+              (rawCastValues || (rawCastValues = {}))[camelKey] = value;
+            }
+          } else if (!isEmitListener(instance.emitsOptions, key)) {
+            if (!(key in attrs) || value !== attrs[key]) {
+              attrs[key] = value;
+              hasAttrsChanged = true;
+            }
+          }
+        }
+      }
+      if (needCastKeys) {
+        const rawCurrentProps = toRaw(props);
+        const castValues = rawCastValues || EMPTY_OBJ;
+        for (let i = 0; i < needCastKeys.length; i++) {
+          const key = needCastKeys[i];
+          props[key] = resolvePropValue(
+            options,
+            rawCurrentProps,
+            key,
+            castValues[key],
+            instance,
+            !hasOwn(castValues, key)
+          );
+        }
+      }
+      return hasAttrsChanged;
+    }
+    function resolvePropValue(options, props, key, value, instance, isAbsent) {
+      const opt = options[key];
+      if (opt != null) {
+        const hasDefault = hasOwn(opt, "default");
+        if (hasDefault && value === void 0) {
+          const defaultValue = opt.default;
+          if (opt.type !== Function && !opt.skipFactory && isFunction(defaultValue)) {
+            const { propsDefaults } = instance;
+            if (key in propsDefaults) {
+              value = propsDefaults[key];
+            } else {
+              setCurrentInstance(instance);
+              value = propsDefaults[key] = defaultValue.call(
+                null,
+                props
+              );
+              unsetCurrentInstance();
+            }
+          } else {
+            value = defaultValue;
+          }
+        }
+        if (opt[0 /* shouldCast */]) {
+          if (isAbsent && !hasDefault) {
+            value = false;
+          } else if (opt[1 /* shouldCastTrue */] && (value === "" || value === hyphenate(key))) {
+            value = true;
+          }
+        }
+      }
+      return value;
+    }
+    function normalizePropsOptions(comp, appContext, asMixin = false) {
+      const cache = appContext.propsCache;
+      const cached = cache.get(comp);
+      if (cached) {
+        return cached;
+      }
+      const raw = comp.props;
+      const normalized = {};
+      const needCastKeys = [];
+      let hasExtends = false;
+      if (!isFunction(comp)) {
+        const extendProps = (raw2) => {
+          hasExtends = true;
+          const [props, keys] = normalizePropsOptions(raw2, appContext, true);
+          extend(normalized, props);
+          if (keys)
+            needCastKeys.push(...keys);
+        };
+        if (!asMixin && appContext.mixins.length) {
+          appContext.mixins.forEach(extendProps);
+        }
+        if (comp.extends) {
+          extendProps(comp.extends);
+        }
+        if (comp.mixins) {
+          comp.mixins.forEach(extendProps);
+        }
+      }
+      if (!raw && !hasExtends) {
+        if (isObject(comp)) {
+          cache.set(comp, EMPTY_ARR);
+        }
+        return EMPTY_ARR;
+      }
+      if (isArray(raw)) {
+        for (let i = 0; i < raw.length; i++) {
+          if (!isString(raw[i])) {
+            warn(`props must be strings when using array syntax.`, raw[i]);
+          }
+          const normalizedKey = camelize(raw[i]);
+          if (validatePropName(normalizedKey)) {
+            normalized[normalizedKey] = EMPTY_OBJ;
+          }
+        }
+      } else if (raw) {
+        if (!isObject(raw)) {
+          warn(`invalid props options`, raw);
+        }
+        for (const key in raw) {
+          const normalizedKey = camelize(key);
+          if (validatePropName(normalizedKey)) {
+            const opt = raw[key];
+            const prop = normalized[normalizedKey] = isArray(opt) || isFunction(opt) ? { type: opt } : extend({}, opt);
+            if (prop) {
+              const booleanIndex = getTypeIndex(Boolean, prop.type);
+              const stringIndex = getTypeIndex(String, prop.type);
+              prop[0 /* shouldCast */] = booleanIndex > -1;
+              prop[1 /* shouldCastTrue */] = stringIndex < 0 || booleanIndex < stringIndex;
+              if (booleanIndex > -1 || hasOwn(prop, "default")) {
+                needCastKeys.push(normalizedKey);
+              }
+            }
+          }
+        }
+      }
+      const res = [normalized, needCastKeys];
+      if (isObject(comp)) {
+        cache.set(comp, res);
+      }
+      return res;
+    }
+    function validatePropName(key) {
+      if (key[0] !== "$") {
+        return true;
+      } else {
+        warn(`Invalid prop name: "${key}" is a reserved property.`);
+      }
+      return false;
+    }
+    function getType(ctor) {
+      const match = ctor && ctor.toString().match(/^\s*(function|class) (\w+)/);
+      return match ? match[2] : ctor === null ? "null" : "";
+    }
+    function isSameType(a, b) {
+      return getType(a) === getType(b);
+    }
+    function getTypeIndex(type, expectedTypes) {
+      if (isArray(expectedTypes)) {
+        return expectedTypes.findIndex((t) => isSameType(t, type));
+      } else if (isFunction(expectedTypes)) {
+        return isSameType(expectedTypes, type) ? 0 : -1;
+      }
+      return -1;
+    }
+    function validateProps(rawProps, props, instance) {
+      const resolvedValues = toRaw(props);
+      const options = instance.propsOptions[0];
+      for (const key in options) {
+        let opt = options[key];
+        if (opt == null)
+          continue;
+        validateProp(
+          key,
+          resolvedValues[key],
+          opt,
+          !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key))
+        );
+      }
+    }
+    function validateProp(name, value, prop, isAbsent) {
+      const { type, required, validator, skipCheck } = prop;
+      if (required && isAbsent) {
+        warn('Missing required prop: "' + name + '"');
+        return;
+      }
+      if (value == null && !required) {
+        return;
+      }
+      if (type != null && type !== true && !skipCheck) {
+        let isValid = false;
+        const types = isArray(type) ? type : [type];
+        const expectedTypes = [];
+        for (let i = 0; i < types.length && !isValid; i++) {
+          const { valid, expectedType } = assertType(value, types[i]);
+          expectedTypes.push(expectedType || "");
+          isValid = valid;
+        }
+        if (!isValid) {
+          warn(getInvalidTypeMessage(name, value, expectedTypes));
+          return;
+        }
+      }
+      if (validator && !validator(value)) {
+        warn('Invalid prop: custom validator check failed for prop "' + name + '".');
+      }
+    }
+    const isSimpleType = /* @__PURE__ */ makeMap(
+      "String,Number,Boolean,Function,Symbol,BigInt"
+    );
+    function assertType(value, type) {
+      let valid;
+      const expectedType = getType(type);
+      if (isSimpleType(expectedType)) {
+        const t = typeof value;
+        valid = t === expectedType.toLowerCase();
+        if (!valid && t === "object") {
+          valid = value instanceof type;
+        }
+      } else if (expectedType === "Object") {
+        valid = isObject(value);
+      } else if (expectedType === "Array") {
+        valid = isArray(value);
+      } else if (expectedType === "null") {
+        valid = value === null;
+      } else {
+        valid = value instanceof type;
+      }
+      return {
+        valid,
+        expectedType
+      };
+    }
+    function getInvalidTypeMessage(name, value, expectedTypes) {
+      let message = `Invalid prop: type check failed for prop "${name}". Expected ${expectedTypes.map(capitalize).join(" | ")}`;
+      const expectedType = expectedTypes[0];
+      const receivedType = toRawType(value);
+      const expectedValue = styleValue(value, expectedType);
+      const receivedValue = styleValue(value, receivedType);
+      if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) {
+        message += ` with value ${expectedValue}`;
+      }
+      message += `, got ${receivedType} `;
+      if (isExplicable(receivedType)) {
+        message += `with value ${receivedValue}.`;
+      }
+      return message;
+    }
+    function styleValue(value, type) {
+      if (type === "String") {
+        return `"${value}"`;
+      } else if (type === "Number") {
+        return `${Number(value)}`;
+      } else {
+        return `${value}`;
+      }
+    }
+    function isExplicable(type) {
+      const explicitTypes = ["string", "number", "boolean"];
+      return explicitTypes.some((elem) => type.toLowerCase() === elem);
+    }
+    function isBoolean(...args) {
+      return args.some((elem) => elem.toLowerCase() === "boolean");
+    }
+  
+    const isInternalKey = (key) => key[0] === "_" || key === "$stable";
+    const normalizeSlotValue = (value) => isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];
+    const normalizeSlot = (key, rawSlot, ctx) => {
+      if (rawSlot._n) {
+        return rawSlot;
+      }
+      const normalized = withCtx((...args) => {
+        if (currentInstance) {
+          warn(
+            `Slot "${key}" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.`
+          );
+        }
+        return normalizeSlotValue(rawSlot(...args));
+      }, ctx);
+      normalized._c = false;
+      return normalized;
+    };
+    const normalizeObjectSlots = (rawSlots, slots, instance) => {
+      const ctx = rawSlots._ctx;
+      for (const key in rawSlots) {
+        if (isInternalKey(key))
+          continue;
+        const value = rawSlots[key];
+        if (isFunction(value)) {
+          slots[key] = normalizeSlot(key, value, ctx);
+        } else if (value != null) {
+          {
+            warn(
+              `Non-function value encountered for slot "${key}". Prefer function slots for better performance.`
+            );
+          }
+          const normalized = normalizeSlotValue(value);
+          slots[key] = () => normalized;
+        }
+      }
+    };
+    const normalizeVNodeSlots = (instance, children) => {
+      if (!isKeepAlive(instance.vnode) && true) {
+        warn(
+          `Non-function value encountered for default slot. Prefer function slots for better performance.`
+        );
+      }
+      const normalized = normalizeSlotValue(children);
+      instance.slots.default = () => normalized;
+    };
+    const initSlots = (instance, children) => {
+      if (instance.vnode.shapeFlag & 32) {
+        const type = children._;
+        if (type) {
+          instance.slots = toRaw(children);
+          def(children, "_", type);
+        } else {
+          normalizeObjectSlots(
+            children,
+            instance.slots = {});
+        }
+      } else {
+        instance.slots = {};
+        if (children) {
+          normalizeVNodeSlots(instance, children);
+        }
+      }
+      def(instance.slots, InternalObjectKey, 1);
+    };
+    const updateSlots = (instance, children, optimized) => {
+      const { vnode, slots } = instance;
+      let needDeletionCheck = true;
+      let deletionComparisonTarget = EMPTY_OBJ;
+      if (vnode.shapeFlag & 32) {
+        const type = children._;
+        if (type) {
+          if (isHmrUpdating) {
+            extend(slots, children);
+            trigger(instance, "set", "$slots");
+          } else if (optimized && type === 1) {
+            needDeletionCheck = false;
+          } else {
+            extend(slots, children);
+            if (!optimized && type === 1) {
+              delete slots._;
+            }
+          }
+        } else {
+          needDeletionCheck = !children.$stable;
+          normalizeObjectSlots(children, slots);
+        }
+        deletionComparisonTarget = children;
+      } else if (children) {
+        normalizeVNodeSlots(instance, children);
+        deletionComparisonTarget = { default: 1 };
+      }
+      if (needDeletionCheck) {
+        for (const key in slots) {
+          if (!isInternalKey(key) && !(key in deletionComparisonTarget)) {
+            delete slots[key];
+          }
+        }
+      }
+    };
+  
+    function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
+      if (isArray(rawRef)) {
+        rawRef.forEach(
+          (r, i) => setRef(
+            r,
+            oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef),
+            parentSuspense,
+            vnode,
+            isUnmount
+          )
+        );
+        return;
+      }
+      if (isAsyncWrapper(vnode) && !isUnmount) {
+        return;
+      }
+      const refValue = vnode.shapeFlag & 4 ? getExposeProxy(vnode.component) || vnode.component.proxy : vnode.el;
+      const value = isUnmount ? null : refValue;
+      const { i: owner, r: ref } = rawRef;
+      if (!owner) {
+        warn(
+          `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.`
+        );
+        return;
+      }
+      const oldRef = oldRawRef && oldRawRef.r;
+      const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;
+      const setupState = owner.setupState;
+      if (oldRef != null && oldRef !== ref) {
+        if (isString(oldRef)) {
+          refs[oldRef] = null;
+          if (hasOwn(setupState, oldRef)) {
+            setupState[oldRef] = null;
+          }
+        } else if (isRef(oldRef)) {
+          oldRef.value = null;
+        }
+      }
+      if (isFunction(ref)) {
+        callWithErrorHandling(ref, owner, 12, [value, refs]);
+      } else {
+        const _isString = isString(ref);
+        const _isRef = isRef(ref);
+        if (_isString || _isRef) {
+          const doSet = () => {
+            if (rawRef.f) {
+              const existing = _isString ? hasOwn(setupState, ref) ? setupState[ref] : refs[ref] : ref.value;
+              if (isUnmount) {
+                isArray(existing) && remove(existing, refValue);
+              } else {
+                if (!isArray(existing)) {
+                  if (_isString) {
+                    refs[ref] = [refValue];
+                    if (hasOwn(setupState, ref)) {
+                      setupState[ref] = refs[ref];
+                    }
+                  } else {
+                    ref.value = [refValue];
+                    if (rawRef.k)
+                      refs[rawRef.k] = ref.value;
+                  }
+                } else if (!existing.includes(refValue)) {
+                  existing.push(refValue);
+                }
+              }
+            } else if (_isString) {
+              refs[ref] = value;
+              if (hasOwn(setupState, ref)) {
+                setupState[ref] = value;
+              }
+            } else if (_isRef) {
+              ref.value = value;
+              if (rawRef.k)
+                refs[rawRef.k] = value;
+            } else {
+              warn("Invalid template ref type:", ref, `(${typeof ref})`);
+            }
+          };
+          if (value) {
+            doSet.id = -1;
+            queuePostRenderEffect(doSet, parentSuspense);
+          } else {
+            doSet();
+          }
+        } else {
+          warn("Invalid template ref type:", ref, `(${typeof ref})`);
+        }
+      }
+    }
+  
+    let hasMismatch = false;
+    const isSVGContainer = (container) => /svg/.test(container.namespaceURI) && container.tagName !== "foreignObject";
+    const isComment = (node) => node.nodeType === 8 /* COMMENT */;
+    function createHydrationFunctions(rendererInternals) {
+      const {
+        mt: mountComponent,
+        p: patch,
+        o: {
+          patchProp,
+          createText,
+          nextSibling,
+          parentNode,
+          remove,
+          insert,
+          createComment
+        }
+      } = rendererInternals;
+      const hydrate = (vnode, container) => {
+        if (!container.hasChildNodes()) {
+          warn(
+            `Attempting to hydrate existing markup but container is empty. Performing full mount instead.`
+          );
+          patch(null, vnode, container);
+          flushPostFlushCbs();
+          container._vnode = vnode;
+          return;
+        }
+        hasMismatch = false;
+        hydrateNode(container.firstChild, vnode, null, null, null);
+        flushPostFlushCbs();
+        container._vnode = vnode;
+        if (hasMismatch && true) {
+          console.error(`Hydration completed but contains mismatches.`);
+        }
+      };
+      const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {
+        const isFragmentStart = isComment(node) && node.data === "[";
+        const onMismatch = () => handleMismatch(
+          node,
+          vnode,
+          parentComponent,
+          parentSuspense,
+          slotScopeIds,
+          isFragmentStart
+        );
+        const { type, ref, shapeFlag, patchFlag } = vnode;
+        let domType = node.nodeType;
+        vnode.el = node;
+        if (patchFlag === -2) {
+          optimized = false;
+          vnode.dynamicChildren = null;
+        }
+        let nextNode = null;
+        switch (type) {
+          case Text:
+            if (domType !== 3 /* TEXT */) {
+              if (vnode.children === "") {
+                insert(vnode.el = createText(""), parentNode(node), node);
+                nextNode = node;
+              } else {
+                nextNode = onMismatch();
+              }
+            } else {
+              if (node.data !== vnode.children) {
+                hasMismatch = true;
+                warn(
+                  `Hydration text mismatch:
+  - Client: ${JSON.stringify(node.data)}
+  - Server: ${JSON.stringify(vnode.children)}`
+                );
+                node.data = vnode.children;
+              }
+              nextNode = nextSibling(node);
+            }
+            break;
+          case Comment:
+            if (domType !== 8 /* COMMENT */ || isFragmentStart) {
+              nextNode = onMismatch();
+            } else {
+              nextNode = nextSibling(node);
+            }
+            break;
+          case Static:
+            if (isFragmentStart) {
+              node = nextSibling(node);
+              domType = node.nodeType;
+            }
+            if (domType === 1 /* ELEMENT */ || domType === 3 /* TEXT */) {
+              nextNode = node;
+              const needToAdoptContent = !vnode.children.length;
+              for (let i = 0; i < vnode.staticCount; i++) {
+                if (needToAdoptContent)
+                  vnode.children += nextNode.nodeType === 1 /* ELEMENT */ ? nextNode.outerHTML : nextNode.data;
+                if (i === vnode.staticCount - 1) {
+                  vnode.anchor = nextNode;
+                }
+                nextNode = nextSibling(nextNode);
+              }
+              return isFragmentStart ? nextSibling(nextNode) : nextNode;
+            } else {
+              onMismatch();
+            }
+            break;
+          case Fragment:
+            if (!isFragmentStart) {
+              nextNode = onMismatch();
+            } else {
+              nextNode = hydrateFragment(
+                node,
+                vnode,
+                parentComponent,
+                parentSuspense,
+                slotScopeIds,
+                optimized
+              );
+            }
+            break;
+          default:
+            if (shapeFlag & 1) {
+              if (domType !== 1 /* ELEMENT */ || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) {
+                nextNode = onMismatch();
+              } else {
+                nextNode = hydrateElement(
+                  node,
+                  vnode,
+                  parentComponent,
+                  parentSuspense,
+                  slotScopeIds,
+                  optimized
+                );
+              }
+            } else if (shapeFlag & 6) {
+              vnode.slotScopeIds = slotScopeIds;
+              const container = parentNode(node);
+              mountComponent(
+                vnode,
+                container,
+                null,
+                parentComponent,
+                parentSuspense,
+                isSVGContainer(container),
+                optimized
+              );
+              nextNode = isFragmentStart ? locateClosingAsyncAnchor(node) : nextSibling(node);
+              if (nextNode && isComment(nextNode) && nextNode.data === "teleport end") {
+                nextNode = nextSibling(nextNode);
+              }
+              if (isAsyncWrapper(vnode)) {
+                let subTree;
+                if (isFragmentStart) {
+                  subTree = createVNode(Fragment);
+                  subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;
+                } else {
+                  subTree = node.nodeType === 3 ? createTextVNode("") : createVNode("div");
+                }
+                subTree.el = node;
+                vnode.component.subTree = subTree;
+              }
+            } else if (shapeFlag & 64) {
+              if (domType !== 8 /* COMMENT */) {
+                nextNode = onMismatch();
+              } else {
+                nextNode = vnode.type.hydrate(
+                  node,
+                  vnode,
+                  parentComponent,
+                  parentSuspense,
+                  slotScopeIds,
+                  optimized,
+                  rendererInternals,
+                  hydrateChildren
+                );
+              }
+            } else if (shapeFlag & 128) {
+              nextNode = vnode.type.hydrate(
+                node,
+                vnode,
+                parentComponent,
+                parentSuspense,
+                isSVGContainer(parentNode(node)),
+                slotScopeIds,
+                optimized,
+                rendererInternals,
+                hydrateNode
+              );
+            } else {
+              warn("Invalid HostVNode type:", type, `(${typeof type})`);
+            }
+        }
+        if (ref != null) {
+          setRef(ref, null, parentSuspense, vnode);
+        }
+        return nextNode;
+      };
+      const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {
+        optimized = optimized || !!vnode.dynamicChildren;
+        const { type, props, patchFlag, shapeFlag, dirs } = vnode;
+        const forcePatchValue = type === "input" && dirs || type === "option";
+        {
+          if (dirs) {
+            invokeDirectiveHook(vnode, null, parentComponent, "created");
+          }
+          if (props) {
+            if (forcePatchValue || !optimized || patchFlag & (16 | 32)) {
+              for (const key in props) {
+                if (forcePatchValue && key.endsWith("value") || isOn(key) && !isReservedProp(key)) {
+                  patchProp(
+                    el,
+                    key,
+                    null,
+                    props[key],
+                    false,
+                    void 0,
+                    parentComponent
+                  );
+                }
+              }
+            } else if (props.onClick) {
+              patchProp(
+                el,
+                "onClick",
+                null,
+                props.onClick,
+                false,
+                void 0,
+                parentComponent
+              );
+            }
+          }
+          let vnodeHooks;
+          if (vnodeHooks = props && props.onVnodeBeforeMount) {
+            invokeVNodeHook(vnodeHooks, parentComponent, vnode);
+          }
+          if (dirs) {
+            invokeDirectiveHook(vnode, null, parentComponent, "beforeMount");
+          }
+          if ((vnodeHooks = props && props.onVnodeMounted) || dirs) {
+            queueEffectWithSuspense(() => {
+              vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);
+              dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted");
+            }, parentSuspense);
+          }
+          if (shapeFlag & 16 && // skip if element has innerHTML / textContent
+          !(props && (props.innerHTML || props.textContent))) {
+            let next = hydrateChildren(
+              el.firstChild,
+              vnode,
+              el,
+              parentComponent,
+              parentSuspense,
+              slotScopeIds,
+              optimized
+            );
+            let hasWarned = false;
+            while (next) {
+              hasMismatch = true;
+              if (!hasWarned) {
+                warn(
+                  `Hydration children mismatch in <${vnode.type}>: server rendered element contains more child nodes than client vdom.`
+                );
+                hasWarned = true;
+              }
+              const cur = next;
+              next = next.nextSibling;
+              remove(cur);
+            }
+          } else if (shapeFlag & 8) {
+            if (el.textContent !== vnode.children) {
+              hasMismatch = true;
+              warn(
+                `Hydration text content mismatch in <${vnode.type}>:
+  - Client: ${el.textContent}
+  - Server: ${vnode.children}`
+              );
+              el.textContent = vnode.children;
+            }
+          }
+        }
+        return el.nextSibling;
+      };
+      const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {
+        optimized = optimized || !!parentVNode.dynamicChildren;
+        const children = parentVNode.children;
+        const l = children.length;
+        let hasWarned = false;
+        for (let i = 0; i < l; i++) {
+          const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]);
+          if (node) {
+            node = hydrateNode(
+              node,
+              vnode,
+              parentComponent,
+              parentSuspense,
+              slotScopeIds,
+              optimized
+            );
+          } else if (vnode.type === Text && !vnode.children) {
+            continue;
+          } else {
+            hasMismatch = true;
+            if (!hasWarned) {
+              warn(
+                `Hydration children mismatch in <${container.tagName.toLowerCase()}>: server rendered element contains fewer child nodes than client vdom.`
+              );
+              hasWarned = true;
+            }
+            patch(
+              null,
+              vnode,
+              container,
+              null,
+              parentComponent,
+              parentSuspense,
+              isSVGContainer(container),
+              slotScopeIds
+            );
+          }
+        }
+        return node;
+      };
+      const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {
+        const { slotScopeIds: fragmentSlotScopeIds } = vnode;
+        if (fragmentSlotScopeIds) {
+          slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;
+        }
+        const container = parentNode(node);
+        const next = hydrateChildren(
+          nextSibling(node),
+          vnode,
+          container,
+          parentComponent,
+          parentSuspense,
+          slotScopeIds,
+          optimized
+        );
+        if (next && isComment(next) && next.data === "]") {
+          return nextSibling(vnode.anchor = next);
+        } else {
+          hasMismatch = true;
+          insert(vnode.anchor = createComment(`]`), container, next);
+          return next;
+        }
+      };
+      const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {
+        hasMismatch = true;
+        warn(
+          `Hydration node mismatch:
+  - Client vnode:`,
+          vnode.type,
+          `
+  - Server rendered DOM:`,
+          node,
+          node.nodeType === 3 /* TEXT */ ? `(text)` : isComment(node) && node.data === "[" ? `(start of fragment)` : ``
+        );
+        vnode.el = null;
+        if (isFragment) {
+          const end = locateClosingAsyncAnchor(node);
+          while (true) {
+            const next2 = nextSibling(node);
+            if (next2 && next2 !== end) {
+              remove(next2);
+            } else {
+              break;
+            }
+          }
+        }
+        const next = nextSibling(node);
+        const container = parentNode(node);
+        remove(node);
+        patch(
+          null,
+          vnode,
+          container,
+          next,
+          parentComponent,
+          parentSuspense,
+          isSVGContainer(container),
+          slotScopeIds
+        );
+        return next;
+      };
+      const locateClosingAsyncAnchor = (node) => {
+        let match = 0;
+        while (node) {
+          node = nextSibling(node);
+          if (node && isComment(node)) {
+            if (node.data === "[")
+              match++;
+            if (node.data === "]") {
+              if (match === 0) {
+                return nextSibling(node);
+              } else {
+                match--;
+              }
+            }
+          }
+        }
+        return node;
+      };
+      return [hydrate, hydrateNode];
+    }
+  
+    let supported;
+    let perf;
+    function startMeasure(instance, type) {
+      if (instance.appContext.config.performance && isSupported()) {
+        perf.mark(`vue-${type}-${instance.uid}`);
+      }
+      {
+        devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());
+      }
+    }
+    function endMeasure(instance, type) {
+      if (instance.appContext.config.performance && isSupported()) {
+        const startTag = `vue-${type}-${instance.uid}`;
+        const endTag = startTag + `:end`;
+        perf.mark(endTag);
+        perf.measure(
+          `<${formatComponentName(instance, instance.type)}> ${type}`,
+          startTag,
+          endTag
+        );
+        perf.clearMarks(startTag);
+        perf.clearMarks(endTag);
+      }
+      {
+        devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());
+      }
+    }
+    function isSupported() {
+      if (supported !== void 0) {
+        return supported;
+      }
+      if (typeof window !== "undefined" && window.performance) {
+        supported = true;
+        perf = window.performance;
+      } else {
+        supported = false;
+      }
+      return supported;
+    }
+  
+    const queuePostRenderEffect = queueEffectWithSuspense ;
+    function createRenderer(options) {
+      return baseCreateRenderer(options);
+    }
+    function createHydrationRenderer(options) {
+      return baseCreateRenderer(options, createHydrationFunctions);
+    }
+    function baseCreateRenderer(options, createHydrationFns) {
+      const target = getGlobalThis();
+      target.__VUE__ = true;
+      {
+        setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);
+      }
+      const {
+        insert: hostInsert,
+        remove: hostRemove,
+        patchProp: hostPatchProp,
+        createElement: hostCreateElement,
+        createText: hostCreateText,
+        createComment: hostCreateComment,
+        setText: hostSetText,
+        setElementText: hostSetElementText,
+        parentNode: hostParentNode,
+        nextSibling: hostNextSibling,
+        setScopeId: hostSetScopeId = NOOP,
+        insertStaticContent: hostInsertStaticContent
+      } = options;
+      const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = isHmrUpdating ? false : !!n2.dynamicChildren) => {
+        if (n1 === n2) {
+          return;
+        }
+        if (n1 && !isSameVNodeType(n1, n2)) {
+          anchor = getNextHostNode(n1);
+          unmount(n1, parentComponent, parentSuspense, true);
+          n1 = null;
+        }
+        if (n2.patchFlag === -2) {
+          optimized = false;
+          n2.dynamicChildren = null;
+        }
+        const { type, ref, shapeFlag } = n2;
+        switch (type) {
+          case Text:
+            processText(n1, n2, container, anchor);
+            break;
+          case Comment:
+            processCommentNode(n1, n2, container, anchor);
+            break;
+          case Static:
+            if (n1 == null) {
+              mountStaticNode(n2, container, anchor, isSVG);
+            } else {
+              patchStaticNode(n1, n2, container, isSVG);
+            }
+            break;
+          case Fragment:
+            processFragment(
+              n1,
+              n2,
+              container,
+              anchor,
+              parentComponent,
+              parentSuspense,
+              isSVG,
+              slotScopeIds,
+              optimized
+            );
+            break;
+          default:
+            if (shapeFlag & 1) {
+              processElement(
+                n1,
+                n2,
+                container,
+                anchor,
+                parentComponent,
+                parentSuspense,
+                isSVG,
+                slotScopeIds,
+                optimized
+              );
+            } else if (shapeFlag & 6) {
+              processComponent(
+                n1,
+                n2,
+                container,
+                anchor,
+                parentComponent,
+                parentSuspense,
+                isSVG,
+                slotScopeIds,
+                optimized
+              );
+            } else if (shapeFlag & 64) {
+              type.process(
+                n1,
+                n2,
+                container,
+                anchor,
+                parentComponent,
+                parentSuspense,
+                isSVG,
+                slotScopeIds,
+                optimized,
+                internals
+              );
+            } else if (shapeFlag & 128) {
+              type.process(
+                n1,
+                n2,
+                container,
+                anchor,
+                parentComponent,
+                parentSuspense,
+                isSVG,
+                slotScopeIds,
+                optimized,
+                internals
+              );
+            } else {
+              warn("Invalid VNode type:", type, `(${typeof type})`);
+            }
+        }
+        if (ref != null && parentComponent) {
+          setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);
+        }
+      };
+      const processText = (n1, n2, container, anchor) => {
+        if (n1 == null) {
+          hostInsert(
+            n2.el = hostCreateText(n2.children),
+            container,
+            anchor
+          );
+        } else {
+          const el = n2.el = n1.el;
+          if (n2.children !== n1.children) {
+            hostSetText(el, n2.children);
+          }
+        }
+      };
+      const processCommentNode = (n1, n2, container, anchor) => {
+        if (n1 == null) {
+          hostInsert(
+            n2.el = hostCreateComment(n2.children || ""),
+            container,
+            anchor
+          );
+        } else {
+          n2.el = n1.el;
+        }
+      };
+      const mountStaticNode = (n2, container, anchor, isSVG) => {
+        [n2.el, n2.anchor] = hostInsertStaticContent(
+          n2.children,
+          container,
+          anchor,
+          isSVG,
+          n2.el,
+          n2.anchor
+        );
+      };
+      const patchStaticNode = (n1, n2, container, isSVG) => {
+        if (n2.children !== n1.children) {
+          const anchor = hostNextSibling(n1.anchor);
+          removeStaticNode(n1);
+          [n2.el, n2.anchor] = hostInsertStaticContent(
+            n2.children,
+            container,
+            anchor,
+            isSVG
+          );
+        } else {
+          n2.el = n1.el;
+          n2.anchor = n1.anchor;
+        }
+      };
+      const moveStaticNode = ({ el, anchor }, container, nextSibling) => {
+        let next;
+        while (el && el !== anchor) {
+          next = hostNextSibling(el);
+          hostInsert(el, container, nextSibling);
+          el = next;
+        }
+        hostInsert(anchor, container, nextSibling);
+      };
+      const removeStaticNode = ({ el, anchor }) => {
+        let next;
+        while (el && el !== anchor) {
+          next = hostNextSibling(el);
+          hostRemove(el);
+          el = next;
+        }
+        hostRemove(anchor);
+      };
+      const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
+        isSVG = isSVG || n2.type === "svg";
+        if (n1 == null) {
+          mountElement(
+            n2,
+            container,
+            anchor,
+            parentComponent,
+            parentSuspense,
+            isSVG,
+            slotScopeIds,
+            optimized
+          );
+        } else {
+          patchElement(
+            n1,
+            n2,
+            parentComponent,
+            parentSuspense,
+            isSVG,
+            slotScopeIds,
+            optimized
+          );
+        }
+      };
+      const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
+        let el;
+        let vnodeHook;
+        const { type, props, shapeFlag, transition, dirs } = vnode;
+        el = vnode.el = hostCreateElement(
+          vnode.type,
+          isSVG,
+          props && props.is,
+          props
+        );
+        if (shapeFlag & 8) {
+          hostSetElementText(el, vnode.children);
+        } else if (shapeFlag & 16) {
+          mountChildren(
+            vnode.children,
+            el,
+            null,
+            parentComponent,
+            parentSuspense,
+            isSVG && type !== "foreignObject",
+            slotScopeIds,
+            optimized
+          );
+        }
+        if (dirs) {
+          invokeDirectiveHook(vnode, null, parentComponent, "created");
+        }
+        setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);
+        if (props) {
+          for (const key in props) {
+            if (key !== "value" && !isReservedProp(key)) {
+              hostPatchProp(
+                el,
+                key,
+                null,
+                props[key],
+                isSVG,
+                vnode.children,
+                parentComponent,
+                parentSuspense,
+                unmountChildren
+              );
+            }
+          }
+          if ("value" in props) {
+            hostPatchProp(el, "value", null, props.value);
+          }
+          if (vnodeHook = props.onVnodeBeforeMount) {
+            invokeVNodeHook(vnodeHook, parentComponent, vnode);
+          }
+        }
+        {
+          Object.defineProperty(el, "__vnode", {
+            value: vnode,
+            enumerable: false
+          });
+          Object.defineProperty(el, "__vueParentComponent", {
+            value: parentComponent,
+            enumerable: false
+          });
+        }
+        if (dirs) {
+          invokeDirectiveHook(vnode, null, parentComponent, "beforeMount");
+        }
+        const needCallTransitionHooks = (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted;
+        if (needCallTransitionHooks) {
+          transition.beforeEnter(el);
+        }
+        hostInsert(el, container, anchor);
+        if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) {
+          queuePostRenderEffect(() => {
+            vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);
+            needCallTransitionHooks && transition.enter(el);
+            dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted");
+          }, parentSuspense);
+        }
+      };
+      const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {
+        if (scopeId) {
+          hostSetScopeId(el, scopeId);
+        }
+        if (slotScopeIds) {
+          for (let i = 0; i < slotScopeIds.length; i++) {
+            hostSetScopeId(el, slotScopeIds[i]);
+          }
+        }
+        if (parentComponent) {
+          let subTree = parentComponent.subTree;
+          if (subTree.patchFlag > 0 && subTree.patchFlag & 2048) {
+            subTree = filterSingleRoot(subTree.children) || subTree;
+          }
+          if (vnode === subTree) {
+            const parentVNode = parentComponent.vnode;
+            setScopeId(
+              el,
+              parentVNode,
+              parentVNode.scopeId,
+              parentVNode.slotScopeIds,
+              parentComponent.parent
+            );
+          }
+        }
+      };
+      const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start = 0) => {
+        for (let i = start; i < children.length; i++) {
+          const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]);
+          patch(
+            null,
+            child,
+            container,
+            anchor,
+            parentComponent,
+            parentSuspense,
+            isSVG,
+            slotScopeIds,
+            optimized
+          );
+        }
+      };
+      const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
+        const el = n2.el = n1.el;
+        let { patchFlag, dynamicChildren, dirs } = n2;
+        patchFlag |= n1.patchFlag & 16;
+        const oldProps = n1.props || EMPTY_OBJ;
+        const newProps = n2.props || EMPTY_OBJ;
+        let vnodeHook;
+        parentComponent && toggleRecurse(parentComponent, false);
+        if (vnodeHook = newProps.onVnodeBeforeUpdate) {
+          invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
+        }
+        if (dirs) {
+          invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate");
+        }
+        parentComponent && toggleRecurse(parentComponent, true);
+        if (isHmrUpdating) {
+          patchFlag = 0;
+          optimized = false;
+          dynamicChildren = null;
+        }
+        const areChildrenSVG = isSVG && n2.type !== "foreignObject";
+        if (dynamicChildren) {
+          patchBlockChildren(
+            n1.dynamicChildren,
+            dynamicChildren,
+            el,
+            parentComponent,
+            parentSuspense,
+            areChildrenSVG,
+            slotScopeIds
+          );
+          {
+            traverseStaticChildren(n1, n2);
+          }
+        } else if (!optimized) {
+          patchChildren(
+            n1,
+            n2,
+            el,
+            null,
+            parentComponent,
+            parentSuspense,
+            areChildrenSVG,
+            slotScopeIds,
+            false
+          );
+        }
+        if (patchFlag > 0) {
+          if (patchFlag & 16) {
+            patchProps(
+              el,
+              n2,
+              oldProps,
+              newProps,
+              parentComponent,
+              parentSuspense,
+              isSVG
+            );
+          } else {
+            if (patchFlag & 2) {
+              if (oldProps.class !== newProps.class) {
+                hostPatchProp(el, "class", null, newProps.class, isSVG);
+              }
+            }
+            if (patchFlag & 4) {
+              hostPatchProp(el, "style", oldProps.style, newProps.style, isSVG);
+            }
+            if (patchFlag & 8) {
+              const propsToUpdate = n2.dynamicProps;
+              for (let i = 0; i < propsToUpdate.length; i++) {
+                const key = propsToUpdate[i];
+                const prev = oldProps[key];
+                const next = newProps[key];
+                if (next !== prev || key === "value") {
+                  hostPatchProp(
+                    el,
+                    key,
+                    prev,
+                    next,
+                    isSVG,
+                    n1.children,
+                    parentComponent,
+                    parentSuspense,
+                    unmountChildren
+                  );
+                }
+              }
+            }
+          }
+          if (patchFlag & 1) {
+            if (n1.children !== n2.children) {
+              hostSetElementText(el, n2.children);
+            }
+          }
+        } else if (!optimized && dynamicChildren == null) {
+          patchProps(
+            el,
+            n2,
+            oldProps,
+            newProps,
+            parentComponent,
+            parentSuspense,
+            isSVG
+          );
+        }
+        if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {
+          queuePostRenderEffect(() => {
+            vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
+            dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated");
+          }, parentSuspense);
+        }
+      };
+      const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => {
+        for (let i = 0; i < newChildren.length; i++) {
+          const oldVNode = oldChildren[i];
+          const newVNode = newChildren[i];
+          const container = (
+            // oldVNode may be an errored async setup() component inside Suspense
+            // which will not have a mounted element
+            oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent
+            // of the Fragment itself so it can move its children.
+            (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement
+            // which also requires the correct parent container
+            !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.
+            oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : (
+              // In other cases, the parent container is not actually used so we
+              // just pass the block element here to avoid a DOM parentNode call.
+              fallbackContainer
+            )
+          );
+          patch(
+            oldVNode,
+            newVNode,
+            container,
+            null,
+            parentComponent,
+            parentSuspense,
+            isSVG,
+            slotScopeIds,
+            true
+          );
+        }
+      };
+      const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => {
+        if (oldProps !== newProps) {
+          if (oldProps !== EMPTY_OBJ) {
+            for (const key in oldProps) {
+              if (!isReservedProp(key) && !(key in newProps)) {
+                hostPatchProp(
+                  el,
+                  key,
+                  oldProps[key],
+                  null,
+                  isSVG,
+                  vnode.children,
+                  parentComponent,
+                  parentSuspense,
+                  unmountChildren
+                );
+              }
+            }
+          }
+          for (const key in newProps) {
+            if (isReservedProp(key))
+              continue;
+            const next = newProps[key];
+            const prev = oldProps[key];
+            if (next !== prev && key !== "value") {
+              hostPatchProp(
+                el,
+                key,
+                prev,
+                next,
+                isSVG,
+                vnode.children,
+                parentComponent,
+                parentSuspense,
+                unmountChildren
+              );
+            }
+          }
+          if ("value" in newProps) {
+            hostPatchProp(el, "value", oldProps.value, newProps.value);
+          }
+        }
+      };
+      const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
+        const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText("");
+        const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText("");
+        let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;
+        if (
+          // #5523 dev root fragment may inherit directives
+          isHmrUpdating || patchFlag & 2048
+        ) {
+          patchFlag = 0;
+          optimized = false;
+          dynamicChildren = null;
+        }
+        if (fragmentSlotScopeIds) {
+          slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;
+        }
+        if (n1 == null) {
+          hostInsert(fragmentStartAnchor, container, anchor);
+          hostInsert(fragmentEndAnchor, container, anchor);
+          mountChildren(
+            n2.children,
+            container,
+            fragmentEndAnchor,
+            parentComponent,
+            parentSuspense,
+            isSVG,
+            slotScopeIds,
+            optimized
+          );
+        } else {
+          if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result
+          // of renderSlot() with no valid children
+          n1.dynamicChildren) {
+            patchBlockChildren(
+              n1.dynamicChildren,
+              dynamicChildren,
+              container,
+              parentComponent,
+              parentSuspense,
+              isSVG,
+              slotScopeIds
+            );
+            {
+              traverseStaticChildren(n1, n2);
+            }
+          } else {
+            patchChildren(
+              n1,
+              n2,
+              container,
+              fragmentEndAnchor,
+              parentComponent,
+              parentSuspense,
+              isSVG,
+              slotScopeIds,
+              optimized
+            );
+          }
+        }
+      };
+      const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
+        n2.slotScopeIds = slotScopeIds;
+        if (n1 == null) {
+          if (n2.shapeFlag & 512) {
+            parentComponent.ctx.activate(
+              n2,
+              container,
+              anchor,
+              isSVG,
+              optimized
+            );
+          } else {
+            mountComponent(
+              n2,
+              container,
+              anchor,
+              parentComponent,
+              parentSuspense,
+              isSVG,
+              optimized
+            );
+          }
+        } else {
+          updateComponent(n1, n2, optimized);
+        }
+      };
+      const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {
+        const instance = (initialVNode.component = createComponentInstance(
+          initialVNode,
+          parentComponent,
+          parentSuspense
+        ));
+        if (instance.type.__hmrId) {
+          registerHMR(instance);
+        }
+        {
+          pushWarningContext(initialVNode);
+          startMeasure(instance, `mount`);
+        }
+        if (isKeepAlive(initialVNode)) {
+          instance.ctx.renderer = internals;
+        }
+        {
+          {
+            startMeasure(instance, `init`);
+          }
+          setupComponent(instance);
+          {
+            endMeasure(instance, `init`);
+          }
+        }
+        if (instance.asyncDep) {
+          parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect);
+          if (!initialVNode.el) {
+            const placeholder = instance.subTree = createVNode(Comment);
+            processCommentNode(null, placeholder, container, anchor);
+          }
+          return;
+        }
+        setupRenderEffect(
+          instance,
+          initialVNode,
+          container,
+          anchor,
+          parentSuspense,
+          isSVG,
+          optimized
+        );
+        {
+          popWarningContext();
+          endMeasure(instance, `mount`);
+        }
+      };
+      const updateComponent = (n1, n2, optimized) => {
+        const instance = n2.component = n1.component;
+        if (shouldUpdateComponent(n1, n2, optimized)) {
+          if (instance.asyncDep && !instance.asyncResolved) {
+            {
+              pushWarningContext(n2);
+            }
+            updateComponentPreRender(instance, n2, optimized);
+            {
+              popWarningContext();
+            }
+            return;
+          } else {
+            instance.next = n2;
+            invalidateJob(instance.update);
+            instance.update();
+          }
+        } else {
+          n2.el = n1.el;
+          instance.vnode = n2;
+        }
+      };
+      const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => {
+        const componentUpdateFn = () => {
+          if (!instance.isMounted) {
+            let vnodeHook;
+            const { el, props } = initialVNode;
+            const { bm, m, parent } = instance;
+            const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);
+            toggleRecurse(instance, false);
+            if (bm) {
+              invokeArrayFns(bm);
+            }
+            if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) {
+              invokeVNodeHook(vnodeHook, parent, initialVNode);
+            }
+            toggleRecurse(instance, true);
+            if (el && hydrateNode) {
+              const hydrateSubTree = () => {
+                {
+                  startMeasure(instance, `render`);
+                }
+                instance.subTree = renderComponentRoot(instance);
+                {
+                  endMeasure(instance, `render`);
+                }
+                {
+                  startMeasure(instance, `hydrate`);
+                }
+                hydrateNode(
+                  el,
+                  instance.subTree,
+                  instance,
+                  parentSuspense,
+                  null
+                );
+                {
+                  endMeasure(instance, `hydrate`);
+                }
+              };
+              if (isAsyncWrapperVNode) {
+                initialVNode.type.__asyncLoader().then(
+                  // note: we are moving the render call into an async callback,
+                  // which means it won't track dependencies - but it's ok because
+                  // a server-rendered async wrapper is already in resolved state
+                  // and it will never need to change.
+                  () => !instance.isUnmounted && hydrateSubTree()
+                );
+              } else {
+                hydrateSubTree();
+              }
+            } else {
+              {
+                startMeasure(instance, `render`);
+              }
+              const subTree = instance.subTree = renderComponentRoot(instance);
+              {
+                endMeasure(instance, `render`);
+              }
+              {
+                startMeasure(instance, `patch`);
+              }
+              patch(
+                null,
+                subTree,
+                container,
+                anchor,
+                instance,
+                parentSuspense,
+                isSVG
+              );
+              {
+                endMeasure(instance, `patch`);
+              }
+              initialVNode.el = subTree.el;
+            }
+            if (m) {
+              queuePostRenderEffect(m, parentSuspense);
+            }
+            if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) {
+              const scopedInitialVNode = initialVNode;
+              queuePostRenderEffect(
+                () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode),
+                parentSuspense
+              );
+            }
+            if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) {
+              instance.a && queuePostRenderEffect(instance.a, parentSuspense);
+            }
+            instance.isMounted = true;
+            {
+              devtoolsComponentAdded(instance);
+            }
+            initialVNode = container = anchor = null;
+          } else {
+            let { next, bu, u, parent, vnode } = instance;
+            let originNext = next;
+            let vnodeHook;
+            {
+              pushWarningContext(next || instance.vnode);
+            }
+            toggleRecurse(instance, false);
+            if (next) {
+              next.el = vnode.el;
+              updateComponentPreRender(instance, next, optimized);
+            } else {
+              next = vnode;
+            }
+            if (bu) {
+              invokeArrayFns(bu);
+            }
+            if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) {
+              invokeVNodeHook(vnodeHook, parent, next, vnode);
+            }
+            toggleRecurse(instance, true);
+            {
+              startMeasure(instance, `render`);
+            }
+            const nextTree = renderComponentRoot(instance);
+            {
+              endMeasure(instance, `render`);
+            }
+            const prevTree = instance.subTree;
+            instance.subTree = nextTree;
+            {
+              startMeasure(instance, `patch`);
+            }
+            patch(
+              prevTree,
+              nextTree,
+              // parent may have changed if it's in a teleport
+              hostParentNode(prevTree.el),
+              // anchor may have changed if it's in a fragment
+              getNextHostNode(prevTree),
+              instance,
+              parentSuspense,
+              isSVG
+            );
+            {
+              endMeasure(instance, `patch`);
+            }
+            next.el = nextTree.el;
+            if (originNext === null) {
+              updateHOCHostEl(instance, nextTree.el);
+            }
+            if (u) {
+              queuePostRenderEffect(u, parentSuspense);
+            }
+            if (vnodeHook = next.props && next.props.onVnodeUpdated) {
+              queuePostRenderEffect(
+                () => invokeVNodeHook(vnodeHook, parent, next, vnode),
+                parentSuspense
+              );
+            }
+            {
+              devtoolsComponentUpdated(instance);
+            }
+            {
+              popWarningContext();
+            }
+          }
+        };
+        const effect = instance.effect = new ReactiveEffect(
+          componentUpdateFn,
+          () => queueJob(update),
+          instance.scope
+          // track it in component's effect scope
+        );
+        const update = instance.update = () => effect.run();
+        update.id = instance.uid;
+        toggleRecurse(instance, true);
+        {
+          effect.onTrack = instance.rtc ? (e) => invokeArrayFns(instance.rtc, e) : void 0;
+          effect.onTrigger = instance.rtg ? (e) => invokeArrayFns(instance.rtg, e) : void 0;
+          update.ownerInstance = instance;
+        }
+        update();
+      };
+      const updateComponentPreRender = (instance, nextVNode, optimized) => {
+        nextVNode.component = instance;
+        const prevProps = instance.vnode.props;
+        instance.vnode = nextVNode;
+        instance.next = null;
+        updateProps(instance, nextVNode.props, prevProps, optimized);
+        updateSlots(instance, nextVNode.children, optimized);
+        pauseTracking();
+        flushPreFlushCbs();
+        resetTracking();
+      };
+      const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => {
+        const c1 = n1 && n1.children;
+        const prevShapeFlag = n1 ? n1.shapeFlag : 0;
+        const c2 = n2.children;
+        const { patchFlag, shapeFlag } = n2;
+        if (patchFlag > 0) {
+          if (patchFlag & 128) {
+            patchKeyedChildren(
+              c1,
+              c2,
+              container,
+              anchor,
+              parentComponent,
+              parentSuspense,
+              isSVG,
+              slotScopeIds,
+              optimized
+            );
+            return;
+          } else if (patchFlag & 256) {
+            patchUnkeyedChildren(
+              c1,
+              c2,
+              container,
+              anchor,
+              parentComponent,
+              parentSuspense,
+              isSVG,
+              slotScopeIds,
+              optimized
+            );
+            return;
+          }
+        }
+        if (shapeFlag & 8) {
+          if (prevShapeFlag & 16) {
+            unmountChildren(c1, parentComponent, parentSuspense);
+          }
+          if (c2 !== c1) {
+            hostSetElementText(container, c2);
+          }
+        } else {
+          if (prevShapeFlag & 16) {
+            if (shapeFlag & 16) {
+              patchKeyedChildren(
+                c1,
+                c2,
+                container,
+                anchor,
+                parentComponent,
+                parentSuspense,
+                isSVG,
+                slotScopeIds,
+                optimized
+              );
+            } else {
+              unmountChildren(c1, parentComponent, parentSuspense, true);
+            }
+          } else {
+            if (prevShapeFlag & 8) {
+              hostSetElementText(container, "");
+            }
+            if (shapeFlag & 16) {
+              mountChildren(
+                c2,
+                container,
+                anchor,
+                parentComponent,
+                parentSuspense,
+                isSVG,
+                slotScopeIds,
+                optimized
+              );
+            }
+          }
+        }
+      };
+      const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
+        c1 = c1 || EMPTY_ARR;
+        c2 = c2 || EMPTY_ARR;
+        const oldLength = c1.length;
+        const newLength = c2.length;
+        const commonLength = Math.min(oldLength, newLength);
+        let i;
+        for (i = 0; i < commonLength; i++) {
+          const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);
+          patch(
+            c1[i],
+            nextChild,
+            container,
+            null,
+            parentComponent,
+            parentSuspense,
+            isSVG,
+            slotScopeIds,
+            optimized
+          );
+        }
+        if (oldLength > newLength) {
+          unmountChildren(
+            c1,
+            parentComponent,
+            parentSuspense,
+            true,
+            false,
+            commonLength
+          );
+        } else {
+          mountChildren(
+            c2,
+            container,
+            anchor,
+            parentComponent,
+            parentSuspense,
+            isSVG,
+            slotScopeIds,
+            optimized,
+            commonLength
+          );
+        }
+      };
+      const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
+        let i = 0;
+        const l2 = c2.length;
+        let e1 = c1.length - 1;
+        let e2 = l2 - 1;
+        while (i <= e1 && i <= e2) {
+          const n1 = c1[i];
+          const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);
+          if (isSameVNodeType(n1, n2)) {
+            patch(
+              n1,
+              n2,
+              container,
+              null,
+              parentComponent,
+              parentSuspense,
+              isSVG,
+              slotScopeIds,
+              optimized
+            );
+          } else {
+            break;
+          }
+          i++;
+        }
+        while (i <= e1 && i <= e2) {
+          const n1 = c1[e1];
+          const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]);
+          if (isSameVNodeType(n1, n2)) {
+            patch(
+              n1,
+              n2,
+              container,
+              null,
+              parentComponent,
+              parentSuspense,
+              isSVG,
+              slotScopeIds,
+              optimized
+            );
+          } else {
+            break;
+          }
+          e1--;
+          e2--;
+        }
+        if (i > e1) {
+          if (i <= e2) {
+            const nextPos = e2 + 1;
+            const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;
+            while (i <= e2) {
+              patch(
+                null,
+                c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]),
+                container,
+                anchor,
+                parentComponent,
+                parentSuspense,
+                isSVG,
+                slotScopeIds,
+                optimized
+              );
+              i++;
+            }
+          }
+        } else if (i > e2) {
+          while (i <= e1) {
+            unmount(c1[i], parentComponent, parentSuspense, true);
+            i++;
+          }
+        } else {
+          const s1 = i;
+          const s2 = i;
+          const keyToNewIndexMap = /* @__PURE__ */ new Map();
+          for (i = s2; i <= e2; i++) {
+            const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);
+            if (nextChild.key != null) {
+              if (keyToNewIndexMap.has(nextChild.key)) {
+                warn(
+                  `Duplicate keys found during update:`,
+                  JSON.stringify(nextChild.key),
+                  `Make sure keys are unique.`
+                );
+              }
+              keyToNewIndexMap.set(nextChild.key, i);
+            }
+          }
+          let j;
+          let patched = 0;
+          const toBePatched = e2 - s2 + 1;
+          let moved = false;
+          let maxNewIndexSoFar = 0;
+          const newIndexToOldIndexMap = new Array(toBePatched);
+          for (i = 0; i < toBePatched; i++)
+            newIndexToOldIndexMap[i] = 0;
+          for (i = s1; i <= e1; i++) {
+            const prevChild = c1[i];
+            if (patched >= toBePatched) {
+              unmount(prevChild, parentComponent, parentSuspense, true);
+              continue;
+            }
+            let newIndex;
+            if (prevChild.key != null) {
+              newIndex = keyToNewIndexMap.get(prevChild.key);
+            } else {
+              for (j = s2; j <= e2; j++) {
+                if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) {
+                  newIndex = j;
+                  break;
+                }
+              }
+            }
+            if (newIndex === void 0) {
+              unmount(prevChild, parentComponent, parentSuspense, true);
+            } else {
+              newIndexToOldIndexMap[newIndex - s2] = i + 1;
+              if (newIndex >= maxNewIndexSoFar) {
+                maxNewIndexSoFar = newIndex;
+              } else {
+                moved = true;
+              }
+              patch(
+                prevChild,
+                c2[newIndex],
+                container,
+                null,
+                parentComponent,
+                parentSuspense,
+                isSVG,
+                slotScopeIds,
+                optimized
+              );
+              patched++;
+            }
+          }
+          const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR;
+          j = increasingNewIndexSequence.length - 1;
+          for (i = toBePatched - 1; i >= 0; i--) {
+            const nextIndex = s2 + i;
+            const nextChild = c2[nextIndex];
+            const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;
+            if (newIndexToOldIndexMap[i] === 0) {
+              patch(
+                null,
+                nextChild,
+                container,
+                anchor,
+                parentComponent,
+                parentSuspense,
+                isSVG,
+                slotScopeIds,
+                optimized
+              );
+            } else if (moved) {
+              if (j < 0 || i !== increasingNewIndexSequence[j]) {
+                move(nextChild, container, anchor, 2);
+              } else {
+                j--;
+              }
+            }
+          }
+        }
+      };
+      const move = (vnode, container, anchor, moveType, parentSuspense = null) => {
+        const { el, type, transition, children, shapeFlag } = vnode;
+        if (shapeFlag & 6) {
+          move(vnode.component.subTree, container, anchor, moveType);
+          return;
+        }
+        if (shapeFlag & 128) {
+          vnode.suspense.move(container, anchor, moveType);
+          return;
+        }
+        if (shapeFlag & 64) {
+          type.move(vnode, container, anchor, internals);
+          return;
+        }
+        if (type === Fragment) {
+          hostInsert(el, container, anchor);
+          for (let i = 0; i < children.length; i++) {
+            move(children[i], container, anchor, moveType);
+          }
+          hostInsert(vnode.anchor, container, anchor);
+          return;
+        }
+        if (type === Static) {
+          moveStaticNode(vnode, container, anchor);
+          return;
+        }
+        const needTransition = moveType !== 2 && shapeFlag & 1 && transition;
+        if (needTransition) {
+          if (moveType === 0) {
+            transition.beforeEnter(el);
+            hostInsert(el, container, anchor);
+            queuePostRenderEffect(() => transition.enter(el), parentSuspense);
+          } else {
+            const { leave, delayLeave, afterLeave } = transition;
+            const remove2 = () => hostInsert(el, container, anchor);
+            const performLeave = () => {
+              leave(el, () => {
+                remove2();
+                afterLeave && afterLeave();
+              });
+            };
+            if (delayLeave) {
+              delayLeave(el, remove2, performLeave);
+            } else {
+              performLeave();
+            }
+          }
+        } else {
+          hostInsert(el, container, anchor);
+        }
+      };
+      const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {
+        const {
+          type,
+          props,
+          ref,
+          children,
+          dynamicChildren,
+          shapeFlag,
+          patchFlag,
+          dirs
+        } = vnode;
+        if (ref != null) {
+          setRef(ref, null, parentSuspense, vnode, true);
+        }
+        if (shapeFlag & 256) {
+          parentComponent.ctx.deactivate(vnode);
+          return;
+        }
+        const shouldInvokeDirs = shapeFlag & 1 && dirs;
+        const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);
+        let vnodeHook;
+        if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) {
+          invokeVNodeHook(vnodeHook, parentComponent, vnode);
+        }
+        if (shapeFlag & 6) {
+          unmountComponent(vnode.component, parentSuspense, doRemove);
+        } else {
+          if (shapeFlag & 128) {
+            vnode.suspense.unmount(parentSuspense, doRemove);
+            return;
+          }
+          if (shouldInvokeDirs) {
+            invokeDirectiveHook(vnode, null, parentComponent, "beforeUnmount");
+          }
+          if (shapeFlag & 64) {
+            vnode.type.remove(
+              vnode,
+              parentComponent,
+              parentSuspense,
+              optimized,
+              internals,
+              doRemove
+            );
+          } else if (dynamicChildren && // #1153: fast path should not be taken for non-stable (v-for) fragments
+          (type !== Fragment || patchFlag > 0 && patchFlag & 64)) {
+            unmountChildren(
+              dynamicChildren,
+              parentComponent,
+              parentSuspense,
+              false,
+              true
+            );
+          } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) {
+            unmountChildren(children, parentComponent, parentSuspense);
+          }
+          if (doRemove) {
+            remove(vnode);
+          }
+        }
+        if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) {
+          queuePostRenderEffect(() => {
+            vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);
+            shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, "unmounted");
+          }, parentSuspense);
+        }
+      };
+      const remove = (vnode) => {
+        const { type, el, anchor, transition } = vnode;
+        if (type === Fragment) {
+          if (vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) {
+            vnode.children.forEach((child) => {
+              if (child.type === Comment) {
+                hostRemove(child.el);
+              } else {
+                remove(child);
+              }
+            });
+          } else {
+            removeFragment(el, anchor);
+          }
+          return;
+        }
+        if (type === Static) {
+          removeStaticNode(vnode);
+          return;
+        }
+        const performRemove = () => {
+          hostRemove(el);
+          if (transition && !transition.persisted && transition.afterLeave) {
+            transition.afterLeave();
+          }
+        };
+        if (vnode.shapeFlag & 1 && transition && !transition.persisted) {
+          const { leave, delayLeave } = transition;
+          const performLeave = () => leave(el, performRemove);
+          if (delayLeave) {
+            delayLeave(vnode.el, performRemove, performLeave);
+          } else {
+            performLeave();
+          }
+        } else {
+          performRemove();
+        }
+      };
+      const removeFragment = (cur, end) => {
+        let next;
+        while (cur !== end) {
+          next = hostNextSibling(cur);
+          hostRemove(cur);
+          cur = next;
+        }
+        hostRemove(end);
+      };
+      const unmountComponent = (instance, parentSuspense, doRemove) => {
+        if (instance.type.__hmrId) {
+          unregisterHMR(instance);
+        }
+        const { bum, scope, update, subTree, um } = instance;
+        if (bum) {
+          invokeArrayFns(bum);
+        }
+        scope.stop();
+        if (update) {
+          update.active = false;
+          unmount(subTree, instance, parentSuspense, doRemove);
+        }
+        if (um) {
+          queuePostRenderEffect(um, parentSuspense);
+        }
+        queuePostRenderEffect(() => {
+          instance.isUnmounted = true;
+        }, parentSuspense);
+        if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) {
+          parentSuspense.deps--;
+          if (parentSuspense.deps === 0) {
+            parentSuspense.resolve();
+          }
+        }
+        {
+          devtoolsComponentRemoved(instance);
+        }
+      };
+      const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {
+        for (let i = start; i < children.length; i++) {
+          unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);
+        }
+      };
+      const getNextHostNode = (vnode) => {
+        if (vnode.shapeFlag & 6) {
+          return getNextHostNode(vnode.component.subTree);
+        }
+        if (vnode.shapeFlag & 128) {
+          return vnode.suspense.next();
+        }
+        return hostNextSibling(vnode.anchor || vnode.el);
+      };
+      const render = (vnode, container, isSVG) => {
+        if (vnode == null) {
+          if (container._vnode) {
+            unmount(container._vnode, null, null, true);
+          }
+        } else {
+          patch(container._vnode || null, vnode, container, null, null, null, isSVG);
+        }
+        flushPreFlushCbs();
+        flushPostFlushCbs();
+        container._vnode = vnode;
+      };
+      const internals = {
+        p: patch,
+        um: unmount,
+        m: move,
+        r: remove,
+        mt: mountComponent,
+        mc: mountChildren,
+        pc: patchChildren,
+        pbc: patchBlockChildren,
+        n: getNextHostNode,
+        o: options
+      };
+      let hydrate;
+      let hydrateNode;
+      if (createHydrationFns) {
+        [hydrate, hydrateNode] = createHydrationFns(
+          internals
+        );
+      }
+      return {
+        render,
+        hydrate,
+        createApp: createAppAPI(render, hydrate)
+      };
+    }
+    function toggleRecurse({ effect, update }, allowed) {
+      effect.allowRecurse = update.allowRecurse = allowed;
+    }
+    function traverseStaticChildren(n1, n2, shallow = false) {
+      const ch1 = n1.children;
+      const ch2 = n2.children;
+      if (isArray(ch1) && isArray(ch2)) {
+        for (let i = 0; i < ch1.length; i++) {
+          const c1 = ch1[i];
+          let c2 = ch2[i];
+          if (c2.shapeFlag & 1 && !c2.dynamicChildren) {
+            if (c2.patchFlag <= 0 || c2.patchFlag === 32) {
+              c2 = ch2[i] = cloneIfMounted(ch2[i]);
+              c2.el = c1.el;
+            }
+            if (!shallow)
+              traverseStaticChildren(c1, c2);
+          }
+          if (c2.type === Text) {
+            c2.el = c1.el;
+          }
+          if (c2.type === Comment && !c2.el) {
+            c2.el = c1.el;
+          }
+        }
+      }
+    }
+    function getSequence(arr) {
+      const p = arr.slice();
+      const result = [0];
+      let i, j, u, v, c;
+      const len = arr.length;
+      for (i = 0; i < len; i++) {
+        const arrI = arr[i];
+        if (arrI !== 0) {
+          j = result[result.length - 1];
+          if (arr[j] < arrI) {
+            p[i] = j;
+            result.push(i);
+            continue;
+          }
+          u = 0;
+          v = result.length - 1;
+          while (u < v) {
+            c = u + v >> 1;
+            if (arr[result[c]] < arrI) {
+              u = c + 1;
+            } else {
+              v = c;
+            }
+          }
+          if (arrI < arr[result[u]]) {
+            if (u > 0) {
+              p[i] = result[u - 1];
+            }
+            result[u] = i;
+          }
+        }
+      }
+      u = result.length;
+      v = result[u - 1];
+      while (u-- > 0) {
+        result[u] = v;
+        v = p[v];
+      }
+      return result;
+    }
+  
+    const isTeleport = (type) => type.__isTeleport;
+    const isTeleportDisabled = (props) => props && (props.disabled || props.disabled === "");
+    const isTargetSVG = (target) => typeof SVGElement !== "undefined" && target instanceof SVGElement;
+    const resolveTarget = (props, select) => {
+      const targetSelector = props && props.to;
+      if (isString(targetSelector)) {
+        if (!select) {
+          warn(
+            `Current renderer does not support string target for Teleports. (missing querySelector renderer option)`
+          );
+          return null;
+        } else {
+          const target = select(targetSelector);
+          if (!target) {
+            warn(
+              `Failed to locate Teleport target with selector "${targetSelector}". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`
+            );
+          }
+          return target;
+        }
+      } else {
+        if (!targetSelector && !isTeleportDisabled(props)) {
+          warn(`Invalid Teleport target: ${targetSelector}`);
+        }
+        return targetSelector;
+      }
+    };
+    const TeleportImpl = {
+      __isTeleport: true,
+      process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals) {
+        const {
+          mc: mountChildren,
+          pc: patchChildren,
+          pbc: patchBlockChildren,
+          o: { insert, querySelector, createText, createComment }
+        } = internals;
+        const disabled = isTeleportDisabled(n2.props);
+        let { shapeFlag, children, dynamicChildren } = n2;
+        if (isHmrUpdating) {
+          optimized = false;
+          dynamicChildren = null;
+        }
+        if (n1 == null) {
+          const placeholder = n2.el = createComment("teleport start") ;
+          const mainAnchor = n2.anchor = createComment("teleport end") ;
+          insert(placeholder, container, anchor);
+          insert(mainAnchor, container, anchor);
+          const target = n2.target = resolveTarget(n2.props, querySelector);
+          const targetAnchor = n2.targetAnchor = createText("");
+          if (target) {
+            insert(targetAnchor, target);
+            isSVG = isSVG || isTargetSVG(target);
+          } else if (!disabled) {
+            warn("Invalid Teleport target on mount:", target, `(${typeof target})`);
+          }
+          const mount = (container2, anchor2) => {
+            if (shapeFlag & 16) {
+              mountChildren(
+                children,
+                container2,
+                anchor2,
+                parentComponent,
+                parentSuspense,
+                isSVG,
+                slotScopeIds,
+                optimized
+              );
+            }
+          };
+          if (disabled) {
+            mount(container, mainAnchor);
+          } else if (target) {
+            mount(target, targetAnchor);
+          }
+        } else {
+          n2.el = n1.el;
+          const mainAnchor = n2.anchor = n1.anchor;
+          const target = n2.target = n1.target;
+          const targetAnchor = n2.targetAnchor = n1.targetAnchor;
+          const wasDisabled = isTeleportDisabled(n1.props);
+          const currentContainer = wasDisabled ? container : target;
+          const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;
+          isSVG = isSVG || isTargetSVG(target);
+          if (dynamicChildren) {
+            patchBlockChildren(
+              n1.dynamicChildren,
+              dynamicChildren,
+              currentContainer,
+              parentComponent,
+              parentSuspense,
+              isSVG,
+              slotScopeIds
+            );
+            traverseStaticChildren(n1, n2, true);
+          } else if (!optimized) {
+            patchChildren(
+              n1,
+              n2,
+              currentContainer,
+              currentAnchor,
+              parentComponent,
+              parentSuspense,
+              isSVG,
+              slotScopeIds,
+              false
+            );
+          }
+          if (disabled) {
+            if (!wasDisabled) {
+              moveTeleport(
+                n2,
+                container,
+                mainAnchor,
+                internals,
+                1
+              );
+            }
+          } else {
+            if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {
+              const nextTarget = n2.target = resolveTarget(
+                n2.props,
+                querySelector
+              );
+              if (nextTarget) {
+                moveTeleport(
+                  n2,
+                  nextTarget,
+                  null,
+                  internals,
+                  0
+                );
+              } else {
+                warn(
+                  "Invalid Teleport target on update:",
+                  target,
+                  `(${typeof target})`
+                );
+              }
+            } else if (wasDisabled) {
+              moveTeleport(
+                n2,
+                target,
+                targetAnchor,
+                internals,
+                1
+              );
+            }
+          }
+        }
+        updateCssVars(n2);
+      },
+      remove(vnode, parentComponent, parentSuspense, optimized, { um: unmount, o: { remove: hostRemove } }, doRemove) {
+        const { shapeFlag, children, anchor, targetAnchor, target, props } = vnode;
+        if (target) {
+          hostRemove(targetAnchor);
+        }
+        if (doRemove || !isTeleportDisabled(props)) {
+          hostRemove(anchor);
+          if (shapeFlag & 16) {
+            for (let i = 0; i < children.length; i++) {
+              const child = children[i];
+              unmount(
+                child,
+                parentComponent,
+                parentSuspense,
+                true,
+                !!child.dynamicChildren
+              );
+            }
+          }
+        }
+      },
+      move: moveTeleport,
+      hydrate: hydrateTeleport
+    };
+    function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) {
+      if (moveType === 0) {
+        insert(vnode.targetAnchor, container, parentAnchor);
+      }
+      const { el, anchor, shapeFlag, children, props } = vnode;
+      const isReorder = moveType === 2;
+      if (isReorder) {
+        insert(el, container, parentAnchor);
+      }
+      if (!isReorder || isTeleportDisabled(props)) {
+        if (shapeFlag & 16) {
+          for (let i = 0; i < children.length; i++) {
+            move(
+              children[i],
+              container,
+              parentAnchor,
+              2
+            );
+          }
+        }
+      }
+      if (isReorder) {
+        insert(anchor, container, parentAnchor);
+      }
+    }
+    function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {
+      o: { nextSibling, parentNode, querySelector }
+    }, hydrateChildren) {
+      const target = vnode.target = resolveTarget(
+        vnode.props,
+        querySelector
+      );
+      if (target) {
+        const targetNode = target._lpa || target.firstChild;
+        if (vnode.shapeFlag & 16) {
+          if (isTeleportDisabled(vnode.props)) {
+            vnode.anchor = hydrateChildren(
+              nextSibling(node),
+              vnode,
+              parentNode(node),
+              parentComponent,
+              parentSuspense,
+              slotScopeIds,
+              optimized
+            );
+            vnode.targetAnchor = targetNode;
+          } else {
+            vnode.anchor = nextSibling(node);
+            let targetAnchor = targetNode;
+            while (targetAnchor) {
+              targetAnchor = nextSibling(targetAnchor);
+              if (targetAnchor && targetAnchor.nodeType === 8 && targetAnchor.data === "teleport anchor") {
+                vnode.targetAnchor = targetAnchor;
+                target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
+                break;
+              }
+            }
+            hydrateChildren(
+              targetNode,
+              vnode,
+              target,
+              parentComponent,
+              parentSuspense,
+              slotScopeIds,
+              optimized
+            );
+          }
+        }
+        updateCssVars(vnode);
+      }
+      return vnode.anchor && nextSibling(vnode.anchor);
+    }
+    const Teleport = TeleportImpl;
+    function updateCssVars(vnode) {
+      const ctx = vnode.ctx;
+      if (ctx && ctx.ut) {
+        let node = vnode.children[0].el;
+        while (node !== vnode.targetAnchor) {
+          if (node.nodeType === 1)
+            node.setAttribute("data-v-owner", ctx.uid);
+          node = node.nextSibling;
+        }
+        ctx.ut();
+      }
+    }
+  
+    const Fragment = Symbol.for("v-fgt");
+    const Text = Symbol.for("v-txt");
+    const Comment = Symbol.for("v-cmt");
+    const Static = Symbol.for("v-stc");
+    const blockStack = [];
+    let currentBlock = null;
+    function openBlock(disableTracking = false) {
+      blockStack.push(currentBlock = disableTracking ? null : []);
+    }
+    function closeBlock() {
+      blockStack.pop();
+      currentBlock = blockStack[blockStack.length - 1] || null;
+    }
+    let isBlockTreeEnabled = 1;
+    function setBlockTracking(value) {
+      isBlockTreeEnabled += value;
+    }
+    function setupBlock(vnode) {
+      vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;
+      closeBlock();
+      if (isBlockTreeEnabled > 0 && currentBlock) {
+        currentBlock.push(vnode);
+      }
+      return vnode;
+    }
+    function createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {
+      return setupBlock(
+        createBaseVNode(
+          type,
+          props,
+          children,
+          patchFlag,
+          dynamicProps,
+          shapeFlag,
+          true
+          /* isBlock */
+        )
+      );
+    }
+    function createBlock(type, props, children, patchFlag, dynamicProps) {
+      return setupBlock(
+        createVNode(
+          type,
+          props,
+          children,
+          patchFlag,
+          dynamicProps,
+          true
+          /* isBlock: prevent a block from tracking itself */
+        )
+      );
+    }
+    function isVNode(value) {
+      return value ? value.__v_isVNode === true : false;
+    }
+    function isSameVNodeType(n1, n2) {
+      if (n2.shapeFlag & 6 && hmrDirtyComponents.has(n2.type)) {
+        n1.shapeFlag &= ~256;
+        n2.shapeFlag &= ~512;
+        return false;
+      }
+      return n1.type === n2.type && n1.key === n2.key;
+    }
+    let vnodeArgsTransformer;
+    function transformVNodeArgs(transformer) {
+      vnodeArgsTransformer = transformer;
+    }
+    const createVNodeWithArgsTransform = (...args) => {
+      return _createVNode(
+        ...vnodeArgsTransformer ? vnodeArgsTransformer(args, currentRenderingInstance) : args
+      );
+    };
+    const InternalObjectKey = `__vInternal`;
+    const normalizeKey = ({ key }) => key != null ? key : null;
+    const normalizeRef = ({
+      ref,
+      ref_key,
+      ref_for
+    }) => {
+      if (typeof ref === "number") {
+        ref = "" + ref;
+      }
+      return ref != null ? isString(ref) || isRef(ref) || isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null;
+    };
+    function createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {
+      const vnode = {
+        __v_isVNode: true,
+        __v_skip: true,
+        type,
+        props,
+        key: props && normalizeKey(props),
+        ref: props && normalizeRef(props),
+        scopeId: currentScopeId,
+        slotScopeIds: null,
+        children,
+        component: null,
+        suspense: null,
+        ssContent: null,
+        ssFallback: null,
+        dirs: null,
+        transition: null,
+        el: null,
+        anchor: null,
+        target: null,
+        targetAnchor: null,
+        staticCount: 0,
+        shapeFlag,
+        patchFlag,
+        dynamicProps,
+        dynamicChildren: null,
+        appContext: null,
+        ctx: currentRenderingInstance
+      };
+      if (needFullChildrenNormalization) {
+        normalizeChildren(vnode, children);
+        if (shapeFlag & 128) {
+          type.normalize(vnode);
+        }
+      } else if (children) {
+        vnode.shapeFlag |= isString(children) ? 8 : 16;
+      }
+      if (vnode.key !== vnode.key) {
+        warn(`VNode created with invalid key (NaN). VNode type:`, vnode.type);
+      }
+      if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself
+      !isBlockNode && // has current parent block
+      currentBlock && // presence of a patch flag indicates this node needs patching on updates.
+      // component nodes also should always be patched, because even if the
+      // component doesn't need to update, it needs to persist the instance on to
+      // the next vnode so that it can be properly unmounted later.
+      (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the
+      // vnode should not be considered dynamic due to handler caching.
+      vnode.patchFlag !== 32) {
+        currentBlock.push(vnode);
+      }
+      return vnode;
+    }
+    const createVNode = createVNodeWithArgsTransform ;
+    function _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {
+      if (!type || type === NULL_DYNAMIC_COMPONENT) {
+        if (!type) {
+          warn(`Invalid vnode type when creating vnode: ${type}.`);
+        }
+        type = Comment;
+      }
+      if (isVNode(type)) {
+        const cloned = cloneVNode(
+          type,
+          props,
+          true
+          /* mergeRef: true */
+        );
+        if (children) {
+          normalizeChildren(cloned, children);
+        }
+        if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {
+          if (cloned.shapeFlag & 6) {
+            currentBlock[currentBlock.indexOf(type)] = cloned;
+          } else {
+            currentBlock.push(cloned);
+          }
+        }
+        cloned.patchFlag |= -2;
+        return cloned;
+      }
+      if (isClassComponent(type)) {
+        type = type.__vccOpts;
+      }
+      if (props) {
+        props = guardReactiveProps(props);
+        let { class: klass, style } = props;
+        if (klass && !isString(klass)) {
+          props.class = normalizeClass(klass);
+        }
+        if (isObject(style)) {
+          if (isProxy(style) && !isArray(style)) {
+            style = extend({}, style);
+          }
+          props.style = normalizeStyle(style);
+        }
+      }
+      const shapeFlag = isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject(type) ? 4 : isFunction(type) ? 2 : 0;
+      if (shapeFlag & 4 && isProxy(type)) {
+        type = toRaw(type);
+        warn(
+          `Vue received a Component which was made a reactive object. This can lead to unnecessary performance overhead, and should be avoided by marking the component with \`markRaw\` or using \`shallowRef\` instead of \`ref\`.`,
+          `
+  Component that was made reactive: `,
+          type
+        );
+      }
+      return createBaseVNode(
+        type,
+        props,
+        children,
+        patchFlag,
+        dynamicProps,
+        shapeFlag,
+        isBlockNode,
+        true
+      );
+    }
+    function guardReactiveProps(props) {
+      if (!props)
+        return null;
+      return isProxy(props) || InternalObjectKey in props ? extend({}, props) : props;
+    }
+    function cloneVNode(vnode, extraProps, mergeRef = false) {
+      const { props, ref, patchFlag, children } = vnode;
+      const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;
+      const cloned = {
+        __v_isVNode: true,
+        __v_skip: true,
+        type: vnode.type,
+        props: mergedProps,
+        key: mergedProps && normalizeKey(mergedProps),
+        ref: extraProps && extraProps.ref ? (
+          // #2078 in the case of <component :is="vnode" ref="extra"/>
+          // if the vnode itself already has a ref, cloneVNode will need to merge
+          // the refs so the single vnode can be set on multiple refs
+          mergeRef && ref ? isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps)
+        ) : ref,
+        scopeId: vnode.scopeId,
+        slotScopeIds: vnode.slotScopeIds,
+        children: patchFlag === -1 && isArray(children) ? children.map(deepCloneVNode) : children,
+        target: vnode.target,
+        targetAnchor: vnode.targetAnchor,
+        staticCount: vnode.staticCount,
+        shapeFlag: vnode.shapeFlag,
+        // if the vnode is cloned with extra props, we can no longer assume its
+        // existing patch flag to be reliable and need to add the FULL_PROPS flag.
+        // note: preserve flag for fragments since they use the flag for children
+        // fast paths only.
+        patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag,
+        dynamicProps: vnode.dynamicProps,
+        dynamicChildren: vnode.dynamicChildren,
+        appContext: vnode.appContext,
+        dirs: vnode.dirs,
+        transition: vnode.transition,
+        // These should technically only be non-null on mounted VNodes. However,
+        // they *should* be copied for kept-alive vnodes. So we just always copy
+        // them since them being non-null during a mount doesn't affect the logic as
+        // they will simply be overwritten.
+        component: vnode.component,
+        suspense: vnode.suspense,
+        ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),
+        ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),
+        el: vnode.el,
+        anchor: vnode.anchor,
+        ctx: vnode.ctx,
+        ce: vnode.ce
+      };
+      return cloned;
+    }
+    function deepCloneVNode(vnode) {
+      const cloned = cloneVNode(vnode);
+      if (isArray(vnode.children)) {
+        cloned.children = vnode.children.map(deepCloneVNode);
+      }
+      return cloned;
+    }
+    function createTextVNode(text = " ", flag = 0) {
+      return createVNode(Text, null, text, flag);
+    }
+    function createStaticVNode(content, numberOfNodes) {
+      const vnode = createVNode(Static, null, content);
+      vnode.staticCount = numberOfNodes;
+      return vnode;
+    }
+    function createCommentVNode(text = "", asBlock = false) {
+      return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text);
+    }
+    function normalizeVNode(child) {
+      if (child == null || typeof child === "boolean") {
+        return createVNode(Comment);
+      } else if (isArray(child)) {
+        return createVNode(
+          Fragment,
+          null,
+          // #3666, avoid reference pollution when reusing vnode
+          child.slice()
+        );
+      } else if (typeof child === "object") {
+        return cloneIfMounted(child);
+      } else {
+        return createVNode(Text, null, String(child));
+      }
+    }
+    function cloneIfMounted(child) {
+      return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child);
+    }
+    function normalizeChildren(vnode, children) {
+      let type = 0;
+      const { shapeFlag } = vnode;
+      if (children == null) {
+        children = null;
+      } else if (isArray(children)) {
+        type = 16;
+      } else if (typeof children === "object") {
+        if (shapeFlag & (1 | 64)) {
+          const slot = children.default;
+          if (slot) {
+            slot._c && (slot._d = false);
+            normalizeChildren(vnode, slot());
+            slot._c && (slot._d = true);
+          }
+          return;
+        } else {
+          type = 32;
+          const slotFlag = children._;
+          if (!slotFlag && !(InternalObjectKey in children)) {
+            children._ctx = currentRenderingInstance;
+          } else if (slotFlag === 3 && currentRenderingInstance) {
+            if (currentRenderingInstance.slots._ === 1) {
+              children._ = 1;
+            } else {
+              children._ = 2;
+              vnode.patchFlag |= 1024;
+            }
+          }
+        }
+      } else if (isFunction(children)) {
+        children = { default: children, _ctx: currentRenderingInstance };
+        type = 32;
+      } else {
+        children = String(children);
+        if (shapeFlag & 64) {
+          type = 16;
+          children = [createTextVNode(children)];
+        } else {
+          type = 8;
+        }
+      }
+      vnode.children = children;
+      vnode.shapeFlag |= type;
+    }
+    function mergeProps(...args) {
+      const ret = {};
+      for (let i = 0; i < args.length; i++) {
+        const toMerge = args[i];
+        for (const key in toMerge) {
+          if (key === "class") {
+            if (ret.class !== toMerge.class) {
+              ret.class = normalizeClass([ret.class, toMerge.class]);
+            }
+          } else if (key === "style") {
+            ret.style = normalizeStyle([ret.style, toMerge.style]);
+          } else if (isOn(key)) {
+            const existing = ret[key];
+            const incoming = toMerge[key];
+            if (incoming && existing !== incoming && !(isArray(existing) && existing.includes(incoming))) {
+              ret[key] = existing ? [].concat(existing, incoming) : incoming;
+            }
+          } else if (key !== "") {
+            ret[key] = toMerge[key];
+          }
+        }
+      }
+      return ret;
+    }
+    function invokeVNodeHook(hook, instance, vnode, prevVNode = null) {
+      callWithAsyncErrorHandling(hook, instance, 7, [
+        vnode,
+        prevVNode
+      ]);
+    }
+  
+    const emptyAppContext = createAppContext();
+    let uid = 0;
+    function createComponentInstance(vnode, parent, suspense) {
+      const type = vnode.type;
+      const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;
+      const instance = {
+        uid: uid++,
+        vnode,
+        type,
+        parent,
+        appContext,
+        root: null,
+        // to be immediately set
+        next: null,
+        subTree: null,
+        // will be set synchronously right after creation
+        effect: null,
+        update: null,
+        // will be set synchronously right after creation
+        scope: new EffectScope(
+          true
+          /* detached */
+        ),
+        render: null,
+        proxy: null,
+        exposed: null,
+        exposeProxy: null,
+        withProxy: null,
+        provides: parent ? parent.provides : Object.create(appContext.provides),
+        accessCache: null,
+        renderCache: [],
+        // local resolved assets
+        components: null,
+        directives: null,
+        // resolved props and emits options
+        propsOptions: normalizePropsOptions(type, appContext),
+        emitsOptions: normalizeEmitsOptions(type, appContext),
+        // emit
+        emit: null,
+        // to be set immediately
+        emitted: null,
+        // props default value
+        propsDefaults: EMPTY_OBJ,
+        // inheritAttrs
+        inheritAttrs: type.inheritAttrs,
+        // state
+        ctx: EMPTY_OBJ,
+        data: EMPTY_OBJ,
+        props: EMPTY_OBJ,
+        attrs: EMPTY_OBJ,
+        slots: EMPTY_OBJ,
+        refs: EMPTY_OBJ,
+        setupState: EMPTY_OBJ,
+        setupContext: null,
+        attrsProxy: null,
+        slotsProxy: null,
+        // suspense related
+        suspense,
+        suspenseId: suspense ? suspense.pendingId : 0,
+        asyncDep: null,
+        asyncResolved: false,
+        // lifecycle hooks
+        // not using enums here because it results in computed properties
+        isMounted: false,
+        isUnmounted: false,
+        isDeactivated: false,
+        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
+      };
+      {
+        instance.ctx = createDevRenderContext(instance);
+      }
+      instance.root = parent ? parent.root : instance;
+      instance.emit = emit.bind(null, instance);
+      if (vnode.ce) {
+        vnode.ce(instance);
+      }
+      return instance;
+    }
+    let currentInstance = null;
+    const getCurrentInstance = () => currentInstance || currentRenderingInstance;
+    let internalSetCurrentInstance;
+    {
+      internalSetCurrentInstance = (i) => {
+        currentInstance = i;
+      };
+    }
+    const setCurrentInstance = (instance) => {
+      internalSetCurrentInstance(instance);
+      instance.scope.on();
+    };
+    const unsetCurrentInstance = () => {
+      currentInstance && currentInstance.scope.off();
+      internalSetCurrentInstance(null);
+    };
+    const isBuiltInTag = /* @__PURE__ */ makeMap("slot,component");
+    function validateComponentName(name, config) {
+      const appIsNativeTag = config.isNativeTag || NO;
+      if (isBuiltInTag(name) || appIsNativeTag(name)) {
+        warn(
+          "Do not use built-in or reserved HTML elements as component id: " + name
+        );
+      }
+    }
+    function isStatefulComponent(instance) {
+      return instance.vnode.shapeFlag & 4;
+    }
+    let isInSSRComponentSetup = false;
+    function setupComponent(instance, isSSR = false) {
+      isInSSRComponentSetup = isSSR;
+      const { props, children } = instance.vnode;
+      const isStateful = isStatefulComponent(instance);
+      initProps(instance, props, isStateful, isSSR);
+      initSlots(instance, children);
+      const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0;
+      isInSSRComponentSetup = false;
+      return setupResult;
+    }
+    function setupStatefulComponent(instance, isSSR) {
+      var _a;
+      const Component = instance.type;
+      {
+        if (Component.name) {
+          validateComponentName(Component.name, instance.appContext.config);
+        }
+        if (Component.components) {
+          const names = Object.keys(Component.components);
+          for (let i = 0; i < names.length; i++) {
+            validateComponentName(names[i], instance.appContext.config);
+          }
+        }
+        if (Component.directives) {
+          const names = Object.keys(Component.directives);
+          for (let i = 0; i < names.length; i++) {
+            validateDirectiveName(names[i]);
+          }
+        }
+        if (Component.compilerOptions && isRuntimeOnly()) {
+          warn(
+            `"compilerOptions" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.`
+          );
+        }
+      }
+      instance.accessCache = /* @__PURE__ */ Object.create(null);
+      instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers));
+      {
+        exposePropsOnRenderContext(instance);
+      }
+      const { setup } = Component;
+      if (setup) {
+        const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null;
+        setCurrentInstance(instance);
+        pauseTracking();
+        const setupResult = callWithErrorHandling(
+          setup,
+          instance,
+          0,
+          [shallowReadonly(instance.props) , setupContext]
+        );
+        resetTracking();
+        unsetCurrentInstance();
+        if (isPromise(setupResult)) {
+          setupResult.then(unsetCurrentInstance, unsetCurrentInstance);
+          if (isSSR) {
+            return setupResult.then((resolvedResult) => {
+              handleSetupResult(instance, resolvedResult, isSSR);
+            }).catch((e) => {
+              handleError(e, instance, 0);
+            });
+          } else {
+            instance.asyncDep = setupResult;
+            if (!instance.suspense) {
+              const name = (_a = Component.name) != null ? _a : "Anonymous";
+              warn(
+                `Component <${name}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.`
+              );
+            }
+          }
+        } else {
+          handleSetupResult(instance, setupResult, isSSR);
+        }
+      } else {
+        finishComponentSetup(instance, isSSR);
+      }
+    }
+    function handleSetupResult(instance, setupResult, isSSR) {
+      if (isFunction(setupResult)) {
+        {
+          instance.render = setupResult;
+        }
+      } else if (isObject(setupResult)) {
+        if (isVNode(setupResult)) {
+          warn(
+            `setup() should not return VNodes directly - return a render function instead.`
+          );
+        }
+        {
+          instance.devtoolsRawSetupState = setupResult;
+        }
+        instance.setupState = proxyRefs(setupResult);
+        {
+          exposeSetupStateOnRenderContext(instance);
+        }
+      } else if (setupResult !== void 0) {
+        warn(
+          `setup() should return an object. Received: ${setupResult === null ? "null" : typeof setupResult}`
+        );
+      }
+      finishComponentSetup(instance, isSSR);
+    }
+    let compile$1;
+    let installWithProxy;
+    function registerRuntimeCompiler(_compile) {
+      compile$1 = _compile;
+      installWithProxy = (i) => {
+        if (i.render._rc) {
+          i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers);
+        }
+      };
+    }
+    const isRuntimeOnly = () => !compile$1;
+    function finishComponentSetup(instance, isSSR, skipOptions) {
+      const Component = instance.type;
+      if (!instance.render) {
+        if (!isSSR && compile$1 && !Component.render) {
+          const template = Component.template || resolveMergedOptions(instance).template;
+          if (template) {
+            {
+              startMeasure(instance, `compile`);
+            }
+            const { isCustomElement, compilerOptions } = instance.appContext.config;
+            const { delimiters, compilerOptions: componentCompilerOptions } = Component;
+            const finalCompilerOptions = extend(
+              extend(
+                {
+                  isCustomElement,
+                  delimiters
+                },
+                compilerOptions
+              ),
+              componentCompilerOptions
+            );
+            Component.render = compile$1(template, finalCompilerOptions);
+            {
+              endMeasure(instance, `compile`);
+            }
+          }
+        }
+        instance.render = Component.render || NOOP;
+        if (installWithProxy) {
+          installWithProxy(instance);
+        }
+      }
+      {
+        setCurrentInstance(instance);
+        pauseTracking();
+        applyOptions(instance);
+        resetTracking();
+        unsetCurrentInstance();
+      }
+      if (!Component.render && instance.render === NOOP && !isSSR) {
+        if (!compile$1 && Component.template) {
+          warn(
+            `Component provided template option but runtime compilation is not supported in this build of Vue.` + (` Use "vue.global.js" instead.` )
+            /* should not happen */
+          );
+        } else {
+          warn(`Component is missing template or render function.`);
+        }
+      }
+    }
+    function getAttrsProxy(instance) {
+      return instance.attrsProxy || (instance.attrsProxy = new Proxy(
+        instance.attrs,
+        {
+          get(target, key) {
+            markAttrsAccessed();
+            track(instance, "get", "$attrs");
+            return target[key];
+          },
+          set() {
+            warn(`setupContext.attrs is readonly.`);
+            return false;
+          },
+          deleteProperty() {
+            warn(`setupContext.attrs is readonly.`);
+            return false;
+          }
+        } 
+      ));
+    }
+    function getSlotsProxy(instance) {
+      return instance.slotsProxy || (instance.slotsProxy = new Proxy(instance.slots, {
+        get(target, key) {
+          track(instance, "get", "$slots");
+          return target[key];
+        }
+      }));
+    }
+    function createSetupContext(instance) {
+      const expose = (exposed) => {
+        {
+          if (instance.exposed) {
+            warn(`expose() should be called only once per setup().`);
+          }
+          if (exposed != null) {
+            let exposedType = typeof exposed;
+            if (exposedType === "object") {
+              if (isArray(exposed)) {
+                exposedType = "array";
+              } else if (isRef(exposed)) {
+                exposedType = "ref";
+              }
+            }
+            if (exposedType !== "object") {
+              warn(
+                `expose() should be passed a plain object, received ${exposedType}.`
+              );
+            }
+          }
+        }
+        instance.exposed = exposed || {};
+      };
+      {
+        return Object.freeze({
+          get attrs() {
+            return getAttrsProxy(instance);
+          },
+          get slots() {
+            return getSlotsProxy(instance);
+          },
+          get emit() {
+            return (event, ...args) => instance.emit(event, ...args);
+          },
+          expose
+        });
+      }
+    }
+    function getExposeProxy(instance) {
+      if (instance.exposed) {
+        return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {
+          get(target, key) {
+            if (key in target) {
+              return target[key];
+            } else if (key in publicPropertiesMap) {
+              return publicPropertiesMap[key](instance);
+            }
+          },
+          has(target, key) {
+            return key in target || key in publicPropertiesMap;
+          }
+        }));
+      }
+    }
+    const classifyRE = /(?:^|[-_])(\w)/g;
+    const classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, "");
+    function getComponentName(Component, includeInferred = true) {
+      return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;
+    }
+    function formatComponentName(instance, Component, isRoot = false) {
+      let name = getComponentName(Component);
+      if (!name && Component.__file) {
+        const match = Component.__file.match(/([^/\\]+)\.\w+$/);
+        if (match) {
+          name = match[1];
+        }
+      }
+      if (!name && instance && instance.parent) {
+        const inferFromRegistry = (registry) => {
+          for (const key in registry) {
+            if (registry[key] === Component) {
+              return key;
+            }
+          }
+        };
+        name = inferFromRegistry(
+          instance.components || instance.parent.type.components
+        ) || inferFromRegistry(instance.appContext.components);
+      }
+      return name ? classify(name) : isRoot ? `App` : `Anonymous`;
+    }
+    function isClassComponent(value) {
+      return isFunction(value) && "__vccOpts" in value;
+    }
+  
+    const computed = (getterOrOptions, debugOptions) => {
+      return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);
+    };
+  
+    function h(type, propsOrChildren, children) {
+      const l = arguments.length;
+      if (l === 2) {
+        if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {
+          if (isVNode(propsOrChildren)) {
+            return createVNode(type, null, [propsOrChildren]);
+          }
+          return createVNode(type, propsOrChildren);
+        } else {
+          return createVNode(type, null, propsOrChildren);
+        }
+      } else {
+        if (l > 3) {
+          children = Array.prototype.slice.call(arguments, 2);
+        } else if (l === 3 && isVNode(children)) {
+          children = [children];
+        }
+        return createVNode(type, propsOrChildren, children);
+      }
+    }
+  
+    const ssrContextKey = Symbol.for("v-scx");
+    const useSSRContext = () => {
+      {
+        warn(`useSSRContext() is not supported in the global build.`);
+      }
+    };
+  
+    function initCustomFormatter() {
+      if (typeof window === "undefined") {
+        return;
+      }
+      const vueStyle = { style: "color:#3ba776" };
+      const numberStyle = { style: "color:#0b1bc9" };
+      const stringStyle = { style: "color:#b62e24" };
+      const keywordStyle = { style: "color:#9d288c" };
+      const formatter = {
+        header(obj) {
+          if (!isObject(obj)) {
+            return null;
+          }
+          if (obj.__isVue) {
+            return ["div", vueStyle, `VueInstance`];
+          } else if (isRef(obj)) {
+            return [
+              "div",
+              {},
+              ["span", vueStyle, genRefFlag(obj)],
+              "<",
+              formatValue(obj.value),
+              `>`
+            ];
+          } else if (isReactive(obj)) {
+            return [
+              "div",
+              {},
+              ["span", vueStyle, isShallow(obj) ? "ShallowReactive" : "Reactive"],
+              "<",
+              formatValue(obj),
+              `>${isReadonly(obj) ? ` (readonly)` : ``}`
+            ];
+          } else if (isReadonly(obj)) {
+            return [
+              "div",
+              {},
+              ["span", vueStyle, isShallow(obj) ? "ShallowReadonly" : "Readonly"],
+              "<",
+              formatValue(obj),
+              ">"
+            ];
+          }
+          return null;
+        },
+        hasBody(obj) {
+          return obj && obj.__isVue;
+        },
+        body(obj) {
+          if (obj && obj.__isVue) {
+            return [
+              "div",
+              {},
+              ...formatInstance(obj.$)
+            ];
+          }
+        }
+      };
+      function formatInstance(instance) {
+        const blocks = [];
+        if (instance.type.props && instance.props) {
+          blocks.push(createInstanceBlock("props", toRaw(instance.props)));
+        }
+        if (instance.setupState !== EMPTY_OBJ) {
+          blocks.push(createInstanceBlock("setup", instance.setupState));
+        }
+        if (instance.data !== EMPTY_OBJ) {
+          blocks.push(createInstanceBlock("data", toRaw(instance.data)));
+        }
+        const computed = extractKeys(instance, "computed");
+        if (computed) {
+          blocks.push(createInstanceBlock("computed", computed));
+        }
+        const injected = extractKeys(instance, "inject");
+        if (injected) {
+          blocks.push(createInstanceBlock("injected", injected));
+        }
+        blocks.push([
+          "div",
+          {},
+          [
+            "span",
+            {
+              style: keywordStyle.style + ";opacity:0.66"
+            },
+            "$ (internal): "
+          ],
+          ["object", { object: instance }]
+        ]);
+        return blocks;
+      }
+      function createInstanceBlock(type, target) {
+        target = extend({}, target);
+        if (!Object.keys(target).length) {
+          return ["span", {}];
+        }
+        return [
+          "div",
+          { style: "line-height:1.25em;margin-bottom:0.6em" },
+          [
+            "div",
+            {
+              style: "color:#476582"
+            },
+            type
+          ],
+          [
+            "div",
+            {
+              style: "padding-left:1.25em"
+            },
+            ...Object.keys(target).map((key) => {
+              return [
+                "div",
+                {},
+                ["span", keywordStyle, key + ": "],
+                formatValue(target[key], false)
+              ];
+            })
+          ]
+        ];
+      }
+      function formatValue(v, asRaw = true) {
+        if (typeof v === "number") {
+          return ["span", numberStyle, v];
+        } else if (typeof v === "string") {
+          return ["span", stringStyle, JSON.stringify(v)];
+        } else if (typeof v === "boolean") {
+          return ["span", keywordStyle, v];
+        } else if (isObject(v)) {
+          return ["object", { object: asRaw ? toRaw(v) : v }];
+        } else {
+          return ["span", stringStyle, String(v)];
+        }
+      }
+      function extractKeys(instance, type) {
+        const Comp = instance.type;
+        if (isFunction(Comp)) {
+          return;
+        }
+        const extracted = {};
+        for (const key in instance.ctx) {
+          if (isKeyOfType(Comp, key, type)) {
+            extracted[key] = instance.ctx[key];
+          }
+        }
+        return extracted;
+      }
+      function isKeyOfType(Comp, key, type) {
+        const opts = Comp[type];
+        if (isArray(opts) && opts.includes(key) || isObject(opts) && key in opts) {
+          return true;
+        }
+        if (Comp.extends && isKeyOfType(Comp.extends, key, type)) {
+          return true;
+        }
+        if (Comp.mixins && Comp.mixins.some((m) => isKeyOfType(m, key, type))) {
+          return true;
+        }
+      }
+      function genRefFlag(v) {
+        if (isShallow(v)) {
+          return `ShallowRef`;
+        }
+        if (v.effect) {
+          return `ComputedRef`;
+        }
+        return `Ref`;
+      }
+      if (window.devtoolsFormatters) {
+        window.devtoolsFormatters.push(formatter);
+      } else {
+        window.devtoolsFormatters = [formatter];
+      }
+    }
+  
+    function withMemo(memo, render, cache, index) {
+      const cached = cache[index];
+      if (cached && isMemoSame(cached, memo)) {
+        return cached;
+      }
+      const ret = render();
+      ret.memo = memo.slice();
+      return cache[index] = ret;
+    }
+    function isMemoSame(cached, memo) {
+      const prev = cached.memo;
+      if (prev.length != memo.length) {
+        return false;
+      }
+      for (let i = 0; i < prev.length; i++) {
+        if (hasChanged(prev[i], memo[i])) {
+          return false;
+        }
+      }
+      if (isBlockTreeEnabled > 0 && currentBlock) {
+        currentBlock.push(cached);
+      }
+      return true;
+    }
+  
+    const version = "3.3.4";
+    const ssrUtils = null;
+    const resolveFilter = null;
+    const compatUtils = null;
+  
+    const svgNS = "http://www.w3.org/2000/svg";
+    const doc = typeof document !== "undefined" ? document : null;
+    const templateContainer = doc && /* @__PURE__ */ doc.createElement("template");
+    const nodeOps = {
+      insert: (child, parent, anchor) => {
+        parent.insertBefore(child, anchor || null);
+      },
+      remove: (child) => {
+        const parent = child.parentNode;
+        if (parent) {
+          parent.removeChild(child);
+        }
+      },
+      createElement: (tag, isSVG, is, props) => {
+        const el = isSVG ? doc.createElementNS(svgNS, tag) : doc.createElement(tag, is ? { is } : void 0);
+        if (tag === "select" && props && props.multiple != null) {
+          el.setAttribute("multiple", props.multiple);
+        }
+        return el;
+      },
+      createText: (text) => doc.createTextNode(text),
+      createComment: (text) => doc.createComment(text),
+      setText: (node, text) => {
+        node.nodeValue = text;
+      },
+      setElementText: (el, text) => {
+        el.textContent = text;
+      },
+      parentNode: (node) => node.parentNode,
+      nextSibling: (node) => node.nextSibling,
+      querySelector: (selector) => doc.querySelector(selector),
+      setScopeId(el, id) {
+        el.setAttribute(id, "");
+      },
+      // __UNSAFE__
+      // Reason: innerHTML.
+      // Static content here can only come from compiled templates.
+      // As long as the user only uses trusted templates, this is safe.
+      insertStaticContent(content, parent, anchor, isSVG, start, end) {
+        const before = anchor ? anchor.previousSibling : parent.lastChild;
+        if (start && (start === end || start.nextSibling)) {
+          while (true) {
+            parent.insertBefore(start.cloneNode(true), anchor);
+            if (start === end || !(start = start.nextSibling))
+              break;
+          }
+        } else {
+          templateContainer.innerHTML = isSVG ? `<svg>${content}</svg>` : content;
+          const template = templateContainer.content;
+          if (isSVG) {
+            const wrapper = template.firstChild;
+            while (wrapper.firstChild) {
+              template.appendChild(wrapper.firstChild);
+            }
+            template.removeChild(wrapper);
+          }
+          parent.insertBefore(template, anchor);
+        }
+        return [
+          // first
+          before ? before.nextSibling : parent.firstChild,
+          // last
+          anchor ? anchor.previousSibling : parent.lastChild
+        ];
+      }
+    };
+  
+    function patchClass(el, value, isSVG) {
+      const transitionClasses = el._vtc;
+      if (transitionClasses) {
+        value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(" ");
+      }
+      if (value == null) {
+        el.removeAttribute("class");
+      } else if (isSVG) {
+        el.setAttribute("class", value);
+      } else {
+        el.className = value;
+      }
+    }
+  
+    function patchStyle(el, prev, next) {
+      const style = el.style;
+      const isCssString = isString(next);
+      if (next && !isCssString) {
+        if (prev && !isString(prev)) {
+          for (const key in prev) {
+            if (next[key] == null) {
+              setStyle(style, key, "");
+            }
+          }
+        }
+        for (const key in next) {
+          setStyle(style, key, next[key]);
+        }
+      } else {
+        const currentDisplay = style.display;
+        if (isCssString) {
+          if (prev !== next) {
+            style.cssText = next;
+          }
+        } else if (prev) {
+          el.removeAttribute("style");
+        }
+        if ("_vod" in el) {
+          style.display = currentDisplay;
+        }
+      }
+    }
+    const semicolonRE = /[^\\];\s*$/;
+    const importantRE = /\s*!important$/;
+    function setStyle(style, name, val) {
+      if (isArray(val)) {
+        val.forEach((v) => setStyle(style, name, v));
+      } else {
+        if (val == null)
+          val = "";
+        {
+          if (semicolonRE.test(val)) {
+            warn(
+              `Unexpected semicolon at the end of '${name}' style value: '${val}'`
+            );
+          }
+        }
+        if (name.startsWith("--")) {
+          style.setProperty(name, val);
+        } else {
+          const prefixed = autoPrefix(style, name);
+          if (importantRE.test(val)) {
+            style.setProperty(
+              hyphenate(prefixed),
+              val.replace(importantRE, ""),
+              "important"
+            );
+          } else {
+            style[prefixed] = val;
+          }
+        }
+      }
+    }
+    const prefixes = ["Webkit", "Moz", "ms"];
+    const prefixCache = {};
+    function autoPrefix(style, rawName) {
+      const cached = prefixCache[rawName];
+      if (cached) {
+        return cached;
+      }
+      let name = camelize(rawName);
+      if (name !== "filter" && name in style) {
+        return prefixCache[rawName] = name;
+      }
+      name = capitalize(name);
+      for (let i = 0; i < prefixes.length; i++) {
+        const prefixed = prefixes[i] + name;
+        if (prefixed in style) {
+          return prefixCache[rawName] = prefixed;
+        }
+      }
+      return rawName;
+    }
+  
+    const xlinkNS = "http://www.w3.org/1999/xlink";
+    function patchAttr(el, key, value, isSVG, instance) {
+      if (isSVG && key.startsWith("xlink:")) {
+        if (value == null) {
+          el.removeAttributeNS(xlinkNS, key.slice(6, key.length));
+        } else {
+          el.setAttributeNS(xlinkNS, key, value);
+        }
+      } else {
+        const isBoolean = isSpecialBooleanAttr(key);
+        if (value == null || isBoolean && !includeBooleanAttr(value)) {
+          el.removeAttribute(key);
+        } else {
+          el.setAttribute(key, isBoolean ? "" : value);
+        }
+      }
+    }
+  
+    function patchDOMProp(el, key, value, prevChildren, parentComponent, parentSuspense, unmountChildren) {
+      if (key === "innerHTML" || key === "textContent") {
+        if (prevChildren) {
+          unmountChildren(prevChildren, parentComponent, parentSuspense);
+        }
+        el[key] = value == null ? "" : value;
+        return;
+      }
+      const tag = el.tagName;
+      if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally
+      !tag.includes("-")) {
+        el._value = value;
+        const oldValue = tag === "OPTION" ? el.getAttribute("value") : el.value;
+        const newValue = value == null ? "" : value;
+        if (oldValue !== newValue) {
+          el.value = newValue;
+        }
+        if (value == null) {
+          el.removeAttribute(key);
+        }
+        return;
+      }
+      let needRemove = false;
+      if (value === "" || value == null) {
+        const type = typeof el[key];
+        if (type === "boolean") {
+          value = includeBooleanAttr(value);
+        } else if (value == null && type === "string") {
+          value = "";
+          needRemove = true;
+        } else if (type === "number") {
+          value = 0;
+          needRemove = true;
+        }
+      }
+      try {
+        el[key] = value;
+      } catch (e) {
+        if (!needRemove) {
+          warn(
+            `Failed setting prop "${key}" on <${tag.toLowerCase()}>: value ${value} is invalid.`,
+            e
+          );
+        }
+      }
+      needRemove && el.removeAttribute(key);
+    }
+  
+    function addEventListener(el, event, handler, options) {
+      el.addEventListener(event, handler, options);
+    }
+    function removeEventListener(el, event, handler, options) {
+      el.removeEventListener(event, handler, options);
+    }
+    function patchEvent(el, rawName, prevValue, nextValue, instance = null) {
+      const invokers = el._vei || (el._vei = {});
+      const existingInvoker = invokers[rawName];
+      if (nextValue && existingInvoker) {
+        existingInvoker.value = nextValue;
+      } else {
+        const [name, options] = parseName(rawName);
+        if (nextValue) {
+          const invoker = invokers[rawName] = createInvoker(nextValue, instance);
+          addEventListener(el, name, invoker, options);
+        } else if (existingInvoker) {
+          removeEventListener(el, name, existingInvoker, options);
+          invokers[rawName] = void 0;
+        }
+      }
+    }
+    const optionsModifierRE = /(?:Once|Passive|Capture)$/;
+    function parseName(name) {
+      let options;
+      if (optionsModifierRE.test(name)) {
+        options = {};
+        let m;
+        while (m = name.match(optionsModifierRE)) {
+          name = name.slice(0, name.length - m[0].length);
+          options[m[0].toLowerCase()] = true;
+        }
+      }
+      const event = name[2] === ":" ? name.slice(3) : hyphenate(name.slice(2));
+      return [event, options];
+    }
+    let cachedNow = 0;
+    const p = /* @__PURE__ */ Promise.resolve();
+    const getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now());
+    function createInvoker(initialValue, instance) {
+      const invoker = (e) => {
+        if (!e._vts) {
+          e._vts = Date.now();
+        } else if (e._vts <= invoker.attached) {
+          return;
+        }
+        callWithAsyncErrorHandling(
+          patchStopImmediatePropagation(e, invoker.value),
+          instance,
+          5,
+          [e]
+        );
+      };
+      invoker.value = initialValue;
+      invoker.attached = getNow();
+      return invoker;
+    }
+    function patchStopImmediatePropagation(e, value) {
+      if (isArray(value)) {
+        const originalStop = e.stopImmediatePropagation;
+        e.stopImmediatePropagation = () => {
+          originalStop.call(e);
+          e._stopped = true;
+        };
+        return value.map((fn) => (e2) => !e2._stopped && fn && fn(e2));
+      } else {
+        return value;
+      }
+    }
+  
+    const nativeOnRE = /^on[a-z]/;
+    const patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {
+      if (key === "class") {
+        patchClass(el, nextValue, isSVG);
+      } else if (key === "style") {
+        patchStyle(el, prevValue, nextValue);
+      } else if (isOn(key)) {
+        if (!isModelListener(key)) {
+          patchEvent(el, key, prevValue, nextValue, parentComponent);
+        }
+      } else if (key[0] === "." ? (key = key.slice(1), true) : key[0] === "^" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) {
+        patchDOMProp(
+          el,
+          key,
+          nextValue,
+          prevChildren,
+          parentComponent,
+          parentSuspense,
+          unmountChildren
+        );
+      } else {
+        if (key === "true-value") {
+          el._trueValue = nextValue;
+        } else if (key === "false-value") {
+          el._falseValue = nextValue;
+        }
+        patchAttr(el, key, nextValue, isSVG);
+      }
+    };
+    function shouldSetAsProp(el, key, value, isSVG) {
+      if (isSVG) {
+        if (key === "innerHTML" || key === "textContent") {
+          return true;
+        }
+        if (key in el && nativeOnRE.test(key) && isFunction(value)) {
+          return true;
+        }
+        return false;
+      }
+      if (key === "spellcheck" || key === "draggable" || key === "translate") {
+        return false;
+      }
+      if (key === "form") {
+        return false;
+      }
+      if (key === "list" && el.tagName === "INPUT") {
+        return false;
+      }
+      if (key === "type" && el.tagName === "TEXTAREA") {
+        return false;
+      }
+      if (nativeOnRE.test(key) && isString(value)) {
+        return false;
+      }
+      return key in el;
+    }
+  
+    function defineCustomElement(options, hydrate2) {
+      const Comp = defineComponent(options);
+      class VueCustomElement extends VueElement {
+        constructor(initialProps) {
+          super(Comp, initialProps, hydrate2);
+        }
+      }
+      VueCustomElement.def = Comp;
+      return VueCustomElement;
+    }
+    const defineSSRCustomElement = (options) => {
+      return defineCustomElement(options, hydrate);
+    };
+    const BaseClass = typeof HTMLElement !== "undefined" ? HTMLElement : class {
+    };
+    class VueElement extends BaseClass {
+      constructor(_def, _props = {}, hydrate2) {
+        super();
+        this._def = _def;
+        this._props = _props;
+        /**
+         * @internal
+         */
+        this._instance = null;
+        this._connected = false;
+        this._resolved = false;
+        this._numberProps = null;
+        if (this.shadowRoot && hydrate2) {
+          hydrate2(this._createVNode(), this.shadowRoot);
+        } else {
+          if (this.shadowRoot) {
+            warn(
+              `Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use \`defineSSRCustomElement\`.`
+            );
+          }
+          this.attachShadow({ mode: "open" });
+          if (!this._def.__asyncLoader) {
+            this._resolveProps(this._def);
+          }
+        }
+      }
+      connectedCallback() {
+        this._connected = true;
+        if (!this._instance) {
+          if (this._resolved) {
+            this._update();
+          } else {
+            this._resolveDef();
+          }
+        }
+      }
+      disconnectedCallback() {
+        this._connected = false;
+        nextTick(() => {
+          if (!this._connected) {
+            render(null, this.shadowRoot);
+            this._instance = null;
+          }
+        });
+      }
+      /**
+       * resolve inner component definition (handle possible async component)
+       */
+      _resolveDef() {
+        this._resolved = true;
+        for (let i = 0; i < this.attributes.length; i++) {
+          this._setAttr(this.attributes[i].name);
+        }
+        new MutationObserver((mutations) => {
+          for (const m of mutations) {
+            this._setAttr(m.attributeName);
+          }
+        }).observe(this, { attributes: true });
+        const resolve = (def, isAsync = false) => {
+          const { props, styles } = def;
+          let numberProps;
+          if (props && !isArray(props)) {
+            for (const key in props) {
+              const opt = props[key];
+              if (opt === Number || opt && opt.type === Number) {
+                if (key in this._props) {
+                  this._props[key] = toNumber(this._props[key]);
+                }
+                (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[camelize(key)] = true;
+              }
+            }
+          }
+          this._numberProps = numberProps;
+          if (isAsync) {
+            this._resolveProps(def);
+          }
+          this._applyStyles(styles);
+          this._update();
+        };
+        const asyncDef = this._def.__asyncLoader;
+        if (asyncDef) {
+          asyncDef().then((def) => resolve(def, true));
+        } else {
+          resolve(this._def);
+        }
+      }
+      _resolveProps(def) {
+        const { props } = def;
+        const declaredPropKeys = isArray(props) ? props : Object.keys(props || {});
+        for (const key of Object.keys(this)) {
+          if (key[0] !== "_" && declaredPropKeys.includes(key)) {
+            this._setProp(key, this[key], true, false);
+          }
+        }
+        for (const key of declaredPropKeys.map(camelize)) {
+          Object.defineProperty(this, key, {
+            get() {
+              return this._getProp(key);
+            },
+            set(val) {
+              this._setProp(key, val);
+            }
+          });
+        }
+      }
+      _setAttr(key) {
+        let value = this.getAttribute(key);
+        const camelKey = camelize(key);
+        if (this._numberProps && this._numberProps[camelKey]) {
+          value = toNumber(value);
+        }
+        this._setProp(camelKey, value, false);
+      }
+      /**
+       * @internal
+       */
+      _getProp(key) {
+        return this._props[key];
+      }
+      /**
+       * @internal
+       */
+      _setProp(key, val, shouldReflect = true, shouldUpdate = true) {
+        if (val !== this._props[key]) {
+          this._props[key] = val;
+          if (shouldUpdate && this._instance) {
+            this._update();
+          }
+          if (shouldReflect) {
+            if (val === true) {
+              this.setAttribute(hyphenate(key), "");
+            } else if (typeof val === "string" || typeof val === "number") {
+              this.setAttribute(hyphenate(key), val + "");
+            } else if (!val) {
+              this.removeAttribute(hyphenate(key));
+            }
+          }
+        }
+      }
+      _update() {
+        render(this._createVNode(), this.shadowRoot);
+      }
+      _createVNode() {
+        const vnode = createVNode(this._def, extend({}, this._props));
+        if (!this._instance) {
+          vnode.ce = (instance) => {
+            this._instance = instance;
+            instance.isCE = true;
+            {
+              instance.ceReload = (newStyles) => {
+                if (this._styles) {
+                  this._styles.forEach((s) => this.shadowRoot.removeChild(s));
+                  this._styles.length = 0;
+                }
+                this._applyStyles(newStyles);
+                this._instance = null;
+                this._update();
+              };
+            }
+            const dispatch = (event, args) => {
+              this.dispatchEvent(
+                new CustomEvent(event, {
+                  detail: args
+                })
+              );
+            };
+            instance.emit = (event, ...args) => {
+              dispatch(event, args);
+              if (hyphenate(event) !== event) {
+                dispatch(hyphenate(event), args);
+              }
+            };
+            let parent = this;
+            while (parent = parent && (parent.parentNode || parent.host)) {
+              if (parent instanceof VueElement) {
+                instance.parent = parent._instance;
+                instance.provides = parent._instance.provides;
+                break;
+              }
+            }
+          };
+        }
+        return vnode;
+      }
+      _applyStyles(styles) {
+        if (styles) {
+          styles.forEach((css) => {
+            const s = document.createElement("style");
+            s.textContent = css;
+            this.shadowRoot.appendChild(s);
+            {
+              (this._styles || (this._styles = [])).push(s);
+            }
+          });
+        }
+      }
+    }
+  
+    function useCssModule(name = "$style") {
+      {
+        {
+          warn(`useCssModule() is not supported in the global build.`);
+        }
+        return EMPTY_OBJ;
+      }
+    }
+  
+    function useCssVars(getter) {
+      const instance = getCurrentInstance();
+      if (!instance) {
+        warn(`useCssVars is called without current active component instance.`);
+        return;
+      }
+      const updateTeleports = instance.ut = (vars = getter(instance.proxy)) => {
+        Array.from(
+          document.querySelectorAll(`[data-v-owner="${instance.uid}"]`)
+        ).forEach((node) => setVarsOnNode(node, vars));
+      };
+      const setVars = () => {
+        const vars = getter(instance.proxy);
+        setVarsOnVNode(instance.subTree, vars);
+        updateTeleports(vars);
+      };
+      watchPostEffect(setVars);
+      onMounted(() => {
+        const ob = new MutationObserver(setVars);
+        ob.observe(instance.subTree.el.parentNode, { childList: true });
+        onUnmounted(() => ob.disconnect());
+      });
+    }
+    function setVarsOnVNode(vnode, vars) {
+      if (vnode.shapeFlag & 128) {
+        const suspense = vnode.suspense;
+        vnode = suspense.activeBranch;
+        if (suspense.pendingBranch && !suspense.isHydrating) {
+          suspense.effects.push(() => {
+            setVarsOnVNode(suspense.activeBranch, vars);
+          });
+        }
+      }
+      while (vnode.component) {
+        vnode = vnode.component.subTree;
+      }
+      if (vnode.shapeFlag & 1 && vnode.el) {
+        setVarsOnNode(vnode.el, vars);
+      } else if (vnode.type === Fragment) {
+        vnode.children.forEach((c) => setVarsOnVNode(c, vars));
+      } else if (vnode.type === Static) {
+        let { el, anchor } = vnode;
+        while (el) {
+          setVarsOnNode(el, vars);
+          if (el === anchor)
+            break;
+          el = el.nextSibling;
+        }
+      }
+    }
+    function setVarsOnNode(el, vars) {
+      if (el.nodeType === 1) {
+        const style = el.style;
+        for (const key in vars) {
+          style.setProperty(`--${key}`, vars[key]);
+        }
+      }
+    }
+  
+    const TRANSITION$1 = "transition";
+    const ANIMATION = "animation";
+    const Transition = (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots);
+    Transition.displayName = "Transition";
+    const DOMTransitionPropsValidators = {
+      name: String,
+      type: String,
+      css: {
+        type: Boolean,
+        default: true
+      },
+      duration: [String, Number, Object],
+      enterFromClass: String,
+      enterActiveClass: String,
+      enterToClass: String,
+      appearFromClass: String,
+      appearActiveClass: String,
+      appearToClass: String,
+      leaveFromClass: String,
+      leaveActiveClass: String,
+      leaveToClass: String
+    };
+    const TransitionPropsValidators = Transition.props = /* @__PURE__ */ extend(
+      {},
+      BaseTransitionPropsValidators,
+      DOMTransitionPropsValidators
+    );
+    const callHook = (hook, args = []) => {
+      if (isArray(hook)) {
+        hook.forEach((h2) => h2(...args));
+      } else if (hook) {
+        hook(...args);
+      }
+    };
+    const hasExplicitCallback = (hook) => {
+      return hook ? isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false;
+    };
+    function resolveTransitionProps(rawProps) {
+      const baseProps = {};
+      for (const key in rawProps) {
+        if (!(key in DOMTransitionPropsValidators)) {
+          baseProps[key] = rawProps[key];
+        }
+      }
+      if (rawProps.css === false) {
+        return baseProps;
+      }
+      const {
+        name = "v",
+        type,
+        duration,
+        enterFromClass = `${name}-enter-from`,
+        enterActiveClass = `${name}-enter-active`,
+        enterToClass = `${name}-enter-to`,
+        appearFromClass = enterFromClass,
+        appearActiveClass = enterActiveClass,
+        appearToClass = enterToClass,
+        leaveFromClass = `${name}-leave-from`,
+        leaveActiveClass = `${name}-leave-active`,
+        leaveToClass = `${name}-leave-to`
+      } = rawProps;
+      const durations = normalizeDuration(duration);
+      const enterDuration = durations && durations[0];
+      const leaveDuration = durations && durations[1];
+      const {
+        onBeforeEnter,
+        onEnter,
+        onEnterCancelled,
+        onLeave,
+        onLeaveCancelled,
+        onBeforeAppear = onBeforeEnter,
+        onAppear = onEnter,
+        onAppearCancelled = onEnterCancelled
+      } = baseProps;
+      const finishEnter = (el, isAppear, done) => {
+        removeTransitionClass(el, isAppear ? appearToClass : enterToClass);
+        removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);
+        done && done();
+      };
+      const finishLeave = (el, done) => {
+        el._isLeaving = false;
+        removeTransitionClass(el, leaveFromClass);
+        removeTransitionClass(el, leaveToClass);
+        removeTransitionClass(el, leaveActiveClass);
+        done && done();
+      };
+      const makeEnterHook = (isAppear) => {
+        return (el, done) => {
+          const hook = isAppear ? onAppear : onEnter;
+          const resolve = () => finishEnter(el, isAppear, done);
+          callHook(hook, [el, resolve]);
+          nextFrame(() => {
+            removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);
+            addTransitionClass(el, isAppear ? appearToClass : enterToClass);
+            if (!hasExplicitCallback(hook)) {
+              whenTransitionEnds(el, type, enterDuration, resolve);
+            }
+          });
+        };
+      };
+      return extend(baseProps, {
+        onBeforeEnter(el) {
+          callHook(onBeforeEnter, [el]);
+          addTransitionClass(el, enterFromClass);
+          addTransitionClass(el, enterActiveClass);
+        },
+        onBeforeAppear(el) {
+          callHook(onBeforeAppear, [el]);
+          addTransitionClass(el, appearFromClass);
+          addTransitionClass(el, appearActiveClass);
+        },
+        onEnter: makeEnterHook(false),
+        onAppear: makeEnterHook(true),
+        onLeave(el, done) {
+          el._isLeaving = true;
+          const resolve = () => finishLeave(el, done);
+          addTransitionClass(el, leaveFromClass);
+          forceReflow();
+          addTransitionClass(el, leaveActiveClass);
+          nextFrame(() => {
+            if (!el._isLeaving) {
+              return;
+            }
+            removeTransitionClass(el, leaveFromClass);
+            addTransitionClass(el, leaveToClass);
+            if (!hasExplicitCallback(onLeave)) {
+              whenTransitionEnds(el, type, leaveDuration, resolve);
+            }
+          });
+          callHook(onLeave, [el, resolve]);
+        },
+        onEnterCancelled(el) {
+          finishEnter(el, false);
+          callHook(onEnterCancelled, [el]);
+        },
+        onAppearCancelled(el) {
+          finishEnter(el, true);
+          callHook(onAppearCancelled, [el]);
+        },
+        onLeaveCancelled(el) {
+          finishLeave(el);
+          callHook(onLeaveCancelled, [el]);
+        }
+      });
+    }
+    function normalizeDuration(duration) {
+      if (duration == null) {
+        return null;
+      } else if (isObject(duration)) {
+        return [NumberOf(duration.enter), NumberOf(duration.leave)];
+      } else {
+        const n = NumberOf(duration);
+        return [n, n];
+      }
+    }
+    function NumberOf(val) {
+      const res = toNumber(val);
+      {
+        assertNumber(res, "<transition> explicit duration");
+      }
+      return res;
+    }
+    function addTransitionClass(el, cls) {
+      cls.split(/\s+/).forEach((c) => c && el.classList.add(c));
+      (el._vtc || (el._vtc = /* @__PURE__ */ new Set())).add(cls);
+    }
+    function removeTransitionClass(el, cls) {
+      cls.split(/\s+/).forEach((c) => c && el.classList.remove(c));
+      const { _vtc } = el;
+      if (_vtc) {
+        _vtc.delete(cls);
+        if (!_vtc.size) {
+          el._vtc = void 0;
+        }
+      }
+    }
+    function nextFrame(cb) {
+      requestAnimationFrame(() => {
+        requestAnimationFrame(cb);
+      });
+    }
+    let endId = 0;
+    function whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {
+      const id = el._endId = ++endId;
+      const resolveIfNotStale = () => {
+        if (id === el._endId) {
+          resolve();
+        }
+      };
+      if (explicitTimeout) {
+        return setTimeout(resolveIfNotStale, explicitTimeout);
+      }
+      const { type, timeout, propCount } = getTransitionInfo(el, expectedType);
+      if (!type) {
+        return resolve();
+      }
+      const endEvent = type + "end";
+      let ended = 0;
+      const end = () => {
+        el.removeEventListener(endEvent, onEnd);
+        resolveIfNotStale();
+      };
+      const onEnd = (e) => {
+        if (e.target === el && ++ended >= propCount) {
+          end();
+        }
+      };
+      setTimeout(() => {
+        if (ended < propCount) {
+          end();
+        }
+      }, timeout + 1);
+      el.addEventListener(endEvent, onEnd);
+    }
+    function getTransitionInfo(el, expectedType) {
+      const styles = window.getComputedStyle(el);
+      const getStyleProperties = (key) => (styles[key] || "").split(", ");
+      const transitionDelays = getStyleProperties(`${TRANSITION$1}Delay`);
+      const transitionDurations = getStyleProperties(`${TRANSITION$1}Duration`);
+      const transitionTimeout = getTimeout(transitionDelays, transitionDurations);
+      const animationDelays = getStyleProperties(`${ANIMATION}Delay`);
+      const animationDurations = getStyleProperties(`${ANIMATION}Duration`);
+      const animationTimeout = getTimeout(animationDelays, animationDurations);
+      let type = null;
+      let timeout = 0;
+      let propCount = 0;
+      if (expectedType === TRANSITION$1) {
+        if (transitionTimeout > 0) {
+          type = TRANSITION$1;
+          timeout = transitionTimeout;
+          propCount = transitionDurations.length;
+        }
+      } else if (expectedType === ANIMATION) {
+        if (animationTimeout > 0) {
+          type = ANIMATION;
+          timeout = animationTimeout;
+          propCount = animationDurations.length;
+        }
+      } else {
+        timeout = Math.max(transitionTimeout, animationTimeout);
+        type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION$1 : ANIMATION : null;
+        propCount = type ? type === TRANSITION$1 ? transitionDurations.length : animationDurations.length : 0;
+      }
+      const hasTransform = type === TRANSITION$1 && /\b(transform|all)(,|$)/.test(
+        getStyleProperties(`${TRANSITION$1}Property`).toString()
+      );
+      return {
+        type,
+        timeout,
+        propCount,
+        hasTransform
+      };
+    }
+    function getTimeout(delays, durations) {
+      while (delays.length < durations.length) {
+        delays = delays.concat(delays);
+      }
+      return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));
+    }
+    function toMs(s) {
+      return Number(s.slice(0, -1).replace(",", ".")) * 1e3;
+    }
+    function forceReflow() {
+      return document.body.offsetHeight;
+    }
+  
+    const positionMap = /* @__PURE__ */ new WeakMap();
+    const newPositionMap = /* @__PURE__ */ new WeakMap();
+    const TransitionGroupImpl = {
+      name: "TransitionGroup",
+      props: /* @__PURE__ */ extend({}, TransitionPropsValidators, {
+        tag: String,
+        moveClass: String
+      }),
+      setup(props, { slots }) {
+        const instance = getCurrentInstance();
+        const state = useTransitionState();
+        let prevChildren;
+        let children;
+        onUpdated(() => {
+          if (!prevChildren.length) {
+            return;
+          }
+          const moveClass = props.moveClass || `${props.name || "v"}-move`;
+          if (!hasCSSTransform(
+            prevChildren[0].el,
+            instance.vnode.el,
+            moveClass
+          )) {
+            return;
+          }
+          prevChildren.forEach(callPendingCbs);
+          prevChildren.forEach(recordPosition);
+          const movedChildren = prevChildren.filter(applyTranslation);
+          forceReflow();
+          movedChildren.forEach((c) => {
+            const el = c.el;
+            const style = el.style;
+            addTransitionClass(el, moveClass);
+            style.transform = style.webkitTransform = style.transitionDuration = "";
+            const cb = el._moveCb = (e) => {
+              if (e && e.target !== el) {
+                return;
+              }
+              if (!e || /transform$/.test(e.propertyName)) {
+                el.removeEventListener("transitionend", cb);
+                el._moveCb = null;
+                removeTransitionClass(el, moveClass);
+              }
+            };
+            el.addEventListener("transitionend", cb);
+          });
+        });
+        return () => {
+          const rawProps = toRaw(props);
+          const cssTransitionProps = resolveTransitionProps(rawProps);
+          let tag = rawProps.tag || Fragment;
+          prevChildren = children;
+          children = slots.default ? getTransitionRawChildren(slots.default()) : [];
+          for (let i = 0; i < children.length; i++) {
+            const child = children[i];
+            if (child.key != null) {
+              setTransitionHooks(
+                child,
+                resolveTransitionHooks(child, cssTransitionProps, state, instance)
+              );
+            } else {
+              warn(`<TransitionGroup> children must be keyed.`);
+            }
+          }
+          if (prevChildren) {
+            for (let i = 0; i < prevChildren.length; i++) {
+              const child = prevChildren[i];
+              setTransitionHooks(
+                child,
+                resolveTransitionHooks(child, cssTransitionProps, state, instance)
+              );
+              positionMap.set(child, child.el.getBoundingClientRect());
+            }
+          }
+          return createVNode(tag, null, children);
+        };
+      }
+    };
+    const removeMode = (props) => delete props.mode;
+    /* @__PURE__ */ removeMode(TransitionGroupImpl.props);
+    const TransitionGroup = TransitionGroupImpl;
+    function callPendingCbs(c) {
+      const el = c.el;
+      if (el._moveCb) {
+        el._moveCb();
+      }
+      if (el._enterCb) {
+        el._enterCb();
+      }
+    }
+    function recordPosition(c) {
+      newPositionMap.set(c, c.el.getBoundingClientRect());
+    }
+    function applyTranslation(c) {
+      const oldPos = positionMap.get(c);
+      const newPos = newPositionMap.get(c);
+      const dx = oldPos.left - newPos.left;
+      const dy = oldPos.top - newPos.top;
+      if (dx || dy) {
+        const s = c.el.style;
+        s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;
+        s.transitionDuration = "0s";
+        return c;
+      }
+    }
+    function hasCSSTransform(el, root, moveClass) {
+      const clone = el.cloneNode();
+      if (el._vtc) {
+        el._vtc.forEach((cls) => {
+          cls.split(/\s+/).forEach((c) => c && clone.classList.remove(c));
+        });
+      }
+      moveClass.split(/\s+/).forEach((c) => c && clone.classList.add(c));
+      clone.style.display = "none";
+      const container = root.nodeType === 1 ? root : root.parentNode;
+      container.appendChild(clone);
+      const { hasTransform } = getTransitionInfo(clone);
+      container.removeChild(clone);
+      return hasTransform;
+    }
+  
+    const getModelAssigner = (vnode) => {
+      const fn = vnode.props["onUpdate:modelValue"] || false;
+      return isArray(fn) ? (value) => invokeArrayFns(fn, value) : fn;
+    };
+    function onCompositionStart(e) {
+      e.target.composing = true;
+    }
+    function onCompositionEnd(e) {
+      const target = e.target;
+      if (target.composing) {
+        target.composing = false;
+        target.dispatchEvent(new Event("input"));
+      }
+    }
+    const vModelText = {
+      created(el, { modifiers: { lazy, trim, number } }, vnode) {
+        el._assign = getModelAssigner(vnode);
+        const castToNumber = number || vnode.props && vnode.props.type === "number";
+        addEventListener(el, lazy ? "change" : "input", (e) => {
+          if (e.target.composing)
+            return;
+          let domValue = el.value;
+          if (trim) {
+            domValue = domValue.trim();
+          }
+          if (castToNumber) {
+            domValue = looseToNumber(domValue);
+          }
+          el._assign(domValue);
+        });
+        if (trim) {
+          addEventListener(el, "change", () => {
+            el.value = el.value.trim();
+          });
+        }
+        if (!lazy) {
+          addEventListener(el, "compositionstart", onCompositionStart);
+          addEventListener(el, "compositionend", onCompositionEnd);
+          addEventListener(el, "change", onCompositionEnd);
+        }
+      },
+      // set value on mounted so it's after min/max for type="range"
+      mounted(el, { value }) {
+        el.value = value == null ? "" : value;
+      },
+      beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) {
+        el._assign = getModelAssigner(vnode);
+        if (el.composing)
+          return;
+        if (document.activeElement === el && el.type !== "range") {
+          if (lazy) {
+            return;
+          }
+          if (trim && el.value.trim() === value) {
+            return;
+          }
+          if ((number || el.type === "number") && looseToNumber(el.value) === value) {
+            return;
+          }
+        }
+        const newValue = value == null ? "" : value;
+        if (el.value !== newValue) {
+          el.value = newValue;
+        }
+      }
+    };
+    const vModelCheckbox = {
+      // #4096 array checkboxes need to be deep traversed
+      deep: true,
+      created(el, _, vnode) {
+        el._assign = getModelAssigner(vnode);
+        addEventListener(el, "change", () => {
+          const modelValue = el._modelValue;
+          const elementValue = getValue(el);
+          const checked = el.checked;
+          const assign = el._assign;
+          if (isArray(modelValue)) {
+            const index = looseIndexOf(modelValue, elementValue);
+            const found = index !== -1;
+            if (checked && !found) {
+              assign(modelValue.concat(elementValue));
+            } else if (!checked && found) {
+              const filtered = [...modelValue];
+              filtered.splice(index, 1);
+              assign(filtered);
+            }
+          } else if (isSet(modelValue)) {
+            const cloned = new Set(modelValue);
+            if (checked) {
+              cloned.add(elementValue);
+            } else {
+              cloned.delete(elementValue);
+            }
+            assign(cloned);
+          } else {
+            assign(getCheckboxValue(el, checked));
+          }
+        });
+      },
+      // set initial checked on mount to wait for true-value/false-value
+      mounted: setChecked,
+      beforeUpdate(el, binding, vnode) {
+        el._assign = getModelAssigner(vnode);
+        setChecked(el, binding, vnode);
+      }
+    };
+    function setChecked(el, { value, oldValue }, vnode) {
+      el._modelValue = value;
+      if (isArray(value)) {
+        el.checked = looseIndexOf(value, vnode.props.value) > -1;
+      } else if (isSet(value)) {
+        el.checked = value.has(vnode.props.value);
+      } else if (value !== oldValue) {
+        el.checked = looseEqual(value, getCheckboxValue(el, true));
+      }
+    }
+    const vModelRadio = {
+      created(el, { value }, vnode) {
+        el.checked = looseEqual(value, vnode.props.value);
+        el._assign = getModelAssigner(vnode);
+        addEventListener(el, "change", () => {
+          el._assign(getValue(el));
+        });
+      },
+      beforeUpdate(el, { value, oldValue }, vnode) {
+        el._assign = getModelAssigner(vnode);
+        if (value !== oldValue) {
+          el.checked = looseEqual(value, vnode.props.value);
+        }
+      }
+    };
+    const vModelSelect = {
+      // <select multiple> value need to be deep traversed
+      deep: true,
+      created(el, { value, modifiers: { number } }, vnode) {
+        const isSetModel = isSet(value);
+        addEventListener(el, "change", () => {
+          const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map(
+            (o) => number ? looseToNumber(getValue(o)) : getValue(o)
+          );
+          el._assign(
+            el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0]
+          );
+        });
+        el._assign = getModelAssigner(vnode);
+      },
+      // set value in mounted & updated because <select> relies on its children
+      // <option>s.
+      mounted(el, { value }) {
+        setSelected(el, value);
+      },
+      beforeUpdate(el, _binding, vnode) {
+        el._assign = getModelAssigner(vnode);
+      },
+      updated(el, { value }) {
+        setSelected(el, value);
+      }
+    };
+    function setSelected(el, value) {
+      const isMultiple = el.multiple;
+      if (isMultiple && !isArray(value) && !isSet(value)) {
+        warn(
+          `<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(value).slice(8, -1)}.`
+        );
+        return;
+      }
+      for (let i = 0, l = el.options.length; i < l; i++) {
+        const option = el.options[i];
+        const optionValue = getValue(option);
+        if (isMultiple) {
+          if (isArray(value)) {
+            option.selected = looseIndexOf(value, optionValue) > -1;
+          } else {
+            option.selected = value.has(optionValue);
+          }
+        } else {
+          if (looseEqual(getValue(option), value)) {
+            if (el.selectedIndex !== i)
+              el.selectedIndex = i;
+            return;
+          }
+        }
+      }
+      if (!isMultiple && el.selectedIndex !== -1) {
+        el.selectedIndex = -1;
+      }
+    }
+    function getValue(el) {
+      return "_value" in el ? el._value : el.value;
+    }
+    function getCheckboxValue(el, checked) {
+      const key = checked ? "_trueValue" : "_falseValue";
+      return key in el ? el[key] : checked;
+    }
+    const vModelDynamic = {
+      created(el, binding, vnode) {
+        callModelHook(el, binding, vnode, null, "created");
+      },
+      mounted(el, binding, vnode) {
+        callModelHook(el, binding, vnode, null, "mounted");
+      },
+      beforeUpdate(el, binding, vnode, prevVNode) {
+        callModelHook(el, binding, vnode, prevVNode, "beforeUpdate");
+      },
+      updated(el, binding, vnode, prevVNode) {
+        callModelHook(el, binding, vnode, prevVNode, "updated");
+      }
+    };
+    function resolveDynamicModel(tagName, type) {
+      switch (tagName) {
+        case "SELECT":
+          return vModelSelect;
+        case "TEXTAREA":
+          return vModelText;
+        default:
+          switch (type) {
+            case "checkbox":
+              return vModelCheckbox;
+            case "radio":
+              return vModelRadio;
+            default:
+              return vModelText;
+          }
+      }
+    }
+    function callModelHook(el, binding, vnode, prevVNode, hook) {
+      const modelToUse = resolveDynamicModel(
+        el.tagName,
+        vnode.props && vnode.props.type
+      );
+      const fn = modelToUse[hook];
+      fn && fn(el, binding, vnode, prevVNode);
+    }
+  
+    const systemModifiers = ["ctrl", "shift", "alt", "meta"];
+    const modifierGuards = {
+      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, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))
+    };
+    const withModifiers = (fn, modifiers) => {
+      return (event, ...args) => {
+        for (let i = 0; i < modifiers.length; i++) {
+          const guard = modifierGuards[modifiers[i]];
+          if (guard && guard(event, modifiers))
+            return;
+        }
+        return fn(event, ...args);
+      };
+    };
+    const keyNames = {
+      esc: "escape",
+      space: " ",
+      up: "arrow-up",
+      left: "arrow-left",
+      right: "arrow-right",
+      down: "arrow-down",
+      delete: "backspace"
+    };
+    const withKeys = (fn, modifiers) => {
+      return (event) => {
+        if (!("key" in event)) {
+          return;
+        }
+        const eventKey = hyphenate(event.key);
+        if (modifiers.some((k) => k === eventKey || keyNames[k] === eventKey)) {
+          return fn(event);
+        }
+      };
+    };
+  
+    const vShow = {
+      beforeMount(el, { value }, { transition }) {
+        el._vod = el.style.display === "none" ? "" : el.style.display;
+        if (transition && value) {
+          transition.beforeEnter(el);
+        } else {
+          setDisplay(el, value);
+        }
+      },
+      mounted(el, { value }, { transition }) {
+        if (transition && value) {
+          transition.enter(el);
+        }
+      },
+      updated(el, { value, oldValue }, { transition }) {
+        if (!value === !oldValue)
+          return;
+        if (transition) {
+          if (value) {
+            transition.beforeEnter(el);
+            setDisplay(el, true);
+            transition.enter(el);
+          } else {
+            transition.leave(el, () => {
+              setDisplay(el, false);
+            });
+          }
+        } else {
+          setDisplay(el, value);
+        }
+      },
+      beforeUnmount(el, { value }) {
+        setDisplay(el, value);
+      }
+    };
+    function setDisplay(el, value) {
+      el.style.display = value ? el._vod : "none";
+    }
+  
+    const rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);
+    let renderer;
+    let enabledHydration = false;
+    function ensureRenderer() {
+      return renderer || (renderer = createRenderer(rendererOptions));
+    }
+    function ensureHydrationRenderer() {
+      renderer = enabledHydration ? renderer : createHydrationRenderer(rendererOptions);
+      enabledHydration = true;
+      return renderer;
+    }
+    const render = (...args) => {
+      ensureRenderer().render(...args);
+    };
+    const hydrate = (...args) => {
+      ensureHydrationRenderer().hydrate(...args);
+    };
+    const createApp = (...args) => {
+      const app = ensureRenderer().createApp(...args);
+      {
+        injectNativeTagCheck(app);
+        injectCompilerOptionsCheck(app);
+      }
+      const { mount } = app;
+      app.mount = (containerOrSelector) => {
+        const container = normalizeContainer(containerOrSelector);
+        if (!container)
+          return;
+        const component = app._component;
+        if (!isFunction(component) && !component.render && !component.template) {
+          component.template = container.innerHTML;
+        }
+        container.innerHTML = "";
+        const proxy = mount(container, false, container instanceof SVGElement);
+        if (container instanceof Element) {
+          container.removeAttribute("v-cloak");
+          container.setAttribute("data-v-app", "");
+        }
+        return proxy;
+      };
+      return app;
+    };
+    const createSSRApp = (...args) => {
+      const app = ensureHydrationRenderer().createApp(...args);
+      {
+        injectNativeTagCheck(app);
+        injectCompilerOptionsCheck(app);
+      }
+      const { mount } = app;
+      app.mount = (containerOrSelector) => {
+        const container = normalizeContainer(containerOrSelector);
+        if (container) {
+          return mount(container, true, container instanceof SVGElement);
+        }
+      };
+      return app;
+    };
+    function injectNativeTagCheck(app) {
+      Object.defineProperty(app.config, "isNativeTag", {
+        value: (tag) => isHTMLTag(tag) || isSVGTag(tag),
+        writable: false
+      });
+    }
+    function injectCompilerOptionsCheck(app) {
+      if (isRuntimeOnly()) {
+        const isCustomElement = app.config.isCustomElement;
+        Object.defineProperty(app.config, "isCustomElement", {
+          get() {
+            return isCustomElement;
+          },
+          set() {
+            warn(
+              `The \`isCustomElement\` config option is deprecated. Use \`compilerOptions.isCustomElement\` instead.`
+            );
+          }
+        });
+        const compilerOptions = app.config.compilerOptions;
+        const msg = `The \`compilerOptions\` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka "full build"). Since you are using the runtime-only build, \`compilerOptions\` must be passed to \`@vue/compiler-dom\` in the build setup instead.
+  - For vue-loader: pass it via vue-loader's \`compilerOptions\` loader option.
+  - For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader
+  - For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-sfc`;
+        Object.defineProperty(app.config, "compilerOptions", {
+          get() {
+            warn(msg);
+            return compilerOptions;
+          },
+          set() {
+            warn(msg);
+          }
+        });
+      }
+    }
+    function normalizeContainer(container) {
+      if (isString(container)) {
+        const res = document.querySelector(container);
+        if (!res) {
+          warn(
+            `Failed to mount app: mount target selector "${container}" returned null.`
+          );
+        }
+        return res;
+      }
+      if (window.ShadowRoot && container instanceof window.ShadowRoot && container.mode === "closed") {
+        warn(
+          `mounting on a ShadowRoot with \`{mode: "closed"}\` may lead to unpredictable bugs`
+        );
+      }
+      return container;
+    }
+    const initDirectivesForSSR = NOOP;
+  
+    function initDev() {
+      {
+        {
+          console.info(
+            `You are running a development build of Vue.
+  Make sure to use the production build (*.prod.js) when deploying for production.`
+          );
+        }
+        initCustomFormatter();
+      }
+    }
+  
+    function defaultOnError(error) {
+      throw error;
+    }
+    function defaultOnWarn(msg) {
+      console.warn(`[Vue warn] ${msg.message}`);
+    }
+    function createCompilerError(code, loc, messages, additionalMessage) {
+      const msg = (messages || errorMessages)[code] + (additionalMessage || ``) ;
+      const error = new SyntaxError(String(msg));
+      error.code = code;
+      error.loc = loc;
+      return error;
+    }
+    const errorMessages = {
+      // parse errors
+      [0]: "Illegal comment.",
+      [1]: "CDATA section is allowed only in XML context.",
+      [2]: "Duplicate attribute.",
+      [3]: "End tag cannot have attributes.",
+      [4]: "Illegal '/' in tags.",
+      [5]: "Unexpected EOF in tag.",
+      [6]: "Unexpected EOF in CDATA section.",
+      [7]: "Unexpected EOF in comment.",
+      [8]: "Unexpected EOF in script.",
+      [9]: "Unexpected EOF in tag.",
+      [10]: "Incorrectly closed comment.",
+      [11]: "Incorrectly opened comment.",
+      [12]: "Illegal tag name. Use '&lt;' to print '<'.",
+      [13]: "Attribute value was expected.",
+      [14]: "End tag name was expected.",
+      [15]: "Whitespace was expected.",
+      [16]: "Unexpected '<!--' in comment.",
+      [17]: `Attribute name cannot contain U+0022 ("), U+0027 ('), and U+003C (<).`,
+      [18]: "Unquoted attribute value cannot contain U+0022 (\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).",
+      [19]: "Attribute name cannot start with '='.",
+      [21]: "'<?' is allowed only in XML context.",
+      [20]: `Unexpected null character.`,
+      [22]: "Illegal '/' in tags.",
+      // Vue-specific parse errors
+      [23]: "Invalid end tag.",
+      [24]: "Element is missing end tag.",
+      [25]: "Interpolation end sign was not found.",
+      [27]: "End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.",
+      [26]: "Legal directive name was expected.",
+      // transform errors
+      [28]: `v-if/v-else-if is missing expression.`,
+      [29]: `v-if/else branches must use unique keys.`,
+      [30]: `v-else/v-else-if has no adjacent v-if or v-else-if.`,
+      [31]: `v-for is missing expression.`,
+      [32]: `v-for has invalid expression.`,
+      [33]: `<template v-for> key should be placed on the <template> tag.`,
+      [34]: `v-bind is missing expression.`,
+      [35]: `v-on is missing expression.`,
+      [36]: `Unexpected custom directive on <slot> outlet.`,
+      [37]: `Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.`,
+      [38]: `Duplicate slot names found. `,
+      [39]: `Extraneous children found when component already has explicitly named default slot. These children will be ignored.`,
+      [40]: `v-slot can only be used on components or <template> tags.`,
+      [41]: `v-model is missing expression.`,
+      [42]: `v-model value must be a valid JavaScript member expression.`,
+      [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`,
+      [44]: `v-model cannot be used on a prop, because local prop bindings are not writable.
+  Use a v-bind binding combined with a v-on listener that emits update:x event instead.`,
+      [45]: `Error parsing JavaScript expression: `,
+      [46]: `<KeepAlive> expects exactly one child component.`,
+      // generic errors
+      [47]: `"prefixIdentifiers" option is not supported in this build of compiler.`,
+      [48]: `ES module mode is not supported in this build of compiler.`,
+      [49]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`,
+      [50]: `"scopeId" option is only supported in module mode.`,
+      // deprecations
+      [51]: `@vnode-* hooks in templates are deprecated. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support will be removed in 3.4.`,
+      [52]: `v-is="component-name" has been deprecated. Use is="vue:component-name" instead. v-is support will be removed in 3.4.`,
+      // just to fulfill types
+      [53]: ``
+    };
+  
+    const FRAGMENT = Symbol(`Fragment` );
+    const TELEPORT = Symbol(`Teleport` );
+    const SUSPENSE = Symbol(`Suspense` );
+    const KEEP_ALIVE = Symbol(`KeepAlive` );
+    const BASE_TRANSITION = Symbol(`BaseTransition` );
+    const OPEN_BLOCK = Symbol(`openBlock` );
+    const CREATE_BLOCK = Symbol(`createBlock` );
+    const CREATE_ELEMENT_BLOCK = Symbol(`createElementBlock` );
+    const CREATE_VNODE = Symbol(`createVNode` );
+    const CREATE_ELEMENT_VNODE = Symbol(`createElementVNode` );
+    const CREATE_COMMENT = Symbol(`createCommentVNode` );
+    const CREATE_TEXT = Symbol(`createTextVNode` );
+    const CREATE_STATIC = Symbol(`createStaticVNode` );
+    const RESOLVE_COMPONENT = Symbol(`resolveComponent` );
+    const RESOLVE_DYNAMIC_COMPONENT = Symbol(
+      `resolveDynamicComponent` 
+    );
+    const RESOLVE_DIRECTIVE = Symbol(`resolveDirective` );
+    const RESOLVE_FILTER = Symbol(`resolveFilter` );
+    const WITH_DIRECTIVES = Symbol(`withDirectives` );
+    const RENDER_LIST = Symbol(`renderList` );
+    const RENDER_SLOT = Symbol(`renderSlot` );
+    const CREATE_SLOTS = Symbol(`createSlots` );
+    const TO_DISPLAY_STRING = Symbol(`toDisplayString` );
+    const MERGE_PROPS = Symbol(`mergeProps` );
+    const NORMALIZE_CLASS = Symbol(`normalizeClass` );
+    const NORMALIZE_STYLE = Symbol(`normalizeStyle` );
+    const NORMALIZE_PROPS = Symbol(`normalizeProps` );
+    const GUARD_REACTIVE_PROPS = Symbol(`guardReactiveProps` );
+    const TO_HANDLERS = Symbol(`toHandlers` );
+    const CAMELIZE = Symbol(`camelize` );
+    const CAPITALIZE = Symbol(`capitalize` );
+    const TO_HANDLER_KEY = Symbol(`toHandlerKey` );
+    const SET_BLOCK_TRACKING = Symbol(`setBlockTracking` );
+    const PUSH_SCOPE_ID = Symbol(`pushScopeId` );
+    const POP_SCOPE_ID = Symbol(`popScopeId` );
+    const WITH_CTX = Symbol(`withCtx` );
+    const UNREF = Symbol(`unref` );
+    const IS_REF = Symbol(`isRef` );
+    const WITH_MEMO = Symbol(`withMemo` );
+    const IS_MEMO_SAME = Symbol(`isMemoSame` );
+    const helperNameMap = {
+      [FRAGMENT]: `Fragment`,
+      [TELEPORT]: `Teleport`,
+      [SUSPENSE]: `Suspense`,
+      [KEEP_ALIVE]: `KeepAlive`,
+      [BASE_TRANSITION]: `BaseTransition`,
+      [OPEN_BLOCK]: `openBlock`,
+      [CREATE_BLOCK]: `createBlock`,
+      [CREATE_ELEMENT_BLOCK]: `createElementBlock`,
+      [CREATE_VNODE]: `createVNode`,
+      [CREATE_ELEMENT_VNODE]: `createElementVNode`,
+      [CREATE_COMMENT]: `createCommentVNode`,
+      [CREATE_TEXT]: `createTextVNode`,
+      [CREATE_STATIC]: `createStaticVNode`,
+      [RESOLVE_COMPONENT]: `resolveComponent`,
+      [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`,
+      [RESOLVE_DIRECTIVE]: `resolveDirective`,
+      [RESOLVE_FILTER]: `resolveFilter`,
+      [WITH_DIRECTIVES]: `withDirectives`,
+      [RENDER_LIST]: `renderList`,
+      [RENDER_SLOT]: `renderSlot`,
+      [CREATE_SLOTS]: `createSlots`,
+      [TO_DISPLAY_STRING]: `toDisplayString`,
+      [MERGE_PROPS]: `mergeProps`,
+      [NORMALIZE_CLASS]: `normalizeClass`,
+      [NORMALIZE_STYLE]: `normalizeStyle`,
+      [NORMALIZE_PROPS]: `normalizeProps`,
+      [GUARD_REACTIVE_PROPS]: `guardReactiveProps`,
+      [TO_HANDLERS]: `toHandlers`,
+      [CAMELIZE]: `camelize`,
+      [CAPITALIZE]: `capitalize`,
+      [TO_HANDLER_KEY]: `toHandlerKey`,
+      [SET_BLOCK_TRACKING]: `setBlockTracking`,
+      [PUSH_SCOPE_ID]: `pushScopeId`,
+      [POP_SCOPE_ID]: `popScopeId`,
+      [WITH_CTX]: `withCtx`,
+      [UNREF]: `unref`,
+      [IS_REF]: `isRef`,
+      [WITH_MEMO]: `withMemo`,
+      [IS_MEMO_SAME]: `isMemoSame`
+    };
+    function registerRuntimeHelpers(helpers) {
+      Object.getOwnPropertySymbols(helpers).forEach((s) => {
+        helperNameMap[s] = helpers[s];
+      });
+    }
+  
+    const locStub = {
+      source: "",
+      start: { line: 1, column: 1, offset: 0 },
+      end: { line: 1, column: 1, offset: 0 }
+    };
+    function createRoot(children, loc = locStub) {
+      return {
+        type: 0,
+        children,
+        helpers: /* @__PURE__ */ new Set(),
+        components: [],
+        directives: [],
+        hoists: [],
+        imports: [],
+        cached: 0,
+        temps: 0,
+        codegenNode: void 0,
+        loc
+      };
+    }
+    function createVNodeCall(context, tag, props, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent = false, loc = locStub) {
+      if (context) {
+        if (isBlock) {
+          context.helper(OPEN_BLOCK);
+          context.helper(getVNodeBlockHelper(context.inSSR, isComponent));
+        } else {
+          context.helper(getVNodeHelper(context.inSSR, isComponent));
+        }
+        if (directives) {
+          context.helper(WITH_DIRECTIVES);
+        }
+      }
+      return {
+        type: 13,
+        tag,
+        props,
+        children,
+        patchFlag,
+        dynamicProps,
+        directives,
+        isBlock,
+        disableTracking,
+        isComponent,
+        loc
+      };
+    }
+    function createArrayExpression(elements, loc = locStub) {
+      return {
+        type: 17,
+        loc,
+        elements
+      };
+    }
+    function createObjectExpression(properties, loc = locStub) {
+      return {
+        type: 15,
+        loc,
+        properties
+      };
+    }
+    function createObjectProperty(key, value) {
+      return {
+        type: 16,
+        loc: locStub,
+        key: isString(key) ? createSimpleExpression(key, true) : key,
+        value
+      };
+    }
+    function createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0) {
+      return {
+        type: 4,
+        loc,
+        content,
+        isStatic,
+        constType: isStatic ? 3 : constType
+      };
+    }
+    function createCompoundExpression(children, loc = locStub) {
+      return {
+        type: 8,
+        loc,
+        children
+      };
+    }
+    function createCallExpression(callee, args = [], loc = locStub) {
+      return {
+        type: 14,
+        loc,
+        callee,
+        arguments: args
+      };
+    }
+    function createFunctionExpression(params, returns = void 0, newline = false, isSlot = false, loc = locStub) {
+      return {
+        type: 18,
+        params,
+        returns,
+        newline,
+        isSlot,
+        loc
+      };
+    }
+    function createConditionalExpression(test, consequent, alternate, newline = true) {
+      return {
+        type: 19,
+        test,
+        consequent,
+        alternate,
+        newline,
+        loc: locStub
+      };
+    }
+    function createCacheExpression(index, value, isVNode = false) {
+      return {
+        type: 20,
+        index,
+        value,
+        isVNode,
+        loc: locStub
+      };
+    }
+    function createBlockStatement(body) {
+      return {
+        type: 21,
+        body,
+        loc: locStub
+      };
+    }
+    function getVNodeHelper(ssr, isComponent) {
+      return ssr || isComponent ? CREATE_VNODE : CREATE_ELEMENT_VNODE;
+    }
+    function getVNodeBlockHelper(ssr, isComponent) {
+      return ssr || isComponent ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK;
+    }
+    function convertToBlock(node, { helper, removeHelper, inSSR }) {
+      if (!node.isBlock) {
+        node.isBlock = true;
+        removeHelper(getVNodeHelper(inSSR, node.isComponent));
+        helper(OPEN_BLOCK);
+        helper(getVNodeBlockHelper(inSSR, node.isComponent));
+      }
+    }
+  
+    const isStaticExp = (p) => p.type === 4 && p.isStatic;
+    const isBuiltInType = (tag, expected) => tag === expected || tag === hyphenate(expected);
+    function isCoreComponent(tag) {
+      if (isBuiltInType(tag, "Teleport")) {
+        return TELEPORT;
+      } else if (isBuiltInType(tag, "Suspense")) {
+        return SUSPENSE;
+      } else if (isBuiltInType(tag, "KeepAlive")) {
+        return KEEP_ALIVE;
+      } else if (isBuiltInType(tag, "BaseTransition")) {
+        return BASE_TRANSITION;
+      }
+    }
+    const nonIdentifierRE = /^\d|[^\$\w]/;
+    const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name);
+    const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/;
+    const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/;
+    const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g;
+    const isMemberExpressionBrowser = (path) => {
+      path = path.trim().replace(whitespaceRE, (s) => s.trim());
+      let state = 0 /* inMemberExp */;
+      let stateStack = [];
+      let currentOpenBracketCount = 0;
+      let currentOpenParensCount = 0;
+      let currentStringType = null;
+      for (let i = 0; i < path.length; i++) {
+        const char = path.charAt(i);
+        switch (state) {
+          case 0 /* inMemberExp */:
+            if (char === "[") {
+              stateStack.push(state);
+              state = 1 /* inBrackets */;
+              currentOpenBracketCount++;
+            } else if (char === "(") {
+              stateStack.push(state);
+              state = 2 /* inParens */;
+              currentOpenParensCount++;
+            } else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) {
+              return false;
+            }
+            break;
+          case 1 /* inBrackets */:
+            if (char === `'` || char === `"` || char === "`") {
+              stateStack.push(state);
+              state = 3 /* inString */;
+              currentStringType = char;
+            } else if (char === `[`) {
+              currentOpenBracketCount++;
+            } else if (char === `]`) {
+              if (!--currentOpenBracketCount) {
+                state = stateStack.pop();
+              }
+            }
+            break;
+          case 2 /* inParens */:
+            if (char === `'` || char === `"` || char === "`") {
+              stateStack.push(state);
+              state = 3 /* inString */;
+              currentStringType = char;
+            } else if (char === `(`) {
+              currentOpenParensCount++;
+            } else if (char === `)`) {
+              if (i === path.length - 1) {
+                return false;
+              }
+              if (!--currentOpenParensCount) {
+                state = stateStack.pop();
+              }
+            }
+            break;
+          case 3 /* inString */:
+            if (char === currentStringType) {
+              state = stateStack.pop();
+              currentStringType = null;
+            }
+            break;
+        }
+      }
+      return !currentOpenBracketCount && !currentOpenParensCount;
+    };
+    const isMemberExpression = isMemberExpressionBrowser ;
+    function getInnerRange(loc, offset, length) {
+      const source = loc.source.slice(offset, offset + length);
+      const newLoc = {
+        source,
+        start: advancePositionWithClone(loc.start, loc.source, offset),
+        end: loc.end
+      };
+      if (length != null) {
+        newLoc.end = advancePositionWithClone(
+          loc.start,
+          loc.source,
+          offset + length
+        );
+      }
+      return newLoc;
+    }
+    function advancePositionWithClone(pos, source, numberOfCharacters = source.length) {
+      return advancePositionWithMutation(
+        extend({}, pos),
+        source,
+        numberOfCharacters
+      );
+    }
+    function advancePositionWithMutation(pos, source, numberOfCharacters = source.length) {
+      let linesCount = 0;
+      let lastNewLinePos = -1;
+      for (let i = 0; i < numberOfCharacters; i++) {
+        if (source.charCodeAt(i) === 10) {
+          linesCount++;
+          lastNewLinePos = i;
+        }
+      }
+      pos.offset += numberOfCharacters;
+      pos.line += linesCount;
+      pos.column = lastNewLinePos === -1 ? pos.column + numberOfCharacters : numberOfCharacters - lastNewLinePos;
+      return pos;
+    }
+    function assert(condition, msg) {
+      if (!condition) {
+        throw new Error(msg || `unexpected compiler condition`);
+      }
+    }
+    function findDir(node, name, allowEmpty = false) {
+      for (let i = 0; i < node.props.length; i++) {
+        const p = node.props[i];
+        if (p.type === 7 && (allowEmpty || p.exp) && (isString(name) ? p.name === name : name.test(p.name))) {
+          return p;
+        }
+      }
+    }
+    function findProp(node, name, dynamicOnly = false, allowEmpty = false) {
+      for (let i = 0; i < node.props.length; i++) {
+        const p = node.props[i];
+        if (p.type === 6) {
+          if (dynamicOnly)
+            continue;
+          if (p.name === name && (p.value || allowEmpty)) {
+            return p;
+          }
+        } else if (p.name === "bind" && (p.exp || allowEmpty) && isStaticArgOf(p.arg, name)) {
+          return p;
+        }
+      }
+    }
+    function isStaticArgOf(arg, name) {
+      return !!(arg && isStaticExp(arg) && arg.content === name);
+    }
+    function hasDynamicKeyVBind(node) {
+      return node.props.some(
+        (p) => p.type === 7 && p.name === "bind" && (!p.arg || // v-bind="obj"
+        p.arg.type !== 4 || // v-bind:[_ctx.foo]
+        !p.arg.isStatic)
+        // v-bind:[foo]
+      );
+    }
+    function isText$1(node) {
+      return node.type === 5 || node.type === 2;
+    }
+    function isVSlot(p) {
+      return p.type === 7 && p.name === "slot";
+    }
+    function isTemplateNode(node) {
+      return node.type === 1 && node.tagType === 3;
+    }
+    function isSlotOutlet(node) {
+      return node.type === 1 && node.tagType === 2;
+    }
+    const propsHelperSet = /* @__PURE__ */ new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROPS]);
+    function getUnnormalizedProps(props, callPath = []) {
+      if (props && !isString(props) && props.type === 14) {
+        const callee = props.callee;
+        if (!isString(callee) && propsHelperSet.has(callee)) {
+          return getUnnormalizedProps(
+            props.arguments[0],
+            callPath.concat(props)
+          );
+        }
+      }
+      return [props, callPath];
+    }
+    function injectProp(node, prop, context) {
+      let propsWithInjection;
+      let props = node.type === 13 ? node.props : node.arguments[2];
+      let callPath = [];
+      let parentCall;
+      if (props && !isString(props) && props.type === 14) {
+        const ret = getUnnormalizedProps(props);
+        props = ret[0];
+        callPath = ret[1];
+        parentCall = callPath[callPath.length - 1];
+      }
+      if (props == null || isString(props)) {
+        propsWithInjection = createObjectExpression([prop]);
+      } else if (props.type === 14) {
+        const first = props.arguments[0];
+        if (!isString(first) && first.type === 15) {
+          if (!hasProp(prop, first)) {
+            first.properties.unshift(prop);
+          }
+        } else {
+          if (props.callee === TO_HANDLERS) {
+            propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [
+              createObjectExpression([prop]),
+              props
+            ]);
+          } else {
+            props.arguments.unshift(createObjectExpression([prop]));
+          }
+        }
+        !propsWithInjection && (propsWithInjection = props);
+      } else if (props.type === 15) {
+        if (!hasProp(prop, props)) {
+          props.properties.unshift(prop);
+        }
+        propsWithInjection = props;
+      } else {
+        propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [
+          createObjectExpression([prop]),
+          props
+        ]);
+        if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) {
+          parentCall = callPath[callPath.length - 2];
+        }
+      }
+      if (node.type === 13) {
+        if (parentCall) {
+          parentCall.arguments[0] = propsWithInjection;
+        } else {
+          node.props = propsWithInjection;
+        }
+      } else {
+        if (parentCall) {
+          parentCall.arguments[0] = propsWithInjection;
+        } else {
+          node.arguments[2] = propsWithInjection;
+        }
+      }
+    }
+    function hasProp(prop, props) {
+      let result = false;
+      if (prop.key.type === 4) {
+        const propKeyName = prop.key.content;
+        result = props.properties.some(
+          (p) => p.key.type === 4 && p.key.content === propKeyName
+        );
+      }
+      return result;
+    }
+    function toValidAssetId(name, type) {
+      return `_${type}_${name.replace(/[^\w]/g, (searchValue, replaceValue) => {
+      return searchValue === "-" ? "_" : name.charCodeAt(replaceValue).toString();
+    })}`;
+    }
+    function getMemoedVNodeCall(node) {
+      if (node.type === 14 && node.callee === WITH_MEMO) {
+        return node.arguments[1].returns;
+      } else {
+        return node;
+      }
+    }
+  
+    const decodeRE = /&(gt|lt|amp|apos|quot);/g;
+    const decodeMap = {
+      gt: ">",
+      lt: "<",
+      amp: "&",
+      apos: "'",
+      quot: '"'
+    };
+    const defaultParserOptions = {
+      delimiters: [`{{`, `}}`],
+      getNamespace: () => 0,
+      getTextMode: () => 0,
+      isVoidTag: NO,
+      isPreTag: NO,
+      isCustomElement: NO,
+      decodeEntities: (rawText) => rawText.replace(decodeRE, (_, p1) => decodeMap[p1]),
+      onError: defaultOnError,
+      onWarn: defaultOnWarn,
+      comments: true
+    };
+    function baseParse(content, options = {}) {
+      const context = createParserContext(content, options);
+      const start = getCursor(context);
+      return createRoot(
+        parseChildren(context, 0, []),
+        getSelection(context, start)
+      );
+    }
+    function createParserContext(content, rawOptions) {
+      const options = extend({}, defaultParserOptions);
+      let key;
+      for (key in rawOptions) {
+        options[key] = rawOptions[key] === void 0 ? defaultParserOptions[key] : rawOptions[key];
+      }
+      return {
+        options,
+        column: 1,
+        line: 1,
+        offset: 0,
+        originalSource: content,
+        source: content,
+        inPre: false,
+        inVPre: false,
+        onWarn: options.onWarn
+      };
+    }
+    function parseChildren(context, mode, ancestors) {
+      const parent = last(ancestors);
+      const ns = parent ? parent.ns : 0;
+      const nodes = [];
+      while (!isEnd(context, mode, ancestors)) {
+        const s = context.source;
+        let node = void 0;
+        if (mode === 0 || mode === 1) {
+          if (!context.inVPre && startsWith(s, context.options.delimiters[0])) {
+            node = parseInterpolation(context, mode);
+          } else if (mode === 0 && s[0] === "<") {
+            if (s.length === 1) {
+              emitError(context, 5, 1);
+            } else if (s[1] === "!") {
+              if (startsWith(s, "<!--")) {
+                node = parseComment(context);
+              } else if (startsWith(s, "<!DOCTYPE")) {
+                node = parseBogusComment(context);
+              } else if (startsWith(s, "<![CDATA[")) {
+                if (ns !== 0) {
+                  node = parseCDATA(context, ancestors);
+                } else {
+                  emitError(context, 1);
+                  node = parseBogusComment(context);
+                }
+              } else {
+                emitError(context, 11);
+                node = parseBogusComment(context);
+              }
+            } else if (s[1] === "/") {
+              if (s.length === 2) {
+                emitError(context, 5, 2);
+              } else if (s[2] === ">") {
+                emitError(context, 14, 2);
+                advanceBy(context, 3);
+                continue;
+              } else if (/[a-z]/i.test(s[2])) {
+                emitError(context, 23);
+                parseTag(context, TagType.End, parent);
+                continue;
+              } else {
+                emitError(
+                  context,
+                  12,
+                  2
+                );
+                node = parseBogusComment(context);
+              }
+            } else if (/[a-z]/i.test(s[1])) {
+              node = parseElement(context, ancestors);
+            } else if (s[1] === "?") {
+              emitError(
+                context,
+                21,
+                1
+              );
+              node = parseBogusComment(context);
+            } else {
+              emitError(context, 12, 1);
+            }
+          }
+        }
+        if (!node) {
+          node = parseText(context, mode);
+        }
+        if (isArray(node)) {
+          for (let i = 0; i < node.length; i++) {
+            pushNode(nodes, node[i]);
+          }
+        } else {
+          pushNode(nodes, node);
+        }
+      }
+      let removedWhitespace = false;
+      if (mode !== 2 && mode !== 1) {
+        const shouldCondense = context.options.whitespace !== "preserve";
+        for (let i = 0; i < nodes.length; i++) {
+          const node = nodes[i];
+          if (node.type === 2) {
+            if (!context.inPre) {
+              if (!/[^\t\r\n\f ]/.test(node.content)) {
+                const prev = nodes[i - 1];
+                const next = nodes[i + 1];
+                if (!prev || !next || shouldCondense && (prev.type === 3 && next.type === 3 || prev.type === 3 && next.type === 1 || prev.type === 1 && next.type === 3 || prev.type === 1 && next.type === 1 && /[\r\n]/.test(node.content))) {
+                  removedWhitespace = true;
+                  nodes[i] = null;
+                } else {
+                  node.content = " ";
+                }
+              } else if (shouldCondense) {
+                node.content = node.content.replace(/[\t\r\n\f ]+/g, " ");
+              }
+            } else {
+              node.content = node.content.replace(/\r\n/g, "\n");
+            }
+          } else if (node.type === 3 && !context.options.comments) {
+            removedWhitespace = true;
+            nodes[i] = null;
+          }
+        }
+        if (context.inPre && parent && context.options.isPreTag(parent.tag)) {
+          const first = nodes[0];
+          if (first && first.type === 2) {
+            first.content = first.content.replace(/^\r?\n/, "");
+          }
+        }
+      }
+      return removedWhitespace ? nodes.filter(Boolean) : nodes;
+    }
+    function pushNode(nodes, node) {
+      if (node.type === 2) {
+        const prev = last(nodes);
+        if (prev && prev.type === 2 && prev.loc.end.offset === node.loc.start.offset) {
+          prev.content += node.content;
+          prev.loc.end = node.loc.end;
+          prev.loc.source += node.loc.source;
+          return;
+        }
+      }
+      nodes.push(node);
+    }
+    function parseCDATA(context, ancestors) {
+      advanceBy(context, 9);
+      const nodes = parseChildren(context, 3, ancestors);
+      if (context.source.length === 0) {
+        emitError(context, 6);
+      } else {
+        advanceBy(context, 3);
+      }
+      return nodes;
+    }
+    function parseComment(context) {
+      const start = getCursor(context);
+      let content;
+      const match = /--(\!)?>/.exec(context.source);
+      if (!match) {
+        content = context.source.slice(4);
+        advanceBy(context, context.source.length);
+        emitError(context, 7);
+      } else {
+        if (match.index <= 3) {
+          emitError(context, 0);
+        }
+        if (match[1]) {
+          emitError(context, 10);
+        }
+        content = context.source.slice(4, match.index);
+        const s = context.source.slice(0, match.index);
+        let prevIndex = 1, nestedIndex = 0;
+        while ((nestedIndex = s.indexOf("<!--", prevIndex)) !== -1) {
+          advanceBy(context, nestedIndex - prevIndex + 1);
+          if (nestedIndex + 4 < s.length) {
+            emitError(context, 16);
+          }
+          prevIndex = nestedIndex + 1;
+        }
+        advanceBy(context, match.index + match[0].length - prevIndex + 1);
+      }
+      return {
+        type: 3,
+        content,
+        loc: getSelection(context, start)
+      };
+    }
+    function parseBogusComment(context) {
+      const start = getCursor(context);
+      const contentStart = context.source[1] === "?" ? 1 : 2;
+      let content;
+      const closeIndex = context.source.indexOf(">");
+      if (closeIndex === -1) {
+        content = context.source.slice(contentStart);
+        advanceBy(context, context.source.length);
+      } else {
+        content = context.source.slice(contentStart, closeIndex);
+        advanceBy(context, closeIndex + 1);
+      }
+      return {
+        type: 3,
+        content,
+        loc: getSelection(context, start)
+      };
+    }
+    function parseElement(context, ancestors) {
+      const wasInPre = context.inPre;
+      const wasInVPre = context.inVPre;
+      const parent = last(ancestors);
+      const element = parseTag(context, TagType.Start, parent);
+      const isPreBoundary = context.inPre && !wasInPre;
+      const isVPreBoundary = context.inVPre && !wasInVPre;
+      if (element.isSelfClosing || context.options.isVoidTag(element.tag)) {
+        if (isPreBoundary) {
+          context.inPre = false;
+        }
+        if (isVPreBoundary) {
+          context.inVPre = false;
+        }
+        return element;
+      }
+      ancestors.push(element);
+      const mode = context.options.getTextMode(element, parent);
+      const children = parseChildren(context, mode, ancestors);
+      ancestors.pop();
+      element.children = children;
+      if (startsWithEndTagOpen(context.source, element.tag)) {
+        parseTag(context, TagType.End, parent);
+      } else {
+        emitError(context, 24, 0, element.loc.start);
+        if (context.source.length === 0 && element.tag.toLowerCase() === "script") {
+          const first = children[0];
+          if (first && startsWith(first.loc.source, "<!--")) {
+            emitError(context, 8);
+          }
+        }
+      }
+      element.loc = getSelection(context, element.loc.start);
+      if (isPreBoundary) {
+        context.inPre = false;
+      }
+      if (isVPreBoundary) {
+        context.inVPre = false;
+      }
+      return element;
+    }
+    var TagType = /* @__PURE__ */ ((TagType2) => {
+      TagType2[TagType2["Start"] = 0] = "Start";
+      TagType2[TagType2["End"] = 1] = "End";
+      return TagType2;
+    })(TagType || {});
+    const isSpecialTemplateDirective = /* @__PURE__ */ makeMap(
+      `if,else,else-if,for,slot`
+    );
+    function parseTag(context, type, parent) {
+      const start = getCursor(context);
+      const match = /^<\/?([a-z][^\t\r\n\f />]*)/i.exec(context.source);
+      const tag = match[1];
+      const ns = context.options.getNamespace(tag, parent);
+      advanceBy(context, match[0].length);
+      advanceSpaces(context);
+      const cursor = getCursor(context);
+      const currentSource = context.source;
+      if (context.options.isPreTag(tag)) {
+        context.inPre = true;
+      }
+      let props = parseAttributes(context, type);
+      if (type === 0 /* Start */ && !context.inVPre && props.some((p) => p.type === 7 && p.name === "pre")) {
+        context.inVPre = true;
+        extend(context, cursor);
+        context.source = currentSource;
+        props = parseAttributes(context, type).filter((p) => p.name !== "v-pre");
+      }
+      let isSelfClosing = false;
+      if (context.source.length === 0) {
+        emitError(context, 9);
+      } else {
+        isSelfClosing = startsWith(context.source, "/>");
+        if (type === 1 /* End */ && isSelfClosing) {
+          emitError(context, 4);
+        }
+        advanceBy(context, isSelfClosing ? 2 : 1);
+      }
+      if (type === 1 /* End */) {
+        return;
+      }
+      let tagType = 0;
+      if (!context.inVPre) {
+        if (tag === "slot") {
+          tagType = 2;
+        } else if (tag === "template") {
+          if (props.some(
+            (p) => p.type === 7 && isSpecialTemplateDirective(p.name)
+          )) {
+            tagType = 3;
+          }
+        } else if (isComponent(tag, props, context)) {
+          tagType = 1;
+        }
+      }
+      return {
+        type: 1,
+        ns,
+        tag,
+        tagType,
+        props,
+        isSelfClosing,
+        children: [],
+        loc: getSelection(context, start),
+        codegenNode: void 0
+        // to be created during transform phase
+      };
+    }
+    function isComponent(tag, props, context) {
+      const options = context.options;
+      if (options.isCustomElement(tag)) {
+        return false;
+      }
+      if (tag === "component" || /^[A-Z]/.test(tag) || isCoreComponent(tag) || options.isBuiltInComponent && options.isBuiltInComponent(tag) || options.isNativeTag && !options.isNativeTag(tag)) {
+        return true;
+      }
+      for (let i = 0; i < props.length; i++) {
+        const p = props[i];
+        if (p.type === 6) {
+          if (p.name === "is" && p.value) {
+            if (p.value.content.startsWith("vue:")) {
+              return true;
+            }
+          }
+        } else {
+          if (p.name === "is") {
+            return true;
+          } else if (
+            // :is on plain element - only treat as component in compat mode
+            p.name === "bind" && isStaticArgOf(p.arg, "is") && false
+          ) {
+            return true;
+          }
+        }
+      }
+    }
+    function parseAttributes(context, type) {
+      const props = [];
+      const attributeNames = /* @__PURE__ */ new Set();
+      while (context.source.length > 0 && !startsWith(context.source, ">") && !startsWith(context.source, "/>")) {
+        if (startsWith(context.source, "/")) {
+          emitError(context, 22);
+          advanceBy(context, 1);
+          advanceSpaces(context);
+          continue;
+        }
+        if (type === 1 /* End */) {
+          emitError(context, 3);
+        }
+        const attr = parseAttribute(context, attributeNames);
+        if (attr.type === 6 && attr.value && attr.name === "class") {
+          attr.value.content = attr.value.content.replace(/\s+/g, " ").trim();
+        }
+        if (type === 0 /* Start */) {
+          props.push(attr);
+        }
+        if (/^[^\t\r\n\f />]/.test(context.source)) {
+          emitError(context, 15);
+        }
+        advanceSpaces(context);
+      }
+      return props;
+    }
+    function parseAttribute(context, nameSet) {
+      var _a;
+      const start = getCursor(context);
+      const match = /^[^\t\r\n\f />][^\t\r\n\f />=]*/.exec(context.source);
+      const name = match[0];
+      if (nameSet.has(name)) {
+        emitError(context, 2);
+      }
+      nameSet.add(name);
+      if (name[0] === "=") {
+        emitError(context, 19);
+      }
+      {
+        const pattern = /["'<]/g;
+        let m;
+        while (m = pattern.exec(name)) {
+          emitError(
+            context,
+            17,
+            m.index
+          );
+        }
+      }
+      advanceBy(context, name.length);
+      let value = void 0;
+      if (/^[\t\r\n\f ]*=/.test(context.source)) {
+        advanceSpaces(context);
+        advanceBy(context, 1);
+        advanceSpaces(context);
+        value = parseAttributeValue(context);
+        if (!value) {
+          emitError(context, 13);
+        }
+      }
+      const loc = getSelection(context, start);
+      if (!context.inVPre && /^(v-[A-Za-z0-9-]|:|\.|@|#)/.test(name)) {
+        const match2 = /(?:^v-([a-z0-9-]+))?(?:(?::|^\.|^@|^#)(\[[^\]]+\]|[^\.]+))?(.+)?$/i.exec(
+          name
+        );
+        let isPropShorthand = startsWith(name, ".");
+        let dirName = match2[1] || (isPropShorthand || startsWith(name, ":") ? "bind" : startsWith(name, "@") ? "on" : "slot");
+        let arg;
+        if (match2[2]) {
+          const isSlot = dirName === "slot";
+          const startOffset = name.lastIndexOf(
+            match2[2],
+            name.length - (((_a = match2[3]) == null ? void 0 : _a.length) || 0)
+          );
+          const loc2 = getSelection(
+            context,
+            getNewPosition(context, start, startOffset),
+            getNewPosition(
+              context,
+              start,
+              startOffset + match2[2].length + (isSlot && match2[3] || "").length
+            )
+          );
+          let content = match2[2];
+          let isStatic = true;
+          if (content.startsWith("[")) {
+            isStatic = false;
+            if (!content.endsWith("]")) {
+              emitError(
+                context,
+                27
+              );
+              content = content.slice(1);
+            } else {
+              content = content.slice(1, content.length - 1);
+            }
+          } else if (isSlot) {
+            content += match2[3] || "";
+          }
+          arg = {
+            type: 4,
+            content,
+            isStatic,
+            constType: isStatic ? 3 : 0,
+            loc: loc2
+          };
+        }
+        if (value && value.isQuoted) {
+          const valueLoc = value.loc;
+          valueLoc.start.offset++;
+          valueLoc.start.column++;
+          valueLoc.end = advancePositionWithClone(valueLoc.start, value.content);
+          valueLoc.source = valueLoc.source.slice(1, -1);
+        }
+        const modifiers = match2[3] ? match2[3].slice(1).split(".") : [];
+        if (isPropShorthand)
+          modifiers.push("prop");
+        return {
+          type: 7,
+          name: dirName,
+          exp: value && {
+            type: 4,
+            content: value.content,
+            isStatic: false,
+            // Treat as non-constant by default. This can be potentially set to
+            // other values by `transformExpression` to make it eligible for hoisting.
+            constType: 0,
+            loc: value.loc
+          },
+          arg,
+          modifiers,
+          loc
+        };
+      }
+      if (!context.inVPre && startsWith(name, "v-")) {
+        emitError(context, 26);
+      }
+      return {
+        type: 6,
+        name,
+        value: value && {
+          type: 2,
+          content: value.content,
+          loc: value.loc
+        },
+        loc
+      };
+    }
+    function parseAttributeValue(context) {
+      const start = getCursor(context);
+      let content;
+      const quote = context.source[0];
+      const isQuoted = quote === `"` || quote === `'`;
+      if (isQuoted) {
+        advanceBy(context, 1);
+        const endIndex = context.source.indexOf(quote);
+        if (endIndex === -1) {
+          content = parseTextData(
+            context,
+            context.source.length,
+            4
+          );
+        } else {
+          content = parseTextData(context, endIndex, 4);
+          advanceBy(context, 1);
+        }
+      } else {
+        const match = /^[^\t\r\n\f >]+/.exec(context.source);
+        if (!match) {
+          return void 0;
+        }
+        const unexpectedChars = /["'<=`]/g;
+        let m;
+        while (m = unexpectedChars.exec(match[0])) {
+          emitError(
+            context,
+            18,
+            m.index
+          );
+        }
+        content = parseTextData(context, match[0].length, 4);
+      }
+      return { content, isQuoted, loc: getSelection(context, start) };
+    }
+    function parseInterpolation(context, mode) {
+      const [open, close] = context.options.delimiters;
+      const closeIndex = context.source.indexOf(close, open.length);
+      if (closeIndex === -1) {
+        emitError(context, 25);
+        return void 0;
+      }
+      const start = getCursor(context);
+      advanceBy(context, open.length);
+      const innerStart = getCursor(context);
+      const innerEnd = getCursor(context);
+      const rawContentLength = closeIndex - open.length;
+      const rawContent = context.source.slice(0, rawContentLength);
+      const preTrimContent = parseTextData(context, rawContentLength, mode);
+      const content = preTrimContent.trim();
+      const startOffset = preTrimContent.indexOf(content);
+      if (startOffset > 0) {
+        advancePositionWithMutation(innerStart, rawContent, startOffset);
+      }
+      const endOffset = rawContentLength - (preTrimContent.length - content.length - startOffset);
+      advancePositionWithMutation(innerEnd, rawContent, endOffset);
+      advanceBy(context, close.length);
+      return {
+        type: 5,
+        content: {
+          type: 4,
+          isStatic: false,
+          // Set `isConstant` to false by default and will decide in transformExpression
+          constType: 0,
+          content,
+          loc: getSelection(context, innerStart, innerEnd)
+        },
+        loc: getSelection(context, start)
+      };
+    }
+    function parseText(context, mode) {
+      const endTokens = mode === 3 ? ["]]>"] : ["<", context.options.delimiters[0]];
+      let endIndex = context.source.length;
+      for (let i = 0; i < endTokens.length; i++) {
+        const index = context.source.indexOf(endTokens[i], 1);
+        if (index !== -1 && endIndex > index) {
+          endIndex = index;
+        }
+      }
+      const start = getCursor(context);
+      const content = parseTextData(context, endIndex, mode);
+      return {
+        type: 2,
+        content,
+        loc: getSelection(context, start)
+      };
+    }
+    function parseTextData(context, length, mode) {
+      const rawText = context.source.slice(0, length);
+      advanceBy(context, length);
+      if (mode === 2 || mode === 3 || !rawText.includes("&")) {
+        return rawText;
+      } else {
+        return context.options.decodeEntities(
+          rawText,
+          mode === 4
+        );
+      }
+    }
+    function getCursor(context) {
+      const { column, line, offset } = context;
+      return { column, line, offset };
+    }
+    function getSelection(context, start, end) {
+      end = end || getCursor(context);
+      return {
+        start,
+        end,
+        source: context.originalSource.slice(start.offset, end.offset)
+      };
+    }
+    function last(xs) {
+      return xs[xs.length - 1];
+    }
+    function startsWith(source, searchString) {
+      return source.startsWith(searchString);
+    }
+    function advanceBy(context, numberOfCharacters) {
+      const { source } = context;
+      advancePositionWithMutation(context, source, numberOfCharacters);
+      context.source = source.slice(numberOfCharacters);
+    }
+    function advanceSpaces(context) {
+      const match = /^[\t\r\n\f ]+/.exec(context.source);
+      if (match) {
+        advanceBy(context, match[0].length);
+      }
+    }
+    function getNewPosition(context, start, numberOfCharacters) {
+      return advancePositionWithClone(
+        start,
+        context.originalSource.slice(start.offset, numberOfCharacters),
+        numberOfCharacters
+      );
+    }
+    function emitError(context, code, offset, loc = getCursor(context)) {
+      if (offset) {
+        loc.offset += offset;
+        loc.column += offset;
+      }
+      context.options.onError(
+        createCompilerError(code, {
+          start: loc,
+          end: loc,
+          source: ""
+        })
+      );
+    }
+    function isEnd(context, mode, ancestors) {
+      const s = context.source;
+      switch (mode) {
+        case 0:
+          if (startsWith(s, "</")) {
+            for (let i = ancestors.length - 1; i >= 0; --i) {
+              if (startsWithEndTagOpen(s, ancestors[i].tag)) {
+                return true;
+              }
+            }
+          }
+          break;
+        case 1:
+        case 2: {
+          const parent = last(ancestors);
+          if (parent && startsWithEndTagOpen(s, parent.tag)) {
+            return true;
+          }
+          break;
+        }
+        case 3:
+          if (startsWith(s, "]]>")) {
+            return true;
+          }
+          break;
+      }
+      return !s;
+    }
+    function startsWithEndTagOpen(source, tag) {
+      return startsWith(source, "</") && source.slice(2, 2 + tag.length).toLowerCase() === tag.toLowerCase() && /[\t\r\n\f />]/.test(source[2 + tag.length] || ">");
+    }
+  
+    function hoistStatic(root, context) {
+      walk(
+        root,
+        context,
+        // Root node is unfortunately non-hoistable due to potential parent
+        // fallthrough attributes.
+        isSingleElementRoot(root, root.children[0])
+      );
+    }
+    function isSingleElementRoot(root, child) {
+      const { children } = root;
+      return children.length === 1 && child.type === 1 && !isSlotOutlet(child);
+    }
+    function walk(node, context, doNotHoistNode = false) {
+      const { children } = node;
+      const originalCount = children.length;
+      let hoistedCount = 0;
+      for (let i = 0; i < children.length; i++) {
+        const child = children[i];
+        if (child.type === 1 && child.tagType === 0) {
+          const constantType = doNotHoistNode ? 0 : getConstantType(child, context);
+          if (constantType > 0) {
+            if (constantType >= 2) {
+              child.codegenNode.patchFlag = -1 + (` /* HOISTED */` );
+              child.codegenNode = context.hoist(child.codegenNode);
+              hoistedCount++;
+              continue;
+            }
+          } else {
+            const codegenNode = child.codegenNode;
+            if (codegenNode.type === 13) {
+              const flag = getPatchFlag(codegenNode);
+              if ((!flag || flag === 512 || flag === 1) && getGeneratedPropsConstantType(child, context) >= 2) {
+                const props = getNodeProps(child);
+                if (props) {
+                  codegenNode.props = context.hoist(props);
+                }
+              }
+              if (codegenNode.dynamicProps) {
+                codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps);
+              }
+            }
+          }
+        }
+        if (child.type === 1) {
+          const isComponent = child.tagType === 1;
+          if (isComponent) {
+            context.scopes.vSlot++;
+          }
+          walk(child, context);
+          if (isComponent) {
+            context.scopes.vSlot--;
+          }
+        } else if (child.type === 11) {
+          walk(child, context, child.children.length === 1);
+        } else if (child.type === 9) {
+          for (let i2 = 0; i2 < child.branches.length; i2++) {
+            walk(
+              child.branches[i2],
+              context,
+              child.branches[i2].children.length === 1
+            );
+          }
+        }
+      }
+      if (hoistedCount && context.transformHoist) {
+        context.transformHoist(children, context, node);
+      }
+      if (hoistedCount && hoistedCount === originalCount && node.type === 1 && node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && isArray(node.codegenNode.children)) {
+        node.codegenNode.children = context.hoist(
+          createArrayExpression(node.codegenNode.children)
+        );
+      }
+    }
+    function getConstantType(node, context) {
+      const { constantCache } = context;
+      switch (node.type) {
+        case 1:
+          if (node.tagType !== 0) {
+            return 0;
+          }
+          const cached = constantCache.get(node);
+          if (cached !== void 0) {
+            return cached;
+          }
+          const codegenNode = node.codegenNode;
+          if (codegenNode.type !== 13) {
+            return 0;
+          }
+          if (codegenNode.isBlock && node.tag !== "svg" && node.tag !== "foreignObject") {
+            return 0;
+          }
+          const flag = getPatchFlag(codegenNode);
+          if (!flag) {
+            let returnType2 = 3;
+            const generatedPropsType = getGeneratedPropsConstantType(node, context);
+            if (generatedPropsType === 0) {
+              constantCache.set(node, 0);
+              return 0;
+            }
+            if (generatedPropsType < returnType2) {
+              returnType2 = generatedPropsType;
+            }
+            for (let i = 0; i < node.children.length; i++) {
+              const childType = getConstantType(node.children[i], context);
+              if (childType === 0) {
+                constantCache.set(node, 0);
+                return 0;
+              }
+              if (childType < returnType2) {
+                returnType2 = childType;
+              }
+            }
+            if (returnType2 > 1) {
+              for (let i = 0; i < node.props.length; i++) {
+                const p = node.props[i];
+                if (p.type === 7 && p.name === "bind" && p.exp) {
+                  const expType = getConstantType(p.exp, context);
+                  if (expType === 0) {
+                    constantCache.set(node, 0);
+                    return 0;
+                  }
+                  if (expType < returnType2) {
+                    returnType2 = expType;
+                  }
+                }
+              }
+            }
+            if (codegenNode.isBlock) {
+              for (let i = 0; i < node.props.length; i++) {
+                const p = node.props[i];
+                if (p.type === 7) {
+                  constantCache.set(node, 0);
+                  return 0;
+                }
+              }
+              context.removeHelper(OPEN_BLOCK);
+              context.removeHelper(
+                getVNodeBlockHelper(context.inSSR, codegenNode.isComponent)
+              );
+              codegenNode.isBlock = false;
+              context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent));
+            }
+            constantCache.set(node, returnType2);
+            return returnType2;
+          } else {
+            constantCache.set(node, 0);
+            return 0;
+          }
+        case 2:
+        case 3:
+          return 3;
+        case 9:
+        case 11:
+        case 10:
+          return 0;
+        case 5:
+        case 12:
+          return getConstantType(node.content, context);
+        case 4:
+          return node.constType;
+        case 8:
+          let returnType = 3;
+          for (let i = 0; i < node.children.length; i++) {
+            const child = node.children[i];
+            if (isString(child) || isSymbol(child)) {
+              continue;
+            }
+            const childType = getConstantType(child, context);
+            if (childType === 0) {
+              return 0;
+            } else if (childType < returnType) {
+              returnType = childType;
+            }
+          }
+          return returnType;
+        default:
+          return 0;
+      }
+    }
+    const allowHoistedHelperSet = /* @__PURE__ */ new Set([
+      NORMALIZE_CLASS,
+      NORMALIZE_STYLE,
+      NORMALIZE_PROPS,
+      GUARD_REACTIVE_PROPS
+    ]);
+    function getConstantTypeOfHelperCall(value, context) {
+      if (value.type === 14 && !isString(value.callee) && allowHoistedHelperSet.has(value.callee)) {
+        const arg = value.arguments[0];
+        if (arg.type === 4) {
+          return getConstantType(arg, context);
+        } else if (arg.type === 14) {
+          return getConstantTypeOfHelperCall(arg, context);
+        }
+      }
+      return 0;
+    }
+    function getGeneratedPropsConstantType(node, context) {
+      let returnType = 3;
+      const props = getNodeProps(node);
+      if (props && props.type === 15) {
+        const { properties } = props;
+        for (let i = 0; i < properties.length; i++) {
+          const { key, value } = properties[i];
+          const keyType = getConstantType(key, context);
+          if (keyType === 0) {
+            return keyType;
+          }
+          if (keyType < returnType) {
+            returnType = keyType;
+          }
+          let valueType;
+          if (value.type === 4) {
+            valueType = getConstantType(value, context);
+          } else if (value.type === 14) {
+            valueType = getConstantTypeOfHelperCall(value, context);
+          } else {
+            valueType = 0;
+          }
+          if (valueType === 0) {
+            return valueType;
+          }
+          if (valueType < returnType) {
+            returnType = valueType;
+          }
+        }
+      }
+      return returnType;
+    }
+    function getNodeProps(node) {
+      const codegenNode = node.codegenNode;
+      if (codegenNode.type === 13) {
+        return codegenNode.props;
+      }
+    }
+    function getPatchFlag(node) {
+      const flag = node.patchFlag;
+      return flag ? parseInt(flag, 10) : void 0;
+    }
+  
+    function createTransformContext(root, {
+      filename = "",
+      prefixIdentifiers = false,
+      hoistStatic: hoistStatic2 = false,
+      cacheHandlers = false,
+      nodeTransforms = [],
+      directiveTransforms = {},
+      transformHoist = null,
+      isBuiltInComponent = NOOP,
+      isCustomElement = NOOP,
+      expressionPlugins = [],
+      scopeId = null,
+      slotted = true,
+      ssr = false,
+      inSSR = false,
+      ssrCssVars = ``,
+      bindingMetadata = EMPTY_OBJ,
+      inline = false,
+      isTS = false,
+      onError = defaultOnError,
+      onWarn = defaultOnWarn,
+      compatConfig
+    }) {
+      const nameMatch = filename.replace(/\?.*$/, "").match(/([^/\\]+)\.\w+$/);
+      const context = {
+        // options
+        selfName: nameMatch && capitalize(camelize(nameMatch[1])),
+        prefixIdentifiers,
+        hoistStatic: hoistStatic2,
+        cacheHandlers,
+        nodeTransforms,
+        directiveTransforms,
+        transformHoist,
+        isBuiltInComponent,
+        isCustomElement,
+        expressionPlugins,
+        scopeId,
+        slotted,
+        ssr,
+        inSSR,
+        ssrCssVars,
+        bindingMetadata,
+        inline,
+        isTS,
+        onError,
+        onWarn,
+        compatConfig,
+        // state
+        root,
+        helpers: /* @__PURE__ */ new Map(),
+        components: /* @__PURE__ */ new Set(),
+        directives: /* @__PURE__ */ new Set(),
+        hoists: [],
+        imports: [],
+        constantCache: /* @__PURE__ */ new Map(),
+        temps: 0,
+        cached: 0,
+        identifiers: /* @__PURE__ */ Object.create(null),
+        scopes: {
+          vFor: 0,
+          vSlot: 0,
+          vPre: 0,
+          vOnce: 0
+        },
+        parent: null,
+        currentNode: root,
+        childIndex: 0,
+        inVOnce: false,
+        // methods
+        helper(name) {
+          const count = context.helpers.get(name) || 0;
+          context.helpers.set(name, count + 1);
+          return name;
+        },
+        removeHelper(name) {
+          const count = context.helpers.get(name);
+          if (count) {
+            const currentCount = count - 1;
+            if (!currentCount) {
+              context.helpers.delete(name);
+            } else {
+              context.helpers.set(name, currentCount);
+            }
+          }
+        },
+        helperString(name) {
+          return `_${helperNameMap[context.helper(name)]}`;
+        },
+        replaceNode(node) {
+          {
+            if (!context.currentNode) {
+              throw new Error(`Node being replaced is already removed.`);
+            }
+            if (!context.parent) {
+              throw new Error(`Cannot replace root node.`);
+            }
+          }
+          context.parent.children[context.childIndex] = context.currentNode = node;
+        },
+        removeNode(node) {
+          if (!context.parent) {
+            throw new Error(`Cannot remove root node.`);
+          }
+          const list = context.parent.children;
+          const removalIndex = node ? list.indexOf(node) : context.currentNode ? context.childIndex : -1;
+          if (removalIndex < 0) {
+            throw new Error(`node being removed is not a child of current parent`);
+          }
+          if (!node || node === context.currentNode) {
+            context.currentNode = null;
+            context.onNodeRemoved();
+          } else {
+            if (context.childIndex > removalIndex) {
+              context.childIndex--;
+              context.onNodeRemoved();
+            }
+          }
+          context.parent.children.splice(removalIndex, 1);
+        },
+        onNodeRemoved: () => {
+        },
+        addIdentifiers(exp) {
+        },
+        removeIdentifiers(exp) {
+        },
+        hoist(exp) {
+          if (isString(exp))
+            exp = createSimpleExpression(exp);
+          context.hoists.push(exp);
+          const identifier = createSimpleExpression(
+            `_hoisted_${context.hoists.length}`,
+            false,
+            exp.loc,
+            2
+          );
+          identifier.hoisted = exp;
+          return identifier;
+        },
+        cache(exp, isVNode = false) {
+          return createCacheExpression(context.cached++, exp, isVNode);
+        }
+      };
+      return context;
+    }
+    function transform(root, options) {
+      const context = createTransformContext(root, options);
+      traverseNode(root, context);
+      if (options.hoistStatic) {
+        hoistStatic(root, context);
+      }
+      if (!options.ssr) {
+        createRootCodegen(root, context);
+      }
+      root.helpers = /* @__PURE__ */ new Set([...context.helpers.keys()]);
+      root.components = [...context.components];
+      root.directives = [...context.directives];
+      root.imports = context.imports;
+      root.hoists = context.hoists;
+      root.temps = context.temps;
+      root.cached = context.cached;
+    }
+    function createRootCodegen(root, context) {
+      const { helper } = context;
+      const { children } = root;
+      if (children.length === 1) {
+        const child = children[0];
+        if (isSingleElementRoot(root, child) && child.codegenNode) {
+          const codegenNode = child.codegenNode;
+          if (codegenNode.type === 13) {
+            convertToBlock(codegenNode, context);
+          }
+          root.codegenNode = codegenNode;
+        } else {
+          root.codegenNode = child;
+        }
+      } else if (children.length > 1) {
+        let patchFlag = 64;
+        let patchFlagText = PatchFlagNames[64];
+        if (children.filter((c) => c.type !== 3).length === 1) {
+          patchFlag |= 2048;
+          patchFlagText += `, ${PatchFlagNames[2048]}`;
+        }
+        root.codegenNode = createVNodeCall(
+          context,
+          helper(FRAGMENT),
+          void 0,
+          root.children,
+          patchFlag + (` /* ${patchFlagText} */` ),
+          void 0,
+          void 0,
+          true,
+          void 0,
+          false
+          /* isComponent */
+        );
+      } else ;
+    }
+    function traverseChildren(parent, context) {
+      let i = 0;
+      const nodeRemoved = () => {
+        i--;
+      };
+      for (; i < parent.children.length; i++) {
+        const child = parent.children[i];
+        if (isString(child))
+          continue;
+        context.parent = parent;
+        context.childIndex = i;
+        context.onNodeRemoved = nodeRemoved;
+        traverseNode(child, context);
+      }
+    }
+    function traverseNode(node, context) {
+      context.currentNode = node;
+      const { nodeTransforms } = context;
+      const exitFns = [];
+      for (let i2 = 0; i2 < nodeTransforms.length; i2++) {
+        const onExit = nodeTransforms[i2](node, context);
+        if (onExit) {
+          if (isArray(onExit)) {
+            exitFns.push(...onExit);
+          } else {
+            exitFns.push(onExit);
+          }
+        }
+        if (!context.currentNode) {
+          return;
+        } else {
+          node = context.currentNode;
+        }
+      }
+      switch (node.type) {
+        case 3:
+          if (!context.ssr) {
+            context.helper(CREATE_COMMENT);
+          }
+          break;
+        case 5:
+          if (!context.ssr) {
+            context.helper(TO_DISPLAY_STRING);
+          }
+          break;
+        case 9:
+          for (let i2 = 0; i2 < node.branches.length; i2++) {
+            traverseNode(node.branches[i2], context);
+          }
+          break;
+        case 10:
+        case 11:
+        case 1:
+        case 0:
+          traverseChildren(node, context);
+          break;
+      }
+      context.currentNode = node;
+      let i = exitFns.length;
+      while (i--) {
+        exitFns[i]();
+      }
+    }
+    function createStructuralDirectiveTransform(name, fn) {
+      const matches = isString(name) ? (n) => n === name : (n) => name.test(n);
+      return (node, context) => {
+        if (node.type === 1) {
+          const { props } = node;
+          if (node.tagType === 3 && props.some(isVSlot)) {
+            return;
+          }
+          const exitFns = [];
+          for (let i = 0; i < props.length; i++) {
+            const prop = props[i];
+            if (prop.type === 7 && matches(prop.name)) {
+              props.splice(i, 1);
+              i--;
+              const onExit = fn(node, prop, context);
+              if (onExit)
+                exitFns.push(onExit);
+            }
+          }
+          return exitFns;
+        }
+      };
+    }
+  
+    const PURE_ANNOTATION = `/*#__PURE__*/`;
+    const aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`;
+    function createCodegenContext(ast, {
+      mode = "function",
+      prefixIdentifiers = mode === "module",
+      sourceMap = false,
+      filename = `template.vue.html`,
+      scopeId = null,
+      optimizeImports = false,
+      runtimeGlobalName = `Vue`,
+      runtimeModuleName = `vue`,
+      ssrRuntimeModuleName = "vue/server-renderer",
+      ssr = false,
+      isTS = false,
+      inSSR = false
+    }) {
+      const context = {
+        mode,
+        prefixIdentifiers,
+        sourceMap,
+        filename,
+        scopeId,
+        optimizeImports,
+        runtimeGlobalName,
+        runtimeModuleName,
+        ssrRuntimeModuleName,
+        ssr,
+        isTS,
+        inSSR,
+        source: ast.loc.source,
+        code: ``,
+        column: 1,
+        line: 1,
+        offset: 0,
+        indentLevel: 0,
+        pure: false,
+        map: void 0,
+        helper(key) {
+          return `_${helperNameMap[key]}`;
+        },
+        push(code, node) {
+          context.code += code;
+        },
+        indent() {
+          newline(++context.indentLevel);
+        },
+        deindent(withoutNewLine = false) {
+          if (withoutNewLine) {
+            --context.indentLevel;
+          } else {
+            newline(--context.indentLevel);
+          }
+        },
+        newline() {
+          newline(context.indentLevel);
+        }
+      };
+      function newline(n) {
+        context.push("\n" + `  `.repeat(n));
+      }
+      return context;
+    }
+    function generate(ast, options = {}) {
+      const context = createCodegenContext(ast, options);
+      if (options.onContextCreated)
+        options.onContextCreated(context);
+      const {
+        mode,
+        push,
+        prefixIdentifiers,
+        indent,
+        deindent,
+        newline,
+        scopeId,
+        ssr
+      } = context;
+      const helpers = Array.from(ast.helpers);
+      const hasHelpers = helpers.length > 0;
+      const useWithBlock = !prefixIdentifiers && mode !== "module";
+      const isSetupInlined = false;
+      const preambleContext = isSetupInlined ? createCodegenContext(ast, options) : context;
+      {
+        genFunctionPreamble(ast, preambleContext);
+      }
+      const functionName = ssr ? `ssrRender` : `render`;
+      const args = ssr ? ["_ctx", "_push", "_parent", "_attrs"] : ["_ctx", "_cache"];
+      const signature = args.join(", ");
+      {
+        push(`function ${functionName}(${signature}) {`);
+      }
+      indent();
+      if (useWithBlock) {
+        push(`with (_ctx) {`);
+        indent();
+        if (hasHelpers) {
+          push(`const { ${helpers.map(aliasHelper).join(", ")} } = _Vue`);
+          push(`
+  `);
+          newline();
+        }
+      }
+      if (ast.components.length) {
+        genAssets(ast.components, "component", context);
+        if (ast.directives.length || ast.temps > 0) {
+          newline();
+        }
+      }
+      if (ast.directives.length) {
+        genAssets(ast.directives, "directive", context);
+        if (ast.temps > 0) {
+          newline();
+        }
+      }
+      if (ast.temps > 0) {
+        push(`let `);
+        for (let i = 0; i < ast.temps; i++) {
+          push(`${i > 0 ? `, ` : ``}_temp${i}`);
+        }
+      }
+      if (ast.components.length || ast.directives.length || ast.temps) {
+        push(`
+  `);
+        newline();
+      }
+      if (!ssr) {
+        push(`return `);
+      }
+      if (ast.codegenNode) {
+        genNode(ast.codegenNode, context);
+      } else {
+        push(`null`);
+      }
+      if (useWithBlock) {
+        deindent();
+        push(`}`);
+      }
+      deindent();
+      push(`}`);
+      return {
+        ast,
+        code: context.code,
+        preamble: isSetupInlined ? preambleContext.code : ``,
+        // SourceMapGenerator does have toJSON() method but it's not in the types
+        map: context.map ? context.map.toJSON() : void 0
+      };
+    }
+    function genFunctionPreamble(ast, context) {
+      const {
+        ssr,
+        prefixIdentifiers,
+        push,
+        newline,
+        runtimeModuleName,
+        runtimeGlobalName,
+        ssrRuntimeModuleName
+      } = context;
+      const VueBinding = runtimeGlobalName;
+      const helpers = Array.from(ast.helpers);
+      if (helpers.length > 0) {
+        {
+          push(`const _Vue = ${VueBinding}
+  `);
+          if (ast.hoists.length) {
+            const staticHelpers = [
+              CREATE_VNODE,
+              CREATE_ELEMENT_VNODE,
+              CREATE_COMMENT,
+              CREATE_TEXT,
+              CREATE_STATIC
+            ].filter((helper) => helpers.includes(helper)).map(aliasHelper).join(", ");
+            push(`const { ${staticHelpers} } = _Vue
+  `);
+          }
+        }
+      }
+      genHoists(ast.hoists, context);
+      newline();
+      push(`return `);
+    }
+    function genAssets(assets, type, { helper, push, newline, isTS }) {
+      const resolver = helper(
+        type === "component" ? RESOLVE_COMPONENT : RESOLVE_DIRECTIVE
+      );
+      for (let i = 0; i < assets.length; i++) {
+        let id = assets[i];
+        const maybeSelfReference = id.endsWith("__self");
+        if (maybeSelfReference) {
+          id = id.slice(0, -6);
+        }
+        push(
+          `const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}`
+        );
+        if (i < assets.length - 1) {
+          newline();
+        }
+      }
+    }
+    function genHoists(hoists, context) {
+      if (!hoists.length) {
+        return;
+      }
+      context.pure = true;
+      const { push, newline, helper, scopeId, mode } = context;
+      newline();
+      for (let i = 0; i < hoists.length; i++) {
+        const exp = hoists[i];
+        if (exp) {
+          push(
+            `const _hoisted_${i + 1} = ${``}`
+          );
+          genNode(exp, context);
+          newline();
+        }
+      }
+      context.pure = false;
+    }
+    function isText(n) {
+      return isString(n) || n.type === 4 || n.type === 2 || n.type === 5 || n.type === 8;
+    }
+    function genNodeListAsArray(nodes, context) {
+      const multilines = nodes.length > 3 || nodes.some((n) => isArray(n) || !isText(n));
+      context.push(`[`);
+      multilines && context.indent();
+      genNodeList(nodes, context, multilines);
+      multilines && context.deindent();
+      context.push(`]`);
+    }
+    function genNodeList(nodes, context, multilines = false, comma = true) {
+      const { push, newline } = context;
+      for (let i = 0; i < nodes.length; i++) {
+        const node = nodes[i];
+        if (isString(node)) {
+          push(node);
+        } else if (isArray(node)) {
+          genNodeListAsArray(node, context);
+        } else {
+          genNode(node, context);
+        }
+        if (i < nodes.length - 1) {
+          if (multilines) {
+            comma && push(",");
+            newline();
+          } else {
+            comma && push(", ");
+          }
+        }
+      }
+    }
+    function genNode(node, context) {
+      if (isString(node)) {
+        context.push(node);
+        return;
+      }
+      if (isSymbol(node)) {
+        context.push(context.helper(node));
+        return;
+      }
+      switch (node.type) {
+        case 1:
+        case 9:
+        case 11:
+          assert(
+            node.codegenNode != null,
+            `Codegen node is missing for element/if/for node. Apply appropriate transforms first.`
+          );
+          genNode(node.codegenNode, context);
+          break;
+        case 2:
+          genText(node, context);
+          break;
+        case 4:
+          genExpression(node, context);
+          break;
+        case 5:
+          genInterpolation(node, context);
+          break;
+        case 12:
+          genNode(node.codegenNode, context);
+          break;
+        case 8:
+          genCompoundExpression(node, context);
+          break;
+        case 3:
+          genComment(node, context);
+          break;
+        case 13:
+          genVNodeCall(node, context);
+          break;
+        case 14:
+          genCallExpression(node, context);
+          break;
+        case 15:
+          genObjectExpression(node, context);
+          break;
+        case 17:
+          genArrayExpression(node, context);
+          break;
+        case 18:
+          genFunctionExpression(node, context);
+          break;
+        case 19:
+          genConditionalExpression(node, context);
+          break;
+        case 20:
+          genCacheExpression(node, context);
+          break;
+        case 21:
+          genNodeList(node.body, context, true, false);
+          break;
+        case 22:
+          break;
+        case 23:
+          break;
+        case 24:
+          break;
+        case 25:
+          break;
+        case 26:
+          break;
+        case 10:
+          break;
+        default:
+          {
+            assert(false, `unhandled codegen node type: ${node.type}`);
+            const exhaustiveCheck = node;
+            return exhaustiveCheck;
+          }
+      }
+    }
+    function genText(node, context) {
+      context.push(JSON.stringify(node.content), node);
+    }
+    function genExpression(node, context) {
+      const { content, isStatic } = node;
+      context.push(isStatic ? JSON.stringify(content) : content, node);
+    }
+    function genInterpolation(node, context) {
+      const { push, helper, pure } = context;
+      if (pure)
+        push(PURE_ANNOTATION);
+      push(`${helper(TO_DISPLAY_STRING)}(`);
+      genNode(node.content, context);
+      push(`)`);
+    }
+    function genCompoundExpression(node, context) {
+      for (let i = 0; i < node.children.length; i++) {
+        const child = node.children[i];
+        if (isString(child)) {
+          context.push(child);
+        } else {
+          genNode(child, context);
+        }
+      }
+    }
+    function genExpressionAsPropertyKey(node, context) {
+      const { push } = context;
+      if (node.type === 8) {
+        push(`[`);
+        genCompoundExpression(node, context);
+        push(`]`);
+      } else if (node.isStatic) {
+        const text = isSimpleIdentifier(node.content) ? node.content : JSON.stringify(node.content);
+        push(text, node);
+      } else {
+        push(`[${node.content}]`, node);
+      }
+    }
+    function genComment(node, context) {
+      const { push, helper, pure } = context;
+      if (pure) {
+        push(PURE_ANNOTATION);
+      }
+      push(`${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`, node);
+    }
+    function genVNodeCall(node, context) {
+      const { push, helper, pure } = context;
+      const {
+        tag,
+        props,
+        children,
+        patchFlag,
+        dynamicProps,
+        directives,
+        isBlock,
+        disableTracking,
+        isComponent
+      } = node;
+      if (directives) {
+        push(helper(WITH_DIRECTIVES) + `(`);
+      }
+      if (isBlock) {
+        push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `);
+      }
+      if (pure) {
+        push(PURE_ANNOTATION);
+      }
+      const callHelper = isBlock ? getVNodeBlockHelper(context.inSSR, isComponent) : getVNodeHelper(context.inSSR, isComponent);
+      push(helper(callHelper) + `(`, node);
+      genNodeList(
+        genNullableArgs([tag, props, children, patchFlag, dynamicProps]),
+        context
+      );
+      push(`)`);
+      if (isBlock) {
+        push(`)`);
+      }
+      if (directives) {
+        push(`, `);
+        genNode(directives, context);
+        push(`)`);
+      }
+    }
+    function genNullableArgs(args) {
+      let i = args.length;
+      while (i--) {
+        if (args[i] != null)
+          break;
+      }
+      return args.slice(0, i + 1).map((arg) => arg || `null`);
+    }
+    function genCallExpression(node, context) {
+      const { push, helper, pure } = context;
+      const callee = isString(node.callee) ? node.callee : helper(node.callee);
+      if (pure) {
+        push(PURE_ANNOTATION);
+      }
+      push(callee + `(`, node);
+      genNodeList(node.arguments, context);
+      push(`)`);
+    }
+    function genObjectExpression(node, context) {
+      const { push, indent, deindent, newline } = context;
+      const { properties } = node;
+      if (!properties.length) {
+        push(`{}`, node);
+        return;
+      }
+      const multilines = properties.length > 1 || properties.some((p) => p.value.type !== 4);
+      push(multilines ? `{` : `{ `);
+      multilines && indent();
+      for (let i = 0; i < properties.length; i++) {
+        const { key, value } = properties[i];
+        genExpressionAsPropertyKey(key, context);
+        push(`: `);
+        genNode(value, context);
+        if (i < properties.length - 1) {
+          push(`,`);
+          newline();
+        }
+      }
+      multilines && deindent();
+      push(multilines ? `}` : ` }`);
+    }
+    function genArrayExpression(node, context) {
+      genNodeListAsArray(node.elements, context);
+    }
+    function genFunctionExpression(node, context) {
+      const { push, indent, deindent } = context;
+      const { params, returns, body, newline, isSlot } = node;
+      if (isSlot) {
+        push(`_${helperNameMap[WITH_CTX]}(`);
+      }
+      push(`(`, node);
+      if (isArray(params)) {
+        genNodeList(params, context);
+      } else if (params) {
+        genNode(params, context);
+      }
+      push(`) => `);
+      if (newline || body) {
+        push(`{`);
+        indent();
+      }
+      if (returns) {
+        if (newline) {
+          push(`return `);
+        }
+        if (isArray(returns)) {
+          genNodeListAsArray(returns, context);
+        } else {
+          genNode(returns, context);
+        }
+      } else if (body) {
+        genNode(body, context);
+      }
+      if (newline || body) {
+        deindent();
+        push(`}`);
+      }
+      if (isSlot) {
+        push(`)`);
+      }
+    }
+    function genConditionalExpression(node, context) {
+      const { test, consequent, alternate, newline: needNewline } = node;
+      const { push, indent, deindent, newline } = context;
+      if (test.type === 4) {
+        const needsParens = !isSimpleIdentifier(test.content);
+        needsParens && push(`(`);
+        genExpression(test, context);
+        needsParens && push(`)`);
+      } else {
+        push(`(`);
+        genNode(test, context);
+        push(`)`);
+      }
+      needNewline && indent();
+      context.indentLevel++;
+      needNewline || push(` `);
+      push(`? `);
+      genNode(consequent, context);
+      context.indentLevel--;
+      needNewline && newline();
+      needNewline || push(` `);
+      push(`: `);
+      const isNested = alternate.type === 19;
+      if (!isNested) {
+        context.indentLevel++;
+      }
+      genNode(alternate, context);
+      if (!isNested) {
+        context.indentLevel--;
+      }
+      needNewline && deindent(
+        true
+        /* without newline */
+      );
+    }
+    function genCacheExpression(node, context) {
+      const { push, helper, indent, deindent, newline } = context;
+      push(`_cache[${node.index}] || (`);
+      if (node.isVNode) {
+        indent();
+        push(`${helper(SET_BLOCK_TRACKING)}(-1),`);
+        newline();
+      }
+      push(`_cache[${node.index}] = `);
+      genNode(node.value, context);
+      if (node.isVNode) {
+        push(`,`);
+        newline();
+        push(`${helper(SET_BLOCK_TRACKING)}(1),`);
+        newline();
+        push(`_cache[${node.index}]`);
+        deindent();
+      }
+      push(`)`);
+    }
+  
+    const prohibitedKeywordRE = new RegExp(
+      "\\b" + "arguments,await,break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,let,new,return,super,switch,throw,try,var,void,while,with,yield".split(",").join("\\b|\\b") + "\\b"
+    );
+    const stripStringRE = /'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g;
+    function validateBrowserExpression(node, context, asParams = false, asRawStatements = false) {
+      const exp = node.content;
+      if (!exp.trim()) {
+        return;
+      }
+      try {
+        new Function(
+          asRawStatements ? ` ${exp} ` : `return ${asParams ? `(${exp}) => {}` : `(${exp})`}`
+        );
+      } catch (e) {
+        let message = e.message;
+        const keywordMatch = exp.replace(stripStringRE, "").match(prohibitedKeywordRE);
+        if (keywordMatch) {
+          message = `avoid using JavaScript keyword as property name: "${keywordMatch[0]}"`;
+        }
+        context.onError(
+          createCompilerError(
+            45,
+            node.loc,
+            void 0,
+            message
+          )
+        );
+      }
+    }
+  
+    const transformExpression = (node, context) => {
+      if (node.type === 5) {
+        node.content = processExpression(
+          node.content,
+          context
+        );
+      } else if (node.type === 1) {
+        for (let i = 0; i < node.props.length; i++) {
+          const dir = node.props[i];
+          if (dir.type === 7 && dir.name !== "for") {
+            const exp = dir.exp;
+            const arg = dir.arg;
+            if (exp && exp.type === 4 && !(dir.name === "on" && arg)) {
+              dir.exp = processExpression(
+                exp,
+                context,
+                // slot args must be processed as function params
+                dir.name === "slot"
+              );
+            }
+            if (arg && arg.type === 4 && !arg.isStatic) {
+              dir.arg = processExpression(arg, context);
+            }
+          }
+        }
+      }
+    };
+    function processExpression(node, context, asParams = false, asRawStatements = false, localVars = Object.create(context.identifiers)) {
+      {
+        {
+          validateBrowserExpression(node, context, asParams, asRawStatements);
+        }
+        return node;
+      }
+    }
+  
+    const transformIf = createStructuralDirectiveTransform(
+      /^(if|else|else-if)$/,
+      (node, dir, context) => {
+        return processIf(node, dir, context, (ifNode, branch, isRoot) => {
+          const siblings = context.parent.children;
+          let i = siblings.indexOf(ifNode);
+          let key = 0;
+          while (i-- >= 0) {
+            const sibling = siblings[i];
+            if (sibling && sibling.type === 9) {
+              key += sibling.branches.length;
+            }
+          }
+          return () => {
+            if (isRoot) {
+              ifNode.codegenNode = createCodegenNodeForBranch(
+                branch,
+                key,
+                context
+              );
+            } else {
+              const parentCondition = getParentCondition(ifNode.codegenNode);
+              parentCondition.alternate = createCodegenNodeForBranch(
+                branch,
+                key + ifNode.branches.length - 1,
+                context
+              );
+            }
+          };
+        });
+      }
+    );
+    function processIf(node, dir, context, processCodegen) {
+      if (dir.name !== "else" && (!dir.exp || !dir.exp.content.trim())) {
+        const loc = dir.exp ? dir.exp.loc : node.loc;
+        context.onError(
+          createCompilerError(28, dir.loc)
+        );
+        dir.exp = createSimpleExpression(`true`, false, loc);
+      }
+      if (dir.exp) {
+        validateBrowserExpression(dir.exp, context);
+      }
+      if (dir.name === "if") {
+        const branch = createIfBranch(node, dir);
+        const ifNode = {
+          type: 9,
+          loc: node.loc,
+          branches: [branch]
+        };
+        context.replaceNode(ifNode);
+        if (processCodegen) {
+          return processCodegen(ifNode, branch, true);
+        }
+      } else {
+        const siblings = context.parent.children;
+        const comments = [];
+        let i = siblings.indexOf(node);
+        while (i-- >= -1) {
+          const sibling = siblings[i];
+          if (sibling && sibling.type === 3) {
+            context.removeNode(sibling);
+            comments.unshift(sibling);
+            continue;
+          }
+          if (sibling && sibling.type === 2 && !sibling.content.trim().length) {
+            context.removeNode(sibling);
+            continue;
+          }
+          if (sibling && sibling.type === 9) {
+            if (dir.name === "else-if" && sibling.branches[sibling.branches.length - 1].condition === void 0) {
+              context.onError(
+                createCompilerError(30, node.loc)
+              );
+            }
+            context.removeNode();
+            const branch = createIfBranch(node, dir);
+            if (comments.length && // #3619 ignore comments if the v-if is direct child of <transition>
+            !(context.parent && context.parent.type === 1 && isBuiltInType(context.parent.tag, "transition"))) {
+              branch.children = [...comments, ...branch.children];
+            }
+            {
+              const key = branch.userKey;
+              if (key) {
+                sibling.branches.forEach(({ userKey }) => {
+                  if (isSameKey(userKey, key)) {
+                    context.onError(
+                      createCompilerError(
+                        29,
+                        branch.userKey.loc
+                      )
+                    );
+                  }
+                });
+              }
+            }
+            sibling.branches.push(branch);
+            const onExit = processCodegen && processCodegen(sibling, branch, false);
+            traverseNode(branch, context);
+            if (onExit)
+              onExit();
+            context.currentNode = null;
+          } else {
+            context.onError(
+              createCompilerError(30, node.loc)
+            );
+          }
+          break;
+        }
+      }
+    }
+    function createIfBranch(node, dir) {
+      const isTemplateIf = node.tagType === 3;
+      return {
+        type: 10,
+        loc: node.loc,
+        condition: dir.name === "else" ? void 0 : dir.exp,
+        children: isTemplateIf && !findDir(node, "for") ? node.children : [node],
+        userKey: findProp(node, `key`),
+        isTemplateIf
+      };
+    }
+    function createCodegenNodeForBranch(branch, keyIndex, context) {
+      if (branch.condition) {
+        return createConditionalExpression(
+          branch.condition,
+          createChildrenCodegenNode(branch, keyIndex, context),
+          // make sure to pass in asBlock: true so that the comment node call
+          // closes the current block.
+          createCallExpression(context.helper(CREATE_COMMENT), [
+            '"v-if"' ,
+            "true"
+          ])
+        );
+      } else {
+        return createChildrenCodegenNode(branch, keyIndex, context);
+      }
+    }
+    function createChildrenCodegenNode(branch, keyIndex, context) {
+      const { helper } = context;
+      const keyProperty = createObjectProperty(
+        `key`,
+        createSimpleExpression(
+          `${keyIndex}`,
+          false,
+          locStub,
+          2
+        )
+      );
+      const { children } = branch;
+      const firstChild = children[0];
+      const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1;
+      if (needFragmentWrapper) {
+        if (children.length === 1 && firstChild.type === 11) {
+          const vnodeCall = firstChild.codegenNode;
+          injectProp(vnodeCall, keyProperty, context);
+          return vnodeCall;
+        } else {
+          let patchFlag = 64;
+          let patchFlagText = PatchFlagNames[64];
+          if (!branch.isTemplateIf && children.filter((c) => c.type !== 3).length === 1) {
+            patchFlag |= 2048;
+            patchFlagText += `, ${PatchFlagNames[2048]}`;
+          }
+          return createVNodeCall(
+            context,
+            helper(FRAGMENT),
+            createObjectExpression([keyProperty]),
+            children,
+            patchFlag + (` /* ${patchFlagText} */` ),
+            void 0,
+            void 0,
+            true,
+            false,
+            false,
+            branch.loc
+          );
+        }
+      } else {
+        const ret = firstChild.codegenNode;
+        const vnodeCall = getMemoedVNodeCall(ret);
+        if (vnodeCall.type === 13) {
+          convertToBlock(vnodeCall, context);
+        }
+        injectProp(vnodeCall, keyProperty, context);
+        return ret;
+      }
+    }
+    function isSameKey(a, b) {
+      if (!a || a.type !== b.type) {
+        return false;
+      }
+      if (a.type === 6) {
+        if (a.value.content !== b.value.content) {
+          return false;
+        }
+      } else {
+        const exp = a.exp;
+        const branchExp = b.exp;
+        if (exp.type !== branchExp.type) {
+          return false;
+        }
+        if (exp.type !== 4 || exp.isStatic !== branchExp.isStatic || exp.content !== branchExp.content) {
+          return false;
+        }
+      }
+      return true;
+    }
+    function getParentCondition(node) {
+      while (true) {
+        if (node.type === 19) {
+          if (node.alternate.type === 19) {
+            node = node.alternate;
+          } else {
+            return node;
+          }
+        } else if (node.type === 20) {
+          node = node.value;
+        }
+      }
+    }
+  
+    const transformFor = createStructuralDirectiveTransform(
+      "for",
+      (node, dir, context) => {
+        const { helper, removeHelper } = context;
+        return processFor(node, dir, context, (forNode) => {
+          const renderExp = createCallExpression(helper(RENDER_LIST), [
+            forNode.source
+          ]);
+          const isTemplate = isTemplateNode(node);
+          const memo = findDir(node, "memo");
+          const keyProp = findProp(node, `key`);
+          const keyExp = keyProp && (keyProp.type === 6 ? createSimpleExpression(keyProp.value.content, true) : keyProp.exp);
+          const keyProperty = keyProp ? createObjectProperty(`key`, keyExp) : null;
+          const isStableFragment = forNode.source.type === 4 && forNode.source.constType > 0;
+          const fragmentFlag = isStableFragment ? 64 : keyProp ? 128 : 256;
+          forNode.codegenNode = createVNodeCall(
+            context,
+            helper(FRAGMENT),
+            void 0,
+            renderExp,
+            fragmentFlag + (` /* ${PatchFlagNames[fragmentFlag]} */` ),
+            void 0,
+            void 0,
+            true,
+            !isStableFragment,
+            false,
+            node.loc
+          );
+          return () => {
+            let childBlock;
+            const { children } = forNode;
+            if (isTemplate) {
+              node.children.some((c) => {
+                if (c.type === 1) {
+                  const key = findProp(c, "key");
+                  if (key) {
+                    context.onError(
+                      createCompilerError(
+                        33,
+                        key.loc
+                      )
+                    );
+                    return true;
+                  }
+                }
+              });
+            }
+            const needFragmentWrapper = children.length !== 1 || children[0].type !== 1;
+            const slotOutlet = isSlotOutlet(node) ? node : isTemplate && node.children.length === 1 && isSlotOutlet(node.children[0]) ? node.children[0] : null;
+            if (slotOutlet) {
+              childBlock = slotOutlet.codegenNode;
+              if (isTemplate && keyProperty) {
+                injectProp(childBlock, keyProperty, context);
+              }
+            } else if (needFragmentWrapper) {
+              childBlock = createVNodeCall(
+                context,
+                helper(FRAGMENT),
+                keyProperty ? createObjectExpression([keyProperty]) : void 0,
+                node.children,
+                64 + (` /* ${PatchFlagNames[64]} */` ),
+                void 0,
+                void 0,
+                true,
+                void 0,
+                false
+                /* isComponent */
+              );
+            } else {
+              childBlock = children[0].codegenNode;
+              if (isTemplate && keyProperty) {
+                injectProp(childBlock, keyProperty, context);
+              }
+              if (childBlock.isBlock !== !isStableFragment) {
+                if (childBlock.isBlock) {
+                  removeHelper(OPEN_BLOCK);
+                  removeHelper(
+                    getVNodeBlockHelper(context.inSSR, childBlock.isComponent)
+                  );
+                } else {
+                  removeHelper(
+                    getVNodeHelper(context.inSSR, childBlock.isComponent)
+                  );
+                }
+              }
+              childBlock.isBlock = !isStableFragment;
+              if (childBlock.isBlock) {
+                helper(OPEN_BLOCK);
+                helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent));
+              } else {
+                helper(getVNodeHelper(context.inSSR, childBlock.isComponent));
+              }
+            }
+            if (memo) {
+              const loop = createFunctionExpression(
+                createForLoopParams(forNode.parseResult, [
+                  createSimpleExpression(`_cached`)
+                ])
+              );
+              loop.body = createBlockStatement([
+                createCompoundExpression([`const _memo = (`, memo.exp, `)`]),
+                createCompoundExpression([
+                  `if (_cached`,
+                  ...keyExp ? [` && _cached.key === `, keyExp] : [],
+                  ` && ${context.helperString(
+                  IS_MEMO_SAME
+                )}(_cached, _memo)) return _cached`
+                ]),
+                createCompoundExpression([`const _item = `, childBlock]),
+                createSimpleExpression(`_item.memo = _memo`),
+                createSimpleExpression(`return _item`)
+              ]);
+              renderExp.arguments.push(
+                loop,
+                createSimpleExpression(`_cache`),
+                createSimpleExpression(String(context.cached++))
+              );
+            } else {
+              renderExp.arguments.push(
+                createFunctionExpression(
+                  createForLoopParams(forNode.parseResult),
+                  childBlock,
+                  true
+                  /* force newline */
+                )
+              );
+            }
+          };
+        });
+      }
+    );
+    function processFor(node, dir, context, processCodegen) {
+      if (!dir.exp) {
+        context.onError(
+          createCompilerError(31, dir.loc)
+        );
+        return;
+      }
+      const parseResult = parseForExpression(
+        // can only be simple expression because vFor transform is applied
+        // before expression transform.
+        dir.exp,
+        context
+      );
+      if (!parseResult) {
+        context.onError(
+          createCompilerError(32, dir.loc)
+        );
+        return;
+      }
+      const { addIdentifiers, removeIdentifiers, scopes } = context;
+      const { source, value, key, index } = parseResult;
+      const forNode = {
+        type: 11,
+        loc: dir.loc,
+        source,
+        valueAlias: value,
+        keyAlias: key,
+        objectIndexAlias: index,
+        parseResult,
+        children: isTemplateNode(node) ? node.children : [node]
+      };
+      context.replaceNode(forNode);
+      scopes.vFor++;
+      const onExit = processCodegen && processCodegen(forNode);
+      return () => {
+        scopes.vFor--;
+        if (onExit)
+          onExit();
+      };
+    }
+    const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/;
+    const forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/;
+    const stripParensRE = /^\(|\)$/g;
+    function parseForExpression(input, context) {
+      const loc = input.loc;
+      const exp = input.content;
+      const inMatch = exp.match(forAliasRE);
+      if (!inMatch)
+        return;
+      const [, LHS, RHS] = inMatch;
+      const result = {
+        source: createAliasExpression(
+          loc,
+          RHS.trim(),
+          exp.indexOf(RHS, LHS.length)
+        ),
+        value: void 0,
+        key: void 0,
+        index: void 0
+      };
+      {
+        validateBrowserExpression(result.source, context);
+      }
+      let valueContent = LHS.trim().replace(stripParensRE, "").trim();
+      const trimmedOffset = LHS.indexOf(valueContent);
+      const iteratorMatch = valueContent.match(forIteratorRE);
+      if (iteratorMatch) {
+        valueContent = valueContent.replace(forIteratorRE, "").trim();
+        const keyContent = iteratorMatch[1].trim();
+        let keyOffset;
+        if (keyContent) {
+          keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length);
+          result.key = createAliasExpression(loc, keyContent, keyOffset);
+          {
+            validateBrowserExpression(
+              result.key,
+              context,
+              true
+            );
+          }
+        }
+        if (iteratorMatch[2]) {
+          const indexContent = iteratorMatch[2].trim();
+          if (indexContent) {
+            result.index = createAliasExpression(
+              loc,
+              indexContent,
+              exp.indexOf(
+                indexContent,
+                result.key ? keyOffset + keyContent.length : trimmedOffset + valueContent.length
+              )
+            );
+            {
+              validateBrowserExpression(
+                result.index,
+                context,
+                true
+              );
+            }
+          }
+        }
+      }
+      if (valueContent) {
+        result.value = createAliasExpression(loc, valueContent, trimmedOffset);
+        {
+          validateBrowserExpression(
+            result.value,
+            context,
+            true
+          );
+        }
+      }
+      return result;
+    }
+    function createAliasExpression(range, content, offset) {
+      return createSimpleExpression(
+        content,
+        false,
+        getInnerRange(range, offset, content.length)
+      );
+    }
+    function createForLoopParams({ value, key, index }, memoArgs = []) {
+      return createParamsList([value, key, index, ...memoArgs]);
+    }
+    function createParamsList(args) {
+      let i = args.length;
+      while (i--) {
+        if (args[i])
+          break;
+      }
+      return args.slice(0, i + 1).map((arg, i2) => arg || createSimpleExpression(`_`.repeat(i2 + 1), false));
+    }
+  
+    const defaultFallback = createSimpleExpression(`undefined`, false);
+    const trackSlotScopes = (node, context) => {
+      if (node.type === 1 && (node.tagType === 1 || node.tagType === 3)) {
+        const vSlot = findDir(node, "slot");
+        if (vSlot) {
+          vSlot.exp;
+          context.scopes.vSlot++;
+          return () => {
+            context.scopes.vSlot--;
+          };
+        }
+      }
+    };
+    const buildClientSlotFn = (props, children, loc) => createFunctionExpression(
+      props,
+      children,
+      false,
+      true,
+      children.length ? children[0].loc : loc
+    );
+    function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
+      context.helper(WITH_CTX);
+      const { children, loc } = node;
+      const slotsProperties = [];
+      const dynamicSlots = [];
+      let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0;
+      const onComponentSlot = findDir(node, "slot", true);
+      if (onComponentSlot) {
+        const { arg, exp } = onComponentSlot;
+        if (arg && !isStaticExp(arg)) {
+          hasDynamicSlots = true;
+        }
+        slotsProperties.push(
+          createObjectProperty(
+            arg || createSimpleExpression("default", true),
+            buildSlotFn(exp, children, loc)
+          )
+        );
+      }
+      let hasTemplateSlots = false;
+      let hasNamedDefaultSlot = false;
+      const implicitDefaultChildren = [];
+      const seenSlotNames = /* @__PURE__ */ new Set();
+      let conditionalBranchIndex = 0;
+      for (let i = 0; i < children.length; i++) {
+        const slotElement = children[i];
+        let slotDir;
+        if (!isTemplateNode(slotElement) || !(slotDir = findDir(slotElement, "slot", true))) {
+          if (slotElement.type !== 3) {
+            implicitDefaultChildren.push(slotElement);
+          }
+          continue;
+        }
+        if (onComponentSlot) {
+          context.onError(
+            createCompilerError(37, slotDir.loc)
+          );
+          break;
+        }
+        hasTemplateSlots = true;
+        const { children: slotChildren, loc: slotLoc } = slotElement;
+        const {
+          arg: slotName = createSimpleExpression(`default`, true),
+          exp: slotProps,
+          loc: dirLoc
+        } = slotDir;
+        let staticSlotName;
+        if (isStaticExp(slotName)) {
+          staticSlotName = slotName ? slotName.content : `default`;
+        } else {
+          hasDynamicSlots = true;
+        }
+        const slotFunction = buildSlotFn(slotProps, slotChildren, slotLoc);
+        let vIf;
+        let vElse;
+        let vFor;
+        if (vIf = findDir(slotElement, "if")) {
+          hasDynamicSlots = true;
+          dynamicSlots.push(
+            createConditionalExpression(
+              vIf.exp,
+              buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++),
+              defaultFallback
+            )
+          );
+        } else if (vElse = findDir(
+          slotElement,
+          /^else(-if)?$/,
+          true
+          /* allowEmpty */
+        )) {
+          let j = i;
+          let prev;
+          while (j--) {
+            prev = children[j];
+            if (prev.type !== 3) {
+              break;
+            }
+          }
+          if (prev && isTemplateNode(prev) && findDir(prev, "if")) {
+            children.splice(i, 1);
+            i--;
+            let conditional = dynamicSlots[dynamicSlots.length - 1];
+            while (conditional.alternate.type === 19) {
+              conditional = conditional.alternate;
+            }
+            conditional.alternate = vElse.exp ? createConditionalExpression(
+              vElse.exp,
+              buildDynamicSlot(
+                slotName,
+                slotFunction,
+                conditionalBranchIndex++
+              ),
+              defaultFallback
+            ) : buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++);
+          } else {
+            context.onError(
+              createCompilerError(30, vElse.loc)
+            );
+          }
+        } else if (vFor = findDir(slotElement, "for")) {
+          hasDynamicSlots = true;
+          const parseResult = vFor.parseResult || parseForExpression(vFor.exp, context);
+          if (parseResult) {
+            dynamicSlots.push(
+              createCallExpression(context.helper(RENDER_LIST), [
+                parseResult.source,
+                createFunctionExpression(
+                  createForLoopParams(parseResult),
+                  buildDynamicSlot(slotName, slotFunction),
+                  true
+                  /* force newline */
+                )
+              ])
+            );
+          } else {
+            context.onError(
+              createCompilerError(32, vFor.loc)
+            );
+          }
+        } else {
+          if (staticSlotName) {
+            if (seenSlotNames.has(staticSlotName)) {
+              context.onError(
+                createCompilerError(
+                  38,
+                  dirLoc
+                )
+              );
+              continue;
+            }
+            seenSlotNames.add(staticSlotName);
+            if (staticSlotName === "default") {
+              hasNamedDefaultSlot = true;
+            }
+          }
+          slotsProperties.push(createObjectProperty(slotName, slotFunction));
+        }
+      }
+      if (!onComponentSlot) {
+        const buildDefaultSlotProperty = (props, children2) => {
+          const fn = buildSlotFn(props, children2, loc);
+          return createObjectProperty(`default`, fn);
+        };
+        if (!hasTemplateSlots) {
+          slotsProperties.push(buildDefaultSlotProperty(void 0, children));
+        } else if (implicitDefaultChildren.length && // #3766
+        // with whitespace: 'preserve', whitespaces between slots will end up in
+        // implicitDefaultChildren. Ignore if all implicit children are whitespaces.
+        implicitDefaultChildren.some((node2) => isNonWhitespaceContent(node2))) {
+          if (hasNamedDefaultSlot) {
+            context.onError(
+              createCompilerError(
+                39,
+                implicitDefaultChildren[0].loc
+              )
+            );
+          } else {
+            slotsProperties.push(
+              buildDefaultSlotProperty(void 0, implicitDefaultChildren)
+            );
+          }
+        }
+      }
+      const slotFlag = hasDynamicSlots ? 2 : hasForwardedSlots(node.children) ? 3 : 1;
+      let slots = createObjectExpression(
+        slotsProperties.concat(
+          createObjectProperty(
+            `_`,
+            // 2 = compiled but dynamic = can skip normalization, but must run diff
+            // 1 = compiled and static = can skip normalization AND diff as optimized
+            createSimpleExpression(
+              slotFlag + (` /* ${slotFlagsText[slotFlag]} */` ),
+              false
+            )
+          )
+        ),
+        loc
+      );
+      if (dynamicSlots.length) {
+        slots = createCallExpression(context.helper(CREATE_SLOTS), [
+          slots,
+          createArrayExpression(dynamicSlots)
+        ]);
+      }
+      return {
+        slots,
+        hasDynamicSlots
+      };
+    }
+    function buildDynamicSlot(name, fn, index) {
+      const props = [
+        createObjectProperty(`name`, name),
+        createObjectProperty(`fn`, fn)
+      ];
+      if (index != null) {
+        props.push(
+          createObjectProperty(`key`, createSimpleExpression(String(index), true))
+        );
+      }
+      return createObjectExpression(props);
+    }
+    function hasForwardedSlots(children) {
+      for (let i = 0; i < children.length; i++) {
+        const child = children[i];
+        switch (child.type) {
+          case 1:
+            if (child.tagType === 2 || hasForwardedSlots(child.children)) {
+              return true;
+            }
+            break;
+          case 9:
+            if (hasForwardedSlots(child.branches))
+              return true;
+            break;
+          case 10:
+          case 11:
+            if (hasForwardedSlots(child.children))
+              return true;
+            break;
+        }
+      }
+      return false;
+    }
+    function isNonWhitespaceContent(node) {
+      if (node.type !== 2 && node.type !== 12)
+        return true;
+      return node.type === 2 ? !!node.content.trim() : isNonWhitespaceContent(node.content);
+    }
+  
+    const directiveImportMap = /* @__PURE__ */ new WeakMap();
+    const transformElement = (node, context) => {
+      return function postTransformElement() {
+        node = context.currentNode;
+        if (!(node.type === 1 && (node.tagType === 0 || node.tagType === 1))) {
+          return;
+        }
+        const { tag, props } = node;
+        const isComponent = node.tagType === 1;
+        let vnodeTag = isComponent ? resolveComponentType(node, context) : `"${tag}"`;
+        const isDynamicComponent = isObject(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT;
+        let vnodeProps;
+        let vnodeChildren;
+        let vnodePatchFlag;
+        let patchFlag = 0;
+        let vnodeDynamicProps;
+        let dynamicPropNames;
+        let vnodeDirectives;
+        let shouldUseBlock = (
+          // dynamic component may resolve to plain elements
+          isDynamicComponent || vnodeTag === TELEPORT || vnodeTag === SUSPENSE || !isComponent && // <svg> and <foreignObject> must be forced into blocks so that block
+          // updates inside get proper isSVG flag at runtime. (#639, #643)
+          // This is technically web-specific, but splitting the logic out of core
+          // leads to too much unnecessary complexity.
+          (tag === "svg" || tag === "foreignObject")
+        );
+        if (props.length > 0) {
+          const propsBuildResult = buildProps(
+            node,
+            context,
+            void 0,
+            isComponent,
+            isDynamicComponent
+          );
+          vnodeProps = propsBuildResult.props;
+          patchFlag = propsBuildResult.patchFlag;
+          dynamicPropNames = propsBuildResult.dynamicPropNames;
+          const directives = propsBuildResult.directives;
+          vnodeDirectives = directives && directives.length ? createArrayExpression(
+            directives.map((dir) => buildDirectiveArgs(dir, context))
+          ) : void 0;
+          if (propsBuildResult.shouldUseBlock) {
+            shouldUseBlock = true;
+          }
+        }
+        if (node.children.length > 0) {
+          if (vnodeTag === KEEP_ALIVE) {
+            shouldUseBlock = true;
+            patchFlag |= 1024;
+            if (node.children.length > 1) {
+              context.onError(
+                createCompilerError(46, {
+                  start: node.children[0].loc.start,
+                  end: node.children[node.children.length - 1].loc.end,
+                  source: ""
+                })
+              );
+            }
+          }
+          const shouldBuildAsSlots = isComponent && // Teleport is not a real component and has dedicated runtime handling
+          vnodeTag !== TELEPORT && // explained above.
+          vnodeTag !== KEEP_ALIVE;
+          if (shouldBuildAsSlots) {
+            const { slots, hasDynamicSlots } = buildSlots(node, context);
+            vnodeChildren = slots;
+            if (hasDynamicSlots) {
+              patchFlag |= 1024;
+            }
+          } else if (node.children.length === 1 && vnodeTag !== TELEPORT) {
+            const child = node.children[0];
+            const type = child.type;
+            const hasDynamicTextChild = type === 5 || type === 8;
+            if (hasDynamicTextChild && getConstantType(child, context) === 0) {
+              patchFlag |= 1;
+            }
+            if (hasDynamicTextChild || type === 2) {
+              vnodeChildren = child;
+            } else {
+              vnodeChildren = node.children;
+            }
+          } else {
+            vnodeChildren = node.children;
+          }
+        }
+        if (patchFlag !== 0) {
+          {
+            if (patchFlag < 0) {
+              vnodePatchFlag = patchFlag + ` /* ${PatchFlagNames[patchFlag]} */`;
+            } else {
+              const flagNames = Object.keys(PatchFlagNames).map(Number).filter((n) => n > 0 && patchFlag & n).map((n) => PatchFlagNames[n]).join(`, `);
+              vnodePatchFlag = patchFlag + ` /* ${flagNames} */`;
+            }
+          }
+          if (dynamicPropNames && dynamicPropNames.length) {
+            vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames);
+          }
+        }
+        node.codegenNode = createVNodeCall(
+          context,
+          vnodeTag,
+          vnodeProps,
+          vnodeChildren,
+          vnodePatchFlag,
+          vnodeDynamicProps,
+          vnodeDirectives,
+          !!shouldUseBlock,
+          false,
+          isComponent,
+          node.loc
+        );
+      };
+    };
+    function resolveComponentType(node, context, ssr = false) {
+      let { tag } = node;
+      const isExplicitDynamic = isComponentTag(tag);
+      const isProp = findProp(node, "is");
+      if (isProp) {
+        if (isExplicitDynamic || false) {
+          const exp = isProp.type === 6 ? isProp.value && createSimpleExpression(isProp.value.content, true) : isProp.exp;
+          if (exp) {
+            return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [
+              exp
+            ]);
+          }
+        } else if (isProp.type === 6 && isProp.value.content.startsWith("vue:")) {
+          tag = isProp.value.content.slice(4);
+        }
+      }
+      const isDir = !isExplicitDynamic && findDir(node, "is");
+      if (isDir && isDir.exp) {
+        {
+          context.onWarn(
+            createCompilerError(52, isDir.loc)
+          );
+        }
+        return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [
+          isDir.exp
+        ]);
+      }
+      const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag);
+      if (builtIn) {
+        if (!ssr)
+          context.helper(builtIn);
+        return builtIn;
+      }
+      context.helper(RESOLVE_COMPONENT);
+      context.components.add(tag);
+      return toValidAssetId(tag, `component`);
+    }
+    function buildProps(node, context, props = node.props, isComponent, isDynamicComponent, ssr = false) {
+      const { tag, loc: elementLoc, children } = node;
+      let properties = [];
+      const mergeArgs = [];
+      const runtimeDirectives = [];
+      const hasChildren = children.length > 0;
+      let shouldUseBlock = false;
+      let patchFlag = 0;
+      let hasRef = false;
+      let hasClassBinding = false;
+      let hasStyleBinding = false;
+      let hasHydrationEventBinding = false;
+      let hasDynamicKeys = false;
+      let hasVnodeHook = false;
+      const dynamicPropNames = [];
+      const pushMergeArg = (arg) => {
+        if (properties.length) {
+          mergeArgs.push(
+            createObjectExpression(dedupeProperties(properties), elementLoc)
+          );
+          properties = [];
+        }
+        if (arg)
+          mergeArgs.push(arg);
+      };
+      const analyzePatchFlag = ({ key, value }) => {
+        if (isStaticExp(key)) {
+          const name = key.content;
+          const isEventHandler = isOn(name);
+          if (isEventHandler && (!isComponent || isDynamicComponent) && // omit the flag for click handlers because hydration gives click
+          // dedicated fast path.
+          name.toLowerCase() !== "onclick" && // omit v-model handlers
+          name !== "onUpdate:modelValue" && // omit onVnodeXXX hooks
+          !isReservedProp(name)) {
+            hasHydrationEventBinding = true;
+          }
+          if (isEventHandler && isReservedProp(name)) {
+            hasVnodeHook = true;
+          }
+          if (value.type === 20 || (value.type === 4 || value.type === 8) && getConstantType(value, context) > 0) {
+            return;
+          }
+          if (name === "ref") {
+            hasRef = true;
+          } else if (name === "class") {
+            hasClassBinding = true;
+          } else if (name === "style") {
+            hasStyleBinding = true;
+          } else if (name !== "key" && !dynamicPropNames.includes(name)) {
+            dynamicPropNames.push(name);
+          }
+          if (isComponent && (name === "class" || name === "style") && !dynamicPropNames.includes(name)) {
+            dynamicPropNames.push(name);
+          }
+        } else {
+          hasDynamicKeys = true;
+        }
+      };
+      for (let i = 0; i < props.length; i++) {
+        const prop = props[i];
+        if (prop.type === 6) {
+          const { loc, name, value } = prop;
+          let isStatic = true;
+          if (name === "ref") {
+            hasRef = true;
+            if (context.scopes.vFor > 0) {
+              properties.push(
+                createObjectProperty(
+                  createSimpleExpression("ref_for", true),
+                  createSimpleExpression("true")
+                )
+              );
+            }
+          }
+          if (name === "is" && (isComponentTag(tag) || value && value.content.startsWith("vue:") || false)) {
+            continue;
+          }
+          properties.push(
+            createObjectProperty(
+              createSimpleExpression(
+                name,
+                true,
+                getInnerRange(loc, 0, name.length)
+              ),
+              createSimpleExpression(
+                value ? value.content : "",
+                isStatic,
+                value ? value.loc : loc
+              )
+            )
+          );
+        } else {
+          const { name, arg, exp, loc } = prop;
+          const isVBind = name === "bind";
+          const isVOn = name === "on";
+          if (name === "slot") {
+            if (!isComponent) {
+              context.onError(
+                createCompilerError(40, loc)
+              );
+            }
+            continue;
+          }
+          if (name === "once" || name === "memo") {
+            continue;
+          }
+          if (name === "is" || isVBind && isStaticArgOf(arg, "is") && (isComponentTag(tag) || false)) {
+            continue;
+          }
+          if (isVOn && ssr) {
+            continue;
+          }
+          if (
+            // #938: elements with dynamic keys should be forced into blocks
+            isVBind && isStaticArgOf(arg, "key") || // inline before-update hooks need to force block so that it is invoked
+            // before children
+            isVOn && hasChildren && isStaticArgOf(arg, "vue:before-update")
+          ) {
+            shouldUseBlock = true;
+          }
+          if (isVBind && isStaticArgOf(arg, "ref") && context.scopes.vFor > 0) {
+            properties.push(
+              createObjectProperty(
+                createSimpleExpression("ref_for", true),
+                createSimpleExpression("true")
+              )
+            );
+          }
+          if (!arg && (isVBind || isVOn)) {
+            hasDynamicKeys = true;
+            if (exp) {
+              if (isVBind) {
+                pushMergeArg();
+                mergeArgs.push(exp);
+              } else {
+                pushMergeArg({
+                  type: 14,
+                  loc,
+                  callee: context.helper(TO_HANDLERS),
+                  arguments: isComponent ? [exp] : [exp, `true`]
+                });
+              }
+            } else {
+              context.onError(
+                createCompilerError(
+                  isVBind ? 34 : 35,
+                  loc
+                )
+              );
+            }
+            continue;
+          }
+          const directiveTransform = context.directiveTransforms[name];
+          if (directiveTransform) {
+            const { props: props2, needRuntime } = directiveTransform(prop, node, context);
+            !ssr && props2.forEach(analyzePatchFlag);
+            if (isVOn && arg && !isStaticExp(arg)) {
+              pushMergeArg(createObjectExpression(props2, elementLoc));
+            } else {
+              properties.push(...props2);
+            }
+            if (needRuntime) {
+              runtimeDirectives.push(prop);
+              if (isSymbol(needRuntime)) {
+                directiveImportMap.set(prop, needRuntime);
+              }
+            }
+          } else if (!isBuiltInDirective(name)) {
+            runtimeDirectives.push(prop);
+            if (hasChildren) {
+              shouldUseBlock = true;
+            }
+          }
+        }
+      }
+      let propsExpression = void 0;
+      if (mergeArgs.length) {
+        pushMergeArg();
+        if (mergeArgs.length > 1) {
+          propsExpression = createCallExpression(
+            context.helper(MERGE_PROPS),
+            mergeArgs,
+            elementLoc
+          );
+        } else {
+          propsExpression = mergeArgs[0];
+        }
+      } else if (properties.length) {
+        propsExpression = createObjectExpression(
+          dedupeProperties(properties),
+          elementLoc
+        );
+      }
+      if (hasDynamicKeys) {
+        patchFlag |= 16;
+      } else {
+        if (hasClassBinding && !isComponent) {
+          patchFlag |= 2;
+        }
+        if (hasStyleBinding && !isComponent) {
+          patchFlag |= 4;
+        }
+        if (dynamicPropNames.length) {
+          patchFlag |= 8;
+        }
+        if (hasHydrationEventBinding) {
+          patchFlag |= 32;
+        }
+      }
+      if (!shouldUseBlock && (patchFlag === 0 || patchFlag === 32) && (hasRef || hasVnodeHook || runtimeDirectives.length > 0)) {
+        patchFlag |= 512;
+      }
+      if (!context.inSSR && propsExpression) {
+        switch (propsExpression.type) {
+          case 15:
+            let classKeyIndex = -1;
+            let styleKeyIndex = -1;
+            let hasDynamicKey = false;
+            for (let i = 0; i < propsExpression.properties.length; i++) {
+              const key = propsExpression.properties[i].key;
+              if (isStaticExp(key)) {
+                if (key.content === "class") {
+                  classKeyIndex = i;
+                } else if (key.content === "style") {
+                  styleKeyIndex = i;
+                }
+              } else if (!key.isHandlerKey) {
+                hasDynamicKey = true;
+              }
+            }
+            const classProp = propsExpression.properties[classKeyIndex];
+            const styleProp = propsExpression.properties[styleKeyIndex];
+            if (!hasDynamicKey) {
+              if (classProp && !isStaticExp(classProp.value)) {
+                classProp.value = createCallExpression(
+                  context.helper(NORMALIZE_CLASS),
+                  [classProp.value]
+                );
+              }
+              if (styleProp && // the static style is compiled into an object,
+              // so use `hasStyleBinding` to ensure that it is a dynamic style binding
+              (hasStyleBinding || styleProp.value.type === 4 && styleProp.value.content.trim()[0] === `[` || // v-bind:style and style both exist,
+              // v-bind:style with static literal object
+              styleProp.value.type === 17)) {
+                styleProp.value = createCallExpression(
+                  context.helper(NORMALIZE_STYLE),
+                  [styleProp.value]
+                );
+              }
+            } else {
+              propsExpression = createCallExpression(
+                context.helper(NORMALIZE_PROPS),
+                [propsExpression]
+              );
+            }
+            break;
+          case 14:
+            break;
+          default:
+            propsExpression = createCallExpression(
+              context.helper(NORMALIZE_PROPS),
+              [
+                createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [
+                  propsExpression
+                ])
+              ]
+            );
+            break;
+        }
+      }
+      return {
+        props: propsExpression,
+        directives: runtimeDirectives,
+        patchFlag,
+        dynamicPropNames,
+        shouldUseBlock
+      };
+    }
+    function dedupeProperties(properties) {
+      const knownProps = /* @__PURE__ */ new Map();
+      const deduped = [];
+      for (let i = 0; i < properties.length; i++) {
+        const prop = properties[i];
+        if (prop.key.type === 8 || !prop.key.isStatic) {
+          deduped.push(prop);
+          continue;
+        }
+        const name = prop.key.content;
+        const existing = knownProps.get(name);
+        if (existing) {
+          if (name === "style" || name === "class" || isOn(name)) {
+            mergeAsArray(existing, prop);
+          }
+        } else {
+          knownProps.set(name, prop);
+          deduped.push(prop);
+        }
+      }
+      return deduped;
+    }
+    function mergeAsArray(existing, incoming) {
+      if (existing.value.type === 17) {
+        existing.value.elements.push(incoming.value);
+      } else {
+        existing.value = createArrayExpression(
+          [existing.value, incoming.value],
+          existing.loc
+        );
+      }
+    }
+    function buildDirectiveArgs(dir, context) {
+      const dirArgs = [];
+      const runtime = directiveImportMap.get(dir);
+      if (runtime) {
+        dirArgs.push(context.helperString(runtime));
+      } else {
+        {
+          context.helper(RESOLVE_DIRECTIVE);
+          context.directives.add(dir.name);
+          dirArgs.push(toValidAssetId(dir.name, `directive`));
+        }
+      }
+      const { loc } = dir;
+      if (dir.exp)
+        dirArgs.push(dir.exp);
+      if (dir.arg) {
+        if (!dir.exp) {
+          dirArgs.push(`void 0`);
+        }
+        dirArgs.push(dir.arg);
+      }
+      if (Object.keys(dir.modifiers).length) {
+        if (!dir.arg) {
+          if (!dir.exp) {
+            dirArgs.push(`void 0`);
+          }
+          dirArgs.push(`void 0`);
+        }
+        const trueExpression = createSimpleExpression(`true`, false, loc);
+        dirArgs.push(
+          createObjectExpression(
+            dir.modifiers.map(
+              (modifier) => createObjectProperty(modifier, trueExpression)
+            ),
+            loc
+          )
+        );
+      }
+      return createArrayExpression(dirArgs, dir.loc);
+    }
+    function stringifyDynamicPropNames(props) {
+      let propsNamesString = `[`;
+      for (let i = 0, l = props.length; i < l; i++) {
+        propsNamesString += JSON.stringify(props[i]);
+        if (i < l - 1)
+          propsNamesString += ", ";
+      }
+      return propsNamesString + `]`;
+    }
+    function isComponentTag(tag) {
+      return tag === "component" || tag === "Component";
+    }
+  
+    const transformSlotOutlet = (node, context) => {
+      if (isSlotOutlet(node)) {
+        const { children, loc } = node;
+        const { slotName, slotProps } = processSlotOutlet(node, context);
+        const slotArgs = [
+          context.prefixIdentifiers ? `_ctx.$slots` : `$slots`,
+          slotName,
+          "{}",
+          "undefined",
+          "true"
+        ];
+        let expectedLen = 2;
+        if (slotProps) {
+          slotArgs[2] = slotProps;
+          expectedLen = 3;
+        }
+        if (children.length) {
+          slotArgs[3] = createFunctionExpression([], children, false, false, loc);
+          expectedLen = 4;
+        }
+        if (context.scopeId && !context.slotted) {
+          expectedLen = 5;
+        }
+        slotArgs.splice(expectedLen);
+        node.codegenNode = createCallExpression(
+          context.helper(RENDER_SLOT),
+          slotArgs,
+          loc
+        );
+      }
+    };
+    function processSlotOutlet(node, context) {
+      let slotName = `"default"`;
+      let slotProps = void 0;
+      const nonNameProps = [];
+      for (let i = 0; i < node.props.length; i++) {
+        const p = node.props[i];
+        if (p.type === 6) {
+          if (p.value) {
+            if (p.name === "name") {
+              slotName = JSON.stringify(p.value.content);
+            } else {
+              p.name = camelize(p.name);
+              nonNameProps.push(p);
+            }
+          }
+        } else {
+          if (p.name === "bind" && isStaticArgOf(p.arg, "name")) {
+            if (p.exp)
+              slotName = p.exp;
+          } else {
+            if (p.name === "bind" && p.arg && isStaticExp(p.arg)) {
+              p.arg.content = camelize(p.arg.content);
+            }
+            nonNameProps.push(p);
+          }
+        }
+      }
+      if (nonNameProps.length > 0) {
+        const { props, directives } = buildProps(
+          node,
+          context,
+          nonNameProps,
+          false,
+          false
+        );
+        slotProps = props;
+        if (directives.length) {
+          context.onError(
+            createCompilerError(
+              36,
+              directives[0].loc
+            )
+          );
+        }
+      }
+      return {
+        slotName,
+        slotProps
+      };
+    }
+  
+    const fnExpRE = /^\s*([\w$_]+|(async\s*)?\([^)]*?\))\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/;
+    const transformOn$1 = (dir, node, context, augmentor) => {
+      const { loc, modifiers, arg } = dir;
+      if (!dir.exp && !modifiers.length) {
+        context.onError(createCompilerError(35, loc));
+      }
+      let eventName;
+      if (arg.type === 4) {
+        if (arg.isStatic) {
+          let rawName = arg.content;
+          if (rawName.startsWith("vnode")) {
+            context.onWarn(
+              createCompilerError(51, arg.loc)
+            );
+          }
+          if (rawName.startsWith("vue:")) {
+            rawName = `vnode-${rawName.slice(4)}`;
+          }
+          const eventString = node.tagType !== 0 || rawName.startsWith("vnode") || !/[A-Z]/.test(rawName) ? (
+            // for non-element and vnode lifecycle event listeners, auto convert
+            // it to camelCase. See issue #2249
+            toHandlerKey(camelize(rawName))
+          ) : (
+            // preserve case for plain element listeners that have uppercase
+            // letters, as these may be custom elements' custom events
+            `on:${rawName}`
+          );
+          eventName = createSimpleExpression(eventString, true, arg.loc);
+        } else {
+          eventName = createCompoundExpression([
+            `${context.helperString(TO_HANDLER_KEY)}(`,
+            arg,
+            `)`
+          ]);
+        }
+      } else {
+        eventName = arg;
+        eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`);
+        eventName.children.push(`)`);
+      }
+      let exp = dir.exp;
+      if (exp && !exp.content.trim()) {
+        exp = void 0;
+      }
+      let shouldCache = context.cacheHandlers && !exp && !context.inVOnce;
+      if (exp) {
+        const isMemberExp = isMemberExpression(exp.content);
+        const isInlineStatement = !(isMemberExp || fnExpRE.test(exp.content));
+        const hasMultipleStatements = exp.content.includes(`;`);
+        {
+          validateBrowserExpression(
+            exp,
+            context,
+            false,
+            hasMultipleStatements
+          );
+        }
+        if (isInlineStatement || shouldCache && isMemberExp) {
+          exp = createCompoundExpression([
+            `${isInlineStatement ? `$event` : `${``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`,
+            exp,
+            hasMultipleStatements ? `}` : `)`
+          ]);
+        }
+      }
+      let ret = {
+        props: [
+          createObjectProperty(
+            eventName,
+            exp || createSimpleExpression(`() => {}`, false, loc)
+          )
+        ]
+      };
+      if (augmentor) {
+        ret = augmentor(ret);
+      }
+      if (shouldCache) {
+        ret.props[0].value = context.cache(ret.props[0].value);
+      }
+      ret.props.forEach((p) => p.key.isHandlerKey = true);
+      return ret;
+    };
+  
+    const transformBind = (dir, _node, context) => {
+      const { exp, modifiers, loc } = dir;
+      const arg = dir.arg;
+      if (arg.type !== 4) {
+        arg.children.unshift(`(`);
+        arg.children.push(`) || ""`);
+      } else if (!arg.isStatic) {
+        arg.content = `${arg.content} || ""`;
+      }
+      if (modifiers.includes("camel")) {
+        if (arg.type === 4) {
+          if (arg.isStatic) {
+            arg.content = camelize(arg.content);
+          } else {
+            arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`;
+          }
+        } else {
+          arg.children.unshift(`${context.helperString(CAMELIZE)}(`);
+          arg.children.push(`)`);
+        }
+      }
+      if (!context.inSSR) {
+        if (modifiers.includes("prop")) {
+          injectPrefix(arg, ".");
+        }
+        if (modifiers.includes("attr")) {
+          injectPrefix(arg, "^");
+        }
+      }
+      if (!exp || exp.type === 4 && !exp.content.trim()) {
+        context.onError(createCompilerError(34, loc));
+        return {
+          props: [createObjectProperty(arg, createSimpleExpression("", true, loc))]
+        };
+      }
+      return {
+        props: [createObjectProperty(arg, exp)]
+      };
+    };
+    const injectPrefix = (arg, prefix) => {
+      if (arg.type === 4) {
+        if (arg.isStatic) {
+          arg.content = prefix + arg.content;
+        } else {
+          arg.content = `\`${prefix}\${${arg.content}}\``;
+        }
+      } else {
+        arg.children.unshift(`'${prefix}' + (`);
+        arg.children.push(`)`);
+      }
+    };
+  
+    const transformText = (node, context) => {
+      if (node.type === 0 || node.type === 1 || node.type === 11 || node.type === 10) {
+        return () => {
+          const children = node.children;
+          let currentContainer = void 0;
+          let hasText = false;
+          for (let i = 0; i < children.length; i++) {
+            const child = children[i];
+            if (isText$1(child)) {
+              hasText = true;
+              for (let j = i + 1; j < children.length; j++) {
+                const next = children[j];
+                if (isText$1(next)) {
+                  if (!currentContainer) {
+                    currentContainer = children[i] = createCompoundExpression(
+                      [child],
+                      child.loc
+                    );
+                  }
+                  currentContainer.children.push(` + `, next);
+                  children.splice(j, 1);
+                  j--;
+                } else {
+                  currentContainer = void 0;
+                  break;
+                }
+              }
+            }
+          }
+          if (!hasText || // if this is a plain element with a single text child, leave it
+          // as-is since the runtime has dedicated fast path for this by directly
+          // setting textContent of the element.
+          // for component root it's always normalized anyway.
+          children.length === 1 && (node.type === 0 || node.type === 1 && node.tagType === 0 && // #3756
+          // custom directives can potentially add DOM elements arbitrarily,
+          // we need to avoid setting textContent of the element at runtime
+          // to avoid accidentally overwriting the DOM elements added
+          // by the user through custom directives.
+          !node.props.find(
+            (p) => p.type === 7 && !context.directiveTransforms[p.name]
+          ) && // in compat mode, <template> tags with no special directives
+          // will be rendered as a fragment so its children must be
+          // converted into vnodes.
+          true)) {
+            return;
+          }
+          for (let i = 0; i < children.length; i++) {
+            const child = children[i];
+            if (isText$1(child) || child.type === 8) {
+              const callArgs = [];
+              if (child.type !== 2 || child.content !== " ") {
+                callArgs.push(child);
+              }
+              if (!context.ssr && getConstantType(child, context) === 0) {
+                callArgs.push(
+                  1 + (` /* ${PatchFlagNames[1]} */` )
+                );
+              }
+              children[i] = {
+                type: 12,
+                content: child,
+                loc: child.loc,
+                codegenNode: createCallExpression(
+                  context.helper(CREATE_TEXT),
+                  callArgs
+                )
+              };
+            }
+          }
+        };
+      }
+    };
+  
+    const seen$1 = /* @__PURE__ */ new WeakSet();
+    const transformOnce = (node, context) => {
+      if (node.type === 1 && findDir(node, "once", true)) {
+        if (seen$1.has(node) || context.inVOnce || context.inSSR) {
+          return;
+        }
+        seen$1.add(node);
+        context.inVOnce = true;
+        context.helper(SET_BLOCK_TRACKING);
+        return () => {
+          context.inVOnce = false;
+          const cur = context.currentNode;
+          if (cur.codegenNode) {
+            cur.codegenNode = context.cache(
+              cur.codegenNode,
+              true
+              /* isVNode */
+            );
+          }
+        };
+      }
+    };
+  
+    const transformModel$1 = (dir, node, context) => {
+      const { exp, arg } = dir;
+      if (!exp) {
+        context.onError(
+          createCompilerError(41, dir.loc)
+        );
+        return createTransformProps();
+      }
+      const rawExp = exp.loc.source;
+      const expString = exp.type === 4 ? exp.content : rawExp;
+      const bindingType = context.bindingMetadata[rawExp];
+      if (bindingType === "props" || bindingType === "props-aliased") {
+        context.onError(createCompilerError(44, exp.loc));
+        return createTransformProps();
+      }
+      const maybeRef = false;
+      if (!expString.trim() || !isMemberExpression(expString) && !maybeRef) {
+        context.onError(
+          createCompilerError(42, exp.loc)
+        );
+        return createTransformProps();
+      }
+      const propName = arg ? arg : createSimpleExpression("modelValue", true);
+      const eventName = arg ? isStaticExp(arg) ? `onUpdate:${camelize(arg.content)}` : createCompoundExpression(['"onUpdate:" + ', arg]) : `onUpdate:modelValue`;
+      let assignmentExp;
+      const eventArg = context.isTS ? `($event: any)` : `$event`;
+      {
+        assignmentExp = createCompoundExpression([
+          `${eventArg} => ((`,
+          exp,
+          `) = $event)`
+        ]);
+      }
+      const props = [
+        // modelValue: foo
+        createObjectProperty(propName, dir.exp),
+        // "onUpdate:modelValue": $event => (foo = $event)
+        createObjectProperty(eventName, assignmentExp)
+      ];
+      if (dir.modifiers.length && node.tagType === 1) {
+        const modifiers = dir.modifiers.map((m) => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`).join(`, `);
+        const modifiersKey = arg ? isStaticExp(arg) ? `${arg.content}Modifiers` : createCompoundExpression([arg, ' + "Modifiers"']) : `modelModifiers`;
+        props.push(
+          createObjectProperty(
+            modifiersKey,
+            createSimpleExpression(
+              `{ ${modifiers} }`,
+              false,
+              dir.loc,
+              2
+            )
+          )
+        );
+      }
+      return createTransformProps(props);
+    };
+    function createTransformProps(props = []) {
+      return { props };
+    }
+  
+    const seen = /* @__PURE__ */ new WeakSet();
+    const transformMemo = (node, context) => {
+      if (node.type === 1) {
+        const dir = findDir(node, "memo");
+        if (!dir || seen.has(node)) {
+          return;
+        }
+        seen.add(node);
+        return () => {
+          const codegenNode = node.codegenNode || context.currentNode.codegenNode;
+          if (codegenNode && codegenNode.type === 13) {
+            if (node.tagType !== 1) {
+              convertToBlock(codegenNode, context);
+            }
+            node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [
+              dir.exp,
+              createFunctionExpression(void 0, codegenNode),
+              `_cache`,
+              String(context.cached++)
+            ]);
+          }
+        };
+      }
+    };
+  
+    function getBaseTransformPreset(prefixIdentifiers) {
+      return [
+        [
+          transformOnce,
+          transformIf,
+          transformMemo,
+          transformFor,
+          ...[],
+          ...[transformExpression] ,
+          transformSlotOutlet,
+          transformElement,
+          trackSlotScopes,
+          transformText
+        ],
+        {
+          on: transformOn$1,
+          bind: transformBind,
+          model: transformModel$1
+        }
+      ];
+    }
+    function baseCompile(template, options = {}) {
+      const onError = options.onError || defaultOnError;
+      const isModuleMode = options.mode === "module";
+      {
+        if (options.prefixIdentifiers === true) {
+          onError(createCompilerError(47));
+        } else if (isModuleMode) {
+          onError(createCompilerError(48));
+        }
+      }
+      const prefixIdentifiers = false;
+      if (options.cacheHandlers) {
+        onError(createCompilerError(49));
+      }
+      if (options.scopeId && !isModuleMode) {
+        onError(createCompilerError(50));
+      }
+      const ast = isString(template) ? baseParse(template, options) : template;
+      const [nodeTransforms, directiveTransforms] = getBaseTransformPreset();
+      transform(
+        ast,
+        extend({}, options, {
+          prefixIdentifiers,
+          nodeTransforms: [
+            ...nodeTransforms,
+            ...options.nodeTransforms || []
+            // user transforms
+          ],
+          directiveTransforms: extend(
+            {},
+            directiveTransforms,
+            options.directiveTransforms || {}
+            // user transforms
+          )
+        })
+      );
+      return generate(
+        ast,
+        extend({}, options, {
+          prefixIdentifiers
+        })
+      );
+    }
+  
+    const noopDirectiveTransform = () => ({ props: [] });
+  
+    const V_MODEL_RADIO = Symbol(`vModelRadio` );
+    const V_MODEL_CHECKBOX = Symbol(`vModelCheckbox` );
+    const V_MODEL_TEXT = Symbol(`vModelText` );
+    const V_MODEL_SELECT = Symbol(`vModelSelect` );
+    const V_MODEL_DYNAMIC = Symbol(`vModelDynamic` );
+    const V_ON_WITH_MODIFIERS = Symbol(`vOnModifiersGuard` );
+    const V_ON_WITH_KEYS = Symbol(`vOnKeysGuard` );
+    const V_SHOW = Symbol(`vShow` );
+    const TRANSITION = Symbol(`Transition` );
+    const TRANSITION_GROUP = Symbol(`TransitionGroup` );
+    registerRuntimeHelpers({
+      [V_MODEL_RADIO]: `vModelRadio`,
+      [V_MODEL_CHECKBOX]: `vModelCheckbox`,
+      [V_MODEL_TEXT]: `vModelText`,
+      [V_MODEL_SELECT]: `vModelSelect`,
+      [V_MODEL_DYNAMIC]: `vModelDynamic`,
+      [V_ON_WITH_MODIFIERS]: `withModifiers`,
+      [V_ON_WITH_KEYS]: `withKeys`,
+      [V_SHOW]: `vShow`,
+      [TRANSITION]: `Transition`,
+      [TRANSITION_GROUP]: `TransitionGroup`
+    });
+  
+    let decoder;
+    function decodeHtmlBrowser(raw, asAttr = false) {
+      if (!decoder) {
+        decoder = document.createElement("div");
+      }
+      if (asAttr) {
+        decoder.innerHTML = `<div foo="${raw.replace(/"/g, "&quot;")}">`;
+        return decoder.children[0].getAttribute("foo");
+      } else {
+        decoder.innerHTML = raw;
+        return decoder.textContent;
+      }
+    }
+  
+    const isRawTextContainer = /* @__PURE__ */ makeMap(
+      "style,iframe,script,noscript",
+      true
+    );
+    const parserOptions = {
+      isVoidTag,
+      isNativeTag: (tag) => isHTMLTag(tag) || isSVGTag(tag),
+      isPreTag: (tag) => tag === "pre",
+      decodeEntities: decodeHtmlBrowser ,
+      isBuiltInComponent: (tag) => {
+        if (isBuiltInType(tag, `Transition`)) {
+          return TRANSITION;
+        } else if (isBuiltInType(tag, `TransitionGroup`)) {
+          return TRANSITION_GROUP;
+        }
+      },
+      // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher
+      getNamespace(tag, parent) {
+        let ns = parent ? parent.ns : 0;
+        if (parent && ns === 2) {
+          if (parent.tag === "annotation-xml") {
+            if (tag === "svg") {
+              return 1;
+            }
+            if (parent.props.some(
+              (a) => a.type === 6 && a.name === "encoding" && a.value != null && (a.value.content === "text/html" || a.value.content === "application/xhtml+xml")
+            )) {
+              ns = 0;
+            }
+          } else if (/^m(?:[ions]|text)$/.test(parent.tag) && tag !== "mglyph" && tag !== "malignmark") {
+            ns = 0;
+          }
+        } else if (parent && ns === 1) {
+          if (parent.tag === "foreignObject" || parent.tag === "desc" || parent.tag === "title") {
+            ns = 0;
+          }
+        }
+        if (ns === 0) {
+          if (tag === "svg") {
+            return 1;
+          }
+          if (tag === "math") {
+            return 2;
+          }
+        }
+        return ns;
+      },
+      // https://html.spec.whatwg.org/multipage/parsing.html#parsing-html-fragments
+      getTextMode({ tag, ns }) {
+        if (ns === 0) {
+          if (tag === "textarea" || tag === "title") {
+            return 1;
+          }
+          if (isRawTextContainer(tag)) {
+            return 2;
+          }
+        }
+        return 0;
+      }
+    };
+  
+    const transformStyle = (node) => {
+      if (node.type === 1) {
+        node.props.forEach((p, i) => {
+          if (p.type === 6 && p.name === "style" && p.value) {
+            node.props[i] = {
+              type: 7,
+              name: `bind`,
+              arg: createSimpleExpression(`style`, true, p.loc),
+              exp: parseInlineCSS(p.value.content, p.loc),
+              modifiers: [],
+              loc: p.loc
+            };
+          }
+        });
+      }
+    };
+    const parseInlineCSS = (cssText, loc) => {
+      const normalized = parseStringStyle(cssText);
+      return createSimpleExpression(
+        JSON.stringify(normalized),
+        false,
+        loc,
+        3
+      );
+    };
+  
+    function createDOMCompilerError(code, loc) {
+      return createCompilerError(
+        code,
+        loc,
+        DOMErrorMessages 
+      );
+    }
+    const DOMErrorMessages = {
+      [53]: `v-html is missing expression.`,
+      [54]: `v-html will override element children.`,
+      [55]: `v-text is missing expression.`,
+      [56]: `v-text will override element children.`,
+      [57]: `v-model can only be used on <input>, <textarea> and <select> elements.`,
+      [58]: `v-model argument is not supported on plain elements.`,
+      [59]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`,
+      [60]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`,
+      [61]: `v-show is missing expression.`,
+      [62]: `<Transition> expects exactly one child element or component.`,
+      [63]: `Tags with side effect (<script> and <style>) are ignored in client component templates.`
+    };
+  
+    const transformVHtml = (dir, node, context) => {
+      const { exp, loc } = dir;
+      if (!exp) {
+        context.onError(
+          createDOMCompilerError(53, loc)
+        );
+      }
+      if (node.children.length) {
+        context.onError(
+          createDOMCompilerError(54, loc)
+        );
+        node.children.length = 0;
+      }
+      return {
+        props: [
+          createObjectProperty(
+            createSimpleExpression(`innerHTML`, true, loc),
+            exp || createSimpleExpression("", true)
+          )
+        ]
+      };
+    };
+  
+    const transformVText = (dir, node, context) => {
+      const { exp, loc } = dir;
+      if (!exp) {
+        context.onError(
+          createDOMCompilerError(55, loc)
+        );
+      }
+      if (node.children.length) {
+        context.onError(
+          createDOMCompilerError(56, loc)
+        );
+        node.children.length = 0;
+      }
+      return {
+        props: [
+          createObjectProperty(
+            createSimpleExpression(`textContent`, true),
+            exp ? getConstantType(exp, context) > 0 ? exp : createCallExpression(
+              context.helperString(TO_DISPLAY_STRING),
+              [exp],
+              loc
+            ) : createSimpleExpression("", true)
+          )
+        ]
+      };
+    };
+  
+    const transformModel = (dir, node, context) => {
+      const baseResult = transformModel$1(dir, node, context);
+      if (!baseResult.props.length || node.tagType === 1) {
+        return baseResult;
+      }
+      if (dir.arg) {
+        context.onError(
+          createDOMCompilerError(
+            58,
+            dir.arg.loc
+          )
+        );
+      }
+      function checkDuplicatedValue() {
+        const value = findProp(node, "value");
+        if (value) {
+          context.onError(
+            createDOMCompilerError(
+              60,
+              value.loc
+            )
+          );
+        }
+      }
+      const { tag } = node;
+      const isCustomElement = context.isCustomElement(tag);
+      if (tag === "input" || tag === "textarea" || tag === "select" || isCustomElement) {
+        let directiveToUse = V_MODEL_TEXT;
+        let isInvalidType = false;
+        if (tag === "input" || isCustomElement) {
+          const type = findProp(node, `type`);
+          if (type) {
+            if (type.type === 7) {
+              directiveToUse = V_MODEL_DYNAMIC;
+            } else if (type.value) {
+              switch (type.value.content) {
+                case "radio":
+                  directiveToUse = V_MODEL_RADIO;
+                  break;
+                case "checkbox":
+                  directiveToUse = V_MODEL_CHECKBOX;
+                  break;
+                case "file":
+                  isInvalidType = true;
+                  context.onError(
+                    createDOMCompilerError(
+                      59,
+                      dir.loc
+                    )
+                  );
+                  break;
+                default:
+                  checkDuplicatedValue();
+                  break;
+              }
+            }
+          } else if (hasDynamicKeyVBind(node)) {
+            directiveToUse = V_MODEL_DYNAMIC;
+          } else {
+            checkDuplicatedValue();
+          }
+        } else if (tag === "select") {
+          directiveToUse = V_MODEL_SELECT;
+        } else {
+          checkDuplicatedValue();
+        }
+        if (!isInvalidType) {
+          baseResult.needRuntime = context.helper(directiveToUse);
+        }
+      } else {
+        context.onError(
+          createDOMCompilerError(
+            57,
+            dir.loc
+          )
+        );
+      }
+      baseResult.props = baseResult.props.filter(
+        (p) => !(p.key.type === 4 && p.key.content === "modelValue")
+      );
+      return baseResult;
+    };
+  
+    const isEventOptionModifier = /* @__PURE__ */ makeMap(`passive,once,capture`);
+    const isNonKeyModifier = /* @__PURE__ */ makeMap(
+      // event propagation management
+      `stop,prevent,self,ctrl,shift,alt,meta,exact,middle`
+    );
+    const maybeKeyModifier = /* @__PURE__ */ makeMap("left,right");
+    const isKeyboardEvent = /* @__PURE__ */ makeMap(
+      `onkeyup,onkeydown,onkeypress`,
+      true
+    );
+    const resolveModifiers = (key, modifiers, context, loc) => {
+      const keyModifiers = [];
+      const nonKeyModifiers = [];
+      const eventOptionModifiers = [];
+      for (let i = 0; i < modifiers.length; i++) {
+        const modifier = modifiers[i];
+        if (isEventOptionModifier(modifier)) {
+          eventOptionModifiers.push(modifier);
+        } else {
+          if (maybeKeyModifier(modifier)) {
+            if (isStaticExp(key)) {
+              if (isKeyboardEvent(key.content)) {
+                keyModifiers.push(modifier);
+              } else {
+                nonKeyModifiers.push(modifier);
+              }
+            } else {
+              keyModifiers.push(modifier);
+              nonKeyModifiers.push(modifier);
+            }
+          } else {
+            if (isNonKeyModifier(modifier)) {
+              nonKeyModifiers.push(modifier);
+            } else {
+              keyModifiers.push(modifier);
+            }
+          }
+        }
+      }
+      return {
+        keyModifiers,
+        nonKeyModifiers,
+        eventOptionModifiers
+      };
+    };
+    const transformClick = (key, event) => {
+      const isStaticClick = isStaticExp(key) && key.content.toLowerCase() === "onclick";
+      return isStaticClick ? createSimpleExpression(event, true) : key.type !== 4 ? createCompoundExpression([
+        `(`,
+        key,
+        `) === "onClick" ? "${event}" : (`,
+        key,
+        `)`
+      ]) : key;
+    };
+    const transformOn = (dir, node, context) => {
+      return transformOn$1(dir, node, context, (baseResult) => {
+        const { modifiers } = dir;
+        if (!modifiers.length)
+          return baseResult;
+        let { key, value: handlerExp } = baseResult.props[0];
+        const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc);
+        if (nonKeyModifiers.includes("right")) {
+          key = transformClick(key, `onContextmenu`);
+        }
+        if (nonKeyModifiers.includes("middle")) {
+          key = transformClick(key, `onMouseup`);
+        }
+        if (nonKeyModifiers.length) {
+          handlerExp = createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [
+            handlerExp,
+            JSON.stringify(nonKeyModifiers)
+          ]);
+        }
+        if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard
+        (!isStaticExp(key) || isKeyboardEvent(key.content))) {
+          handlerExp = createCallExpression(context.helper(V_ON_WITH_KEYS), [
+            handlerExp,
+            JSON.stringify(keyModifiers)
+          ]);
+        }
+        if (eventOptionModifiers.length) {
+          const modifierPostfix = eventOptionModifiers.map(capitalize).join("");
+          key = isStaticExp(key) ? createSimpleExpression(`${key.content}${modifierPostfix}`, true) : createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]);
+        }
+        return {
+          props: [createObjectProperty(key, handlerExp)]
+        };
+      });
+    };
+  
+    const transformShow = (dir, node, context) => {
+      const { exp, loc } = dir;
+      if (!exp) {
+        context.onError(
+          createDOMCompilerError(61, loc)
+        );
+      }
+      return {
+        props: [],
+        needRuntime: context.helper(V_SHOW)
+      };
+    };
+  
+    const transformTransition = (node, context) => {
+      if (node.type === 1 && node.tagType === 1) {
+        const component = context.isBuiltInComponent(node.tag);
+        if (component === TRANSITION) {
+          return () => {
+            if (!node.children.length) {
+              return;
+            }
+            if (hasMultipleChildren(node)) {
+              context.onError(
+                createDOMCompilerError(
+                  62,
+                  {
+                    start: node.children[0].loc.start,
+                    end: node.children[node.children.length - 1].loc.end,
+                    source: ""
+                  }
+                )
+              );
+            }
+            const child = node.children[0];
+            if (child.type === 1) {
+              for (const p of child.props) {
+                if (p.type === 7 && p.name === "show") {
+                  node.props.push({
+                    type: 6,
+                    name: "persisted",
+                    value: void 0,
+                    loc: node.loc
+                  });
+                }
+              }
+            }
+          };
+        }
+      }
+    };
+    function hasMultipleChildren(node) {
+      const children = node.children = node.children.filter(
+        (c) => c.type !== 3 && !(c.type === 2 && !c.content.trim())
+      );
+      const child = children[0];
+      return children.length !== 1 || child.type === 11 || child.type === 9 && child.branches.some(hasMultipleChildren);
+    }
+  
+    const ignoreSideEffectTags = (node, context) => {
+      if (node.type === 1 && node.tagType === 0 && (node.tag === "script" || node.tag === "style")) {
+        context.onError(
+          createDOMCompilerError(
+            63,
+            node.loc
+          )
+        );
+        context.removeNode();
+      }
+    };
+  
+    const DOMNodeTransforms = [
+      transformStyle,
+      ...[transformTransition] 
+    ];
+    const DOMDirectiveTransforms = {
+      cloak: noopDirectiveTransform,
+      html: transformVHtml,
+      text: transformVText,
+      model: transformModel,
+      // override compiler-core
+      on: transformOn,
+      // override compiler-core
+      show: transformShow
+    };
+    function compile(template, options = {}) {
+      return baseCompile(
+        template,
+        extend({}, parserOptions, options, {
+          nodeTransforms: [
+            // ignore <script> and <tag>
+            // this is not put inside DOMNodeTransforms because that list is used
+            // by compiler-ssr to generate vnode fallback branches
+            ignoreSideEffectTags,
+            ...DOMNodeTransforms,
+            ...options.nodeTransforms || []
+          ],
+          directiveTransforms: extend(
+            {},
+            DOMDirectiveTransforms,
+            options.directiveTransforms || {}
+          ),
+          transformHoist: null 
+        })
+      );
+    }
+  
+    {
+      initDev();
+    }
+    const compileCache = /* @__PURE__ */ Object.create(null);
+    function compileToFunction(template, options) {
+      if (!isString(template)) {
+        if (template.nodeType) {
+          template = template.innerHTML;
+        } else {
+          warn(`invalid template option: `, template);
+          return NOOP;
+        }
+      }
+      const key = template;
+      const cached = compileCache[key];
+      if (cached) {
+        return cached;
+      }
+      if (template[0] === "#") {
+        const el = document.querySelector(template);
+        if (!el) {
+          warn(`Template element not found or is empty: ${template}`);
+        }
+        template = el ? el.innerHTML : ``;
+      }
+      const opts = extend(
+        {
+          hoistStatic: true,
+          onError: onError ,
+          onWarn: (e) => onError(e, true) 
+        },
+        options
+      );
+      if (!opts.isCustomElement && typeof customElements !== "undefined") {
+        opts.isCustomElement = (tag) => !!customElements.get(tag);
+      }
+      const { code } = compile(template, opts);
+      function onError(err, asWarning = false) {
+        const message = asWarning ? err.message : `Template compilation error: ${err.message}`;
+        const codeFrame = err.loc && generateCodeFrame(
+          template,
+          err.loc.start.offset,
+          err.loc.end.offset
+        );
+        warn(codeFrame ? `${message}
+  ${codeFrame}` : message);
+      }
+      const render = new Function(code)() ;
+      render._rc = true;
+      return compileCache[key] = render;
+    }
+    registerRuntimeCompiler(compileToFunction);
+  
+    exports.BaseTransition = BaseTransition;
+    exports.BaseTransitionPropsValidators = BaseTransitionPropsValidators;
+    exports.Comment = Comment;
+    exports.EffectScope = EffectScope;
+    exports.Fragment = Fragment;
+    exports.KeepAlive = KeepAlive;
+    exports.ReactiveEffect = ReactiveEffect;
+    exports.Static = Static;
+    exports.Suspense = Suspense;
+    exports.Teleport = Teleport;
+    exports.Text = Text;
+    exports.Transition = Transition;
+    exports.TransitionGroup = TransitionGroup;
+    exports.VueElement = VueElement;
+    exports.assertNumber = assertNumber;
+    exports.callWithAsyncErrorHandling = callWithAsyncErrorHandling;
+    exports.callWithErrorHandling = callWithErrorHandling;
+    exports.camelize = camelize;
+    exports.capitalize = capitalize;
+    exports.cloneVNode = cloneVNode;
+    exports.compatUtils = compatUtils;
+    exports.compile = compileToFunction;
+    exports.computed = computed;
+    exports.createApp = createApp;
+    exports.createBlock = createBlock;
+    exports.createCommentVNode = createCommentVNode;
+    exports.createElementBlock = createElementBlock;
+    exports.createElementVNode = createBaseVNode;
+    exports.createHydrationRenderer = createHydrationRenderer;
+    exports.createPropsRestProxy = createPropsRestProxy;
+    exports.createRenderer = createRenderer;
+    exports.createSSRApp = createSSRApp;
+    exports.createSlots = createSlots;
+    exports.createStaticVNode = createStaticVNode;
+    exports.createTextVNode = createTextVNode;
+    exports.createVNode = createVNode;
+    exports.customRef = customRef;
+    exports.defineAsyncComponent = defineAsyncComponent;
+    exports.defineComponent = defineComponent;
+    exports.defineCustomElement = defineCustomElement;
+    exports.defineEmits = defineEmits;
+    exports.defineExpose = defineExpose;
+    exports.defineModel = defineModel;
+    exports.defineOptions = defineOptions;
+    exports.defineProps = defineProps;
+    exports.defineSSRCustomElement = defineSSRCustomElement;
+    exports.defineSlots = defineSlots;
+    exports.effect = effect;
+    exports.effectScope = effectScope;
+    exports.getCurrentInstance = getCurrentInstance;
+    exports.getCurrentScope = getCurrentScope;
+    exports.getTransitionRawChildren = getTransitionRawChildren;
+    exports.guardReactiveProps = guardReactiveProps;
+    exports.h = h;
+    exports.handleError = handleError;
+    exports.hasInjectionContext = hasInjectionContext;
+    exports.hydrate = hydrate;
+    exports.initCustomFormatter = initCustomFormatter;
+    exports.initDirectivesForSSR = initDirectivesForSSR;
+    exports.inject = inject;
+    exports.isMemoSame = isMemoSame;
+    exports.isProxy = isProxy;
+    exports.isReactive = isReactive;
+    exports.isReadonly = isReadonly;
+    exports.isRef = isRef;
+    exports.isRuntimeOnly = isRuntimeOnly;
+    exports.isShallow = isShallow;
+    exports.isVNode = isVNode;
+    exports.markRaw = markRaw;
+    exports.mergeDefaults = mergeDefaults;
+    exports.mergeModels = mergeModels;
+    exports.mergeProps = mergeProps;
+    exports.nextTick = nextTick;
+    exports.normalizeClass = normalizeClass;
+    exports.normalizeProps = normalizeProps;
+    exports.normalizeStyle = normalizeStyle;
+    exports.onActivated = onActivated;
+    exports.onBeforeMount = onBeforeMount;
+    exports.onBeforeUnmount = onBeforeUnmount;
+    exports.onBeforeUpdate = onBeforeUpdate;
+    exports.onDeactivated = onDeactivated;
+    exports.onErrorCaptured = onErrorCaptured;
+    exports.onMounted = onMounted;
+    exports.onRenderTracked = onRenderTracked;
+    exports.onRenderTriggered = onRenderTriggered;
+    exports.onScopeDispose = onScopeDispose;
+    exports.onServerPrefetch = onServerPrefetch;
+    exports.onUnmounted = onUnmounted;
+    exports.onUpdated = onUpdated;
+    exports.openBlock = openBlock;
+    exports.popScopeId = popScopeId;
+    exports.provide = provide;
+    exports.proxyRefs = proxyRefs;
+    exports.pushScopeId = pushScopeId;
+    exports.queuePostFlushCb = queuePostFlushCb;
+    exports.reactive = reactive;
+    exports.readonly = readonly;
+    exports.ref = ref;
+    exports.registerRuntimeCompiler = registerRuntimeCompiler;
+    exports.render = render;
+    exports.renderList = renderList;
+    exports.renderSlot = renderSlot;
+    exports.resolveComponent = resolveComponent;
+    exports.resolveDirective = resolveDirective;
+    exports.resolveDynamicComponent = resolveDynamicComponent;
+    exports.resolveFilter = resolveFilter;
+    exports.resolveTransitionHooks = resolveTransitionHooks;
+    exports.setBlockTracking = setBlockTracking;
+    exports.setDevtoolsHook = setDevtoolsHook;
+    exports.setTransitionHooks = setTransitionHooks;
+    exports.shallowReactive = shallowReactive;
+    exports.shallowReadonly = shallowReadonly;
+    exports.shallowRef = shallowRef;
+    exports.ssrContextKey = ssrContextKey;
+    exports.ssrUtils = ssrUtils;
+    exports.stop = stop;
+    exports.toDisplayString = toDisplayString;
+    exports.toHandlerKey = toHandlerKey;
+    exports.toHandlers = toHandlers;
+    exports.toRaw = toRaw;
+    exports.toRef = toRef;
+    exports.toRefs = toRefs;
+    exports.toValue = toValue;
+    exports.transformVNodeArgs = transformVNodeArgs;
+    exports.triggerRef = triggerRef;
+    exports.unref = unref;
+    exports.useAttrs = useAttrs;
+    exports.useCssModule = useCssModule;
+    exports.useCssVars = useCssVars;
+    exports.useModel = useModel;
+    exports.useSSRContext = useSSRContext;
+    exports.useSlots = useSlots;
+    exports.useTransitionState = useTransitionState;
+    exports.vModelCheckbox = vModelCheckbox;
+    exports.vModelDynamic = vModelDynamic;
+    exports.vModelRadio = vModelRadio;
+    exports.vModelSelect = vModelSelect;
+    exports.vModelText = vModelText;
+    exports.vShow = vShow;
+    exports.version = version;
+    exports.warn = warn;
+    exports.watch = watch;
+    exports.watchEffect = watchEffect;
+    exports.watchPostEffect = watchPostEffect;
+    exports.watchSyncEffect = watchSyncEffect;
+    exports.withAsyncContext = withAsyncContext;
+    exports.withCtx = withCtx;
+    exports.withDefaults = withDefaults;
+    exports.withDirectives = withDirectives;
+    exports.withKeys = withKeys;
+    exports.withMemo = withMemo;
+    exports.withModifiers = withModifiers;
+    exports.withScopeId = withScopeId;
+  
+    return exports;
+  
+  })({});
+  
+  
\ No newline at end of file
diff --git a/customer_list/ch/ai_html/views/extension/index.css b/customer_list/ch/ai_html/views/extension/index.css
index b54baed..c3add6e 100644
--- a/customer_list/ch/ai_html/views/extension/index.css
+++ b/customer_list/ch/ai_html/views/extension/index.css
@@ -10,4 +10,13 @@
     text-align: center;
     border-radius: 50%;
     line-height: var(--size); */
+}
+
+@keyframes spin {
+    0% {
+        transform: rotate(0deg);
+    }
+    100% {
+        transform: rotate(360deg);
+    }
 }
\ No newline at end of file
diff --git a/customer_list/ch/ai_html/views/extension/index.html b/customer_list/ch/ai_html/views/extension/index.html
index 2bdbb67..a7246bf 100644
--- a/customer_list/ch/ai_html/views/extension/index.html
+++ b/customer_list/ch/ai_html/views/extension/index.html
@@ -5,10 +5,13 @@
 		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
 		<title>WI姘村姟鏅鸿兘鍔╂墜鎻掍欢 - 浣犵殑娴忚鍣ˋI鍔╂墜</title>
 		<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
-		<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@unocss/reset/normalize.min.css" />
-		<script src="https://cdn.jsdelivr.net/npm/vue@3.3.4/dist/vue.global.js"></script>
+		<!-- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@unocss/reset/normalize.min.css" /> -->
+		<!-- <script src="https://cdn.jsdelivr.net/npm/vue@3.3.4/dist/vue.global.js"></script>
 		<script src="https://cdn.jsdelivr.net/npm/@unocss/runtime/preset-icons.global.js"></script>
-		<script src="https://cdn.jsdelivr.net/npm/@unocss/runtime/attributify.global.js"></script>
+		<script src="https://cdn.jsdelivr.net/npm/@unocss/runtime/attributify.global.js"></script> -->
+
+		<script src="../../lib/vue-3.3.4.js"></script>
+		<!-- <script id="unocss-attributify" src="../../lib/unocss-attributify.global.js" onload="document.body.style.visibility='visible'"></script> -->
 		<link rel="stylesheet" href="index.css" />
 		<style>
 			* {
@@ -67,122 +70,162 @@
 	</head>
 	<body>
 		<div id="app" class="bg-gradient-to-br from-[#E8F3FF] to-[#E5FFFA] min-h-screen font-sans">
-			<!-- 瀵艰埅鏍� -->
-			<nav class="flex justify-between items-center px-8 py-4">
-				<div class="flex items-center">
-					<img src="https://wi.beng35.com/web/test/static/images/logo/logoWithNoName.png" alt="WI 姘村姟鏅鸿兘鍔╂墜" class="h-8" />
-					<span class="text-gray-600 hover:text-gray-800 transition-colors ml-2">WI 姘村姟鏅鸿兘鍔╂墜</span>
-				</div>
-				<div class="flex items-center gap-8">
-					<a href="https://wi.beng35.com" target="_blank" class="text-gray-600 hover:text-gray-800 transition-colors">WI 缃戦〉绔�</a>
-					<a href="#" class="text-gray-600 hover:text-gray-800 transition-colors" @click.prevent="openModal">瀹夎鏁欑▼</a>
-				</div>
-			</nav>
+			<div v-if="!isLoading">
+				<!-- 瀵艰埅鏍� -->
+				<nav class="flex justify-between items-center px-8 py-4">
+					<div class="flex items-center">
+						<img
+							src="https://wi.beng35.com/web/test/static/images/logo/logoWithNoName.png"
+							alt="WI 姘村姟鏅鸿兘鍔╂墜"
+							style="height: 30px"
+						/>
+						<span class="text-gray-600 hover:text-gray-800 transition-colors ml-2">WI 姘村姟鏅鸿兘鍔╂墜</span>
+					</div>
+					<div class="flex items-center gap-8">
+						<a href="https://wi.beng35.com" target="_blank" class="text-gray-600 hover:text-gray-800 transition-colors">WI 缃戦〉绔�</a>
+						<a href="#" class="text-gray-600 hover:text-gray-800 transition-colors" @click.prevent="openModal">瀹夎鏁欑▼</a>
+					</div>
+				</nav>
 
-			<!-- 涓昏鍐呭鍖� -->
-			<main class="flex flex-col items-center justify-center text-center absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2">
-				<h2 class="text-gray-600 mb-4 text-lg">WI 娴忚鍣ㄦ彃浠�</h2>
-				<h1 class="text-6xl font-bold mb-12 text-gray-800">鏈� WI锛屾湁搴曟皵</h1>
-
-				<!-- 鎸夐挳缁� -->
-				<div class="flex gap-4 mb-12 mt-6">
-					<button
-						class="rounded-full px-8 py-3 flex items-center gap-2 hover:shadow-lg transition-shadow bg-blue-400 text-white active:bg-blue-400 hover:bg-blue-500"
-						@click="handleDownload"
-					>
-						<div class="i-carbon-download text-xl text-gray-600"></div>
-						<span class="text-white">绔嬪嵆涓嬭浇</span>
-					</button>
-				</div>
-			</main>
-
-			<!-- 妯℃�佹 -->
-			<Transition name="fade">
-				<div v-if="showModal" class="fixed inset-0 bg-black/20 backdrop-blur z-50" ></div>
-			</Transition>
-
-			<Transition name="slide">
-				<div
-					v-if="showModal"
-					class="fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 bg-white rounded-3xl p-8 max-w-90% w-800px z-51"
-					@click.stop
+				<!-- 涓昏鍐呭鍖� -->
+				<main
+					class="flex flex-col items-center justify-center text-center absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2"
 				>
-					<!-- 妯℃�佹澶撮儴 -->
-					<div class="flex justify-between items-center mb-8">
-						<h3 class="text-xl font-medium">瀹夎姝ラ</h3>
+					<h2 class="text-gray-600 mb-4 text-lg">WI 娴忚鍣ㄦ彃浠�</h2>
+					<h1 class="text-6xl font-bold mb-12 text-gray-800">鏈� WI锛屾湁搴曟皵</h1>
+
+					<!-- 鎸夐挳缁� -->
+					<div class="flex gap-4 mb-12 mt-6">
 						<button
-							class="w-6 h-6 flex items-center justify-center opacity-50 hover:opacity-100 transition-opacity duration-200"
-							@click="closeModal"
+							class="rounded-full px-8 py-3 flex items-center gap-2 hover:shadow-lg transition-shadow bg-blue-400 text-white active:bg-blue-400 hover:bg-blue-500"
+							@click="handleDownload"
 						>
-							<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
-								<line x1="18" y1="6" x2="6" y2="18"></line>
-								<line x1="6" y1="6" x2="18" y2="18"></line>
-							</svg>
+							<div class="i-carbon-download text-xl text-gray-600"></div>
+							<span class="text-white">绔嬪嵆涓嬭浇</span>
 						</button>
 					</div>
+				</main>
 
-					<!-- 妯℃�佹鍐呭 -->
-					<div class="modal-content">
-						<div
-							v-for="(step, index) in steps"
-							:key="index"
-							class="step gap-4"
-							:class="{ 'flex': currentStep === index, 'hidden': currentStep !== index }"
-						>
-							<div class="h-full flex flex-col w-[500px]">
-								<!-- 姝ラ鏍囬 -->
-								<div class="mt-12 flex items-baseline gap-2 mb-2">
-									<span class="text-2xl font-medium">绗瑊{index + 1}}姝�</span>
-									<span class="text-gray-500 text-sm">/鍏� {{steps.length}} 姝�</span>
-								</div>
-								<div class="flex-auto mt-20">
-									<!-- 姝ラ鎻忚堪 -->
-									<div class="flex-auto text-gray-600 mb-6 text-xs flex flex-col gap-4">
-										<div class="flex items-start gap-2" v-for="(desc, i) in step.desc" :key="i">
-											<span
-												v-if="step.desc.length>1"
-												class="rounded-full text-center size-4 flex-shrink-0 text-white bg-[#1a66ff] inline-block"
-												>{{i + 1}}</span
-											>
-											<p class="desc" :data-index="i + 1" :class="[`before:content-[${index + 1}] before:mr-2`]" class="mb-1">
-												{{ desc }}
-											</p>
+				<!-- 妯℃�佹 -->
+				<Transition name="fade">
+					<div v-if="showModal" class="fixed inset-0 bg-black/20 backdrop-blur z-50"></div>
+				</Transition>
+
+				<Transition name="slide">
+					<div
+						v-if="showModal"
+						class="fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 bg-white rounded-3xl p-8 max-w-90% w-800px z-51"
+						@click.stop
+					>
+						<!-- 妯℃�佹澶撮儴 -->
+						<div class="flex justify-between items-center mb-8">
+							<h3 class="text-xl font-medium">瀹夎姝ラ</h3>
+							<button
+								class="w-6 h-6 flex items-center justify-center opacity-50 hover:opacity-100 transition-opacity duration-200"
+								@click="closeModal"
+							>
+								<svg
+									xmlns="http://www.w3.org/2000/svg"
+									width="24"
+									height="24"
+									viewBox="0 0 24 24"
+									fill="none"
+									stroke="currentColor"
+									stroke-width="2"
+									stroke-linecap="round"
+									stroke-linejoin="round"
+								>
+									<line x1="18" y1="6" x2="6" y2="18"></line>
+									<line x1="6" y1="6" x2="18" y2="18"></line>
+								</svg>
+							</button>
+						</div>
+
+						<!-- 妯℃�佹鍐呭 -->
+						<div class="modal-content">
+							<div
+								v-for="(step, index) in steps"
+								:key="index"
+								class="step gap-4"
+								:class="{ 'flex': currentStep === index, 'hidden': currentStep !== index }"
+							>
+								<div class="h-full flex flex-col w-[500px]">
+									<!-- 姝ラ鏍囬 -->
+									<div class="mt-12 flex items-baseline gap-2 mb-2">
+										<span class="text-2xl font-medium">绗瑊{index + 1}}姝�</span>
+										<span class="text-gray-500 text-sm">/鍏� {{steps.length}} 姝�</span>
+									</div>
+									<div class="flex-auto mt-20">
+										<!-- 姝ラ鎻忚堪 -->
+										<div class="flex-auto text-gray-600 mb-6 text-xs flex flex-col gap-4">
+											<div class="flex items-start gap-2" v-for="(desc, i) in step.desc" :key="i">
+												<span
+													v-if="step.desc.length>1"
+													class="rounded-full text-center size-4 flex-shrink-0 text-white bg-[#1a66ff] inline-block"
+													>{{i + 1}}</span
+												>
+												<p class="desc" :data-index="i + 1" :class="[`before:content-[${index + 1}] before:mr-2`]" class="mb-1">
+													{{ desc }}
+												</p>
+											</div>
 										</div>
 									</div>
 								</div>
-							</div>
 
-							<!-- 姝ラ鍥剧墖 -->
-							<div class="bg-white rounded-2xl">
-								<div class="overflow-hidden rounded-2xl border border-black/10">
-									<img :src="step.image" :alt="`绗�${index + 1}姝" class="w-full" />
+								<!-- 姝ラ鍥剧墖 -->
+								<div class="bg-white rounded-2xl">
+									<div class="overflow-hidden rounded-2xl border border-black/10">
+										<img :src="step.image" :alt="`绗�${index + 1}姝" class="w-full" />
+									</div>
 								</div>
 							</div>
 						</div>
-					</div>
 
-					<!-- 妯℃�佹搴曢儴 -->
-					<div class="flex justify-between mt-8">
-						<button
-							class="px-6 py-2 text-gray-600 rounded-lg hover:bg-black/5 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"
-							:disabled="currentStep === 0"
-							@click="prevStep"
-						>
-							涓婁竴姝�
-						</button>
-						<button
-							class="px-6 py-2 bg-[#1a73e8] text-white rounded-lg hover:bg-[#1557b0] transition-colors disabled:opacity-50 disabled:cursor-not-allowed"
-							@click="nextStep"
-						>
-							{{ currentStep === steps.length - 1 ? '瀹屾垚瀹夎' : '涓嬩竴姝�' }}
-						</button>
+						<!-- 妯℃�佹搴曢儴 -->
+						<div class="flex justify-between mt-8">
+							<button
+								class="px-6 py-2 text-gray-600 rounded-lg hover:bg-black/5 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"
+								:disabled="currentStep === 0"
+								@click="prevStep"
+							>
+								涓婁竴姝�
+							</button>
+							<button
+								class="px-6 py-2 bg-[#1a73e8] text-white rounded-lg hover:bg-[#1557b0] transition-colors disabled:opacity-50 disabled:cursor-not-allowed"
+								@click="nextStep"
+							>
+								{{ currentStep === steps.length - 1 ? '瀹屾垚瀹夎' : '涓嬩竴姝�' }}
+							</button>
+						</div>
 					</div>
+				</Transition>
+			</div>
+			<div v-else>
+				<div class="loading-container" style="display: flex; justify-content: center; align-items: center; height: 100vh">
+					<div
+						class="loading-spinner"
+						style="
+							width: 50px;
+							height: 50px;
+							border: 5px solid #f3f3f3;
+							border-top: 5px solid #3498db;
+							border-radius: 50%;
+							animation: spin 1s linear infinite;
+						"
+					></div>
 				</div>
-			</Transition>
+			</div>
 		</div>
 
 		<script>
 			const { createApp, ref } = Vue;
+			const unocssScript = document.createElement('script');
+			unocssScript.src = '../../lib/unocss-attributify.global.js';
+			document.head.appendChild(unocssScript);
+			const isLoading = ref(true);
+			unocssScript.onload = () => {
+				isLoading.value = false;
+			};
 
 			createApp({
 				setup() {
@@ -243,6 +286,7 @@
 						prevStep,
 						nextStep,
 						handleDownload,
+						isLoading,
 					};
 				},
 			}).mount('#app');

--
Gitblit v1.9.3