diff --git a/06-scalable/404.html b/06-scalable/404.html new file mode 100644 index 0000000..7a48d29 --- /dev/null +++ b/06-scalable/404.html @@ -0,0 +1,21 @@ + + + + Software Architecture + + + + + + + + + + + + + +
+ + + diff --git a/06-scalable/_redirects b/06-scalable/_redirects new file mode 100644 index 0000000..b1cc7b3 --- /dev/null +++ b/06-scalable/_redirects @@ -0,0 +1 @@ +/sa2024/06-scalable/* /sa2024/06-scalable/index.html 200 diff --git a/06-scalable/assets/05-aosa-CHolCvXF.jpg b/06-scalable/assets/05-aosa-CHolCvXF.jpg new file mode 100644 index 0000000..bb2be7b Binary files /dev/null and b/06-scalable/assets/05-aosa-CHolCvXF.jpg differ diff --git a/06-scalable/assets/05-cache-EhhiBFw-.png b/06-scalable/assets/05-cache-EhhiBFw-.png new file mode 100644 index 0000000..ac45eda Binary files /dev/null and b/06-scalable/assets/05-cache-EhhiBFw-.png differ diff --git a/06-scalable/assets/05-cache-cluster-Ditv28-K.png b/06-scalable/assets/05-cache-cluster-Ditv28-K.png new file mode 100644 index 0000000..313a6b8 Binary files /dev/null and b/06-scalable/assets/05-cache-cluster-Ditv28-K.png differ diff --git a/06-scalable/assets/05-cache-redis-BZh8cmdK.png b/06-scalable/assets/05-cache-redis-BZh8cmdK.png new file mode 100644 index 0000000..709de46 Binary files /dev/null and b/06-scalable/assets/05-cache-redis-BZh8cmdK.png differ diff --git a/06-scalable/assets/05-cache-redis-cluster-B8n1awY2.png b/06-scalable/assets/05-cache-redis-cluster-B8n1awY2.png new file mode 100644 index 0000000..ec38b0a Binary files /dev/null and b/06-scalable/assets/05-cache-redis-cluster-B8n1awY2.png differ diff --git a/06-scalable/assets/05-cache-server-Cin3ILZT.png b/06-scalable/assets/05-cache-server-Cin3ILZT.png new file mode 100644 index 0000000..9320743 Binary files /dev/null and b/06-scalable/assets/05-cache-server-Cin3ILZT.png differ diff --git a/06-scalable/assets/05-caching-846YJ8cZ.png b/06-scalable/assets/05-caching-846YJ8cZ.png new file mode 100644 index 0000000..2fd846f Binary files /dev/null and b/06-scalable/assets/05-caching-846YJ8cZ.png differ diff --git a/06-scalable/assets/05-challenge-DwJJv_v8.png b/06-scalable/assets/05-challenge-DwJJv_v8.png new file mode 100644 index 0000000..a018e97 Binary files /dev/null and b/06-scalable/assets/05-challenge-DwJJv_v8.png differ diff --git a/06-scalable/assets/05-consistent-hashing-DuTq1ftT.png b/06-scalable/assets/05-consistent-hashing-DuTq1ftT.png new file mode 100644 index 0000000..6a76ae0 Binary files /dev/null and b/06-scalable/assets/05-consistent-hashing-DuTq1ftT.png differ diff --git a/06-scalable/assets/05-dnsrr-BK8pi5DW.png b/06-scalable/assets/05-dnsrr-BK8pi5DW.png new file mode 100644 index 0000000..10d48e1 Binary files /dev/null and b/06-scalable/assets/05-dnsrr-BK8pi5DW.png differ diff --git a/06-scalable/assets/05-exp-haproxy-CO-RA8Ix.png b/06-scalable/assets/05-exp-haproxy-CO-RA8Ix.png new file mode 100644 index 0000000..9bfaeab Binary files /dev/null and b/06-scalable/assets/05-exp-haproxy-CO-RA8Ix.png differ diff --git a/06-scalable/assets/05-exp-up-CGk2RS4v.png b/06-scalable/assets/05-exp-up-CGk2RS4v.png new file mode 100644 index 0000000..9384473 Binary files /dev/null and b/06-scalable/assets/05-exp-up-CGk2RS4v.png differ diff --git a/06-scalable/assets/05-gatling-CZlERI1R.png b/06-scalable/assets/05-gatling-CZlERI1R.png new file mode 100644 index 0000000..60de173 Binary files /dev/null and b/06-scalable/assets/05-gatling-CZlERI1R.png differ diff --git a/06-scalable/assets/05-haproxy-YJHp5RCO.png b/06-scalable/assets/05-haproxy-YJHp5RCO.png new file mode 100644 index 0000000..32ac335 Binary files /dev/null and b/06-scalable/assets/05-haproxy-YJHp5RCO.png differ diff --git a/06-scalable/assets/05-jib-uHYfMv6U.png b/06-scalable/assets/05-jib-uHYfMv6U.png new file mode 100644 index 0000000..8afc378 Binary files /dev/null and b/06-scalable/assets/05-jib-uHYfMv6U.png differ diff --git a/06-scalable/assets/05-lb-SSvWQota.png b/06-scalable/assets/05-lb-SSvWQota.png new file mode 100644 index 0000000..3d582c6 Binary files /dev/null and b/06-scalable/assets/05-lb-SSvWQota.png differ diff --git a/06-scalable/assets/05-lb-l3-DBZvBmdt.png b/06-scalable/assets/05-lb-l3-DBZvBmdt.png new file mode 100644 index 0000000..ddb11fe Binary files /dev/null and b/06-scalable/assets/05-lb-l3-DBZvBmdt.png differ diff --git a/06-scalable/assets/05-lb-l4-DfzXSXlQ.png b/06-scalable/assets/05-lb-l4-DfzXSXlQ.png new file mode 100644 index 0000000..42fd031 Binary files /dev/null and b/06-scalable/assets/05-lb-l4-DfzXSXlQ.png differ diff --git a/06-scalable/assets/05-lb-simple-C_LK4xk9.png b/06-scalable/assets/05-lb-simple-C_LK4xk9.png new file mode 100644 index 0000000..bb02f4d Binary files /dev/null and b/06-scalable/assets/05-lb-simple-C_LK4xk9.png differ diff --git a/06-scalable/assets/05-lb347-CHBPpRWG.png b/06-scalable/assets/05-lb347-CHBPpRWG.png new file mode 100644 index 0000000..4a847a7 Binary files /dev/null and b/06-scalable/assets/05-lb347-CHBPpRWG.png differ diff --git a/06-scalable/assets/05-loadtesting-COkcLUc3.png b/06-scalable/assets/05-loadtesting-COkcLUc3.png new file mode 100644 index 0000000..ee594f1 Binary files /dev/null and b/06-scalable/assets/05-loadtesting-COkcLUc3.png differ diff --git a/06-scalable/assets/05-nslookup-CzF82Wf7.png b/06-scalable/assets/05-nslookup-CzF82Wf7.png new file mode 100644 index 0000000..53581eb Binary files /dev/null and b/06-scalable/assets/05-nslookup-CzF82Wf7.png differ diff --git a/06-scalable/assets/05-pi-PZGyONFv.png b/06-scalable/assets/05-pi-PZGyONFv.png new file mode 100644 index 0000000..ad3037e Binary files /dev/null and b/06-scalable/assets/05-pi-PZGyONFv.png differ diff --git a/06-scalable/assets/05-redis-cluster-manual-xKehjmN2.png b/06-scalable/assets/05-redis-cluster-manual-xKehjmN2.png new file mode 100644 index 0000000..d7a8795 Binary files /dev/null and b/06-scalable/assets/05-redis-cluster-manual-xKehjmN2.png differ diff --git a/06-scalable/assets/05-redis-create-auto-CF7_nNKX.png b/06-scalable/assets/05-redis-create-auto-CF7_nNKX.png new file mode 100644 index 0000000..4a1c60e Binary files /dev/null and b/06-scalable/assets/05-redis-create-auto-CF7_nNKX.png differ diff --git a/06-scalable/assets/05-redis-create-conf-ltYIXHfe.png b/06-scalable/assets/05-redis-create-conf-ltYIXHfe.png new file mode 100644 index 0000000..b2f088d Binary files /dev/null and b/06-scalable/assets/05-redis-create-conf-ltYIXHfe.png differ diff --git a/06-scalable/assets/05-redis-download-BaUV66gY.png b/06-scalable/assets/05-redis-download-BaUV66gY.png new file mode 100644 index 0000000..70038c0 Binary files /dev/null and b/06-scalable/assets/05-redis-download-BaUV66gY.png differ diff --git a/06-scalable/assets/05-redis-hash-slots-DQSPPdvj.png b/06-scalable/assets/05-redis-hash-slots-DQSPPdvj.png new file mode 100644 index 0000000..277dd55 Binary files /dev/null and b/06-scalable/assets/05-redis-hash-slots-DQSPPdvj.png differ diff --git a/06-scalable/assets/05-scale-out-C0l34FFD.png b/06-scalable/assets/05-scale-out-C0l34FFD.png new file mode 100644 index 0000000..cc209bc Binary files /dev/null and b/06-scalable/assets/05-scale-out-C0l34FFD.png differ diff --git a/06-scalable/assets/05-scale-up-CnmLtcYa.png b/06-scalable/assets/05-scale-up-CnmLtcYa.png new file mode 100644 index 0000000..3018ee1 Binary files /dev/null and b/06-scalable/assets/05-scale-up-CnmLtcYa.png differ diff --git a/06-scalable/assets/05-session-Di7buRZv.png b/06-scalable/assets/05-session-Di7buRZv.png new file mode 100644 index 0000000..bb201fe Binary files /dev/null and b/06-scalable/assets/05-session-Di7buRZv.png differ diff --git a/06-scalable/assets/05-session-cluster-DYYKMZqY.png b/06-scalable/assets/05-session-cluster-DYYKMZqY.png new file mode 100644 index 0000000..fbb2e01 Binary files /dev/null and b/06-scalable/assets/05-session-cluster-DYYKMZqY.png differ diff --git a/06-scalable/assets/05-session-jdbc-idxYzz6G.png b/06-scalable/assets/05-session-jdbc-idxYzz6G.png new file mode 100644 index 0000000..7924ce1 Binary files /dev/null and b/06-scalable/assets/05-session-jdbc-idxYzz6G.png differ diff --git a/06-scalable/assets/05-session-redis-DYMGsWTE.png b/06-scalable/assets/05-session-redis-DYMGsWTE.png new file mode 100644 index 0000000..58db99d Binary files /dev/null and b/06-scalable/assets/05-session-redis-DYMGsWTE.png differ diff --git a/06-scalable/assets/05-session-stickiness-C7HR9ZNC.png b/06-scalable/assets/05-session-stickiness-C7HR9ZNC.png new file mode 100644 index 0000000..bc5cb23 Binary files /dev/null and b/06-scalable/assets/05-session-stickiness-C7HR9ZNC.png differ diff --git a/06-scalable/assets/05-spring-cache-Cet2aHIV.png b/06-scalable/assets/05-spring-cache-Cet2aHIV.png new file mode 100644 index 0000000..ae5f800 Binary files /dev/null and b/06-scalable/assets/05-spring-cache-Cet2aHIV.png differ diff --git a/06-scalable/assets/05-tomcat-cluster-A2_PCDkn.png b/06-scalable/assets/05-tomcat-cluster-A2_PCDkn.png new file mode 100644 index 0000000..ccc962d Binary files /dev/null and b/06-scalable/assets/05-tomcat-cluster-A2_PCDkn.png differ diff --git a/06-scalable/assets/05-virtualization-CBnZdy9Q.png b/06-scalable/assets/05-virtualization-CBnZdy9Q.png new file mode 100644 index 0000000..768b5b4 Binary files /dev/null and b/06-scalable/assets/05-virtualization-CBnZdy9Q.png differ diff --git a/06-scalable/assets/DrawingControls-BO6lw4N5.css b/06-scalable/assets/DrawingControls-BO6lw4N5.css new file mode 100644 index 0000000..beec79d --- /dev/null +++ b/06-scalable/assets/DrawingControls-BO6lw4N5.css @@ -0,0 +1 @@ +.resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper__popper{z-index:10000;top:0;left:0;outline:none}.v-popper__popper.v-popper__popper--hidden{visibility:hidden;opacity:0;transition:opacity .15s,visibility .15s;pointer-events:none}.v-popper__popper.v-popper__popper--shown{visibility:visible;opacity:1;transition:opacity .15s}.v-popper__popper.v-popper__popper--skip-transition,.v-popper__popper.v-popper__popper--skip-transition>.v-popper__wrapper{transition:none!important}.v-popper__backdrop{position:absolute;top:0;left:0;width:100%;height:100%;display:none}.v-popper__inner{position:relative;box-sizing:border-box;overflow-y:auto}.v-popper__inner>div{position:relative;z-index:1;max-width:inherit;max-height:inherit}.v-popper__arrow-container{position:absolute;width:10px;height:10px}.v-popper__popper--arrow-overflow .v-popper__arrow-container,.v-popper__popper--no-positioning .v-popper__arrow-container{display:none}.v-popper__arrow-inner,.v-popper__arrow-outer{border-style:solid;position:absolute;top:0;left:0;width:0;height:0}.v-popper__arrow-inner{visibility:hidden;border-width:7px}.v-popper__arrow-outer{border-width:6px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{left:-2px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{left:-1px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer{border-bottom-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:0}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{border-top-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-top-color:transparent!important}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{top:-4px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{top:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{top:-1px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{border-left-width:0;border-left-color:transparent!important;border-top-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{left:-4px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{left:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer{border-right-width:0;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner{left:-2px}.v-popper--theme-tooltip .v-popper__inner{background:#000c;color:#fff;border-radius:6px;padding:7px 12px 6px}.v-popper--theme-tooltip .v-popper__arrow-outer{border-color:#000c}.v-popper--theme-dropdown .v-popper__inner{background:#fff;color:#000;border-radius:6px;border:1px solid #ddd;box-shadow:0 6px 30px #0000001a}.v-popper--theme-dropdown .v-popper__arrow-inner{visibility:visible;border-color:#fff}.v-popper--theme-dropdown .v-popper__arrow-outer{border-color:#ddd}.v-popper--theme-menu .v-popper__arrow-inner{border-color:#9ca3af33} diff --git a/06-scalable/assets/NoteDisplay-C6AkVv8T.css b/06-scalable/assets/NoteDisplay-C6AkVv8T.css new file mode 100644 index 0000000..74ddf96 --- /dev/null +++ b/06-scalable/assets/NoteDisplay-C6AkVv8T.css @@ -0,0 +1 @@ +.slidev-note :first-child{margin-top:0} diff --git a/06-scalable/assets/SlidesShow-Do3DTZt5.css b/06-scalable/assets/SlidesShow-Do3DTZt5.css new file mode 100644 index 0000000..4ca12c5 --- /dev/null +++ b/06-scalable/assets/SlidesShow-Do3DTZt5.css @@ -0,0 +1 @@ +#slide-container{position:relative;break-after:page;overflow:hidden}#slide-content{position:relative;position:absolute;left:50%;top:50%;overflow:hidden;--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity))}.dark #slide-content{--un-bg-opacity:1;background-color:rgb(18 18 18 / var(--un-bg-opacity))}.autocomplete-list[data-v-9ed224f5]{margin-top:.25rem;--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity));overflow:auto;max-height:calc(100vh - 100px)}.dark .autocomplete-list[data-v-9ed224f5]{--un-bg-opacity:1;background-color:rgb(18 18 18 / var(--un-bg-opacity))}.autocomplete[data-v-9ed224f5]{cursor:pointer}.select-list[data-v-38e64e7e]{padding-top:.5rem;padding-bottom:.5rem}.item[data-v-38e64e7e]{display:flex;cursor:default;white-space:nowrap;border-radius:.25rem;padding:.25rem 1rem}.item svg[data-v-38e64e7e]{margin-top:auto;margin-bottom:auto;margin-right:.25rem;margin-left:-.5rem}.item[data-v-38e64e7e]:hover{--un-bg-opacity:1;background-color:rgb(156 163 175 / var(--un-bg-opacity));--un-bg-opacity:.1}.title[data-v-38e64e7e]{padding:.25rem 1.75rem;font-size:.75rem;line-height:1rem;letter-spacing:.1em;text-transform:uppercase;opacity:.5}#slideshow[data-v-2fe83b23]{height:100%}#slideshow>div[data-v-2fe83b23]{position:absolute;height:100%;width:100%} diff --git a/06-scalable/assets/index-BVCbtGme.js b/06-scalable/assets/index-BVCbtGme.js new file mode 100644 index 0000000..4ba1915 --- /dev/null +++ b/06-scalable/assets/index-BVCbtGme.js @@ -0,0 +1,54 @@ +import{n as He,y as Wi,z as y,A as Vi,t as U,B as le,C as $e,D as qi,E as Yi,G as Ki,H as Gi,I as h,J as v,K as Zi,L as Xi,M as Ji,N as Qi,O as ce,P as pn,Q as ta,R as ea,d as ds,b as Ne,e as r,f as Fe,h as Kn,o as C,c as M,k as w,q as D,s as T,S as x,i as Ze,T as sa,U as na,V as ia,g as aa,l as be,m as we,W as Ks,X as ra,Y as la,Z as oa,_ as ca,$ as ha,a0 as ua,a1 as da,a2 as et,a3 as Gn,a4 as pa,a5 as ps,a6 as fa,a7 as ga,a8 as ma,r as _a,a9 as ka,aa as ya,u as va}from"./modules/vue-CoY6Ph6S.js";import{_ as ba,a as wa}from"./modules/unplugin-icons-DdL09wdV.js";import{T as xa}from"./modules/shiki-CNrqLFow.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const a of i)if(a.type==="childList")for(const l of a.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&n(l)}).observe(document,{childList:!0,subtree:!0});function s(i){const a={};return i.integrity&&(a.integrity=i.integrity),i.referrerPolicy&&(a.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?a.credentials="include":i.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function n(i){if(i.ep)return;i.ep=!0;const a=s(i);fetch(i.href,a)}})();function Ds(t,e={},s){for(const n in t){const i=t[n],a=s?`${s}:${n}`:n;typeof i=="object"&&i!==null?Ds(i,e,a):typeof i=="function"&&(e[a]=i)}return e}const $a={run:t=>t()},Ca=()=>$a,Zn=typeof console.createTask<"u"?console.createTask:Ca;function Aa(t,e){const s=e.shift(),n=Zn(s);return t.reduce((i,a)=>i.then(()=>n.run(()=>a(...e))),Promise.resolve())}function Sa(t,e){const s=e.shift(),n=Zn(s);return Promise.all(t.map(i=>n.run(()=>i(...e))))}function vs(t,e){for(const s of[...t])s(e)}class Ma{constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(e,s,n={}){if(!e||typeof s!="function")return()=>{};const i=e;let a;for(;this._deprecatedHooks[e];)a=this._deprecatedHooks[e],e=a.to;if(a&&!n.allowDeprecated){let l=a.message;l||(l=`${i} hook has been deprecated`+(a.to?`, please use ${a.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(l)||(console.warn(l),this._deprecatedMessages.add(l))}if(!s.name)try{Object.defineProperty(s,"name",{get:()=>"_"+e.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[e]=this._hooks[e]||[],this._hooks[e].push(s),()=>{s&&(this.removeHook(e,s),s=void 0)}}hookOnce(e,s){let n,i=(...a)=>(typeof n=="function"&&n(),n=void 0,i=void 0,s(...a));return n=this.hook(e,i),n}removeHook(e,s){if(this._hooks[e]){const n=this._hooks[e].indexOf(s);n!==-1&&this._hooks[e].splice(n,1),this._hooks[e].length===0&&delete this._hooks[e]}}deprecateHook(e,s){this._deprecatedHooks[e]=typeof s=="string"?{to:s}:s;const n=this._hooks[e]||[];delete this._hooks[e];for(const i of n)this.hook(e,i)}deprecateHooks(e){Object.assign(this._deprecatedHooks,e);for(const s in e)this.deprecateHook(s,e[s])}addHooks(e){const s=Ds(e),n=Object.keys(s).map(i=>this.hook(i,s[i]));return()=>{for(const i of n.splice(0,n.length))i()}}removeHooks(e){const s=Ds(e);for(const n in s)this.removeHook(n,s[n])}removeAllHooks(){for(const e in this._hooks)delete this._hooks[e]}callHook(e,...s){return s.unshift(e),this.callHookWith(Aa,e,...s)}callHookParallel(e,...s){return s.unshift(e),this.callHookWith(Sa,e,...s)}callHookWith(e,s,...n){const i=this._before||this._after?{name:s,args:n,context:{}}:void 0;this._before&&vs(this._before,i);const a=e(s in this._hooks?[...this._hooks[s]]:[],n);return a instanceof Promise?a.finally(()=>{this._after&&i&&vs(this._after,i)}):(this._after&&i&&vs(this._after,i),a)}beforeEach(e){return this._before=this._before||[],this._before.push(e),()=>{if(this._before!==void 0){const s=this._before.indexOf(e);s!==-1&&this._before.splice(s,1)}}}afterEach(e){return this._after=this._after||[],this._after.push(e),()=>{if(this._after!==void 0){const s=this._after.indexOf(e);s!==-1&&this._after.splice(s,1)}}}}function Ea(){return new Ma}function Pa(t){return Array.isArray(t)?t:[t]}const Da=["title","titleTemplate","script","style","noscript"],Xe=["base","meta","link","style","script","noscript"],Ta=["title","titleTemplate","templateParams","base","htmlAttrs","bodyAttrs","meta","link","style","script","noscript"],La=["base","title","titleTemplate","bodyAttrs","htmlAttrs","templateParams"],Xn=["tagPosition","tagPriority","tagDuplicateStrategy","children","innerHTML","textContent","processTemplateParams"],Ba=typeof window<"u";function Gs(t){let e=9;for(let s=0;s>>9)+65536).toString(16).substring(1,8).toLowerCase()}function fn(t){return t._h||Gs(t._d?t._d:`${t.tag}:${t.textContent||t.innerHTML||""}:${Object.entries(t.props).map(([e,s])=>`${e}:${String(s)}`).join(",")}`)}function Jn(t,e){const{props:s,tag:n}=t;if(La.includes(n))return n;if(n==="link"&&s.rel==="canonical")return"canonical";if(s.charset)return"charset";const i=["id"];n==="meta"&&i.push("name","property","http-equiv");for(const a of i)if(typeof s[a]<"u"){const l=String(s[a]);return e&&!e(l)?!1:`${n}:${a}:${l}`}return!1}function gn(t,e){return t==null?e||null:typeof t=="function"?t(e):t}async function Oa(t,e,s){const n={tag:t,props:await Qn(typeof e=="object"&&typeof e!="function"&&!(e instanceof Promise)?{...e}:{[["script","noscript","style"].includes(t)?"innerHTML":"textContent"]:e},["templateParams","titleTemplate"].includes(t))};return Xn.forEach(i=>{const a=typeof n.props[i]<"u"?n.props[i]:s[i];typeof a<"u"&&((!["innerHTML","textContent","children"].includes(i)||Da.includes(n.tag))&&(n[i==="children"?"innerHTML":i]=a),delete n.props[i])}),n.props.body&&(n.tagPosition="bodyClose",delete n.props.body),n.tag==="script"&&typeof n.innerHTML=="object"&&(n.innerHTML=JSON.stringify(n.innerHTML),n.props.type=n.props.type||"application/json"),Array.isArray(n.props.content)?n.props.content.map(i=>({...n,props:{...n.props,content:i}})):n}function Ia(t){return typeof t=="object"&&!Array.isArray(t)&&(t=Object.keys(t).filter(e=>t[e])),(Array.isArray(t)?t.join(" "):t).split(" ").filter(e=>e.trim()).filter(Boolean).join(" ")}async function Qn(t,e){for(const s of Object.keys(t)){if(s==="class"){t[s]=Ia(t[s]);continue}if(t[s]instanceof Promise&&(t[s]=await t[s]),!e&&!Xn.includes(s)){const n=String(t[s]),i=s.startsWith("data-");n==="true"||n===""?t[s]=i?"true":!0:t[s]||(i&&n==="false"?t[s]="false":delete t[s])}}return t}const Ha=10;async function Na(t){const e=[];return Object.entries(t.resolvedInput).filter(([s,n])=>typeof n<"u"&&Ta.includes(s)).forEach(([s,n])=>{const i=Pa(n);e.push(...i.map(a=>Oa(s,a,t)).flat())}),(await Promise.all(e)).flat().filter(Boolean).map((s,n)=>(s._e=t._i,t.mode&&(s._m=t.mode),s._p=(t._i<c&&c[u]||void 0,e):o=e[l],typeof o<"u"?(o||"").replace(/"/g,'\\"'):!1}let i=t;try{i=decodeURI(t)}catch{}return(i.match(/%(\w+\.+\w+)|%(\w+)/g)||[]).sort().reverse().forEach(l=>{const o=n(l.slice(1));typeof o=="string"&&(t=t.replace(new RegExp(`\\${l}(\\W|$)`,"g"),(c,u)=>`${o}${u}`).trim())}),t.includes(ae)&&(t.endsWith(ae)&&(t=t.slice(0,-ae.length).trim()),t.startsWith(ae)&&(t=t.slice(ae.length).trim()),t=t.replace(new RegExp(`\\${ae}\\s*\\${ae}`,"g"),ae),t=Je(t,{separator:s},s)),t}async function Ra(t){const e={tag:t.tagName.toLowerCase(),props:await Qn(t.getAttributeNames().reduce((s,n)=>({...s,[n]:t.getAttribute(n)}),{})),innerHTML:t.innerHTML};return e._d=Jn(e),e}async function ja(t,e={}){var d;const s=e.document||t.resolvedOptions.document;if(!s)return;const n={shouldRender:t.dirty,tags:[]};if(await t.hooks.callHook("dom:beforeRender",n),!n.shouldRender)return;const i=(await t.resolveTags()).map(p=>({tag:p,id:Xe.includes(p.tag)?fn(p):p.tag,shouldRender:!0}));let a=t._dom;if(!a){a={elMap:{htmlAttrs:s.documentElement,bodyAttrs:s.body}};for(const p of["body","head"]){const g=(d=s==null?void 0:s[p])==null?void 0:d.children;for(const f of[...g].filter(m=>Xe.includes(m.tagName.toLowerCase())))a.elMap[f.getAttribute("data-hid")||fn(await Ra(f))]=f}}a.pendingSideEffects={...a.sideEffects||{}},a.sideEffects={};function l(p,g,f){const m=`${p}:${g}`;a.sideEffects[m]=f,delete a.pendingSideEffects[m]}function o({id:p,$el:g,tag:f}){const m=f.tag.endsWith("Attrs");a.elMap[p]=g,m||(["textContent","innerHTML"].forEach(_=>{f[_]&&f[_]!==g[_]&&(g[_]=f[_])}),l(p,"el",()=>{a.elMap[p].remove(),delete a.elMap[p]})),Object.entries(f.props).forEach(([_,k])=>{const b=`attr:${_}`;if(_==="class")for(const A of(k||"").split(" ").filter(Boolean))m&&l(p,`${b}:${A}`,()=>g.classList.remove(A)),!g.classList.contains(A)&&g.classList.add(A);else g.getAttribute(_)!==k&&g.setAttribute(_,k===!0?"":String(k)),m&&l(p,b,()=>g.removeAttribute(_))})}const c=[],u={bodyClose:void 0,bodyOpen:void 0,head:void 0};for(const p of i){const{tag:g,shouldRender:f,id:m}=p;if(f){if(g.tag==="title"){s.title=g.textContent;continue}p.$el=p.$el||a.elMap[m],p.$el?o(p):Xe.includes(g.tag)&&c.push(p)}}for(const p of c){const g=p.tag.tagPosition||"head";p.$el=s.createElement(p.tag.tag),o(p),u[g]=u[g]||s.createDocumentFragment(),u[g].appendChild(p.$el)}for(const p of i)await t.hooks.callHook("dom:renderTag",p,s,l);u.head&&s.head.appendChild(u.head),u.bodyOpen&&s.body.insertBefore(u.bodyOpen,s.body.firstChild),u.bodyClose&&s.body.appendChild(u.bodyClose),Object.values(a.pendingSideEffects).forEach(p=>p()),t._dom=a,t.dirty=!1,await t.hooks.callHook("dom:rendered",{renders:i})}async function Ua(t,e={}){const s=e.delayFn||(n=>setTimeout(n,10));return t._domUpdatePromise=t._domUpdatePromise||new Promise(n=>s(async()=>{await ja(t,e),delete t._domUpdatePromise,n()}))}function za(t){return e=>{var n,i;const s=((i=(n=e.resolvedOptions.document)==null?void 0:n.head.querySelector('script[id="unhead:payload"]'))==null?void 0:i.innerHTML)||!1;return s&&e.push(JSON.parse(s)),{mode:"client",hooks:{"entries:updated":function(a){Ua(a,t)}}}}}const Wa=["templateParams","htmlAttrs","bodyAttrs"],Va={hooks:{"tag:normalise":function({tag:t}){["hid","vmid","key"].forEach(n=>{t.props[n]&&(t.key=t.props[n],delete t.props[n])});const s=Jn(t)||(t.key?`${t.tag}:${t.key}`:!1);s&&(t._d=s)},"tags:resolve":function(t){const e={};t.tags.forEach(n=>{const i=(n.key?`${n.tag}:${n.key}`:n._d)||n._p,a=e[i];if(a){let o=n==null?void 0:n.tagDuplicateStrategy;if(!o&&Wa.includes(n.tag)&&(o="merge"),o==="merge"){const c=a.props;["class","style"].forEach(u=>{c[u]&&(n.props[u]?(u==="style"&&!c[u].endsWith(";")&&(c[u]+=";"),n.props[u]=`${c[u]} ${n.props[u]}`):n.props[u]=c[u])}),e[i].props={...c,...n.props};return}else if(n._e===a._e){a._duped=a._duped||[],n._d=`${a._d}:${a._duped.length+1}`,a._duped.push(n);return}else if(ss(n)>ss(a))return}const l=Object.keys(n.props).length+(n.innerHTML?1:0)+(n.textContent?1:0);if(Xe.includes(n.tag)&&l===0){delete e[i];return}e[i]=n});const s=[];Object.values(e).forEach(n=>{const i=n._duped;delete n._duped,s.push(n),i&&s.push(...i)}),t.tags=s,t.tags=t.tags.filter(n=>!(n.tag==="meta"&&(n.props.name||n.props.property)&&!n.props.content))}}},qa={mode:"server",hooks:{"tags:resolve":function(t){const e={};t.tags.filter(s=>["titleTemplate","templateParams","title"].includes(s.tag)&&s._m==="server").forEach(s=>{e[s.tag]=s.tag.startsWith("title")?s.textContent:s.props}),Object.keys(e).length&&t.tags.push({tag:"script",innerHTML:JSON.stringify(e),props:{id:"unhead:payload",type:"application/json"}})}}},Ya=["script","link","bodyAttrs"];function Ka(t){const e={},s={};return Object.entries(t.props).forEach(([n,i])=>{n.startsWith("on")&&typeof i=="function"?(ti.includes(n)&&(e[n]=`this.dataset.${n} = true`),s[n]=i):e[n]=i}),{props:e,eventHandlers:s}}const Ga=t=>({hooks:{"tags:resolve":function(e){for(const s of e.tags)if(Ya.includes(s.tag)){const{props:n,eventHandlers:i}=Ka(s);s.props=n,Object.keys(i).length&&((s.props.src||s.props.href)&&(s.key=s.key||Gs(s.props.src||s.props.href)),s._eventHandlers=i)}},"dom:renderTag":function(e,s,n){if(!e.tag._eventHandlers)return;const i=e.tag.tag==="bodyAttrs"?s.defaultView:e.$el;Object.entries(e.tag._eventHandlers).forEach(([a,l])=>{const o=`${e.tag._d||e.tag._p}:${a}`,c=a.slice(2).toLowerCase(),u=`data-h-${c}`;if(n(e.id,o,()=>{}),e.$el.hasAttribute(u))return;e.$el.setAttribute(u,"");let d;const p=g=>{l(g),d==null||d.disconnect()};a in e.$el.dataset?p(new Event(a.replace("on",""))):ti.includes(a)&&typeof MutationObserver<"u"?(d=new MutationObserver(g=>{g.some(m=>m.attributeName===`data-${a}`)&&(p(new Event(a.replace("on",""))),d==null||d.disconnect())}),d.observe(e.$el,{attributes:!0})):i.addEventListener(c,p),n(e.id,o,()=>{d==null||d.disconnect(),i.removeEventListener(c,p),e.$el.removeAttribute(u)})})}}}),Za=["link","style","script","noscript"],Xa={hooks:{"tag:normalise":({tag:t})=>{t.key&&Za.includes(t.tag)&&(t.props["data-hid"]=t._h=Gs(t.key))}}},Ja={hooks:{"tags:resolve":t=>{const e=s=>{var n;return(n=t.tags.find(i=>i._d===s))==null?void 0:n._p};for(const{prefix:s,offset:n}of Fa)for(const i of t.tags.filter(a=>typeof a.tagPriority=="string"&&a.tagPriority.startsWith(s))){const a=e(i.tagPriority.replace(s,""));typeof a<"u"&&(i._p=a+n)}t.tags.sort((s,n)=>s._p-n._p).sort((s,n)=>ss(s)-ss(n))}}},Qa={meta:"content",link:"href",htmlAttrs:"lang"},tr=t=>({hooks:{"tags:resolve":e=>{var o;const{tags:s}=e,n=(o=s.find(c=>c.tag==="title"))==null?void 0:o.textContent,i=s.findIndex(c=>c.tag==="templateParams"),a=i!==-1?s[i].props:{},l=a.separator||"|";delete a.separator,a.pageTitle=Je(a.pageTitle||n||"",a,l);for(const c of s.filter(u=>u.processTemplateParams!==!1)){const u=Qa[c.tag];u&&typeof c.props[u]=="string"?c.props[u]=Je(c.props[u],a,l):(c.processTemplateParams===!0||["titleTemplate","title"].includes(c.tag))&&["innerHTML","textContent"].forEach(d=>{typeof c[d]=="string"&&(c[d]=Je(c[d],a,l))})}t._templateParams=a,t._separator=l,e.tags=s.filter(c=>c.tag!=="templateParams")}}}),er={hooks:{"tags:resolve":t=>{const{tags:e}=t;let s=e.findIndex(i=>i.tag==="titleTemplate");const n=e.findIndex(i=>i.tag==="title");if(n!==-1&&s!==-1){const i=gn(e[s].textContent,e[n].textContent);i!==null?e[n].textContent=i||e[n].textContent:delete e[n]}else if(s!==-1){const i=gn(e[s].textContent);i!==null&&(e[s].textContent=i,e[s].tag="title",s=-1)}s!==-1&&delete e[s],t.tags=e.filter(Boolean)}}},sr={hooks:{"tags:afterResolve":function(t){for(const e of t.tags)typeof e.innerHTML=="string"&&(e.innerHTML&&["application/ld+json","application/json"].includes(e.props.type)?e.innerHTML=e.innerHTML.replace(/{o.dirty=!0,e.callHook("entries:updated",o)};let i=0,a=[];const l=[],o={plugins:l,dirty:!1,resolvedOptions:t,hooks:e,headEntries(){return a},use(c){const u=typeof c=="function"?c(o):c;(!u.key||!l.some(d=>d.key===u.key))&&(l.push(u),kn(u.mode,s)&&e.addHooks(u.hooks||{}))},push(c,u){u==null||delete u.head;const d={_i:i++,input:c,...u};return kn(d.mode,s)&&(a.push(d),n()),{dispose(){a=a.filter(p=>p._i!==d._i),e.callHook("entries:updated",o),n()},patch(p){a=a.map(g=>(g._i===d._i&&(g.input=d.input=p),g)),n()}}},async resolveTags(){const c={tags:[],entries:[...a]};await e.callHook("entries:resolve",c);for(const u of c.entries){const d=u.resolvedInput||u.input;if(u.resolvedInput=await(u.transform?u.transform(d):d),u.resolvedInput)for(const p of await Na(u)){const g={tag:p,entry:u,resolvedOptions:o.resolvedOptions};await e.callHook("tag:normalise",g),c.tags.push(g.tag)}}return await e.callHook("tags:beforeResolve",c),await e.callHook("tags:resolve",c),await e.callHook("tags:afterResolve",c),c.tags},ssr:s};return[Va,qa,Ga,Xa,Ja,tr,er,sr,...(t==null?void 0:t.plugins)||[]].forEach(c=>o.use(c)),o.hooks.callHook("init",o),o}function ar(){return ei}const rr=Wi.startsWith("3");function lr(t){return typeof t=="function"?t():y(t)}function ns(t,e=""){if(t instanceof Promise)return t;const s=lr(t);return!t||!s?s:Array.isArray(s)?s.map(n=>ns(n,e)):typeof s=="object"?Object.fromEntries(Object.entries(s).map(([n,i])=>n==="titleTemplate"||n.startsWith("on")?[n,y(i)]:[n,ns(i,n)])):s}const or={hooks:{"entries:resolve":function(t){for(const e of t.entries)e.resolvedInput=ns(e.input)}}},si="usehead";function cr(t){return{install(s){rr&&(s.config.globalProperties.$unhead=t,s.config.globalProperties.$head=t,s.provide(si,t))}}.install}function hr(t={}){t.domDelayFn=t.domDelayFn||(s=>He(()=>setTimeout(()=>s(),0)));const e=nr(t);return e.use(or),e.install=cr(e),e}const yn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},vn="__unhead_injection_handler__";function ur(){if(vn in yn)return yn[vn]();const t=Vi(si);return t||console.warn("Unhead is missing Vue context, falling back to shared context. This may have unexpected results."),t||ar()}function dr(t,e={}){const s=e.head||ur();if(s)return s.ssr?s.push(t,e):pr(s,t,e)}function pr(t,e,s={}){const n=U(!1),i=U({});le(()=>{i.value=n.value?{}:ns(e)});const a=t.push(i.value,s);return $e(i,o=>{a.patch(o)}),Gi()&&(qi(()=>{a.dispose()}),Yi(()=>{n.value=!0}),Ki(()=>{n.value=!1})),a}function fr(...t){return mr(t).reduce((e,s)=>e+s,0)}function gr(t){return t=t??[],Array.isArray(t)?t:[t]}function mr(t){return gr(t).flat(1)}function _r(t){return t!=null}function kr(t,e){return Object.fromEntries(Object.entries(t).map(([s,n])=>e(s,n)).filter(_r))}const N={theme:"default",title:"Software Architecture",titleTemplate:"%s - Slidev",addons:[],remoteAssets:!1,monaco:"dev",monacoTypesSource:"local",monacoTypesAdditionalPackages:[],download:!1,export:{},info:!1,highlighter:"shiki",lineNumbers:!1,colorSchema:"auto",routerMode:"history",aspectRatio:1.7777777777777777,canvasWidth:980,exportFilename:"",selectable:!1,themeConfig:{},fonts:{sans:['"Avenir Next"','"Nunito 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"'],serif:["ui-serif","Georgia","Cambria",'"Times New Roman"',"Times","serif"],mono:['"Fira Code"',"ui-monospace","SFMono-Regular","Menlo","Monaco","Consolas",'"Liberation Mono"','"Courier New"',"monospace"],webfonts:["Avenir Next","Nunito Sans","Fira Code"],provider:"google",local:["Avenir Next"],italic:!1,weights:["200","400","600"]},favicon:"https://cdn.jsdelivr.net/gh/slidevjs/slidev/assets/favicon.png",drawings:{enabled:!0,persist:!1,presenterOnly:!1,syncAll:!0},plantUmlServer:"https://www.plantuml.com/plantuml",codeCopy:!0,record:"dev",css:"unocss",presenter:!0,htmlAttrs:{},editor:!0,layout:"cover"},ni=N.aspectRatio??16/9,yr=N.canvasWidth??980,zg=Math.ceil(yr/ni),vr=h(()=>kr(N.themeConfig||{},(t,e)=>[`--slidev-theme-${t}`,e]));function ii(){return Math.random().toString(36).replace(/[^a-z]+/g,"").substr(2,10)}function lt(t,e,s){Object.defineProperty(t,e,{value:s,writable:!0,enumerable:!1})}const fe=v({page:0,clicks:0});let br=[],wr=[];lt(fe,"$syncUp",!0);lt(fe,"$syncDown",!0);lt(fe,"$paused",!1);lt(fe,"$onSet",t=>br.push(t));lt(fe,"$onPatch",t=>wr.push(t));ii();lt(fe,"$patch",async()=>!1);function ai(t,e,s=!1){const n=[];let i=!1,a=!1,l,o;const c=v(e);function u(f){n.push(f)}function d(f,m){c[f]!==m&&(clearTimeout(l),i=!0,c[f]=m,l=setTimeout(()=>i=!1,0))}function p(f){i||(clearTimeout(o),a=!0,Object.entries(f).forEach(([m,_])=>{c[m]=_}),o=setTimeout(()=>a=!1,0))}function g(f){let m;s?s&&window.addEventListener("storage",k=>{k&&k.key===f&&k.newValue&&p(JSON.parse(k.newValue))}):(m=new BroadcastChannel(f),m.addEventListener("message",k=>p(k.data)));function _(){!s&&m&&!a?m.postMessage(Zi(c)):s&&!a&&window.localStorage.setItem(f,JSON.stringify(c)),i||n.forEach(k=>k(c))}if($e(c,_,{deep:!0,flush:"sync"}),s){const k=window.localStorage.getItem(f);k&&p(JSON.parse(k))}}return{init:g,onPatch:u,patch:d,state:c}}const{init:xr,onPatch:$r,patch:Se,state:Wg}=ai(fe,{page:1,clicks:0,viewerPage:1,viewerClicks:0}),ge=v({});let Cr=[],Ar=[];lt(ge,"$syncUp",!0);lt(ge,"$syncDown",!0);lt(ge,"$paused",!1);lt(ge,"$onSet",t=>Cr.push(t));lt(ge,"$onPatch",t=>Ar.push(t));ii();lt(ge,"$patch",async()=>!1);const{init:Sr,onPatch:Mr,patch:ri,state:li}=ai(ge,{},!1),Er="modulepreload",Pr=function(t){return"/sa2024/06-scalable/"+t},bn={},Re=function(e,s,n){let i=Promise.resolve();if(s&&s.length>0){const a=document.getElementsByTagName("link");i=Promise.all(s.map(l=>{if(l=Pr(l),l in bn)return;bn[l]=!0;const o=l.endsWith(".css"),c=o?'[rel="stylesheet"]':"";if(!!n)for(let p=a.length-1;p>=0;p--){const g=a[p];if(g.href===l&&(!o||g.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${c}`))return;const d=document.createElement("link");if(d.rel=o?"stylesheet":Er,o||(d.as="script",d.crossOrigin=""),d.href=l,document.head.appendChild(d),o)return new Promise((p,g)=>{d.addEventListener("load",p),d.addEventListener("error",()=>g(new Error(`Unable to preload CSS for ${l}`)))})}))}return i.then(()=>e()).catch(a=>{const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=a,window.dispatchEvent(l),!l.defaultPrevented)throw a})},S=(t,e)=>{const s=t.__vccOpts||t;for(const[n,i]of e)s[n]=i;return s};function Vg(){const t=U(Date.now()),e=Xi({interval:1e3}),s=h(()=>{const i=(e.value-t.value)/1e3,a=Math.floor(i%60).toString().padStart(2,"0");return`${Math.floor(i/60).toString().padStart(2,"0")}:${a}`});function n(){t.value=e.value}return{timer:s,resetTimer:n}}function oi(t=5){const e=[],s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=s.length;for(let i=0;ii.max||0))}}}function Ir(t){var i,a;if((i=t==null?void 0:t.meta)!=null&&i.__clicksContext)return t.meta.__clicksContext;const e=+((t==null?void 0:t.path)??Ts),s=h({get(){var o;const l=+(((o=se.value)==null?void 0:o.path)??Number.NaN);return!l||Number.isNaN(l)?0:l===e?xe.value:l>e?Ts:0},set(l){var c;+(((c=se.value)==null?void 0:c.path)??Number.NaN)===e&&(xe.value=l)}}),n=fi(s,(a=t==null?void 0:t.meta)==null?void 0:a.clicks);return t!=null&&t.meta&&(t.meta.__clicksContext=n),n}function Hr(t,e=0){var s;return fi(U(e),(s=t==null?void 0:t.meta)==null?void 0:s.clicks)}const Nr=Qi(Hr());function E(){const t=ce(hi),e=pn(t,"nav"),s=ce(Zs,Nr).value,n=pn(s,"current"),i=ce(ci),a=ce(ui),l=ce(di,{}),o=ce(Lr,void 0),c=ce(Tr,U(1));return{$slidev:t,$nav:e,$clicksContext:s,$clicks:n,$page:i,$route:o,$renderContext:a,$frontmatter:l,$scale:c}}function L(t){var i,a;ta(di,t);const{$slidev:e,$page:s}=E(),n=e.nav.rawRoutes.find(l=>l.path===String(s.value));if((a=(i=n==null?void 0:n.meta)==null?void 0:i.slide)!=null&&a.frontmatter){for(const l of Object.keys(n.meta.slide.frontmatter))l in t||delete n.meta.slide.frontmatter[l];Object.assign(n.meta.slide.frontmatter,t)}}function B(t,e){return{...ea(t,e===0?Or:pi),frontmatter:t}}function wn(t){return t.startsWith("/")?"/sa2024/06-scalable/"+t.slice(1):t}function Fr(t,e=!1){const s=t&&["#","rgb","hsl"].some(i=>t.indexOf(i)===0),n={background:s?t:void 0,color:t&&!s?"white":void 0,backgroundImage:s?void 0:t?e?`linear-gradient(#0005, #0008), url(${wn(t)})`:`url("${wn(t)}")`:void 0,backgroundRepeat:"no-repeat",backgroundPosition:"center",backgroundSize:"cover"};return n.background||delete n.background,n}const Rr={class:"my-auto w-full"},jr=ds({__name:"cover",props:{background:{default:""}},setup(t){E();const e=t,s=h(()=>Fr(e.background,!0));return(n,i)=>(C(),Ne("div",{class:"slidev-layout cover",style:Kn(s.value)},[r("div",Rr,[Fe(n.$slots,"default")])],4))}}),Ur=S(jr,[["__file","/opt/homebrew/lib/node_modules/@slidev/theme-default/layouts/cover.vue"]]),kt=v({theme:"default",layout:"cover"}),zr=v({layout:h(()=>kt.layout),transition:h(()=>kt.transition),class:h(()=>kt.class),clicks:h(()=>kt.clicks),name:h(()=>kt.name),preload:h(()=>kt.preload),slide:{index:0,content:"",note:"",title:"Software Architecture",level:1,noteHTML:"",raw:"",frontmatter:kt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:0,id:0,no:1},__clicksContext:null,__preloaded:!1}),Wr=r("h1",null,"Software Architecture",-1),Vr=r("h2",null,"Scalable Web Architecture",-1),qr={__name:"1",setup(t){return L(kt),E(),(e,s)=>(C(),M(Ur,D(T(y(B)(y(kt),0))),{default:w(()=>[Wr,Vr]),_:1},16))}},Yr=S(qr,[["__file","/@slidev/slides/1.md"]]),Kr="/sa2024/06-scalable/assets/05-challenge-DwJJv_v8.png",Gr={},Zr={class:"slidev-layout default"};function Xr(t,e){return C(),Ne("div",Zr,[Fe(t.$slots,"default")])}const F=S(Gr,[["render",Xr],["__file","/opt/homebrew/lib/node_modules/@slidev/cli/node_modules/@slidev/client/layouts/default.vue"]]),yt=v({}),Jr=v({layout:h(()=>yt.layout),transition:h(()=>yt.transition),class:h(()=>yt.class),clicks:h(()=>yt.clicks),name:h(()=>yt.name),preload:h(()=>yt.preload),slide:{index:1,content:"",note:"",title:"CS/BS架构挑战",level:1,noteHTML:"",raw:"",frontmatter:yt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:11,id:1,no:2},__clicksContext:null,__preloaded:!1}),Qr=r("h1",null,"CS/BS架构挑战",-1),tl=r("img",{src:Kr,class:"m-10 h-80"},null,-1),el={__name:"2",setup(t){return L(yt),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(yt),1))),{default:w(()=>[Qr,tl]),_:1},16))}},sl=S(el,[["__file","/@slidev/slides/2.md"]]),nl="/sa2024/06-scalable/assets/05-pi-PZGyONFv.png",vt=v({}),il=v({layout:h(()=>vt.layout),transition:h(()=>vt.transition),class:h(()=>vt.class),clicks:h(()=>vt.clicks),name:h(()=>vt.name),preload:h(()=>vt.preload),slide:{index:2,content:"",note:"",title:"实验",level:1,noteHTML:"",raw:"",frontmatter:vt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:18,id:2,no:3},__clicksContext:null,__preloaded:!1}),al=r("h1",null,"实验",-1),rl=r("br",null,null,-1),ll=r("p",null,"写个计算密集型(Compute-intensive)服务 sa-spring/app-pi",-1),ol=r("img",{src:nl,class:"m-20 h-40"},null,-1),cl=r("p",null,[r("a",{href:"https://www.bilibili.com/video/BV1X7411S7yM?p=1",target:"_blank",rel:"noopener"},"https://www.bilibili.com/video/BV1X7411S7yM?p=1"),x(" (3:15)")],-1),hl={__name:"3",setup(t){return L(vt),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(vt),2))),{default:w(()=>[al,rl,ll,ol,cl]),_:1},16))}},ul=S(hl,[["__file","/@slidev/slides/3.md"]]),dl="/sa2024/06-scalable/assets/05-loadtesting-COkcLUc3.png",pl=ds({__name:"two-cols",props:{class:{type:String},layoutClass:{type:String}},setup(t){const e=t;return(s,n)=>(C(),Ne("div",{class:Ze(["slidev-layout two-columns w-full h-full grid grid-cols-2",e.layoutClass])},[r("div",{class:Ze(["col-left",e.class])},[Fe(s.$slots,"default")],2),r("div",{class:Ze(["col-right",e.class])},[Fe(s.$slots,"right")],2)],2))}}),ot=S(pl,[["__file","/opt/homebrew/lib/node_modules/@slidev/cli/node_modules/@slidev/client/layouts/two-cols.vue"]]),bt=v({layout:"two-cols"}),fl=v({layout:h(()=>bt.layout),transition:h(()=>bt.transition),class:h(()=>bt.class),clicks:h(()=>bt.clicks),name:h(()=>bt.name),preload:h(()=>bt.preload),slide:{index:3,content:"",note:"",title:"压力测试",level:1,noteHTML:"",raw:"",frontmatter:bt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:35,id:3,no:4},__clicksContext:null,__preloaded:!1}),gl=r("h1",null,"压力测试",-1),ml=r("br",null,null,-1),_l=r("blockquote",null,[r("p",null,"Load testing is the process of putting demand on a system and measuring its response.")],-1),kl=r("br",null,null,-1),yl=r("div",{style:{"text-align":"right"}},"- https://en.wikipedia.org/wiki/Load_testing",-1),vl=r("img",{src:dl,class:"m-20 h-40"},null,-1),bl=r("div",{style:{"text-align":"right"}},"https://www.bilibili.com/video/BV1X7411S7yM?p=1 12:50",-1),wl={__name:"4",setup(t){return L(bt),E(),(e,s)=>(C(),M(ot,D(T(y(B)(y(bt),3))),{right:w(n=>[vl,bl]),default:w(()=>[gl,ml,_l,kl,yl]),_:1},16))}},xl=S(wl,[["__file","/@slidev/slides/4.md"]]),$l="/sa2024/06-scalable/assets/05-scale-up-CnmLtcYa.png",wt=v({}),Cl=v({layout:h(()=>wt.layout),transition:h(()=>wt.transition),class:h(()=>wt.class),clicks:h(()=>wt.clicks),name:h(()=>wt.name),preload:h(()=>wt.preload),slide:{index:4,content:"",note:"",title:"扩展",level:1,noteHTML:"",raw:"",frontmatter:wt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:57,id:4,no:5},__clicksContext:null,__preloaded:!1}),Al=r("h1",null,"扩展",-1),Sl=r("br",null,null,-1),Ml=r("img",{src:$l,class:"m-20 h-50"},null,-1),El=r("div",{style:{"text-align":"center"}},"垂直扩展(Scale Up)",-1),Pl={__name:"5",setup(t){return L(wt),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(wt),4))),{default:w(()=>[Al,Sl,Ml,El]),_:1},16))}},Dl=S(Pl,[["__file","/@slidev/slides/5.md"]]),Tl="/sa2024/06-scalable/assets/05-virtualization-CBnZdy9Q.png",xt=v({}),Ll=v({layout:h(()=>xt.layout),transition:h(()=>xt.transition),class:h(()=>xt.class),clicks:h(()=>xt.clicks),name:h(()=>xt.name),preload:h(()=>xt.preload),slide:{index:5,content:"",note:"",title:"用虚拟化技术模拟实现",level:1,noteHTML:"",raw:"",frontmatter:xt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:68,id:5,no:6},__clicksContext:null,__preloaded:!1}),Bl=r("h1",null,"用虚拟化技术模拟实现",-1),Ol=r("br",null,null,-1),Il=r("img",{src:Tl,class:"m-20 h-50"},null,-1),Hl=r("div",{style:{"text-align":"right"}},"https://docs.docker.com/install/",-1),Nl={__name:"6",setup(t){return L(xt),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(xt),5))),{default:w(()=>[Bl,Ol,Il,Hl]),_:1},16))}},Fl=S(Nl,[["__file","/@slidev/slides/6.md"]]);/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function gi(t){return typeof t>"u"||t===null}function Rl(t){return typeof t=="object"&&t!==null}function jl(t){return Array.isArray(t)?t:gi(t)?[]:[t]}function Ul(t,e){var s,n,i,a;if(e)for(a=Object.keys(e),s=0,n=a.length;s=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),xo=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function $o(t){return!(t===null||!xo.test(t)||t[t.length-1]==="_")}function Co(t){var e,s;return e=t.replace(/_/g,"").toLowerCase(),s=e[0]==="-"?-1:1,"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?s===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:s*parseFloat(e,10)}var Ao=/^[-+]?[0-9]+e/;function So(t,e){var s;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Xs.isNegativeZero(t))return"-0.0";return s=t.toString(10),Ao.test(s)?s.replace("e",".e"):s}function Mo(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||Xs.isNegativeZero(t))}var Eo=new J("tag:yaml.org,2002:float",{kind:"scalar",resolve:$o,construct:Co,predicate:Mo,represent:So,defaultStyle:"lowercase"}),Po=ro.extend({implicit:[ho,go,wo,Eo]}),Do=Po,_i=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),ki=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function To(t){return t===null?!1:_i.exec(t)!==null||ki.exec(t)!==null}function Lo(t){var e,s,n,i,a,l,o,c=0,u=null,d,p,g;if(e=_i.exec(t),e===null&&(e=ki.exec(t)),e===null)throw new Error("Date resolve error");if(s=+e[1],n=+e[2]-1,i=+e[3],!e[4])return new Date(Date.UTC(s,n,i));if(a=+e[4],l=+e[5],o=+e[6],e[7]){for(c=e[7].slice(0,3);c.length<3;)c+="0";c=+c}return e[9]&&(d=+e[10],p=+(e[11]||0),u=(d*60+p)*6e4,e[9]==="-"&&(u=-u)),g=new Date(Date.UTC(s,n,i,a,l,o,c)),u&&g.setTime(g.getTime()-u),g}function Bo(t){return t.toISOString()}var Oo=new J("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:To,construct:Lo,instanceOf:Date,represent:Bo});function Io(t){return t==="<<"||t===null}var Ho=new J("tag:yaml.org,2002:merge",{kind:"scalar",resolve:Io}),Js=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function No(t){if(t===null)return!1;var e,s,n=0,i=t.length,a=Js;for(s=0;s64)){if(e<0)return!1;n+=6}return n%8===0}function Fo(t){var e,s,n=t.replace(/[\r\n=]/g,""),i=n.length,a=Js,l=0,o=[];for(e=0;e>16&255),o.push(l>>8&255),o.push(l&255)),l=l<<6|a.indexOf(n.charAt(e));return s=i%4*6,s===0?(o.push(l>>16&255),o.push(l>>8&255),o.push(l&255)):s===18?(o.push(l>>10&255),o.push(l>>2&255)):s===12&&o.push(l>>4&255),new Uint8Array(o)}function Ro(t){var e="",s=0,n,i,a=t.length,l=Js;for(n=0;n>18&63],e+=l[s>>12&63],e+=l[s>>6&63],e+=l[s&63]),s=(s<<8)+t[n];return i=a%3,i===0?(e+=l[s>>18&63],e+=l[s>>12&63],e+=l[s>>6&63],e+=l[s&63]):i===2?(e+=l[s>>10&63],e+=l[s>>4&63],e+=l[s<<2&63],e+=l[64]):i===1&&(e+=l[s>>2&63],e+=l[s<<4&63],e+=l[64],e+=l[64]),e}function jo(t){return Object.prototype.toString.call(t)==="[object Uint8Array]"}var Uo=new J("tag:yaml.org,2002:binary",{kind:"scalar",resolve:No,construct:Fo,predicate:jo,represent:Ro}),zo=Object.prototype.hasOwnProperty,Wo=Object.prototype.toString;function Vo(t){if(t===null)return!0;var e=[],s,n,i,a,l,o=t;for(s=0,n=o.length;sn<=t).sort((n,i)=>n-i)}const rc=["title"],lc=ds({__name:"CodeBlockWrapper",props:{ranges:{type:Array,default:()=>[]},finally:{type:[String,Number],default:"last"},startLine:{type:Number,default:1},lines:{type:Boolean,default:N.lineNumbers},at:{type:[String,Number],default:"+1"},maxHeight:{type:String,default:void 0}},setup(t){const e=t,{$clicksContext:s}=E(),n=U(),i=oi();sa(()=>{s.unregister(i)}),le(()=>{var c;(c=n.value)==null||c.classList.toggle("slidev-code-line-numbers",e.lines)}),na(()=>{var f;if(!s||s.disabled||!((f=e.ranges)!=null&&f.length))return;const{start:c,end:u,delta:d}=s.resolve(e.at,e.ranges.length-1);s.register(i,{max:u,delta:d});const p=h(()=>s.disabled?e.ranges.length-1:Math.max(0,s.current-c+1)),g=h(()=>e.finally==="last"?e.ranges.at(-1):e.finally.toString());le(()=>{if(!n.value)return;let m=e.ranges[p.value]??g.value;const _=m==="hide";n.value.classList.toggle(ye,_),_&&(m=e.ranges[p.value+1]??g.value);const b=n.value.querySelector(".shiki-dark")?Array.from(n.value.querySelectorAll(".shiki")):[n.value],A=e.startLine;for(const P of b){const z=Array.from(P.querySelectorAll("code > .line")),j=ac(z.length+A-1,m);if(z.forEach((W,ct)=>{const K=j.includes(ct+A);W.classList.toggle(Oe,!0),W.classList.toggle("highlighted",K),W.classList.toggle("dishonored",!K)}),e.maxHeight){const W=Array.from(P.querySelectorAll(".line.highlighted"));W.reduce((K,st)=>st.offsetHeight+K,0)>n.value.offsetHeight?W[0].scrollIntoView({behavior:"smooth",block:"start"}):W.length>0&&W[Math.round((W.length-1)/2)].scrollIntoView({behavior:"smooth",block:"center"})}}})});const{copied:a,copy:l}=ia();function o(){var u,d;const c=(d=(u=n.value)==null?void 0:u.querySelector(".slidev-code"))==null?void 0:d.textContent;c&&l(c)}return(c,u)=>{const d=ba,p=wa;return C(),Ne("div",{ref_key:"el",ref:n,class:Ze(["slidev-code-wrapper relative group",{"slidev-code-line-numbers":e.lines}]),style:Kn({"max-height":e.maxHeight,"overflow-y":e.maxHeight?"scroll":void 0,"--start":e.startLine})},[Fe(c.$slots,"default"),y(N).codeCopy?(C(),Ne("button",{key:0,class:"slidev-code-copy absolute top-0 right-0 transition opacity-0 group-hover:opacity-20 hover:!opacity-100",title:y(a)?"Copied":"Copy",onClick:u[0]||(u[0]=g=>o())},[y(a)?(C(),M(d,{key:0,class:"p-2 w-8 h-8"})):(C(),M(p,{key:1,class:"p-2 w-8 h-8"}))],8,rc)):aa("v-if",!0)],6)}}}),We=S(lc,[["__file","/opt/homebrew/lib/node_modules/@slidev/cli/node_modules/@slidev/client/builtin/CodeBlockWrapper.vue"]]),oc="/sa2024/06-scalable/assets/05-jib-uHYfMv6U.png",$t=v({layout:"two-cols"}),cc=v({layout:h(()=>$t.layout),transition:h(()=>$t.transition),class:h(()=>$t.class),clicks:h(()=>$t.clicks),name:h(()=>$t.name),preload:h(()=>$t.preload),slide:{index:6,content:"",note:"",title:"Containerization",level:1,noteHTML:"",raw:"",frontmatter:$t,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:76,id:6,no:7},__clicksContext:null,__preloaded:!1}),hc=r("h1",null,"Containerization",-1),uc=r("pre",{class:"shiki shiki-themes vitesse-dark vitesse-light slidev-code",style:{"--shiki-dark":"#dbd7caee","--shiki-light":"#393a34","--shiki-dark-bg":"#121212","--shiki-light-bg":"#ffffff"}},[r("code",{class:"language-xml"},[r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"<"),r("span",{style:{"--shiki-dark":"#4D9375","--shiki-light":"#1E754F"}},"plugin"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},">")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}}," <"),r("span",{style:{"--shiki-dark":"#4D9375","--shiki-light":"#1E754F"}},"groupId"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},">"),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}},"com.google.cloud.tools"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}}," <"),r("span",{style:{"--shiki-dark":"#4D9375","--shiki-light":"#1E754F"}},"artifactId"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},">"),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}},"jib-maven-plugin"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}}," <"),r("span",{style:{"--shiki-dark":"#4D9375","--shiki-light":"#1E754F"}},"version"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},">"),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}},"2.1.0"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}}," <"),r("span",{style:{"--shiki-dark":"#4D9375","--shiki-light":"#1E754F"}},"configuration"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},">")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}}," <"),r("span",{style:{"--shiki-dark":"#4D9375","--shiki-light":"#1E754F"}},"to"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},">")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}}," <"),r("span",{style:{"--shiki-dark":"#4D9375","--shiki-light":"#1E754F"}},"image"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},">"),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}},"app-pi"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}}," ")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}}," ")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"")])])],-1),dc=r("pre",{class:"shiki shiki-themes vitesse-dark vitesse-light slidev-code",style:{"--shiki-dark":"#dbd7caee","--shiki-light":"#393a34","--shiki-dark-bg":"#121212","--shiki-light-bg":"#ffffff"}},[r("code",{class:"language-bash"},[r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#80A665","--shiki-light":"#59873A"}},"mvn"),r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}}," compile"),r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}}," jib:dockerBuild")])])],-1),pc=r("p",null,[r("br"),r("br"),r("br"),r("br"),r("img",{src:oc,class:"m-5 h-50"})],-1),fc={__name:"7",setup(t){return L($t),E(),(e,s)=>{const n=We;return C(),M(ot,D(T(y(B)(y($t),6))),{right:w(i=>[pc]),default:w(()=>[hc,uc,be(n,we({},{ranges:[]}),{default:w(()=>[dc]),_:1},16)]),_:1},16)}}},gc=S(fc,[["__file","/@slidev/slides/7.md"]]),mc="/sa2024/06-scalable/assets/05-gatling-CZlERI1R.png",_c="/sa2024/06-scalable/assets/05-exp-up-CGk2RS4v.png",Ct=v({layout:"two-cols"}),kc=v({layout:h(()=>Ct.layout),transition:h(()=>Ct.transition),class:h(()=>Ct.class),clicks:h(()=>Ct.clicks),name:h(()=>Ct.name),preload:h(()=>Ct.preload),slide:{index:7,content:"",note:"",title:"垂直扩展实验",level:1,noteHTML:"",raw:"",frontmatter:Ct,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:106,id:7,no:8},__clicksContext:null,__preloaded:!1}),yc=r("h1",null,"垂直扩展实验",-1),vc=r("img",{src:mc,class:"m-20 h-50"},null,-1),bc=r("img",{src:_c,class:"m-5 h-80"},null,-1),wc=r("p",null,[r("a",{href:"https://www.bilibili.com/video/BV1X7411S7yM?p=2",target:"_blank",rel:"noopener"},"https://www.bilibili.com/video/BV1X7411S7yM?p=2"),x(" (20:40)")],-1),xc={__name:"8",setup(t){return L(Ct),E(),(e,s)=>(C(),M(ot,D(T(y(B)(y(Ct),7))),{right:w(n=>[bc,wc]),default:w(()=>[yc,vc]),_:1},16))}},$c=S(xc,[["__file","/@slidev/slides/8.md"]]),Cc="/sa2024/06-scalable/assets/05-scale-out-C0l34FFD.png",At=v({}),Ac=v({layout:h(()=>At.layout),transition:h(()=>At.transition),class:h(()=>At.class),clicks:h(()=>At.clicks),name:h(()=>At.name),preload:h(()=>At.preload),slide:{index:8,content:"",note:"",title:"垂直 vs. 水平扩展(Scale Out)",level:1,noteHTML:"",raw:"",frontmatter:At,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:120,id:8,no:9},__clicksContext:null,__preloaded:!1}),Sc=r("h1",null,"垂直 vs. 水平扩展(Scale Out)",-1),Mc=r("img",{src:Cc,class:"m-5 h-80"},null,-1),Ec={__name:"9",setup(t){return L(At),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(At),8))),{default:w(()=>[Sc,Mc]),_:1},16))}},Pc=S(Ec,[["__file","/@slidev/slides/9.md"]]),Dc="/sa2024/06-scalable/assets/05-lb-SSvWQota.png",St=v({layout:"two-cols"}),Tc=v({layout:h(()=>St.layout),transition:h(()=>St.transition),class:h(()=>St.class),clicks:h(()=>St.clicks),name:h(()=>St.name),preload:h(()=>St.preload),slide:{index:9,content:"",note:"",title:"水平扩展",level:1,noteHTML:"",raw:"",frontmatter:St,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:126,id:9,no:10},__clicksContext:null,__preloaded:!1}),Lc=r("h1",null,"水平扩展",-1),Bc=r("p",null,[r("br"),r("br"),r("br")],-1),Oc=r("blockquote",null,[r("p",null,[x("负载平衡是一种计算机技术,用来在多个计算机、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。 使用带有负载平衡的多个服务器组件,取代单一的组件,可以通过冗余提高可靠性。负载平衡服务通常是由专用软件和硬件来完成。 "),r("br")])],-1),Ic=r("div",{style:{"text-align":"right"}},"https://zh.wikipedia.org/zh-cn/负载均衡",-1),Hc=r("p",null,[r("br"),r("br"),r("br"),r("br"),r("img",{src:Dc,class:"m-5 h-60"})],-1),Nc={__name:"10",setup(t){return L(St),E(),(e,s)=>(C(),M(ot,D(T(y(B)(y(St),9))),{right:w(n=>[Hc]),default:w(()=>[Lc,Bc,Oc,Ic]),_:1},16))}},Fc=S(Nc,[["__file","/@slidev/slides/10.md"]]),Rc="/sa2024/06-scalable/assets/05-nslookup-CzF82Wf7.png",jc="/sa2024/06-scalable/assets/05-dnsrr-BK8pi5DW.png",Mt=v({layout:"two-cols"}),Uc=v({layout:h(()=>Mt.layout),transition:h(()=>Mt.transition),class:h(()=>Mt.class),clicks:h(()=>Mt.clicks),name:h(()=>Mt.name),preload:h(()=>Mt.preload),slide:{index:10,content:"",note:"",title:"DNS Round Robin",level:1,noteHTML:"",raw:"",frontmatter:Mt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:141,id:10,no:11},__clicksContext:null,__preloaded:!1}),zc=r("h1",null,"DNS Round Robin",-1),Wc=r("img",{src:Rc,class:"m-5 h-40"},null,-1),Vc=r("ul",null,[r("li",null,"优点:简单"),r("li",null,"缺点:难以控制(DNS刷新延迟)")],-1),qc=r("p",null,[r("br"),r("br"),r("img",{src:jc,class:"m-5 h-60"})],-1),Yc={__name:"11",setup(t){return L(Mt),E(),(e,s)=>(C(),M(ot,D(T(y(B)(y(Mt),10))),{right:w(n=>[qc]),default:w(()=>[zc,Wc,Vc]),_:1},16))}},Kc=S(Yc,[["__file","/@slidev/slides/11.md"]]),Gc="/sa2024/06-scalable/assets/05-lb347-CHBPpRWG.png",Et=v({}),Zc=v({layout:h(()=>Et.layout),transition:h(()=>Et.transition),class:h(()=>Et.class),clicks:h(()=>Et.clicks),name:h(()=>Et.name),preload:h(()=>Et.preload),slide:{index:11,content:"",note:"",title:"L3/L4/L7 Load Balancing",level:1,noteHTML:"",raw:"",frontmatter:Et,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:158,id:11,no:12},__clicksContext:null,__preloaded:!1}),Xc=r("h1",null,"L3/L4/L7 Load Balancing",-1),Jc=r("img",{src:Gc,class:"m-10 h-80"},null,-1),Qc={__name:"12",setup(t){return L(Et),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(Et),11))),{default:w(()=>[Xc,Jc]),_:1},16))}},th=S(Qc,[["__file","/@slidev/slides/12.md"]]),yi="/sa2024/06-scalable/assets/05-lb-simple-C_LK4xk9.png",eh="/sa2024/06-scalable/assets/05-lb-l3-DBZvBmdt.png",Pt=v({layout:"two-cols"}),sh=v({layout:h(()=>Pt.layout),transition:h(()=>Pt.transition),class:h(()=>Pt.class),clicks:h(()=>Pt.clicks),name:h(()=>Pt.name),preload:h(()=>Pt.preload),slide:{index:12,content:"",note:"",title:"L3 负载均衡",level:1,noteHTML:"",raw:"",frontmatter:Pt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:165,id:12,no:13},__clicksContext:null,__preloaded:!1}),nh=r("h1",null,"L3 负载均衡",-1),ih=r("br",null,null,-1),ah=r("img",{src:yi,class:"m-10 h-20"},null,-1),rh=r("br",null,null,-1),lh=r("ul",null,[r("li",null,"优点:可控"),r("li",null,"缺点:网络部署相对复杂")],-1),oh=r("p",null,[r("br"),r("br"),r("br")],-1),ch=r("img",{src:eh,class:"m-20 h-60"},null,-1),hh={__name:"13",setup(t){return L(Pt),E(),(e,s)=>(C(),M(ot,D(T(y(B)(y(Pt),12))),{right:w(n=>[oh,ch]),default:w(()=>[nh,ih,ah,rh,lh]),_:1},16))}},uh=S(hh,[["__file","/@slidev/slides/13.md"]]),dh="/sa2024/06-scalable/assets/05-lb-l4-DfzXSXlQ.png",Dt=v({}),ph=v({layout:h(()=>Dt.layout),transition:h(()=>Dt.transition),class:h(()=>Dt.class),clicks:h(()=>Dt.clicks),name:h(()=>Dt.name),preload:h(()=>Dt.preload),slide:{index:13,content:"",note:"",title:"L4负载均衡",level:1,noteHTML:"",raw:"",frontmatter:Dt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:185,id:13,no:14},__clicksContext:null,__preloaded:!1}),fh=r("h1",null,"L4负载均衡",-1),gh=r("br",null,null,-1),mh=r("img",{src:yi,class:"m-5 h-30"},null,-1),_h=r("br",null,null,-1),kh=r("img",{src:dh,class:"m-5 h-30"},null,-1),yh={__name:"14",setup(t){return L(Dt),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(Dt),13))),{default:w(()=>[fh,gh,mh,_h,kh]),_:1},16))}},vh=S(yh,[["__file","/@slidev/slides/14.md"]]),bh="/sa2024/06-scalable/assets/05-haproxy-YJHp5RCO.png",Tt=v({layout:"two-cols"}),wh=v({layout:h(()=>Tt.layout),transition:h(()=>Tt.transition),class:h(()=>Tt.class),clicks:h(()=>Tt.clicks),name:h(()=>Tt.name),preload:h(()=>Tt.preload),slide:{index:14,content:"",note:"",title:"HAProxy",level:1,noteHTML:"",raw:"",frontmatter:Tt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:193,id:14,no:15},__clicksContext:null,__preloaded:!1}),xh=r("h1",null,"HAProxy",-1),$h=r("p",null,[r("small",null,"HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。 GitHub、Bitbucket、Stack Overflow、Reddit、Tumblr、Twitter和 Tuenti在内的知名网站,及亚马逊网络服务系统都使用了HAProxy。")],-1),Ch=r("p",null,[r("a",{href:"http://www.haproxy.org/",target:"_blank",rel:"noopener"},"http://www.haproxy.org/")],-1),Ah=r("p",null,[r("br"),r("br"),r("br")],-1),Sh=r("img",{src:bh,class:"m-5 h-50"},null,-1),Mh={__name:"15",setup(t){return L(Tt),E(),(e,s)=>(C(),M(ot,D(T(y(B)(y(Tt),14))),{right:w(n=>[Ah,Sh]),default:w(()=>[xh,$h,Ch]),_:1},16))}},Eh=S(Mh,[["__file","/@slidev/slides/15.md"]]),Lt=v({}),Ph=v({layout:h(()=>Lt.layout),transition:h(()=>Lt.transition),class:h(()=>Lt.class),clicks:h(()=>Lt.clicks),name:h(()=>Lt.name),preload:h(()=>Lt.preload),slide:{index:15,content:"",note:"",title:"HAProxy",level:1,noteHTML:"",raw:"",frontmatter:Lt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:211,id:15,no:16},__clicksContext:null,__preloaded:!1}),Dh=r("h1",null,"HAProxy",-1),Th=r("ul",null,[r("li",null,"HAProxy大量利用操作系统本身的功能特性,使得其在处理请求时能发挥极高的性能,通常情况下,HAProxy自身只占用15%的处理时间,剩余的85%都是在系统内核层完成的。"),r("li",null,"作者在2009年使用1.4版本进行了一次测试,单个HAProxy进程的处理能力突破了10万请求/秒,并轻松占满了10Gbps的网络带宽。"),r("li",null,"作为建议以单进程模式运行的程序,HAProxy对稳定性的要求是十分严苛的。按照作者的说法,HAProxy在十几年间从未出现过一个会导致其崩溃的BUG,HAProxy一旦成功启动,除非操作系统或硬件故障,否则就不会崩溃。")],-1),Lh={__name:"16",setup(t){return L(Lt),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(Lt),15))),{default:w(()=>[Dh,Th]),_:1},16))}},Bh=S(Lh,[["__file","/@slidev/slides/16.md"]]),Oh="/sa2024/06-scalable/assets/05-exp-haproxy-CO-RA8Ix.png",Bt=v({}),Ih=v({layout:h(()=>Bt.layout),transition:h(()=>Bt.transition),class:h(()=>Bt.class),clicks:h(()=>Bt.clicks),name:h(()=>Bt.name),preload:h(()=>Bt.preload),slide:{index:16,content:"",note:"",title:"L4 实验: HAProxy(TCP mode)",level:1,noteHTML:"",raw:"",frontmatter:Bt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:219,id:16,no:17},__clicksContext:null,__preloaded:!1}),Hh=r("h1",null,"L4 实验: HAProxy(TCP mode)",-1),Nh=r("img",{src:Oh,class:"m-5 h-30"},null,-1),Fh=r("p",null,[r("a",{href:"https://www.bilibili.com/video/BV1X7411S7yM?p=3",target:"_blank",rel:"noopener"},"https://www.bilibili.com/video/BV1X7411S7yM?p=3"),x(" (23:00)")],-1),Rh=r("pre",{class:"shiki shiki-themes vitesse-dark vitesse-light slidev-code",style:{"--shiki-dark":"#dbd7caee","--shiki-light":"#393a34","--shiki-dark-bg":"#121212","--shiki-light-bg":"#ffffff"}},[r("code",{class:"language-"},[r("span",{class:"line"},[r("span",null,"defaults")]),x(` +`),r("span",{class:"line"},[r("span",null," mode tcp")]),x(` +`),r("span",{class:"line"},[r("span",null,"frontend lb-app-pi")]),x(` +`),r("span",{class:"line"},[r("span",null," bind *:8080")]),x(` +`),r("span",{class:"line"},[r("span",null," default_backend servers")]),x(` +`),r("span",{class:"line"},[r("span",null,"backend servers")]),x(` +`),r("span",{class:"line"},[r("span",null," balance roundrobin")]),x(` +`),r("span",{class:"line"},[r("span",null," server server1 localhost:8081")]),x(` +`),r("span",{class:"line"},[r("span",null," ...")])])],-1),jh={__name:"17",setup(t){return L(Bt),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(Bt),16))),{default:w(()=>[Hh,Nh,Fh,Rh]),_:1},16))}},Uh=S(jh,[["__file","/@slidev/slides/17.md"]]),zh="/sa2024/06-scalable/assets/05-cache-EhhiBFw-.png",Ot=v({}),Wh=v({layout:h(()=>Ot.layout),transition:h(()=>Ot.transition),class:h(()=>Ot.class),clicks:h(()=>Ot.clicks),name:h(()=>Ot.name),preload:h(()=>Ot.preload),slide:{index:17,content:"",note:"",title:"Cache missing",level:1,noteHTML:"",raw:"",frontmatter:Ot,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:241,id:17,no:18},__clicksContext:null,__preloaded:!1}),Vh=r("h1",null,"Cache missing",-1),qh=r("img",{src:zh,class:"m-20 h-80"},null,-1),Yh={__name:"18",setup(t){return L(Ot),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(Ot),17))),{default:w(()=>[Vh,qh]),_:1},16))}},Kh=S(Yh,[["__file","/@slidev/slides/18.md"]]),Gh="/sa2024/06-scalable/assets/05-cache-server-Cin3ILZT.png",It=v({}),Zh=v({layout:h(()=>It.layout),transition:h(()=>It.transition),class:h(()=>It.class),clicks:h(()=>It.clicks),name:h(()=>It.name),preload:h(()=>It.preload),slide:{index:18,content:"",note:"",title:"Cache Server",level:1,noteHTML:"",raw:"",frontmatter:It,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:248,id:18,no:19},__clicksContext:null,__preloaded:!1}),Xh=r("h1",null,"Cache Server",-1),Jh=r("img",{src:Gh,class:"m-20 h-80"},null,-1),Qh={__name:"19",setup(t){return L(It),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(It),18))),{default:w(()=>[Xh,Jh]),_:1},16))}},tu=S(Qh,[["__file","/@slidev/slides/19.md"]]),eu="/sa2024/06-scalable/assets/05-spring-cache-Cet2aHIV.png",Ht=v({}),su=v({layout:h(()=>Ht.layout),transition:h(()=>Ht.transition),class:h(()=>Ht.class),clicks:h(()=>Ht.clicks),name:h(()=>Ht.name),preload:h(()=>Ht.preload),slide:{index:19,content:"",note:"",title:"Spring Caching",level:1,noteHTML:"",raw:"",frontmatter:Ht,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:255,id:19,no:20},__clicksContext:null,__preloaded:!1}),nu=r("h1",null,"Spring Caching",-1),iu=r("img",{src:eu,class:"m-5 h-80"},null,-1),au=r("p",null,[r("a",{href:"https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-caching",target:"_blank",rel:"noopener"},"https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-caching")],-1),ru={__name:"20",setup(t){return L(Ht),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(Ht),19))),{default:w(()=>[nu,iu,au]),_:1},16))}},lu=S(ru,[["__file","/@slidev/slides/20.md"]]),ou="/sa2024/06-scalable/assets/05-caching-846YJ8cZ.png",Nt=v({layout:"two-cols"}),cu=v({layout:h(()=>Nt.layout),transition:h(()=>Nt.transition),class:h(()=>Nt.class),clicks:h(()=>Nt.clicks),name:h(()=>Nt.name),preload:h(()=>Nt.preload),slide:{index:20,content:"",note:"",title:"Caching",level:1,noteHTML:"",raw:"",frontmatter:Nt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:263,id:20,no:21},__clicksContext:null,__preloaded:!1}),hu=r("h1",null,"Caching",-1),uu=r("pre",{class:"shiki shiki-themes vitesse-dark vitesse-light slidev-code",style:{"--shiki-dark":"#dbd7caee","--shiki-light":"#393a34","--shiki-dark-bg":"#121212","--shiki-light-bg":"#ffffff"}},[r("code",{class:"language-java"},[r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#4D9375","--shiki-light":"#1E754F"}},"import"),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}}," org"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"."),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}},"springframework"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"."),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}},"cache"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"."),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}},"annotation"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"."),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}},"Cacheable"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},";")]),x(` +`),r("span",{class:"line"}),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}}," ")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}}," @"),r("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}},"Cacheable"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"("),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}},"“pi"),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},'"'),r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}},")")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}}," public double calculatePi(double n) {")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}}," double pi = 0;")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}}," for (int i = 1; i < n; i++) {")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}}," pi += Math.pow(-1, i + 1) / (2 * i - 1);")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}}," }")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}}," return 4 * pi;")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}}," }")])])],-1),du=r("p",null,[r("br"),r("br"),r("br"),r("img",{src:ou,class:"m-5 h-50"})],-1),pu={__name:"21",setup(t){return L(Nt),E(),(e,s)=>{const n=We;return C(),M(ot,D(T(y(B)(y(Nt),20))),{right:w(i=>[du]),default:w(()=>[hu,be(n,we({},{ranges:[]}),{default:w(()=>[uu]),_:1},16)]),_:1},16)}}},fu=S(pu,[["__file","/@slidev/slides/21.md"]]),gu="/sa2024/06-scalable/assets/05-cache-redis-BZh8cmdK.png",Ft=v({}),mu=v({layout:h(()=>Ft.layout),transition:h(()=>Ft.transition),class:h(()=>Ft.class),clicks:h(()=>Ft.clicks),name:h(()=>Ft.name),preload:h(()=>Ft.preload),slide:{index:21,content:"",note:"",title:"Spring Boot with Redis Cache",level:1,noteHTML:"",raw:"",frontmatter:Ft,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:289,id:21,no:22},__clicksContext:null,__preloaded:!1}),_u=r("h1",null,"Spring Boot with Redis Cache",-1),ku=r("br",null,null,-1),yu=r("img",{src:gu,class:"m-5 h-70"},null,-1),vu=r("p",null,[r("a",{href:"https://www.bilibili.com/video/BV17g4y1871A?p=1",target:"_blank",rel:"noopener"},"https://www.bilibili.com/video/BV17g4y1871A?p=1")],-1),bu=r("div",{style:{"text-align":"right"}},"sa-spring/spring-cache-redis ",-1),wu={__name:"22",setup(t){return L(Ft),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(Ft),21))),{default:w(()=>[_u,ku,yu,vu,bu]),_:1},16))}},xu=S(wu,[["__file","/@slidev/slides/22.md"]]),$u="/sa2024/06-scalable/assets/05-cache-cluster-Ditv28-K.png",Rt=v({}),Cu=v({layout:h(()=>Rt.layout),transition:h(()=>Rt.transition),class:h(()=>Rt.class),clicks:h(()=>Rt.clicks),name:h(()=>Rt.name),preload:h(()=>Rt.preload),slide:{index:22,content:"",note:"",title:"Cache Cluster",level:1,noteHTML:"",raw:"",frontmatter:Rt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:302,id:22,no:23},__clicksContext:null,__preloaded:!1}),Au=r("h1",null,"Cache Cluster",-1),Su=r("ul",null,[r("li",null,"使用多个存储节点"),r("li",null,[x("数据分区/Data Partition? "),r("ul",null,[r("li",null,"哈希Hash Partitioning"),r("li",null,"一致性哈希Consistent Hashing")])])],-1),Mu=r("img",{src:$u,class:"m-5 h-70"},null,-1),Eu={__name:"23",setup(t){return L(Rt),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(Rt),22))),{default:w(()=>[Au,Su,Mu]),_:1},16))}},Pu=S(Eu,[["__file","/@slidev/slides/23.md"]]),jt=v({}),Du=v({layout:h(()=>jt.layout),transition:h(()=>jt.transition),class:h(()=>jt.class),clicks:h(()=>jt.clicks),name:h(()=>jt.name),preload:h(()=>jt.preload),slide:{index:23,content:"",note:"",title:"Hash Partitioning",level:1,noteHTML:"",raw:"",frontmatter:jt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:314,id:23,no:24},__clicksContext:null,__preloaded:!1}),Tu=r("h1",null,"Hash Partitioning",-1),Lu=r("pre",{class:"shiki shiki-themes vitesse-dark vitesse-light slidev-code",style:{"--shiki-dark":"#dbd7caee","--shiki-light":"#393a34","--shiki-dark-bg":"#121212","--shiki-light-bg":"#ffffff"}},[r("code",{class:"language-python"},[r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}},"def"),r("span",{style:{"--shiki-dark":"#B8A965","--shiki-light":"#998418"}}," set"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"("),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}},"key"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},","),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}}," value"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},","),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}}," servers"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"):")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}}," n "),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"="),r("span",{style:{"--shiki-dark":"#B8A965","--shiki-light":"#998418"}}," len"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"("),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}},"servers"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},")")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}}," index "),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"="),r("span",{style:{"--shiki-dark":"#B8A965","--shiki-light":"#998418"}}," hash"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"("),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}},"key"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},")"),r("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}}," %"),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}}," n")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}}," servers"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"["),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}},"index"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"]."),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}},"set"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"("),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}},"key"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},","),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}}," value"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},")")])])],-1),Bu=r("pre",{class:"shiki shiki-themes vitesse-dark vitesse-light slidev-code",style:{"--shiki-dark":"#dbd7caee","--shiki-light":"#393a34","--shiki-dark-bg":"#121212","--shiki-light-bg":"#ffffff"}},[r("code",{class:"language-python"},[r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#758575DD","--shiki-light":"#A0ADA0"}},"# base case # adding one node (3+1) # removing one node (3-1)")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}},">>>"),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}}," n "),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"="),r("span",{style:{"--shiki-dark":"#4C9A91","--shiki-light":"#2F798A"}}," 3"),r("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}}," >>>"),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}}," n "),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"="),r("span",{style:{"--shiki-dark":"#4C9A91","--shiki-light":"#2F798A"}}," 4"),r("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}}," >>>"),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}}," n "),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"="),r("span",{style:{"--shiki-dark":"#4C9A91","--shiki-light":"#2F798A"}}," 2")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}},">>>"),r("span",{style:{"--shiki-dark":"#B8A965","--shiki-light":"#998418"}}," hash"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"("),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},"'"),r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}},"key1"),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},"'"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},")"),r("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}}," %"),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}}," n "),r("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}},">>>"),r("span",{style:{"--shiki-dark":"#B8A965","--shiki-light":"#998418"}}," hash"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"("),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},"'"),r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}},"key1"),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},"'"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},")"),r("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}}," %"),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}}," n "),r("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}},">>>"),r("span",{style:{"--shiki-dark":"#B8A965","--shiki-light":"#998418"}}," hash"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"("),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},"'"),r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}},"key1"),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},"'"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},")"),r("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}}," %"),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}}," n")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#4C9A91","--shiki-light":"#2F798A"}},"1"),r("span",{style:{"--shiki-dark":"#4C9A91","--shiki-light":"#2F798A"}}," 2"),r("span",{style:{"--shiki-dark":"#4C9A91","--shiki-light":"#2F798A"}}," 0")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}},">>>"),r("span",{style:{"--shiki-dark":"#B8A965","--shiki-light":"#998418"}}," hash"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"("),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},"'"),r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}},"key2"),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},"'"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},")"),r("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}}," %"),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}}," n "),r("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}},">>>"),r("span",{style:{"--shiki-dark":"#B8A965","--shiki-light":"#998418"}}," hash"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"("),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},"'"),r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}},"key2"),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},"'"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},")"),r("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}}," %"),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}}," n "),r("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}},">>>"),r("span",{style:{"--shiki-dark":"#B8A965","--shiki-light":"#998418"}}," hash"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"("),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},"'"),r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}},"key2"),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},"'"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},")"),r("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}}," %"),r("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}}," n")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#4C9A91","--shiki-light":"#2F798A"}},"0"),r("span",{style:{"--shiki-dark":"#4C9A91","--shiki-light":"#2F798A"}}," 1"),r("span",{style:{"--shiki-dark":"#4C9A91","--shiki-light":"#2F798A"}}," 1")])])],-1),Ou={__name:"24",setup(t){return L(jt),E(),(e,s)=>{const n=We;return C(),M(F,D(T(y(B)(y(jt),23))),{default:w(()=>[Tu,be(n,we({},{ranges:[]}),{default:w(()=>[Lu]),_:1},16),be(n,we({},{ranges:[]}),{default:w(()=>[Bu]),_:1},16)]),_:1},16)}}},Iu=S(Ou,[["__file","/@slidev/slides/24.md"]]),Ut=v({}),Hu=v({layout:h(()=>Ut.layout),transition:h(()=>Ut.transition),class:h(()=>Ut.class),clicks:h(()=>Ut.clicks),name:h(()=>Ut.name),preload:h(()=>Ut.preload),slide:{index:24,content:"",note:"",title:"Consistent Hashing",level:1,noteHTML:"",raw:"",frontmatter:Ut,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:333,id:24,no:25},__clicksContext:null,__preloaded:!1}),Nu=r("h1",null,"Consistent Hashing",-1),Fu=r("p",null,"Consistent hashing is based on mapping each object to a point on the edge of a circle (or equivalently, mapping each object to a real angle). The system maps each available machine (or other storage bucket) to many pseudo-randomly distributed points on the edge of the same circle.",-1),Ru=r("div",{style:{"text-align":"right"}},"https://en.wikipedia.org/wiki/Consistent_hashing",-1),ju=r("p",null,"相关概念:Distributed hash table",-1),Uu=r("div",{style:{"text-align":"right"}},"https://en.wikipedia.org/wiki/Distributed_hash_table",-1),zu={__name:"25",setup(t){return L(Ut),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(Ut),24))),{default:w(()=>[Nu,Fu,Ru,ju,Uu]),_:1},16))}},Wu=S(zu,[["__file","/@slidev/slides/25.md"]]),Vu="/sa2024/06-scalable/assets/05-consistent-hashing-DuTq1ftT.png",zt=v({layout:"two-cols"}),qu=v({layout:h(()=>zt.layout),transition:h(()=>zt.transition),class:h(()=>zt.class),clicks:h(()=>zt.clicks),name:h(()=>zt.name),preload:h(()=>zt.preload),slide:{index:25,content:"",note:"",title:"Consistent Hashing",level:1,noteHTML:"",raw:"",frontmatter:zt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:344,id:25,no:26},__clicksContext:null,__preloaded:!1}),Yu=r("h1",null,"Consistent Hashing",-1),Ku=r("p",null,"将Server标识与数据键映射到同一个值域空间",-1),Gu=r("pre",{class:"shiki shiki-themes vitesse-dark vitesse-light slidev-code",style:{"--shiki-dark":"#dbd7caee","--shiki-light":"#393a34","--shiki-dark-bg":"#121212","--shiki-light-bg":"#ffffff"}},[r("code",{class:"language-python"},[r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#B8A965","--shiki-light":"#998418"}},"hash"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"("),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},'"'),r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}},"server-1"),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},'"'),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},")"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}}," ="),r("span",{style:{"--shiki-dark":"#4C9A91","--shiki-light":"#2F798A"}}," 3")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#B8A965","--shiki-light":"#998418"}},"hash"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"("),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},'"'),r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}},"server-2"),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},'"'),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},")"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}}," ="),r("span",{style:{"--shiki-dark":"#4C9A91","--shiki-light":"#2F798A"}}," 7")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#B8A965","--shiki-light":"#998418"}},"hash"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"("),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},'"'),r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}},"server-3"),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},'"'),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},")"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}}," ="),r("span",{style:{"--shiki-dark":"#4C9A91","--shiki-light":"#2F798A"}}," 11")]),x(` +`),r("span",{class:"line"}),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#B8A965","--shiki-light":"#998418"}},"hash"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"("),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},'"'),r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}},"testkey-1"),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},'"'),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},")"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}}," ="),r("span",{style:{"--shiki-dark":"#4C9A91","--shiki-light":"#2F798A"}}," 3")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#B8A965","--shiki-light":"#998418"}},"hash"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"("),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},'"'),r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}},"testkey-2"),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},'"'),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},")"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}}," ="),r("span",{style:{"--shiki-dark":"#4C9A91","--shiki-light":"#2F798A"}}," 4")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#B8A965","--shiki-light":"#998418"}},"hash"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"("),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},'"'),r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}},"testkey-3"),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},'"'),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},")"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}}," ="),r("span",{style:{"--shiki-dark":"#4C9A91","--shiki-light":"#2F798A"}}," 8")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#B8A965","--shiki-light":"#998418"}},"hash"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"("),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},'"'),r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}},"testkey-4"),r("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},'"'),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},")"),r("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}}," ="),r("span",{style:{"--shiki-dark":"#4C9A91","--shiki-light":"#2F798A"}}," 12")])])],-1),Zu=r("p",null,[r("br"),r("br"),r("img",{src:Vu,class:"m-5 h-70"})],-1),Xu={__name:"26",setup(t){return L(zt),E(),(e,s)=>(C(),M(ot,D(T(y(B)(y(zt),25))),{right:w(n=>[Zu]),default:w(()=>[Yu,Ku,Gu]),_:1},16))}},Ju=S(Xu,[["__file","/@slidev/slides/26.md"]]),vi="/sa2024/06-scalable/assets/05-cache-redis-cluster-B8n1awY2.png",Wt=v({}),Qu=v({layout:h(()=>Wt.layout),transition:h(()=>Wt.transition),class:h(()=>Wt.class),clicks:h(()=>Wt.clicks),name:h(()=>Wt.name),preload:h(()=>Wt.preload),slide:{index:26,content:"",note:"",title:"Spring Boot with Redis Cluster",level:1,noteHTML:"",raw:"",frontmatter:Wt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:368,id:26,no:27},__clicksContext:null,__preloaded:!1}),td=r("h1",null,"Spring Boot with Redis Cluster",-1),ed=r("br",null,null,-1),sd=r("img",{src:vi,class:"m-5 h-70"},null,-1),nd=r("p",null,[r("a",{href:"https://www.bilibili.com/video/BV17g4y1871A?p=2",target:"_blank",rel:"noopener"},"https://www.bilibili.com/video/BV17g4y1871A?p=2"),x(" 14:40")],-1),id={__name:"27",setup(t){return L(Wt),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(Wt),26))),{default:w(()=>[td,ed,sd,nd]),_:1},16))}},ad=S(id,[["__file","/@slidev/slides/27.md"]]),rd="/sa2024/06-scalable/assets/05-redis-create-auto-CF7_nNKX.png",ld="/sa2024/06-scalable/assets/05-redis-download-BaUV66gY.png",Vt=v({layout:"two-cols"}),od=v({layout:h(()=>Vt.layout),transition:h(()=>Vt.transition),class:h(()=>Vt.class),clicks:h(()=>Vt.clicks),name:h(()=>Vt.name),preload:h(()=>Vt.preload),slide:{index:27,content:"",note:"",title:"Redis Cluster",level:1,noteHTML:"",raw:"",frontmatter:Vt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:378,id:27,no:28},__clicksContext:null,__preloaded:!1}),cd=r("h1",null,"Redis Cluster",-1),hd=r("br",null,null,-1),ud=r("p",null,"自动创建",-1),dd=r("pre",{class:"shiki shiki-themes vitesse-dark vitesse-light slidev-code",style:{"--shiki-dark":"#dbd7caee","--shiki-light":"#393a34","--shiki-dark-bg":"#121212","--shiki-light-bg":"#ffffff"}},[r("code",{class:"language-sh"},[r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#80A665","--shiki-light":"#59873A"}},"edis-5.0.8/utils/create-cluster>"),r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}}," ./create-cluster"),r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}}," start")]),x(` +`),r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#80A665","--shiki-light":"#59873A"}},"redis-5.0.8/utils/create-cluster>"),r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}}," ./create-cluster"),r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}}," create")])])],-1),pd=r("img",{src:rd,class:"m-5 h-40"},null,-1),fd=r("br",null,null,-1),gd=r("img",{src:ld,class:"m-5 h-80"},null,-1),md=r("div",{style:{"text-align":"right"}},"https://redis.io/download#installation",-1),_d={__name:"28",setup(t){return L(Vt),E(),(e,s)=>{const n=We;return C(),M(ot,D(T(y(B)(y(Vt),27))),{right:w(i=>[fd,gd,md]),default:w(()=>[cd,hd,ud,be(n,we({},{ranges:[]}),{default:w(()=>[dd]),_:1},16),pd]),_:1},16)}}},kd=S(_d,[["__file","/@slidev/slides/28.md"]]),yd="/sa2024/06-scalable/assets/05-redis-create-conf-ltYIXHfe.png",vd="/sa2024/06-scalable/assets/05-redis-cluster-manual-xKehjmN2.png",qt=v({layout:"two-cols"}),bd=v({layout:h(()=>qt.layout),transition:h(()=>qt.transition),class:h(()=>qt.class),clicks:h(()=>qt.clicks),name:h(()=>qt.name),preload:h(()=>qt.preload),slide:{index:28,content:"",note:"",title:"Redis Cluster",level:1,noteHTML:"",raw:"",frontmatter:qt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:403,id:28,no:29},__clicksContext:null,__preloaded:!1}),wd=r("h1",null,"Redis Cluster",-1),xd=r("br",null,null,-1),$d=r("pre",{class:"shiki shiki-themes vitesse-dark vitesse-light slidev-code",style:{"--shiki-dark":"#dbd7caee","--shiki-light":"#393a34","--shiki-dark-bg":"#121212","--shiki-light-bg":"#ffffff"}},[r("code",{class:"language-bash"},[r("span",{class:"line"},[r("span",{style:{"--shiki-dark":"#80A665","--shiki-light":"#59873A"}},"redis-server"),r("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}}," ./redis.conf")])])],-1),Cd=r("img",{src:yd,class:"m-5 h-40"},null,-1),Ad=r("img",{src:vd,class:"m-5 h-40"},null,-1),Sd=r("div",{style:{"text-align":"right"}},"https://redis.io/topics/cluster-tutorial",-1),Md={__name:"29",setup(t){return L(qt),E(),(e,s)=>{const n=We;return C(),M(ot,D(T(y(B)(y(qt),28))),{right:w(i=>[Ad,Sd]),default:w(()=>[wd,xd,x(" 手动创建 "),be(n,we({},{ranges:[]}),{default:w(()=>[$d]),_:1},16),Cd]),_:1},16)}}},Ed=S(Md,[["__file","/@slidev/slides/29.md"]]),Pd="/sa2024/06-scalable/assets/05-redis-hash-slots-DQSPPdvj.png",Yt=v({}),Dd=v({layout:h(()=>Yt.layout),transition:h(()=>Yt.transition),class:h(()=>Yt.class),clicks:h(()=>Yt.clicks),name:h(()=>Yt.name),preload:h(()=>Yt.preload),slide:{index:29,content:"",note:"",title:"Redis Slots",level:1,noteHTML:"",raw:"",frontmatter:Yt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:426,id:29,no:30},__clicksContext:null,__preloaded:!1}),Td=r("h1",null,"Redis Slots",-1),Ld=r("br",null,null,-1),Bd=r("img",{src:Pd,class:"m-5 h-80"},null,-1),Od={__name:"30",setup(t){return L(Yt),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(Yt),29))),{default:w(()=>[Td,Ld,Bd]),_:1},16))}},Id=S(Od,[["__file","/@slidev/slides/30.md"]]),Kt=v({}),Hd=v({layout:h(()=>Kt.layout),transition:h(()=>Kt.transition),class:h(()=>Kt.class),clicks:h(()=>Kt.clicks),name:h(()=>Kt.name),preload:h(()=>Kt.preload),slide:{index:30,content:"",note:"",title:"Spring Boot with Redis Cluster",level:1,noteHTML:"",raw:"",frontmatter:Kt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:438,id:30,no:31},__clicksContext:null,__preloaded:!1}),Nd=r("h1",null,"Spring Boot with Redis Cluster",-1),Fd=r("br",null,null,-1),Rd=r("img",{src:vi,class:"m-5 h-80"},null,-1),jd=r("div",{style:{"text-align":"right"}},"sa-spring/spring-cache-redis-cluster",-1),Ud={__name:"31",setup(t){return L(Kt),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(Kt),30))),{default:w(()=>[Nd,Fd,Rd,jd]),_:1},16))}},zd=S(Ud,[["__file","/@slidev/slides/31.md"]]),Wd="/sa2024/06-scalable/assets/05-session-Di7buRZv.png",Gt=v({layout:"two-cols"}),Vd=v({layout:h(()=>Gt.layout),transition:h(()=>Gt.transition),class:h(()=>Gt.class),clicks:h(()=>Gt.clicks),name:h(()=>Gt.name),preload:h(()=>Gt.preload),slide:{index:31,content:"",note:"",title:"Cookies and Sessions",level:1,noteHTML:"",raw:"",frontmatter:Gt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:447,id:31,no:32},__clicksContext:null,__preloaded:!1}),qd=r("h1",null,"Cookies and Sessions",-1),Yd=r("br",null,null,-1),Kd=r("p",null,[x("相关概念:Spring Bean Scope ("),r("a",{href:"https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-scopes",target:"_blank",rel:"noopener"},"https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-scopes"),x(")")],-1),Gd=r("p",null,[r("br"),r("br"),r("br"),r("img",{src:Wd,class:"m-5 h-70"})],-1),Zd={__name:"32",setup(t){return L(Gt),E(),(e,s)=>(C(),M(ot,D(T(y(B)(y(Gt),31))),{right:w(n=>[Gd]),default:w(()=>[qd,Yd,x(" 会话(session)是一种持久网络协议,在用户(或用户代理)端和服务器端之间创建关联,从而起到交换数据包的作用机制,session在网络协议中是非常重要的部分。在不包含会话层或者是无法长时间驻留会话层的传输协议中,会话的维持需要依靠在传输数据中的高级别程序。HTTP cookie就会被用来包含一些相关的信息,例如session ID,参数和权限信息等。 "),Kd]),_:1},16))}},Xd=S(Zd,[["__file","/@slidev/slides/32.md"]]),Jd="/sa2024/06-scalable/assets/05-session-cluster-DYYKMZqY.png",Zt=v({}),Qd=v({layout:h(()=>Zt.layout),transition:h(()=>Zt.transition),class:h(()=>Zt.class),clicks:h(()=>Zt.clicks),name:h(()=>Zt.name),preload:h(()=>Zt.preload),slide:{index:32,content:"",note:"",title:"Session",level:1,noteHTML:"",raw:"",frontmatter:Zt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:464,id:32,no:33},__clicksContext:null,__preloaded:!1}),tp=r("h1",null,"Session",-1),ep=r("br",null,null,-1),sp=r("img",{src:Jd,class:"m-5 h-80"},null,-1),np={__name:"33",setup(t){return L(Zt),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(Zt),32))),{default:w(()=>[tp,ep,sp]),_:1},16))}},ip=S(np,[["__file","/@slidev/slides/33.md"]]),ap="/sa2024/06-scalable/assets/05-session-stickiness-C7HR9ZNC.png",Xt=v({}),rp=v({layout:h(()=>Xt.layout),transition:h(()=>Xt.transition),class:h(()=>Xt.class),clicks:h(()=>Xt.clicks),name:h(()=>Xt.name),preload:h(()=>Xt.preload),slide:{index:33,content:"",note:"",title:"Session Stickiness",level:1,noteHTML:"",raw:"",frontmatter:Xt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:473,id:33,no:34},__clicksContext:null,__preloaded:!1}),lp=r("h1",null,"Session Stickiness",-1),op=r("br",null,null,-1),cp=r("img",{src:ap,class:"m-5 h-80"},null,-1),hp=r("p",null,[r("a",{href:"https://www.haproxy.com/blog/load-balancing-affinity-persistence-sticky-sessions-what-you-need-to-know/",target:"_blank",rel:"noopener"},"https://www.haproxy.com/blog/load-balancing-affinity-persistence-sticky-sessions-what-you-need-to-know/")],-1),up={__name:"34",setup(t){return L(Xt),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(Xt),33))),{default:w(()=>[lp,op,cp,hp]),_:1},16))}},dp=S(up,[["__file","/@slidev/slides/34.md"]]),pp="/sa2024/06-scalable/assets/05-tomcat-cluster-A2_PCDkn.png",Jt=v({}),fp=v({layout:h(()=>Jt.layout),transition:h(()=>Jt.transition),class:h(()=>Jt.class),clicks:h(()=>Jt.clicks),name:h(()=>Jt.name),preload:h(()=>Jt.preload),slide:{index:34,content:"",note:"",title:"Tomcat Cluster",level:1,noteHTML:"",raw:"",frontmatter:Jt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:485,id:34,no:35},__clicksContext:null,__preloaded:!1}),gp=r("h1",null,"Tomcat Cluster",-1),mp=r("br",null,null,-1),_p=r("img",{src:pp,class:"m-5 h-80"},null,-1),kp=r("p",null,"Session Replication /Web Farming",-1),yp={__name:"35",setup(t){return L(Jt),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(Jt),34))),{default:w(()=>[gp,mp,_p,kp]),_:1},16))}},vp=S(yp,[["__file","/@slidev/slides/35.md"]]),bp="/sa2024/06-scalable/assets/05-session-jdbc-idxYzz6G.png",Qt=v({}),wp=v({layout:h(()=>Qt.layout),transition:h(()=>Qt.transition),class:h(()=>Qt.class),clicks:h(()=>Qt.clicks),name:h(()=>Qt.name),preload:h(()=>Qt.preload),slide:{index:35,content:"",note:"",title:"Spring Session with JDBC",level:1,noteHTML:"",raw:"",frontmatter:Qt,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:496,id:35,no:36},__clicksContext:null,__preloaded:!1}),xp=r("h1",null,"Spring Session with JDBC",-1),$p=r("br",null,null,-1),Cp=r("img",{src:bp,class:"m-5 h-80"},null,-1),Ap=r("p",null,[r("a",{href:"https://www.bilibili.com/video/BV17g4y1871A?p=3",target:"_blank",rel:"noopener"},"https://www.bilibili.com/video/BV17g4y1871A?p=3"),x(" 6:40")],-1),Sp=r("div",{style:{"text-align":"right"}},"sa-spring/spring-session-jdbc",-1),Mp={__name:"36",setup(t){return L(Qt),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(Qt),35))),{default:w(()=>[xp,$p,Cp,Ap,Sp]),_:1},16))}},Ep=S(Mp,[["__file","/@slidev/slides/36.md"]]),Pp="/sa2024/06-scalable/assets/05-session-redis-DYMGsWTE.png",te=v({}),Dp=v({layout:h(()=>te.layout),transition:h(()=>te.transition),class:h(()=>te.class),clicks:h(()=>te.clicks),name:h(()=>te.name),preload:h(()=>te.preload),slide:{index:36,content:"",note:"",title:"Spring Session with Redis",level:1,noteHTML:"",raw:"",frontmatter:te,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:510,id:36,no:37},__clicksContext:null,__preloaded:!1}),Tp=r("h1",null,"Spring Session with Redis",-1),Lp=r("br",null,null,-1),Bp=r("img",{src:Pp,class:"m-5 h-80"},null,-1),Op=r("p",null,[r("a",{href:"https://www.bilibili.com/video/BV17g4y1871A?p=4",target:"_blank",rel:"noopener"},"https://www.bilibili.com/video/BV17g4y1871A?p=4"),x(" (0:10)")],-1),Ip=r("div",{style:{"text-align":"right"}},"sa-spring/spring-session-redis",-1),Hp={__name:"37",setup(t){return L(te),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(te),36))),{default:w(()=>[Tp,Lp,Bp,Op,Ip]),_:1},16))}},Np=S(Hp,[["__file","/@slidev/slides/37.md"]]),Fp="/sa2024/06-scalable/assets/05-aosa-CHolCvXF.jpg",ee=v({}),Rp=v({layout:h(()=>ee.layout),transition:h(()=>ee.transition),class:h(()=>ee.class),clicks:h(()=>ee.clicks),name:h(()=>ee.name),preload:h(()=>ee.preload),slide:{index:37,content:"",note:"",title:"Scalable Web Architecture and Distributed Systems",level:3,noteHTML:"",raw:"",frontmatter:ee,filepath:"/Users/chun/Develop/software-architecture-explained-with-spring/06-scalable.md",start:525,id:37,no:38},__clicksContext:null,__preloaded:!1}),jp=r("h3",null,"Scalable Web Architecture and Distributed Systems",-1),Up=r("br",null,null,-1),zp=r("img",{src:Fp,class:"m-5 h-70"},null,-1),Wp=r("div",{style:{"text-align":"right"}},"http://aosabook.org/en/distsys.html",-1),Vp={__name:"38",setup(t){return L(ee),E(),(e,s)=>(C(),M(F,D(T(y(B)(y(ee),37))),{default:w(()=>[jp,Up,zp,Wp]),_:1},16))}},qp=S(Vp,[["__file","/@slidev/slides/38.md"]]),G=[{path:"1",name:"page-1",component:Yr,meta:zr},{path:"2",name:"page-2",component:sl,meta:Jr},{path:"3",name:"page-3",component:ul,meta:il},{path:"4",name:"page-4",component:xl,meta:fl},{path:"5",name:"page-5",component:Dl,meta:Cl},{path:"6",name:"page-6",component:Fl,meta:Ll},{path:"7",name:"page-7",component:gc,meta:cc},{path:"8",name:"page-8",component:$c,meta:kc},{path:"9",name:"page-9",component:Pc,meta:Ac},{path:"10",name:"page-10",component:Fc,meta:Tc},{path:"11",name:"page-11",component:Kc,meta:Uc},{path:"12",name:"page-12",component:th,meta:Zc},{path:"13",name:"page-13",component:uh,meta:sh},{path:"14",name:"page-14",component:vh,meta:ph},{path:"15",name:"page-15",component:Eh,meta:wh},{path:"16",name:"page-16",component:Bh,meta:Ph},{path:"17",name:"page-17",component:Uh,meta:Ih},{path:"18",name:"page-18",component:Kh,meta:Wh},{path:"19",name:"page-19",component:tu,meta:Zh},{path:"20",name:"page-20",component:lu,meta:su},{path:"21",name:"page-21",component:fu,meta:cu},{path:"22",name:"page-22",component:xu,meta:mu},{path:"23",name:"page-23",component:Pu,meta:Cu},{path:"24",name:"page-24",component:Iu,meta:Du},{path:"25",name:"page-25",component:Wu,meta:Hu},{path:"26",name:"page-26",component:Ju,meta:qu},{path:"27",name:"page-27",component:ad,meta:Qu},{path:"28",name:"page-28",component:kd,meta:od},{path:"29",name:"page-29",component:Ed,meta:bd},{path:"30",name:"page-30",component:Id,meta:Dd},{path:"31",name:"page-31",component:zd,meta:Hd},{path:"32",name:"page-32",component:Xd,meta:Vd},{path:"33",name:"page-33",component:ip,meta:Qd},{path:"34",name:"page-34",component:dp,meta:rp},{path:"35",name:"page-35",component:vp,meta:fp},{path:"36",name:"page-36",component:Ep,meta:wp},{path:"37",name:"page-37",component:Np,meta:Dp},{path:"38",name:"page-38",component:qp,meta:Rp}].map(Ks),Yp=[].map(Ks),Qe=[{name:"play",path:"/",component:()=>Re(()=>import("./slidev/play-BVMXS2_7.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10])),children:[...G,...Yp]},{name:"print",path:"/print",component:()=>Re(()=>import("./slidev/print-xoTYi0OT.js"),__vite__mapDeps([11,1,4,9,3,6,7,12]))},{path:"",redirect:{path:"/1"}},{path:"/:pathMatch(.*)",redirect:{path:"/1"}}];{let t=function(e){if(!N.remote||N.remote===e.query.password)return!0;if(N.remote&&e.query.password===void 0){const s=prompt("Enter password");if(N.remote===s)return!0}return e.params.no?{path:`/${e.params.no}`}:{path:""}};Qe.push({path:"/presenter/print",component:()=>Re(()=>import("./slidev/print-CXpQb0cT.js"),__vite__mapDeps([13,1,14,15,3,6,7]))}),Qe.push({name:"presenter",path:"/presenter/:no",component:()=>Re(()=>import("./slidev/presenter-DXOhcyNJ.js"),__vite__mapDeps([16,3,1,2,4,5,6,7,8,14,15,17,18,19])),beforeEnter:t}),Qe.push({path:"/presenter",redirect:{path:"/presenter/1"}})}const it=ra({history:la("/sa2024/06-scalable/"),routes:Qe}),bi=U(!1);function Kp(t,e,{mode:s="replace"}={}){return h({get(){const n=it.currentRoute.value.query[t];return n==null?e??null:Array.isArray(n)?n.filter(Boolean):n},set(n){He(()=>{it[y(s)]({query:{...it.currentRoute.value.query,[t]:n}})})}})}var Gp=Object.defineProperty,An=Object.getOwnPropertySymbols,Zp=Object.prototype.hasOwnProperty,Xp=Object.prototype.propertyIsEnumerable,Sn=(t,e,s)=>e in t?Gp(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,Bs=(t,e)=>{for(var s in e||(e={}))Zp.call(e,s)&&Sn(t,s,e[s]);if(An)for(var s of An(e))Xp.call(e,s)&&Sn(t,s,e[s]);return t},Jp=()=>({emit(t,...e){for(let s=0,n=this.events[t]||[],i=n.length;s{var n;this.events[t]=(n=this.events[t])==null?void 0:n.filter(i=>e!==i)}}});function Mn(t,e,s,n=i=>i){return t*n(.5-e*(.5-s))}function Qp(t){return[-t[0],-t[1]]}function pt(t,e){return[t[0]+e[0],t[1]+e[1]]}function rt(t,e){return[t[0]-e[0],t[1]-e[1]]}function dt(t,e){return[t[0]*e,t[1]*e]}function tf(t,e){return[t[0]/e,t[1]/e]}function Ee(t){return[t[1],-t[0]]}function En(t,e){return t[0]*e[0]+t[1]*e[1]}function ef(t,e){return t[0]===e[0]&&t[1]===e[1]}function sf(t){return Math.hypot(t[0],t[1])}function nf(t){return t[0]*t[0]+t[1]*t[1]}function Pn(t,e){return nf(rt(t,e))}function wi(t){return tf(t,sf(t))}function af(t,e){return Math.hypot(t[1]-e[1],t[0]-e[0])}function Pe(t,e,s){let n=Math.sin(s),i=Math.cos(s),a=t[0]-e[0],l=t[1]-e[1],o=a*i-l*n,c=a*n+l*i;return[o+e[0],c+e[1]]}function Os(t,e,s){return pt(t,dt(rt(e,t),s))}function Dn(t,e,s){return pt(t,dt(e,s))}var{min:ke,PI:rf}=Math,Tn=.275,De=rf+1e-4;function lf(t,e={}){let{size:s=16,smoothing:n=.5,thinning:i=.5,simulatePressure:a=!0,easing:l=O=>O,start:o={},end:c={},last:u=!1}=e,{cap:d=!0,easing:p=O=>O*(2-O)}=o,{cap:g=!0,easing:f=O=>--O*O*O+1}=c;if(t.length===0||s<=0)return[];let m=t[t.length-1].runningLength,_=o.taper===!1?0:o.taper===!0?Math.max(s,m):o.taper,k=c.taper===!1?0:c.taper===!0?Math.max(s,m):c.taper,b=Math.pow(s*n,2),A=[],P=[],z=t.slice(0,10).reduce((O,q)=>{let H=q.pressure;if(a){let R=ke(1,q.distance/s),_s=ke(1,1-R);H=ke(1,O+(_s-O)*(R*Tn))}return(O+H)/2},t[0].pressure),j=Mn(s,i,t[t.length-1].pressure,l),W,ct=t[0].vector,K=t[0].point,st=K,ft=K,gt=st,X=!1;for(let O=0;Ob)&&(A.push(ft),K=ft),gt=pt(H,dn),(O<=1||Pn(st,gt)>b)&&(P.push(gt),st=gt),z=q,ct=R}let I=t[0].point.slice(0,2),V=t.length>1?t[t.length-1].point.slice(0,2):pt(t[0].point,[1,1]),ne=[],ht=[];if(t.length===1){if(!(_||k)||u){let O=Dn(I,wi(Ee(rt(I,V))),-(W||j)),q=[];for(let H=1/13,R=H;R<=1;R+=H)q.push(Pe(O,I,De*2*R));return q}}else{if(!(_||k&&t.length===1))if(d)for(let q=1/13,H=q;H<=1;H+=q){let R=Pe(P[0],I,De*H);ne.push(R)}else{let q=rt(A[0],P[0]),H=dt(q,.5),R=dt(q,.51);ne.push(rt(I,H),rt(I,R),pt(I,R),pt(I,H))}let O=Ee(Qp(t[t.length-1].vector));if(k||_&&t.length===1)ht.push(V);else if(g){let q=Dn(V,O,j);for(let H=1/29,R=H;R<1;R+=H)ht.push(Pe(q,V,De*3*R))}else ht.push(pt(V,dt(O,j)),pt(V,dt(O,j*.99)),rt(V,dt(O,j*.99)),rt(V,dt(O,j)))}return A.concat(ht,P.reverse(),ne)}function of(t,e={}){var s;let{streamline:n=.5,size:i=16,last:a=!1}=e;if(t.length===0)return[];let l=.15+(1-n)*.85,o=Array.isArray(t[0])?t:t.map(({x:f,y:m,pressure:_=.5})=>[f,m,_]);if(o.length===2){let f=o[1];o=o.slice(0,-1);for(let m=1;m<5;m++)o.push(Os(o[0],f,m/4))}o.length===1&&(o=[...o,[...pt(o[0],[1,1]),...o[0].slice(2)]]);let c=[{point:[o[0][0],o[0][1]],pressure:o[0][2]>=0?o[0][2]:.25,vector:[1,1],distance:0,runningLength:0}],u=!1,d=0,p=c[0],g=o.length-1;for(let f=1;f=0?o[f][2]:.5,vector:wi(rt(p.point,m)),distance:_,runningLength:d},c.push(p)}return c[0].vector=((s=c[1])==null?void 0:s.vector)||[0,0],c}function cf(t,e={}){return lf(of(t,e),e)}function is(t,e){return t-e}function hf(t){return t<0?-1:1}function as(t){return[Math.abs(t),hf(t)]}function xi(){const t=()=>((1+Math.random())*65536|0).toString(16).substring(1);return`${t()+t()}-${t()}-${t()}-${t()}-${t()}${t()}${t()}`}var uf=2,_t=uf,Ce=class{constructor(t){this.drauu=t,this.event=void 0,this.point=void 0,this.start=void 0,this.el=null}onSelected(t){}onUnselected(){}onStart(t){}onMove(t){return!1}onEnd(t){}get brush(){return this.drauu.brush}get shiftPressed(){return this.drauu.shiftPressed}get altPressed(){return this.drauu.altPressed}get svgElement(){return this.drauu.el}getMousePosition(t){var e,s,n;const i=this.drauu.el,a=(e=this.drauu.options.coordinateScale)!=null?e:1,l=(s=this.drauu.options.offset)!=null?s:{x:0,y:0};if(this.drauu.options.coordinateTransform===!1){const o=this.drauu.el.getBoundingClientRect();return{x:(t.pageX-o.left+l.x)*a,y:(t.pageY-o.top+l.y)*a,pressure:t.pressure}}else{const o=this.drauu.svgPoint;o.x=t.clientX+l.x,o.y=t.clientY+l.y;const c=o.matrixTransform((n=i.getScreenCTM())==null?void 0:n.inverse());return{x:c.x*a,y:c.y*a,pressure:t.pressure}}}createElement(t,e){var s;const n=document.createElementNS("http://www.w3.org/2000/svg",t),i=e?Bs(Bs({},this.brush),e):this.brush;return n.setAttribute("fill",(s=i.fill)!=null?s:"transparent"),n.setAttribute("stroke",i.color),n.setAttribute("stroke-width",i.size.toString()),n.setAttribute("stroke-linecap","round"),i.dasharray&&n.setAttribute("stroke-dasharray",i.dasharray),n}attr(t,e){this.el.setAttribute(t,typeof e=="string"?e:e.toFixed(_t))}_setEvent(t){this.event=t,this.point=this.getMousePosition(t)}_eventDown(t){return this._setEvent(t),this.start=this.point,this.onStart(this.point)}_eventMove(t){return this._setEvent(t),this.onMove(this.point)}_eventUp(t){return this._setEvent(t),this.onEnd(this.point)}},df=class $i extends Ce{constructor(){super(...arguments),this.points=[]}onStart(e){return this.el=document.createElementNS("http://www.w3.org/2000/svg","path"),this.points=[e],this.attr("fill",this.brush.color),this.attr("d",this.getSvgData(this.points)),this.el}onMove(e){return this.el||this.onStart(e),this.points[this.points.length-1]!==e&&this.points.push(e),this.attr("d",this.getSvgData(this.points)),!0}onEnd(){const e=this.el;return this.el=null,!!e}getSvgData(e){return $i.getSvgData(e,this.brush)}static getSvgData(e,s){const n=cf(e,Bs({size:s.size,thinning:.9,simulatePressure:!1,start:{taper:5},end:{taper:5}},s.stylusOptions));if(!n.length)return"";const i=n.reduce((a,[l,o],c,u)=>{const[d,p]=u[(c+1)%u.length];return a.push(l,o,(l+d)/2,(o+p)/2),a},["M",...n[0],"Q"]);return i.push("Z"),i.map(a=>typeof a=="number"?a.toFixed(2):a).join(" ")}},pf=class extends Ce{onStart(t){return this.el=this.createElement("ellipse"),this.attr("cx",t.x),this.attr("cy",t.y),this.el}onMove(t){if(!this.el||!this.start)return!1;let[e,s]=as(t.x-this.start.x),[n,i]=as(t.y-this.start.y);if(this.shiftPressed){const a=Math.min(e,n);e=a,n=a}if(this.altPressed)this.attr("cx",this.start.x),this.attr("cy",this.start.y),this.attr("rx",e),this.attr("ry",n);else{const[a,l]=[this.start.x,this.start.x+e*s].sort(is),[o,c]=[this.start.y,this.start.y+n*i].sort(is);this.attr("cx",(a+l)/2),this.attr("cy",(o+c)/2),this.attr("rx",(l-a)/2),this.attr("ry",(c-o)/2)}return!0}onEnd(){const t=this.el;return this.el=null,!(!t||!t.getTotalLength())}};function Ci(t,e){const s=document.createElementNS("http://www.w3.org/2000/svg","defs"),n=document.createElementNS("http://www.w3.org/2000/svg","marker"),i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttribute("fill",e),n.setAttribute("id",t),n.setAttribute("viewBox","0 -5 10 10"),n.setAttribute("refX","5"),n.setAttribute("refY","0"),n.setAttribute("markerWidth","4"),n.setAttribute("markerHeight","4"),n.setAttribute("orient","auto"),i.setAttribute("d","M0,-5L10,0L0,5"),n.appendChild(i),s.appendChild(n),s}var ff=class extends Ce{onStart(t){if(this.el=this.createElement("line",{fill:"transparent"}),this.attr("x1",t.x),this.attr("y1",t.y),this.attr("x2",t.x),this.attr("y2",t.y),this.brush.arrowEnd){const e=xi(),s=document.createElementNS("http://www.w3.org/2000/svg","g");return s.append(Ci(e,this.brush.color)),s.append(this.el),this.attr("marker-end",`url(#${e})`),s}return this.el}onMove(t){if(!this.el)return!1;let{x:e,y:s}=t;if(this.shiftPressed){const n=t.x-this.start.x,i=t.y-this.start.y;if(i!==0){let a=n/i;a=Math.round(a),Math.abs(a)<=1?(e=this.start.x+i*a,s=this.start.y+i):(e=this.start.x+n,s=this.start.y)}}return this.altPressed?(this.attr("x1",this.start.x*2-e),this.attr("y1",this.start.y*2-s),this.attr("x2",e),this.attr("y2",s)):(this.attr("x1",this.start.x),this.attr("y1",this.start.y),this.attr("x2",e),this.attr("y2",s)),!0}onEnd(){const t=this.el;return this.el=null,!(!t||t.getTotalLength()<5)}},gf=class extends Ce{onStart(t){return this.el=this.createElement("rect"),this.brush.cornerRadius&&(this.attr("rx",this.brush.cornerRadius),this.attr("ry",this.brush.cornerRadius)),this.attr("x",t.x),this.attr("y",t.y),this.el}onMove(t){if(!this.el||!this.start)return!1;let[e,s]=as(t.x-this.start.x),[n,i]=as(t.y-this.start.y);if(this.shiftPressed){const a=Math.min(e,n);e=a,n=a}if(this.altPressed)this.attr("x",this.start.x-e),this.attr("y",this.start.y-n),this.attr("width",e*2),this.attr("height",n*2);else{const[a,l]=[this.start.x,this.start.x+e*s].sort(is),[o,c]=[this.start.y,this.start.y+n*i].sort(is);this.attr("x",a),this.attr("y",o),this.attr("width",l-a),this.attr("height",c-o)}return!0}onEnd(){const t=this.el;return this.el=null,!(!t||!t.getTotalLength())}};function mf(t,e){const s=t.x-e.x,n=t.y-e.y;return s*s+n*n}function _f(t,e,s){let n=e.x,i=e.y,a=s.x-n,l=s.y-i;if(a!==0||l!==0){const o=((t.x-n)*a+(t.y-i)*l)/(a*a+l*l);o>1?(n=s.x,i=s.y):o>0&&(n+=a*o,i+=l*o)}return a=t.x-n,l=t.y-i,a*a+l*l}function kf(t,e){let s=t[0];const n=[s];let i;for(let a=1,l=t.length;ae&&(n.push(i),s=i);return s!==i&&i&&n.push(i),n}function Is(t,e,s,n,i){let a=n,l=0;for(let o=e+1;oa&&(l=o,a=c)}a>n&&(l-e>1&&Is(t,e,l,n,i),i.push(t[l]),s-l>1&&Is(t,l,s,n,i))}function yf(t,e){const s=t.length-1,n=[t[0]];return Is(t,0,s,e,n),n.push(t[s]),n}function Ln(t,e,s=!1){if(t.length<=2)return t;const n=e!==void 0?e*e:1;return t=s?t:kf(t,n),t=yf(t,n),t}var vf=class he extends Ce{constructor(){super(...arguments),this.points=[],this.count=0}onStart(e){if(this.el=this.createElement("path",{fill:"transparent"}),this.points=[e],this.brush.arrowEnd){this.arrowId=xi();const s=Ci(this.arrowId,this.brush.color);this.el.appendChild(s)}return this.el}onMove(e){return this.el||this.onStart(e),this.points[this.points.length-1]!==e&&(this.points.push(e),this.count+=1),this.count>5&&(this.points=Ln(this.points,1,!0),this.count=0),this.attr("d",he.toSvgData(this.points)),!0}onEnd(){const e=this.el;return this.el=null,!(!e||(e.setAttribute("d",he.toSvgData(Ln(this.points,1,!0))),!e.getTotalLength()))}static line(e,s){const n=s.x-e.x,i=s.y-e.y;return{length:Math.sqrt(n**2+i**2),angle:Math.atan2(i,n)}}static controlPoint(e,s,n,i){const a=s||e,l=n||e,o=.2,c=he.line(a,l),u=c.angle+(i?Math.PI:0),d=c.length*o,p=e.x+Math.cos(u)*d,g=e.y+Math.sin(u)*d;return{x:p,y:g}}static bezierCommand(e,s,n){const i=he.controlPoint(n[s-1],n[s-2],e),a=he.controlPoint(e,n[s-1],n[s+1],!0);return`C ${i.x.toFixed(_t)},${i.y.toFixed(_t)} ${a.x.toFixed(_t)},${a.y.toFixed(_t)} ${e.x.toFixed(_t)},${e.y.toFixed(_t)}`}static toSvgData(e){return e.reduce((s,n,i,a)=>i===0?`M ${n.x.toFixed(_t)},${n.y.toFixed(_t)}`:`${s} ${he.bezierCommand(n,i,a)}`,"")}},bf=class extends Ce{constructor(){super(...arguments),this.pathSubFactor=20,this.pathFragments=[],this._erased=[]}onSelected(t){const e=(s,n)=>{if(s&&s.length)for(let i=0;it.forEach(e=>this.drauu._restoreNode(e)),redo:()=>t.forEach(e=>this.drauu._removeNode(e))}}checkAndEraseElement(){if(this.pathFragments.length)for(let t=0;t!this._erased.includes(t.element))),this._erased.length>0}lineLineIntersect(t,e){const s=t.x1,n=t.x2,i=e.x1,a=e.x2,l=t.y1,o=t.y2,c=e.y1,u=e.y2,d=(s-n)*(c-u)-(l-o)*(i-a),p=(s*o-l*n)*(i-a)-(s-n)*(i*u-c*a),g=(s*o-l*n)*(c-u)-(l-o)*(i*u-c*a),f=(m,_,k)=>m>=_&&m<=k?!0:m>=k&&m<=_;if(d===0)return!1;{const m={x:p/d,y:g/d};return f(m.x,s,n)&&f(m.y,l,o)&&f(m.x,i,a)&&f(m.y,c,u)}}};function wf(t){return{draw:new vf(t),stylus:new df(t),line:new ff(t),rectangle:new gf(t),ellipse:new pf(t),eraseLine:new bf(t)}}var xf=class{constructor(t={}){this.options=t,this.el=null,this.svgPoint=null,this.eventEl=null,this.shiftPressed=!1,this.altPressed=!1,this.drawing=!1,this._emitter=Jp(),this._originalPointerId=null,this._models=wf(this),this._opStack=[],this._opIndex=0,this._disposables=[],this._elements=[],this.options.brush||(this.options.brush={color:"black",size:3,mode:"stylus"}),t.el&&this.mount(t.el,t.eventTarget,t.window)}get model(){return this._models[this.mode]}get mounted(){return!!this.el}get mode(){return this.options.brush.mode||"stylus"}set mode(t){this._models[this.mode].onUnselected(),this.options.brush.mode=t,this.model.onSelected(this.el)}get brush(){return this.options.brush}set brush(t){this.options.brush=t}resolveSelector(t){return typeof t=="string"?document.querySelector(t):t||null}mount(t,e,s=window){if(this.el)throw new Error("[drauu] already mounted, unmount previous target first");if(this.el=this.resolveSelector(t),!this.el)throw new Error("[drauu] target element not found");if(this.el.tagName.toLocaleLowerCase()!=="svg")throw new Error("[drauu] can only mount to a SVG element");if(!this.el.createSVGPoint)throw new Error("[drauu] SVG element must be create by document.createElementNS('http://www.w3.org/2000/svg', 'svg')");this.svgPoint=this.el.createSVGPoint();const n=this.resolveSelector(e)||this.el,i=this.eventStart.bind(this),a=this.eventMove.bind(this),l=this.eventEnd.bind(this),o=this.eventKeyboard.bind(this);n.addEventListener("pointerdown",i,{passive:!1}),s.addEventListener("pointermove",a,{passive:!1}),s.addEventListener("pointerup",l,{passive:!1}),s.addEventListener("pointercancel",l,{passive:!1}),s.addEventListener("keydown",o,!1),s.addEventListener("keyup",o,!1),this._disposables.push(()=>{n.removeEventListener("pointerdown",i),s.removeEventListener("pointermove",a),s.removeEventListener("pointerup",l),s.removeEventListener("pointercancel",l),s.removeEventListener("keydown",o,!1),s.removeEventListener("keyup",o,!1)}),this._emitter.emit("mounted")}unmount(){this._disposables.forEach(t=>t()),this._disposables.length=0,this._elements.length=0,this.el=null,this._emitter.emit("unmounted")}on(t,e){return this._emitter.on(t,e)}undo(){return!this.canUndo()||this.drawing?!1:(this._opStack[--this._opIndex].undo(),this._emitter.emit("changed"),!0)}redo(){return!this.canRedo()||this.drawing?!1:(this._opStack[this._opIndex++].redo(),this._emitter.emit("changed"),!0)}canRedo(){return this._opIndex0}eventMove(t){!this.acceptsInput(t)||!this.drawing||this.model._eventMove(t)&&(t.stopPropagation(),t.preventDefault(),this._emitter.emit("changed"))}eventStart(t){this.acceptsInput(t)&&(t.stopPropagation(),t.preventDefault(),this._currentNode&&this.cancel(),this.drawing=!0,this._originalPointerId=t.pointerId,this._emitter.emit("start"),this._currentNode=this.model._eventDown(t),this._currentNode&&this.mode!=="eraseLine"&&this.el.appendChild(this._currentNode),this._emitter.emit("changed"))}eventEnd(t){if(!this.acceptsInput(t)||!this.drawing)return;const e=this.model._eventUp(t);if(!e)this.cancel();else if(e===!0){const s=this._currentNode;this._appendNode(s),this.commit({undo:()=>this._removeNode(s),redo:()=>this._restoreNode(s)})}else this.commit(e);this.drawing=!1,this._emitter.emit("end"),this._emitter.emit("changed"),this._originalPointerId=null}acceptsInput(t){return(!this.options.acceptsInputTypes||this.options.acceptsInputTypes.includes(t.pointerType))&&!(this._originalPointerId&&this._originalPointerId!==t.pointerId)}eventKeyboard(t){this.shiftPressed===t.shiftKey&&this.altPressed===t.altKey||(this.shiftPressed=t.shiftKey,this.altPressed=t.altKey,this.model.point&&this.model.onMove(this.model.point)&&this._emitter.emit("changed"))}commit(t){this._opStack.length=this._opIndex,this._opStack.push(t),this._opIndex++;const e=this._currentNode;this._currentNode=void 0,this._emitter.emit("committed",e)}clear(){this._opStack.length=0,this._opIndex=0,this.cancel(),this.el.innerHTML="",this._emitter.emit("changed")}cancel(){this._currentNode&&(this.el.removeChild(this._currentNode),this._currentNode=void 0,this._emitter.emit("canceled"))}dump(){return this.el.innerHTML}load(t){this.clear(),this.el.innerHTML=t}_appendNode(t){const e=this._elements.at(-1);e?e.after(t):this.el.append(t);const s=this._elements.push(t)-1;t.dataset.drauu_index=s.toString()}_removeNode(t){t.remove(),this._elements[+t.dataset.drauu_index]=null}_restoreNode(t){const e=+t.dataset.drauu_index;this._elements[e]=t;for(let s=e-1;s>=0;s--){const n=this._elements[s];if(n){n.after(t);return}}this.el.prepend(t)}};function $f(t){return new xf(t)}const Yg=U(!1),Kg=U(!1),Gg=U(!1),Cf=U(!1),Zg=U(!0),Xg=oa({xs:460,...pa}),Bn=ca(),Jg=ha(),Qg=h(()=>Bn.height.value-Bn.width.value/ni>120),tm=ua(ps?document.body:null),Hs=da(),Af=h(()=>{var t,e;return["INPUT","TEXTAREA"].includes(((t=Hs.value)==null?void 0:t.tagName)||"")||((e=Hs.value)==null?void 0:e.classList.contains("CodeMirror-code"))}),em=h(()=>{var t;return["BUTTON","A"].includes(((t=Hs.value)==null?void 0:t.tagName)||"")});et("slidev-camera","default",{listenToStorageChanges:!1});et("slidev-mic","default",{listenToStorageChanges:!1});const sm=et("slidev-scale",0),nm=et("slidev-presenter-cursor",!0,{listenToStorageChanges:!1}),im=et("slidev-show-editor",!1,{listenToStorageChanges:!1}),am=et("slidev-editor-vertical",!1,{listenToStorageChanges:!1});et("slidev-editor-width",ps?window.innerWidth*.4:318,{listenToStorageChanges:!1});et("slidev-editor-height",ps?window.innerHeight*.4:300,{listenToStorageChanges:!1});const rs=et("slidev-presenter-font-size",1,{listenToStorageChanges:!1}),Ye=et("slidev-presenter-layout",1,{listenToStorageChanges:!1});function rm(){Ye.value=Ye.value+1,Ye.value>2&&(Ye.value=1)}function lm(){rs.value=Math.min(2,rs.value+.1)}function om(){rs.value=Math.max(.5,rs.value-.1)}const cm=Gn(Cf),Ns=["#ff595e","#ffca3a","#8ac926","#1982c4","#6a4c93","#ffffff","#000000"],Fs=et("slidev-drawing-enabled",!1),hm=et("slidev-drawing-pinned",!1),Sf=U(!1),Mf=U(!1),Ef=U(!1),ls=U(!1),os=fa(et("slidev-drawing-brush",{color:Ns[0],size:4,mode:"stylus"})),On=U("stylus"),Ai=h(()=>N.drawings.syncAll||pe.value);let Ue=!1;const Te=h({get(){return On.value},set(t){On.value=t,t==="arrow"?(Z.mode="line",os.arrowEnd=!0):(Z.mode=t,os.arrowEnd=!1)}}),Pf=v({brush:os,acceptsInputTypes:h(()=>Fs.value&&(!N.drawings.presenterOnly||pe.value)?void 0:["pen"]),coordinateTransform:!1}),Z=Ks($f(Pf));function Df(){Z.clear(),Ai.value&&ri(Y.value,"")}function Qs(){var t;Mf.value=Z.canRedo(),Sf.value=Z.canUndo(),Ef.value=!!((t=Z.el)!=null&&t.children.length)}function Tf(t){Ue=!0;const e=li[t||Y.value];e!=null?Z.load(e):Z.clear(),Qs(),Ue=!1}Z.on("changed",()=>{if(Qs(),!Ue){const t=Z.dump(),e=Y.value;(li[e]||"")!==t&&Ai.value&&ri(e,Z.dump())}});Mr(t=>{Ue=!0,t[Y.value]!=null&&Z.load(t[Y.value]||""),Ue=!1,Qs()});He(()=>{$e(Y,()=>{Z.mounted&&Tf()},{immediate:!0})});Z.on("start",()=>ls.value=!0);Z.on("end",()=>ls.value=!1);window.addEventListener("keydown",t=>{if(!Fs.value||Af.value)return;const e=!t.ctrlKey&&!t.altKey&&!t.shiftKey&&!t.metaKey;let s=!0;t.code==="KeyZ"&&(t.ctrlKey||t.metaKey)?t.shiftKey?Z.redo():Z.undo():t.code==="Escape"?Fs.value=!1:t.code==="KeyL"&&e?Te.value="line":t.code==="KeyA"&&e?Te.value="arrow":t.code==="KeyS"&&e?Te.value="stylus":t.code==="KeyR"&&e?Te.value="rectangle":t.code==="KeyE"&&e?Te.value="ellipse":t.code==="KeyC"&&e?Df():t.code.startsWith("Digit")&&e&&+t.code[5]<=Ns.length?os.color=Ns[+t.code[5]-1]:s=!1,s&&(t.preventDefault(),t.stopPropagation())},!1);const Rs=U(0);He(()=>{it.afterEach(async()=>{await He(),Rs.value+=1})});const Si=U(0),fs=U(0),mt=h(()=>it.currentRoute.value),Lf=h(()=>mt.value.query.print!==void 0),Bf=h(()=>mt.value.query.print==="clicks"),um=h(()=>mt.value.query.embedded!==void 0),pe=h(()=>mt.value.path.startsWith("/presenter")),Of=h(()=>mt.value.path.startsWith("/notes")),If=h(()=>mt.value.query.password),dm=h(()=>!pe.value&&(!N.remote||If.value===N.remote)),In=Kp("clicks","0"),xe=h({get(){if(re.value.disabled)return Ts;let t=+(In.value||0);return Number.isNaN(t)&&(t=0),t},set(t){In.value=t.toString()}}),pm=h(()=>G.length),Hf=h(()=>mt.value.path),Y=h(()=>Number.parseInt(Hf.value.split(/\//g).slice(-1)[0])||1);h(()=>gs(Y.value));const se=h(()=>G.find(t=>t.path===`${Y.value}`)),fm=h(()=>{var t,e,s;return(s=(e=(t=se.value)==null?void 0:t.meta)==null?void 0:e.slide)==null?void 0:s.id});h(()=>{var t,e;return((e=(t=se.value)==null?void 0:t.meta)==null?void 0:e.layout)||(Y.value===1?"cover":"default")});const gm=h(()=>G.find(t=>t.path===`${Math.min(G.length,Y.value+1)}`)),Nf=h(()=>G.find(t=>t.path===`${Math.max(1,Y.value-1)}`)),re=h(()=>Ir(se.value)),tn=h(()=>re.value.current),ze=h(()=>re.value.total),mm=h(()=>Y.valueY.value>1||tn.value>0),Ff=h(()=>G.filter(t=>{var e,s;return(s=(e=t.meta)==null?void 0:e.slide)==null?void 0:s.title}).reduce((t,e)=>(an(t,e),t),[])),Rf=h(()=>rn(Ff.value,se.value));h(()=>ln(Rf.value));const km=h(()=>Vf(Si.value,se.value,Nf.value));$e(se,(t,e)=>{Si.value=Number(t==null?void 0:t.path)-Number(e==null?void 0:e.path)});async function Mi(){fs.value=1,ze.value<=xe.value?await en():xe.value+=1}async function Ei(){fs.value=-1,xe.value<=0?await sn():xe.value-=1}function gs(t){return pe.value?`/presenter/${t}`:`/${t}`}async function en(){fs.value=1,Y.value.3||a>75?s.value==="left"?Mi():Ei():(l/window.innerHeight>.4||l>200)&&(s.value==="down"?sn():en())}})}async function jf(){const{saveAs:t}=await Re(()=>import("./modules/file-saver-CvNQQnEe.js").then(e=>e.F),__vite__mapDeps([]));t(typeof N.download=="string"?N.download:N.exportFilename?`${N.exportFilename}.pdf`:"/sa2024/06-scalable/slidev-exported.pdf",`${N.title}.pdf`)}async function Uf(t){var e,s;if(t==null){const n=(s=(e=se.value)==null?void 0:e.meta)==null?void 0:s.slide;if(!n)return!1;t=`${n.filepath}:${n.start}`}return await fetch(`/__open-in-editor?file=${encodeURIComponent(t)}`),!0}function an(t,e,s=1){var i,a,l,o,c,u,d;const n=(a=(i=e.meta)==null?void 0:i.slide)==null?void 0:a.level;n&&n>s&&t.length>0?an(t[t.length-1].children,e,s+1):t.push({children:[],level:s,path:e.path,hideInToc:!!((c=(o=(l=e.meta)==null?void 0:l.slide)==null?void 0:o.frontmatter)!=null&&c.hideInToc),title:(d=(u=e.meta)==null?void 0:u.slide)==null?void 0:d.title})}function rn(t,e,s=!1,n){return t.map(i=>{const a={...i,active:i.path===(e==null?void 0:e.path),hasActiveParent:s};return a.children.length>0&&(a.children=rn(a.children,e,a.active||a.hasActiveParent,a)),n&&(a.active||a.activeParent)&&(n.activeParent=!0),a})}function ln(t,e=1){return t.filter(s=>!s.hideInToc).map(s=>({...s,children:ln(s.children,e+1)}))}const zf={"slide-left":"slide-left | slide-right","slide-right":"slide-right | slide-left","slide-up":"slide-up | slide-down","slide-down":"slide-down | slide-up"};function Wf(t,e=!1){if(!t||(typeof t=="string"&&(t={name:t}),!t.name))return;let s=t.name.includes("|")?t.name:zf[t.name]||t.name;if(s.includes("|")){const[n,i]=s.split("|").map(a=>a.trim());s=e?i:n}if(s)return{...t,name:s}}function Vf(t,e,s){var i,a;let n=t>0?(i=s==null?void 0:s.meta)==null?void 0:i.transition:(a=e==null?void 0:e.meta)==null?void 0:a.transition;return n||(n=N.transition),Wf(n,t<0)}function qf(){const t=N.titleTemplate.replace("%s",N.title||"Slidev");dr({title:t,htmlAttrs:N.htmlAttrs}),xr(`${t} - shared`),Sr(`${t} - drawings`);const e=`${location.origin}_${oi()}`;function s(){Of.value||!pe.value&&!Br.includes(location.host.split(":")[0])||(pe.value?(Se("page",+Y.value),Se("clicks",re.value.current)):(Se("viewerPage",+Y.value),Se("viewerClicks",re.value.current)),Se("lastUpdate",{id:e,type:pe.value?"presenter":"viewer",time:new Date().getTime()}))}it.afterEach(s),$e(re,s),$r(n=>{var a;it.currentRoute.value.path.match(/^\/(\d+|presenter)\/?/)&&((a=n.lastUpdate)==null?void 0:a.type)==="presenter"&&(+n.page!=+Y.value||+re.value.current!=+n.clicks)&&(bi.value=!1,it.replace({path:gs(n.page),query:{...it.currentRoute.value.query,clicks:n.clicks||0}}))})}const Yf=ds({__name:"App",setup(t){return qf(),le(()=>{for(const[e,s]of Object.entries(vr.value))document.body.style.setProperty(e,s.toString())}),(e,s)=>{const n=_a("RouterView");return C(),M(n)}}}),Kf=S(Yf,[["__file","/opt/homebrew/lib/node_modules/@slidev/cli/node_modules/@slidev/client/App.vue"]]);function Gf(t){function e(){document.documentElement.style.setProperty("--vh",`${window.innerHeight*.01}px`)}e(),window.addEventListener("resize",e),t.app.use(ka),t.app.use(xa)}function Pi(t,e,s){var n;return((n=t.instance)==null?void 0:n.$).provides[e]??s}function Zf(){return{install(t){t.directive("click",{name:"v-click",mounted(e,s){const n=ts(e,s,s.value);if(n==null)return;e.classList.toggle(Oe,!0);const i=Array.isArray(n.clicks)?n.clicks:[n.clicks,void 0];e.dataset.slidevClicksStart=String(i[0]),i[1]!=null&&(e.dataset.slidevClicksEnd=String(i[1])),le(()=>{const a=n.isActive.value,l=n.isCurrent.value,o=a&&!l;n.flagHide?(e.classList.toggle(n.flagFade?Me:ye,a),e.classList.toggle(bs,a)):e.classList.toggle(n.flagFade?Me:ye,!a),e.classList.toggle(ws,l),e.classList.toggle(xs,o)})},unmounted:Cs}),t.directive("after",{name:"v-after",mounted(e,s){const n=ts(e,s,s.value,!0);n!=null&&(e.classList.toggle(Oe,!0),le(()=>{const i=n.isActive.value,a=n.isCurrent.value,l=i&&!a;n.flagHide?(e.classList.toggle(n.flagFade?Me:ye,i),e.classList.toggle(bs,i)):e.classList.toggle(n.flagFade?Me:ye,!i),e.classList.toggle(ws,a),e.classList.toggle(xs,l)}))},unmounted:Cs}),t.directive("click-hide",{name:"v-click-hide",mounted(e,s){const n=ts(e,s,s.value,!1,!0);n!=null&&(e.classList.toggle(Oe,!0),le(()=>{const i=n.isActive.value,a=n.isCurrent.value,l=i&&!a;e.classList.toggle(n.flagFade?Me:ye,i),e.classList.toggle(bs,i),e.classList.toggle(ws,a),e.classList.toggle(xs,l)}))},unmounted:Cs})}}}function $s(t,e){return Array.isArray(t)?t[0]<=e&&e$s(c,a.current)),isCurrent:h(()=>Xf(c,a.current)),isShown:h(()=>i?!$s(c,a.current):$s(c,a.current)),flagFade:l,flagHide:i};return a.register(t,d),d}function Cs(t,e){var n;t.classList.toggle(Oe,!1);const s=(n=Pi(e,Zs))==null?void 0:n.value;s==null||s.unregister(t)}function Di(){return Math.floor(Math.random()*2**31)}class Jf{constructor(e){this.seed=e}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}}function js(t,e,s){if(t&&t.length){const[n,i]=e,a=Math.PI/180*s,l=Math.cos(a),o=Math.sin(a);for(const c of t){const[u,d]=c;c[0]=(u-n)*l-(d-i)*o+n,c[1]=(u-n)*o+(d-i)*l+i}}}function Qf(t,e,s){const n=[];t.forEach(i=>n.push(...i)),js(n,e,s)}function tg(t,e){return t[0]===e[0]&&t[1]===e[1]}function eg(t,e,s,n=1){const i=s,a=Math.max(e,.1),l=t[0]&&t[0][0]&&typeof t[0][0]=="number"?[t]:t,o=[0,0];if(i)for(const u of l)js(u,o,i);const c=sg(l,a,n);if(i){for(const u of l)js(u,o,-i);Qf(c,o,-i)}return c}function sg(t,e,s){const n=[];for(const u of t){const d=[...u];tg(d[0],d[d.length-1])||d.push([d[0][0],d[0][1]]),d.length>2&&n.push(d)}const i=[];e=Math.max(e,.1);const a=[];for(const u of n)for(let d=0;du.ymind.ymin?1:u.xd.x?1:u.ymax===d.ymax?0:(u.ymax-d.ymax)/Math.abs(u.ymax-d.ymax)),!a.length)return i;let l=[],o=a[0].ymin,c=0;for(;l.length||a.length;){if(a.length){let u=-1;for(let p=0;po);p++)u=p;a.splice(0,u+1).forEach(p=>{l.push({s:o,edge:p})})}if(l=l.filter(u=>!(u.edge.ymax<=o)),l.sort((u,d)=>u.edge.x===d.edge.x?0:(u.edge.x-d.edge.x)/Math.abs(u.edge.x-d.edge.x)),(s!==1||c%e===0)&&l.length>1)for(let u=0;u=l.length)break;const p=l[u].edge,g=l[d].edge;i.push([[Math.round(p.x),o],[Math.round(g.x),o]])}o+=s,l.forEach(u=>{u.edge.x=u.edge.x+s*u.edge.islope}),c++}return i}function Ve(t,e){var s;const n=e.hachureAngle+90;let i=e.hachureGap;i<0&&(i=e.strokeWidth*4),i=Math.round(Math.max(i,.1));let a=1;return e.roughness>=1&&(((s=e.randomizer)===null||s===void 0?void 0:s.next())||Math.random())>.7&&(a=i),eg(t,i,n,a||1)}class on{constructor(e){this.helper=e}fillPolygons(e,s){return this._fillPolygons(e,s)}_fillPolygons(e,s){const n=Ve(e,s);return{type:"fillSketch",ops:this.renderLines(n,s)}}renderLines(e,s){const n=[];for(const i of e)n.push(...this.helper.doubleLineOps(i[0][0],i[0][1],i[1][0],i[1][1],s));return n}}function ms(t){const e=t[0],s=t[1];return Math.sqrt(Math.pow(e[0]-s[0],2)+Math.pow(e[1]-s[1],2))}class ng extends on{fillPolygons(e,s){let n=s.hachureGap;n<0&&(n=s.strokeWidth*4),n=Math.max(n,.1);const i=Object.assign({},s,{hachureGap:n}),a=Ve(e,i),l=Math.PI/180*s.hachureAngle,o=[],c=n*.5*Math.cos(l),u=n*.5*Math.sin(l);for(const[p,g]of a)ms([p,g])&&o.push([[p[0]-c,p[1]+u],[...g]],[[p[0]+c,p[1]-u],[...g]]);return{type:"fillSketch",ops:this.renderLines(o,s)}}}class ig extends on{fillPolygons(e,s){const n=this._fillPolygons(e,s),i=Object.assign({},s,{hachureAngle:s.hachureAngle+90}),a=this._fillPolygons(e,i);return n.ops=n.ops.concat(a.ops),n}}class ag{constructor(e){this.helper=e}fillPolygons(e,s){s=Object.assign({},s,{hachureAngle:0});const n=Ve(e,s);return this.dotsOnLines(n,s)}dotsOnLines(e,s){const n=[];let i=s.hachureGap;i<0&&(i=s.strokeWidth*4),i=Math.max(i,.1);let a=s.fillWeight;a<0&&(a=s.strokeWidth/2);const l=i/4;for(const o of e){const c=ms(o),u=c/i,d=Math.ceil(u)-1,p=c-d*i,g=(o[0][0]+o[1][0])/2-i/4,f=Math.min(o[0][1],o[1][1]);for(let m=0;m{const o=ms(l),c=Math.floor(o/(n+i)),u=(o+i-c*(n+i))/2;let d=l[0],p=l[1];d[0]>p[0]&&(d=l[1],p=l[0]);const g=Math.atan((p[1]-d[1])/(p[0]-d[0]));for(let f=0;f{const l=ms(a),o=Math.round(l/(2*s));let c=a[0],u=a[1];c[0]>u[0]&&(c=a[1],u=a[0]);const d=Math.atan((u[1]-c[1])/(u[0]-c[0]));for(let p=0;pd%2?u+s:u+e);a.push({key:"C",data:c}),e=c[4],s=c[5];break}case"Q":a.push({key:"Q",data:[...o]}),e=o[2],s=o[3];break;case"q":{const c=o.map((u,d)=>d%2?u+s:u+e);a.push({key:"Q",data:c}),e=c[2],s=c[3];break}case"A":a.push({key:"A",data:[...o]}),e=o[5],s=o[6];break;case"a":e+=o[5],s+=o[6],a.push({key:"A",data:[o[0],o[1],o[2],o[3],o[4],e,s]});break;case"H":a.push({key:"H",data:[...o]}),e=o[0];break;case"h":e+=o[0],a.push({key:"H",data:[e]});break;case"V":a.push({key:"V",data:[...o]}),s=o[0];break;case"v":s+=o[0],a.push({key:"V",data:[s]});break;case"S":a.push({key:"S",data:[...o]}),e=o[2],s=o[3];break;case"s":{const c=o.map((u,d)=>d%2?u+s:u+e);a.push({key:"S",data:c}),e=c[2],s=c[3];break}case"T":a.push({key:"T",data:[...o]}),e=o[0],s=o[1];break;case"t":e+=o[0],s+=o[1],a.push({key:"T",data:[e,s]});break;case"Z":case"z":a.push({key:"Z",data:[]}),e=n,s=i;break}return a}function Bi(t){const e=[];let s="",n=0,i=0,a=0,l=0,o=0,c=0;for(const{key:u,data:d}of t){switch(u){case"M":e.push({key:"M",data:[...d]}),[n,i]=d,[a,l]=d;break;case"C":e.push({key:"C",data:[...d]}),n=d[4],i=d[5],o=d[2],c=d[3];break;case"L":e.push({key:"L",data:[...d]}),[n,i]=d;break;case"H":n=d[0],e.push({key:"L",data:[n,i]});break;case"V":i=d[0],e.push({key:"L",data:[n,i]});break;case"S":{let p=0,g=0;s==="C"||s==="S"?(p=n+(n-o),g=i+(i-c)):(p=n,g=i),e.push({key:"C",data:[p,g,...d]}),o=d[0],c=d[1],n=d[2],i=d[3];break}case"T":{const[p,g]=d;let f=0,m=0;s==="Q"||s==="T"?(f=n+(n-o),m=i+(i-c)):(f=n,m=i);const _=n+2*(f-n)/3,k=i+2*(m-i)/3,b=p+2*(f-p)/3,A=g+2*(m-g)/3;e.push({key:"C",data:[_,k,b,A,p,g]}),o=f,c=m,n=p,i=g;break}case"Q":{const[p,g,f,m]=d,_=n+2*(p-n)/3,k=i+2*(g-i)/3,b=f+2*(p-f)/3,A=m+2*(g-m)/3;e.push({key:"C",data:[_,k,b,A,f,m]}),o=p,c=g,n=f,i=m;break}case"A":{const p=Math.abs(d[0]),g=Math.abs(d[1]),f=d[2],m=d[3],_=d[4],k=d[5],b=d[6];p===0||g===0?(e.push({key:"C",data:[n,i,k,b,k,b]}),n=k,i=b):(n!==k||i!==b)&&(Oi(n,i,k,b,p,g,f,m,_).forEach(function(P){e.push({key:"C",data:P})}),n=k,i=b);break}case"Z":e.push({key:"Z",data:[]}),n=a,i=l;break}s=u}return e}function ug(t){return Math.PI*t/180}function Le(t,e,s){const n=t*Math.cos(s)-e*Math.sin(s),i=t*Math.sin(s)+e*Math.cos(s);return[n,i]}function Oi(t,e,s,n,i,a,l,o,c,u){const d=ug(l);let p=[],g=0,f=0,m=0,_=0;if(u)[g,f,m,_]=u;else{[t,e]=Le(t,e,-d),[s,n]=Le(s,n,-d);const X=(t-s)/2,I=(e-n)/2;let V=X*X/(i*i)+I*I/(a*a);V>1&&(V=Math.sqrt(V),i=V*i,a=V*a);const ne=o===c?-1:1,ht=i*i,O=a*a,q=ht*O-ht*I*I-O*X*X,H=ht*I*I+O*X*X,R=ne*Math.sqrt(Math.abs(q/H));m=R*i*I/a+(t+s)/2,_=R*-a*X/i+(e+n)/2,g=Math.asin(parseFloat(((e-_)/a).toFixed(9))),f=Math.asin(parseFloat(((n-_)/a).toFixed(9))),tf&&(g=g-Math.PI*2),!c&&f>g&&(f=f-Math.PI*2)}let k=f-g;if(Math.abs(k)>Math.PI*120/180){const X=f,I=s,V=n;c&&f>g?f=g+Math.PI*120/180*1:f=g+Math.PI*120/180*-1,s=m+i*Math.cos(f),n=_+a*Math.sin(f),p=Oi(s,n,I,V,i,a,l,0,c,[f,X,m,_])}k=f-g;const b=Math.cos(g),A=Math.sin(g),P=Math.cos(f),z=Math.sin(f),j=Math.tan(k/4),W=4/3*i*j,ct=4/3*a*j,K=[t,e],st=[t+W*A,e-ct*b],ft=[s+W*z,n-ct*P],gt=[s,n];if(st[0]=2*K[0]-st[0],st[1]=2*K[1]-st[1],u)return[st,ft,gt].concat(p);{p=[st,ft,gt].concat(p);const X=[];for(let I=0;I2){const i=[];for(let a=0;aMath.PI*2&&(f=0,m=Math.PI*2);const _=Math.PI*2/c.curveStepCount,k=Math.min(_/2,(m-f)/2),b=Un(k,u,d,p,g,f,m,1,c);if(!c.disableMultiStroke){const A=Un(k,u,d,p,g,f,m,1.5,c);b.push(...A)}return l&&(o?b.push(...oe(u,d,u+p*Math.cos(f),d+g*Math.sin(f),c),...oe(u,d,u+p*Math.cos(m),d+g*Math.sin(m),c)):b.push({op:"lineTo",data:[u,d]},{op:"lineTo",data:[u+p*Math.cos(f),d+g*Math.sin(f)]})),{type:"path",ops:b}}function Fn(t,e){const s=Bi(Li(cn(t))),n=[];let i=[0,0],a=[0,0];for(const{key:l,data:o}of s)switch(l){case"M":{a=[o[0],o[1]],i=[o[0],o[1]];break}case"L":n.push(...oe(a[0],a[1],o[0],o[1],e)),a=[o[0],o[1]];break;case"C":{const[c,u,d,p,g,f]=o;n.push(...kg(c,u,d,p,g,f,a,e)),a=[g,f];break}case"Z":n.push(...oe(a[0],a[1],i[0],i[1],e)),a=[i[0],i[1]];break}return{type:"path",ops:n}}function Ss(t,e){const s=[];for(const n of t)if(n.length){const i=e.maxRandomnessOffset||0,a=n.length;if(a>2){s.push({op:"move",data:[n[0][0]+$(i,e),n[0][1]+$(i,e)]});for(let l=1;lMath.PI*2&&(p=0,g=Math.PI*2);const f=(g-p)/l.curveStepCount,m=[];for(let _=p;_<=g;_=_+f)m.push([o+u*Math.cos(_),c+d*Math.sin(_)]);return m.push([o+u*Math.cos(g),c+d*Math.sin(g)]),m.push([o,c]),ve([m],l)}function gg(t,e){return $(t,e)}function mg(t,e,s){return cs(t,e,s)}function _g(t,e,s,n,i){return oe(t,e,s,n,i,!0)}function Rn(t){const e=Object.assign({},t);return e.randomizer=void 0,t.seed&&(e.seed=t.seed+1),e}function Ni(t){return t.randomizer||(t.randomizer=new Jf(t.seed||0)),t.randomizer.next()}function cs(t,e,s,n=1){return s.roughness*n*(Ni(s)*(e-t)+t)}function $(t,e,s=1){return cs(-t,t,e,s)}function oe(t,e,s,n,i,a=!1){const l=a?i.disableMultiStrokeFill:i.disableMultiStroke,o=Vs(t,e,s,n,i,!0,!1);if(l)return o;const c=Vs(t,e,s,n,i,!0,!0);return o.concat(c)}function Vs(t,e,s,n,i,a,l){const o=Math.pow(t-s,2)+Math.pow(e-n,2),c=Math.sqrt(o);let u=1;c<200?u=1:c>500?u=.4:u=-.0016668*c+1.233334;let d=i.maxRandomnessOffset||0;d*d*100>o&&(d=c/10);const p=d/2,g=.2+Ni(i)*.2;let f=i.bowing*i.maxRandomnessOffset*(n-e)/200,m=i.bowing*i.maxRandomnessOffset*(t-s)/200;f=$(f,i,u),m=$(m,i,u);const _=[],k=()=>$(p,i,u),b=()=>$(d,i,u),A=i.preserveVertices;return a&&(l?_.push({op:"move",data:[t+(A?0:k()),e+(A?0:k())]}):_.push({op:"move",data:[t+(A?0:$(d,i,u)),e+(A?0:$(d,i,u))]})),l?_.push({op:"bcurveTo",data:[f+t+(s-t)*g+k(),m+e+(n-e)*g+k(),f+t+2*(s-t)*g+k(),m+e+2*(n-e)*g+k(),s+(A?0:k()),n+(A?0:k())]}):_.push({op:"bcurveTo",data:[f+t+(s-t)*g+b(),m+e+(n-e)*g+b(),f+t+2*(s-t)*g+b(),m+e+2*(n-e)*g+b(),s+(A?0:b()),n+(A?0:b())]}),_}function Ge(t,e,s){if(!t.length)return[];const n=[];n.push([t[0][0]+$(e,s),t[0][1]+$(e,s)]),n.push([t[0][0]+$(e,s),t[0][1]+$(e,s)]);for(let i=1;i3){const a=[],l=1-s.curveTightness;i.push({op:"move",data:[t[1][0],t[1][1]]});for(let o=1;o+21&&i.push(a):i.push(a),i.push(t[e+3])}else{const l=t[e+0],o=t[e+1],c=t[e+2],u=t[e+3],d=ue(l,o,.5),p=ue(o,c,.5),g=ue(c,u,.5),f=ue(d,p,.5),m=ue(p,g,.5),_=ue(f,m,.5);qs([l,d,f,_],0,s,i),qs([_,m,g,u],0,s,i)}return i}function wg(t,e){return us(t,0,t.length,e)}function us(t,e,s,n,i){const a=i||[],l=t[e],o=t[s-1];let c=0,u=1;for(let d=e+1;dc&&(c=p,u=d)}return Math.sqrt(c)>n?(us(t,e,u+1,n,a),us(t,u,s,n,a)):(a.length||a.push(l),a.push(o)),a}function Ys(t,e=.15,s){const n=[],i=(t.length-1)/3;for(let a=0;a0?us(n,0,n.length,s):n}function xg(t,e,s){const n=cn(t),i=Bi(Li(n)),a=[];let l=[],o=[0,0],c=[];const u=()=>{c.length>=4&&l.push(...Ys(c,e)),c=[]},d=()=>{u(),l.length&&(a.push(l),l=[])};for(const{key:g,data:f}of i)switch(g){case"M":d(),o=[f[0],f[1]],l.push(o);break;case"L":u(),l.push([f[0],f[1]]);break;case"C":if(!c.length){const m=l.length?l[l.length-1]:o;c.push([m[0],m[1]])}c.push([f[0],f[1]]),c.push([f[2],f[3]]),c.push([f[4],f[5]]);break;case"Z":u(),l.push([o[0],o[1]]);break}if(d(),!s)return a;const p=[];for(const g of a){const f=wg(g,s);f.length&&p.push(f)}return p}const nt="none";class $g{constructor(e){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:"#000",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:"hachure",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=e||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Di()}_o(e){return e?Object.assign({},this.defaultOptions,e):this.defaultOptions}_d(e,s,n){return{shape:e,sets:s||[],options:n||this.defaultOptions}}line(e,s,n,i,a){const l=this._o(a);return this._d("line",[at(e,s,n,i,l)],l)}rectangle(e,s,n,i,a){const l=this._o(a),o=[],c=Ii(e,s,n,i,l);if(l.fill){const u=[[e,s],[e+n,s],[e+n,s+i],[e,s+i]];l.fillStyle==="solid"?o.push(Ss([u],l)):o.push(ve([u],l))}return l.stroke!==nt&&o.push(c),this._d("rectangle",o,l)}ellipse(e,s,n,i,a){const l=this._o(a),o=[],c=Hi(n,i,l),u=Ws(e,s,l,c);if(l.fill)if(l.fillStyle==="solid"){const d=Ws(e,s,l,c).opset;d.type="fillPath",o.push(d)}else o.push(ve([u.estimatedPoints],l));return l.stroke!==nt&&o.push(u.opset),this._d("ellipse",o,l)}circle(e,s,n,i){const a=this.ellipse(e,s,n,n,i);return a.shape="circle",a}linearPath(e,s){const n=this._o(s);return this._d("linearPath",[Ie(e,!1,n)],n)}arc(e,s,n,i,a,l,o=!1,c){const u=this._o(c),d=[],p=Nn(e,s,n,i,a,l,o,!0,u);if(o&&u.fill)if(u.fillStyle==="solid"){const g=Object.assign({},u);g.disableMultiStroke=!0;const f=Nn(e,s,n,i,a,l,!0,!1,g);f.type="fillPath",d.push(f)}else d.push(fg(e,s,n,i,a,l,u));return u.stroke!==nt&&d.push(p),this._d("arc",d,u)}curve(e,s){const n=this._o(s),i=[],a=Hn(e,n);if(n.fill&&n.fill!==nt)if(n.fillStyle==="solid"){const l=Hn(e,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(l.ops)})}else{const l=[],o=e;if(o.length){const u=typeof o[0][0]=="number"?[o]:o;for(const d of u)d.length<3?l.push(...d):d.length===3?l.push(...Ys(zn([d[0],d[0],d[1],d[2]]),10,(1+n.roughness)/2)):l.push(...Ys(zn(d),10,(1+n.roughness)/2))}l.length&&i.push(ve([l],n))}return n.stroke!==nt&&i.push(a),this._d("curve",i,n)}polygon(e,s){const n=this._o(s),i=[],a=Ie(e,!0,n);return n.fill&&(n.fillStyle==="solid"?i.push(Ss([e],n)):i.push(ve([e],n))),n.stroke!==nt&&i.push(a),this._d("polygon",i,n)}path(e,s){const n=this._o(s),i=[];if(!e)return this._d("path",i,n);e=(e||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");const a=n.fill&&n.fill!=="transparent"&&n.fill!==nt,l=n.stroke!==nt,o=!!(n.simplification&&n.simplification<1),c=o?4-4*(n.simplification||1):(1+n.roughness)/2,u=xg(e,1,c),d=Fn(e,n);if(a)if(n.fillStyle==="solid")if(u.length===1){const p=Fn(e,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(p.ops)})}else i.push(Ss(u,n));else i.push(ve(u,n));return l&&(o?u.forEach(p=>{i.push(Ie(p,!1,n))}):i.push(d)),this._d("path",i,n)}opsToPath(e,s){let n="";for(const i of e.ops){const a=typeof s=="number"&&s>=0?i.data.map(l=>+l.toFixed(s)):i.data;switch(i.op){case"move":n+=`M${a[0]} ${a[1]} `;break;case"bcurveTo":n+=`C${a[0]} ${a[1]}, ${a[2]} ${a[3]}, ${a[4]} ${a[5]} `;break;case"lineTo":n+=`L${a[0]} ${a[1]} `;break}}return n.trim()}toPaths(e){const s=e.sets||[],n=e.options||this.defaultOptions,i=[];for(const a of s){let l=null;switch(a.type){case"path":l={d:this.opsToPath(a),stroke:n.stroke,strokeWidth:n.strokeWidth,fill:nt};break;case"fillPath":l={d:this.opsToPath(a),stroke:nt,strokeWidth:0,fill:n.fill||nt};break;case"fillSketch":l=this.fillSketch(a,n);break}l&&i.push(l)}return i}fillSketch(e,s){let n=s.fillWeight;return n<0&&(n=s.strokeWidth/2),{d:this.opsToPath(e),stroke:s.fill||nt,strokeWidth:n,fill:nt}}_mergedShape(e){return e.filter((s,n)=>n===0?!0:s.op!=="move")}}const Fi="http://www.w3.org/2000/svg",Cg=800;let Ms=null;function Ag(){return Ms||(Ms=new $g().defaultOptions),Ms}function Es(t,e,s){return{...Ag(),maxRandomnessOffset:2,roughness:t==="highlight"?3:1.5,bowing:1,stroke:"#000",strokeWidth:1.5,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:"hachure",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,disableMultiStroke:t!=="double",disableMultiStrokeFill:!1,seed:e,...s}}function Sg(t){const e=t.padding;if(e||e===0){if(typeof e=="number")return[e,e,e,e];if(Array.isArray(e)){const s=e;if(s.length)switch(s.length){case 4:return[...s];case 1:return[s[0],s[0],s[0],s[0]];case 2:return[...s,...s];case 3:return[...s,s[1]];default:return[s[0],s[1],s[2],s[3]]}}}return[5,5,5,5]}function Mg(t,e,s,n,i,a){const l=[];let o=s.strokeWidth||2;const c=Sg(s),u=s.animate===void 0?!0:!!s.animate,d=s.iterations||2,p=s.rtl?1:0,g=Es("single",a,s);switch(s.type){case"underline":{const f=e.y+e.h+c[2];for(let m=p;mA.setAttribute(P,z);for(const A of f){const P=document.createElementNS(Fi,"path");if(b(P,"d",A),b(P,"fill","none"),b(P,"stroke",s.color||"currentColor"),b(P,"stroke-width",`${o}`),s.opacity!==void 0&&b(P,"style",`opacity:${s.opacity}`),u){const z=P.getTotalLength();m.push(z),k+=z}t.appendChild(P),_.push(P)}if(u){let A=0;for(let P=0;P<_.length;P++){const z=_[P],j=m[P],W=k?i*(j/k):0,ct=n+A,K=z.style;K.strokeDashoffset=`${j}`,K.strokeDasharray=`${j}`,K.animation=`rough-notation-dash ${W}ms ease-out ${ct}ms forwards`,A+=W}return Wn(i+n)}}return Wn(0)}function Wn(t){return new Promise(e=>setTimeout(e,t))}function Eg(t){const e=[];for(const s of t){let n="";for(const i of s.ops){const a=i.data;switch(i.op){case"move":n.trim()&&e.push(n.trim()),n=`M${a[0]} ${a[1]} `;break;case"bcurveTo":n+=`C${a[0]} ${a[1]}, ${a[2]} ${a[3]}, ${a[4]} ${a[5]} `;break;case"lineTo":n+=`L${a[0]} ${a[1]} `;break}}n.trim()&&e.push(n.trim())}return e}function Pg(){if(!window.__rno_kf_s){const t=window.__rno_kf_s=document.createElement("style");t.textContent="@keyframes rough-notation-dash { to { stroke-dashoffset: 0; } }",document.head.appendChild(t)}}var Dg=Object.defineProperty,Tg=(t,e,s)=>e in t?Dg(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,ut=(t,e,s)=>(Tg(t,typeof e!="symbol"?e+"":e,s),s);class Lg{constructor(e,s){ut(this,"_state","unattached"),ut(this,"_config"),ut(this,"_resizing",!1),ut(this,"_ro"),ut(this,"_seed",Di()),ut(this,"_e"),ut(this,"_svg"),ut(this,"_lastSizes",[]),ut(this,"_animationDelay",0),ut(this,"_resizeListener",()=>{this._resizing||(this._resizing=!0,setTimeout(()=>{this._resizing=!1,this._state==="showing"&&this.haveRectsChanged()&&this.show()},400))}),ut(this,"pendingRefresh"),this._e=e,this._config=JSON.parse(JSON.stringify(s)),this.attach()}getConfig(e){return this._config[e]}setConfig(e,s){this._config[e]!==s&&(this._config[e]=s,this.refresh())}get animate(){return this._config.animate}set animate(e){this._config.animate=e}get animationDuration(){return this._config.animationDuration}set animationDuration(e){this._config.animationDuration=e}get iterations(){return this._config.iterations}set iterations(e){this._config.iterations=e}get color(){return this._config.color}set color(e){this._config.color!==e&&(this._config.color=e,this.refresh())}get class(){return this._config.class}set class(e){this._config.class!==e&&(this._config.class=e,this._svg&&this._svg.setAttribute("class",["rough-annotation",this._config.class||""].filter(Boolean).join(" ")))}get strokeWidth(){return this._config.strokeWidth}set strokeWidth(e){this._config.strokeWidth!==e&&(this._config.strokeWidth=e,this.refresh())}get padding(){return this._config.padding}set padding(e){this._config.padding!==e&&(this._config.padding=e,this.refresh())}attach(){if(this._state==="unattached"&&this._e.parentElement){Pg();const e=this._svg=document.createElementNS(Fi,"svg");e.setAttribute("class",["rough-annotation",this._config.class||""].filter(Boolean).join(" "));const s=e.style;s.position="absolute",s.top="0",s.left="0",s.overflow="visible",s.pointerEvents="none",s.width="100px",s.height="100px";const n=this._config.type==="highlight";if(this._e.insertAdjacentElement(n?"beforebegin":"afterend",e),this._state="not-showing",n){const i=window.getComputedStyle(this._e).position;(!i||i==="static")&&(this._e.style.position="relative")}this.attachListeners()}}detachListeners(){window.removeEventListener("resize",this._resizeListener),this._ro&&this._ro.unobserve(this._e)}attachListeners(){this.detachListeners(),window.addEventListener("resize",this._resizeListener,{passive:!0}),!this._ro&&"ResizeObserver"in window&&(this._ro=new window.ResizeObserver(e=>{for(const s of e)s.contentRect&&this._resizeListener()})),this._ro&&this._ro.observe(this._e)}haveRectsChanged(){if(this._lastSizes.length){const e=this.rects();if(e.length===this._lastSizes.length){for(let s=0;sMath.round(i)===Math.round(a);return n(e.x,s.x)&&n(e.y,s.y)&&n(e.w,s.w)&&n(e.h,s.h)}isShowing(){return this._state!=="not-showing"}refresh(){this.isShowing()&&!this.pendingRefresh&&(this.pendingRefresh=Promise.resolve().then(()=>{this.isShowing()&&this.show(),delete this.pendingRefresh}))}async show(){switch(this._state){case"unattached":break;case"showing":this.hide(),this._svg&&await this.render(this._svg,!0);break;case"not-showing":this.attach(),this._svg&&await this.render(this._svg,!1);break}}hide(){if(this._svg)for(;this._svg.lastChild;)this._svg.removeChild(this._svg.lastChild);this._state="not-showing"}remove(){this._svg&&this._svg.parentElement&&this._svg.parentElement.removeChild(this._svg),this._svg=void 0,this._state="unattached",this.detachListeners()}async render(e,s){let n=this._config;s&&(n=JSON.parse(JSON.stringify(this._config)),n.animate=!1);const i=this.rects();let a=0;i.forEach(u=>a+=u.w);const l=n.animationDuration||Cg;let o=0;const c=[];for(let u=0;uObject.assign(t,{type:"box"}),circle:t=>Object.assign(t,{type:"circle"}),underline:t=>Object.assign(t,{type:"underline"}),highlight:t=>Object.assign(t,{type:"highlight"}),"strike-through":t=>Object.assign(t,{type:"strike-through"}),"crossed-off":t=>Object.assign(t,{type:"crossed-off"}),bracket:t=>Object.assign(t,{type:"bracket"}),strike:t=>Object.assign(t,{type:"strike-through"}),cross:t=>Object.assign(t,{type:"crossed-off"}),crossed:t=>Object.assign(t,{type:"crossed-off"}),linethrough:t=>Object.assign(t,{type:"strike-through"}),"line-through":t=>Object.assign(t,{type:"strike-through"}),black:t=>tt(t,"text-black"),blue:t=>tt(t,"text-blue"),cyan:t=>tt(t,"text-cyan"),gray:t=>tt(t,"text-gray"),green:t=>tt(t,"text-green"),indigo:t=>tt(t,"text-indigo"),lime:t=>tt(t,"text-lime"),orange:t=>tt(t,"text-orange"),pink:t=>tt(t,"text-pink"),purple:t=>tt(t,"text-purple"),red:t=>tt(t,"text-red"),teal:t=>tt(t,"text-teal"),white:t=>tt(t,"text-white"),yellow:t=>tt(t,"text-yellow")},Og=[[/^delay-?(\d+)?$/,(t,e,s)=>{const n=(t[1]?Number.parseInt(t[1]):s)||300;return e.delay=n,e}],[/^(?:op|opacity)-?(\d+)?$/,(t,e,s)=>{const n=(t[1]?Number.parseInt(t[1]):s)||100;return e.opacity=n/100,e}]];function Ig(){return{install(t){t.directive("mark",{name:"v-mark",mounted:(e,s)=>{const n=h(()=>{const l=typeof s.value=="object"&&!Array.isArray(s.value)?{...s.value}:{at:s.value};let o={at:l.at};const c=Object.entries(s.modifiers).filter(([d,p])=>{if(Vn[d])return o=Vn[d](o,p),!1;for(const[g,f]of Og){const m=d.match(g);if(m)return o=f(m,o,p),!1}return!0});c.length&&console.warn("[Slidev] Invalid modifiers for v-mark:",c);const u={...o,...l};return u.type||(u.type="underline"),u}),i=Bg(e,n.value),a=ts(e,s,n.value.at);if(!a){console.error("[Slidev] Invalid value for v-mark:",n.value.at);return}le(()=>{let l;n.value.class&&(i.class=n.value.class),n.value.color&&(i.color=n.value.color);const o=n.value.at;if(o===!0)l=!0;else if(o===!1)l=!1;else if(a)l=a.isActive.value;else{console.error("[Slidev] Invalid value for v-mark:",o);return}l!=null&&(l?i.show():i.hide())})}})}}}const qn=ya(),Ps=et("slidev-color-schema","auto"),Yn=h(()=>N.colorSchema!=="auto"),Ri=h({get(){return Yn.value?N.colorSchema==="dark":Ps.value==="auto"?qn.value:Ps.value==="dark"},set(t){Yn.value||(Ps.value=t===qn.value?"auto":t?"dark":"light")}}),vm=Gn(Ri);ps&&$e(Ri,t=>{const e=document.querySelector("html");e.classList.toggle("dark",t),e.classList.toggle("light",!t)},{immediate:!0});function Hg(t){const e=h(()=>t.value.path),s=h(()=>G.length),n=h(()=>Number.parseInt(e.value.split(/\//g).slice(-1)[0])||1),i=h(()=>gs(n.value)),a=h(()=>G.find(g=>g.path===`${n.value}`)??G.at(-1)??G[0]),l=h(()=>{var g,f,m;return(m=(f=(g=a.value)==null?void 0:g.meta)==null?void 0:f.slide)==null?void 0:m.id}),o=h(()=>{var g,f;return((f=(g=a.value)==null?void 0:g.meta)==null?void 0:f.layout)||(n.value===1?"cover":"default")}),c=h(()=>G.find(g=>g.path===`${Math.min(G.length,n.value+1)}`)),u=h(()=>G.filter(g=>{var f,m;return(m=(f=g.meta)==null?void 0:f.slide)==null?void 0:m.title}).reduce((g,f)=>(an(g,f),g),[])),d=h(()=>rn(u.value,a.value)),p=h(()=>ln(d.value));return{rawRoutes:G,route:t,path:e,total:s,clicksContext:re,clicks:tn,clicksTotal:ze,currentPage:n,currentPath:i,currentRoute:a,currentSlideId:l,currentLayout:o,nextRoute:c,rawTree:u,treeWithActiveStatuses:d,tree:p,go:nn,downloadPDF:jf,next:Mi,nextSlide:en,openInEditor:Uf,prev:Ei,prevSlide:sn}}function Ng(t){return{nav:Hg(t),configs:N,themeConfigs:h(()=>N.themeConfig)}}function Fg(){return{install(t){const e=v(Ng(mt));t.provide(ui,U("none")),t.provide(hi,e),t.provide(ci,h(()=>e.nav.currentPage))}}}const me=va(Kf);me.use(it);me.use(hr());me.use(Zf());me.use(Ig());me.use(Fg());Gf({app:me,router:it});me.mount("#app");export{Zg as $,dr as A,pm as B,Ts as C,Vg as D,re as E,se as F,mm as G,gm as H,xe as I,Wg as J,nm as K,Ye as L,Ir as M,fm as N,rs as O,lm as P,om as Q,Y as R,en as S,sn as T,Fs as U,vm as V,cm as W,Gg as X,nn as Y,Jg as Z,S as _,Yg as a,em as a0,Af as a1,tm as a2,fs as a3,Xg as a4,Hs as a5,If as a6,_m as a7,Yn as a8,Ri as a9,pe as aa,os as ab,dm as ac,rm as ad,jf as ae,bi as af,km as ag,Lr as ah,ci as ai,ui as aj,qg as ak,Zs as al,Te as am,Ns as an,Sf as ao,Mf as ap,Ef as aq,Df as ar,hm as as,Z as at,E as au,Tf as av,li as aw,Kg as b,N as c,im as d,Re as e,Lf as f,ls as g,um as h,Qg as i,sm as j,am as k,zg as l,yr as m,Mi as n,hi as o,Ei as p,Hg as q,Hr as r,Cf as s,ni as t,ym as u,mt as v,Bn as w,ac as x,G as y,Tr as z}; +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = ["assets/slidev/play-BVMXS2_7.js","assets/modules/vue-CoY6Ph6S.js","assets/slidev/SlidesShow-iloAA249.js","assets/modules/unplugin-icons-DdL09wdV.js","assets/slidev/bottom-DuU1WGzN.js","assets/slidev/DrawingPreview-CoeHpL4z.js","assets/modules/shiki-CNrqLFow.js","assets/modules/shiki-BSchMNmt.css","assets/SlidesShow-Do3DTZt5.css","assets/slidev/PrintStyle-VSqOxZ4_.js","assets/play-CoA43pdi.css","assets/slidev/print-xoTYi0OT.js","assets/print-Nssgrd1X.css","assets/slidev/print-CXpQb0cT.js","assets/slidev/NoteDisplay-B6Kn_NKF.js","assets/NoteDisplay-C6AkVv8T.css","assets/slidev/presenter-DXOhcyNJ.js","assets/slidev/DrawingControls-Clq2DEFQ.js","assets/DrawingControls-BO6lw4N5.css","assets/presenter-BRsvFpoV.css"] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} diff --git a/06-scalable/assets/index-O-AvbMSf.css b/06-scalable/assets/index-O-AvbMSf.css new file mode 100644 index 0000000..fb9b078 --- /dev/null +++ b/06-scalable/assets/index-O-AvbMSf.css @@ -0,0 +1 @@ +.slidev-layout.end[data-v-e7ce0abf]{display:grid;height:100%;-webkit-user-select:none;user-select:none;place-content:center;--un-bg-opacity:1;background-color:rgb(0 0 0 / var(--un-bg-opacity));text-align:center;font-size:1.25rem;line-height:1.75rem;--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity));--un-text-opacity:.85;letter-spacing:.1em}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--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;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--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;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.prose :where(h1,h2,h3,h4,h5,h6):not(:where(.not-prose,.not-prose *)){color:var(--un-prose-headings);font-weight:600;line-height:1.25}.prose :where(a):not(:where(.not-prose,.not-prose *)){color:var(--un-prose-links);text-decoration:underline;font-weight:500}.prose :where(a code):not(:where(.not-prose,.not-prose *)){color:var(--un-prose-links)}.prose :where(p,ul,ol,pre):not(:where(.not-prose,.not-prose *)){margin:1em 0;line-height:1.75}.prose :where(blockquote):not(:where(.not-prose,.not-prose *)){margin:1em 0;padding-left:1em;font-style:italic;border-left:.25em solid var(--un-prose-borders)}.prose :where(h1):not(:where(.not-prose,.not-prose *)){margin:1rem 0;font-size:2.25em}.prose :where(h2):not(:where(.not-prose,.not-prose *)){margin:1.75em 0 .5em;font-size:1.75em}.prose :where(h3):not(:where(.not-prose,.not-prose *)){margin:1.5em 0 .5em;font-size:1.375em}.prose :where(h4):not(:where(.not-prose,.not-prose *)){margin:1em 0;font-size:1.125em}.prose :where(img,video):not(:where(.not-prose,.not-prose *)){max-width:100%}.prose :where(figure,picture):not(:where(.not-prose,.not-prose *)){margin:1em 0}.prose :where(figcaption):not(:where(.not-prose,.not-prose *)){color:var(--un-prose-captions);font-size:.875em}.prose :where(code):not(:where(.not-prose,.not-prose *)){color:var(--un-prose-code);font-size:.875em;font-weight:600;font-family:Fira Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.prose :where(:not(pre)>code):not(:where(.not-prose,.not-prose *)):before,.prose :where(:not(pre)>code):not(:where(.not-prose,.not-prose *)):after{content:"`"}.prose :where(pre):not(:where(.not-prose,.not-prose *)){padding:1.25rem 1.5rem;overflow-x:auto;border-radius:.375rem}.prose :where(pre,code):not(:where(.not-prose,.not-prose *)){white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;hyphens:none;background:transparent}.prose :where(pre code):not(:where(.not-prose,.not-prose *)){font-weight:inherit}.prose :where(ol,ul):not(:where(.not-prose,.not-prose *)){padding-left:1.25em}.prose :where(ol):not(:where(.not-prose,.not-prose *)){list-style-type:decimal}.prose :where(ol[type=A]):not(:where(.not-prose,.not-prose *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where(.not-prose,.not-prose *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where(.not-prose,.not-prose *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where(.not-prose,.not-prose *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where(.not-prose,.not-prose *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where(.not-prose,.not-prose *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where(.not-prose,.not-prose *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where(.not-prose,.not-prose *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where(.not-prose,.not-prose *)){list-style-type:decimal}.prose :where(ul):not(:where(.not-prose,.not-prose *)){list-style-type:disc}.prose :where(ol>li):not(:where(.not-prose,.not-prose *))::marker,.prose :where(ul>li):not(:where(.not-prose,.not-prose *))::marker,.prose :where(summary):not(:where(.not-prose,.not-prose *))::marker{color:var(--un-prose-lists)}.prose :where(hr):not(:where(.not-prose,.not-prose *)){margin:2em 0;border:1px solid var(--un-prose-hr)}.prose :where(table):not(:where(.not-prose,.not-prose *)){display:block;margin:1em 0;border-collapse:collapse;overflow-x:auto}.prose :where(tr):not(:where(.not-prose,.not-prose *)):nth-child(2n){background:var(--un-prose-bg-soft)}.prose :where(td,th):not(:where(.not-prose,.not-prose *)){border:1px solid var(--un-prose-borders);padding:.625em 1em}.prose :where(abbr):not(:where(.not-prose,.not-prose *)){cursor:help}.prose :where(kbd):not(:where(.not-prose,.not-prose *)){color:var(--un-prose-code);border:1px solid;padding:.25rem .5rem;font-size:.875em;border-radius:.25rem}.prose :where(details):not(:where(.not-prose,.not-prose *)){margin:1em 0;padding:1.25rem 1.5rem;background:var(--un-prose-bg-soft)}.prose :where(summary):not(:where(.not-prose,.not-prose *)){cursor:pointer;font-weight:600}.prose{color:var(--un-prose-body);max-width:65ch}.container{width:100%}.border-main,.dark .dark\:border-main,.dark [border~="dark:main"],.dark [dark\:border~=main],[border~=main]{border-color:#9ca3af33}.border-primary,.hover\:border-primary:hover{border-color:var(--slidev-theme-primary)}.bg-active{background-color:#9ca3af1a}.bg-main{--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity))}.dark .bg-main{--un-bg-opacity:1;background-color:rgb(18 18 18 / var(--un-bg-opacity))}.bg-primary{background-color:var(--slidev-theme-primary)}.text-primary,[text-primary=""]{color:var(--slidev-theme-primary)}@media print{.print-container{width:100%}}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 640px){@media print{.print-container{max-width:640px}}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 768px){@media print{.print-container{max-width:768px}}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1024px){@media print{.print-container{max-width:1024px}}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1280px){@media print{.print-container{max-width:1280px}}}@media (min-width: 1536px){.container{max-width:1536px}}@media (min-width: 1536px){@media print{.print-container{max-width:1536px}}}:root{--slidev-code-background: #f5f5f5;--slidev-code-foreground: #1b1b1b;--slidev-code-font-family: "Fira Code",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--slidev-code-padding: 8px;--slidev-code-font-size: 12px;--slidev-code-line-height: 18px;--slidev-code-radius: 4px;--slidev-code-margin: 4px 0;--slidev-theme-primary: #3ab9d5;--slidev-transition-duration: .5s;--slidev-slide-container-background: black;--slidev-controls-foreground: white}html.dark{--slidev-code-background: #1b1b1b;--slidev-code-foreground: #eee}html,body,#app,#page-root{padding:0;margin:0;width:100%;height:100vh;height:calc(var(--vh, 1vh) * 100);overflow:hidden;font-family:Avenir Next,Nunito 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"}html{background:transparent}.slidev-icon-btn{aspect-ratio:1;display:inline-block;-webkit-user-select:none;user-select:none;outline:none;cursor:pointer;border-radius:.25rem;padding:.25rem;vertical-align:middle;opacity:.75;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}@media (min-width: 768px){.slidev-icon-btn{padding:.5rem}}.slidev-icon-btn:hover{--un-bg-opacity:1;background-color:rgb(156 163 175 / var(--un-bg-opacity));--un-bg-opacity:.1;opacity:1}.slidev-icon-btn.shallow{opacity:.3}.slidev-icon-btn.active{opacity:1}.slidev-icon-btn.disabled{opacity:.25;pointer-events:none}.slidev-vclick-target{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:.1s}.slidev-vclick-hidden{opacity:0!important;pointer-events:none!important;-webkit-user-select:none!important;user-select:none!important}.slidev-vclick-fade{opacity:.5}.slidev-icon{display:inline-block;vertical-align:sub;line-height:1em}.slidev-page{position:relative;top:0;left:0;right:0;width:100%}.slidev-note-with-clicks .slidev-note-fade{color:#888888ab}.slidev-note-click-mark{-webkit-user-select:none;user-select:none;font-size:.7em;display:inline-flex;align-items:center;border-width:1px;border-color:transparent;border-radius:.25rem;background-color:#a78bfa1a;padding-left:.25rem;padding-right:.25rem;--un-text-opacity:1;color:rgb(167 139 250 / var(--un-text-opacity));font-family:Fira Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.slidev-note-click-mark.slidev-note-click-mark-active{border-width:1px;--un-border-opacity:1;border-color:rgb(167 139 250 / var(--un-border-opacity))}.slidev-note-click-mark.slidev-note-click-mark-past{filter:saturate(0);opacity:.5}.slidev-note-click-mark.slidev-note-click-mark-future{opacity:.5}.slidev-note-click-mark:before{content:"";display:inline-block;--un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M23 28a1 1 0 0 1-.71-.29l-6.13-6.14l-3.33 5a1 1 0 0 1-1 .44a1 1 0 0 1-.81-.7l-6-20A1 1 0 0 1 6.29 5l20 6a1 1 0 0 1 .7.81a1 1 0 0 1-.44 1l-5 3.33l6.14 6.13a1 1 0 0 1 0 1.42l-4 4A1 1 0 0 1 23 28m0-2.41L25.59 23l-7.16-7.15l5.25-3.5L7.49 7.49l4.86 16.19l3.5-5.25Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1.2em;height:1.2em;opacity:.8}.slidev-note-click-mark:after{content:attr(data-clicks);display:inline-block;transform:translateY(.1em)}.rough-annotation{transform:scale(calc(1 / var(--slidev-slide-scale)))}html.dark:root{color-scheme:dark}html.dark .shiki{color:var(--shiki-dark, inherit);--twoslash-popup-bg: var(--shiki-dark-bg, inherit)}html.dark .shiki span{color:var(--shiki-dark)}html:not(.dark) .shiki{color:var(--shiki-light, inherit);--twoslash-popup-bg: var(--shiki-light-bg, inherit)}html:not(.dark) .shiki span{color:var(--shiki-light)}.twoslash-meta-line.twoslash-popover-line{margin-top:-10px}.slidev-code-wrapper{margin:var(--slidev-code-margin)!important;scroll-padding:var(--slidev-code-padding)}.slidev-code-wrapper:-webkit-scrollbar{width:0px}.slidev-code{font-family:var(--slidev-code-font-family)!important;padding:var(--slidev-code-padding)!important;font-size:var(--slidev-code-font-size)!important;line-height:var(--slidev-code-line-height)!important;border-radius:var(--slidev-code-radius)!important;background:var(--slidev-code-background);overflow:auto}.slidev-code .line.dishonored{opacity:.3;pointer-events:none}.slidev-code-line-numbers .slidev-code code{counter-reset:step;counter-increment:step calc(var(--start, 1) - 1)}.slidev-code-line-numbers .slidev-code code .line:before{content:counter(step);counter-increment:step;display:inline-block;text-align:right;margin-right:1.5rem;width:1rem;--un-text-opacity:1;color:rgb(156 163 175 / var(--un-text-opacity))}.dark .slidev-code-line-numbers .slidev-code code .line:before{--un-text-opacity:1;color:rgb(75 85 99 / var(--un-text-opacity))}.slidev-layout :not(pre)>code{font-size:.9em;background:var(--slidev-code-background);border-radius:var(--slidev-code-radius);padding:.125rem .375rem;font-weight:300}.slidev-layout :not(pre)>code:before{margin-right:-.08em}.katex,.katex :after,.katex :before{border-color:currentColor}.CodeMirror pre.CodeMirror-placeholder{opacity:.4}.slidev-katex-wrapper .mord.dishonored{opacity:.3}.slide-left-enter-active,.slide-left-leave-active,.slide-right-enter-active,.slide-right-leave-active,.slide-up-enter-active,.slide-up-leave-active,.slide-down-enter-active,.slide-down-leave-active{transition:all var(--slidev-transition-duration) ease}.slide-left-enter-from,.slide-right-leave-to{transform:translate(100%)}.slide-left-leave-to,.slide-right-enter-from{transform:translate(-100%)}.slide-up-enter-from,.slide-down-leave-to{transform:translateY(100%)}.slide-up-leave-to,.slide-down-enter-from{transform:translateY(-100%)}.fade-enter-active,.fade-leave-active{transition:opacity var(--slidev-transition-duration) ease}.fade-enter-from,.fade-leave-to{opacity:0}.fade-out-leave-active{transition:opacity calc(var(--slidev-transition-duration) * .6) ease-out}.fade-out-enter-active{transition:opacity calc(var(--slidev-transition-duration) * .8) ease-in;transition-delay:calc(var(--slidev-transition-duration) * .6)}.fade-out-enter-from,.fade-out-leave-to{opacity:0}div[widgetid=messageoverlay]{transform:translateY(calc(100% * (var(--slidev-slide-scale) - 1)))}.slidev-monaco-container{position:relative;margin:var(--slidev-code-margin);padding:var(--slidev-code-padding);line-height:var(--slidev-code-line-height);border-radius:var(--slidev-code-radius);background:var(--slidev-code-background)}.slidev-monaco-container .monaco-editor{--monaco-monospace-font: var(--slidev-code-font-family);--vscode-editor-background: var(--slidev-code-background);--vscode-editorGutter-background: var(--slidev-code-background)}.slidev-monaco-container .monaco-editor a,.slidev-monaco-container .monaco-editor a:hover{border-bottom:none}.slidev-layout{height:100%;padding:2.5rem 3.5rem;font-size:1.1rem}.slidev-layout pre,.slidev-layout code{-webkit-user-select:text;user-select:text}.slidev-layout code{font-family:Fira Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.slidev-layout h1{margin-bottom:1rem;font-size:2.25rem;line-height:2.5rem}.slidev-layout h6{padding-top:.25rem;font-size:.875rem;line-height:1.25rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase}.slidev-layout p{margin-top:1rem;margin-bottom:1rem;line-height:1.5rem}.slidev-layout ul{list-style:square}.slidev-layout ol{list-style:decimal}.slidev-layout li{line-height:1.8em}.slidev-layout blockquote{background:var(--slidev-code-background);color:var(--slidev-code-foreground);border-left-width:1px;border-color:var(--slidev-theme-primary);border-radius:.25rem;padding:.25rem .5rem;font-size:.875rem;line-height:1.25rem}.slidev-layout blockquote>*{margin-top:0;margin-bottom:0}.slidev-layout table{width:100%}.slidev-layout tr{border-bottom-width:1px;border-color:#9ca3af33}.slidev-layout th{text-align:left;font-weight:400}.slidev-layout a{border-bottom-width:1px;border-color:currentColor;border-style:dashed}.slidev-layout a:hover{border-style:solid;color:var(--slidev-theme-primary)}.slidev-layout td,.slidev-layout th{padding:.75rem .5rem}.slidev-layout b,.slidev-layout strong{font-weight:600}.slidev-layout kbd{border-width:1px;border-bottom-width:2px;border-color:#9ca3af33;border-radius:.25rem;--un-bg-opacity:1;background-color:rgb(156 163 175 / var(--un-bg-opacity));--un-bg-opacity:.05;padding:.125rem .25rem;font-size:.75rem;line-height:1rem;font-family:Fira Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.slidev-layout h1,[dir=ltr] h1,.slidev-layout [dir=ltr] h1,.slidev-layout h6,[dir=ltr] h6,.slidev-layout [dir=ltr] h6{margin-left:-.05em;margin-right:0}.slidev-layout li,[dir=ltr] li,.slidev-layout [dir=ltr] li{margin-left:1.1em;margin-right:0;padding-left:.2em;padding-right:0}[dir=rtl] h1,.slidev-layout [dir=rtl] h1,[dir=rtl] h6,.slidev-layout [dir=rtl] h6{margin-right:-.05em;margin-left:0}[dir=rtl] li,.slidev-layout [dir=rtl] li{margin-right:1.1em;margin-left:0;padding-right:.2em;padding-left:0}.slidev-layout h1+p{margin-top:-.5rem;margin-bottom:1rem;opacity:.5}.slidev-layout p+h2,.slidev-layout ul+h2,.slidev-layout table+h2{margin-top:2.5rem}.slidev-layout h1{margin-bottom:1rem;margin-left:-.05em;font-size:2.25rem;line-height:2.5rem}.slidev-layout h2{font-size:1.875rem;line-height:2.25rem}.slidev-layout h3{font-size:1.5rem;line-height:2rem}.slidev-layout h4{font-size:1.25rem;line-height:1.75rem}.slidev-layout h5{font-size:1rem;line-height:1.5rem}.slidev-layout h6{margin-left:-.05em;padding-top:.25rem;font-size:.875rem;line-height:1.25rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase}.slidev-layout h6:not(.opacity-100){opacity:.4}.slidev-layout.cover,.slidev-layout.intro{display:grid;height:100%}.slidev-layout.cover h1,.slidev-layout.intro h1{font-size:3.75rem;line-height:1;line-height:5rem}.slidev-layout.fact{display:grid;height:100%;text-align:center}.slidev-layout.fact h1{font-size:6rem;line-height:1;font-weight:700}.slidev-layout.fact h1+p{font-size:1.5rem;line-height:2rem;font-weight:700}.slidev-layout.statement{display:grid;height:100%;text-align:center}.slidev-layout.statement h1{font-size:3.75rem;line-height:1;font-weight:700}.slidev-layout.quote{display:grid;height:100%}.slidev-layout.quote h1+p{margin-top:.5rem}.slidev-layout.section h1{font-size:3.75rem;line-height:1;font-weight:500;line-height:5rem}:root{--prism-scheme: light;--prism-foreground: #6e6e6e;--prism-background: #f4f4f4;--prism-comment: #a8a8a8;--prism-string: #555555;--prism-literal: #333333;--prism-keyword: #000000;--prism-function: #4f4f4f;--prism-deleted: #333333;--prism-class: #333333;--prism-builtin: #757575;--prism-property: #333333;--prism-namespace: #4f4f4f;--prism-punctuation: #ababab;--prism-decorator: var(--prism-class);--prism-operator: var(--prism-punctuation);--prism-number: var(--prism-literal);--prism-boolean: var(--prism-literal);--prism-variable: var(--prism-literal);--prism-constant: var(--prism-literal);--prism-symbol: var(--prism-literal);--prism-interpolation: var(--prism-literal);--prism-selector: var(--prism-keyword);--prism-keyword-control: var(--prism-keyword);--prism-regex: var(--prism-string);--prism-json-property: var(--prism-property);--prism-inline-background: var(--prism-background);--prism-comment-style: italic;--prism-url-decoration: underline;--prism-line-number: #a5a5a5;--prism-line-number-gutter: #333333;--prism-line-highlight-background: #eeeeee;--prism-selection-background: #dddddd;--prism-marker-color: var(--prism-foreground);--prism-marker-opacity: .4;--prism-marker-font-size: .8em;--prism-font-size: 1em;--prism-line-height: 1.5em;--prism-font-family: monospace;--prism-inline-font-size: var(--prism-font-size);--prism-block-font-size: var(--prism-font-size);--prism-tab-size: 2;--prism-block-padding-x: 1em;--prism-block-padding-y: 1em;--prism-block-margin-x: 0;--prism-block-margin-y: .5em;--prism-block-radius: .3em;--prism-inline-padding-x: .3em;--prism-inline-padding-y: .1em;--prism-inline-radius: .3em}div[class*=language-],pre[class*=language-],code[class*=language-]{font-size:var(--prism-font-size);font-family:var(--prism-font-family);direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:var(--prism-line-height);-moz-tab-size:var(--prism-tab-size);-o-tab-size:var(--prism-tab-size);tab-size:var(--prism-tab-size);-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;color:var(--prism-foreground)!important}div[class*=language-],pre[class*=language-]{font-size:var(--prism-block-font-size);padding:var(--prism-block-padding-y) var(--prism-block-padding-x);margin:var(--prism-block-margin-y) var(--prism-block-margin-x);border-radius:var(--prism-block-radius);overflow:auto;background:var(--prism-background)}:not(pre)>code[class*=language-]{font-size:var(--prism-inline-font-size);padding:var(--prism-inline-padding-y) var(--prism-inline-padding-x);border-radius:var(--prism-inline-radius);background:var(--prism-inline-background)}pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection{background:var(--prism-selection-background)}pre[class*=language-]::selection,pre[class*=language-] ::selection,code[class*=language-]::selection,code[class*=language-] ::selection{background:var(--prism-selection-background)}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:var(--prism-comment);font-style:var(--prism-comment-style)}.token.namespace{color:var(--prism-namespace)}.token.interpolation{color:var(--prism-interpolation)}.token.string{color:var(--prism-string)}.token.punctuation{color:var(--prism-punctuation)}.token.operator{color:var(--prism-operator)}.token.keyword.module,.token.keyword.control-flow{color:var(--prism-keyword-control)}.token.url,.token.symbol,.token.inserted{color:var(--prism-symbol)}.token.constant{color:var(--prism-constant)}.token.string.url{text-decoration:var(--prism-url-decoration)}.token.boolean,.language-json .token.boolean{color:var(--prism-boolean)}.token.number,.language-json .token.number{color:var(--prism-number)}.token.variable{color:var(--prism-variable)}.token.keyword{color:var(--prism-keyword)}.token.atrule,.token.attr-value,.token.selector{color:var(--prism-selector)}.token.function{color:var(--prism-function)}.token.deleted{color:var(--prism-deleted)}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.class-name{color:var(--prism-class)}.token.tag,.token.builtin{color:var(--prism-builtin)}.token.attr-name,.token.property,.token.entity{color:var(--prism-property)}.language-json .token.property{color:var(--prism-json-property)}.token.regex{color:var(--prism-regex)}.token.decorator,.token.annotation{color:var(--prism-decorator)}.line-numbers .line-numbers-rows{border-right-color:var(--prism-line-number)}.line-numbers-rows>span:before{color:var(--prism-line-number-gutter)}.line-highlight{background:var(--prism-line-highlight-background)}:root{--cm-scheme: light;--cm-foreground: #6e6e6e;--cm-background: #f4f4f4;--cm-comment: #a8a8a8;--cm-string: #555555;--cm-literal: #333333;--cm-keyword: #000000;--cm-function: #4f4f4f;--cm-deleted: #333333;--cm-class: #333333;--cm-builtin: #757575;--cm-property: #333333;--cm-namespace: #4f4f4f;--cm-punctuation: #ababab;--cm-decorator: var(--cm-class);--cm-operator: var(--cm-punctuation);--cm-number: var(--cm-literal);--cm-boolean: var(--cm-literal);--cm-variable: var(--cm-literal);--cm-constant: var(--cm-literal);--cm-symbol: var(--cm-literal);--cm-interpolation: var(--cm-literal);--cm-selector: var(--cm-keyword);--cm-keyword-control: var(--cm-keyword);--cm-regex: var(--cm-string);--cm-json-property: var(--cm-property);--cm-inline-background: var(--cm-background);--cm-comment-style: italic;--cm-url-decoration: underline;--cm-line-number: #a5a5a5;--cm-line-number-gutter: #333333;--cm-line-highlight-background: #eeeeee;--cm-selection-background: #aaaaaa;--cm-marker-color: var(--cm-foreground);--cm-marker-opacity: .4;--cm-marker-font-size: .8em;--cm-font-size: 1em;--cm-line-height: 1.5em;--cm-font-family: monospace;--cm-inline-font-size: var(--cm-font-size);--cm-block-font-size: var(--cm-font-size);--cm-tab-size: 2;--cm-block-padding-x: 1em;--cm-block-padding-y: 1em;--cm-block-margin-x: 0;--cm-block-margin-y: .5em;--cm-block-radius: .3em;--cm-inline-padding-x: .3em;--cm-inline-padding-y: .1em;--cm-inline-radius: .3em}.cm-s-vars.CodeMirror{background-color:var(--cm-background);color:var(--cm-foreground)}.cm-s-vars .CodeMirror-gutters{background:var(--cm-line-number-gutter);color:var(--cm-line-number);border:none}.cm-s-vars .CodeMirror-guttermarker,.cm-s-vars .CodeMirror-guttermarker-subtle,.cm-s-vars .CodeMirror-linenumber{color:var(--cm-line-number)}.cm-s-vars div.CodeMirror-selected,.cm-s-vars.CodeMirror-focused div.CodeMirror-selected{background:var(--cm-selection-background)}.cm-s-vars .CodeMirror-line::selection,.cm-s-vars .CodeMirror-line>span::selection,.cm-s-vars .CodeMirror-line>span>span::selection{background:var(--cm-selection-background)}.cm-s-vars .CodeMirror-line::-moz-selection,.cm-s-vars .CodeMirror-line>span::-moz-selection,.cm-s-vars .CodeMirror-line>span>span::-moz-selection{background:var(--cm-selection-background)}.cm-s-vars .CodeMirror-activeline-background{background:var(--cm-line-highlight-background)}.cm-s-vars .cm-keyword{color:var(--cm-keyword)}.cm-s-vars .cm-variable,.cm-s-vars .cm-variable-2,.cm-s-vars .cm-variable-3,.cm-s-vars .cm-type{color:var(--cm-variable)}.cm-s-vars .cm-builtin{color:var(--cm-builtin)}.cm-s-vars .cm-atom{color:var(--cm-literal)}.cm-s-vars .cm-number{color:var(--cm-number)}.cm-s-vars .cm-def{color:var(--cm-decorator)}.cm-s-vars .cm-string,.cm-s-vars .cm-string-2{color:var(--cm-string)}.cm-s-vars .cm-comment{color:var(--cm-comment)}.cm-s-vars .cm-tag{color:var(--cm-builtin)}.cm-s-vars .cm-meta{color:var(--cm-namespace)}.cm-s-vars .cm-attribute,.cm-s-vars .cm-property{color:var(--cm-property)}.cm-s-vars .cm-qualifier{color:var(--cm-keyword)}.cm-s-vars .cm-error{color:var(--prism-deleted)}.cm-s-vars .cm-operator,.cm-s-vars .cm-bracket{color:var(--cm-punctuation)}.cm-s-vars .CodeMirror-matchingbracket{text-decoration:underline}.cm-s-vars .CodeMirror-cursor{border-left:1px solid currentColor}:root{--cm-scheme: var(--prism-scheme);--cm-foreground: var(--prism-foreground);--cm-background: var(--prism-background);--cm-comment: var(--prism-comment);--cm-string: var(--prism-string);--cm-literal: var(--prism-literal);--cm-keyword: var(--prism-keyword);--cm-function: var(--prism-function);--cm-deleted: var(--prism-deleted);--cm-class: var(--prism-class);--cm-builtin: var(--prism-builtin);--cm-property: var(--prism-property);--cm-namespace: var(--prism-namespace);--cm-punctuation: var(--prism-punctuation);--cm-decorator: var(--prism-decorator);--cm-operator: var(--prism-operator);--cm-number: var(--prism-number);--cm-boolean: var(--prism-boolean);--cm-variable: var(--prism-variable);--cm-constant: var(--prism-constant);--cm-symbol: var(--prism-symbol);--cm-interpolation: var(--prism-interpolation);--cm-selector: var(--prism-selector);--cm-keyword-control: var(--prism-keyword-control);--cm-regex: var(--prism-regex);--cm-json-property: var(--prism-json-property);--cm-inline-background: var(--prism-inline-background);--cm-comment-style: var(--prism-comment-style);--cm-url-decoration: var(--prism-url-decoration);--cm-line-number: var(--prism-line-number);--cm-line-number-gutter: var(--prism-line-number-gutter);--cm-line-highlight-background: var(--prism-line-highlight-background);--cm-selection-background: var(--prism-selection-background);--cm-marker-color: var(--prism-marker-color);--cm-marker-opacity: var(--prism-marker-opacity);--cm-marker-font-size: var(--prism-marker-font-size);--cm-font-size: var(--prism-font-size);--cm-line-height: var(--prism-line-height);--cm-font-family: var(--prism-font-family);--cm-inline-font-size: var(--prism-inline-font-size);--cm-block-font-size: var(--prism-block-font-size);--cm-tab-size: var(--prism-tab-size);--cm-block-padding-x: var(--prism-block-padding-x);--cm-block-padding-y: var(--prism-block-padding-y);--cm-block-margin-x: var(--prism-block-margin-x);--cm-block-margin-y: var(--prism-block-margin-y);--cm-block-radius: var(--prism-block-radius);--cm-inline-padding-x: var(--prism-inline-padding-x);--cm-inline-padding-y: var(--prism-inline-padding-y);--cm-inline-radius: var(--prism-inline-radius)}:root{--prism-font-family: var(--slidev-code-font-family);--prism-background: var(--slidev-code-background)}html:not(.dark){--prism-foreground: #393a34;--prism-comment: #a0ada0;--prism-string: #b56959;--prism-literal: #2f8a89;--prism-number: #296aa3;--prism-keyword: #1c6b48;--prism-function: #6c7834;--prism-boolean: #1c6b48;--prism-constant: #a65e2b;--prism-deleted: #a14f55;--prism-class: #2993a3;--prism-builtin: #ab5959;--prism-property: #b58451;--prism-namespace: #b05a78;--prism-punctuation: #8e8f8b;--prism-decorator: #bd8f8f;--prism-regex: #ab5e3f;--prism-json-property: #698c96}html.dark{--prism-foreground: #d4cfbf;--prism-comment: #758575;--prism-string: #d48372;--prism-literal: #429988;--prism-keyword: #4d9375;--prism-boolean: #1c6b48;--prism-number: #6394bf;--prism-variable: #c2b36e;--prism-function: #a1b567;--prism-deleted: #a14f55;--prism-class: #54b1bf;--prism-builtin: #e0a569;--prism-property: #dd8e6e;--prism-namespace: #db889a;--prism-punctuation: #858585;--prism-decorator: #bd8f8f;--prism-regex: #ab5e3f;--prism-json-property: #6b8b9e;--prism-line-number: #888888;--prism-line-number-gutter: #eeeeee;--prism-line-highlight-background: #444444;--prism-selection-background: #444444}:root{--twoslash-popup-bg: var(--slidev-code-background);--twoslash-popup-color: var(--slidev-code-foreground);--twoslash-docs-color: inherit;--twoslash-docs-font: inherit;--twoslash-code-font: "Fira Code",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--twoslash-underline-color: #8888;--twoslash-border-color: #8888;--twoslash-cursor-color: var(--slidev-theme-primary);--twoslash-matched-color: var(--slidev-theme-primary)}.twoslash-popup-container{font-size:calc(13px * var(--slidev-slide-scale, 1))}.twoslash-popup-container .twoslash-popup-code{font-size:.85em}.twoslash-floating .twoslash-popup-docs-tags .twoslash-popup-docs-tag-name{color:inherit;opacity:.5}.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}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute,[absolute=""]{position:absolute}.fixed{position:fixed}.relative,[relative=""]{position:relative}.inset-0,[inset-0=""]{top:0;right:0;bottom:0;left:0}.bottom-0{bottom:0}.bottom-10{bottom:2.5rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-4{right:1rem}.right-5{right:1.25rem}.top-0{top:0}.top-1\/2{top:50%}.-top-20{top:-5rem}.top-4{top:1rem}.top-5{top:1.25rem}.-z-1{z-index:-1}.z-1,[z-1=""]{z-index:1}.z-10,[z-10=""]{z-index:10}.z-20{z-index:20}.grid{display:grid}.grid-cols-\[1fr_max-content\]{grid-template-columns:1fr max-content}.grid-rows-\[1fr_max-content\]{grid-template-rows:1fr max-content}.grid-rows-\[1fr_min-content\]{grid-template-rows:1fr min-content}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.m-1{margin:.25rem}.m-10{margin:2.5rem}.m-20{margin:5rem}.m-4{margin:1rem}.m-5{margin:1.25rem}.m-auto{margin:auto}.children\:my-auto>*,.my-auto{margin-top:auto;margin-bottom:auto}.mb-10{margin-bottom:2.5rem}.mb-4{margin-bottom:1rem}.mb-8{margin-bottom:2rem}.ml-0{margin-left:0}.-ml-2{margin-left:-.5rem}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.ms{margin-inline-start:1rem}.-mt-0\.5{margin-top:-.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.block{display:block}.inline-block{display:inline-block}.hidden{display:none}.aspect-ratio-initial{aspect-ratio:initial}.h-\[calc\(var\(--vh\,1vh\)\*100\)\]{height:calc(var(--vh,1vh) * 100)}.h-0\.7{height:.175rem}.h-20{height:5rem}.h-22px{height:22px}.h-30{height:7.5rem}.h-3px{height:3px}.h-40{height:10rem}.h-40px{height:40px}.h-5,.h5,[h5=""]{height:1.25rem}.h-50{height:12.5rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-70{height:17.5rem}.h-8{height:2rem}.h-80{height:20rem}.h-full,[h-full=""]{height:100%}.h1{height:.25rem}.h2{height:.5rem}.max-w-150{max-width:37.5rem}.max-w-90,[max-w-90=""]{max-width:22.5rem}.max-w-full{max-width:100%}.min-w-16{min-width:4rem}.min-w-90,[min-w-90=""]{min-width:22.5rem}.w-1px{width:1px}.w-22px{width:22px}.w-4,[w-4=""]{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-90,[w-90=""]{width:22.5rem}.w-full,[w-full=""]{width:100%}.flex,[flex=""],[flex~="~"]{display:flex}.flex-auto,[flex-auto=""]{flex:1 1 auto}.flex-none{flex:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.translate-0{--un-translate-x:0;--un-translate-y:0;transform:translate(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)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.-rotate-45{--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-rotate:-45deg;transform:translate(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)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.scale-102{--un-scale-x:1.02;--un-scale-y:1.02;transform:translate(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)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.scale-85{--un-scale-x:.85;--un-scale-y:.85;transform:translate(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)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.transform{transform:translate(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)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.cursor-default{cursor:default}.cursor-pointer,[cursor-pointer=""]{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;user-select:none}.resize{resize:both}.resize-none{resize:none}.break-inside-avoid-page{break-inside:avoid-page}.break-after-page{break-after:page}.place-content-center{place-content:center}.items-center,[items-center=""]{align-items:center}.justify-center,[justify-center=""]{justify-content:center}.gap-2,[flex~=gap-2]{gap:.5rem}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-4{gap:1rem}.gap-x-8{column-gap:2rem}.gap-y-4{row-gap:1rem}.of-auto,.overflow-auto{overflow:auto}.of-hidden,.overflow-hidden,[of-hidden=""]{overflow:hidden}.overflow-y-auto{overflow-y:auto}.whitespace-nowrap{white-space:nowrap}.b,.border,.dark .dark\:border,.dark [dark\:border~="~"],[border~="~"]{border-width:1px}[border~="0"]{border-width:0px}.border-2{border-width:2px}[border~=y]{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-r-2{border-right-width:2px}.border-t,[border~=t]{border-top-width:1px}.border-gray-300\/50{border-color:#d1d5db80}.border-transparent,[border~=transparent]{border-color:transparent}.border-white{--un-border-opacity:1;border-color:rgb(255 255 255 / var(--un-border-opacity))}.rounded,[border~=rounded]{border-radius:.25rem}.rounded-1\/2{border-radius:50%}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.\!border-none{border-style:none!important}.bg-black,[bg~=black]{--un-bg-opacity:1;background-color:rgb(0 0 0 / var(--un-bg-opacity))}.bg-current{background-color:currentColor}.bg-gray\/20{background-color:#9ca3af33}.bg-transparent{background-color:transparent}.hover\:bg-gray-400:hover{--un-bg-opacity:1;background-color:rgb(156 163 175 / var(--un-bg-opacity))}.\!bg-opacity-75{--un-bg-opacity:.75 !important}[bg~=opacity-80]{--un-bg-opacity:.8}.hover\:bg-opacity-10:hover{--un-bg-opacity:.1}[stroke-width~="1"]{stroke-width:1px}[stroke-width~="2"]{stroke-width:2px}[stroke-width~="3"]{stroke-width:3px}.p-1{padding:.25rem}.p-16{padding:4rem}.p-2{padding:.5rem}.\!p-4{padding:1rem!important}.px,.px-4,.px4,[p~=x-4]{padding-left:1rem;padding-right:1rem}.py-2,[p~=y-2]{padding-top:.5rem;padding-bottom:.5rem}.px-2,.px2{padding-left:.5rem;padding-right:.5rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-7{padding-left:1.75rem;padding-right:1.75rem}.py-1,.py1{padding-top:.25rem;padding-bottom:.25rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-4{padding-top:1rem;padding-bottom:1rem}[p~=l-1]{padding-left:.25rem}[p~=r-2]{padding-right:.5rem}.pt-\.5,[p~="t-0.5"]{padding-top:.125rem}.pb2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pr-6{padding-right:1.5rem}.text-center{text-align:center}.text-right,[text-right=""]{text-align:right}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm,[text-sm=""],[text~=sm]{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs,[text-xs=""]{font-size:.75rem;line-height:1rem}.text-\$slidev-controls-foreground{color:var(--slidev-controls-foreground)}.text-black{--un-text-opacity:1;color:rgb(0 0 0 / var(--un-text-opacity))}.text-blue{--un-text-opacity:1;color:rgb(96 165 250 / var(--un-text-opacity))}.\!text-current{color:currentColor!important}.text-cyan{--un-text-opacity:1;color:rgb(34 211 238 / var(--un-text-opacity))}.text-gray,.text-gray-400{--un-text-opacity:1;color:rgb(156 163 175 / var(--un-text-opacity))}.text-green{--un-text-opacity:1;color:rgb(74 222 128 / var(--un-text-opacity))}.text-green-500{--un-text-opacity:1;color:rgb(34 197 94 / var(--un-text-opacity))}.text-indigo{--un-text-opacity:1;color:rgb(129 140 248 / var(--un-text-opacity))}.text-lime{--un-text-opacity:1;color:rgb(163 230 53 / var(--un-text-opacity))}.text-orange{--un-text-opacity:1;color:rgb(251 146 60 / var(--un-text-opacity))}.text-pink{--un-text-opacity:1;color:rgb(244 114 182 / var(--un-text-opacity))}.text-purple{--un-text-opacity:1;color:rgb(192 132 252 / var(--un-text-opacity))}.text-red,.text-red-400{--un-text-opacity:1;color:rgb(248 113 113 / var(--un-text-opacity))}.text-teal{--un-text-opacity:1;color:rgb(45 212 191 / var(--un-text-opacity))}.text-white{--un-text-opacity:1;color:rgb(255 255 255 / var(--un-text-opacity))}.text-yellow{--un-text-opacity:1;color:rgb(250 204 21 / var(--un-text-opacity))}.text-opacity-85{--un-text-opacity:.85}.font-bold,[font-bold=""]{font-weight:700}.leading-2{line-height:.5rem}.tracking-widest{letter-spacing:.1em}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--un-numeric-spacing:tabular-nums;font-variant-numeric:var(--un-ordinal) var(--un-slashed-zero) var(--un-numeric-figure) var(--un-numeric-spacing) var(--un-numeric-fraction)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.op0,.opacity-0,[op0=""]{opacity:0}.op100,[op100=""]{opacity:1}.op20,.group:hover .group-hover\:opacity-20{opacity:.2}.op30{opacity:.3}.op50,.opacity-50,[op50=""]{opacity:.5}.op80,.opacity-80{opacity:.8}.\!opacity-0{opacity:0!important}.opacity-10{opacity:.1}.\!opacity-100{opacity:1!important}.opacity-25{opacity:.25}.opacity-40{opacity:.4}[hover~=op100]:hover{opacity:1}.hover\:\!opacity-100:hover{opacity:1!important}.hover\:opacity-100:hover{opacity:1}.hover\:opacity-90:hover{opacity:.9}.shadow,[shadow~="~"]{--un-shadow:var(--un-shadow-inset) 0 1px 3px 0 var(--un-shadow-color, rgb(0 0 0 / .1)),var(--un-shadow-inset) 0 1px 2px -1px var(--un-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.\!backdrop-blur-0px{--un-backdrop-blur:blur(0px) !important;-webkit-backdrop-filter: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)!important;backdrop-filter: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)!important}.backdrop-blur-5px{--un-backdrop-blur:blur(5px);-webkit-backdrop-filter: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);backdrop-filter: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)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@media (max-width: 767.9px){.lt-md\:hidden{display:none}}@media (min-width: 1024px){.lg\:m-2{margin:.5rem}.lg\:gap-1{gap:.25rem}.lg\:p-2{padding:.5rem}.lg\:p-4{padding:1rem}} diff --git a/06-scalable/assets/logo-BYkHSa_O.png b/06-scalable/assets/logo-BYkHSa_O.png new file mode 100644 index 0000000..f5b8660 Binary files /dev/null and b/06-scalable/assets/logo-BYkHSa_O.png differ diff --git a/06-scalable/assets/modules/file-saver-CvNQQnEe.js b/06-scalable/assets/modules/file-saver-CvNQQnEe.js new file mode 100644 index 0000000..c4f1b3b --- /dev/null +++ b/06-scalable/assets/modules/file-saver-CvNQQnEe.js @@ -0,0 +1 @@ +function O(r,v){for(var u=0;ua[s]})}}}return Object.freeze(Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}))}var d=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function _(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var g={exports:{}};(function(r,v){(function(u,a){a()})(d,function(){function u(e,t){return typeof t>"u"?t={autoBom:!1}:typeof t!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\uFEFF",e],{type:e.type}):e}function a(e,t,l){var o=new XMLHttpRequest;o.open("GET",e),o.responseType="blob",o.onload=function(){p(o.response,t,l)},o.onerror=function(){console.error("could not download file")},o.send()}function s(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch{}return 200<=t.status&&299>=t.status}function c(e){try{e.dispatchEvent(new MouseEvent("click"))}catch{var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var i=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof d=="object"&&d.global===d?d:void 0,y=i.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),p=i.saveAs||(typeof window!="object"||window!==i?function(){}:"download"in HTMLAnchorElement.prototype&&!y?function(e,t,l){var o=i.URL||i.webkitURL,n=document.createElement("a");t=t||e.name||"download",n.download=t,n.rel="noopener",typeof e=="string"?(n.href=e,n.origin===location.origin?c(n):s(n.href)?a(e,t,l):c(n,n.target="_blank")):(n.href=o.createObjectURL(e),setTimeout(function(){o.revokeObjectURL(n.href)},4e4),setTimeout(function(){c(n)},0))}:"msSaveOrOpenBlob"in navigator?function(e,t,l){if(t=t||e.name||"download",typeof e!="string")navigator.msSaveOrOpenBlob(u(e,l),t);else if(s(e))a(e,t,l);else{var o=document.createElement("a");o.href=e,o.target="_blank",setTimeout(function(){c(o)})}}:function(e,t,l,o){if(o=o||open("","_blank"),o&&(o.document.title=o.document.body.innerText="downloading..."),typeof e=="string")return a(e,t,l);var n=e.type==="application/octet-stream",E=/constructor/i.test(i.HTMLElement)||i.safari,b=/CriOS\/[\d]+/.test(navigator.userAgent);if((b||n&&E||y)&&typeof FileReader<"u"){var w=new FileReader;w.onloadend=function(){var f=w.result;f=b?f:f.replace(/^data:[^;]*;/,"data:attachment/file;"),o?o.location.href=f:location=f,o=null},w.readAsDataURL(e)}else{var h=i.URL||i.webkitURL,m=h.createObjectURL(e);o?o.location=m:location.href=m,o=null,setTimeout(function(){h.revokeObjectURL(m)},4e4)}});i.saveAs=p.saveAs=p,r.exports=p})})(g);var j=g.exports;const A=_(j),L=O({__proto__:null,default:A},[j]);export{L as F}; diff --git a/06-scalable/assets/modules/shiki-BSchMNmt.css b/06-scalable/assets/modules/shiki-BSchMNmt.css new file mode 100644 index 0000000..5813562 --- /dev/null +++ b/06-scalable/assets/modules/shiki-BSchMNmt.css @@ -0,0 +1 @@ +.resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper__popper{z-index:10000;top:0;left:0;outline:none}.v-popper__popper.v-popper__popper--hidden{visibility:hidden;opacity:0;transition:opacity .15s,visibility .15s;pointer-events:none}.v-popper__popper.v-popper__popper--shown{visibility:visible;opacity:1;transition:opacity .15s}.v-popper__popper.v-popper__popper--skip-transition,.v-popper__popper.v-popper__popper--skip-transition>.v-popper__wrapper{transition:none!important}.v-popper__backdrop{position:absolute;top:0;left:0;width:100%;height:100%;display:none}.v-popper__inner{position:relative;box-sizing:border-box;overflow-y:auto}.v-popper__inner>div{position:relative;z-index:1;max-width:inherit;max-height:inherit}.v-popper__arrow-container{position:absolute;width:10px;height:10px}.v-popper__popper--arrow-overflow .v-popper__arrow-container,.v-popper__popper--no-positioning .v-popper__arrow-container{display:none}.v-popper__arrow-inner,.v-popper__arrow-outer{border-style:solid;position:absolute;top:0;left:0;width:0;height:0}.v-popper__arrow-inner{visibility:hidden;border-width:7px}.v-popper__arrow-outer{border-width:6px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{left:-2px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{left:-1px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer{border-bottom-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:0}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{border-top-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-top-color:transparent!important}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{top:-4px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{top:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{top:-1px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{border-left-width:0;border-left-color:transparent!important;border-top-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{left:-4px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{left:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer{border-right-width:0;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner{left:-2px}.v-popper--theme-tooltip .v-popper__inner{background:#000c;color:#fff;border-radius:6px;padding:7px 12px 6px}.v-popper--theme-tooltip .v-popper__arrow-outer{border-color:#000c}.v-popper--theme-dropdown .v-popper__inner{background:#fff;color:#000;border-radius:6px;border:1px solid #ddd;box-shadow:0 6px 30px #0000001a}.v-popper--theme-dropdown .v-popper__arrow-inner{visibility:visible;border-color:#fff}.v-popper--theme-dropdown .v-popper__arrow-outer{border-color:#ddd}:root{--twoslash-border-color: #8888;--twoslash-underline-color: currentColor;--twoslash-highlighted-border: #c37d0d50;--twoslash-highlighted-bg: #c37d0d20;--twoslash-popup-bg: #f8f8f8;--twoslash-popup-color: inherit;--twoslash-popup-shadow: rgba(0, 0, 0, .08) 0px 1px 4px;--twoslash-docs-color: #888;--twoslash-docs-font: sans-serif;--twoslash-code-font: inherit;--twoslash-code-font-size: 1em;--twoslash-matched-color: inherit;--twoslash-unmatched-color: #888;--twoslash-cursor-color: #8888;--twoslash-error-color: #d45656;--twoslash-error-bg: #d4565620;--twoslash-warn-color: #c37d0d;--twoslash-warn-bg: #c37d0d20;--twoslash-tag-color: #3772cf;--twoslash-tag-bg: #3772cf20;--twoslash-tag-warn-color: var(--twoslash-warn-color);--twoslash-tag-warn-bg: var(--twoslash-warn-bg);--twoslash-tag-annotate-color: #1ba673;--twoslash-tag-annotate-bg: #1ba67320}@media (prefers-reduced-motion: reduce){.twoslash *{transition:none!important}}.twoslash:hover .twoslash-hover{border-color:var(--twoslash-underline-color)}.twoslash .twoslash-hover{border-bottom:1px dotted transparent;transition-timing-function:ease;transition:border-color .3s;position:relative}.twoslash .twoslash-popup-container{position:absolute;opacity:0;display:inline-flex;flex-direction:column;transform:translateY(1.1em);background:var(--twoslash-popup-bg);color:var(--twoslash-popup-color);border:1px solid var(--twoslash-border-color);transition:opacity .3s;border-radius:4px;pointer-events:none;z-index:10;-webkit-user-select:none;user-select:none;text-align:left;box-shadow:var(--twoslash-popup-shadow)}.twoslash .twoslash-query-presisted .twoslash-popup-container{z-index:9;transform:translateY(1.5em)}.twoslash .twoslash-hover:hover .twoslash-popup-container,.twoslash .twoslash-error-hover:hover .twoslash-popup-container,.twoslash .twoslash-query-presisted .twoslash-popup-container{opacity:1;pointer-events:auto}.twoslash .twoslash-popup-container:hover{-webkit-user-select:auto;user-select:auto}.twoslash .twoslash-popup-arrow{position:absolute;top:-4px;left:1em;border-top:1px solid var(--twoslash-border-color);border-right:1px solid var(--twoslash-border-color);background:var(--twoslash-popup-bg);transform:rotate(-45deg);width:6px;height:6px;pointer-events:none}.twoslash .twoslash-popup-code,.twoslash .twoslash-popup-error,.twoslash .twoslash-popup-docs{padding:6px 8px!important}.twoslash .twoslash-popup-code{font-family:var(--twoslash-code-font);font-size:var(--twoslash-code-font-size)}.twoslash .twoslash-popup-docs{color:var(--twoslash-docs-color);font-family:var(--twoslash-docs-font);font-size:.8em;border-top:1px solid var(--twoslash-border-color)}.twoslash .twoslash-popup-error{color:var(--twoslash-error-color);background-color:var(--twoslash-error-bg);font-family:var(--twoslash-docs-font);font-size:.8em}.twoslash .twoslash-popup-docs-tags{display:flex;flex-direction:column;font-family:var(--twoslash-docs-font)}.twoslash .twoslash-popup-docs-tags,.twoslash .twoslash-popup-docs-tag-name{margin-right:.5em}.twoslash .twoslash-popup-docs-tag-name{font-family:var(--twoslash-code-font)}.twoslash .twoslash-error-line{position:relative;background-color:var(--twoslash-error-bg);border-left:3px solid var(--twoslash-error-color);color:var(--twoslash-error-color);padding:6px 12px;margin:.2em 0;min-width:100%;width:max-content}.twoslash .twoslash-error-line.twoslash-error-level-warning{background-color:var(--twoslash-warn-bg);border-left:3px solid var(--twoslash-warn-color);color:var(--twoslash-warn-color)}.twoslash .twoslash-error{background:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%206%203'%20enable-background%3D'new%200%200%206%203'%20height%3D'3'%20width%3D'6'%3E%3Cg%20fill%3D'%23c94824'%3E%3Cpolygon%20points%3D'5.5%2C0%202.5%2C3%201.1%2C3%204.1%2C0'%2F%3E%3Cpolygon%20points%3D'4%2C0%206%2C2%206%2C0.6%205.4%2C0'%2F%3E%3Cpolygon%20points%3D'0%2C2%201%2C3%202.4%2C3%200%2C0.6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") repeat-x bottom left;padding-bottom:2px}.twoslash .twoslash-error.twoslash-error-level-warning{background:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%206%203'%20enable-background%3D'new%200%200%206%203'%20height%3D'3'%20width%3D'6'%3E%3Cg%20fill%3D'%23c37d0d'%3E%3Cpolygon%20points%3D'5.5%2C0%202.5%2C3%201.1%2C3%204.1%2C0'%2F%3E%3Cpolygon%20points%3D'4%2C0%206%2C2%206%2C0.6%205.4%2C0'%2F%3E%3Cpolygon%20points%3D'0%2C2%201%2C3%202.4%2C3%200%2C0.6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") repeat-x bottom left;padding-bottom:2px}.twoslash .twoslash-completion-cursor{position:relative}.twoslash .twoslash-completion-cursor .twoslash-completion-list{-webkit-user-select:none;user-select:none;position:absolute;top:0;left:0;transform:translateY(1.2em);margin:3px 0 0 -1px;display:inline-block;z-index:8;box-shadow:var(--twoslash-popup-shadow);background:var(--twoslash-popup-bg);border:1px solid var(--twoslash-border-color)}.twoslash-completion-list{width:240px;font-size:.8rem;padding:4px;display:flex;flex-direction:column;gap:4px}.twoslash-completion-list:hover{-webkit-user-select:auto;user-select:auto}.twoslash-completion-list:before{background-color:var(--twoslash-cursor-color);width:2px;position:absolute;top:-1.6em;height:1.4em;left:-1px;content:" "}.twoslash-completion-list li{overflow:hidden;display:flex;align-items:center;gap:.25em;line-height:1em}.twoslash-completion-list li span.twoslash-completions-unmatched{color:var(--twoslash-unmatched-color)}.twoslash-completion-list .deprecated{text-decoration:line-through;opacity:.5}.twoslash-completion-list li span.twoslash-completions-matched{color:var(--twoslash-matched-color)}.twoslash-highlighted{background-color:var(--twoslash-highlighted-bg);border:1px solid var(--twoslash-highlighted-border);padding:1px 2px;margin:-1px -3px;border-radius:4px}.twoslash-completion-list .twoslash-completions-icon{color:var(--twoslash-unmatched-color);width:1em;flex:none}.twoslash .twoslash-tag-line{position:relative;background-color:var(--twoslash-tag-bg);border-left:3px solid var(--twoslash-tag-color);color:var(--twoslash-tag-color);padding:6px 10px;margin:.2em 0;display:flex;align-items:center;gap:.3em;min-width:100%;width:max-content}.twoslash .twoslash-tag-line .twoslash-tag-icon{width:1.1em;color:inherit}.twoslash .twoslash-tag-line.twoslash-tag-error-line{background-color:var(--twoslash-error-bg);border-left:3px solid var(--twoslash-error-color);color:var(--twoslash-error-color)}.twoslash .twoslash-tag-line.twoslash-tag-warn-line{background-color:var(--twoslash-tag-warn-bg);border-left:3px solid var(--twoslash-tag-warn-color);color:var(--twoslash-tag-warn-color)}.twoslash .twoslash-tag-line.twoslash-tag-annotate-line{background-color:var(--twoslash-tag-annotate-bg);border-left:3px solid var(--twoslash-tag-annotate-color);color:var(--twoslash-tag-annotate-color)}:root{--twoslash-popup-bg: var(--vp-c-bg, inherit);--twoslash-popup-color: var(--vp-c-text-1);--twoslash-docs-color: var(--vp-c-text-1);--twoslash-docs-font: var(--vp-font-family-base);--twoslash-code-font: var(--vp-font-family-mono);--twoslash-code-size: var(--vp-code-font-size);--twoslash-underline-color: #8888;--twoslash-border-color: var(--vp-c-border);--twoslash-cursor-color: var(--vp-c-brand);--twoslash-matched-color: var(--vp-c-brand);--twoslash-unmatched-color: var(--vp-c-text-2)}.v-popper--theme-twoslash{z-index:calc(var(--vp-z-index-local-nav) - 1)}.v-popper--theme-twoslash .v-popper__inner{background:var(--twoslash-popup-bg);color:var(--twoslash-popup-color);border-color:var(--twoslash-border-color)}.v-popper--theme-twoslash .v-popper__arrow-outer{border-color:var(--twoslash-border-color)}.v-popper--theme-twoslash .v-popper__arrow-inner{border-color:var(--twoslash-popup-bg)}.twoslash-popup-container{transform:translateY(1.5em)}.twoslash-query-presisted .twoslash-popup-container{transform:translateY(1.8em)}.twoslash .v-popper{display:inline-block}.twoslash-completion-list .twoslash-completions-icon{color:var(--twoslash-unmatched-color)!important}.twoslash-floating .twoslash-popup-code{max-width:600px;display:block;width:fit-content;min-width:100%;padding:6px 12px;line-height:var(--vp-code-line-height);font-size:var(--twoslash-code-size);transition:color .5s;white-space:pre-wrap}.twoslash-floating .twoslash-popup-docs,.twoslash-floating .twoslash-popup-error{padding:0 12px!important;font-family:var(--twoslash-docs-font);font-size:.9em;max-height:500px;max-width:700px;overflow-y:auto;overflow-x:hidden;text-wrap:balance}.twoslash-floating .twoslash-popup-docs{border-top:1px solid var(--twoslash-border-color);color:var(--twoslash-docs-color)}.twoslash-floating .twoslash-popup-error{color:var(--twoslash-error-color)}.twoslash-floating .twoslash-popup-error.twoslash-error-level-warning{color:var(--twoslash-warn-color)}.twoslash-floating .twoslash-popup-docs p,.twoslash-floating .twoslash-popup-error p{margin:0;padding:6px 0;text-wrap:balance}.twoslash-floating .twoslash-popup-docs pre .twoslash-floating .twoslash-popup-error pre{background-color:var(--vp-code-block-bg);border-radius:8px;padding:12px;margin:6px -2px;overflow-x:auto}.twoslash-floating .twoslash-popup-docs-tags{display:flex;flex-direction:column;padding:8px 12px!important}.twoslash-floating .twoslash-popup-docs-tags .twoslash-popup-docs-tag-name{font-family:var(--twoslash-code-font);color:var(--twoslash-unmatched-color);margin-right:.5em}.twoslash-completion-cursor{height:1.2em;width:2px;margin-bottom:-.2em;background:var(--twoslash-cursor-color);display:inline-block;-webkit-user-select:none;user-select:none}.twoslash-floating.twoslash-completion .v-popper__arrow-container{display:none}.twoslash-floating.twoslash-completion .twoslash-completion-list{padding:6px;font-family:var(--twoslash-code-font);font-size:var(--twoslash-code-size)!important}.twoslash-floating.twoslash-completion .twoslash-completion-list li{padding:3px 0} diff --git a/06-scalable/assets/modules/shiki-CNrqLFow.js b/06-scalable/assets/modules/shiki-CNrqLFow.js new file mode 100644 index 0000000..dc5b489 --- /dev/null +++ b/06-scalable/assets/modules/shiki-CNrqLFow.js @@ -0,0 +1 @@ +import{d as xe,n as Vt,p as Wt,a as jt,o as I,c as be,w as qt,r as ne,b as se,e as K,F as Gt,f as me,g as je,h as Oe,i as Re,j as Yt,k as ge,l as ht,m as ut,q as Xt,s as Ut,t as Le,u as Kt,v as Zt,x as Qt}from"./vue-CoY6Ph6S.js";const Jt=["top","right","bottom","left"],qe=["start","end"],Ge=Jt.reduce((e,t)=>e.concat(t,t+"-"+qe[0],t+"-"+qe[1]),[]),re=Math.min,U=Math.max,eo={left:"right",right:"left",bottom:"top",top:"bottom"},to={start:"end",end:"start"};function Me(e,t,o){return U(e,re(t,o))}function Z(e,t){return typeof e=="function"?e(t):e}function B(e){return e.split("-")[0]}function L(e){return e.split("-")[1]}function ft(e){return e==="x"?"y":"x"}function De(e){return e==="y"?"height":"width"}function ce(e){return["top","bottom"].includes(B(e))?"y":"x"}function Fe(e){return ft(ce(e))}function mt(e,t,o){o===void 0&&(o=!1);const i=L(e),n=Fe(e),s=De(n);let r=n==="x"?i===(o?"end":"start")?"right":"left":i==="start"?"bottom":"top";return t.reference[s]>t.floating[s]&&(r=ve(r)),[r,ve(r)]}function oo(e){const t=ve(e);return[we(e),t,we(t)]}function we(e){return e.replace(/start|end/g,t=>to[t])}function io(e,t,o){const i=["left","right"],n=["right","left"],s=["top","bottom"],r=["bottom","top"];switch(e){case"top":case"bottom":return o?t?n:i:t?i:n;case"left":case"right":return t?s:r;default:return[]}}function no(e,t,o,i){const n=L(e);let s=io(B(e),o==="start",i);return n&&(s=s.map(r=>r+"-"+n),t&&(s=s.concat(s.map(we)))),s}function ve(e){return e.replace(/left|right|bottom|top/g,t=>eo[t])}function so(e){return{top:0,right:0,bottom:0,left:0,...e}}function gt(e){return typeof e!="number"?so(e):{top:e,right:e,bottom:e,left:e}}function ee(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function Ye(e,t,o){let{reference:i,floating:n}=e;const s=ce(t),r=Fe(t),a=De(r),l=B(t),d=s==="y",f=i.x+i.width/2-n.width/2,c=i.y+i.height/2-n.height/2,u=i[a]/2-n[a]/2;let p;switch(l){case"top":p={x:f,y:i.y-n.height};break;case"bottom":p={x:f,y:i.y+i.height};break;case"right":p={x:i.x+i.width,y:c};break;case"left":p={x:i.x-n.width,y:c};break;default:p={x:i.x,y:i.y}}switch(L(t)){case"start":p[r]-=u*(o&&d?-1:1);break;case"end":p[r]+=u*(o&&d?-1:1);break}return p}const ro=async(e,t,o)=>{const{placement:i="bottom",strategy:n="absolute",middleware:s=[],platform:r}=o,a=s.filter(Boolean),l=await(r.isRTL==null?void 0:r.isRTL(t));let d=await r.getElementRects({reference:e,floating:t,strategy:n}),{x:f,y:c}=Ye(d,i,l),u=i,p={},h=0;for(let v=0;v({name:"arrow",options:e,async fn(t){const{x:o,y:i,placement:n,rects:s,platform:r,elements:a,middlewareData:l}=t,{element:d,padding:f=0}=Z(e,t)||{};if(d==null)return{};const c=gt(f),u={x:o,y:i},p=Fe(n),h=De(p),v=await r.getDimensions(d),y=p==="y",m=y?"top":"left",g=y?"bottom":"right",$=y?"clientHeight":"clientWidth",x=s.reference[h]+s.reference[p]-u[p]-s.floating[h],_=u[p]-s.reference[p],b=await(r.getOffsetParent==null?void 0:r.getOffsetParent(d));let T=b?b[$]:0;(!T||!await(r.isElement==null?void 0:r.isElement(b)))&&(T=a.floating[$]||s.floating[h]);const O=x/2-_/2,N=T/2-v[h]/2-1,S=re(c[m],N),k=re(c[g],N),P=S,Y=T-v[h]-k,C=T/2-v[h]/2+O,H=Me(P,C,Y),E=!l.arrow&&L(n)!=null&&C!==H&&s.reference[h]/2-(CL(n)===e),...o.filter(n=>L(n)!==e)]:o.filter(n=>B(n)===n)).filter(n=>e?L(n)===e||(t?we(n)!==n:!1):!0)}const po=function(e){return e===void 0&&(e={}),{name:"autoPlacement",options:e,async fn(t){var o,i,n;const{rects:s,middlewareData:r,placement:a,platform:l,elements:d}=t,{crossAxis:f=!1,alignment:c,allowedPlacements:u=Ge,autoAlignment:p=!0,...h}=Z(e,t),v=c!==void 0||u===Ge?lo(c||null,p,u):u,y=await Te(t,h),m=((o=r.autoPlacement)==null?void 0:o.index)||0,g=v[m];if(g==null)return{};const $=mt(g,s,await(l.isRTL==null?void 0:l.isRTL(d.floating)));if(a!==g)return{reset:{placement:v[0]}};const x=[y[B(g)],y[$[0]],y[$[1]]],_=[...((i=r.autoPlacement)==null?void 0:i.overflows)||[],{placement:g,overflows:x}],b=v[m+1];if(b)return{data:{index:m+1,overflows:_},reset:{placement:b}};const T=_.map(S=>{const k=L(S.placement);return[S.placement,k&&f?S.overflows.slice(0,2).reduce((P,Y)=>P+Y,0):S.overflows[0],S.overflows]}).sort((S,k)=>S[1]-k[1]),N=((n=T.filter(S=>S[2].slice(0,L(S[0])?2:3).every(k=>k<=0))[0])==null?void 0:n[0])||T[0][0];return N!==a?{data:{index:m+1,overflows:_},reset:{placement:N}}:{}}}},co=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var o,i;const{placement:n,middlewareData:s,rects:r,initialPlacement:a,platform:l,elements:d}=t,{mainAxis:f=!0,crossAxis:c=!0,fallbackPlacements:u,fallbackStrategy:p="bestFit",fallbackAxisSideDirection:h="none",flipAlignment:v=!0,...y}=Z(e,t);if((o=s.arrow)!=null&&o.alignmentOffset)return{};const m=B(n),g=B(a)===a,$=await(l.isRTL==null?void 0:l.isRTL(d.floating)),x=u||(g||!v?[ve(a)]:oo(a));!u&&h!=="none"&&x.push(...no(a,v,h,$));const _=[a,...x],b=await Te(t,y),T=[];let O=((i=s.flip)==null?void 0:i.overflows)||[];if(f&&T.push(b[m]),c){const P=mt(n,r,$);T.push(b[P[0]],b[P[1]])}if(O=[...O,{placement:n,overflows:T}],!T.every(P=>P<=0)){var N,S;const P=(((N=s.flip)==null?void 0:N.index)||0)+1,Y=_[P];if(Y)return{data:{index:P,overflows:O},reset:{placement:Y}};let C=(S=O.filter(H=>H.overflows[0]<=0).sort((H,E)=>H.overflows[1]-E.overflows[1])[0])==null?void 0:S.placement;if(!C)switch(p){case"bestFit":{var k;const H=(k=O.map(E=>[E.placement,E.overflows.filter(F=>F>0).reduce((F,It)=>F+It,0)]).sort((E,F)=>E[1]-F[1])[0])==null?void 0:k[0];H&&(C=H);break}case"initialPlacement":C=a;break}if(n!==C)return{reset:{placement:C}}}return{}}}};async function ho(e,t){const{placement:o,platform:i,elements:n}=e,s=await(i.isRTL==null?void 0:i.isRTL(n.floating)),r=B(o),a=L(o),l=ce(o)==="y",d=["left","top"].includes(r)?-1:1,f=s&&l?-1:1,c=Z(t,e);let{mainAxis:u,crossAxis:p,alignmentAxis:h}=typeof c=="number"?{mainAxis:c,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...c};return a&&typeof h=="number"&&(p=a==="end"?h*-1:h),l?{x:p*f,y:u*d}:{x:u*d,y:p*f}}const uo=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var o,i;const{x:n,y:s,placement:r,middlewareData:a}=t,l=await ho(t,e);return r===((o=a.offset)==null?void 0:o.placement)&&(i=a.arrow)!=null&&i.alignmentOffset?{}:{x:n+l.x,y:s+l.y,data:{...l,placement:r}}}}},fo=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:o,y:i,placement:n}=t,{mainAxis:s=!0,crossAxis:r=!1,limiter:a={fn:y=>{let{x:m,y:g}=y;return{x:m,y:g}}},...l}=Z(e,t),d={x:o,y:i},f=await Te(t,l),c=ce(B(n)),u=ft(c);let p=d[u],h=d[c];if(s){const y=u==="y"?"top":"left",m=u==="y"?"bottom":"right",g=p+f[y],$=p-f[m];p=Me(g,p,$)}if(r){const y=c==="y"?"top":"left",m=c==="y"?"bottom":"right",g=h+f[y],$=h-f[m];h=Me(g,h,$)}const v=a.fn({...t,[u]:p,[c]:h});return{...v,data:{x:v.x-o,y:v.y-i}}}}},mo=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:o,rects:i,platform:n,elements:s}=t,{apply:r=()=>{},...a}=Z(e,t),l=await Te(t,a),d=B(o),f=L(o),c=ce(o)==="y",{width:u,height:p}=i.floating;let h,v;d==="top"||d==="bottom"?(h=d,v=f===(await(n.isRTL==null?void 0:n.isRTL(s.floating))?"start":"end")?"left":"right"):(v=d,h=f==="end"?"top":"bottom");const y=p-l[h],m=u-l[v],g=!t.middlewareData.shift;let $=y,x=m;if(c){const b=u-l.left-l.right;x=f||g?re(m,b):b}else{const b=p-l.top-l.bottom;$=f||g?re(y,b):b}if(g&&!f){const b=U(l.left,0),T=U(l.right,0),O=U(l.top,0),N=U(l.bottom,0);c?x=u-2*(b!==0||T!==0?b+T:U(l.left,l.right)):$=p-2*(O!==0||N!==0?O+N:U(l.top,l.bottom))}await r({...t,availableWidth:x,availableHeight:$});const _=await n.getDimensions(s.floating);return u!==_.width||p!==_.height?{reset:{rects:!0}}:{}}}};function A(e){var t;return((t=e.ownerDocument)==null?void 0:t.defaultView)||window}function R(e){return A(e).getComputedStyle(e)}const Xe=Math.min,te=Math.max,ye=Math.round;function wt(e){const t=R(e);let o=parseFloat(t.width),i=parseFloat(t.height);const n=e.offsetWidth,s=e.offsetHeight,r=ye(o)!==n||ye(i)!==s;return r&&(o=n,i=s),{width:o,height:i,fallback:r}}function j(e){return yt(e)?(e.nodeName||"").toLowerCase():""}let he;function vt(){if(he)return he;const e=navigator.userAgentData;return e&&Array.isArray(e.brands)?(he=e.brands.map(t=>t.brand+"/"+t.version).join(" "),he):navigator.userAgent}function D(e){return e instanceof A(e).HTMLElement}function q(e){return e instanceof A(e).Element}function yt(e){return e instanceof A(e).Node}function Ue(e){if(typeof ShadowRoot>"u")return!1;const t=A(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function Se(e){const{overflow:t,overflowX:o,overflowY:i,display:n}=R(e);return/auto|scroll|overlay|hidden|clip/.test(t+i+o)&&!["inline","contents"].includes(n)}function go(e){return["table","td","th"].includes(j(e))}function Ie(e){const t=/firefox/i.test(vt()),o=R(e),i=o.backdropFilter||o.WebkitBackdropFilter;return o.transform!=="none"||o.perspective!=="none"||(i?i!=="none":!1)||t&&o.willChange==="filter"||t&&(o.filter?o.filter!=="none":!1)||["transform","perspective"].some(n=>o.willChange.includes(n))||["paint","layout","strict","content"].some(n=>{const s=o.contain;return s!=null?s.includes(n):!1})}function $t(){return!/^((?!chrome|android).)*safari/i.test(vt())}function Ve(e){return["html","body","#document"].includes(j(e))}function _t(e){return q(e)?e:e.contextElement}const xt={x:1,y:1};function Q(e){const t=_t(e);if(!D(t))return xt;const o=t.getBoundingClientRect(),{width:i,height:n,fallback:s}=wt(t);let r=(s?ye(o.width):o.width)/i,a=(s?ye(o.height):o.height)/n;return(!r||!Number.isFinite(r))&&(r=1),(!a||!Number.isFinite(a))&&(a=1),{x:r,y:a}}function ae(e,t,o,i){var n,s;t===void 0&&(t=!1),o===void 0&&(o=!1);const r=e.getBoundingClientRect(),a=_t(e);let l=xt;t&&(i?q(i)&&(l=Q(i)):l=Q(e));const d=a?A(a):window,f=!$t()&&o;let c=(r.left+(f&&((n=d.visualViewport)==null?void 0:n.offsetLeft)||0))/l.x,u=(r.top+(f&&((s=d.visualViewport)==null?void 0:s.offsetTop)||0))/l.y,p=r.width/l.x,h=r.height/l.y;if(a){const v=A(a),y=i&&q(i)?A(i):i;let m=v.frameElement;for(;m&&i&&y!==v;){const g=Q(m),$=m.getBoundingClientRect(),x=getComputedStyle(m);$.x+=(m.clientLeft+parseFloat(x.paddingLeft))*g.x,$.y+=(m.clientTop+parseFloat(x.paddingTop))*g.y,c*=g.x,u*=g.y,p*=g.x,h*=g.y,c+=$.x,u+=$.y,m=A(m).frameElement}}return{width:p,height:h,top:u,right:c+p,bottom:u+h,left:c,x:c,y:u}}function G(e){return((yt(e)?e.ownerDocument:e.document)||window.document).documentElement}function Pe(e){return q(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function wo(e){let{rect:t,offsetParent:o,strategy:i}=e;const n=D(o),s=G(o);if(o===s)return t;let r={scrollLeft:0,scrollTop:0},a={x:1,y:1};const l={x:0,y:0};if((n||!n&&i!=="fixed")&&((j(o)!=="body"||Se(s))&&(r=Pe(o)),D(o))){const d=ae(o);a=Q(o),l.x=d.x+o.clientLeft,l.y=d.y+o.clientTop}return{width:t.width*a.x,height:t.height*a.y,x:t.x*a.x-r.scrollLeft*a.x+l.x,y:t.y*a.y-r.scrollTop*a.y+l.y}}function bt(e){return ae(G(e)).left+Pe(e).scrollLeft}function vo(e){const t=G(e),o=Pe(e),i=e.ownerDocument.body,n=te(t.scrollWidth,t.clientWidth,i.scrollWidth,i.clientWidth),s=te(t.scrollHeight,t.clientHeight,i.scrollHeight,i.clientHeight);let r=-o.scrollLeft+bt(e);const a=-o.scrollTop;return R(i).direction==="rtl"&&(r+=te(t.clientWidth,i.clientWidth)-n),{width:n,height:s,x:r,y:a}}function le(e){if(j(e)==="html")return e;const t=e.assignedSlot||e.parentNode||Ue(e)&&e.host||G(e);return Ue(t)?t.host:t}function Tt(e){const t=le(e);return Ve(t)?t.ownerDocument.body:D(t)&&Se(t)?t:Tt(t)}function $e(e,t){var o;t===void 0&&(t=[]);const i=Tt(e),n=i===((o=e.ownerDocument)==null?void 0:o.body),s=A(i);return n?t.concat(s,s.visualViewport||[],Se(i)?i:[]):t.concat(i,$e(i))}function yo(e,t){const o=A(e),i=G(e),n=o.visualViewport;let s=i.clientWidth,r=i.clientHeight,a=0,l=0;if(n){s=n.width,r=n.height;const d=$t();(d||!d&&t==="fixed")&&(a=n.offsetLeft,l=n.offsetTop)}return{width:s,height:r,x:a,y:l}}function $o(e,t){const o=ae(e,!0,t==="fixed"),i=o.top+e.clientTop,n=o.left+e.clientLeft,s=D(e)?Q(e):{x:1,y:1},r=e.clientWidth*s.x,a=e.clientHeight*s.y,l=n*s.x,d=i*s.y;return{width:r,height:a,x:l,y:d}}function Ke(e,t,o){return t==="viewport"?ee(yo(e,o)):q(t)?ee($o(t,o)):ee(vo(G(e)))}function _o(e,t){const o=t.get(e);if(o)return o;let i=$e(e).filter(a=>q(a)&&j(a)!=="body"),n=null;const s=R(e).position==="fixed";let r=s?le(e):e;for(;q(r)&&!Ve(r);){const a=R(r),l=Ie(r);(s?!l&&!n:!l&&a.position==="static"&&!!n&&["absolute","fixed"].includes(n.position))?i=i.filter(f=>f!==r):n=a,r=le(r)}return t.set(e,i),i}function xo(e){let{element:t,boundary:o,rootBoundary:i,strategy:n}=e;const r=[...o==="clippingAncestors"?_o(t,this._c):[].concat(o),i],a=r[0],l=r.reduce((d,f)=>{const c=Ke(t,f,n);return d.top=te(c.top,d.top),d.right=Xe(c.right,d.right),d.bottom=Xe(c.bottom,d.bottom),d.left=te(c.left,d.left),d},Ke(t,a,n));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function bo(e){return D(e)?wt(e):e.getBoundingClientRect()}function Ze(e){return!D(e)||R(e).position==="fixed"?null:e.offsetParent}function To(e){let t=le(e);for(;D(t)&&!Ve(t);){if(Ie(t))return t;t=le(t)}return null}function Qe(e){const t=A(e);let o=Ze(e);for(;o&&go(o)&&R(o).position==="static";)o=Ze(o);return o&&(j(o)==="html"||j(o)==="body"&&R(o).position==="static"&&!Ie(o))?t:o||To(e)||t}function So(e,t,o){const i=D(t),n=G(t),s=ae(e,!0,o==="fixed",t);let r={scrollLeft:0,scrollTop:0};const a={x:0,y:0};if(i||!i&&o!=="fixed")if((j(t)!=="body"||Se(n))&&(r=Pe(t)),D(t)){const l=ae(t,!0);a.x=l.x+t.clientLeft,a.y=l.y+t.clientTop}else n&&(a.x=bt(n));return{x:s.left+r.scrollLeft-a.x,y:s.top+r.scrollTop-a.y,width:s.width,height:s.height}}const Po={getClippingRect:xo,convertOffsetParentRelativeRectToViewportRelativeRect:wo,isElement:q,getDimensions:bo,getOffsetParent:Qe,getDocumentElement:G,getScale:Q,async getElementRects(e){let{reference:t,floating:o,strategy:i}=e;const n=this.getOffsetParent||Qe,s=this.getDimensions;return{reference:So(t,await n(o),i),floating:{x:0,y:0,...await s(o)}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>R(e).direction==="rtl"},Co=(e,t,o)=>{const i=new Map,n={platform:Po,...o},s={...n.platform,_c:i};return ro(e,t,{...n,platform:s})};function St(e,t){for(const o in t)Object.prototype.hasOwnProperty.call(t,o)&&(typeof t[o]=="object"&&e[o]?St(e[o],t[o]):e[o]=t[o])}const M={disabled:!1,distance:5,skidding:0,container:"body",boundary:void 0,instantMove:!1,disposeTimeout:150,popperTriggers:[],strategy:"absolute",preventOverflow:!0,flip:!0,shift:!0,overflowPadding:0,arrowPadding:0,arrowOverflow:!0,autoHideOnMousedown:!1,themes:{tooltip:{placement:"top",triggers:["hover","focus","touch"],hideTriggers:e=>[...e,"click"],delay:{show:200,hide:0},handleResize:!1,html:!1,loadingContent:"..."},dropdown:{placement:"bottom",triggers:["click"],delay:0,handleResize:!0,autoHide:!0},menu:{$extend:"dropdown",triggers:["hover","focus"],popperTriggers:["hover"],delay:{show:0,hide:400}}}};function de(e,t){let o=M.themes[e]||{},i;do i=o[t],typeof i>"u"?o.$extend?o=M.themes[o.$extend]||{}:(o=null,i=M[t]):o=null;while(o);return i}function Ao(e){const t=[e];let o=M.themes[e]||{};do o.$extend&&!o.$resetCss?(t.push(o.$extend),o=M.themes[o.$extend]||{}):o=null;while(o);return t.map(i=>`v-popper--theme-${i}`)}function Je(e){const t=[e];let o=M.themes[e]||{};do o.$extend?(t.push(o.$extend),o=M.themes[o.$extend]||{}):o=null;while(o);return t}let J=!1;if(typeof window<"u"){J=!1;try{const e=Object.defineProperty({},"passive",{get(){J=!0}});window.addEventListener("test",null,e)}catch{}}let Pt=!1;typeof window<"u"&&typeof navigator<"u"&&(Pt=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream);const Ct=["auto","top","bottom","left","right"].reduce((e,t)=>e.concat([t,`${t}-start`,`${t}-end`]),[]),et={hover:"mouseenter",focus:"focus",click:"click",touch:"touchstart",pointer:"pointerdown"},tt={hover:"mouseleave",focus:"blur",click:"click",touch:"touchend",pointer:"pointerup"};function ot(e,t){const o=e.indexOf(t);o!==-1&&e.splice(o,1)}function Ne(){return new Promise(e=>requestAnimationFrame(()=>{requestAnimationFrame(e)}))}const z=[];let X=null;const it={};function nt(e){let t=it[e];return t||(t=it[e]=[]),t}let He=function(){};typeof window<"u"&&(He=window.Element);function w(e){return function(t){return de(t.theme,e)}}const ke="__floating-vue__popper",At=()=>xe({name:"VPopper",provide(){return{[ke]:{parentPopper:this}}},inject:{[ke]:{default:null}},props:{theme:{type:String,required:!0},targetNodes:{type:Function,required:!0},referenceNode:{type:Function,default:null},popperNode:{type:Function,required:!0},shown:{type:Boolean,default:!1},showGroup:{type:String,default:null},ariaId:{default:null},disabled:{type:Boolean,default:w("disabled")},positioningDisabled:{type:Boolean,default:w("positioningDisabled")},placement:{type:String,default:w("placement"),validator:e=>Ct.includes(e)},delay:{type:[String,Number,Object],default:w("delay")},distance:{type:[Number,String],default:w("distance")},skidding:{type:[Number,String],default:w("skidding")},triggers:{type:Array,default:w("triggers")},showTriggers:{type:[Array,Function],default:w("showTriggers")},hideTriggers:{type:[Array,Function],default:w("hideTriggers")},popperTriggers:{type:Array,default:w("popperTriggers")},popperShowTriggers:{type:[Array,Function],default:w("popperShowTriggers")},popperHideTriggers:{type:[Array,Function],default:w("popperHideTriggers")},container:{type:[String,Object,He,Boolean],default:w("container")},boundary:{type:[String,He],default:w("boundary")},strategy:{type:String,validator:e=>["absolute","fixed"].includes(e),default:w("strategy")},autoHide:{type:[Boolean,Function],default:w("autoHide")},handleResize:{type:Boolean,default:w("handleResize")},instantMove:{type:Boolean,default:w("instantMove")},eagerMount:{type:Boolean,default:w("eagerMount")},popperClass:{type:[String,Array,Object],default:w("popperClass")},computeTransformOrigin:{type:Boolean,default:w("computeTransformOrigin")},autoMinSize:{type:Boolean,default:w("autoMinSize")},autoSize:{type:[Boolean,String],default:w("autoSize")},autoMaxSize:{type:Boolean,default:w("autoMaxSize")},autoBoundaryMaxSize:{type:Boolean,default:w("autoBoundaryMaxSize")},preventOverflow:{type:Boolean,default:w("preventOverflow")},overflowPadding:{type:[Number,String],default:w("overflowPadding")},arrowPadding:{type:[Number,String],default:w("arrowPadding")},arrowOverflow:{type:Boolean,default:w("arrowOverflow")},flip:{type:Boolean,default:w("flip")},shift:{type:Boolean,default:w("shift")},shiftCrossAxis:{type:Boolean,default:w("shiftCrossAxis")},noAutoFocus:{type:Boolean,default:w("noAutoFocus")},disposeTimeout:{type:Number,default:w("disposeTimeout")}},emits:{show:()=>!0,hide:()=>!0,"update:shown":e=>!0,"apply-show":()=>!0,"apply-hide":()=>!0,"close-group":()=>!0,"close-directive":()=>!0,"auto-hide":()=>!0,resize:()=>!0},data(){return{isShown:!1,isMounted:!1,skipTransition:!1,classes:{showFrom:!1,showTo:!1,hideFrom:!1,hideTo:!0},result:{x:0,y:0,placement:"",strategy:this.strategy,arrow:{x:0,y:0,centerOffset:0},transformOrigin:null},randomId:`popper_${[Math.random(),Date.now()].map(e=>e.toString(36).substring(2,10)).join("_")}`,shownChildren:new Set,lastAutoHide:!0,pendingHide:!1,containsGlobalTarget:!1,isDisposed:!0,mouseDownContains:!1}},computed:{popperId(){return this.ariaId!=null?this.ariaId:this.randomId},shouldMountContent(){return this.eagerMount||this.isMounted},slotData(){return{popperId:this.popperId,isShown:this.isShown,shouldMountContent:this.shouldMountContent,skipTransition:this.skipTransition,autoHide:typeof this.autoHide=="function"?this.lastAutoHide:this.autoHide,show:this.show,hide:this.hide,handleResize:this.handleResize,onResize:this.onResize,classes:{...this.classes,popperClass:this.popperClass},result:this.positioningDisabled?null:this.result,attrs:this.$attrs}},parentPopper(){var e;return(e=this[ke])==null?void 0:e.parentPopper},hasPopperShowTriggerHover(){var e,t;return((e=this.popperTriggers)==null?void 0:e.includes("hover"))||((t=this.popperShowTriggers)==null?void 0:t.includes("hover"))}},watch:{shown:"$_autoShowHide",disabled(e){e?this.dispose():this.init()},async container(){this.isShown&&(this.$_ensureTeleport(),await this.$_computePosition())},triggers:{handler:"$_refreshListeners",deep:!0},positioningDisabled:"$_refreshListeners",...["placement","distance","skidding","boundary","strategy","overflowPadding","arrowPadding","preventOverflow","shift","shiftCrossAxis","flip"].reduce((e,t)=>(e[t]="$_computePosition",e),{})},created(){this.autoMinSize&&console.warn('[floating-vue] `autoMinSize` option is deprecated. Use `autoSize="min"` instead.'),this.autoMaxSize&&console.warn("[floating-vue] `autoMaxSize` option is deprecated. Use `autoBoundaryMaxSize` instead.")},mounted(){this.init(),this.$_detachPopperNode()},activated(){this.$_autoShowHide()},deactivated(){this.hide()},beforeUnmount(){this.dispose()},methods:{show({event:e=null,skipDelay:t=!1,force:o=!1}={}){var i,n;(i=this.parentPopper)!=null&&i.lockedChild&&this.parentPopper.lockedChild!==this||(this.pendingHide=!1,(o||!this.disabled)&&(((n=this.parentPopper)==null?void 0:n.lockedChild)===this&&(this.parentPopper.lockedChild=null),this.$_scheduleShow(e,t),this.$emit("show"),this.$_showFrameLocked=!0,requestAnimationFrame(()=>{this.$_showFrameLocked=!1})),this.$emit("update:shown",!0))},hide({event:e=null,skipDelay:t=!1}={}){var o;if(!this.$_hideInProgress){if(this.shownChildren.size>0){this.pendingHide=!0;return}if(this.hasPopperShowTriggerHover&&this.$_isAimingPopper()){this.parentPopper&&(this.parentPopper.lockedChild=this,clearTimeout(this.parentPopper.lockedChildTimer),this.parentPopper.lockedChildTimer=setTimeout(()=>{this.parentPopper.lockedChild===this&&(this.parentPopper.lockedChild.hide({skipDelay:t}),this.parentPopper.lockedChild=null)},1e3));return}((o=this.parentPopper)==null?void 0:o.lockedChild)===this&&(this.parentPopper.lockedChild=null),this.pendingHide=!1,this.$_scheduleHide(e,t),this.$emit("hide"),this.$emit("update:shown",!1)}},init(){var e;this.isDisposed&&(this.isDisposed=!1,this.isMounted=!1,this.$_events=[],this.$_preventShow=!1,this.$_referenceNode=((e=this.referenceNode)==null?void 0:e.call(this))??this.$el,this.$_targetNodes=this.targetNodes().filter(t=>t.nodeType===t.ELEMENT_NODE),this.$_popperNode=this.popperNode(),this.$_innerNode=this.$_popperNode.querySelector(".v-popper__inner"),this.$_arrowNode=this.$_popperNode.querySelector(".v-popper__arrow-container"),this.$_swapTargetAttrs("title","data-original-title"),this.$_detachPopperNode(),this.triggers.length&&this.$_addEventListeners(),this.shown&&this.show())},dispose(){this.isDisposed||(this.isDisposed=!0,this.$_removeEventListeners(),this.hide({skipDelay:!0}),this.$_detachPopperNode(),this.isMounted=!1,this.isShown=!1,this.$_updateParentShownChildren(!1),this.$_swapTargetAttrs("data-original-title","title"))},async onResize(){this.isShown&&(await this.$_computePosition(),this.$emit("resize"))},async $_computePosition(){if(this.isDisposed||this.positioningDisabled)return;const e={strategy:this.strategy,middleware:[]};(this.distance||this.skidding)&&e.middleware.push(uo({mainAxis:this.distance,crossAxis:this.skidding}));const t=this.placement.startsWith("auto");if(t?e.middleware.push(po({alignment:this.placement.split("-")[1]??""})):e.placement=this.placement,this.preventOverflow&&(this.shift&&e.middleware.push(fo({padding:this.overflowPadding,boundary:this.boundary,crossAxis:this.shiftCrossAxis})),!t&&this.flip&&e.middleware.push(co({padding:this.overflowPadding,boundary:this.boundary}))),e.middleware.push(ao({element:this.$_arrowNode,padding:this.arrowPadding})),this.arrowOverflow&&e.middleware.push({name:"arrowOverflow",fn:({placement:i,rects:n,middlewareData:s})=>{let r;const{centerOffset:a}=s.arrow;return i.startsWith("top")||i.startsWith("bottom")?r=Math.abs(a)>n.reference.width/2:r=Math.abs(a)>n.reference.height/2,{data:{overflow:r}}}}),this.autoMinSize||this.autoSize){const i=this.autoSize?this.autoSize:this.autoMinSize?"min":null;e.middleware.push({name:"autoSize",fn:({rects:n,placement:s,middlewareData:r})=>{var a;if((a=r.autoSize)!=null&&a.skip)return{};let l,d;return s.startsWith("top")||s.startsWith("bottom")?l=n.reference.width:d=n.reference.height,this.$_innerNode.style[i==="min"?"minWidth":i==="max"?"maxWidth":"width"]=l!=null?`${l}px`:null,this.$_innerNode.style[i==="min"?"minHeight":i==="max"?"maxHeight":"height"]=d!=null?`${d}px`:null,{data:{skip:!0},reset:{rects:!0}}}})}(this.autoMaxSize||this.autoBoundaryMaxSize)&&(this.$_innerNode.style.maxWidth=null,this.$_innerNode.style.maxHeight=null,e.middleware.push(mo({boundary:this.boundary,padding:this.overflowPadding,apply:({availableWidth:i,availableHeight:n})=>{this.$_innerNode.style.maxWidth=i!=null?`${i}px`:null,this.$_innerNode.style.maxHeight=n!=null?`${n}px`:null}})));const o=await Co(this.$_referenceNode,this.$_popperNode,e);Object.assign(this.result,{x:o.x,y:o.y,placement:o.placement,strategy:o.strategy,arrow:{...o.middlewareData.arrow,...o.middlewareData.arrowOverflow}})},$_scheduleShow(e,t=!1){if(this.$_updateParentShownChildren(!0),this.$_hideInProgress=!1,clearTimeout(this.$_scheduleTimer),X&&this.instantMove&&X.instantMove&&X!==this.parentPopper){X.$_applyHide(!0),this.$_applyShow(!0);return}t?this.$_applyShow():this.$_scheduleTimer=setTimeout(this.$_applyShow.bind(this),this.$_computeDelay("show"))},$_scheduleHide(e,t=!1){if(this.shownChildren.size>0){this.pendingHide=!0;return}this.$_updateParentShownChildren(!1),this.$_hideInProgress=!0,clearTimeout(this.$_scheduleTimer),this.isShown&&(X=this),t?this.$_applyHide():this.$_scheduleTimer=setTimeout(this.$_applyHide.bind(this),this.$_computeDelay("hide"))},$_computeDelay(e){const t=this.delay;return parseInt(t&&t[e]||t||0)},async $_applyShow(e=!1){clearTimeout(this.$_disposeTimer),clearTimeout(this.$_scheduleTimer),this.skipTransition=e,!this.isShown&&(this.$_ensureTeleport(),await Ne(),await this.$_computePosition(),await this.$_applyShowEffect(),this.positioningDisabled||this.$_registerEventListeners([...$e(this.$_referenceNode),...$e(this.$_popperNode)],"scroll",()=>{this.$_computePosition()}))},async $_applyShowEffect(){if(this.$_hideInProgress)return;if(this.computeTransformOrigin){const t=this.$_referenceNode.getBoundingClientRect(),o=this.$_popperNode.querySelector(".v-popper__wrapper"),i=o.parentNode.getBoundingClientRect(),n=t.x+t.width/2-(i.left+o.offsetLeft),s=t.y+t.height/2-(i.top+o.offsetTop);this.result.transformOrigin=`${n}px ${s}px`}this.isShown=!0,this.$_applyAttrsToTarget({"aria-describedby":this.popperId,"data-popper-shown":""});const e=this.showGroup;if(e){let t;for(let o=0;o0){this.pendingHide=!0,this.$_hideInProgress=!1;return}if(clearTimeout(this.$_scheduleTimer),!this.isShown)return;this.skipTransition=e,ot(z,this),z.length===0&&document.body.classList.remove("v-popper--some-open");for(const o of Je(this.theme)){const i=nt(o);ot(i,this),i.length===0&&document.body.classList.remove(`v-popper--some-open--${o}`)}X===this&&(X=null),this.isShown=!1,this.$_applyAttrsToTarget({"aria-describedby":void 0,"data-popper-shown":void 0}),clearTimeout(this.$_disposeTimer);const t=this.disposeTimeout;t!==null&&(this.$_disposeTimer=setTimeout(()=>{this.$_popperNode&&(this.$_detachPopperNode(),this.isMounted=!1)},t)),this.$_removeEventListeners("scroll"),this.$emit("apply-hide"),this.classes.showFrom=!1,this.classes.showTo=!1,this.classes.hideFrom=!0,this.classes.hideTo=!1,await Ne(),this.classes.hideFrom=!1,this.classes.hideTo=!0},$_autoShowHide(){this.shown?this.show():this.hide()},$_ensureTeleport(){if(this.isDisposed)return;let e=this.container;if(typeof e=="string"?e=window.document.querySelector(e):e===!1&&(e=this.$_targetNodes[0].parentNode),!e)throw new Error("No container for popover: "+this.container);e.appendChild(this.$_popperNode),this.isMounted=!0},$_addEventListeners(){const e=o=>{this.isShown&&!this.$_hideInProgress||(o.usedByTooltip=!0,!this.$_preventShow&&this.show({event:o}))};this.$_registerTriggerListeners(this.$_targetNodes,et,this.triggers,this.showTriggers,e),this.$_registerTriggerListeners([this.$_popperNode],et,this.popperTriggers,this.popperShowTriggers,e);const t=o=>{o.usedByTooltip||this.hide({event:o})};this.$_registerTriggerListeners(this.$_targetNodes,tt,this.triggers,this.hideTriggers,t),this.$_registerTriggerListeners([this.$_popperNode],tt,this.popperTriggers,this.popperHideTriggers,t)},$_registerEventListeners(e,t,o){this.$_events.push({targetNodes:e,eventType:t,handler:o}),e.forEach(i=>i.addEventListener(t,o,J?{passive:!0}:void 0))},$_registerTriggerListeners(e,t,o,i,n){let s=o;i!=null&&(s=typeof i=="function"?i(s):i),s.forEach(r=>{const a=t[r];a&&this.$_registerEventListeners(e,a,n)})},$_removeEventListeners(e){const t=[];this.$_events.forEach(o=>{const{targetNodes:i,eventType:n,handler:s}=o;!e||e===n?i.forEach(r=>r.removeEventListener(n,s)):t.push(o)}),this.$_events=t},$_refreshListeners(){this.isDisposed||(this.$_removeEventListeners(),this.$_addEventListeners())},$_handleGlobalClose(e,t=!1){this.$_showFrameLocked||(this.hide({event:e}),e.closePopover?this.$emit("close-directive"):this.$emit("auto-hide"),t&&(this.$_preventShow=!0,setTimeout(()=>{this.$_preventShow=!1},300)))},$_detachPopperNode(){this.$_popperNode.parentNode&&this.$_popperNode.parentNode.removeChild(this.$_popperNode)},$_swapTargetAttrs(e,t){for(const o of this.$_targetNodes){const i=o.getAttribute(e);i&&(o.removeAttribute(e),o.setAttribute(t,i))}},$_applyAttrsToTarget(e){for(const t of this.$_targetNodes)for(const o in e){const i=e[o];i==null?t.removeAttribute(o):t.setAttribute(o,i)}},$_updateParentShownChildren(e){let t=this.parentPopper;for(;t;)e?t.shownChildren.add(this.randomId):(t.shownChildren.delete(this.randomId),t.pendingHide&&t.hide()),t=t.parentPopper},$_isAimingPopper(){const e=this.$_referenceNode.getBoundingClientRect();if(oe>=e.left&&oe<=e.right&&ie>=e.top&&ie<=e.bottom){const t=this.$_popperNode.getBoundingClientRect(),o=oe-V,i=ie-W,n=t.left+t.width/2-V+(t.top+t.height/2)-W+t.width+t.height,s=V+o*n,r=W+i*n;return ue(V,W,s,r,t.left,t.top,t.left,t.bottom)||ue(V,W,s,r,t.left,t.top,t.right,t.top)||ue(V,W,s,r,t.right,t.top,t.right,t.bottom)||ue(V,W,s,r,t.left,t.bottom,t.right,t.bottom)}return!1}},render(){return this.$slots.default(this.slotData)}});if(typeof document<"u"&&typeof window<"u"){if(Pt){const e=J?{passive:!0,capture:!0}:!0;document.addEventListener("touchstart",t=>st(t,!0),e),document.addEventListener("touchend",t=>rt(t,!0),e)}else window.addEventListener("mousedown",e=>st(e,!1),!0),window.addEventListener("click",e=>rt(e,!1),!0);window.addEventListener("resize",Nt)}function st(e,t){if(M.autoHideOnMousedown)Ot(e,t);else for(let o=0;o=0;i--){const n=z[i];try{const s=n.containsGlobalTarget=n.mouseDownContains||n.popperNode().contains(e.target);n.pendingHide=!1,requestAnimationFrame(()=>{if(n.pendingHide=!1,!o[n.randomId]&&at(n,s,e)){if(n.$_handleGlobalClose(e,t),!e.closeAllPopover&&e.closePopover&&s){let a=n.parentPopper;for(;a;)o[a.randomId]=!0,a=a.parentPopper;return}let r=n.parentPopper;for(;r&&at(r,r.containsGlobalTarget,e);)r.$_handleGlobalClose(e,t),r=r.parentPopper}})}catch{}}}function at(e,t,o){return o.closeAllPopover||o.closePopover&&t||Oo(e,o)&&!t}function Oo(e,t){if(typeof e.autoHide=="function"){const o=e.autoHide(t);return e.lastAutoHide=o,o}return e.autoHide}function Nt(){for(let e=0;e{V=oe,W=ie,oe=e.clientX,ie=e.clientY},J?{passive:!0}:void 0);function ue(e,t,o,i,n,s,r,a){const l=((r-n)*(t-s)-(a-s)*(e-n))/((a-s)*(o-e)-(r-n)*(i-t)),d=((o-e)*(t-s)-(i-t)*(e-n))/((a-s)*(o-e)-(r-n)*(i-t));return l>=0&&l<=1&&d>=0&&d<=1}const No={extends:At()},Ce=(e,t)=>{const o=e.__vccOpts||e;for(const[i,n]of t)o[i]=n;return o};function ko(e,t,o,i,n,s){return I(),se("div",{ref:"reference",class:Re(["v-popper",{"v-popper--shown":e.slotData.isShown}])},[me(e.$slots,"default",Xt(Ut(e.slotData)))],2)}const zo=Ce(No,[["render",ko]]);function Lo(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);var o=e.indexOf("Trident/");if(o>0){var i=e.indexOf("rv:");return parseInt(e.substring(i+3,e.indexOf(".",i)),10)}var n=e.indexOf("Edge/");return n>0?parseInt(e.substring(n+5,e.indexOf(".",n)),10):-1}let fe;function Ee(){Ee.init||(Ee.init=!0,fe=Lo()!==-1)}var Ae={name:"ResizeObserver",props:{emitOnMount:{type:Boolean,default:!1},ignoreWidth:{type:Boolean,default:!1},ignoreHeight:{type:Boolean,default:!1}},emits:["notify"],mounted(){Ee(),Vt(()=>{this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitOnMount&&this.emitSize()});const e=document.createElement("object");this._resizeObject=e,e.setAttribute("aria-hidden","true"),e.setAttribute("tabindex",-1),e.onload=this.addResizeHandlers,e.type="text/html",fe&&this.$el.appendChild(e),e.data="about:blank",fe||this.$el.appendChild(e)},beforeUnmount(){this.removeResizeHandlers()},methods:{compareAndNotify(){(!this.ignoreWidth&&this._w!==this.$el.offsetWidth||!this.ignoreHeight&&this._h!==this.$el.offsetHeight)&&(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitSize())},emitSize(){this.$emit("notify",{width:this._w,height:this._h})},addResizeHandlers(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers(){this._resizeObject&&this._resizeObject.onload&&(!fe&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),this.$el.removeChild(this._resizeObject),this._resizeObject.onload=null,this._resizeObject=null)}}};const Mo=qt();Wt("data-v-b329ee4c");const Ho={class:"resize-observer",tabindex:"-1"};jt();const Eo=Mo((e,t,o,i,n,s)=>(I(),be("div",Ho)));Ae.render=Eo;Ae.__scopeId="data-v-b329ee4c";Ae.__file="src/components/ResizeObserver.vue";const kt=(e="theme")=>({computed:{themeClass(){return Ao(this[e])}}}),Bo=xe({name:"VPopperContent",components:{ResizeObserver:Ae},mixins:[kt()],props:{popperId:String,theme:String,shown:Boolean,mounted:Boolean,skipTransition:Boolean,autoHide:Boolean,handleResize:Boolean,classes:Object,result:Object},emits:["hide","resize"],methods:{toPx(e){return e!=null&&!isNaN(e)?`${e}px`:null}}}),Ro=["id","aria-hidden","tabindex","data-popper-placement"],Do={ref:"inner",class:"v-popper__inner"},Fo=K("div",{class:"v-popper__arrow-outer"},null,-1),Io=K("div",{class:"v-popper__arrow-inner"},null,-1),Vo=[Fo,Io];function Wo(e,t,o,i,n,s){const r=ne("ResizeObserver");return I(),se("div",{id:e.popperId,ref:"popover",class:Re(["v-popper__popper",[e.themeClass,e.classes.popperClass,{"v-popper__popper--shown":e.shown,"v-popper__popper--hidden":!e.shown,"v-popper__popper--show-from":e.classes.showFrom,"v-popper__popper--show-to":e.classes.showTo,"v-popper__popper--hide-from":e.classes.hideFrom,"v-popper__popper--hide-to":e.classes.hideTo,"v-popper__popper--skip-transition":e.skipTransition,"v-popper__popper--arrow-overflow":e.result&&e.result.arrow.overflow,"v-popper__popper--no-positioning":!e.result}]]),style:Oe(e.result?{position:e.result.strategy,transform:`translate3d(${Math.round(e.result.x)}px,${Math.round(e.result.y)}px,0)`}:void 0),"aria-hidden":e.shown?"false":"true",tabindex:e.autoHide?0:void 0,"data-popper-placement":e.result?e.result.placement:void 0,onKeyup:t[2]||(t[2]=Yt(a=>e.autoHide&&e.$emit("hide"),["esc"]))},[K("div",{class:"v-popper__backdrop",onClick:t[0]||(t[0]=a=>e.autoHide&&e.$emit("hide"))}),K("div",{class:"v-popper__wrapper",style:Oe(e.result?{transformOrigin:e.result.transformOrigin}:void 0)},[K("div",Do,[e.mounted?(I(),se(Gt,{key:0},[K("div",null,[me(e.$slots,"default")]),e.handleResize?(I(),be(r,{key:0,onNotify:t[1]||(t[1]=a=>e.$emit("resize",a))})):je("",!0)],64)):je("",!0)],512),K("div",{ref:"arrow",class:"v-popper__arrow-container",style:Oe(e.result?{left:e.toPx(e.result.arrow.x),top:e.toPx(e.result.arrow.y)}:void 0)},Vo,4)],4)],46,Ro)}const zt=Ce(Bo,[["render",Wo]]),Lt={methods:{show(...e){return this.$refs.popper.show(...e)},hide(...e){return this.$refs.popper.hide(...e)},dispose(...e){return this.$refs.popper.dispose(...e)},onResize(...e){return this.$refs.popper.onResize(...e)}}};let Be=function(){};typeof window<"u"&&(Be=window.Element);const jo=xe({name:"VPopperWrapper",components:{Popper:zo,PopperContent:zt},mixins:[Lt,kt("finalTheme")],props:{theme:{type:String,default:null},referenceNode:{type:Function,default:null},shown:{type:Boolean,default:!1},showGroup:{type:String,default:null},ariaId:{default:null},disabled:{type:Boolean,default:void 0},positioningDisabled:{type:Boolean,default:void 0},placement:{type:String,default:void 0},delay:{type:[String,Number,Object],default:void 0},distance:{type:[Number,String],default:void 0},skidding:{type:[Number,String],default:void 0},triggers:{type:Array,default:void 0},showTriggers:{type:[Array,Function],default:void 0},hideTriggers:{type:[Array,Function],default:void 0},popperTriggers:{type:Array,default:void 0},popperShowTriggers:{type:[Array,Function],default:void 0},popperHideTriggers:{type:[Array,Function],default:void 0},container:{type:[String,Object,Be,Boolean],default:void 0},boundary:{type:[String,Be],default:void 0},strategy:{type:String,default:void 0},autoHide:{type:[Boolean,Function],default:void 0},handleResize:{type:Boolean,default:void 0},instantMove:{type:Boolean,default:void 0},eagerMount:{type:Boolean,default:void 0},popperClass:{type:[String,Array,Object],default:void 0},computeTransformOrigin:{type:Boolean,default:void 0},autoMinSize:{type:Boolean,default:void 0},autoSize:{type:[Boolean,String],default:void 0},autoMaxSize:{type:Boolean,default:void 0},autoBoundaryMaxSize:{type:Boolean,default:void 0},preventOverflow:{type:Boolean,default:void 0},overflowPadding:{type:[Number,String],default:void 0},arrowPadding:{type:[Number,String],default:void 0},arrowOverflow:{type:Boolean,default:void 0},flip:{type:Boolean,default:void 0},shift:{type:Boolean,default:void 0},shiftCrossAxis:{type:Boolean,default:void 0},noAutoFocus:{type:Boolean,default:void 0},disposeTimeout:{type:Number,default:void 0}},emits:{show:()=>!0,hide:()=>!0,"update:shown":e=>!0,"apply-show":()=>!0,"apply-hide":()=>!0,"close-group":()=>!0,"close-directive":()=>!0,"auto-hide":()=>!0,resize:()=>!0},computed:{finalTheme(){return this.theme??this.$options.vPopperTheme}},methods:{getTargetNodes(){return Array.from(this.$el.children).filter(e=>e!==this.$refs.popperContent.$el)}}});function qo(e,t,o,i,n,s){const r=ne("PopperContent"),a=ne("Popper");return I(),be(a,ut({ref:"popper"},e.$props,{theme:e.finalTheme,"target-nodes":e.getTargetNodes,"popper-node":()=>e.$refs.popperContent.$el,class:[e.themeClass],onShow:t[0]||(t[0]=()=>e.$emit("show")),onHide:t[1]||(t[1]=()=>e.$emit("hide")),"onUpdate:shown":t[2]||(t[2]=l=>e.$emit("update:shown",l)),onApplyShow:t[3]||(t[3]=()=>e.$emit("apply-show")),onApplyHide:t[4]||(t[4]=()=>e.$emit("apply-hide")),onCloseGroup:t[5]||(t[5]=()=>e.$emit("close-group")),onCloseDirective:t[6]||(t[6]=()=>e.$emit("close-directive")),onAutoHide:t[7]||(t[7]=()=>e.$emit("auto-hide")),onResize:t[8]||(t[8]=()=>e.$emit("resize"))}),{default:ge(({popperId:l,isShown:d,shouldMountContent:f,skipTransition:c,autoHide:u,show:p,hide:h,handleResize:v,onResize:y,classes:m,result:g})=>[me(e.$slots,"default",{shown:d,show:p,hide:h}),ht(r,{ref:"popperContent","popper-id":l,theme:e.finalTheme,shown:d,mounted:f,"skip-transition":c,"auto-hide":u,"handle-resize":v,classes:m,result:g,onHide:h,onResize:y},{default:ge(()=>[me(e.$slots,"popper",{shown:d,hide:h})]),_:2},1032,["popper-id","theme","shown","mounted","skip-transition","auto-hide","handle-resize","classes","result","onHide","onResize"])]),_:3},16,["theme","target-nodes","popper-node","class"])}const We=Ce(jo,[["render",qo]]),Go={...We,name:"VDropdown",vPopperTheme:"dropdown"},Mt={...We,name:"VMenu",vPopperTheme:"menu"},Yo={...We,name:"VTooltip",vPopperTheme:"tooltip"},Xo=xe({name:"VTooltipDirective",components:{Popper:At(),PopperContent:zt},mixins:[Lt],inheritAttrs:!1,props:{theme:{type:String,default:"tooltip"},html:{type:Boolean,default:e=>de(e.theme,"html")},content:{type:[String,Number,Function],default:null},loadingContent:{type:String,default:e=>de(e.theme,"loadingContent")},targetNodes:{type:Function,required:!0}},data(){return{asyncContent:null}},computed:{isContentAsync(){return typeof this.content=="function"},loading(){return this.isContentAsync&&this.asyncContent==null},finalContent(){return this.isContentAsync?this.loading?this.loadingContent:this.asyncContent:this.content}},watch:{content:{handler(){this.fetchContent(!0)},immediate:!0},async finalContent(){await this.$nextTick(),this.$refs.popper.onResize()}},created(){this.$_fetchId=0},methods:{fetchContent(e){if(typeof this.content=="function"&&this.$_isShown&&(e||!this.$_loading&&this.asyncContent==null)){this.asyncContent=null,this.$_loading=!0;const t=++this.$_fetchId,o=this.content(this);o.then?o.then(i=>this.onResult(t,i)):this.onResult(t,o)}},onResult(e,t){e===this.$_fetchId&&(this.$_loading=!1,this.asyncContent=t)},onShow(){this.$_isShown=!0,this.fetchContent()},onHide(){this.$_isShown=!1}}}),Uo=["innerHTML"],Ko=["textContent"];function Zo(e,t,o,i,n,s){const r=ne("PopperContent"),a=ne("Popper");return I(),be(a,ut({ref:"popper"},e.$attrs,{theme:e.theme,"target-nodes":e.targetNodes,"popper-node":()=>e.$refs.popperContent.$el,onApplyShow:e.onShow,onApplyHide:e.onHide}),{default:ge(({popperId:l,isShown:d,shouldMountContent:f,skipTransition:c,autoHide:u,hide:p,handleResize:h,onResize:v,classes:y,result:m})=>[ht(r,{ref:"popperContent",class:Re({"v-popper--tooltip-loading":e.loading}),"popper-id":l,theme:e.theme,shown:d,mounted:f,"skip-transition":c,"auto-hide":u,"handle-resize":h,classes:y,result:m,onHide:p,onResize:v},{default:ge(()=>[e.html?(I(),se("div",{key:0,innerHTML:e.finalContent},null,8,Uo)):(I(),se("div",{key:1,textContent:Qt(e.finalContent)},null,8,Ko))]),_:2},1032,["class","popper-id","theme","shown","mounted","skip-transition","auto-hide","handle-resize","classes","result","onHide","onResize"])]),_:1},16,["theme","target-nodes","popper-node","onApplyShow","onApplyHide"])}const Qo=Ce(Xo,[["render",Zo]]),Ht="v-popper--has-tooltip";function Jo(e,t){let o=e.placement;if(!o&&t)for(const i of Ct)t[i]&&(o=i);return o||(o=de(e.theme||"tooltip","placement")),o}function Et(e,t,o){let i;const n=typeof t;return n==="string"?i={content:t}:t&&n==="object"?i=t:i={content:!1},i.placement=Jo(i,o),i.targetNodes=()=>[e],i.referenceNode=()=>e,i}let ze,pe,ei=0;function ti(){if(ze)return;pe=Le([]),ze=Kt({name:"VTooltipDirectiveApp",setup(){return{directives:pe}},render(){return this.directives.map(t=>Zt(Qo,{...t.options,shown:t.shown||t.options.shown,key:t.id}))},devtools:{hide:!0}});const e=document.createElement("div");document.body.appendChild(e),ze.mount(e)}function oi(e,t,o){ti();const i=Le(Et(e,t,o)),n=Le(!1),s={id:ei++,options:i,shown:n};return pe.value.push(s),e.classList&&e.classList.add(Ht),e.$_popper={options:i,item:s,show(){n.value=!0},hide(){n.value=!1}}}function Bt(e){if(e.$_popper){const t=pe.value.indexOf(e.$_popper.item);t!==-1&&pe.value.splice(t,1),delete e.$_popper,delete e.$_popperOldShown,delete e.$_popperMountTarget}e.classList&&e.classList.remove(Ht)}function lt(e,{value:t,modifiers:o}){const i=Et(e,t,o);if(!i.content||de(i.theme||"tooltip","disabled"))Bt(e);else{let n;e.$_popper?(n=e.$_popper,n.options.value=i):n=oi(e,t,o),typeof t.shown<"u"&&t.shown!==e.$_popperOldShown&&(e.$_popperOldShown=t.shown,t.shown?n.show():n.hide())}}const ii={beforeMount:lt,updated:lt,beforeUnmount(e){Bt(e)}};function dt(e){e.addEventListener("mousedown",_e),e.addEventListener("click",_e),e.addEventListener("touchstart",Rt,J?{passive:!0}:!1)}function pt(e){e.removeEventListener("mousedown",_e),e.removeEventListener("click",_e),e.removeEventListener("touchstart",Rt),e.removeEventListener("touchend",Dt),e.removeEventListener("touchcancel",Ft)}function _e(e){const t=e.currentTarget;e.closePopover=!t.$_vclosepopover_touch,e.closeAllPopover=t.$_closePopoverModifiers&&!!t.$_closePopoverModifiers.all}function Rt(e){if(e.changedTouches.length===1){const t=e.currentTarget;t.$_vclosepopover_touch=!0;const o=e.changedTouches[0];t.$_vclosepopover_touchPoint=o,t.addEventListener("touchend",Dt),t.addEventListener("touchcancel",Ft)}}function Dt(e){const t=e.currentTarget;if(t.$_vclosepopover_touch=!1,e.changedTouches.length===1){const o=e.changedTouches[0],i=t.$_vclosepopover_touchPoint;e.closePopover=Math.abs(o.screenY-i.screenY)<20&&Math.abs(o.screenX-i.screenX)<20,e.closeAllPopover=t.$_closePopoverModifiers&&!!t.$_closePopoverModifiers.all}}function Ft(e){const t=e.currentTarget;t.$_vclosepopover_touch=!1}const ni={beforeMount(e,{value:t,modifiers:o}){e.$_closePopoverModifiers=o,(typeof t>"u"||t)&&dt(e)},updated(e,{value:t,oldValue:o,modifiers:i}){e.$_closePopoverModifiers=i,t!==o&&(typeof t>"u"||t?dt(e):pt(e))},beforeUnmount(e){pt(e)}},li=Mt;function si(e,t={}){e.$_vTooltipInstalled||(e.$_vTooltipInstalled=!0,St(M,t),e.directive("tooltip",ii),e.directive("close-popper",ni),e.component("VTooltip",Yo),e.component("VDropdown",Go),e.component("VMenu",Mt))}const ri={version:"5.2.2",install:si,options:M},ct=typeof navigator<"u"&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),di={install:(e,t={})=>{typeof window<"u"&&window.addEventListener("click",o=>{o.composedPath().some(n=>{var s,r,a,l;return((r=(s=n==null?void 0:n.classList)==null?void 0:s.contains)==null?void 0:r.call(s,"vp-code-group"))||((l=(a=n==null?void 0:n.classList)==null?void 0:a.contains)==null?void 0:l.call(a,"tabs"))})&&Nt()},{passive:!0}),e.use(ri,{...t,themes:{twoslash:{$extend:"dropdown",triggers:ct?["touch"]:["hover","touch"],popperTriggers:ct?["touch"]:["hover","touch"],placement:"bottom-start",overflowPadding:10,delay:0,handleResize:!1,autoHide:!0,instantMove:!0,flip:!1,arrowPadding:8,autoBoundaryMaxSize:!0},"twoslash-query":{$extend:"twoslash",triggers:["click"],popperTriggers:["click"],autoHide:!1},"twoslash-completion":{$extend:"twoslash-query",triggers:["click"],popperTriggers:["click"],autoHide:!1,distance:0,arrowOverflow:!0},...t.theme}})}};export{li as L,di as T}; diff --git a/06-scalable/assets/modules/unplugin-icons-DdL09wdV.js b/06-scalable/assets/modules/unplugin-icons-DdL09wdV.js new file mode 100644 index 0000000..34c0f8e --- /dev/null +++ b/06-scalable/assets/modules/unplugin-icons-DdL09wdV.js @@ -0,0 +1 @@ +import{o as e,b as o,e as n}from"./vue-CoY6Ph6S.js";const c={class:"slidev-icon",viewBox:"0 0 256 256",width:"1.2em",height:"1.2em"},_=n("path",{fill:"currentColor",d:"M200 32h-36.26a47.92 47.92 0 0 0-71.48 0H56a16 16 0 0 0-16 16v168a16 16 0 0 0 16 16h144a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16m-72 0a32 32 0 0 1 32 32H96a32 32 0 0 1 32-32m72 184H56V48h26.75A47.93 47.93 0 0 0 80 64v8a8 8 0 0 0 8 8h80a8 8 0 0 0 8-8v-8a47.93 47.93 0 0 0-2.75-16H200Z"},null,-1),i=[_];function l(t,s){return e(),o("svg",c,[...i])}const nn={name:"ph-clipboard",render:l},h={class:"slidev-icon",viewBox:"0 0 256 256",width:"1.2em",height:"1.2em"},r=n("path",{fill:"currentColor",d:"M173.66 98.34a8 8 0 0 1 0 11.32l-56 56a8 8 0 0 1-11.32 0l-24-24a8 8 0 0 1 11.32-11.32L112 148.69l50.34-50.35a8 8 0 0 1 11.32 0M232 128A104 104 0 1 1 128 24a104.11 104.11 0 0 1 104 104m-16 0a88 88 0 1 0-88 88a88.1 88.1 0 0 0 88-88"},null,-1),a=[r];function d(t,s){return e(),o("svg",h,[...a])}const en={name:"ph-check-circle",render:d},u={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},m=n("path",{fill:"currentColor",d:"M16 8h14v2H16zm0 14h14v2H16zm-6-8H4a2.002 2.002 0 0 1-2-2V6a2.002 2.002 0 0 1 2-2h6a2.002 2.002 0 0 1 2 2v6a2.002 2.002 0 0 1-2 2M4 6v6h6.001L10 6zm6 22H4a2.002 2.002 0 0 1-2-2v-6a2.002 2.002 0 0 1 2-2h6a2.002 2.002 0 0 1 2 2v6a2.002 2.002 0 0 1-2 2m-6-8v6h6.001L10 20z"},null,-1),v=[m];function $(t,s){return e(),o("svg",u,[...v])}const on={name:"carbon-list-boxes",render:$},p={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},g=n("path",{fill:"currentColor",d:"M17.414 16L24 9.414L22.586 8L16 14.586L9.414 8L8 9.414L14.586 16L8 22.586L9.414 24L16 17.414L22.586 24L24 22.586z"},null,-1),L=[g];function f(t,s){return e(),o("svg",p,[...L])}const tn={name:"carbon-close",render:f},w={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},x=n("path",{fill:"currentColor",d:"M30 8h-4.1c-.5-2.3-2.5-4-4.9-4s-4.4 1.7-4.9 4H2v2h14.1c.5 2.3 2.5 4 4.9 4s4.4-1.7 4.9-4H30zm-9 4c-1.7 0-3-1.3-3-3s1.3-3 3-3s3 1.3 3 3s-1.3 3-3 3M2 24h4.1c.5 2.3 2.5 4 4.9 4s4.4-1.7 4.9-4H30v-2H15.9c-.5-2.3-2.5-4-4.9-4s-4.4 1.7-4.9 4H2zm9-4c1.7 0 3 1.3 3 3s-1.3 3-3 3s-3-1.3-3-3s1.3-3 3-3"},null,-1),M=[x];function z(t,s){return e(),o("svg",w,[...M])}const sn={name:"carbon-settings-adjust",render:z},H={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},C=n("path",{fill:"currentColor",d:"M17 22v-8h-4v2h2v6h-3v2h8v-2zM16 8a1.5 1.5 0 1 0 1.5 1.5A1.5 1.5 0 0 0 16 8"},null,-1),b=n("path",{fill:"currentColor",d:"M16 30a14 14 0 1 1 14-14a14 14 0 0 1-14 14m0-26a12 12 0 1 0 12 12A12 12 0 0 0 16 4"},null,-1),B=[C,b];function V(t,s){return e(),o("svg",H,[...B])}const cn={name:"carbon-information",render:V},Z={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},A=n("path",{fill:"currentColor",d:"M26 24v4H6v-4H4v4a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2v-4zm0-10l-1.41-1.41L17 20.17V2h-2v18.17l-7.59-7.58L6 14l10 10z"},null,-1),k=[A];function j(t,s){return e(),o("svg",Z,[...k])}const _n={name:"carbon-download",render:j},y={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},q=n("path",{fill:"currentColor",d:"M26 6v4H6V6zm0-2H6a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2M10 16v10H6V16zm0-2H6a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2V16a2 2 0 0 0-2-2m16 2v10H16V16zm0-2H16a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V16a2 2 0 0 0-2-2"},null,-1),E=[q];function S(t,s){return e(),o("svg",y,[...E])}const ln={name:"carbon-template",render:S},D={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},F=n("path",{fill:"currentColor",d:"M29.415 19L27.7 17.285A2.97 2.97 0 0 0 28 16a3 3 0 1 0-3 3a2.97 2.97 0 0 0 1.286-.3L28 20.414V28h-6v-3a7.008 7.008 0 0 0-7-7H9a7.008 7.008 0 0 0-7 7v5h28v-9.586A1.988 1.988 0 0 0 29.415 19M4 25a5.006 5.006 0 0 1 5-5h6a5.006 5.006 0 0 1 5 5v3H4Z"},null,-1),G=n("path",{fill:"currentColor",d:"M12 4a5 5 0 1 1-5 5a5 5 0 0 1 5-5m0-2a7 7 0 1 0 7 7a7 7 0 0 0-7-7"},null,-1),I=[F,G];function J(t,s){return e(),o("svg",D,[...I])}const hn={name:"carbon-user-speaker",render:J},N={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},K=n("path",{fill:"currentColor",d:"M15 10h2v8h-2zm5 4h2v4h-2zm-10-2h2v6h-2z"},null,-1),O=n("path",{fill:"currentColor",d:"M25 4h-8V2h-2v2H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8v6h-4v2h10v-2h-4v-6h8a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2m0 16H7V6h18Z"},null,-1),P=[K,O];function Q(t,s){return e(),o("svg",N,[...P])}const rn={name:"carbon-presentation-file",render:Q},R={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},T=n("path",{fill:"currentColor",d:"M27.307 6.107L30 3.414L28.586 2l-2.693 2.693L24.8 3.6a1.933 1.933 0 0 0-2.8 0l-18 18V28h6.4l18-18a1.933 1.933 0 0 0 0-2.8ZM9.6 26H6v-3.6L23.4 5L27 8.6ZM9 11.586L16.586 4L18 5.414L10.414 13z"},null,-1),U=[T];function W(t,s){return e(),o("svg",R,[...U])}const an={name:"carbon-pen",render:W},X={class:"slidev-icon",viewBox:"0 0 256 256",width:"1.2em",height:"1.2em"},Y=n("g",{fill:"currentColor"},[n("path",{d:"M213.66 201L201 213.66a8 8 0 0 1-11.31 0L140 164a8 8 0 0 0-13 2.46l-19.46 44.77a8 8 0 0 1-14.85-.71L40.41 50.44a8 8 0 0 1 10-10l160.1 52.24a8 8 0 0 1 .71 14.85L166.45 127a8 8 0 0 0-2.45 13l49.67 49.67a8 8 0 0 1-.01 11.33",opacity:".2"}),n("path",{d:"m169.64 134.33l44.77-19.46a16 16 0 0 0-1.41-29.8L52.92 32.8A16 16 0 0 0 32.8 52.92L85.07 213a15.83 15.83 0 0 0 14.41 11h.78a15.83 15.83 0 0 0 14.61-9.59l19.46-44.77L184 219.31a16 16 0 0 0 22.63 0l12.68-12.68a16 16 0 0 0 0-22.63Zm-69.48 73.76l.06-.05Zm95.15-.09l-49.67-49.67a16 16 0 0 0-26 4.94l-19.42 44.65L48 48l159.87 52.21l-44.64 19.41a16 16 0 0 0-4.94 26L208 195.31Z"})],-1),n1=[Y];function e1(t,s){return e(),o("svg",X,[...n1])}const dn={name:"ph-cursor-duotone",render:e1},o1={class:"slidev-icon",viewBox:"0 0 256 256",width:"1.2em",height:"1.2em"},t1=n("path",{fill:"currentColor",d:"M219.31 192a16 16 0 0 1 0 22.63l-4.68 4.68a16 16 0 0 1-22.63 0l-55.25-55.24l-21.88 50.34a15.84 15.84 0 0 1-14.61 9.59h-.78a15.82 15.82 0 0 1-14.41-11L32.8 52.92A15.95 15.95 0 0 1 52.92 32.8L213 85.07a16 16 0 0 1 1.41 29.8l-50.34 21.88Z"},null,-1),s1=[t1];function c1(t,s){return e(),o("svg",o1,[...s1])}const un={name:"ph-cursor-fill",render:c1},_1={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},i1=n("path",{fill:"currentColor",d:"M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6M5.394 6.813L6.81 5.399l3.505 3.506L8.9 10.319zM2 15.005h5v2H2zm3.394 10.193L8.9 21.692l1.414 1.414l-3.505 3.506zM15 25.005h2v5h-2zm6.687-1.9l1.414-1.414l3.506 3.506l-1.414 1.414zm3.313-8.1h5v2h-5zm-3.313-6.101l3.506-3.506l1.414 1.414l-3.506 3.506zM15 2.005h2v5h-2z"},null,-1),l1=[i1];function h1(t,s){return e(),o("svg",_1,[...l1])}const mn={name:"carbon-sun",render:h1},r1={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},a1=n("path",{fill:"currentColor",d:"M13.503 5.414a15.076 15.076 0 0 0 11.593 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3"},null,-1),d1=[a1];function u1(t,s){return e(),o("svg",r1,[...d1])}const vn={name:"carbon-moon",render:u1},m1={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},v1=n("path",{fill:"currentColor",d:"M8 4v4H4V4Zm2-2H2v8h8Zm8 2v4h-4V4Zm2-2h-8v8h8Zm8 2v4h-4V4Zm2-2h-8v8h8ZM8 14v4H4v-4Zm2-2H2v8h8Zm8 2v4h-4v-4Zm2-2h-8v8h8Zm8 2v4h-4v-4Zm2-2h-8v8h8ZM8 24v4H4v-4Zm2-2H2v8h8Zm8 2v4h-4v-4Zm2-2h-8v8h8Zm8 2v4h-4v-4Zm2-2h-8v8h8Z"},null,-1),$1=[v1];function p1(t,s){return e(),o("svg",m1,[...$1])}const $n={name:"carbon-apps",render:p1},g1={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},L1=n("path",{fill:"currentColor",d:"m18 6l-1.43 1.393L24.15 15H4v2h20.15l-7.58 7.573L18 26l10-10z"},null,-1),f1=[L1];function w1(t,s){return e(),o("svg",g1,[...f1])}const pn={name:"carbon-arrow-right",render:w1},x1={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},M1=n("path",{fill:"currentColor",d:"m14 26l1.41-1.41L7.83 17H28v-2H7.83l7.58-7.59L14 6L4 16z"},null,-1),z1=[M1];function H1(t,s){return e(),o("svg",x1,[...z1])}const gn={name:"carbon-arrow-left",render:H1},C1={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},b1=n("path",{fill:"currentColor",d:"M20 2v2h6.586L18 12.582L19.414 14L28 5.414V12h2V2zm-6 17.416L12.592 18L4 26.586V20H2v10h10v-2H5.414z"},null,-1),B1=[b1];function V1(t,s){return e(),o("svg",C1,[...B1])}const Ln={name:"carbon-maximize",render:V1},Z1={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},A1=n("path",{fill:"currentColor",d:"M4 18v2h6.586L2 28.582L3.414 30L12 21.414V28h2V18zM30 3.416L28.592 2L20 10.586V4h-2v10h10v-2h-6.586z"},null,-1),k1=[A1];function j1(t,s){return e(),o("svg",Z1,[...k1])}const fn={name:"carbon-minimize",render:j1},y1={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},q1=n("path",{fill:"currentColor",d:"m13 24l-9-9l1.414-1.414L13 21.171L26.586 7.586L28 9z"},null,-1),E1=[q1];function S1(t,s){return e(),o("svg",y1,[...E1])}const wn={name:"carbon-checkmark",render:S1},D1={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},F1=n("path",{fill:"currentColor",d:"M12 10H6.78A11 11 0 0 1 27 16h2A13 13 0 0 0 6 7.68V4H4v8h8zm8 12h5.22A11 11 0 0 1 5 16H3a13 13 0 0 0 23 8.32V28h2v-8h-8z"},null,-1),G1=[F1];function I1(t,s){return e(),o("svg",D1,[...G1])}const xn={name:"carbon-renew",render:I1},J1={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},N1=n("path",{fill:"currentColor",d:"M16 30a14 14 0 1 1 14-14a14 14 0 0 1-14 14m0-26a12 12 0 1 0 12 12A12 12 0 0 0 16 4"},null,-1),K1=n("path",{fill:"currentColor",d:"M20.59 22L15 16.41V7h2v8.58l5 5.01z"},null,-1),O1=[N1,K1];function P1(t,s){return e(),o("svg",J1,[...O1])}const Mn={name:"carbon-time",render:P1},Q1={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},R1=n("path",{fill:"currentColor",d:"M8 12h10v2H8z"},null,-1),T1=n("path",{fill:"currentColor",d:"M21.448 20A10.856 10.856 0 0 0 24 13a11 11 0 1 0-11 11a10.856 10.856 0 0 0 7-2.552L27.586 29L29 27.586ZM13 22a9 9 0 1 1 9-9a9.01 9.01 0 0 1-9 9"},null,-1),U1=[R1,T1];function W1(t,s){return e(),o("svg",Q1,[...U1])}const zn={name:"carbon-zoom-out",render:W1},X1={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},Y1=n("path",{fill:"currentColor",d:"M18 12h-4V8h-2v4H8v2h4v4h2v-4h4z"},null,-1),n2=n("path",{fill:"currentColor",d:"M21.448 20A10.856 10.856 0 0 0 24 13a11 11 0 1 0-11 11a10.856 10.856 0 0 0 7-2.552L27.586 29L29 27.586ZM13 22a9 9 0 1 1 9-9a9.01 9.01 0 0 1-9 9"},null,-1),e2=[Y1,n2];function o2(t,s){return e(),o("svg",X1,[...e2])}const Hn={name:"carbon-zoom-in",render:o2},t2={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},s2=n("path",{fill:"currentColor",d:"M16 2C8.2 2 2 8.2 2 16s6.2 14 14 14s14-6.2 14-14S23.8 2 16 2m0 26C9.4 28 4 22.6 4 16S9.4 4 16 4s12 5.4 12 12s-5.4 12-12 12"},null,-1),c2=n("path",{fill:"currentColor",d:"M21.4 23L16 17.6L10.6 23L9 21.4l5.4-5.4L9 10.6L10.6 9l5.4 5.4L21.4 9l1.6 1.6l-5.4 5.4l5.4 5.4z"},null,-1),_2=[s2,c2];function i2(t,s){return e(),o("svg",t2,[..._2])}const Cn={name:"carbon-close-outline",render:i2},l2={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},h2=n("path",{fill:"currentColor",d:"M2 16A14 14 0 1 0 16 2A14 14 0 0 0 2 16m23.15 7.75L8.25 6.85a12 12 0 0 1 16.9 16.9M8.24 25.16a12 12 0 0 1-1.4-16.89l16.89 16.89a12 12 0 0 1-15.49 0"},null,-1),r2=[h2];function a2(t,s){return e(),o("svg",l2,[...r2])}const bn={name:"carbon-error",render:a2},d2={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},u2=n("path",{fill:"currentColor",d:"M28.59 13.31L30 11.9L20 2l-1.31 1.42l1.18 1.18l-11.49 9.72l-1.72-1.71L5.25 14l5.66 5.68L2 28.58L3.41 30l8.91-8.91L18 26.75l1.39-1.42l-1.71-1.71l9.72-11.49ZM16.26 22.2L9.8 15.74L21.29 6L26 10.71Z"},null,-1),m2=[u2];function v2(t,s){return e(),o("svg",d2,[...m2])}const Bn={name:"carbon-pin",render:v2},$2={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},p2=n("path",{fill:"currentColor",d:"M28.586 13.314L30 11.9L20 2l-1.314 1.415l1.186 1.186L8.38 14.322l-1.716-1.715L5.25 14l5.657 5.677L2 28.583L3.41 30l8.911-8.909L18 26.748l1.393-1.414l-1.716-1.716l9.724-11.49Z"},null,-1),g2=[p2];function L2(t,s){return e(),o("svg",$2,[...g2])}const Vn={name:"carbon-pin-filled",render:L2},f2={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},w2=n("path",{fill:"currentColor",d:"M12 12h2v12h-2zm6 0h2v12h-2z"},null,-1),x2=n("path",{fill:"currentColor",d:"M4 6v2h2v20a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V8h2V6zm4 22V8h16v20zm4-26h8v2h-8z"},null,-1),M2=[w2,x2];function z2(t,s){return e(),o("svg",f2,[...M2])}const Zn={name:"carbon-trash-can",render:z2},H2={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},C2=n("path",{fill:"currentColor",d:"M12 10h12.185l-3.587-3.586L22 5l6 6l-6 6l-1.402-1.415L24.182 12H12a6 6 0 0 0 0 12h8v2h-8a8 8 0 0 1 0-16"},null,-1),b2=[C2];function B2(t,s){return e(),o("svg",H2,[...b2])}const An={name:"carbon-redo",render:B2},V2={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},Z2=n("path",{fill:"currentColor",d:"M20 10H7.815l3.587-3.586L10 5l-6 6l6 6l1.402-1.415L7.818 12H20a6 6 0 0 1 0 12h-8v2h8a8 8 0 0 0 0-16"},null,-1),A2=[Z2];function k2(t,s){return e(),o("svg",V2,[...A2])}const kn={name:"carbon-undo",render:k2},j2={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},y2=n("path",{fill:"currentColor",d:"M7 27h23v2H7zm20.38-16.49l-7.93-7.92a2 2 0 0 0-2.83 0l-14 14a2 2 0 0 0 0 2.83L7.13 24h9.59l10.66-10.66a2 2 0 0 0 0-2.83M15.89 22H8l-4-4l6.31-6.31l7.93 7.92zm3.76-3.76l-7.92-7.93L18 4l8 7.93z"},null,-1),q2=[y2];function E2(t,s){return e(),o("svg",j2,[...q2])}const jn={name:"carbon-erase",render:E2},S2={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},D2=n("path",{fill:"currentColor",d:"M26 4H6a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2M6 26V6h20v20Z"},null,-1),F2=[D2];function G2(t,s){return e(),o("svg",S2,[...F2])}const yn={name:"carbon-checkbox",render:G2},I2={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},J2=n("path",{fill:"currentColor",d:"M16 2a14 14 0 1 0 14 14A14 14 0 0 0 16 2m0 26a12 12 0 1 1 12-12a12 12 0 0 1-12 12"},null,-1),N2=[J2];function K2(t,s){return e(),o("svg",I2,[...N2])}const qn={name:"carbon-radio-button",render:K2},O2={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},P2=n("path",{fill:"currentColor",d:"M10 6v2h12.59L6 24.59L7.41 26L24 9.41V22h2V6z"},null,-1),Q2=[P2];function R2(t,s){return e(),o("svg",O2,[...Q2])}const En={name:"carbon-arrow-up-right",render:R2},T2={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},U2=n("path",{fill:"currentColor",d:"M23 28a1 1 0 0 1-.71-.29l-6.13-6.14l-3.33 5a1 1 0 0 1-1 .44a1 1 0 0 1-.81-.7l-6-20A1 1 0 0 1 6.29 5l20 6a1 1 0 0 1 .7.81a1 1 0 0 1-.44 1l-5 3.33l6.14 6.13a1 1 0 0 1 0 1.42l-4 4A1 1 0 0 1 23 28m0-2.41L25.59 23l-7.16-7.15l5.25-3.5L7.49 7.49l4.86 16.19l3.5-5.25Z"},null,-1),W2=[U2];function X2(t,s){return e(),o("svg",T2,[...W2])}const Sn={name:"carbon-cursor1",render:X2};export{qn as A,yn as B,jn as C,kn as D,An as E,Zn as F,Vn as G,Bn as H,bn as I,Cn as J,en as _,nn as a,Sn as b,Hn as c,zn as d,Mn as e,xn as f,tn as g,on as h,wn as i,fn as j,Ln as k,gn as l,pn as m,vn as n,mn as o,un as p,dn as q,an as r,sn as s,$n as t,rn as u,hn as v,ln as w,_n as x,cn as y,En as z}; diff --git a/06-scalable/assets/modules/vue-CoY6Ph6S.js b/06-scalable/assets/modules/vue-CoY6Ph6S.js new file mode 100644 index 0000000..b3b3c07 --- /dev/null +++ b/06-scalable/assets/modules/vue-CoY6Ph6S.js @@ -0,0 +1,62 @@ +/** +* vue v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function We(e,t){const n=new Set(e.split(","));return t?s=>n.has(s.toLowerCase()):s=>n.has(s)}const ge=Object.freeze({}),ms=Object.freeze([]),Ve=()=>{},li=()=>!1,In=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),yi=e=>e.startsWith("onUpdate:"),ue=Object.assign,jl=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},im=Object.prototype.hasOwnProperty,pe=(e,t)=>im.call(e,t),K=Array.isArray,Jn=e=>Ls(e)==="[object Map]",Fs=e=>Ls(e)==="[object Set]",oc=e=>Ls(e)==="[object Date]",om=e=>Ls(e)==="[object RegExp]",Q=e=>typeof e=="function",ne=e=>typeof e=="string",$t=e=>typeof e=="symbol",me=e=>e!==null&&typeof e=="object",Ki=e=>(me(e)||Q(e))&&Q(e.then)&&Q(e.catch),nf=Object.prototype.toString,Ls=e=>nf.call(e),Bl=e=>Ls(e).slice(8,-1),sf=e=>Ls(e)==="[object Object]",Hl=e=>ne(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Sn=We(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),rf=We("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),qi=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},lm=/-(\w)/g,Pe=qi(e=>e.replace(lm,(t,n)=>n?n.toUpperCase():"")),am=/\B([A-Z])/g,et=qi(e=>e.replace(am,"-$1").toLowerCase()),Wt=qi(e=>e.charAt(0).toUpperCase()+e.slice(1)),Bt=qi(e=>e?`on${Wt(e)}`:""),Ft=(e,t)=>!Object.is(e,t),bn=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},dr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},bi=e=>{const t=ne(e)?Number(e):NaN;return isNaN(t)?e:t};let lc;const of=()=>lc||(lc=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}),Ut={1:"TEXT",2:"CLASS",4:"STYLE",8:"PROPS",16:"FULL_PROPS",32:"NEED_HYDRATION",64:"STABLE_FRAGMENT",128:"KEYED_FRAGMENT",256:"UNKEYED_FRAGMENT",512:"NEED_PATCH",1024:"DYNAMIC_SLOTS",2048:"DEV_ROOT_FRAGMENT",[-1]:"HOISTED",[-2]:"BAIL"},cm={1:"STABLE",2:"DYNAMIC",3:"FORWARDED"},um="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,Error",fm=We(um),ac=2;function dm(e,t=0,n=e.length){let s=e.split(/(\r?\n)/);const r=s.filter((l,a)=>a%2===1);s=s.filter((l,a)=>a%2===0);let i=0;const o=[];for(let l=0;l=t){for(let a=l-ac;a<=l+ac||n>i;a++){if(a<0||a>=s.length)continue;const u=a+1;o.push(`${u}${" ".repeat(Math.max(3-String(u).length,0))}| ${s[a]}`);const f=s[a].length,c=r[a]&&r[a].length||0;if(a===l){const d=t-(i-(f+c)),p=Math.max(1,n>i?f-d:n-t);o.push(" | "+" ".repeat(d)+"^".repeat(p))}else if(a>l){if(n>i){const d=Math.max(Math.min(n-i,f),1);o.push(" | "+"^".repeat(d))}i+=f+c}}break}return o.join(` +`)}function Ds(e){if(K(e)){const t={};for(let n=0;n{if(n){const s=n.split(hm);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function gm(e){let t="";if(!e||ne(e))return t;for(const n in e){const s=e[n],r=n.startsWith("--")?n:et(n);(ne(s)||typeof s=="number")&&(t+=`${r}:${s};`)}return t}function Vs(e){let t="";if(ne(e))t=e;else if(K(e))for(let n=0;nss(n,t))}const Om=e=>ne(e)?e:e==null?"":K(e)||me(e)&&(e.toString===nf||!Q(e.toString))?JSON.stringify(e,df,2):String(e),df=(e,t)=>t&&t.__v_isRef?df(e,t.value):Jn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[go(s,i)+" =>"]=r,n),{})}:Fs(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>go(n))}:$t(t)?go(t):me(t)&&!K(t)&&!sf(t)?String(t):t,go=(e,t="")=>{var n;return $t(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};function zt(e,...t){console.warn(`[Vue warn] ${e}`,...t)}let gt;class ql{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=gt,!t&>&&(this.index=(gt.scopes||(gt.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=gt;try{return gt=this,t()}finally{gt=n}}else zt("cannot run an inactive effect scope.")}on(){gt=this}off(){gt=this.parent}stop(t){if(this._active){let n,s;for(n=0,s=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),$n()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=En,n=Xn;try{return En=!0,Xn=this,this._runnings++,uc(this),this.fn()}finally{fc(this),this._runnings--,Xn=n,En=t}}stop(){var t;this.active&&(uc(this),fc(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function Nm(e){return e.value}function uc(e){e._trackId++,e._depsLength=0}function fc(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{n.dirty&&n.run()});t&&(ue(n,t),t.scope&&pf(n,t.scope)),(!t||!t.lazy)&&n.run();const s=n.run.bind(n);return s.effect=n,s}function Pm(e){e.effect.stop()}let En=!0,Uo=0;const gf=[];function Mn(){gf.push(En),En=!1}function $n(){const e=gf.pop();En=e===void 0?!0:e}function zl(){Uo++}function Gl(){for(Uo--;!Uo&&Ko.length;)Ko.shift()()}function yf(e,t,n){var s;if(t.get(e)!==e._trackId){t.set(e,e._trackId);const r=e.deps[e._depsLength];r!==t?(r&&mf(r,e),e.deps[e._depsLength++]=t):e._depsLength++,(s=e.onTrack)==null||s.call(e,ue({effect:e},n))}}const Ko=[];function vf(e,t,n){var s;zl();for(const r of e.keys()){let i;r._dirtyLevel{const n=new Map;return n.cleanup=e,n.computed=t,n},_i=new WeakMap,Qn=Symbol("iterate"),qo=Symbol("Map key iterate");function rt(e,t,n){if(En&&Xn){let s=_i.get(e);s||_i.set(e,s=new Map);let r=s.get(n);r||s.set(n,r=bf(()=>s.delete(n))),yf(Xn,r,{target:e,type:t,key:n})}}function Kt(e,t,n,s,r,i){const o=_i.get(e);if(!o)return;let l=[];if(t==="clear")l=[...o.values()];else if(n==="length"&&K(e)){const a=Number(s);o.forEach((u,f)=>{(f==="length"||!$t(f)&&f>=a)&&l.push(u)})}else switch(n!==void 0&&l.push(o.get(n)),t){case"add":K(e)?Hl(n)&&l.push(o.get("length")):(l.push(o.get(Qn)),Jn(e)&&l.push(o.get(qo)));break;case"delete":K(e)||(l.push(o.get(Qn)),Jn(e)&&l.push(o.get(qo)));break;case"set":Jn(e)&&l.push(o.get(Qn));break}zl();for(const a of l)a&&vf(a,4,{target:e,type:t,key:n,newValue:s,oldValue:r,oldTarget:i});Gl()}function Im(e,t){var n;return(n=_i.get(e))==null?void 0:n.get(t)}const Mm=We("__proto__,__v_isRef,__isVue"),_f=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter($t)),dc=$m();function $m(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=se(this);for(let i=0,o=this.length;i{e[t]=function(...n){Mn(),zl();const s=se(this)[t].apply(this,n);return Gl(),$n(),s}}),e}function Fm(e){const t=se(this);return rt(t,"has",e),t.hasOwnProperty(e)}class wf{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Of:Af:i?xf:Cf).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=K(t);if(!r){if(o&&pe(dc,n))return Reflect.get(dc,n,s);if(n==="hasOwnProperty")return Fm}const l=Reflect.get(t,n,s);return($t(n)?_f.has(n):Mm(n))||(r||rt(t,"get",n),i)?l:Ee(l)?o&&Hl(n)?l:l.value:me(l)?r?dt(l):lt(l):l}}class Sf extends wf{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const a=rn(i);if(!Cn(s)&&!rn(s)&&(i=se(i),s=se(s)),!K(t)&&Ee(i)&&!Ee(s))return a?!1:(i.value=s,!0)}const o=K(t)&&Hl(n)?Number(n)e,Wi=e=>Reflect.getPrototypeOf(e);function Ur(e,t,n=!1,s=!1){e=e.__v_raw;const r=se(e),i=se(t);n||(Ft(t,i)&&rt(r,"get",t),rt(r,"get",i));const{has:o}=Wi(r),l=s?Yl:n?Ql:hr;if(o.call(r,t))return l(e.get(t));if(o.call(r,i))return l(e.get(i));e!==r&&e.get(t)}function Kr(e,t=!1){const n=this.__v_raw,s=se(n),r=se(e);return t||(Ft(e,r)&&rt(s,"has",e),rt(s,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function qr(e,t=!1){return e=e.__v_raw,!t&&rt(se(e),"iterate",Qn),Reflect.get(e,"size",e)}function pc(e){e=se(e);const t=se(this);return Wi(t).has.call(t,e)||(t.add(e),Kt(t,"add",e,e)),this}function hc(e,t){t=se(t);const n=se(this),{has:s,get:r}=Wi(n);let i=s.call(n,e);i?Tf(n,s,e):(e=se(e),i=s.call(n,e));const o=r.call(n,e);return n.set(e,t),i?Ft(t,o)&&Kt(n,"set",e,t,o):Kt(n,"add",e,t),this}function mc(e){const t=se(this),{has:n,get:s}=Wi(t);let r=n.call(t,e);r?Tf(t,n,e):(e=se(e),r=n.call(t,e));const i=s?s.call(t,e):void 0,o=t.delete(e);return r&&Kt(t,"delete",e,void 0,i),o}function gc(){const e=se(this),t=e.size!==0,n=Jn(e)?new Map(e):new Set(e),s=e.clear();return t&&Kt(e,"clear",void 0,void 0,n),s}function Wr(e,t){return function(s,r){const i=this,o=i.__v_raw,l=se(o),a=t?Yl:e?Ql:hr;return!e&&rt(l,"iterate",Qn),o.forEach((u,f)=>s.call(r,a(u),a(f),i))}}function zr(e,t,n){return function(...s){const r=this.__v_raw,i=se(r),o=Jn(i),l=e==="entries"||e===Symbol.iterator&&o,a=e==="keys"&&o,u=r[e](...s),f=n?Yl:t?Ql:hr;return!t&&rt(i,"iterate",a?qo:Qn),{next(){const{value:c,done:d}=u.next();return d?{value:c,done:d}:{value:l?[f(c[0]),f(c[1])]:f(c),done:d}},[Symbol.iterator](){return this}}}}function an(e){return function(...t){{const n=t[0]?`on key "${t[0]}" `:"";zt(`${Wt(e)} operation ${n}failed: target is readonly.`,se(this))}return e==="delete"?!1:e==="clear"?void 0:this}}function Bm(){const e={get(i){return Ur(this,i)},get size(){return qr(this)},has:Kr,add:pc,set:hc,delete:mc,clear:gc,forEach:Wr(!1,!1)},t={get(i){return Ur(this,i,!1,!0)},get size(){return qr(this)},has:Kr,add:pc,set:hc,delete:mc,clear:gc,forEach:Wr(!1,!0)},n={get(i){return Ur(this,i,!0)},get size(){return qr(this,!0)},has(i){return Kr.call(this,i,!0)},add:an("add"),set:an("set"),delete:an("delete"),clear:an("clear"),forEach:Wr(!0,!1)},s={get(i){return Ur(this,i,!0,!0)},get size(){return qr(this,!0)},has(i){return Kr.call(this,i,!0)},add:an("add"),set:an("set"),delete:an("delete"),clear:an("clear"),forEach:Wr(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=zr(i,!1,!1),n[i]=zr(i,!0,!1),t[i]=zr(i,!1,!0),s[i]=zr(i,!0,!0)}),[e,n,t,s]}const[Hm,Um,Km,qm]=Bm();function zi(e,t){const n=t?e?qm:Km:e?Um:Hm;return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(pe(n,r)&&r in s?n:s,r,i)}const Wm={get:zi(!1,!1)},zm={get:zi(!1,!0)},Gm={get:zi(!0,!1)},Ym={get:zi(!0,!0)};function Tf(e,t,n){const s=se(n);if(s!==n&&t.call(e,s)){const r=Bl(e);zt(`Reactive ${r} contains both the raw and reactive versions of the same object${r==="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 Cf=new WeakMap,xf=new WeakMap,Af=new WeakMap,Of=new WeakMap;function Jm(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Xm(e){return e.__v_skip||!Object.isExtensible(e)?0:Jm(Bl(e))}function lt(e){return rn(e)?e:Gi(e,!1,Lm,Wm,Cf)}function Jl(e){return Gi(e,!1,Vm,zm,xf)}function dt(e){return Gi(e,!0,Dm,Gm,Af)}function Kn(e){return Gi(e,!0,jm,Ym,Of)}function Gi(e,t,n,s,r){if(!me(e))return zt(`value cannot be made reactive: ${String(e)}`),e;if(e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=Xm(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function Tn(e){return rn(e)?Tn(e.__v_raw):!!(e&&e.__v_isReactive)}function rn(e){return!!(e&&e.__v_isReadonly)}function Cn(e){return!!(e&&e.__v_isShallow)}function pr(e){return Tn(e)||rn(e)}function se(e){const t=e&&e.__v_raw;return t?se(t):e}function Xl(e){return Object.isExtensible(e)&&vi(e,"__v_skip",!0),e}const hr=e=>me(e)?lt(e):e,Ql=e=>me(e)?dt(e):e,Qm="Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided. Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free";class Rf{constructor(t,n,s,r){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Cs(()=>t(this._value),()=>gs(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=se(this);return(!t._cacheable||t.effect.dirty)&&Ft(t._value,t._value=t.effect.run())&&gs(t,4),Zl(t),t.effect._dirtyLevel>=2&&(this._warnRecursive&&zt(Qm,` + +getter: `,this.getter),gs(t,2)),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function Zm(e,t,n=!1){let s,r;const i=Q(e);i?(s=e,r=()=>{zt("Write operation failed: computed value is readonly")}):(s=e.get,r=e.set);const o=new Rf(s,r,i||!r,n);return t&&!n&&(o.effect.onTrack=t.onTrack,o.effect.onTrigger=t.onTrigger),o}function Zl(e){var t;En&&Xn&&(e=se(e),yf(Xn,(t=e.dep)!=null?t:e.dep=bf(()=>e.dep=void 0,e instanceof Rf?e:void 0),{target:e,type:"get",key:"value"}))}function gs(e,t=4,n){e=se(e);const s=e.dep;s&&vf(s,t,{target:e,type:"set",key:"value",newValue:n})}function Ee(e){return!!(e&&e.__v_isRef===!0)}function Z(e){return Nf(e,!1)}function ys(e){return Nf(e,!0)}function Nf(e,t){return Ee(e)?e:new eg(e,t)}class eg{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:se(t),this._value=n?t:hr(t)}get value(){return Zl(this),this._value}set value(t){const n=this.__v_isShallow||Cn(t)||rn(t);t=n?t:se(t),Ft(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:hr(t),gs(this,4,t))}}function tg(e){gs(e,4,e.value)}function nt(e){return Ee(e)?e.value:e}function ng(e){return Q(e)?e():nt(e)}const sg={get:(e,t,n)=>nt(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return Ee(r)&&!Ee(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function ea(e){return Tn(e)?e:new Proxy(e,sg)}class rg{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:s}=t(()=>Zl(this),()=>gs(this));this._get=n,this._set=s}get value(){return this._get()}set value(t){this._set(t)}}function Yi(e){return new rg(e)}function kf(e){pr(e)||zt("toRefs() expects a reactive object but received a plain one.");const t=K(e)?new Array(e.length):{};for(const n in e)t[n]=If(e,n);return t}class ig{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Im(se(this._object),this._key)}}class og{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Pf(e,t,n){return Ee(e)?e:Q(e)?new og(e):me(e)&&arguments.length>1?If(e,t,n):Z(e)}function If(e,t,n){const s=e[t];return Ee(s)?s:new ig(e,t,n)}const lg={GET:"get",HAS:"has",ITERATE:"iterate"},ag={SET:"set",ADD:"add",DELETE:"delete",CLEAR:"clear"},Zn=[];function Zs(e){Zn.push(e)}function er(){Zn.pop()}function M(e,...t){Mn();const n=Zn.length?Zn[Zn.length-1].component:null,s=n&&n.appContext.config.warnHandler,r=cg();if(s)qt(s,n,11,[e+t.map(i=>{var o,l;return(l=(o=i.toString)==null?void 0:o.call(i))!=null?l:JSON.stringify(i)}).join(""),n&&n.proxy,r.map(({vnode:i})=>`at <${oo(n,i.type)}>`).join(` +`),r]);else{const i=[`[Vue warn]: ${e}`,...t];r.length&&i.push(` +`,...ug(r)),console.warn(...i)}$n()}function cg(){let e=Zn[Zn.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const s=e.component&&e.component.parent;e=s&&s.vnode}return t}function ug(e){const t=[];return e.forEach((n,s)=>{t.push(...s===0?[]:[` +`],...fg(n))}),t}function fg({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",s=e.component?e.component.parent==null:!1,r=` at <${oo(e.component,e.type,s)}`,i=">"+n;return e.props?[r,...dg(e.props),i]:[r+i]}function dg(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach(s=>{t.push(...Mf(s,e[s]))}),n.length>3&&t.push(" ..."),t}function Mf(e,t,n){return ne(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?n?t:[`${e}=${t}`]:Ee(t)?(t=Mf(e,se(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):Q(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=se(t),n?t:[`${e}=`,t])}function ta(e,t){e!==void 0&&(typeof e!="number"?M(`${t} is not a valid number - got ${JSON.stringify(e)}.`):isNaN(e)&&M(`${t} is NaN - the duration expression might be incorrect.`))}const pg={SETUP_FUNCTION:0,0:"SETUP_FUNCTION",RENDER_FUNCTION:1,1:"RENDER_FUNCTION",WATCH_GETTER:2,2:"WATCH_GETTER",WATCH_CALLBACK:3,3:"WATCH_CALLBACK",WATCH_CLEANUP:4,4:"WATCH_CLEANUP",NATIVE_EVENT_HANDLER:5,5:"NATIVE_EVENT_HANDLER",COMPONENT_EVENT_HANDLER:6,6:"COMPONENT_EVENT_HANDLER",VNODE_HOOK:7,7:"VNODE_HOOK",DIRECTIVE_HOOK:8,8:"DIRECTIVE_HOOK",TRANSITION_HOOK:9,9:"TRANSITION_HOOK",APP_ERROR_HANDLER:10,10:"APP_ERROR_HANDLER",APP_WARN_HANDLER:11,11:"APP_WARN_HANDLER",FUNCTION_REF:12,12:"FUNCTION_REF",ASYNC_COMPONENT_LOADER:13,13:"ASYNC_COMPONENT_LOADER",SCHEDULER:14,14:"SCHEDULER"},Ji={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://github.com/vuejs/core ."};function qt(e,t,n,s){try{return s?e(...s):e()}catch(r){Fn(r,t,n)}}function At(e,t,n,s){if(Q(e)){const i=qt(e,t,n,s);return i&&Ki(i)&&i.catch(o=>{Fn(o,t,n)}),i}const r=[];for(let i=0;i>>1,r=tt[s],i=yr(r);iHt&&tt.splice(t,1)}function gr(e){K(e)?vs.push(...e):(!en||!en.includes(e,e.allowRecurse?pn+1:pn))&&vs.push(e),Ff()}function yc(e,t,n=mr?Ht+1:0){for(t=t||new Map;nyr(n)-yr(s));if(vs.length=0,en){en.push(...t);return}for(en=t,e=e||new Map,pn=0;pne.id==null?1/0:e.id,vg=(e,t)=>{const n=yr(e)-yr(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Lf(e){Wo=!1,mr=!0,e=e||new Map,tt.sort(vg);const t=n=>sa(e,n);try{for(Ht=0;Htmg){const s=t.ownerInstance,r=s&&_r(s.type);return Fn(`Maximum recursive updates exceeded${r?` in component <${r}>`:""}. 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.`,null,10),!0}else e.set(t,n+1)}}let xn=!1;const hs=new Set;of().__VUE_HMR_RUNTIME__={createRecord:yo(Df),rerender:yo(wg),reload:yo(Sg)};const rs=new Map;function bg(e){const t=e.type.__hmrId;let n=rs.get(t);n||(Df(t,e.type),n=rs.get(t)),n.instances.add(e)}function _g(e){rs.get(e.type.__hmrId).instances.delete(e)}function Df(e,t){return rs.has(e)?!1:(rs.set(e,{initialDef:tr(t),instances:new Set}),!0)}function tr(e){return $d(e)?e.__vccOpts:e}function wg(e,t){const n=rs.get(e);n&&(n.initialDef.render=t,[...n.instances].forEach(s=>{t&&(s.render=t,tr(s.type).render=t),s.renderCache=[],xn=!0,s.effect.dirty=!0,s.update(),xn=!1}))}function Sg(e,t){const n=rs.get(e);if(!n)return;t=tr(t),vc(n.initialDef,t);const s=[...n.instances];for(const r of s){const i=tr(r.type);hs.has(i)||(i!==n.initialDef&&vc(i,t),hs.add(i)),r.appContext.propsCache.delete(r.type),r.appContext.emitsCache.delete(r.type),r.appContext.optionsCache.delete(r.type),r.ceReload?(hs.add(i),r.ceReload(t.styles),hs.delete(i)):r.parent?(r.parent.effect.dirty=!0,Rr(r.parent.update)):r.appContext.reload?r.appContext.reload():typeof window<"u"?window.location.reload():console.warn("[HMR] Root or manually mounted instance modified. Full reload required.")}gr(()=>{for(const r of s)hs.delete(tr(r.type))})}function vc(e,t){ue(e,t);for(const n in e)n!=="__file"&&!(n in t)&&delete e[n]}function yo(e){return(t,n)=>{try{return e(t,n)}catch(s){console.error(s),console.warn("[HMR] Something went wrong during Vue component hot-reload. Full reload required.")}}}let kt,Js=[],zo=!1;function Nr(e,...t){kt?kt.emit(e,...t):zo||Js.push({event:e,args:t})}function ra(e,t){var n,s;kt=e,kt?(kt.enabled=!0,Js.forEach(({event:r,args:i})=>kt.emit(r,...i)),Js=[]):typeof window<"u"&&window.HTMLElement&&!((s=(n=window.navigator)==null?void 0:n.userAgent)!=null&&s.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(i=>{ra(i,t)}),setTimeout(()=>{kt||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,zo=!0,Js=[])},3e3)):(zo=!0,Js=[])}function Eg(e,t){Nr("app:init",e,t,{Fragment:Be,Text:On,Comment:Le,Static:An})}function Tg(e){Nr("app:unmount",e)}const Go=ia("component:added"),Vf=ia("component:updated"),Cg=ia("component:removed"),xg=e=>{kt&&typeof kt.cleanupBuffer=="function"&&!kt.cleanupBuffer(e)&&Cg(e)};function ia(e){return t=>{Nr(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}const Ag=jf("perf:start"),Og=jf("perf:end");function jf(e){return(t,n,s)=>{Nr(e,t.appContext.app,t.uid,t,n,s)}}function Rg(e,t,n){Nr("component:emit",e.appContext.app,e,t,n)}function Ng(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ge;{const{emitsOptions:f,propsOptions:[c]}=e;if(f)if(!(t in f))(!c||!(Bt(t)in c))&&M(`Component emitted event "${t}" but it is neither declared in the emits option nor as an "${Bt(t)}" prop.`);else{const d=f[t];Q(d)&&(d(...n)||M(`Invalid event arguments: event validation failed for event "${t}".`))}}let r=n;const i=t.startsWith("update:"),o=i&&t.slice(7);if(o&&o in s){const f=`${o==="modelValue"?"model":o}Modifiers`,{number:c,trim:d}=s[f]||ge;d&&(r=n.map(p=>ne(p)?p.trim():p)),c&&(r=n.map(dr))}Rg(e,t,r);{const f=t.toLowerCase();f!==t&&s[Bt(f)]&&M(`Event "${f}" is emitted in component ${oo(e,e.type)} but the handler is registered for "${t}". 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 "${et(t)}" instead of "${t}".`)}let l,a=s[l=Bt(t)]||s[l=Bt(Pe(t))];!a&&i&&(a=s[l=Bt(et(t))]),a&&At(a,e,6,r);const u=s[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,At(u,e,6,r)}}function Bf(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!Q(e)){const a=u=>{const f=Bf(u,t,!0);f&&(l=!0,ue(o,f))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!i&&!l?(me(e)&&s.set(e,null),null):(K(i)?i.forEach(a=>o[a]=null):ue(o,i),me(e)&&s.set(e,o),o)}function Xi(e,t){return!e||!In(t)?!1:(t=t.slice(2).replace(/Once$/,""),pe(e,t[0].toLowerCase()+t.slice(1))||pe(e,et(t))||pe(e,t))}let ke=null,Qi=null;function Si(e){const t=ke;return ke=e,Qi=e&&e.type.__scopeId||null,t}function kg(e){Qi=e}function Pg(){Qi=null}const Ig=e=>oa;function oa(e,t=ke,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&sl(-1);const i=Si(t);let o;try{o=e(...r)}finally{Si(i),s._d&&sl(1)}return Vf(t),o};return s._n=!0,s._c=!0,s._d=!0,s}let Yo=!1;function Ei(){Yo=!0}function vo(e){const{type:t,vnode:n,proxy:s,withProxy:r,props:i,propsOptions:[o],slots:l,attrs:a,emit:u,render:f,renderCache:c,data:d,setupState:p,ctx:g,inheritAttrs:E}=e;let S,y;const v=Si(e);Yo=!1;try{if(n.shapeFlag&4){const b=r||s,T=p.__isScriptSetup?new Proxy(b,{get(O,C,A){return M(`Property '${String(C)}' was accessed via 'this'. Avoid using 'this' in templates.`),Reflect.get(O,C,A)}}):b;S=vt(f.call(T,b,c,i,p,d,g)),y=a}else{const b=t;a===i&&Ei(),S=vt(b.length>1?b(i,{get attrs(){return Ei(),a},slots:l,emit:u}):b(i,null)),y=t.props?a:Mg(a)}}catch(b){sr.length=0,Fn(b,e,1),S=Oe(Le)}let h=S,w;if(S.patchFlag>0&&S.patchFlag&2048&&([h,w]=Hf(S)),y&&E!==!1){const b=Object.keys(y),{shapeFlag:T}=h;if(b.length){if(T&7)o&&b.some(yi)&&(y=$g(y,o)),h=Ot(h,y);else if(!Yo&&h.type!==Le){const O=Object.keys(a),C=[],A=[];for(let x=0,k=O.length;x renders non-element root node that cannot be animated."),h.transition=n.transition),w?w(h):S=h,Si(v),S}const Hf=e=>{const t=e.children,n=e.dynamicChildren,s=Zi(t,!1);if(s){if(s.patchFlag>0&&s.patchFlag&2048)return Hf(s)}else return[e,void 0];const r=t.indexOf(s),i=n?n.indexOf(s):-1,o=l=>{t[r]=l,n&&(i>-1?n[i]=l:l.patchFlag>0&&(e.dynamicChildren=[...n,l]))};return[vt(s),o]};function Zi(e,t=!0){let n;for(let s=0;s0&&n.patchFlag&2048)return Zi(n.children)}}else return}return n}const Mg=e=>{let t;for(const n in e)(n==="class"||n==="style"||In(n))&&((t||(t={}))[n]=e[n]);return t},$g=(e,t)=>{const n={};for(const s in e)(!yi(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n},bc=e=>e.shapeFlag&7||e.type===Le;function Fg(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:a}=t,u=i.emitsOptions;if((r||l)&&xn||t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return s?_c(s,o,u):!!o;if(a&8){const f=t.dynamicProps;for(let c=0;ce.__isSuspense;let Jo=0;const jg={name:"Suspense",__isSuspense:!0,process(e,t,n,s,r,i,o,l,a,u){if(e==null)Hg(t,n,s,r,i,o,l,a,u);else{if(i&&i.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}Ug(e,t,n,s,r,o,l,a,u)}},hydrate:Kg,create:ua,normalize:qg},Bg=jg;function vr(e,t){const n=e.props&&e.props[t];Q(n)&&n()}function Hg(e,t,n,s,r,i,o,l,a){const{p:u,o:{createElement:f}}=a,c=f("div"),d=e.suspense=ua(e,r,s,t,c,n,i,o,l,a);u(null,d.pendingBranch=e.ssContent,c,null,s,d,i,o),d.deps>0?(vr(e,"onPending"),vr(e,"onFallback"),u(null,e.ssFallback,t,n,s,null,i,o),bs(d,e.ssFallback)):d.resolve(!1,!0)}function Ug(e,t,n,s,r,i,o,l,{p:a,um:u,o:{createElement:f}}){const c=t.suspense=e.suspense;c.vnode=t,t.el=e.el;const d=t.ssContent,p=t.ssFallback,{activeBranch:g,pendingBranch:E,isInFallback:S,isHydrating:y}=c;if(E)c.pendingBranch=d,Pt(d,E)?(a(E,d,c.hiddenContainer,null,r,c,i,o,l),c.deps<=0?c.resolve():S&&(y||(a(g,p,n,s,r,null,i,o,l),bs(c,p)))):(c.pendingId=Jo++,y?(c.isHydrating=!1,c.activeBranch=E):u(E,r,c),c.deps=0,c.effects.length=0,c.hiddenContainer=f("div"),S?(a(null,d,c.hiddenContainer,null,r,c,i,o,l),c.deps<=0?c.resolve():(a(g,p,n,s,r,null,i,o,l),bs(c,p))):g&&Pt(d,g)?(a(g,d,n,s,r,c,i,o,l),c.resolve(!0)):(a(null,d,c.hiddenContainer,null,r,c,i,o,l),c.deps<=0&&c.resolve()));else if(g&&Pt(d,g))a(g,d,n,s,r,c,i,o,l),bs(c,d);else if(vr(t,"onPending"),c.pendingBranch=d,d.shapeFlag&512?c.pendingId=d.component.suspenseId:c.pendingId=Jo++,a(null,d,c.hiddenContainer,null,r,c,i,o,l),c.deps<=0)c.resolve();else{const{timeout:v,pendingId:h}=c;v>0?setTimeout(()=>{c.pendingId===h&&c.fallback(p)},v):v===0&&c.fallback(p)}}let Sc=!1;function ua(e,t,n,s,r,i,o,l,a,u,f=!1){Sc||(Sc=!0,console[console.info?"info":"log"](" is an experimental feature and its API will likely change."));const{p:c,m:d,um:p,n:g,o:{parentNode:E,remove:S}}=u;let y;const v=Wg(e);v&&t!=null&&t.pendingBranch&&(y=t.pendingId,t.deps++);const h=e.props?bi(e.props.timeout):void 0;ta(h,"Suspense timeout");const w=i,b={vnode:e,parent:t,parentComponent:n,namespace:o,container:s,hiddenContainer:r,deps:0,pendingId:Jo++,timeout:typeof h=="number"?h:-1,activeBranch:null,pendingBranch:null,isInFallback:!f,isHydrating:f,isUnmounted:!1,effects:[],resolve(T=!1,O=!1){{if(!T&&!b.pendingBranch)throw new Error("suspense.resolve() is called without a pending branch.");if(b.isUnmounted)throw new Error("suspense.resolve() is called on an already unmounted suspense boundary.")}const{vnode:C,activeBranch:A,pendingBranch:x,pendingId:k,effects:R,parentComponent:V,container:Y}=b;let ee=!1;b.isHydrating?b.isHydrating=!1:T||(ee=A&&x.transition&&x.transition.mode==="out-in",ee&&(A.transition.afterLeave=()=>{k===b.pendingId&&(d(x,Y,i===w?g(A):i,0),gr(R))}),A&&(E(A.el)!==b.hiddenContainer&&(i=g(A)),p(A,V,b,!0)),ee||d(x,Y,i,0)),bs(b,x),b.pendingBranch=null,b.isInFallback=!1;let B=b.parent,G=!1;for(;B;){if(B.pendingBranch){B.effects.push(...R),G=!0;break}B=B.parent}!G&&!ee&&gr(R),b.effects=[],v&&t&&t.pendingBranch&&y===t.pendingId&&(t.deps--,t.deps===0&&!O&&t.resolve()),vr(C,"onResolve")},fallback(T){if(!b.pendingBranch)return;const{vnode:O,activeBranch:C,parentComponent:A,container:x,namespace:k}=b;vr(O,"onFallback");const R=g(C),V=()=>{b.isInFallback&&(c(null,T,x,R,A,null,k,l,a),bs(b,T))},Y=T.transition&&T.transition.mode==="out-in";Y&&(C.transition.afterLeave=V),b.isInFallback=!0,p(C,A,null,!0),Y||V()},move(T,O,C){b.activeBranch&&d(b.activeBranch,T,O,C),b.container=T},next(){return b.activeBranch&&g(b.activeBranch)},registerDep(T,O){const C=!!b.pendingBranch;C&&b.deps++;const A=T.vnode.el;T.asyncDep.catch(x=>{Fn(x,T,0)}).then(x=>{if(T.isUnmounted||b.isUnmounted||b.pendingId!==T.suspenseId)return;T.asyncResolved=!0;const{vnode:k}=T;Zs(k),al(T,x,!1),A&&(k.el=A);const R=!A&&T.subTree.el;O(T,k,E(A||T.subTree.el),A?null:g(T.subTree),b,o,a),R&&S(R),la(T,k.el),er(),C&&--b.deps===0&&b.resolve()})},unmount(T,O){b.isUnmounted=!0,b.activeBranch&&p(b.activeBranch,n,T,O),b.pendingBranch&&p(b.pendingBranch,n,T,O)}};return b}function Kg(e,t,n,s,r,i,o,l,a){const u=t.suspense=ua(t,s,n,e.parentNode,document.createElement("div"),null,r,i,o,l,!0),f=a(e,u.pendingBranch=t.ssContent,n,u,i,o);return u.deps===0&&u.resolve(!1,!0),f}function qg(e){const{shapeFlag:t,children:n}=e,s=t&32;e.ssContent=Ec(s?n.default:n),e.ssFallback=s?Ec(n.fallback):Oe(Le)}function Ec(e){let t;if(Q(e)){const n=os&&e._c;n&&(e._d=!1,so()),e=e(),n&&(e._d=!0,t=pt,Cd())}if(K(e)){const n=Zi(e);!n&&e.filter(s=>s!==aa).length>0&&M(" slots expect a single root node."),e=n}return e=vt(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(n=>n!==e)),e}function qf(e,t){t&&t.pendingBranch?K(e)?t.effects.push(...e):t.effects.push(e):gr(e)}function bs(e,t){e.activeBranch=t;const{vnode:n,parentComponent:s}=e;let r=t.el;for(;!r&&t.component;)t=t.component.subTree,r=t.el;n.el=r,s&&s.subTree===n&&(s.vnode.el=r,la(s,r))}function Wg(e){var t;return((t=e.props)==null?void 0:t.suspensible)!=null&&e.props.suspensible!==!1}const Wf=Symbol.for("v-scx"),zg=()=>{{const e=Ct(Wf);return e||M("Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build."),e}};function fa(e,t){return kr(e,null,t)}function zf(e,t){return kr(e,null,ue({},t,{flush:"post"}))}function Gf(e,t){return kr(e,null,ue({},t,{flush:"sync"}))}const Gr={};function ve(e,t,n){return Q(t)||M("`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."),kr(e,t,n)}function kr(e,t,{immediate:n,deep:s,flush:r,once:i,onTrack:o,onTrigger:l}=ge){if(t&&i){const T=t;t=(...O)=>{T(...O),b()}}s!==void 0&&typeof s=="number"&&M('watch() "deep" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage.'),t||(n!==void 0&&M('watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.'),s!==void 0&&M('watch() "deep" option is only respected when using the watch(source, callback, options?) signature.'),i!==void 0&&M('watch() "once" option is only respected when using the watch(source, callback, options?) signature.'));const a=T=>{M("Invalid watch source: ",T,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},u=Fe,f=T=>s===!0?T:qn(T,s===!1?1:void 0);let c,d=!1,p=!1;if(Ee(e)?(c=()=>e.value,d=Cn(e)):Tn(e)?(c=()=>f(e),d=!0):K(e)?(p=!0,d=e.some(T=>Tn(T)||Cn(T)),c=()=>e.map(T=>{if(Ee(T))return T.value;if(Tn(T))return f(T);if(Q(T))return qt(T,u,2);a(T)})):Q(e)?t?c=()=>qt(e,u,2):c=()=>(g&&g(),At(e,u,3,[E])):(c=Ve,a(e)),t&&s){const T=c;c=()=>qn(T())}let g,E=T=>{g=h.onStop=()=>{qt(T,u,4),g=h.onStop=void 0}},S=p?new Array(e.length).fill(Gr):Gr;const y=()=>{if(!(!h.active||!h.dirty))if(t){const T=h.run();(s||d||(p?T.some((O,C)=>Ft(O,S[C])):Ft(T,S)))&&(g&&g(),At(t,u,3,[T,S===Gr?void 0:p&&S[0]===Gr?[]:S,E]),S=T)}else h.run()};y.allowRecurse=!!t;let v;r==="sync"?v=y:r==="post"?v=()=>Ge(y,u&&u.suspense):(y.pre=!0,u&&(y.id=u.uid),v=()=>Rr(y));const h=new Cs(c,Ve,v),w=Wl(),b=()=>{h.stop(),w&&jl(w.effects,h)};return h.onTrack=o,h.onTrigger=l,t?n?y():S=h.run():r==="post"?Ge(h.run.bind(h),u&&u.suspense):h.run(),b}function Gg(e,t,n){const s=this.proxy,r=ne(e)?e.includes(".")?Yf(s,e):()=>s[e]:e.bind(s,s);let i;Q(t)?i=t:(i=t.handler,n=t);const o=ls(this),l=kr(r,i.bind(s),n);return o(),l}function Yf(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r0){if(n>=t)return e;n++}if(s=s||new Set,s.has(e))return e;if(s.add(e),Ee(e))qn(e.value,t,n,s);else if(K(e))for(let r=0;r{qn(r,t,n,s)});else if(sf(e))for(const r in e)qn(e[r],t,n,s);return e}function Jf(e){rf(e)&&M("Do not use built-in directive ids as custom directive id: "+e)}function Yg(e,t){if(ke===null)return M("withDirectives can only be used inside render functions."),e;const n=io(ke)||ke.proxy,s=e.dirs||(e.dirs=[]);for(let r=0;r{e.isMounted=!0}),no(()=>{e.isUnmounting=!0}),e}const wt=[Function,Array],pa={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:wt,onEnter:wt,onAfterEnter:wt,onEnterCancelled:wt,onBeforeLeave:wt,onLeave:wt,onAfterLeave:wt,onLeaveCancelled:wt,onBeforeAppear:wt,onAppear:wt,onAfterAppear:wt,onAppearCancelled:wt},Jg={name:"BaseTransition",props:pa,setup(e,{slots:t}){const n=Je(),s=da();return()=>{const r=t.default&&eo(t.default(),!0);if(!r||!r.length)return;let i=r[0];if(r.length>1){let d=!1;for(const p of r)if(p.type!==Le){if(d){M(" can only be used on a single element or component. Use for lists.");break}i=p,d=!0}}const o=se(e),{mode:l}=o;if(l&&l!=="in-out"&&l!=="out-in"&&l!=="default"&&M(`invalid mode: ${l}`),s.isLeaving)return bo(i);const a=Tc(i);if(!a)return bo(i);const u=xs(a,o,s,n);is(a,u);const f=n.subTree,c=f&&Tc(f);if(c&&c.type!==Le&&!Pt(a,c)){const d=xs(c,o,s,n);if(is(c,d),l==="out-in")return s.isLeaving=!0,d.afterLeave=()=>{s.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},bo(i);l==="in-out"&&a.type!==Le&&(d.delayLeave=(p,g,E)=>{const S=Qf(s,c);S[String(c.key)]=c,p[hn]=()=>{g(),p[hn]=void 0,delete u.delayedLeave},u.delayedLeave=E})}return i}}},Xf=Jg;function Qf(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function xs(e,t,n,s){const{appear:r,mode:i,persisted:o=!1,onBeforeEnter:l,onEnter:a,onAfterEnter:u,onEnterCancelled:f,onBeforeLeave:c,onLeave:d,onAfterLeave:p,onLeaveCancelled:g,onBeforeAppear:E,onAppear:S,onAfterAppear:y,onAppearCancelled:v}=t,h=String(e.key),w=Qf(n,e),b=(C,A)=>{C&&At(C,s,9,A)},T=(C,A)=>{const x=A[1];b(C,A),K(C)?C.every(k=>k.length<=1)&&x():C.length<=1&&x()},O={mode:i,persisted:o,beforeEnter(C){let A=l;if(!n.isMounted)if(r)A=E||l;else return;C[hn]&&C[hn](!0);const x=w[h];x&&Pt(e,x)&&x.el[hn]&&x.el[hn](),b(A,[C])},enter(C){let A=a,x=u,k=f;if(!n.isMounted)if(r)A=S||a,x=y||u,k=v||f;else return;let R=!1;const V=C[Yr]=Y=>{R||(R=!0,Y?b(k,[C]):b(x,[C]),O.delayedLeave&&O.delayedLeave(),C[Yr]=void 0)};A?T(A,[C,V]):V()},leave(C,A){const x=String(e.key);if(C[Yr]&&C[Yr](!0),n.isUnmounting)return A();b(c,[C]);let k=!1;const R=C[hn]=V=>{k||(k=!0,A(),V?b(g,[C]):b(p,[C]),C[hn]=void 0,w[x]===e&&delete w[x])};w[x]=e,d?T(d,[C,R]):R()},clone(C){return xs(C,t,n,s)}};return O}function bo(e){if(Bs(e))return e=Ot(e),e.children=null,e}function Tc(e){return Bs(e)?e.component?e.component.subTree:e.children?e.children[0]:void 0:e}function is(e,t){e.shapeFlag&6&&e.component?is(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function eo(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;i!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function Xg(e){Q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,timeout:i,suspensible:o=!0,onError:l}=e;let a=null,u,f=0;const c=()=>(f++,a=null,d()),d=()=>{let p;return a||(p=a=t().catch(g=>{if(g=g instanceof Error?g:new Error(String(g)),l)return new Promise((E,S)=>{l(g,()=>E(c()),()=>S(g),f+1)});throw g}).then(g=>{if(p!==a&&a)return a;if(g||M("Async component loader resolved to undefined. If you are using retry(), make sure to return its return value."),g&&(g.__esModule||g[Symbol.toStringTag]==="Module")&&(g=g.default),g&&!me(g)&&!Q(g))throw new Error(`Invalid async component load result: ${g}`);return u=g,g}))};return js({name:"AsyncComponentWrapper",__asyncLoader:d,get __asyncResolved(){return u},setup(){const p=Fe;if(u)return()=>_o(u,p);const g=v=>{a=null,Fn(v,p,13,!s)};if(o&&p.suspense)return d().then(v=>()=>_o(v,p)).catch(v=>(g(v),()=>s?Oe(s,{error:v}):null));const E=Z(!1),S=Z(),y=Z(!!r);return r&&setTimeout(()=>{y.value=!1},r),i!=null&&setTimeout(()=>{if(!E.value&&!S.value){const v=new Error(`Async component timed out after ${i}ms.`);g(v),S.value=v}},i),d().then(()=>{E.value=!0,p.parent&&Bs(p.parent.vnode)&&(p.parent.effect.dirty=!0,Rr(p.parent.update))}).catch(v=>{g(v),S.value=v}),()=>{if(E.value&&u)return _o(u,p);if(S.value&&s)return Oe(s,{error:S.value});if(n&&!y.value)return Oe(n)}}})}function _o(e,t){const{ref:n,props:s,children:r,ce:i}=t.vnode,o=Oe(e,s,r);return o.ref=n,o.ce=i,delete t.vnode.ce,o}const Bs=e=>e.type.__isKeepAlive,Qg={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=Je(),s=n.ctx,r=new Map,i=new Set;let o=null;n.__v_cache=r;const l=n.suspense,{renderer:{p:a,m:u,um:f,o:{createElement:c}}}=s,d=c("div");s.activate=(v,h,w,b,T)=>{const O=v.component;u(v,h,w,0,l),a(O.vnode,v,h,w,O,l,b,v.slotScopeIds,T),Ge(()=>{O.isDeactivated=!1,O.a&&bn(O.a);const C=v.props&&v.props.onVnodeMounted;C&&ut(C,O.parent,v)},l),Go(O)},s.deactivate=v=>{const h=v.component;u(v,d,null,1,l),Ge(()=>{h.da&&bn(h.da);const w=v.props&&v.props.onVnodeUnmounted;w&&ut(w,h.parent,v),h.isDeactivated=!0},l),Go(h)};function p(v){wo(v),f(v,n,l,!0)}function g(v){r.forEach((h,w)=>{const b=_r(h.type);b&&(!v||!v(b))&&E(w)})}function E(v){const h=r.get(v);!o||!Pt(h,o)?p(h):o&&wo(o),r.delete(v),i.delete(v)}ve(()=>[e.include,e.exclude],([v,h])=>{v&&g(w=>Xs(v,w)),h&&g(w=>!Xs(h,w))},{flush:"post",deep:!0});let S=null;const y=()=>{S!=null&&r.set(S,So(n.subTree))};return cs(y),Pr(y),no(()=>{r.forEach(v=>{const{subTree:h,suspense:w}=n,b=So(h);if(v.type===b.type&&v.key===b.key){wo(b);const T=b.component.da;T&&Ge(T,w);return}p(v)})}),()=>{if(S=null,!t.default)return null;const v=t.default(),h=v[0];if(v.length>1)return M("KeepAlive should contain exactly one component child."),o=null,v;if(!Rn(h)||!(h.shapeFlag&4)&&!(h.shapeFlag&128))return o=null,h;let w=So(h);const b=w.type,T=_r(es(w)?w.type.__asyncResolved||{}:b),{include:O,exclude:C,max:A}=e;if(O&&(!T||!Xs(O,T))||C&&T&&Xs(C,T))return o=w,h;const x=w.key==null?b:w.key,k=r.get(x);return w.el&&(w=Ot(w),h.shapeFlag&128&&(h.ssContent=w)),S=x,k?(w.el=k.el,w.component=k.component,w.transition&&is(w,w.transition),w.shapeFlag|=512,i.delete(x),i.add(x)):(i.add(x),A&&i.size>parseInt(A,10)&&E(i.values().next().value)),w.shapeFlag|=256,o=w,Kf(h.type)?h:w}}},Zg=Qg;function Xs(e,t){return K(e)?e.some(n=>Xs(n,t)):ne(e)?e.split(",").includes(t):om(e)?e.test(t):!1}function Zf(e,t){td(e,"a",t)}function ed(e,t){td(e,"da",t)}function td(e,t,n=Fe){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(to(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Bs(r.parent.vnode)&&ey(s,t,n,r),r=r.parent}}function ey(e,t,n,s){const r=to(t,e,s,!0);Ir(()=>{jl(s[t],r)},n)}function wo(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function So(e){return e.shapeFlag&128?e.ssContent:e}function to(e,t,n=Fe,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;Mn();const l=ls(n),a=At(t,n,e,o);return l(),$n(),a});return s?r.unshift(i):r.push(i),i}else{const r=Bt(Ji[e].replace(/ hook$/,""));M(`${r} 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 on=e=>(t,n=Fe)=>(!wa||e==="sp")&&to(e,(...s)=>t(...s),n),nd=on("bm"),cs=on("m"),sd=on("bu"),Pr=on("u"),no=on("bum"),Ir=on("um"),rd=on("sp"),id=on("rtg"),od=on("rtc");function ld(e,t=Fe){to("ec",e,t)}function ty(e,t,n,s){let r;const i=n&&n[s];if(K(e)||ne(e)){r=new Array(e.length);for(let o=0,l=e.length;ot(o,l,void 0,i&&i[l]));else{const o=Object.keys(e);r=new Array(o.length);for(let l=0,a=o.length;l{const i=s.fn(...r);return i&&(i.key=s.key),i}:s.fn)}return e}function sy(e,t,n={},s,r){if(ke.isCE||ke.parent&&es(ke.parent)&&ke.parent.isCE)return t!=="default"&&(n.name=t),Oe("slot",n,s&&s());let i=e[t];i&&i.length>1&&(M("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."),i=()=>[]),i&&i._c&&(i._d=!1),so();const o=i&&ad(i(n)),l=ya(Be,{key:n.key||o&&o.key||`_${t}`},o||(s?s():[]),o&&e._===1?64:-2);return!r&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),i&&i._c&&(i._d=!0),l}function ad(e){return e.some(t=>Rn(t)?!(t.type===Le||t.type===Be&&!ad(t.children)):!0)?e:null}function ry(e,t){const n={};if(!me(e))return M("v-on with no argument expects an object value."),n;for(const s in e)n[t&&/[A-Z]/.test(s)?`on:${s}`:Bt(s)]=e[s];return n}const Xo=e=>e?kd(e)?io(e)||e.proxy:Xo(e.parent):null,ts=ue(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>Kn(e.props),$attrs:e=>Kn(e.attrs),$slots:e=>Kn(e.slots),$refs:e=>Kn(e.refs),$parent:e=>Xo(e.parent),$root:e=>Xo(e.root),$emit:e=>e.emit,$options:e=>ma(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Rr(e.update)}),$nextTick:e=>e.n||(e.n=Ln.bind(e.proxy)),$watch:e=>Gg.bind(e)}),ha=e=>e==="_"||e==="$",Eo=(e,t)=>e!==ge&&!e.__isScriptSetup&&pe(e,t),nr={get({_:e},t){const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:a}=e;if(t==="__isVue")return!0;let u;if(t[0]!=="$"){const p=o[t];if(p!==void 0)switch(p){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(Eo(s,t))return o[t]=1,s[t];if(r!==ge&&pe(r,t))return o[t]=2,r[t];if((u=e.propsOptions[0])&&pe(u,t))return o[t]=3,i[t];if(n!==ge&&pe(n,t))return o[t]=4,n[t];Qo&&(o[t]=0)}}const f=ts[t];let c,d;if(f)return t==="$attrs"?(rt(e,"get",t),Ei()):t==="$slots"&&rt(e,"get",t),f(e);if((c=l.__cssModules)&&(c=c[t]))return c;if(n!==ge&&pe(n,t))return o[t]=4,n[t];if(d=a.config.globalProperties,pe(d,t))return d[t];ke&&(!ne(t)||t.indexOf("__v")!==0)&&(r!==ge&&ha(t[0])&&pe(r,t)?M(`Property ${JSON.stringify(t)} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.`):e===ke&&M(`Property ${JSON.stringify(t)} was accessed during render but is not defined on instance.`))},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return Eo(r,t)?(r[t]=n,!0):r.__isScriptSetup&&pe(r,t)?(M(`Cannot mutate + + + + + + + +
+ + +