diff --git a/404.html b/404.html new file mode 100644 index 0000000..5751dcf --- /dev/null +++ b/404.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + +

404

There's nothing here.
Take me home
+ + + diff --git a/assets/404.html-OWTotRQR.js b/assets/404.html-OWTotRQR.js new file mode 100644 index 0000000..473d83b --- /dev/null +++ b/assets/404.html-OWTotRQR.js @@ -0,0 +1 @@ +import{_ as e,c as o,b as n,o as a}from"./app-CpFOj0gG.js";const l={};function r(s,t){return a(),o("div",null,t[0]||(t[0]=[n("p",null,"404 Not Found",-1)]))}const _=e(l,[["render",r],["__file","404.html.vue"]]),i=JSON.parse('{"path":"/404.html","title":"","lang":"en-US","frontmatter":{"layout":"NotFound"},"headers":[],"git":{},"filePathRelative":null}');export{_ as comp,i as data}; diff --git a/assets/addFeature-aCwmUT5B.png b/assets/addFeature-aCwmUT5B.png new file mode 100644 index 0000000..0aba48d Binary files /dev/null and b/assets/addFeature-aCwmUT5B.png differ diff --git a/assets/alphago-D7ibr0g1.png b/assets/alphago-D7ibr0g1.png new file mode 100644 index 0000000..ee406eb Binary files /dev/null and b/assets/alphago-D7ibr0g1.png differ diff --git a/assets/app-CpFOj0gG.js b/assets/app-CpFOj0gG.js new file mode 100644 index 0000000..416605e --- /dev/null +++ b/assets/app-CpFOj0gG.js @@ -0,0 +1,42 @@ +const Qf="modulepreload",ed=function(e){return"/learning-ai/"+e},Hi={},Nt=function(t,n,r){let o=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),a=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));o=Promise.allSettled(n.map(l=>{if(l=ed(l),l in Hi)return;Hi[l]=!0;const u=l.endsWith(".css"),c=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${c}`))return;const f=document.createElement("link");if(f.rel=u?"stylesheet":Qf,u||(f.as="script"),f.crossOrigin="",f.href=l,a&&f.setAttribute("nonce",a),document.head.appendChild(f),u)return new Promise((d,p)=>{f.addEventListener("load",d),f.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${l}`)))})}))}function s(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return o.then(i=>{for(const a of i||[])a.status==="rejected"&&s(a.reason);return t().catch(s)})};/** +* @vue/shared v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function Yn(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Se={},Rn=[],kt=()=>{},td=()=>!1,Hr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ws=e=>e.startsWith("onUpdate:"),Ne=Object.assign,qs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},nd=Object.prototype.hasOwnProperty,pe=(e,t)=>nd.call(e,t),re=Array.isArray,Ln=e=>wo(e)==="[object Map]",ou=e=>wo(e)==="[object Set]",oe=e=>typeof e=="function",Oe=e=>typeof e=="string",$t=e=>typeof e=="symbol",Te=e=>e!==null&&typeof e=="object",su=e=>(Te(e)||oe(e))&&oe(e.then)&&oe(e.catch),iu=Object.prototype.toString,wo=e=>iu.call(e),rd=e=>wo(e).slice(8,-1),au=e=>wo(e)==="[object Object]",Gs=e=>Oe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Dn=Yn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),To=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},od=/-(\w)/g,rt=To(e=>e.replace(od,(t,n)=>n?n.toUpperCase():"")),sd=/\B([A-Z])/g,Ut=To(e=>e.replace(sd,"-$1").toLowerCase()),Br=To(e=>e.charAt(0).toUpperCase()+e.slice(1)),Wo=To(e=>e?`on${Br(e)}`:""),en=(e,t)=>!Object.is(e,t),qo=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},id=e=>{const t=parseFloat(e);return isNaN(t)?e:t},ad=e=>{const t=Oe(e)?Number(e):NaN;return isNaN(t)?e:t};let Bi;const Oo=()=>Bi||(Bi=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Xn(e){if(re(e)){const t={};for(let n=0;n{if(n){const r=n.split(ud);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function dd(e){if(!e)return"";if(Oe(e))return e;let t="";for(const n in e){const r=e[n];if(Oe(r)||typeof r=="number"){const o=n.startsWith("--")?n:Ut(n);t+=`${o}:${r};`}}return t}function nt(e){let t="";if(Oe(e))t=e;else if(re(e))for(let n=0;n?@[\\\]^`{|}~]/g;function vd(e,t){return e.replace(_d,n=>`\\${n}`)}const uu=e=>!!(e&&e.__v_isRef===!0),Ie=e=>Oe(e)?e:e==null?"":re(e)||Te(e)&&(e.toString===iu||!oe(e.toString))?uu(e)?Ie(e.value):JSON.stringify(e,cu,2):String(e),cu=(e,t)=>uu(t)?cu(e,t.value):Ln(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,o],s)=>(n[Go(r,s)+" =>"]=o,n),{})}:ou(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Go(n))}:$t(t)?Go(t):Te(t)&&!re(t)&&!au(t)?String(t):t,Go=(e,t="")=>{var n;return $t(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Ye;class yd{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Ye,!t&&Ye&&(this.index=(Ye.scopes||(Ye.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;if(_r){let t=_r;for(_r=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;gr;){let t=gr;for(gr=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function mu(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function gu(e){let t,n=e.depsTail,r=n;for(;r;){const o=r.prevDep;r.version===-1?(r===n&&(n=o),Js(r),Ed(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=o}e.deps=t,e.depsTail=n}function _s(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(_u(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function _u(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Cr))return;e.globalVersion=Cr;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!_s(e)){e.flags&=-3;return}const n=Ce,r=vt;Ce=e,vt=!0;try{mu(e);const o=e.fn(e._value);(t.version===0||en(o,e._value))&&(e._value=o,t.version++)}catch(o){throw t.version++,o}finally{Ce=n,vt=r,gu(e),e.flags&=-3}}function Js(e,t=!1){const{dep:n,prevSub:r,nextSub:o}=e;if(r&&(r.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let s=n.computed.deps;s;s=s.nextDep)Js(s,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Ed(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let vt=!0;const vu=[];function jt(){vu.push(vt),vt=!1}function zt(){const e=vu.pop();vt=e===void 0?!0:e}function Ui(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Ce;Ce=void 0;try{t()}finally{Ce=n}}}let Cr=0;class Sd{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class xo{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!Ce||!vt||Ce===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Ce)n=this.activeLink=new Sd(Ce,this),Ce.deps?(n.prevDep=Ce.depsTail,Ce.depsTail.nextDep=n,Ce.depsTail=n):Ce.deps=Ce.depsTail=n,yu(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=Ce.depsTail,n.nextDep=void 0,Ce.depsTail.nextDep=n,Ce.depsTail=n,Ce.deps===n&&(Ce.deps=r)}return n}trigger(t){this.version++,Cr++,this.notify(t)}notify(t){Xs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Zs()}}}function yu(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)yu(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const ho=new WeakMap,En=Symbol(""),vs=Symbol(""),wr=Symbol("");function Ke(e,t,n){if(vt&&Ce){let r=ho.get(e);r||ho.set(e,r=new Map);let o=r.get(n);o||(r.set(n,o=new xo),o.map=r,o.key=n),o.track()}}function Ht(e,t,n,r,o,s){const i=ho.get(e);if(!i){Cr++;return}const a=l=>{l&&l.trigger()};if(Xs(),t==="clear")i.forEach(a);else{const l=re(e),u=l&&Gs(n);if(l&&n==="length"){const c=Number(r);i.forEach((f,d)=>{(d==="length"||d===wr||!$t(d)&&d>=c)&&a(f)})}else switch((n!==void 0||i.has(void 0))&&a(i.get(n)),u&&a(i.get(wr)),t){case"add":l?u&&a(i.get("length")):(a(i.get(En)),Ln(e)&&a(i.get(vs)));break;case"delete":l||(a(i.get(En)),Ln(e)&&a(i.get(vs)));break;case"set":Ln(e)&&a(i.get(En));break}}Zs()}function Ad(e,t){const n=ho.get(e);return n&&n.get(t)}function On(e){const t=ue(e);return t===e?t:(Ke(t,"iterate",wr),mt(e)?t:t.map(We))}function ko(e){return Ke(e=ue(e),"iterate",wr),e}const Cd={__proto__:null,[Symbol.iterator](){return Xo(this,Symbol.iterator,We)},concat(...e){return On(this).concat(...e.map(t=>re(t)?On(t):t))},entries(){return Xo(this,"entries",e=>(e[1]=We(e[1]),e))},every(e,t){return It(this,"every",e,t,void 0,arguments)},filter(e,t){return It(this,"filter",e,t,n=>n.map(We),arguments)},find(e,t){return It(this,"find",e,t,We,arguments)},findIndex(e,t){return It(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return It(this,"findLast",e,t,We,arguments)},findLastIndex(e,t){return It(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return It(this,"forEach",e,t,void 0,arguments)},includes(...e){return Zo(this,"includes",e)},indexOf(...e){return Zo(this,"indexOf",e)},join(e){return On(this).join(e)},lastIndexOf(...e){return Zo(this,"lastIndexOf",e)},map(e,t){return It(this,"map",e,t,void 0,arguments)},pop(){return sr(this,"pop")},push(...e){return sr(this,"push",e)},reduce(e,...t){return ji(this,"reduce",e,t)},reduceRight(e,...t){return ji(this,"reduceRight",e,t)},shift(){return sr(this,"shift")},some(e,t){return It(this,"some",e,t,void 0,arguments)},splice(...e){return sr(this,"splice",e)},toReversed(){return On(this).toReversed()},toSorted(e){return On(this).toSorted(e)},toSpliced(...e){return On(this).toSpliced(...e)},unshift(...e){return sr(this,"unshift",e)},values(){return Xo(this,"values",We)}};function Xo(e,t,n){const r=ko(e),o=r[t]();return r!==e&&!mt(e)&&(o._next=o.next,o.next=()=>{const s=o._next();return s.value&&(s.value=n(s.value)),s}),o}const wd=Array.prototype;function It(e,t,n,r,o,s){const i=ko(e),a=i!==e&&!mt(e),l=i[t];if(l!==wd[t]){const f=l.apply(e,s);return a?We(f):f}let u=n;i!==e&&(a?u=function(f,d){return n.call(this,We(f),d,e)}:n.length>2&&(u=function(f,d){return n.call(this,f,d,e)}));const c=l.call(i,u,r);return a&&o?o(c):c}function ji(e,t,n,r){const o=ko(e);let s=n;return o!==e&&(mt(e)?n.length>3&&(s=function(i,a,l){return n.call(this,i,a,l,e)}):s=function(i,a,l){return n.call(this,i,We(a),l,e)}),o[t](s,...r)}function Zo(e,t,n){const r=ue(e);Ke(r,"iterate",wr);const o=r[t](...n);return(o===-1||o===!1)&&ti(n[0])?(n[0]=ue(n[0]),r[t](...n)):o}function sr(e,t,n=[]){jt(),Xs();const r=ue(e)[t].apply(e,n);return Zs(),zt(),r}const Td=Yn("__proto__,__v_isRef,__isVue"),bu=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter($t));function Od(e){$t(e)||(e=String(e));const t=ue(this);return Ke(t,"has",e),t.hasOwnProperty(e)}class Eu{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){if(n==="__v_skip")return t.__v_skip;const o=this._isReadonly,s=this._isShallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return s;if(n==="__v_raw")return r===(o?s?Md:wu:s?Cu:Au).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=re(t);if(!o){let l;if(i&&(l=Cd[n]))return l;if(n==="hasOwnProperty")return Od}const a=Reflect.get(t,n,De(t)?t:r);return($t(n)?bu.has(n):Td(n))||(o||Ke(t,"get",n),s)?a:De(a)?i&&Gs(n)?a:a.value:Te(a)?o?Po(a):$r(a):a}}class Su extends Eu{constructor(t=!1){super(!1,t)}set(t,n,r,o){let s=t[n];if(!this._isShallow){const l=Cn(s);if(!mt(r)&&!Cn(r)&&(s=ue(s),r=ue(r)),!re(t)&&De(s)&&!De(r))return l?!1:(s.value=r,!0)}const i=re(t)&&Gs(n)?Number(n)e,Gr=e=>Reflect.getPrototypeOf(e);function Rd(e,t,n){return function(...r){const o=this.__v_raw,s=ue(o),i=Ln(s),a=e==="entries"||e===Symbol.iterator&&i,l=e==="keys"&&i,u=o[e](...r),c=n?ys:t?bs:We;return!t&&Ke(s,"iterate",l?vs:En),{next(){const{value:f,done:d}=u.next();return d?{value:f,done:d}:{value:a?[c(f[0]),c(f[1])]:c(f),done:d}},[Symbol.iterator](){return this}}}}function Yr(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Ld(e,t){const n={get(o){const s=this.__v_raw,i=ue(s),a=ue(o);e||(en(o,a)&&Ke(i,"get",o),Ke(i,"get",a));const{has:l}=Gr(i),u=t?ys:e?bs:We;if(l.call(i,o))return u(s.get(o));if(l.call(i,a))return u(s.get(a));s!==i&&s.get(o)},get size(){const o=this.__v_raw;return!e&&Ke(ue(o),"iterate",En),Reflect.get(o,"size",o)},has(o){const s=this.__v_raw,i=ue(s),a=ue(o);return e||(en(o,a)&&Ke(i,"has",o),Ke(i,"has",a)),o===a?s.has(o):s.has(o)||s.has(a)},forEach(o,s){const i=this,a=i.__v_raw,l=ue(a),u=t?ys:e?bs:We;return!e&&Ke(l,"iterate",En),a.forEach((c,f)=>o.call(s,u(c),u(f),i))}};return Ne(n,e?{add:Yr("add"),set:Yr("set"),delete:Yr("delete"),clear:Yr("clear")}:{add(o){!t&&!mt(o)&&!Cn(o)&&(o=ue(o));const s=ue(this);return Gr(s).has.call(s,o)||(s.add(o),Ht(s,"add",o,o)),this},set(o,s){!t&&!mt(s)&&!Cn(s)&&(s=ue(s));const i=ue(this),{has:a,get:l}=Gr(i);let u=a.call(i,o);u||(o=ue(o),u=a.call(i,o));const c=l.call(i,o);return i.set(o,s),u?en(s,c)&&Ht(i,"set",o,s):Ht(i,"add",o,s),this},delete(o){const s=ue(this),{has:i,get:a}=Gr(s);let l=i.call(s,o);l||(o=ue(o),l=i.call(s,o)),a&&a.call(s,o);const u=s.delete(o);return l&&Ht(s,"delete",o,void 0),u},clear(){const o=ue(this),s=o.size!==0,i=o.clear();return s&&Ht(o,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(o=>{n[o]=Rd(o,e,t)}),n}function Qs(e,t){const n=Ld(e,t);return(r,o,s)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?r:Reflect.get(pe(n,o)&&o in r?n:r,o,s)}const Dd={get:Qs(!1,!1)},Nd={get:Qs(!1,!0)},Vd={get:Qs(!0,!1)};const Au=new WeakMap,Cu=new WeakMap,wu=new WeakMap,Md=new WeakMap;function Fd(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Hd(e){return e.__v_skip||!Object.isExtensible(e)?0:Fd(rd(e))}function $r(e){return Cn(e)?e:ei(e,!1,kd,Dd,Au)}function Tu(e){return ei(e,!1,Id,Nd,Cu)}function Po(e){return ei(e,!0,Pd,Vd,wu)}function ei(e,t,n,r,o){if(!Te(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const s=o.get(e);if(s)return s;const i=Hd(e);if(i===0)return e;const a=new Proxy(e,i===2?r:n);return o.set(e,a),a}function Nn(e){return Cn(e)?Nn(e.__v_raw):!!(e&&e.__v_isReactive)}function Cn(e){return!!(e&&e.__v_isReadonly)}function mt(e){return!!(e&&e.__v_isShallow)}function ti(e){return e?!!e.__v_raw:!1}function ue(e){const t=e&&e.__v_raw;return t?ue(t):e}function Bd(e){return!pe(e,"__v_skip")&&Object.isExtensible(e)&&$n(e,"__v_skip",!0),e}const We=e=>Te(e)?$r(e):e,bs=e=>Te(e)?Po(e):e;function De(e){return e?e.__v_isRef===!0:!1}function ve(e){return Ou(e,!1)}function bt(e){return Ou(e,!0)}function Ou(e,t){return De(e)?e:new $d(e,t)}class $d{constructor(t,n){this.dep=new xo,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:ue(t),this._value=n?t:We(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||mt(t)||Cn(t);t=r?t:ue(t),en(t,n)&&(this._rawValue=t,this._value=r?t:We(t),this.dep.trigger())}}function Qt(e){return De(e)?e.value:e}const Ud={get:(e,t,n)=>t==="__v_raw"?e:Qt(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return De(o)&&!De(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function xu(e){return Nn(e)?e:new Proxy(e,Ud)}class jd{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new xo,{get:r,set:o}=t(n.track.bind(n),n.trigger.bind(n));this._get=r,this._set=o}get value(){return this._value=this._get()}set value(t){this._set(t)}}function zd(e){return new jd(e)}function ku(e){const t=re(e)?new Array(e.length):{};for(const n in e)t[n]=Pu(e,n);return t}class Kd{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Ad(ue(this._object),this._key)}}class Wd{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function qd(e,t,n){return De(e)?e:oe(e)?new Wd(e):Te(e)&&arguments.length>1?Pu(e,t,n):ve(e)}function Pu(e,t,n){const r=e[t];return De(r)?r:new Kd(e,t,n)}class Gd{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new xo(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Cr-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&Ce!==this)return hu(this,!0),!0}get value(){const t=this.dep.track();return _u(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Yd(e,t,n=!1){let r,o;return oe(e)?r=e:(r=e.get,o=e.set),new Gd(r,o,n)}const Xr={},mo=new WeakMap;let mn;function Xd(e,t=!1,n=mn){if(n){let r=mo.get(n);r||mo.set(n,r=[]),r.push(e)}}function Zd(e,t,n=Se){const{immediate:r,deep:o,once:s,scheduler:i,augmentJob:a,call:l}=n,u=y=>o?y:mt(y)||o===!1||o===0?Bt(y,1):Bt(y);let c,f,d,p,_=!1,v=!1;if(De(e)?(f=()=>e.value,_=mt(e)):Nn(e)?(f=()=>u(e),_=!0):re(e)?(v=!0,_=e.some(y=>Nn(y)||mt(y)),f=()=>e.map(y=>{if(De(y))return y.value;if(Nn(y))return u(y);if(oe(y))return l?l(y,2):y()})):oe(e)?t?f=l?()=>l(e,2):e:f=()=>{if(d){jt();try{d()}finally{zt()}}const y=mn;mn=c;try{return l?l(e,3,[p]):e(p)}finally{mn=y}}:f=kt,t&&o){const y=f,L=o===!0?1/0:o;f=()=>Bt(y(),L)}const b=fu(),E=()=>{c.stop(),b&&b.active&&qs(b.effects,c)};if(s&&t){const y=t;t=(...L)=>{y(...L),E()}}let A=v?new Array(e.length).fill(Xr):Xr;const m=y=>{if(!(!(c.flags&1)||!c.dirty&&!y))if(t){const L=c.run();if(o||_||(v?L.some((W,M)=>en(W,A[M])):en(L,A))){d&&d();const W=mn;mn=c;try{const M=[L,A===Xr?void 0:v&&A[0]===Xr?[]:A,p];l?l(t,3,M):t(...M),A=L}finally{mn=W}}}else c.run()};return a&&a(m),c=new du(f),c.scheduler=i?()=>i(m,!1):m,p=y=>Xd(y,!1,c),d=c.onStop=()=>{const y=mo.get(c);if(y){if(l)l(y,4);else for(const L of y)L();mo.delete(c)}},t?r?m(!0):A=c.run():i?i(m.bind(null,!0),!0):c.run(),E.pause=c.pause.bind(c),E.resume=c.resume.bind(c),E.stop=E,E}function Bt(e,t=1/0,n){if(t<=0||!Te(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,De(e))Bt(e.value,t,n);else if(re(e))for(let r=0;r{Bt(r,t,n)});else if(au(e)){for(const r in e)Bt(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Bt(e[r],t,n)}return e}/** +* @vue/runtime-core v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const vr=[];let Jo=!1;function Gt(e,...t){if(Jo)return;Jo=!0,jt();const n=vr.length?vr[vr.length-1].component:null,r=n&&n.appContext.config.warnHandler,o=Jd();if(r)Zn(r,n,11,[e+t.map(s=>{var i,a;return(a=(i=s.toString)==null?void 0:i.call(s))!=null?a:JSON.stringify(s)}).join(""),n&&n.proxy,o.map(({vnode:s})=>`at <${yc(n,s.type)}>`).join(` +`),o]);else{const s=[`[Vue warn]: ${e}`,...t];o.length&&s.push(` +`,...Qd(o)),console.warn(...s)}zt(),Jo=!1}function Jd(){let e=vr[vr.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 r=e.component&&e.component.parent;e=r&&r.vnode}return t}function Qd(e){const t=[];return e.forEach((n,r)=>{t.push(...r===0?[]:[` +`],...ep(n))}),t}function ep({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",r=e.component?e.component.parent==null:!1,o=` at <${yc(e.component,e.type,r)}`,s=">"+n;return e.props?[o,...tp(e.props),s]:[o+s]}function tp(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach(r=>{t.push(...Iu(r,e[r]))}),n.length>3&&t.push(" ..."),t}function Iu(e,t,n){return Oe(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?n?t:[`${e}=${t}`]:De(t)?(t=Iu(e,ue(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):oe(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=ue(t),n?t:[`${e}=`,t])}function Zn(e,t,n,r){try{return r?e(...r):e()}catch(o){Ur(o,t,n)}}function Et(e,t,n,r){if(oe(e)){const o=Zn(e,t,n,r);return o&&su(o)&&o.catch(s=>{Ur(s,t,n)}),o}if(re(e)){const o=[];for(let s=0;s>>1,o=Xe[r],s=Tr(o);s=Tr(n)?Xe.push(e):Xe.splice(rp(t),0,e),e.flags|=1,Lu()}}function Lu(){go||(go=Ru.then(Du))}function op(e){re(e)?Vn.push(...e):Yt&&e.id===-1?Yt.splice(Pn+1,0,e):e.flags&1||(Vn.push(e),e.flags|=1),Lu()}function zi(e,t,n=Tt+1){for(;nTr(n)-Tr(r));if(Vn.length=0,Yt){Yt.push(...t);return}for(Yt=t,Pn=0;Pne.id==null?e.flags&2?-1:1/0:e.id;function Du(e){try{for(Tt=0;Ttxt.emit(o,...s)),fr=[]):typeof window<"u"&&window.HTMLElement&&!((r=(n=window.navigator)==null?void 0:n.userAgent)!=null&&r.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(s=>{Nu(s,t)}),setTimeout(()=>{xt||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,Es=!0,fr=[])},3e3)):(Es=!0,fr=[])}function sp(e,t){Io("app:init",e,t,{Fragment:ge,Text:tn,Comment:je,Static:Fn})}function ip(e){Io("app:unmount",e)}const ap=ri("component:added"),Vu=ri("component:updated"),lp=ri("component:removed"),up=e=>{xt&&typeof xt.cleanupBuffer=="function"&&!xt.cleanupBuffer(e)&&lp(e)};/*! #__NO_SIDE_EFFECTS__ */function ri(e){return t=>{Io(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}function cp(e,t,n){Io("component:emit",e.appContext.app,e,t,n)}let $e=null,Mu=null;function vo(e){const t=$e;return $e=e,Mu=e&&e.type.__scopeId||null,t}function Ve(e,t=$e,n){if(!t||e._n)return e;const r=(...o)=>{r._d&&sa(-1);const s=vo(t);let i;try{i=e(...o)}finally{vo(s),r._d&&sa(1)}return Vu(t),i};return r._n=!0,r._c=!0,r._d=!0,r}function yo(e,t){if($e===null)return e;const n=No($e),r=e.dirs||(e.dirs=[]);for(let o=0;oe.__isTeleport,Xt=Symbol("_leaveCb"),Zr=Symbol("_enterCb");function dp(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Je(()=>{e.isMounted=!0}),si(()=>{e.isUnmounting=!0}),e}const dt=[Function,Array],Hu={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:dt,onEnter:dt,onAfterEnter:dt,onEnterCancelled:dt,onBeforeLeave:dt,onLeave:dt,onAfterLeave:dt,onLeaveCancelled:dt,onBeforeAppear:dt,onAppear:dt,onAfterAppear:dt,onAppearCancelled:dt},Bu=e=>{const t=e.subTree;return t.component?Bu(t.component):t},pp={name:"BaseTransition",props:Hu,setup(e,{slots:t}){const n=Qn(),r=dp();return()=>{const o=t.default&&ju(t.default(),!0);if(!o||!o.length)return;const s=$u(o),i=ue(e),{mode:a}=i;if(r.isLeaving)return Qo(s);const l=Ki(s);if(!l)return Qo(s);let u=Ss(l,i,r,n,f=>u=f);l.type!==je&&Or(l,u);let c=n.subTree&&Ki(n.subTree);if(c&&c.type!==je&&!vn(l,c)&&Bu(n).type!==je){let f=Ss(c,i,r,n);if(Or(c,f),a==="out-in"&&l.type!==je)return r.isLeaving=!0,f.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete f.afterLeave,c=void 0},Qo(s);a==="in-out"&&l.type!==je?f.delayLeave=(d,p,_)=>{const v=Uu(r,c);v[String(c.key)]=c,d[Xt]=()=>{p(),d[Xt]=void 0,delete u.delayedLeave,c=void 0},u.delayedLeave=()=>{_(),delete u.delayedLeave,c=void 0}}:c=void 0}else c&&(c=void 0);return s}}};function $u(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==je){t=n;break}}return t}const hp=pp;function Uu(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Ss(e,t,n,r,o){const{appear:s,mode:i,persisted:a=!1,onBeforeEnter:l,onEnter:u,onAfterEnter:c,onEnterCancelled:f,onBeforeLeave:d,onLeave:p,onAfterLeave:_,onLeaveCancelled:v,onBeforeAppear:b,onAppear:E,onAfterAppear:A,onAppearCancelled:m}=t,y=String(e.key),L=Uu(n,e),W=(U,O)=>{U&&Et(U,r,9,O)},M=(U,O)=>{const B=O[1];W(U,O),re(U)?U.every(C=>C.length<=1)&&B():U.length<=1&&B()},w={mode:i,persisted:a,beforeEnter(U){let O=l;if(!n.isMounted)if(s)O=b||l;else return;U[Xt]&&U[Xt](!0);const B=L[y];B&&vn(e,B)&&B.el[Xt]&&B.el[Xt](),W(O,[U])},enter(U){let O=u,B=c,C=f;if(!n.isMounted)if(s)O=E||u,B=A||c,C=m||f;else return;let D=!1;const Z=U[Zr]=ee=>{D||(D=!0,ee?W(C,[U]):W(B,[U]),w.delayedLeave&&w.delayedLeave(),U[Zr]=void 0)};O?M(O,[U,Z]):Z()},leave(U,O){const B=String(e.key);if(U[Zr]&&U[Zr](!0),n.isUnmounting)return O();W(d,[U]);let C=!1;const D=U[Xt]=Z=>{C||(C=!0,O(),Z?W(v,[U]):W(_,[U]),U[Xt]=void 0,L[B]===e&&delete L[B])};L[B]=e,p?M(p,[U,D]):D()},clone(U){const O=Ss(U,t,n,r,o);return o&&o(O),O}};return w}function Qo(e){if(jr(e))return e=rn(e),e.children=null,e}function Ki(e){if(!jr(e))return Fu(e.type)&&e.children?$u(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&oe(n.default))return n.default()}}function Or(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Or(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 ju(e,t=!1,n){let r=[],o=0;for(let s=0;s1)for(let s=0;sn.value,set:s=>n.value=s})}return n}function xr(e,t,n,r,o=!1){if(re(e)){e.forEach((_,v)=>xr(_,t&&(re(t)?t[v]:t),n,r,o));return}if(Sn(r)&&!o){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&xr(e,t,n,r.component.subTree);return}const s=r.shapeFlag&4?No(r.component):r.el,i=o?null:s,{i:a,r:l}=e,u=t&&t.r,c=a.refs===Se?a.refs={}:a.refs,f=a.setupState,d=ue(f),p=f===Se?()=>!1:_=>pe(d,_);if(u!=null&&u!==l&&(Oe(u)?(c[u]=null,p(u)&&(f[u]=null)):De(u)&&(u.value=null)),oe(l))Zn(l,a,12,[i,c]);else{const _=Oe(l),v=De(l);if(_||v){const b=()=>{if(e.f){const E=_?p(l)?f[l]:c[l]:l.value;o?re(E)&&qs(E,s):re(E)?E.includes(s)||E.push(s):_?(c[l]=[s],p(l)&&(f[l]=c[l])):(l.value=[s],e.k&&(c[e.k]=l.value))}else _?(c[l]=i,p(l)&&(f[l]=i)):v&&(l.value=i,e.k&&(c[e.k]=i))};i?(b.id=-1,at(b,n)):b()}}}let qi=!1;const cn=()=>{qi||(console.error("Hydration completed but contains mismatches."),qi=!0)},mp=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",gp=e=>e.namespaceURI.includes("MathML"),Jr=e=>{if(e.nodeType===1){if(mp(e))return"svg";if(gp(e))return"mathml"}},_n=e=>e.nodeType===8;function _p(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:s,parentNode:i,remove:a,insert:l,createComment:u}}=e,c=(m,y)=>{if(!y.hasChildNodes()){Gt("Attempting to hydrate existing markup but container is empty. Performing full mount instead."),n(null,m,y),_o(),y._vnode=m;return}f(y.firstChild,m,null,null,null),_o(),y._vnode=m},f=(m,y,L,W,M,w=!1)=>{w=w||!!y.dynamicChildren;const U=_n(m)&&m.data==="[",O=()=>v(m,y,L,W,M,U),{type:B,ref:C,shapeFlag:D,patchFlag:Z}=y;let ee=m.nodeType;y.el=m,$n(m,"__vnode",y,!0),$n(m,"__vueParentComponent",L,!0),Z===-2&&(w=!1,y.dynamicChildren=null);let I=null;switch(B){case tn:ee!==3?y.children===""?(l(y.el=o(""),i(m),m),I=m):I=O():(m.data!==y.children&&(Gt("Hydration text mismatch in",m.parentNode,` + - rendered on server: ${JSON.stringify(m.data)} + - expected on client: ${JSON.stringify(y.children)}`),cn(),m.data=y.children),I=s(m));break;case je:A(m)?(I=s(m),E(y.el=m.content.firstChild,m,L)):ee!==8||U?I=O():I=s(m);break;case Fn:if(U&&(m=s(m),ee=m.nodeType),ee===1||ee===3){I=m;const N=!y.children.length;for(let z=0;z{w=w||!!y.dynamicChildren;const{type:U,props:O,patchFlag:B,shapeFlag:C,dirs:D,transition:Z}=y,ee=U==="input"||U==="option";if(ee||B!==-1){D&&Ot(y,null,L,"created");let I=!1;if(A(m)){I=sc(null,Z)&&L&&L.vnode.props&&L.vnode.props.appear;const z=m.content.firstChild;I&&Z.beforeEnter(z),E(z,m,L),y.el=m=z}if(C&16&&!(O&&(O.innerHTML||O.textContent))){let z=p(m.firstChild,y,m,L,W,M,w),le=!1;for(;z;){dr(m,1)||(le||(Gt("Hydration children mismatch on",m,` +Server rendered element contains more child nodes than client vdom.`),le=!0),cn());const ye=z;z=z.nextSibling,a(ye)}}else if(C&8){let z=y.children;z[0]===` +`&&(m.tagName==="PRE"||m.tagName==="TEXTAREA")&&(z=z.slice(1)),m.textContent!==z&&(dr(m,0)||(Gt("Hydration text content mismatch on",m,` + - rendered on server: ${m.textContent} + - expected on client: ${y.children}`),cn()),m.textContent=y.children)}if(O){const z=m.tagName.includes("-");for(const le in O)!(D&&D.some(ye=>ye.dir.created))&&vp(m,le,O[le],y,L)&&cn(),(ee&&(le.endsWith("value")||le==="indeterminate")||Hr(le)&&!Dn(le)||le[0]==="."||z)&&r(m,le,null,O[le],void 0,L)}let N;(N=O&&O.onVnodeBeforeMount)&&pt(N,L,y),D&&Ot(y,null,L,"beforeMount"),((N=O&&O.onVnodeMounted)||D||I)&&pc(()=>{N&&pt(N,L,y),I&&Z.enter(m),D&&Ot(y,null,L,"mounted")},W)}return m.nextSibling},p=(m,y,L,W,M,w,U)=>{U=U||!!y.dynamicChildren;const O=y.children,B=O.length;let C=!1;for(let D=0;D{const{slotScopeIds:U}=y;U&&(M=M?M.concat(U):U);const O=i(m),B=p(s(m),y,O,L,W,M,w);return B&&_n(B)&&B.data==="]"?s(y.anchor=B):(cn(),l(y.anchor=u("]"),O,B),B)},v=(m,y,L,W,M,w)=>{if(dr(m.parentElement,1)||(Gt(`Hydration node mismatch: +- rendered on server:`,m,m.nodeType===3?"(text)":_n(m)&&m.data==="["?"(start of fragment)":"",` +- expected on client:`,y.type),cn()),y.el=null,w){const B=b(m);for(;;){const C=s(m);if(C&&C!==B)a(C);else break}}const U=s(m),O=i(m);return a(m),n(null,y,O,U,L,W,Jr(O),M),L&&(L.vnode.el=y.el,fc(L,y.el)),U},b=(m,y="[",L="]")=>{let W=0;for(;m;)if(m=s(m),m&&_n(m)&&(m.data===y&&W++,m.data===L)){if(W===0)return s(m);W--}return m},E=(m,y,L)=>{const W=y.parentNode;W&&W.replaceChild(m,y);let M=L;for(;M;)M.vnode.el===y&&(M.vnode.el=M.subTree.el=m),M=M.parent},A=m=>m.nodeType===1&&m.tagName==="TEMPLATE";return[c,f]}function vp(e,t,n,r,o){let s,i,a,l;if(t==="class")a=e.getAttribute("class"),l=nt(n),yp(Gi(a||""),Gi(l))||(s=2,i="class");else if(t==="style"){a=e.getAttribute("style")||"",l=Oe(n)?n:dd(Xn(n));const u=Yi(a),c=Yi(l);if(r.dirs)for(const{dir:f,value:d}of r.dirs)f.name==="show"&&!d&&c.set("display","none");o&&zu(o,r,c),bp(u,c)||(s=3,i="style")}else(e instanceof SVGElement&&md(t)||e instanceof HTMLElement&&($i(t)||hd(t)))&&($i(t)?(a=e.hasAttribute(t),l=Ys(n)):n==null?(a=e.hasAttribute(t),l=!1):(e.hasAttribute(t)?a=e.getAttribute(t):t==="value"&&e.tagName==="TEXTAREA"?a=e.value:a=!1,l=gd(n)?String(n):!1),a!==l&&(s=4,i=t));if(s!=null&&!dr(e,s)){const u=d=>d===!1?"(not rendered)":`${i}="${d}"`,c=`Hydration ${Ku[s]} mismatch on`,f=` + - rendered on server: ${u(a)} + - expected on client: ${u(l)} + Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead. + You should fix the source of the mismatch.`;return Gt(c,e,f),!0}return!1}function Gi(e){return new Set(e.trim().split(/\s+/))}function yp(e,t){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}function Yi(e){const t=new Map;for(const n of e.split(";")){let[r,o]=n.split(":");r=r.trim(),o=o&&o.trim(),r&&o&&t.set(r,o)}return t}function bp(e,t){if(e.size!==t.size)return!1;for(const[n,r]of e)if(r!==t.get(n))return!1;return!0}function zu(e,t,n){const r=e.subTree;if(e.getCssVars&&(t===r||r&&r.type===ge&&r.children.includes(t))){const o=e.getCssVars();for(const s in o)n.set(`--${vd(s)}`,String(o[s]))}t===r&&e.parent&&zu(e.parent,e.vnode,n)}const Xi="data-allow-mismatch",Ku={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function dr(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(Xi);)e=e.parentElement;const n=e&&e.getAttribute(Xi);if(n==null)return!1;if(n==="")return!0;{const r=n.split(",");return t===0&&r.includes("children")?!0:n.split(",").includes(Ku[t])}}Oo().requestIdleCallback;Oo().cancelIdleCallback;function Ep(e,t){if(_n(e)&&e.data==="["){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1){if(t(r)===!1)break}else if(_n(r))if(r.data==="]"){if(--n===0)break}else r.data==="["&&n++;r=r.nextSibling}}else t(e)}const Sn=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function Sp(e){oe(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,hydrate:s,timeout:i,suspensible:a=!0,onError:l}=e;let u=null,c,f=0;const d=()=>(f++,u=null,p()),p=()=>{let _;return u||(_=u=t().catch(v=>{if(v=v instanceof Error?v:new Error(String(v)),l)return new Promise((b,E)=>{l(v,()=>b(d()),()=>E(v),f+1)});throw v}).then(v=>_!==u&&u?u:(v&&(v.__esModule||v[Symbol.toStringTag]==="Module")&&(v=v.default),c=v,v)))};return he({name:"AsyncComponentWrapper",__asyncLoader:p,__asyncHydrate(_,v,b){const E=s?()=>{const A=s(b,m=>Ep(_,m));A&&(v.bum||(v.bum=[])).push(A)}:b;c?E():p().then(()=>!v.isUnmounted&&E())},get __asyncResolved(){return c},setup(){const _=Be;if(oi(_),c)return()=>es(c,_);const v=m=>{u=null,Ur(m,_,13,!r)};if(a&&_.suspense||Un)return p().then(m=>()=>es(m,_)).catch(m=>(v(m),()=>r?ae(r,{error:m}):null));const b=ve(!1),E=ve(),A=ve(!!o);return o&&setTimeout(()=>{A.value=!1},o),i!=null&&setTimeout(()=>{if(!b.value&&!E.value){const m=new Error(`Async component timed out after ${i}ms.`);v(m),E.value=m}},i),p().then(()=>{b.value=!0,_.parent&&jr(_.parent.vnode)&&_.parent.update()}).catch(m=>{v(m),E.value=m}),()=>{if(b.value&&c)return es(c,_);if(E.value&&r)return ae(r,{error:E.value});if(n&&!A.value)return ae(n)}}})}function es(e,t){const{ref:n,props:r,children:o,ce:s}=t.vnode,i=ae(e,r,o);return i.ref=n,i.ce=s,delete t.vnode.ce,i}const jr=e=>e.type.__isKeepAlive;function Ap(e,t){Wu(e,"a",t)}function Cp(e,t){Wu(e,"da",t)}function Wu(e,t,n=Be){const r=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(Ro(t,r,n),n){let o=n.parent;for(;o&&o.parent;)jr(o.parent.vnode)&&wp(r,t,n,o),o=o.parent}}function wp(e,t,n,r){const o=Ro(t,e,r,!0);Lo(()=>{qs(r[t],o)},n)}function Ro(e,t,n=Be,r=!1){if(n){const o=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...i)=>{jt();const a=zr(n),l=Et(t,n,e,i);return a(),zt(),l});return r?o.unshift(s):o.push(s),s}}const Kt=e=>(t,n=Be)=>{(!Un||e==="sp")&&Ro(e,(...r)=>t(...r),n)},Tp=Kt("bm"),Je=Kt("m"),Op=Kt("bu"),xp=Kt("u"),si=Kt("bum"),Lo=Kt("um"),kp=Kt("sp"),Pp=Kt("rtg"),Ip=Kt("rtc");function Rp(e,t=Be){Ro("ec",e,t)}const Lp="components";function ii(e,t){return Np(Lp,e,!0,t)||e}const Dp=Symbol.for("v-ndc");function Np(e,t,n=!0,r=!1){const o=$e||Be;if(o){const s=o.type;{const a=vc(s,!1);if(a&&(a===t||a===rt(t)||a===Br(rt(t))))return s}const i=Zi(o[e]||s[e],t)||Zi(o.appContext[e],t);return!i&&r?s:i}}function Zi(e,t){return e&&(e[t]||e[rt(t)]||e[Br(rt(t))])}function nn(e,t,n,r){let o;const s=n,i=re(e);if(i||Oe(e)){const a=i&&Nn(e);let l=!1;a&&(l=!mt(e),e=ko(e)),o=new Array(e.length);for(let u=0,c=e.length;ut(a,l,void 0,s));else{const a=Object.keys(e);o=new Array(a.length);for(let l=0,u=a.length;lPr(t)?!(t.type===je||t.type===ge&&!qu(t.children)):!0)?e:null}const As=e=>e?gc(e)?No(e):As(e.parent):null,yr=Ne(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>As(e.parent),$root:e=>As(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>ai(e),$forceUpdate:e=>e.f||(e.f=()=>{ni(e.update)}),$nextTick:e=>e.n||(e.n=Jn.bind(e.proxy)),$watch:e=>th.bind(e)}),ts=(e,t)=>e!==Se&&!e.__isScriptSetup&&pe(e,t),Vp={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:o,props:s,accessCache:i,type:a,appContext:l}=e;let u;if(t[0]!=="$"){const p=i[t];if(p!==void 0)switch(p){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return s[t]}else{if(ts(r,t))return i[t]=1,r[t];if(o!==Se&&pe(o,t))return i[t]=2,o[t];if((u=e.propsOptions[0])&&pe(u,t))return i[t]=3,s[t];if(n!==Se&&pe(n,t))return i[t]=4,n[t];Cs&&(i[t]=0)}}const c=yr[t];let f,d;if(c)return t==="$attrs"&&Ke(e.attrs,"get",""),c(e);if((f=a.__cssModules)&&(f=f[t]))return f;if(n!==Se&&pe(n,t))return i[t]=4,n[t];if(d=l.config.globalProperties,pe(d,t))return d[t]},set({_:e},t,n){const{data:r,setupState:o,ctx:s}=e;return ts(o,t)?(o[t]=n,!0):r!==Se&&pe(r,t)?(r[t]=n,!0):pe(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(s[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:s}},i){let a;return!!n[i]||e!==Se&&pe(e,i)||ts(t,i)||(a=s[0])&&pe(a,i)||pe(r,i)||pe(yr,i)||pe(o.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:pe(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Ji(e){return re(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Cs=!0;function Mp(e){const t=ai(e),n=e.proxy,r=e.ctx;Cs=!1,t.beforeCreate&&Qi(t.beforeCreate,e,"bc");const{data:o,computed:s,methods:i,watch:a,provide:l,inject:u,created:c,beforeMount:f,mounted:d,beforeUpdate:p,updated:_,activated:v,deactivated:b,beforeDestroy:E,beforeUnmount:A,destroyed:m,unmounted:y,render:L,renderTracked:W,renderTriggered:M,errorCaptured:w,serverPrefetch:U,expose:O,inheritAttrs:B,components:C,directives:D,filters:Z}=t;if(u&&Fp(u,r,null),i)for(const N in i){const z=i[N];oe(z)&&(r[N]=z.bind(n))}if(o){const N=o.call(n,n);Te(N)&&(e.data=$r(N))}if(Cs=!0,s)for(const N in s){const z=s[N],le=oe(z)?z.bind(n,n):oe(z.get)?z.get.bind(n,n):kt,ye=!oe(z)&&oe(z.set)?z.set.bind(n):kt,xe=F({get:le,set:ye});Object.defineProperty(r,N,{enumerable:!0,configurable:!0,get:()=>xe.value,set:be=>xe.value=be})}if(a)for(const N in a)Gu(a[N],r,n,N);if(l){const N=oe(l)?l.call(n):l;Reflect.ownKeys(N).forEach(z=>{An(z,N[z])})}c&&Qi(c,e,"c");function I(N,z){re(z)?z.forEach(le=>N(le.bind(n))):z&&N(z.bind(n))}if(I(Tp,f),I(Je,d),I(Op,p),I(xp,_),I(Ap,v),I(Cp,b),I(Rp,w),I(Ip,W),I(Pp,M),I(si,A),I(Lo,y),I(kp,U),re(O))if(O.length){const N=e.exposed||(e.exposed={});O.forEach(z=>{Object.defineProperty(N,z,{get:()=>n[z],set:le=>n[z]=le})})}else e.exposed||(e.exposed={});L&&e.render===kt&&(e.render=L),B!=null&&(e.inheritAttrs=B),C&&(e.components=C),D&&(e.directives=D),U&&oi(e)}function Fp(e,t,n=kt){re(e)&&(e=ws(e));for(const r in e){const o=e[r];let s;Te(o)?"default"in o?s=Ze(o.from||r,o.default,!0):s=Ze(o.from||r):s=Ze(o),De(s)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>s.value,set:i=>s.value=i}):t[r]=s}}function Qi(e,t,n){Et(re(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Gu(e,t,n,r){let o=r.includes(".")?uc(n,r):()=>n[r];if(Oe(e)){const s=t[e];oe(s)&&Ue(o,s)}else if(oe(e))Ue(o,e.bind(n));else if(Te(e))if(re(e))e.forEach(s=>Gu(s,t,n,r));else{const s=oe(e.handler)?e.handler.bind(n):t[e.handler];oe(s)&&Ue(o,s,e)}}function ai(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:s,config:{optionMergeStrategies:i}}=e.appContext,a=s.get(t);let l;return a?l=a:!o.length&&!n&&!r?l=t:(l={},o.length&&o.forEach(u=>bo(l,u,i,!0)),bo(l,t,i)),Te(t)&&s.set(t,l),l}function bo(e,t,n,r=!1){const{mixins:o,extends:s}=t;s&&bo(e,s,n,!0),o&&o.forEach(i=>bo(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const a=Hp[i]||n&&n[i];e[i]=a?a(e[i],t[i]):t[i]}return e}const Hp={data:ea,props:ta,emits:ta,methods:pr,computed:pr,beforeCreate:Ge,created:Ge,beforeMount:Ge,mounted:Ge,beforeUpdate:Ge,updated:Ge,beforeDestroy:Ge,beforeUnmount:Ge,destroyed:Ge,unmounted:Ge,activated:Ge,deactivated:Ge,errorCaptured:Ge,serverPrefetch:Ge,components:pr,directives:pr,watch:$p,provide:ea,inject:Bp};function ea(e,t){return t?e?function(){return Ne(oe(e)?e.call(this,this):e,oe(t)?t.call(this,this):t)}:t:e}function Bp(e,t){return pr(ws(e),ws(t))}function ws(e){if(re(e)){const t={};for(let n=0;n1)return n&&oe(t)?t.call(r&&r.proxy):t}}const Xu={},Zu=()=>Object.create(Xu),Ju=e=>Object.getPrototypeOf(e)===Xu;function zp(e,t,n,r=!1){const o={},s=Zu();e.propsDefaults=Object.create(null),Qu(e,t,o,s);for(const i in e.propsOptions[0])i in o||(o[i]=void 0);n?e.props=r?o:Tu(o):e.type.props?e.props=o:e.props=s,e.attrs=s}function Kp(e,t,n,r){const{props:o,attrs:s,vnode:{patchFlag:i}}=e,a=ue(o),[l]=e.propsOptions;let u=!1;if((r||i>0)&&!(i&16)){if(i&8){const c=e.vnode.dynamicProps;for(let f=0;f{l=!0;const[d,p]=ec(f,t,!0);Ne(i,d),p&&a.push(...p)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!s&&!l)return Te(e)&&r.set(e,Rn),Rn;if(re(s))for(let c=0;ce[0]==="_"||e==="$stable",li=e=>re(e)?e.map(ht):[ht(e)],qp=(e,t,n)=>{if(t._n)return t;const r=Ve((...o)=>li(t(...o)),n);return r._c=!1,r},nc=(e,t,n)=>{const r=e._ctx;for(const o in e){if(tc(o))continue;const s=e[o];if(oe(s))t[o]=qp(o,s,r);else if(s!=null){const i=li(s);t[o]=()=>i}}},rc=(e,t)=>{const n=li(t);e.slots.default=()=>n},oc=(e,t,n)=>{for(const r in t)(n||r!=="_")&&(e[r]=t[r])},Gp=(e,t,n)=>{const r=e.slots=Zu();if(e.vnode.shapeFlag&32){const o=t._;o?(oc(r,t,n),n&&$n(r,"_",o,!0)):nc(t,r)}else t&&rc(e,t)},Yp=(e,t,n)=>{const{vnode:r,slots:o}=e;let s=!0,i=Se;if(r.shapeFlag&32){const a=t._;a?n&&a===1?s=!1:oc(o,t,n):(s=!t.$stable,nc(t,o)),i=t}else t&&(rc(e,t),i={default:1});if(s)for(const a in o)!tc(a)&&i[a]==null&&delete o[a]},at=pc;function Xp(e){return Zp(e,_p)}function Zp(e,t){const n=Oo();n.__VUE__=!0,Nu(n.__VUE_DEVTOOLS_GLOBAL_HOOK__,n);const{insert:r,remove:o,patchProp:s,createElement:i,createText:a,createComment:l,setText:u,setElementText:c,parentNode:f,nextSibling:d,setScopeId:p=kt,insertStaticContent:_}=e,v=(h,g,S,k=null,T=null,R=null,K=void 0,$=null,H=!!g.dynamicChildren)=>{if(h===g)return;h&&!vn(h,g)&&(k=x(h),be(h,T,R,!0),h=null),g.patchFlag===-2&&(H=!1,g.dynamicChildren=null);const{type:V,ref:te,shapeFlag:G}=g;switch(V){case tn:b(h,g,S,k);break;case je:E(h,g,S,k);break;case Fn:h==null&&A(g,S,k,K);break;case ge:C(h,g,S,k,T,R,K,$,H);break;default:G&1?L(h,g,S,k,T,R,K,$,H):G&6?D(h,g,S,k,T,R,K,$,H):(G&64||G&128)&&V.process(h,g,S,k,T,R,K,$,H,J)}te!=null&&T&&xr(te,h&&h.ref,R,g||h,!g)},b=(h,g,S,k)=>{if(h==null)r(g.el=a(g.children),S,k);else{const T=g.el=h.el;g.children!==h.children&&u(T,g.children)}},E=(h,g,S,k)=>{h==null?r(g.el=l(g.children||""),S,k):g.el=h.el},A=(h,g,S,k)=>{[h.el,h.anchor]=_(h.children,g,S,k,h.el,h.anchor)},m=({el:h,anchor:g},S,k)=>{let T;for(;h&&h!==g;)T=d(h),r(h,S,k),h=T;r(g,S,k)},y=({el:h,anchor:g})=>{let S;for(;h&&h!==g;)S=d(h),o(h),h=S;o(g)},L=(h,g,S,k,T,R,K,$,H)=>{g.type==="svg"?K="svg":g.type==="math"&&(K="mathml"),h==null?W(g,S,k,T,R,K,$,H):U(h,g,T,R,K,$,H)},W=(h,g,S,k,T,R,K,$)=>{let H,V;const{props:te,shapeFlag:G,transition:Q,dirs:se}=h;if(H=h.el=i(h.type,R,te&&te.is,te),G&8?c(H,h.children):G&16&&w(h.children,H,null,k,T,ns(h,R),K,$),se&&Ot(h,null,k,"created"),M(H,h,h.scopeId,K,k),te){for(const Ae in te)Ae!=="value"&&!Dn(Ae)&&s(H,Ae,null,te[Ae],R,k);"value"in te&&s(H,"value",null,te.value,R),(V=te.onVnodeBeforeMount)&&pt(V,k,h)}$n(H,"__vnode",h,!0),$n(H,"__vueParentComponent",k,!0),se&&Ot(h,null,k,"beforeMount");const fe=sc(T,Q);fe&&Q.beforeEnter(H),r(H,g,S),((V=te&&te.onVnodeMounted)||fe||se)&&at(()=>{V&&pt(V,k,h),fe&&Q.enter(H),se&&Ot(h,null,k,"mounted")},T)},M=(h,g,S,k,T)=>{if(S&&p(h,S),k)for(let R=0;R{for(let V=H;V{const $=g.el=h.el;$.__vnode=g;let{patchFlag:H,dynamicChildren:V,dirs:te}=g;H|=h.patchFlag&16;const G=h.props||Se,Q=g.props||Se;let se;if(S&&fn(S,!1),(se=Q.onVnodeBeforeUpdate)&&pt(se,S,g,h),te&&Ot(g,h,S,"beforeUpdate"),S&&fn(S,!0),(G.innerHTML&&Q.innerHTML==null||G.textContent&&Q.textContent==null)&&c($,""),V?O(h.dynamicChildren,V,$,S,k,ns(g,T),R):K||z(h,g,$,null,S,k,ns(g,T),R,!1),H>0){if(H&16)B($,G,Q,S,T);else if(H&2&&G.class!==Q.class&&s($,"class",null,Q.class,T),H&4&&s($,"style",G.style,Q.style,T),H&8){const fe=g.dynamicProps;for(let Ae=0;Ae{se&&pt(se,S,g,h),te&&Ot(g,h,S,"updated")},k)},O=(h,g,S,k,T,R,K)=>{for(let $=0;${if(g!==S){if(g!==Se)for(const R in g)!Dn(R)&&!(R in S)&&s(h,R,g[R],null,T,k);for(const R in S){if(Dn(R))continue;const K=S[R],$=g[R];K!==$&&R!=="value"&&s(h,R,$,K,T,k)}"value"in S&&s(h,"value",g.value,S.value,T)}},C=(h,g,S,k,T,R,K,$,H)=>{const V=g.el=h?h.el:a(""),te=g.anchor=h?h.anchor:a("");let{patchFlag:G,dynamicChildren:Q,slotScopeIds:se}=g;se&&($=$?$.concat(se):se),h==null?(r(V,S,k),r(te,S,k),w(g.children||[],S,te,T,R,K,$,H)):G>0&&G&64&&Q&&h.dynamicChildren?(O(h.dynamicChildren,Q,S,T,R,K,$),(g.key!=null||T&&g===T.subTree)&&ic(h,g,!0)):z(h,g,S,te,T,R,K,$,H)},D=(h,g,S,k,T,R,K,$,H)=>{g.slotScopeIds=$,h==null?g.shapeFlag&512?T.ctx.activate(g,S,k,K,H):Z(g,S,k,T,R,K,H):ee(h,g,H)},Z=(h,g,S,k,T,R,K)=>{const $=h.component=hh(h,k,T);if(jr(h)&&($.ctx.renderer=J),mh($,!1,K),$.asyncDep){if(T&&T.registerDep($,I,K),!h.el){const H=$.subTree=ae(je);E(null,H,g,S)}}else I($,h,g,S,T,R,K)},ee=(h,g,S)=>{const k=g.component=h.component;if(ih(h,g,S))if(k.asyncDep&&!k.asyncResolved){N(k,g,S);return}else k.next=g,k.update();else g.el=h.el,k.vnode=g},I=(h,g,S,k,T,R,K)=>{const $=()=>{if(h.isMounted){let{next:G,bu:Q,u:se,parent:fe,vnode:Ae}=h;{const st=ac(h);if(st){G&&(G.el=Ae.el,N(h,G,K)),st.asyncDep.then(()=>{h.isUnmounted||$()});return}}let me=G,ot;fn(h,!1),G?(G.el=Ae.el,N(h,G,K)):G=Ae,Q&&qo(Q),(ot=G.props&&G.props.onVnodeBeforeUpdate)&&pt(ot,fe,G,Ae),fn(h,!0);const ze=rs(h),_t=h.subTree;h.subTree=ze,v(_t,ze,f(_t.el),x(_t),h,T,R),G.el=ze.el,me===null&&fc(h,ze.el),se&&at(se,T),(ot=G.props&&G.props.onVnodeUpdated)&&at(()=>pt(ot,fe,G,Ae),T),Vu(h)}else{let G;const{el:Q,props:se}=g,{bm:fe,m:Ae,parent:me,root:ot,type:ze}=h,_t=Sn(g);if(fn(h,!1),fe&&qo(fe),!_t&&(G=se&&se.onVnodeBeforeMount)&&pt(G,me,g),fn(h,!0),Q&&Ee){const st=()=>{h.subTree=rs(h),Ee(Q,h.subTree,h,T,null)};_t&&ze.__asyncHydrate?ze.__asyncHydrate(Q,h,st):st()}else{ot.ce&&ot.ce._injectChildStyle(ze);const st=h.subTree=rs(h);v(null,st,S,k,h,T,R),g.el=st.el}if(Ae&&at(Ae,T),!_t&&(G=se&&se.onVnodeMounted)){const st=g;at(()=>pt(G,me,st),T)}(g.shapeFlag&256||me&&Sn(me.vnode)&&me.vnode.shapeFlag&256)&&h.a&&at(h.a,T),h.isMounted=!0,ap(h),g=S=k=null}};h.scope.on();const H=h.effect=new du($);h.scope.off();const V=h.update=H.run.bind(H),te=h.job=H.runIfDirty.bind(H);te.i=h,te.id=h.uid,H.scheduler=()=>ni(te),fn(h,!0),V()},N=(h,g,S)=>{g.component=h;const k=h.vnode.props;h.vnode=g,h.next=null,Kp(h,g.props,k,S),Yp(h,g.children,S),jt(),zi(h),zt()},z=(h,g,S,k,T,R,K,$,H=!1)=>{const V=h&&h.children,te=h?h.shapeFlag:0,G=g.children,{patchFlag:Q,shapeFlag:se}=g;if(Q>0){if(Q&128){ye(V,G,S,k,T,R,K,$,H);return}else if(Q&256){le(V,G,S,k,T,R,K,$,H);return}}se&8?(te&16&&tt(V,T,R),G!==V&&c(S,G)):te&16?se&16?ye(V,G,S,k,T,R,K,$,H):tt(V,T,R,!0):(te&8&&c(S,""),se&16&&w(G,S,k,T,R,K,$,H))},le=(h,g,S,k,T,R,K,$,H)=>{h=h||Rn,g=g||Rn;const V=h.length,te=g.length,G=Math.min(V,te);let Q;for(Q=0;Qte?tt(h,T,R,!0,!1,G):w(g,S,k,T,R,K,$,H,G)},ye=(h,g,S,k,T,R,K,$,H)=>{let V=0;const te=g.length;let G=h.length-1,Q=te-1;for(;V<=G&&V<=Q;){const se=h[V],fe=g[V]=H?Zt(g[V]):ht(g[V]);if(vn(se,fe))v(se,fe,S,null,T,R,K,$,H);else break;V++}for(;V<=G&&V<=Q;){const se=h[G],fe=g[Q]=H?Zt(g[Q]):ht(g[Q]);if(vn(se,fe))v(se,fe,S,null,T,R,K,$,H);else break;G--,Q--}if(V>G){if(V<=Q){const se=Q+1,fe=seQ)for(;V<=G;)be(h[V],T,R,!0),V++;else{const se=V,fe=V,Ae=new Map;for(V=fe;V<=Q;V++){const it=g[V]=H?Zt(g[V]):ht(g[V]);it.key!=null&&Ae.set(it.key,V)}let me,ot=0;const ze=Q-fe+1;let _t=!1,st=0;const or=new Array(ze);for(V=0;V=ze){be(it,T,R,!0);continue}let Ct;if(it.key!=null)Ct=Ae.get(it.key);else for(me=fe;me<=Q;me++)if(or[me-fe]===0&&vn(it,g[me])){Ct=me;break}Ct===void 0?be(it,T,R,!0):(or[Ct-fe]=V+1,Ct>=st?st=Ct:_t=!0,v(it,g[Ct],S,null,T,R,K,$,H),ot++)}const Mi=_t?Jp(or):Rn;for(me=Mi.length-1,V=ze-1;V>=0;V--){const it=fe+V,Ct=g[it],Fi=it+1{const{el:R,type:K,transition:$,children:H,shapeFlag:V}=h;if(V&6){xe(h.component.subTree,g,S,k);return}if(V&128){h.suspense.move(g,S,k);return}if(V&64){K.move(h,g,S,J);return}if(K===ge){r(R,g,S);for(let G=0;G$.enter(R),T);else{const{leave:G,delayLeave:Q,afterLeave:se}=$,fe=()=>r(R,g,S),Ae=()=>{G(R,()=>{fe(),se&&se()})};Q?Q(R,fe,Ae):Ae()}else r(R,g,S)},be=(h,g,S,k=!1,T=!1)=>{const{type:R,props:K,ref:$,children:H,dynamicChildren:V,shapeFlag:te,patchFlag:G,dirs:Q,cacheIndex:se}=h;if(G===-2&&(T=!1),$!=null&&xr($,null,S,h,!0),se!=null&&(g.renderCache[se]=void 0),te&256){g.ctx.deactivate(h);return}const fe=te&1&&Q,Ae=!Sn(h);let me;if(Ae&&(me=K&&K.onVnodeBeforeUnmount)&&pt(me,g,h),te&6)et(h.component,S,k);else{if(te&128){h.suspense.unmount(S,k);return}fe&&Ot(h,null,g,"beforeUnmount"),te&64?h.type.remove(h,g,S,J,k):V&&!V.hasOnce&&(R!==ge||G>0&&G&64)?tt(V,g,S,!1,!0):(R===ge&&G&384||!T&&te&16)&&tt(H,g,S),k&&Qe(h)}(Ae&&(me=K&&K.onVnodeUnmounted)||fe)&&at(()=>{me&&pt(me,g,h),fe&&Ot(h,null,g,"unmounted")},S)},Qe=h=>{const{type:g,el:S,anchor:k,transition:T}=h;if(g===ge){gt(S,k);return}if(g===Fn){y(h);return}const R=()=>{o(S),T&&!T.persisted&&T.afterLeave&&T.afterLeave()};if(h.shapeFlag&1&&T&&!T.persisted){const{leave:K,delayLeave:$}=T,H=()=>K(S,R);$?$(h.el,R,H):H()}else R()},gt=(h,g)=>{let S;for(;h!==g;)S=d(h),o(h),h=S;o(g)},et=(h,g,S)=>{const{bum:k,scope:T,job:R,subTree:K,um:$,m:H,a:V}=h;ra(H),ra(V),k&&qo(k),T.stop(),R&&(R.flags|=8,be(K,h,g,S)),$&&at($,g),at(()=>{h.isUnmounted=!0},g),g&&g.pendingBranch&&!g.isUnmounted&&h.asyncDep&&!h.asyncResolved&&h.suspenseId===g.pendingId&&(g.deps--,g.deps===0&&g.resolve()),up(h)},tt=(h,g,S,k=!1,T=!1,R=0)=>{for(let K=R;K{if(h.shapeFlag&6)return x(h.component.subTree);if(h.shapeFlag&128)return h.suspense.next();const g=d(h.anchor||h.el),S=g&&g[fp];return S?d(S):g};let q=!1;const j=(h,g,S)=>{h==null?g._vnode&&be(g._vnode,null,null,!0):v(g._vnode||null,h,g,null,null,null,S),g._vnode=h,q||(q=!0,zi(),_o(),q=!1)},J={p:v,um:be,m:xe,r:Qe,mt:Z,mc:w,pc:z,pbc:O,n:x,o:e};let ce,Ee;return t&&([ce,Ee]=t(J)),{render:j,hydrate:ce,createApp:jp(j,ce)}}function ns({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function fn({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function sc(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function ic(e,t,n=!1){const r=e.children,o=t.children;if(re(r)&&re(o))for(let s=0;s>1,e[n[a]]0&&(t[r]=n[s-1]),n[s]=r)}}for(s=n.length,i=n[s-1];s-- >0;)n[s]=i,i=t[i];return n}function ac(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ac(t)}function ra(e){if(e)for(let t=0;tZe(Qp);function lc(e,t){return ui(e,null,t)}function Ue(e,t,n){return ui(e,t,n)}function ui(e,t,n=Se){const{immediate:r,deep:o,flush:s,once:i}=n,a=Ne({},n),l=t&&r||!t&&s!=="post";let u;if(Un){if(s==="sync"){const p=eh();u=p.__watcherHandles||(p.__watcherHandles=[])}else if(!l){const p=()=>{};return p.stop=kt,p.resume=kt,p.pause=kt,p}}const c=Be;a.call=(p,_,v)=>Et(p,c,_,v);let f=!1;s==="post"?a.scheduler=p=>{at(p,c&&c.suspense)}:s!=="sync"&&(f=!0,a.scheduler=(p,_)=>{_?p():ni(p)}),a.augmentJob=p=>{t&&(p.flags|=4),f&&(p.flags|=2,c&&(p.id=c.uid,p.i=c))};const d=Zd(e,t,a);return Un&&(u?u.push(d):l&&d()),d}function th(e,t,n){const r=this.proxy,o=Oe(e)?e.includes(".")?uc(r,e):()=>r[e]:e.bind(r,r);let s;oe(t)?s=t:(s=t.handler,n=t);const i=zr(this),a=ui(o,s.bind(r),n);return i(),a}function uc(e,t){const n=t.split(".");return()=>{let r=e;for(let o=0;ot==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${rt(t)}Modifiers`]||e[`${Ut(t)}Modifiers`];function rh(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||Se;let o=n;const s=t.startsWith("update:"),i=s&&nh(r,t.slice(7));i&&(i.trim&&(o=n.map(c=>Oe(c)?c.trim():c)),i.number&&(o=n.map(id))),cp(e,t,o);let a,l=r[a=Wo(t)]||r[a=Wo(rt(t))];!l&&s&&(l=r[a=Wo(Ut(t))]),l&&Et(l,e,6,o);const u=r[a+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,Et(u,e,6,o)}}function cc(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(o!==void 0)return o;const s=e.emits;let i={},a=!1;if(!oe(e)){const l=u=>{const c=cc(u,t,!0);c&&(a=!0,Ne(i,c))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!s&&!a?(Te(e)&&r.set(e,null),null):(re(s)?s.forEach(l=>i[l]=null):Ne(i,s),Te(e)&&r.set(e,i),i)}function Do(e,t){return!e||!Hr(t)?!1:(t=t.slice(2).replace(/Once$/,""),pe(e,t[0].toLowerCase()+t.slice(1))||pe(e,Ut(t))||pe(e,t))}function rs(e){const{type:t,vnode:n,proxy:r,withProxy:o,propsOptions:[s],slots:i,attrs:a,emit:l,render:u,renderCache:c,props:f,data:d,setupState:p,ctx:_,inheritAttrs:v}=e,b=vo(e);let E,A;try{if(n.shapeFlag&4){const y=o||r,L=y;E=ht(u.call(L,y,c,f,p,d,_)),A=a}else{const y=t;E=ht(y.length>1?y(f,{attrs:a,slots:i,emit:l}):y(f,null)),A=t.props?a:oh(a)}}catch(y){br.length=0,Ur(y,e,1),E=ae(je)}let m=E;if(A&&v!==!1){const y=Object.keys(A),{shapeFlag:L}=m;y.length&&L&7&&(s&&y.some(Ws)&&(A=sh(A,s)),m=rn(m,A,!1,!0))}return n.dirs&&(m=rn(m,null,!1,!0),m.dirs=m.dirs?m.dirs.concat(n.dirs):n.dirs),n.transition&&Or(m,n.transition),E=m,vo(b),E}const oh=e=>{let t;for(const n in e)(n==="class"||n==="style"||Hr(n))&&((t||(t={}))[n]=e[n]);return t},sh=(e,t)=>{const n={};for(const r in e)(!Ws(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function ih(e,t,n){const{props:r,children:o,component:s}=e,{props:i,children:a,patchFlag:l}=t,u=s.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?oa(r,i,u):!!i;if(l&8){const c=t.dynamicProps;for(let f=0;fe.__isSuspense;function pc(e,t){t&&t.pendingBranch?re(e)?t.effects.push(...e):t.effects.push(e):op(e)}const ge=Symbol.for("v-fgt"),tn=Symbol.for("v-txt"),je=Symbol.for("v-cmt"),Fn=Symbol.for("v-stc"),br=[];let ut=null;function Y(e=!1){br.push(ut=e?null:[])}function ah(){br.pop(),ut=br[br.length-1]||null}let kr=1;function sa(e,t=!1){kr+=e,e<0&&ut&&t&&(ut.hasOnce=!0)}function hc(e){return e.dynamicChildren=kr>0?ut||Rn:null,ah(),kr>0&&ut&&ut.push(e),e}function ne(e,t,n,r,o,s){return hc(ie(e,t,n,r,o,s,!0))}function Le(e,t,n,r,o){return hc(ae(e,t,n,r,o,!0))}function Pr(e){return e?e.__v_isVNode===!0:!1}function vn(e,t){return e.type===t.type&&e.key===t.key}const mc=({key:e})=>e??null,ao=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Oe(e)||De(e)||oe(e)?{i:$e,r:e,k:t,f:!!n}:e:null);function ie(e,t=null,n=null,r=0,o=null,s=e===ge?0:1,i=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&mc(t),ref:t&&ao(t),scopeId:Mu,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:s,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:$e};return a?(ci(l,n),s&128&&e.normalize(l)):n&&(l.shapeFlag|=Oe(n)?8:16),kr>0&&!i&&ut&&(l.patchFlag>0||s&6)&&l.patchFlag!==32&&ut.push(l),l}const ae=lh;function lh(e,t=null,n=null,r=0,o=null,s=!1){if((!e||e===Dp)&&(e=je),Pr(e)){const a=rn(e,t,!0);return n&&ci(a,n),kr>0&&!s&&ut&&(a.shapeFlag&6?ut[ut.indexOf(e)]=a:ut.push(a)),a.patchFlag=-2,a}if(Eh(e)&&(e=e.__vccOpts),t){t=uh(t);let{class:a,style:l}=t;a&&!Oe(a)&&(t.class=nt(a)),Te(l)&&(ti(l)&&!re(l)&&(l=Ne({},l)),t.style=Xn(l))}const i=Oe(e)?1:dc(e)?128:Fu(e)?64:Te(e)?4:oe(e)?2:0;return ie(e,t,n,r,o,i,s,!0)}function uh(e){return e?ti(e)||Ju(e)?Ne({},e):e:null}function rn(e,t,n=!1,r=!1){const{props:o,ref:s,patchFlag:i,children:a,transition:l}=e,u=t?fh(o||{},t):o,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&mc(u),ref:t&&t.ref?n&&s?re(s)?s.concat(ao(t)):[s,ao(t)]:ao(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ge?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&rn(e.ssContent),ssFallback:e.ssFallback&&rn(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&r&&Or(c,l.clone(c)),c}function on(e=" ",t=0){return ae(tn,null,e,t)}function ch(e,t){const n=ae(Fn,null,e);return n.staticCount=t,n}function Fe(e="",t=!1){return t?(Y(),Le(je,null,e)):ae(je,null,e)}function ht(e){return e==null||typeof e=="boolean"?ae(je):re(e)?ae(ge,null,e.slice()):Pr(e)?Zt(e):ae(tn,null,String(e))}function Zt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:rn(e)}function ci(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(re(t))n=16;else if(typeof t=="object")if(r&65){const o=t.default;o&&(o._c&&(o._d=!1),ci(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!Ju(t)?t._ctx=$e:o===3&&$e&&($e.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else oe(t)?(t={default:t,_ctx:$e},n=32):(t=String(t),r&64?(n=16,t=[on(t)]):n=8);e.children=t,e.shapeFlag|=n}function fh(...e){const t={};for(let n=0;nBe||$e;let Eo,Os;{const e=Oo(),t=(n,r)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(r),s=>{o.length>1?o.forEach(i=>i(s)):o[0](s)}};Eo=t("__VUE_INSTANCE_SETTERS__",n=>Be=n),Os=t("__VUE_SSR_SETTERS__",n=>Un=n)}const zr=e=>{const t=Be;return Eo(e),e.scope.on(),()=>{e.scope.off(),Eo(t)}},ia=()=>{Be&&Be.scope.off(),Eo(null)};function gc(e){return e.vnode.shapeFlag&4}let Un=!1;function mh(e,t=!1,n=!1){t&&Os(t);const{props:r,children:o}=e.vnode,s=gc(e);zp(e,r,s,t),Gp(e,o,n);const i=s?gh(e,t):void 0;return t&&Os(!1),i}function gh(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Vp);const{setup:r}=n;if(r){jt();const o=e.setupContext=r.length>1?vh(e):null,s=zr(e),i=Zn(r,e,0,[e.props,o]),a=su(i);if(zt(),s(),(a||e.sp)&&!Sn(e)&&oi(e),a){if(i.then(ia,ia),t)return i.then(l=>{aa(e,l,t)}).catch(l=>{Ur(l,e,0)});e.asyncDep=i}else aa(e,i,t)}else _c(e,t)}function aa(e,t,n){oe(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Te(t)&&(e.devtoolsRawSetupState=t,e.setupState=xu(t)),_c(e,n)}let la;function _c(e,t,n){const r=e.type;if(!e.render){if(!t&&la&&!r.render){const o=r.template||ai(e).template;if(o){const{isCustomElement:s,compilerOptions:i}=e.appContext.config,{delimiters:a,compilerOptions:l}=r,u=Ne(Ne({isCustomElement:s,delimiters:a},i),l);r.render=la(o,u)}}e.render=r.render||kt}{const o=zr(e);jt();try{Mp(e)}finally{zt(),o()}}}const _h={get(e,t){return Ke(e,"get",""),e[t]}};function vh(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,_h),slots:e.slots,emit:e.emit,expose:t}}function No(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(xu(Bd(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in yr)return yr[n](e)},has(t,n){return n in t||n in yr}})):e.proxy}const yh=/(?:^|[-_])(\w)/g,bh=e=>e.replace(yh,t=>t.toUpperCase()).replace(/[-_]/g,"");function vc(e,t=!0){return oe(e)?e.displayName||e.name:e.name||t&&e.__name}function yc(e,t,n=!1){let r=vc(t);if(!r&&t.__file){const o=t.__file.match(/([^/\\]+)\.\w+$/);o&&(r=o[1])}if(!r&&e&&e.parent){const o=s=>{for(const i in s)if(s[i]===t)return i};r=o(e.components||e.parent.type.components)||o(e.appContext.components)}return r?bh(r):n?"App":"Anonymous"}function Eh(e){return oe(e)&&"__vccOpts"in e}const F=(e,t)=>Yd(e,t,Un);function _e(e,t,n){const r=arguments.length;return r===2?Te(t)&&!re(t)?Pr(t)?ae(e,null,[t]):ae(e,t):ae(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Pr(n)&&(n=[n]),ae(e,t,n))}const ua="3.5.13";/** +* @vue/runtime-dom v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let xs;const ca=typeof window<"u"&&window.trustedTypes;if(ca)try{xs=ca.createPolicy("vue",{createHTML:e=>e})}catch{}const bc=xs?e=>xs.createHTML(e):e=>e,Sh="http://www.w3.org/2000/svg",Ah="http://www.w3.org/1998/Math/MathML",Mt=typeof document<"u"?document:null,fa=Mt&&Mt.createElement("template"),Ch={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t==="svg"?Mt.createElementNS(Sh,e):t==="mathml"?Mt.createElementNS(Ah,e):n?Mt.createElement(e,{is:n}):Mt.createElement(e);return e==="select"&&r&&r.multiple!=null&&o.setAttribute("multiple",r.multiple),o},createText:e=>Mt.createTextNode(e),createComment:e=>Mt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Mt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,s){const i=n?n.previousSibling:t.lastChild;if(o&&(o===s||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===s||!(o=o.nextSibling)););else{fa.innerHTML=bc(r==="svg"?`${e}`:r==="mathml"?`${e}`:e);const a=fa.content;if(r==="svg"||r==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},qt="transition",ir="animation",Ir=Symbol("_vtc"),Ec={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},wh=Ne({},Hu,Ec),Th=e=>(e.displayName="Transition",e.props=wh,e),fi=Th((e,{slots:t})=>_e(hp,Oh(e),t)),dn=(e,t=[])=>{re(e)?e.forEach(n=>n(...t)):e&&e(...t)},da=e=>e?re(e)?e.some(t=>t.length>1):e.length>1:!1;function Oh(e){const t={};for(const C in e)C in Ec||(t[C]=e[C]);if(e.css===!1)return t;const{name:n="v",type:r,duration:o,enterFromClass:s=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:l=s,appearActiveClass:u=i,appearToClass:c=a,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,_=xh(o),v=_&&_[0],b=_&&_[1],{onBeforeEnter:E,onEnter:A,onEnterCancelled:m,onLeave:y,onLeaveCancelled:L,onBeforeAppear:W=E,onAppear:M=A,onAppearCancelled:w=m}=t,U=(C,D,Z,ee)=>{C._enterCancelled=ee,pn(C,D?c:a),pn(C,D?u:i),Z&&Z()},O=(C,D)=>{C._isLeaving=!1,pn(C,f),pn(C,p),pn(C,d),D&&D()},B=C=>(D,Z)=>{const ee=C?M:A,I=()=>U(D,C,Z);dn(ee,[D,I]),pa(()=>{pn(D,C?l:s),Rt(D,C?c:a),da(ee)||ha(D,r,v,I)})};return Ne(t,{onBeforeEnter(C){dn(E,[C]),Rt(C,s),Rt(C,i)},onBeforeAppear(C){dn(W,[C]),Rt(C,l),Rt(C,u)},onEnter:B(!1),onAppear:B(!0),onLeave(C,D){C._isLeaving=!0;const Z=()=>O(C,D);Rt(C,f),C._enterCancelled?(Rt(C,d),_a()):(_a(),Rt(C,d)),pa(()=>{C._isLeaving&&(pn(C,f),Rt(C,p),da(y)||ha(C,r,b,Z))}),dn(y,[C,Z])},onEnterCancelled(C){U(C,!1,void 0,!0),dn(m,[C])},onAppearCancelled(C){U(C,!0,void 0,!0),dn(w,[C])},onLeaveCancelled(C){O(C),dn(L,[C])}})}function xh(e){if(e==null)return null;if(Te(e))return[os(e.enter),os(e.leave)];{const t=os(e);return[t,t]}}function os(e){return ad(e)}function Rt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Ir]||(e[Ir]=new Set)).add(t)}function pn(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Ir];n&&(n.delete(t),n.size||(e[Ir]=void 0))}function pa(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let kh=0;function ha(e,t,n,r){const o=e._endId=++kh,s=()=>{o===e._endId&&r()};if(n!=null)return setTimeout(s,n);const{type:i,timeout:a,propCount:l}=Ph(e,t);if(!i)return r();const u=i+"end";let c=0;const f=()=>{e.removeEventListener(u,d),s()},d=p=>{p.target===e&&++c>=l&&f()};setTimeout(()=>{c(n[_]||"").split(", "),o=r(`${qt}Delay`),s=r(`${qt}Duration`),i=ma(o,s),a=r(`${ir}Delay`),l=r(`${ir}Duration`),u=ma(a,l);let c=null,f=0,d=0;t===qt?i>0&&(c=qt,f=i,d=s.length):t===ir?u>0&&(c=ir,f=u,d=l.length):(f=Math.max(i,u),c=f>0?i>u?qt:ir:null,d=c?c===qt?s.length:l.length:0);const p=c===qt&&/\b(transform|all)(,|$)/.test(r(`${qt}Property`).toString());return{type:c,timeout:f,propCount:d,hasTransform:p}}function ma(e,t){for(;e.lengthga(n)+ga(e[r])))}function ga(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function _a(){return document.body.offsetHeight}function Ih(e,t,n){const r=e[Ir];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const So=Symbol("_vod"),Sc=Symbol("_vsh"),Ao={beforeMount(e,{value:t},{transition:n}){e[So]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):ar(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),ar(e,!0),r.enter(e)):r.leave(e,()=>{ar(e,!1)}):ar(e,t))},beforeUnmount(e,{value:t}){ar(e,t)}};function ar(e,t){e.style.display=t?e[So]:"none",e[Sc]=!t}const Rh=Symbol(""),Lh=/(^|;)\s*display\s*:/;function Dh(e,t,n){const r=e.style,o=Oe(n);let s=!1;if(n&&!o){if(t)if(Oe(t))for(const i of t.split(";")){const a=i.slice(0,i.indexOf(":")).trim();n[a]==null&&lo(r,a,"")}else for(const i in t)n[i]==null&&lo(r,i,"");for(const i in n)i==="display"&&(s=!0),lo(r,i,n[i])}else if(o){if(t!==n){const i=r[Rh];i&&(n+=";"+i),r.cssText=n,s=Lh.test(n)}}else t&&e.removeAttribute("style");So in e&&(e[So]=s?r.display:"",e[Sc]&&(r.display="none"))}const va=/\s*!important$/;function lo(e,t,n){if(re(n))n.forEach(r=>lo(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Nh(e,t);va.test(n)?e.setProperty(Ut(r),n.replace(va,""),"important"):e[r]=n}}const ya=["Webkit","Moz","ms"],ss={};function Nh(e,t){const n=ss[t];if(n)return n;let r=rt(t);if(r!=="filter"&&r in e)return ss[t]=r;r=Br(r);for(let o=0;ois||(Bh.then(()=>is=0),is=Date.now());function Uh(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Et(jh(r,n.value),t,5,[r])};return n.value=e,n.attached=$h(),n}function jh(e,t){if(re(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>o=>!o._stopped&&r&&r(o))}else return t}const wa=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,zh=(e,t,n,r,o,s)=>{const i=o==="svg";t==="class"?Ih(e,r,i):t==="style"?Dh(e,n,r):Hr(t)?Ws(t)||Fh(e,t,n,r,s):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Kh(e,t,r,i))?(Sa(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Ea(e,t,r,i,s,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!Oe(r))?Sa(e,rt(t),r,s,t):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Ea(e,t,r,i))};function Kh(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&wa(t)&&oe(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return wa(t)&&Oe(n)?!1:t in e}const Wh={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},qh=(e,t)=>{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=o=>{if(!("key"in o))return;const s=Ut(o.key);if(t.some(i=>i===s||Wh[i]===s))return e(o)})},Gh=Ne({patchProp:zh},Ch);let as,Ta=!1;function Yh(){return as=Ta?as:Xp(Gh),Ta=!0,as}const Xh=(...e)=>{const t=Yh().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=Jh(r);if(o)return n(o,!0,Zh(o))},t};function Zh(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Jh(e){return Oe(e)?document.querySelector(e):e}var Kr=e=>/^[a-z][a-z0-9+.-]*:/.test(e)||e.startsWith("//"),Qh=/.md((\?|#).*)?$/,em=(e,t="/")=>Kr(e)||e.startsWith("/")&&!e.startsWith(t)&&!Qh.test(e),Vo=e=>/^(https?:)?\/\//.test(e),Oa=e=>{if(!e||e.endsWith("/"))return e;let t=e.replace(/(^|\/)README.md$/i,"$1index.html");return t.endsWith(".md")?t=`${t.substring(0,t.length-3)}.html`:t.endsWith(".html")||(t=`${t}.html`),t.endsWith("/index.html")&&(t=t.substring(0,t.length-10)),t},tm="http://.",nm=(e,t)=>{if(!e.startsWith("/")&&t){const n=t.slice(0,t.lastIndexOf("/"));return Oa(new URL(`${n}/${e}`,tm).pathname)}return Oa(e)},rm=(e,t)=>{const n=Object.keys(e).sort((r,o)=>{const s=o.split("/").length-r.split("/").length;return s!==0?s:o.length-r.length});for(const r of n)if(t.startsWith(r))return r;return"/"},om=/(#|\?)/,Ac=e=>{const[t,...n]=e.split(om);return{pathname:t,hashAndQueries:n.join("")}},sm=["link","meta","script","style","noscript","template"],im=["title","base"],am=([e,t,n])=>im.includes(e)?e:sm.includes(e)?e==="meta"&&t.name?`${e}.${t.name}`:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,Object.entries(t).map(([r,o])=>typeof o=="boolean"?o?[r,""]:null:[r,o]).filter(r=>r!=null).sort(([r],[o])=>r.localeCompare(o)),n]):null,lm=e=>{const t=new Set,n=[];return e.forEach(r=>{const o=am(r);o&&!t.has(o)&&(t.add(o),n.push(r))}),n},um=e=>e.endsWith("/")||e.endsWith(".html")?e:`${e}/`,Cc=e=>e.endsWith("/")?e.slice(0,-1):e,wc=e=>e.startsWith("/")?e.slice(1):e,di=e=>Object.prototype.toString.call(e)==="[object Object]",yt=e=>typeof e=="string";const cm=JSON.parse("{}"),fm=Object.fromEntries([["/",{loader:()=>Nt(()=>import("./index.html-CE996aio.js"),[]),meta:{title:"AI for devs | Tech at Worldline"}}],["/develop/",{loader:()=>Nt(()=>import("./index.html-RxFH6ihY.js"),[]),meta:{title:"Develop with AI"}}],["/llm/",{loader:()=>Nt(()=>import("./index.html-BI6zCFdP.js"),[]),meta:{title:"Online with Librechat"}}],["/offline/",{loader:()=>Nt(()=>import("./index.html-BKkRnedg.js"),[]),meta:{title:"Offline with LM Studio"}}],["/overview/",{loader:()=>Nt(()=>import("./index.html-DWyx6_xv.js"),[]),meta:{title:"Let's start"}}],["/servicesai/",{loader:()=>Nt(()=>import("./index.html-BQRe6DYZ.js"),[]),meta:{title:"AI for services"}}],["/use/",{loader:()=>Nt(()=>import("./index.html-ePbs5NrP.js"),[]),meta:{title:"Prompt with AI"}}],["/404.html",{loader:()=>Nt(()=>import("./404.html-OWTotRQR.js"),[]),meta:{title:""}}]]);function dm(){return Tc().__VUE_DEVTOOLS_GLOBAL_HOOK__}function Tc(){return typeof navigator<"u"&&typeof window<"u"?window:typeof globalThis<"u"?globalThis:{}}const pm=typeof Proxy=="function",hm="devtools-plugin:setup",mm="plugin:settings:set";let xn,ks;function gm(){var e;return xn!==void 0||(typeof window<"u"&&window.performance?(xn=!0,ks=window.performance):typeof globalThis<"u"&&(!((e=globalThis.perf_hooks)===null||e===void 0)&&e.performance)?(xn=!0,ks=globalThis.perf_hooks.performance):xn=!1),xn}function _m(){return gm()?ks.now():Date.now()}class vm{constructor(t,n){this.target=null,this.targetQueue=[],this.onQueue=[],this.plugin=t,this.hook=n;const r={};if(t.settings)for(const i in t.settings){const a=t.settings[i];r[i]=a.defaultValue}const o=`__vue-devtools-plugin-settings__${t.id}`;let s=Object.assign({},r);try{const i=localStorage.getItem(o),a=JSON.parse(i);Object.assign(s,a)}catch{}this.fallbacks={getSettings(){return s},setSettings(i){try{localStorage.setItem(o,JSON.stringify(i))}catch{}s=i},now(){return _m()}},n&&n.on(mm,(i,a)=>{i===this.plugin.id&&this.fallbacks.setSettings(a)}),this.proxiedOn=new Proxy({},{get:(i,a)=>this.target?this.target.on[a]:(...l)=>{this.onQueue.push({method:a,args:l})}}),this.proxiedTarget=new Proxy({},{get:(i,a)=>this.target?this.target[a]:a==="on"?this.proxiedOn:Object.keys(this.fallbacks).includes(a)?(...l)=>(this.targetQueue.push({method:a,args:l,resolve:()=>{}}),this.fallbacks[a](...l)):(...l)=>new Promise(u=>{this.targetQueue.push({method:a,args:l,resolve:u})})})}async setRealTarget(t){this.target=t;for(const n of this.onQueue)this.target.on[n.method](...n.args);for(const n of this.targetQueue)n.resolve(await this.target[n.method](...n.args))}}function ym(e,t){const n=e,r=Tc(),o=dm(),s=pm&&n.enableEarlyProxy;if(o&&(r.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__||!s))o.emit(hm,e,t);else{const i=s?new vm(n,o):null;(r.__VUE_DEVTOOLS_PLUGINS__=r.__VUE_DEVTOOLS_PLUGINS__||[]).push({pluginDescriptor:n,setupFn:t,proxy:i}),i&&t(i.proxiedTarget)}}/*! + * vue-router v4.5.0 + * (c) 2024 Eduardo San Martin Morote + * @license MIT + */const Ft=typeof document<"u";function Oc(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function bm(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Oc(e.default)}const de=Object.assign;function ls(e,t){const n={};for(const r in t){const o=t[r];n[r]=ct(o)?o.map(e):e(o)}return n}const Er=()=>{},ct=Array.isArray,xc=/#/g,Em=/&/g,Sm=/\//g,Am=/=/g,Cm=/\?/g,kc=/\+/g,wm=/%5B/g,Tm=/%5D/g,Pc=/%5E/g,Om=/%60/g,Ic=/%7B/g,xm=/%7C/g,Rc=/%7D/g,km=/%20/g;function pi(e){return encodeURI(""+e).replace(xm,"|").replace(wm,"[").replace(Tm,"]")}function Pm(e){return pi(e).replace(Ic,"{").replace(Rc,"}").replace(Pc,"^")}function Ps(e){return pi(e).replace(kc,"%2B").replace(km,"+").replace(xc,"%23").replace(Em,"%26").replace(Om,"`").replace(Ic,"{").replace(Rc,"}").replace(Pc,"^")}function Im(e){return Ps(e).replace(Am,"%3D")}function Rm(e){return pi(e).replace(xc,"%23").replace(Cm,"%3F")}function Lm(e){return e==null?"":Rm(e).replace(Sm,"%2F")}function jn(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const Dm=/\/$/,Nm=e=>e.replace(Dm,"");function us(e,t,n="/"){let r,o={},s="",i="";const a=t.indexOf("#");let l=t.indexOf("?");return a=0&&(l=-1),l>-1&&(r=t.slice(0,l),s=t.slice(l+1,a>-1?a:t.length),o=e(s)),a>-1&&(r=r||t.slice(0,a),i=t.slice(a,t.length)),r=Hm(r??t,n),{fullPath:r+(s&&"?")+s+i,path:r,query:o,hash:jn(i)}}function Vm(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function xa(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Mm(e,t,n){const r=t.matched.length-1,o=n.matched.length-1;return r>-1&&r===o&&sn(t.matched[r],n.matched[o])&&Lc(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function sn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Lc(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Fm(e[n],t[n]))return!1;return!0}function Fm(e,t){return ct(e)?ka(e,t):ct(t)?ka(t,e):e===t}function ka(e,t){return ct(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function Hm(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),o=r[r.length-1];(o===".."||o===".")&&r.push("");let s=n.length-1,i,a;for(i=0;i1&&s--;else break;return n.slice(0,s).join("/")+"/"+r.slice(i).join("/")}const Vt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var Rr;(function(e){e.pop="pop",e.push="push"})(Rr||(Rr={}));var Sr;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Sr||(Sr={}));function Bm(e){if(!e)if(Ft){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Nm(e)}const $m=/^[^#]+#/;function Um(e,t){return e.replace($m,"#")+t}function jm(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const Mo=()=>({left:window.scrollX,top:window.scrollY});function zm(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),o=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=jm(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Pa(e,t){return(history.state?history.state.position-t:-1)+e}const Is=new Map;function Km(e,t){Is.set(e,t)}function Wm(e){const t=Is.get(e);return Is.delete(e),t}let qm=()=>location.protocol+"//"+location.host;function Dc(e,t){const{pathname:n,search:r,hash:o}=t,s=e.indexOf("#");if(s>-1){let a=o.includes(e.slice(s))?e.slice(s).length:1,l=o.slice(a);return l[0]!=="/"&&(l="/"+l),xa(l,"")}return xa(n,e)+r+o}function Gm(e,t,n,r){let o=[],s=[],i=null;const a=({state:d})=>{const p=Dc(e,location),_=n.value,v=t.value;let b=0;if(d){if(n.value=p,t.value=d,i&&i===_){i=null;return}b=v?d.position-v.position:0}else r(p);o.forEach(E=>{E(n.value,_,{delta:b,type:Rr.pop,direction:b?b>0?Sr.forward:Sr.back:Sr.unknown})})};function l(){i=n.value}function u(d){o.push(d);const p=()=>{const _=o.indexOf(d);_>-1&&o.splice(_,1)};return s.push(p),p}function c(){const{history:d}=window;d.state&&d.replaceState(de({},d.state,{scroll:Mo()}),"")}function f(){for(const d of s)d();s=[],window.removeEventListener("popstate",a),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",a),window.addEventListener("beforeunload",c,{passive:!0}),{pauseListeners:l,listen:u,destroy:f}}function Ia(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:o?Mo():null}}function Ym(e){const{history:t,location:n}=window,r={value:Dc(e,n)},o={value:t.state};o.value||s(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function s(l,u,c){const f=e.indexOf("#"),d=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+l:qm()+e+l;try{t[c?"replaceState":"pushState"](u,"",d),o.value=u}catch(p){console.error(p),n[c?"replace":"assign"](d)}}function i(l,u){const c=de({},t.state,Ia(o.value.back,l,o.value.forward,!0),u,{position:o.value.position});s(l,c,!0),r.value=l}function a(l,u){const c=de({},o.value,t.state,{forward:l,scroll:Mo()});s(c.current,c,!0);const f=de({},Ia(r.value,l,null),{position:c.position+1},u);s(l,f,!1),r.value=l}return{location:r,state:o,push:a,replace:i}}function Xm(e){e=Bm(e);const t=Ym(e),n=Gm(e,t.state,t.location,t.replace);function r(s,i=!0){i||n.pauseListeners(),history.go(s)}const o=de({location:"",base:e,go:r,createHref:Um.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function Nc(e){return typeof e=="string"||e&&typeof e=="object"}function Vc(e){return typeof e=="string"||typeof e=="symbol"}const Mc=Symbol("");var Ra;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Ra||(Ra={}));function zn(e,t){return de(new Error,{type:e,[Mc]:!0},t)}function Lt(e,t){return e instanceof Error&&Mc in e&&(t==null||!!(e.type&t))}const La="[^/]+?",Zm={sensitive:!1,strict:!1,start:!0,end:!0},Jm=/[.+*?^${}()[\]/\\]/g;function Qm(e,t){const n=de({},Zm,t),r=[];let o=n.start?"^":"";const s=[];for(const u of e){const c=u.length?[]:[90];n.strict&&!u.length&&(o+="/");for(let f=0;ft.length?t.length===1&&t[0]===80?1:-1:0}function Fc(e,t){let n=0;const r=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const tg={type:0,value:""},ng=/[a-zA-Z0-9_]/;function rg(e){if(!e)return[[]];if(e==="/")return[[tg]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(p){throw new Error(`ERR (${n})/"${u}": ${p}`)}let n=0,r=n;const o=[];let s;function i(){s&&o.push(s),s=[]}let a=0,l,u="",c="";function f(){u&&(n===0?s.push({type:0,value:u}):n===1||n===2||n===3?(s.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),s.push({type:1,value:u,regexp:c,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),u="")}function d(){u+=l}for(;a{i(m)}:Er}function i(f){if(Vc(f)){const d=r.get(f);d&&(r.delete(f),n.splice(n.indexOf(d),1),d.children.forEach(i),d.alias.forEach(i))}else{const d=n.indexOf(f);d>-1&&(n.splice(d,1),f.record.name&&r.delete(f.record.name),f.children.forEach(i),f.alias.forEach(i))}}function a(){return n}function l(f){const d=lg(f,n);n.splice(d,0,f),f.record.name&&!Ma(f)&&r.set(f.record.name,f)}function u(f,d){let p,_={},v,b;if("name"in f&&f.name){if(p=r.get(f.name),!p)throw zn(1,{location:f});b=p.record.name,_=de(Na(d.params,p.keys.filter(m=>!m.optional).concat(p.parent?p.parent.keys.filter(m=>m.optional):[]).map(m=>m.name)),f.params&&Na(f.params,p.keys.map(m=>m.name))),v=p.stringify(_)}else if(f.path!=null)v=f.path,p=n.find(m=>m.re.test(v)),p&&(_=p.parse(v),b=p.record.name);else{if(p=d.name?r.get(d.name):n.find(m=>m.re.test(d.path)),!p)throw zn(1,{location:f,currentLocation:d});b=p.record.name,_=de({},d.params,f.params),v=p.stringify(_)}const E=[];let A=p;for(;A;)E.unshift(A.record),A=A.parent;return{name:b,path:v,params:_,matched:E,meta:ag(E)}}e.forEach(f=>s(f));function c(){n.length=0,r.clear()}return{addRoute:s,resolve:u,removeRoute:i,clearRoutes:c,getRoutes:a,getRecordMatcher:o}}function Na(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function Va(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:ig(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function ig(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function Ma(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function ag(e){return e.reduce((t,n)=>de(t,n.meta),{})}function Fa(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function lg(e,t){let n=0,r=t.length;for(;n!==r;){const s=n+r>>1;Fc(e,t[s])<0?r=s:n=s+1}const o=ug(e);return o&&(r=t.lastIndexOf(o,r-1)),r}function ug(e){let t=e;for(;t=t.parent;)if(Hc(t)&&Fc(e,t)===0)return t}function Hc({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function cg(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;os&&Ps(s)):[r&&Ps(r)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+n,s!=null&&(t+="="+s))})}return t}function fg(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=ct(r)?r.map(o=>o==null?null:""+o):r==null?r:""+r)}return t}const dg=Symbol(""),Ba=Symbol(""),Fo=Symbol(""),hi=Symbol(""),Rs=Symbol("");function lr(){let e=[];function t(r){return e.push(r),()=>{const o=e.indexOf(r);o>-1&&e.splice(o,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Jt(e,t,n,r,o,s=i=>i()){const i=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise((a,l)=>{const u=d=>{d===!1?l(zn(4,{from:n,to:t})):d instanceof Error?l(d):Nc(d)?l(zn(2,{from:t,to:d})):(i&&r.enterCallbacks[o]===i&&typeof d=="function"&&i.push(d),a())},c=s(()=>e.call(r&&r.instances[o],t,n,u));let f=Promise.resolve(c);e.length<3&&(f=f.then(u)),f.catch(d=>l(d))})}function cs(e,t,n,r,o=s=>s()){const s=[];for(const i of e)for(const a in i.components){let l=i.components[a];if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if(Oc(l)){const c=(l.__vccOpts||l)[t];c&&s.push(Jt(c,n,r,i,a,o))}else{let u=l();s.push(()=>u.then(c=>{if(!c)throw new Error(`Couldn't resolve component "${a}" at "${i.path}"`);const f=bm(c)?c.default:c;i.mods[a]=c,i.components[a]=f;const p=(f.__vccOpts||f)[t];return p&&Jt(p,n,r,i,a,o)()}))}}return s}function $a(e){const t=Ze(Fo),n=Ze(hi),r=F(()=>{const l=Qt(e.to);return t.resolve(l)}),o=F(()=>{const{matched:l}=r.value,{length:u}=l,c=l[u-1],f=n.matched;if(!c||!f.length)return-1;const d=f.findIndex(sn.bind(null,c));if(d>-1)return d;const p=Ua(l[u-2]);return u>1&&Ua(c)===p&&f[f.length-1].path!==p?f.findIndex(sn.bind(null,l[u-2])):d}),s=F(()=>o.value>-1&&_g(n.params,r.value.params)),i=F(()=>o.value>-1&&o.value===n.matched.length-1&&Lc(n.params,r.value.params));function a(l={}){if(gg(l)){const u=t[Qt(e.replace)?"replace":"push"](Qt(e.to)).catch(Er);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>u),u}return Promise.resolve()}if(Ft){const l=Qn();if(l){const u={route:r.value,isActive:s.value,isExactActive:i.value,error:null};l.__vrl_devtools=l.__vrl_devtools||[],l.__vrl_devtools.push(u),lc(()=>{u.route=r.value,u.isActive=s.value,u.isExactActive=i.value,u.error=Nc(Qt(e.to))?null:'Invalid "to" value'},{flush:"post"})}}return{route:r,href:F(()=>r.value.href),isActive:s,isExactActive:i,navigate:a}}function pg(e){return e.length===1?e[0]:e}const hg=he({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:$a,setup(e,{slots:t}){const n=$r($a(e)),{options:r}=Ze(Fo),o=F(()=>({[ja(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[ja(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const s=t.default&&pg(t.default(n));return e.custom?s:_e("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},s)}}}),mg=hg;function gg(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function _g(e,t){for(const n in t){const r=t[n],o=e[n];if(typeof r=="string"){if(r!==o)return!1}else if(!ct(o)||o.length!==r.length||r.some((s,i)=>s!==o[i]))return!1}return!0}function Ua(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const ja=(e,t,n)=>e??t??n,vg=he({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=Ze(Rs),o=F(()=>e.route||r.value),s=Ze(Ba,0),i=F(()=>{let u=Qt(s);const{matched:c}=o.value;let f;for(;(f=c[u])&&!f.components;)u++;return u}),a=F(()=>o.value.matched[i.value]);An(Ba,F(()=>i.value+1)),An(dg,a),An(Rs,o);const l=ve();return Ue(()=>[l.value,a.value,e.name],([u,c,f],[d,p,_])=>{c&&(c.instances[f]=u,p&&p!==c&&u&&u===d&&(c.leaveGuards.size||(c.leaveGuards=p.leaveGuards),c.updateGuards.size||(c.updateGuards=p.updateGuards))),u&&c&&(!p||!sn(c,p)||!d)&&(c.enterCallbacks[f]||[]).forEach(v=>v(u))},{flush:"post"}),()=>{const u=o.value,c=e.name,f=a.value,d=f&&f.components[c];if(!d)return za(n.default,{Component:d,route:u});const p=f.props[c],_=p?p===!0?u.params:typeof p=="function"?p(u):p:null,b=_e(d,de({},_,t,{onVnodeUnmounted:E=>{E.component.isUnmounted&&(f.instances[c]=null)},ref:l}));if(Ft&&b.ref){const E={depth:i.value,name:f.name,path:f.path,meta:f.meta};(ct(b.ref)?b.ref.map(m=>m.i):[b.ref.i]).forEach(m=>{m.__vrv_devtools=E})}return za(n.default,{Component:b,route:u})||b}}});function za(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const yg=vg;function ur(e,t){const n=de({},e,{matched:e.matched.map(r=>Pg(r,["instances","children","aliasOf"]))});return{_custom:{type:null,readOnly:!0,display:e.fullPath,tooltip:t,value:n}}}function Qr(e){return{_custom:{display:e}}}let bg=0;function Eg(e,t,n){if(t.__hasDevtools)return;t.__hasDevtools=!0;const r=bg++;ym({id:"org.vuejs.router"+(r?"."+r:""),label:"Vue Router",packageName:"vue-router",homepage:"https://router.vuejs.org",logo:"https://router.vuejs.org/logo.png",componentStateTypes:["Routing"],app:e},o=>{typeof o.now!="function"&&console.warn("[Vue Router]: You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html."),o.on.inspectComponent((c,f)=>{c.instanceData&&c.instanceData.state.push({type:"Routing",key:"$route",editable:!1,value:ur(t.currentRoute.value,"Current Route")})}),o.on.visitComponentTree(({treeNode:c,componentInstance:f})=>{if(f.__vrv_devtools){const d=f.__vrv_devtools;c.tags.push({label:(d.name?`${d.name.toString()}: `:"")+d.path,textColor:0,tooltip:"This component is rendered by <router-view>",backgroundColor:Bc})}ct(f.__vrl_devtools)&&(f.__devtoolsApi=o,f.__vrl_devtools.forEach(d=>{let p=d.route.path,_=jc,v="",b=0;d.error?(p=d.error,_=Tg,b=Og):d.isExactActive?(_=Uc,v="This is exactly active"):d.isActive&&(_=$c,v="This link is active"),c.tags.push({label:p,textColor:b,tooltip:v,backgroundColor:_})}))}),Ue(t.currentRoute,()=>{l(),o.notifyComponentUpdate(),o.sendInspectorTree(a),o.sendInspectorState(a)});const s="router:navigations:"+r;o.addTimelineLayer({id:s,label:`Router${r?" "+r:""} Navigations`,color:4237508}),t.onError((c,f)=>{o.addTimelineEvent({layerId:s,event:{title:"Error during Navigation",subtitle:f.fullPath,logType:"error",time:o.now(),data:{error:c},groupId:f.meta.__navigationId}})});let i=0;t.beforeEach((c,f)=>{const d={guard:Qr("beforeEach"),from:ur(f,"Current Location during this navigation"),to:ur(c,"Target location")};Object.defineProperty(c.meta,"__navigationId",{value:i++}),o.addTimelineEvent({layerId:s,event:{time:o.now(),title:"Start of navigation",subtitle:c.fullPath,data:d,groupId:c.meta.__navigationId}})}),t.afterEach((c,f,d)=>{const p={guard:Qr("afterEach")};d?(p.failure={_custom:{type:Error,readOnly:!0,display:d?d.message:"",tooltip:"Navigation Failure",value:d}},p.status=Qr("❌")):p.status=Qr("✅"),p.from=ur(f,"Current Location during this navigation"),p.to=ur(c,"Target location"),o.addTimelineEvent({layerId:s,event:{title:"End of navigation",subtitle:c.fullPath,time:o.now(),data:p,logType:d?"warning":"default",groupId:c.meta.__navigationId}})});const a="router-inspector:"+r;o.addInspector({id:a,label:"Routes"+(r?" "+r:""),icon:"book",treeFilterPlaceholder:"Search routes"});function l(){if(!u)return;const c=u;let f=n.getRoutes().filter(d=>!d.parent||!d.parent.record.components);f.forEach(Wc),c.filter&&(f=f.filter(d=>Ls(d,c.filter.toLowerCase()))),f.forEach(d=>Kc(d,t.currentRoute.value)),c.rootNodes=f.map(zc)}let u;o.on.getInspectorTree(c=>{u=c,c.app===e&&c.inspectorId===a&&l()}),o.on.getInspectorState(c=>{if(c.app===e&&c.inspectorId===a){const d=n.getRoutes().find(p=>p.record.__vd_id===c.nodeId);d&&(c.state={options:Ag(d)})}}),o.sendInspectorTree(a),o.sendInspectorState(a)})}function Sg(e){return e.optional?e.repeatable?"*":"?":e.repeatable?"+":""}function Ag(e){const{record:t}=e,n=[{editable:!1,key:"path",value:t.path}];return t.name!=null&&n.push({editable:!1,key:"name",value:t.name}),n.push({editable:!1,key:"regexp",value:e.re}),e.keys.length&&n.push({editable:!1,key:"keys",value:{_custom:{type:null,readOnly:!0,display:e.keys.map(r=>`${r.name}${Sg(r)}`).join(" "),tooltip:"Param keys",value:e.keys}}}),t.redirect!=null&&n.push({editable:!1,key:"redirect",value:t.redirect}),e.alias.length&&n.push({editable:!1,key:"aliases",value:e.alias.map(r=>r.record.path)}),Object.keys(e.record.meta).length&&n.push({editable:!1,key:"meta",value:e.record.meta}),n.push({key:"score",editable:!1,value:{_custom:{type:null,readOnly:!0,display:e.score.map(r=>r.join(", ")).join(" | "),tooltip:"Score used to sort routes",value:e.score}}}),n}const Bc=15485081,$c=2450411,Uc=8702998,Cg=2282478,jc=16486972,wg=6710886,Tg=16704226,Og=12131356;function zc(e){const t=[],{record:n}=e;n.name!=null&&t.push({label:String(n.name),textColor:0,backgroundColor:Cg}),n.aliasOf&&t.push({label:"alias",textColor:0,backgroundColor:jc}),e.__vd_match&&t.push({label:"matches",textColor:0,backgroundColor:Bc}),e.__vd_exactActive&&t.push({label:"exact",textColor:0,backgroundColor:Uc}),e.__vd_active&&t.push({label:"active",textColor:0,backgroundColor:$c}),n.redirect&&t.push({label:typeof n.redirect=="string"?`redirect: ${n.redirect}`:"redirects",textColor:16777215,backgroundColor:wg});let r=n.__vd_id;return r==null&&(r=String(xg++),n.__vd_id=r),{id:r,label:n.path,tags:t,children:e.children.map(zc)}}let xg=0;const kg=/^\/(.*)\/([a-z]*)$/;function Kc(e,t){const n=t.matched.length&&sn(t.matched[t.matched.length-1],e.record);e.__vd_exactActive=e.__vd_active=n,n||(e.__vd_active=t.matched.some(r=>sn(r,e.record))),e.children.forEach(r=>Kc(r,t))}function Wc(e){e.__vd_match=!1,e.children.forEach(Wc)}function Ls(e,t){const n=String(e.re).match(kg);if(e.__vd_match=!1,!n||n.length<3)return!1;if(new RegExp(n[1].replace(/\$$/,""),n[2]).test(t))return e.children.forEach(i=>Ls(i,t)),e.record.path!=="/"||t==="/"?(e.__vd_match=e.re.test(t),!0):!1;const o=e.record.path.toLowerCase(),s=jn(o);return!t.startsWith("/")&&(s.includes(t)||o.includes(t))||s.startsWith(t)||o.startsWith(t)||e.record.name&&String(e.record.name).includes(t)?!0:e.children.some(i=>Ls(i,t))}function Pg(e,t){const n={};for(const r in e)t.includes(r)||(n[r]=e[r]);return n}function Ig(e){const t=sg(e.routes,e),n=e.parseQuery||cg,r=e.stringifyQuery||Ha,o=e.history,s=lr(),i=lr(),a=lr(),l=bt(Vt);let u=Vt;Ft&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=ls.bind(null,x=>""+x),f=ls.bind(null,Lm),d=ls.bind(null,jn);function p(x,q){let j,J;return Vc(x)?(j=t.getRecordMatcher(x),J=q):J=x,t.addRoute(J,j)}function _(x){const q=t.getRecordMatcher(x);q&&t.removeRoute(q)}function v(){return t.getRoutes().map(x=>x.record)}function b(x){return!!t.getRecordMatcher(x)}function E(x,q){if(q=de({},q||l.value),typeof x=="string"){const g=us(n,x,q.path),S=t.resolve({path:g.path},q),k=o.createHref(g.fullPath);return de(g,S,{params:d(S.params),hash:jn(g.hash),redirectedFrom:void 0,href:k})}let j;if(x.path!=null)j=de({},x,{path:us(n,x.path,q.path).path});else{const g=de({},x.params);for(const S in g)g[S]==null&&delete g[S];j=de({},x,{params:f(g)}),q.params=f(q.params)}const J=t.resolve(j,q),ce=x.hash||"";J.params=c(d(J.params));const Ee=Vm(r,de({},x,{hash:Pm(ce),path:J.path})),h=o.createHref(Ee);return de({fullPath:Ee,hash:ce,query:r===Ha?fg(x.query):x.query||{}},J,{redirectedFrom:void 0,href:h})}function A(x){return typeof x=="string"?us(n,x,l.value.path):de({},x)}function m(x,q){if(u!==x)return zn(8,{from:q,to:x})}function y(x){return M(x)}function L(x){return y(de(A(x),{replace:!0}))}function W(x){const q=x.matched[x.matched.length-1];if(q&&q.redirect){const{redirect:j}=q;let J=typeof j=="function"?j(x):j;return typeof J=="string"&&(J=J.includes("?")||J.includes("#")?J=A(J):{path:J},J.params={}),de({query:x.query,hash:x.hash,params:J.path!=null?{}:x.params},J)}}function M(x,q){const j=u=E(x),J=l.value,ce=x.state,Ee=x.force,h=x.replace===!0,g=W(j);if(g)return M(de(A(g),{state:typeof g=="object"?de({},ce,g.state):ce,force:Ee,replace:h}),q||j);const S=j;S.redirectedFrom=q;let k;return!Ee&&Mm(r,J,j)&&(k=zn(16,{to:S,from:J}),xe(J,J,!0,!1)),(k?Promise.resolve(k):O(S,J)).catch(T=>Lt(T)?Lt(T,2)?T:ye(T):z(T,S,J)).then(T=>{if(T){if(Lt(T,2))return M(de({replace:h},A(T.to),{state:typeof T.to=="object"?de({},ce,T.to.state):ce,force:Ee}),q||S)}else T=C(S,J,!0,h,ce);return B(S,J,T),T})}function w(x,q){const j=m(x,q);return j?Promise.reject(j):Promise.resolve()}function U(x){const q=gt.values().next().value;return q&&typeof q.runWithContext=="function"?q.runWithContext(x):x()}function O(x,q){let j;const[J,ce,Ee]=Rg(x,q);j=cs(J.reverse(),"beforeRouteLeave",x,q);for(const g of J)g.leaveGuards.forEach(S=>{j.push(Jt(S,x,q))});const h=w.bind(null,x,q);return j.push(h),tt(j).then(()=>{j=[];for(const g of s.list())j.push(Jt(g,x,q));return j.push(h),tt(j)}).then(()=>{j=cs(ce,"beforeRouteUpdate",x,q);for(const g of ce)g.updateGuards.forEach(S=>{j.push(Jt(S,x,q))});return j.push(h),tt(j)}).then(()=>{j=[];for(const g of Ee)if(g.beforeEnter)if(ct(g.beforeEnter))for(const S of g.beforeEnter)j.push(Jt(S,x,q));else j.push(Jt(g.beforeEnter,x,q));return j.push(h),tt(j)}).then(()=>(x.matched.forEach(g=>g.enterCallbacks={}),j=cs(Ee,"beforeRouteEnter",x,q,U),j.push(h),tt(j))).then(()=>{j=[];for(const g of i.list())j.push(Jt(g,x,q));return j.push(h),tt(j)}).catch(g=>Lt(g,8)?g:Promise.reject(g))}function B(x,q,j){a.list().forEach(J=>U(()=>J(x,q,j)))}function C(x,q,j,J,ce){const Ee=m(x,q);if(Ee)return Ee;const h=q===Vt,g=Ft?history.state:{};j&&(J||h?o.replace(x.fullPath,de({scroll:h&&g&&g.scroll},ce)):o.push(x.fullPath,ce)),l.value=x,xe(x,q,j,h),ye()}let D;function Z(){D||(D=o.listen((x,q,j)=>{if(!et.listening)return;const J=E(x),ce=W(J);if(ce){M(de(ce,{replace:!0,force:!0}),J).catch(Er);return}u=J;const Ee=l.value;Ft&&Km(Pa(Ee.fullPath,j.delta),Mo()),O(J,Ee).catch(h=>Lt(h,12)?h:Lt(h,2)?(M(de(A(h.to),{force:!0}),J).then(g=>{Lt(g,20)&&!j.delta&&j.type===Rr.pop&&o.go(-1,!1)}).catch(Er),Promise.reject()):(j.delta&&o.go(-j.delta,!1),z(h,J,Ee))).then(h=>{h=h||C(J,Ee,!1),h&&(j.delta&&!Lt(h,8)?o.go(-j.delta,!1):j.type===Rr.pop&&Lt(h,20)&&o.go(-1,!1)),B(J,Ee,h)}).catch(Er)}))}let ee=lr(),I=lr(),N;function z(x,q,j){ye(x);const J=I.list();return J.length?J.forEach(ce=>ce(x,q,j)):console.error(x),Promise.reject(x)}function le(){return N&&l.value!==Vt?Promise.resolve():new Promise((x,q)=>{ee.add([x,q])})}function ye(x){return N||(N=!x,Z(),ee.list().forEach(([q,j])=>x?j(x):q()),ee.reset()),x}function xe(x,q,j,J){const{scrollBehavior:ce}=e;if(!Ft||!ce)return Promise.resolve();const Ee=!j&&Wm(Pa(x.fullPath,0))||(J||!j)&&history.state&&history.state.scroll||null;return Jn().then(()=>ce(x,q,Ee)).then(h=>h&&zm(h)).catch(h=>z(h,x,q))}const be=x=>o.go(x);let Qe;const gt=new Set,et={currentRoute:l,listening:!0,addRoute:p,removeRoute:_,clearRoutes:t.clearRoutes,hasRoute:b,getRoutes:v,resolve:E,options:e,push:y,replace:L,go:be,back:()=>be(-1),forward:()=>be(1),beforeEach:s.add,beforeResolve:i.add,afterEach:a.add,onError:I.add,isReady:le,install(x){const q=this;x.component("RouterLink",mg),x.component("RouterView",yg),x.config.globalProperties.$router=q,Object.defineProperty(x.config.globalProperties,"$route",{enumerable:!0,get:()=>Qt(l)}),Ft&&!Qe&&l.value===Vt&&(Qe=!0,y(o.location).catch(ce=>{}));const j={};for(const ce in Vt)Object.defineProperty(j,ce,{get:()=>l.value[ce],enumerable:!0});x.provide(Fo,q),x.provide(hi,Tu(j)),x.provide(Rs,l);const J=x.unmount;gt.add(x),x.unmount=function(){gt.delete(x),gt.size<1&&(u=Vt,D&&D(),D=null,l.value=Vt,Qe=!1,N=!1),J()},Ft&&Eg(x,q,t)}};function tt(x){return x.reduce((q,j)=>q.then(()=>U(j)),Promise.resolve())}return et}function Rg(e,t){const n=[],r=[],o=[],s=Math.max(t.matched.length,e.matched.length);for(let i=0;isn(u,a))?r.push(a):n.push(a));const l=e.matched[i];l&&(t.matched.find(u=>sn(u,l))||o.push(l))}return[n,r,o]}function Tn(){return Ze(Fo)}function Wt(e){return Ze(hi)}var mi=Symbol(""),Pt=()=>{const e=Ze(mi);if(!e)throw new Error("useClientData() is called without provider.");return e},Lg=()=>Pt().pageComponent,er=()=>Pt().pageData,At=()=>Pt().pageFrontmatter,Dg=()=>Pt().pageHead,Ng=()=>Pt().pageLang,Vg=()=>Pt().pageLayout,Wr=()=>Pt().routeLocale,Mg=()=>Pt().routes,qc=()=>Pt().siteData,gi=()=>Pt().siteLocaleData,Fg=Symbol(""),Ds=bt(cm),Hn=bt(fm),Gc=(e,t)=>{const n=nm(e,t);if(Hn.value[n])return n;const r=encodeURI(n);if(Hn.value[r])return r;const o=Ds.value[n]||Ds.value[r];return o||n},Lr=(e,t)=>{const{pathname:n,hashAndQueries:r}=Ac(e),o=Gc(n,t),s=o+r;return Hn.value[o]?{...Hn.value[o],path:s,notFound:!1}:{...Hn.value["/404.html"],path:s,notFound:!0}},Hg=(e,t)=>{const{pathname:n,hashAndQueries:r}=Ac(e);return Gc(n,t)+r},Bg=e=>{if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget){const t=e.currentTarget.getAttribute("target");if(t!=null&&t.match(/\b_blank\b/i))return}return e.preventDefault(),!0}},Ho=he({name:"RouteLink",props:{to:{type:String,required:!0},active:Boolean,activeClass:{type:String,default:"route-link-active"}},slots:Object,setup(e,{slots:t}){const n=Tn(),r=Wt(),o=F(()=>e.to.startsWith("#")||e.to.startsWith("?")?e.to:`/learning-ai/${Hg(e.to,r.path).substring(1)}`);return()=>_e("a",{class:["route-link",{[e.activeClass]:e.active}],href:o.value,onClick:(s={})=>{Bg(s)&&n.push(e.to).catch()}},t.default())}}),tr=he({name:"AutoLink",props:{config:{type:Object,required:!0}},slots:Object,setup(e,{slots:t}){const n=qd(e,"config"),r=Wt(),o=qc(),s=F(()=>Kr(n.value.link)),i=F(()=>n.value.target||(s.value?"_blank":void 0)),a=F(()=>i.value==="_blank"),l=F(()=>!s.value&&!a.value),u=F(()=>n.value.rel||(a.value?"noopener noreferrer":null)),c=F(()=>n.value.ariaLabel??n.value.text),f=F(()=>{if(n.value.exact)return!1;const p=Object.keys(o.value.locales);return p.length?p.every(_=>_!==n.value.link):n.value.link!=="/"}),d=F(()=>l.value?n.value.activeMatch?(n.value.activeMatch instanceof RegExp?n.value.activeMatch:new RegExp(n.value.activeMatch,"u")).test(r.path):f.value?r.path.startsWith(n.value.link):r.path===n.value.link:!1);return()=>{const{before:p,after:_,default:v}=t,b=(v==null?void 0:v(n.value))??[p==null?void 0:p(n.value),n.value.text,_==null?void 0:_(n.value)];return l.value?_e(Ho,{class:"auto-link",to:n.value.link,active:d.value,"aria-label":c.value},()=>b):_e("a",{class:"auto-link external-link",href:n.value.link,"aria-label":c.value,rel:u.value,target:i.value},b)}}}),_i=he({name:"ClientOnly",setup(e,t){const n=ve(!1);return Je(()=>{n.value=!0}),()=>{var r,o;return n.value?(o=(r=t.slots).default)==null?void 0:o.call(r):null}}}),vi=he({name:"Content",props:{path:{type:String,required:!1,default:""}},setup(e){const t=Lg(),n=F(()=>{if(!e.path)return t.value;const r=Lr(e.path);return Sp(async()=>r.loader().then(({comp:o})=>o))});return()=>_e(n.value)}}),$g="Layout",Ug="en-US",hn=$r({resolveLayouts:e=>e.reduce((t,n)=>({...t,...n.layouts}),{}),resolvePageHead:(e,t,n)=>{const r=yt(t.description)?t.description:n.description,o=[...Array.isArray(t.head)?t.head:[],...n.head,["title",{},e],["meta",{name:"description",content:r}]];return lm(o)},resolvePageHeadTitle:(e,t)=>[e.title,t.title].filter(n=>!!n).join(" | "),resolvePageLang:(e,t)=>e.lang||t.lang||Ug,resolvePageLayout:(e,t)=>{const n=yt(e.frontmatter.layout)?e.frontmatter.layout:$g;if(!t[n])throw new Error(`[vuepress] Cannot resolve layout: ${n}`);return t[n]},resolveRouteLocale:(e,t)=>rm(e,decodeURI(t)),resolveSiteLocaleData:({base:e,locales:t,...n},r)=>{var o;return{...n,...t[r],head:[...((o=t[r])==null?void 0:o.head)??[],...n.head]}}}),un=(e={})=>e,yi=e=>Vo(e)?e:`/learning-ai/${wc(e)}`;function Bo(e){return fu()?(bd(e),!0):!1}function St(e){return typeof e=="function"?e():Qt(e)}const bi=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const jg=Object.prototype.toString,zg=e=>jg.call(e)==="[object Object]",Ns=()=>{};function Yc(e,t){function n(...r){return new Promise((o,s)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(o).catch(s)})}return n}const Xc=e=>e();function Kg(e,t={}){let n,r,o=Ns;const s=a=>{clearTimeout(a),o(),o=Ns};return a=>{const l=St(e),u=St(t.maxWait);return n&&s(n),l<=0||u!==void 0&&u<=0?(r&&(s(r),r=null),Promise.resolve(a())):new Promise((c,f)=>{o=t.rejectOnCancel?f:c,u&&!r&&(r=setTimeout(()=>{n&&s(n),r=null,c(a())},u)),n=setTimeout(()=>{r&&s(r),r=null,c(a())},l)})}}function Wg(e=Xc){const t=ve(!0);function n(){t.value=!1}function r(){t.value=!0}const o=(...s)=>{t.value&&e(...s)};return{isActive:Po(t),pause:n,resume:r,eventFilter:o}}function qg(e){let t;function n(){return t||(t=e()),t}return n.reset=async()=>{const r=t;t=void 0,r&&await r},n}function Gg(e){return Qn()}function Yg(e,t=200,n={}){return Yc(Kg(t,n),e)}function Xg(e,t,n={}){const{eventFilter:r=Xc,...o}=n;return Ue(e,Yc(r,t),o)}function Zg(e,t,n={}){const{eventFilter:r,...o}=n,{eventFilter:s,pause:i,resume:a,isActive:l}=Wg(r);return{stop:Xg(e,t,{...o,eventFilter:s}),pause:i,resume:a,isActive:l}}function Ei(e,t=!0,n){Gg()?Je(e,n):t?e():Jn(e)}function Jg(e,t,n={}){const{immediate:r=!0}=n,o=ve(!1);let s=null;function i(){s&&(clearTimeout(s),s=null)}function a(){o.value=!1,i()}function l(...u){i(),o.value=!0,s=setTimeout(()=>{o.value=!1,s=null,e(...u)},St(t))}return r&&(o.value=!0,bi&&l()),Bo(a),{isPending:Po(o),start:l,stop:a}}function Zc(e=!1,t={}){const{truthyValue:n=!0,falsyValue:r=!1}=t,o=De(e),s=ve(e);function i(a){if(arguments.length)return s.value=a,s.value;{const l=St(n);return s.value=s.value===l?St(r):l,s.value}}return o?i:[s,i]}const an=bi?window:void 0,Jc=bi?window.navigator:void 0;function yn(e){var t;const n=St(e);return(t=n==null?void 0:n.$el)!=null?t:n}function ft(...e){let t,n,r,o;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,o]=e,t=an):[t,n,r,o]=e,!t)return Ns;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const s=[],i=()=>{s.forEach(c=>c()),s.length=0},a=(c,f,d,p)=>(c.addEventListener(f,d,p),()=>c.removeEventListener(f,d,p)),l=Ue(()=>[yn(t),St(o)],([c,f])=>{if(i(),!c)return;const d=zg(f)?{...f}:f;s.push(...n.flatMap(p=>r.map(_=>a(c,p,_,d))))},{immediate:!0,flush:"post"}),u=()=>{l(),i()};return Bo(u),u}function Qg(){const e=ve(!1),t=Qn();return t&&Je(()=>{e.value=!0},t),e}function $o(e){const t=Qg();return F(()=>(t.value,!!e()))}function Si(e,t={}){const{window:n=an}=t,r=$o(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let o;const s=ve(!1),i=u=>{s.value=u.matches},a=()=>{o&&("removeEventListener"in o?o.removeEventListener("change",i):o.removeListener(i))},l=lc(()=>{r.value&&(a(),o=n.matchMedia(St(e)),"addEventListener"in o?o.addEventListener("change",i):o.addListener(i),s.value=o.matches)});return Bo(()=>{l(),a(),o=void 0}),s}function Ka(e,t={}){const{controls:n=!1,navigator:r=Jc}=t,o=$o(()=>r&&"permissions"in r),s=bt(),i=typeof e=="string"?{name:e}:e,a=bt(),l=()=>{var c,f;a.value=(f=(c=s.value)==null?void 0:c.state)!=null?f:"prompt"};ft(s,"change",l);const u=qg(async()=>{if(o.value){if(!s.value)try{s.value=await r.permissions.query(i)}catch{s.value=void 0}finally{l()}if(n)return ue(s.value)}});return u(),n?{state:a,isSupported:o,query:u}:a}function e_(e={}){const{navigator:t=Jc,read:n=!1,source:r,copiedDuring:o=1500,legacy:s=!1}=e,i=$o(()=>t&&"clipboard"in t),a=Ka("clipboard-read"),l=Ka("clipboard-write"),u=F(()=>i.value||s),c=ve(""),f=ve(!1),d=Jg(()=>f.value=!1,o);function p(){i.value&&E(a.value)?t.clipboard.readText().then(A=>{c.value=A}):c.value=b()}u.value&&n&&ft(["copy","cut"],p);async function _(A=St(r)){u.value&&A!=null&&(i.value&&E(l.value)?await t.clipboard.writeText(A):v(A),c.value=A,f.value=!0,d.start())}function v(A){const m=document.createElement("textarea");m.value=A??"",m.style.position="absolute",m.style.opacity="0",document.body.appendChild(m),m.select(),document.execCommand("copy"),m.remove()}function b(){var A,m,y;return(y=(m=(A=document==null?void 0:document.getSelection)==null?void 0:A.call(document))==null?void 0:m.toString())!=null?y:""}function E(A){return A==="granted"||A==="prompt"}return{isSupported:u,text:c,copied:f,copy:_}}const eo=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},to="__vueuse_ssr_handlers__",t_=n_();function n_(){return to in eo||(eo[to]=eo[to]||{}),eo[to]}function r_(e,t){return t_[e]||t}function o_(e){return Si("(prefers-color-scheme: dark)",e)}function s_(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const i_={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Wa="vueuse-storage";function Ai(e,t,n,r={}){var o;const{flush:s="pre",deep:i=!0,listenToStorageChanges:a=!0,writeDefaults:l=!0,mergeDefaults:u=!1,shallow:c,window:f=an,eventFilter:d,onError:p=O=>{console.error(O)},initOnMounted:_}=r,v=(c?bt:ve)(typeof t=="function"?t():t);if(!n)try{n=r_("getDefaultStorage",()=>{var O;return(O=an)==null?void 0:O.localStorage})()}catch(O){p(O)}if(!n)return v;const b=St(t),E=s_(b),A=(o=r.serializer)!=null?o:i_[E],{pause:m,resume:y}=Zg(v,()=>W(v.value),{flush:s,deep:i,eventFilter:d});f&&a&&Ei(()=>{n instanceof Storage?ft(f,"storage",w):ft(f,Wa,U),_&&w()}),_||w();function L(O,B){if(f){const C={key:e,oldValue:O,newValue:B,storageArea:n};f.dispatchEvent(n instanceof Storage?new StorageEvent("storage",C):new CustomEvent(Wa,{detail:C}))}}function W(O){try{const B=n.getItem(e);if(O==null)L(B,null),n.removeItem(e);else{const C=A.write(O);B!==C&&(n.setItem(e,C),L(B,C))}}catch(B){p(B)}}function M(O){const B=O?O.newValue:n.getItem(e);if(B==null)return l&&b!=null&&n.setItem(e,A.write(b)),b;if(!O&&u){const C=A.read(B);return typeof u=="function"?u(C,b):E==="object"&&!Array.isArray(C)?{...b,...C}:C}else return typeof B!="string"?B:A.read(B)}function w(O){if(!(O&&O.storageArea!==n)){if(O&&O.key==null){v.value=b;return}if(!(O&&O.key!==e)){m();try{(O==null?void 0:O.newValue)!==A.write(v.value)&&(v.value=M(O))}catch(B){p(B)}finally{O?Jn(y):y()}}}}function U(O){w(O.detail)}return v}function a_(e,t,n={}){const{window:r=an,...o}=n;let s;const i=$o(()=>r&&"ResizeObserver"in r),a=()=>{s&&(s.disconnect(),s=void 0)},l=F(()=>{const f=St(e);return Array.isArray(f)?f.map(d=>yn(d)):[yn(f)]}),u=Ue(l,f=>{if(a(),i.value&&r){s=new ResizeObserver(t);for(const d of f)d&&s.observe(d,o)}},{immediate:!0,flush:"post"}),c=()=>{a(),u()};return Bo(c),{isSupported:i,stop:c}}function l_(e,t={width:0,height:0},n={}){const{window:r=an,box:o="content-box"}=n,s=F(()=>{var f,d;return(d=(f=yn(e))==null?void 0:f.namespaceURI)==null?void 0:d.includes("svg")}),i=ve(t.width),a=ve(t.height),{stop:l}=a_(e,([f])=>{const d=o==="border-box"?f.borderBoxSize:o==="content-box"?f.contentBoxSize:f.devicePixelContentBoxSize;if(r&&s.value){const p=yn(e);if(p){const _=p.getBoundingClientRect();i.value=_.width,a.value=_.height}}else if(d){const p=Array.isArray(d)?d:[d];i.value=p.reduce((_,{inlineSize:v})=>_+v,0),a.value=p.reduce((_,{blockSize:v})=>_+v,0)}else i.value=f.contentRect.width,a.value=f.contentRect.height},n);Ei(()=>{const f=yn(e);f&&(i.value="offsetWidth"in f?f.offsetWidth:t.width,a.value="offsetHeight"in f?f.offsetHeight:t.height)});const u=Ue(()=>yn(e),f=>{i.value=f?t.width:0,a.value=f?t.height:0});function c(){l(),u()}return{width:i,height:a,stop:c}}function u_(e={}){const{window:t=an,behavior:n="auto"}=e;if(!t)return{x:ve(0),y:ve(0)};const r=ve(t.scrollX),o=ve(t.scrollY),s=F({get(){return r.value},set(a){scrollTo({left:a,behavior:n})}}),i=F({get(){return o.value},set(a){scrollTo({top:a,behavior:n})}});return ft(t,"scroll",()=>{r.value=t.scrollX,o.value=t.scrollY},{capture:!1,passive:!0}),{x:s,y:i}}function c_(e={}){const{window:t=an,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:o=!0,includeScrollbar:s=!0,type:i="inner"}=e,a=ve(n),l=ve(r),u=()=>{t&&(i==="outer"?(a.value=t.outerWidth,l.value=t.outerHeight):s?(a.value=t.innerWidth,l.value=t.innerHeight):(a.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};if(u(),Ei(u),ft("resize",u,{passive:!0}),o){const c=Si("(orientation: portrait)");Ue(c,()=>u())}return{width:a,height:l}}const qa=async(e,t)=>{const{path:n,query:r}=e.currentRoute.value,{scrollBehavior:o}=e.options;e.options.scrollBehavior=void 0,await e.replace({path:n,query:r,hash:t}),e.options.scrollBehavior=o},f_=({headerLinkSelector:e,headerAnchorSelector:t,delay:n,offset:r=5})=>{const o=Tn();ft("scroll",Yg(()=>{var _,v;const i=Math.max(window.scrollY,document.documentElement.scrollTop,document.body.scrollTop);if(Math.abs(i-0)f.some(E=>E.hash===b.hash));for(let b=0;b=(((_=E.parentElement)==null?void 0:_.offsetTop)??0)-r,y=!A||i<(((v=A.parentElement)==null?void 0:v.offsetTop)??0)-r;if(!(m&&y))continue;const W=decodeURIComponent(o.currentRoute.value.hash),M=decodeURIComponent(E.hash);if(W===M)return;if(c){for(let w=b+1;w{if(t===!1)return[];const[n,r]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t,o=e.filter(i=>i.level>=n&&i.level<=r),s=[];e:for(let i=0;i=0;l--){const u=o[l];if(u.level{let n;if(t.length){const r=e.cloneNode(!0);r.querySelectorAll(t.join(",")).forEach(o=>{o.remove()}),n=r.textContent||""}else n=e.textContent||"";return n.trim()},b_=({selector:e=[...new Array(6)].map((r,o)=>`[vp-content] h${o+1}`).join(","),levels:t=2,ignore:n=[]}={})=>{const r=Array.from(document.querySelectorAll(e)).filter(o=>o.id&&o.hasChildNodes()).map(o=>{const s=Number(o.tagName[1]);return{element:o,title:y_(o,n),link:`#${o.id}`,slug:o.id,level:s}});return v_(r,t)},Qc=(e,t)=>{var r;const n=(r=Qn())==null?void 0:r.appContext.components;return n?e in n||rt(e)in n||Br(rt(e))in n:!1},ef=e=>new Promise(t=>{setTimeout(t,e)}),tf=e=>{const t=Wr();return F(()=>e[t.value]??{})},E_=()=>{const e=Mg();return F(()=>Object.keys(e.value))},S_=e=>typeof e<"u",nf=(e,t)=>yt(e)&&e.startsWith(t),{keys:A_}=Object,rf=e=>nf(e,"/");var C_={"/":{backToTop:"Back to top"}};const w_=he({name:"BackToTop",setup(){const e=At(),t=tf(C_),n=bt(),{height:r}=l_(n),{height:o}=c_(),{y:s}=u_(),i=F(()=>e.value.backToTop!==!1&&s.value>100),a=F(()=>s.value/(r.value-o.value)*100);return Je(()=>{n.value=document.body}),()=>_e(fi,{name:"back-to-top"},()=>i.value?_e("button",{type:"button",class:"vp-back-to-top-button","aria-label":t.value.backToTop,onClick:()=>{window.scrollTo({top:0,behavior:"smooth"})}},[_e("span",{class:"vp-scroll-progress",role:"progressbar","aria-labelledby":"loadinglabel","aria-valuenow":a.value},_e("svg",_e("circle",{cx:"26",cy:"26",r:"24",fill:"none",stroke:"currentColor","stroke-width":"4","stroke-dasharray":`${Math.PI*a.value*.48} ${Math.PI*(100-a.value)*.48}`}))),_e("div",{class:"back-to-top-icon"})]):null)}}),T_=un({rootComponents:[w_]}),O_=Object.freeze(Object.defineProperty({__proto__:null,default:T_},Symbol.toStringTag,{value:"Module"})),x_=/language-(shellscript|shell|bash|sh|zsh)/,k_=({delay:e=500,duration:t=2e3,locales:n,selector:r,showInMobile:o,ignoreSelector:s=[],transform:i})=>{const a=Si("(max-width: 419px)"),l=F(()=>!a.value||o),u=tf(n),c=er(),f=b=>{var A;if(b.hasAttribute("copy-code"))return;const E=document.createElement("button");E.type="button",E.classList.add("vp-copy-code-button"),E.setAttribute("aria-label",u.value.copy),E.setAttribute("data-copied",u.value.copied),(A=b.parentElement)==null||A.insertBefore(E,b),b.setAttribute("copy-code","")};Ue(()=>[c.value.path,l.value],async()=>{document.body.classList.toggle("no-copy-code",!l.value),l.value&&(await Jn(),await ef(e),document.querySelectorAll(r.join(",")).forEach(f))},{immediate:!0});const{copy:p}=e_({legacy:!0}),_=new WeakMap,v=async(b,E,A)=>{const m=E.cloneNode(!0);s.length&&m.querySelectorAll(s.join(",")).forEach(W=>{W.remove()}),i&&i(m);let y=m.textContent||"";if(x_.test(b.className)&&(y=y.replace(/^ *(\$|>) /gm,"")),await p(y),t<=0)return;A.classList.add("copied"),clearTimeout(_.get(A));const L=setTimeout(()=>{A.classList.remove("copied"),A.blur(),_.delete(A)},t);_.set(A,L)};ft("click",b=>{const E=b.target;if(l.value&&E.matches('div[class*="language-"] > button.vp-copy-code-button')){const A=E.parentElement,m=E.nextElementSibling;if(!A||!m)return;v(A,m,E)}})};var P_=[],I_={"/":{copy:"Copy code",copied:"Copied"}},R_=['[vp-content] div[class*="language-"] pre'];const L_=un({setup:()=>{k_({selector:R_,ignoreSelector:P_,locales:I_,duration:2e3,delay:500,showInMobile:!1})}}),D_=Object.freeze(Object.defineProperty({__proto__:null,default:L_},Symbol.toStringTag,{value:"Module"})),N_=un({setup(){ft("beforeprint",()=>{document.querySelectorAll("details").forEach(e=>{e.open=!0})})}}),V_=Object.freeze(Object.defineProperty({__proto__:null,default:N_},Symbol.toStringTag,{value:"Module"}));/*! medium-zoom 1.1.0 | MIT License | https://github.com/francoischalifour/medium-zoom */var gn=Object.assign||function(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:{},r=window.Promise||function(C){function D(){}C(D,D)},o=function(C){var D=C.target;if(D===U){_();return}m.indexOf(D)!==-1&&v({target:D})},s=function(){if(!(L||!w.original)){var C=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(W-C)>M.scrollOffset&&setTimeout(_,150)}},i=function(C){var D=C.key||C.keyCode;(D==="Escape"||D==="Esc"||D===27)&&_()},a=function(){var C=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},D=C;if(C.background&&(U.style.background=C.background),C.container&&C.container instanceof Object&&(D.container=gn({},M.container,C.container)),C.template){var Z=uo(C.template)?C.template:document.querySelector(C.template);D.template=Z}return M=gn({},M,D),m.forEach(function(ee){ee.dispatchEvent(kn("medium-zoom:update",{detail:{zoom:O}}))}),O},l=function(){var C=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e(gn({},M,C))},u=function(){for(var C=arguments.length,D=Array(C),Z=0;Z0?D.reduce(function(I,N){return[].concat(I,Ya(N))},[]):m;return ee.forEach(function(I){I.classList.remove("medium-zoom-image"),I.dispatchEvent(kn("medium-zoom:detach",{detail:{zoom:O}}))}),m=m.filter(function(I){return ee.indexOf(I)===-1}),O},f=function(C,D){var Z=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return m.forEach(function(ee){ee.addEventListener("medium-zoom:"+C,D,Z)}),y.push({type:"medium-zoom:"+C,listener:D,options:Z}),O},d=function(C,D){var Z=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return m.forEach(function(ee){ee.removeEventListener("medium-zoom:"+C,D,Z)}),y=y.filter(function(ee){return!(ee.type==="medium-zoom:"+C&&ee.listener.toString()===D.toString())}),O},p=function(){var C=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},D=C.target,Z=function(){var I={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},N=void 0,z=void 0;if(M.container)if(M.container instanceof Object)I=gn({},I,M.container),N=I.width-I.left-I.right-M.margin*2,z=I.height-I.top-I.bottom-M.margin*2;else{var le=uo(M.container)?M.container:document.querySelector(M.container),ye=le.getBoundingClientRect(),xe=ye.width,be=ye.height,Qe=ye.left,gt=ye.top;I=gn({},I,{width:xe,height:be,left:Qe,top:gt})}N=N||I.width-M.margin*2,z=z||I.height-M.margin*2;var et=w.zoomedHd||w.original,tt=Ga(et)?N:et.naturalWidth||N,x=Ga(et)?z:et.naturalHeight||z,q=et.getBoundingClientRect(),j=q.top,J=q.left,ce=q.width,Ee=q.height,h=Math.min(Math.max(ce,tt),N)/ce,g=Math.min(Math.max(Ee,x),z)/Ee,S=Math.min(h,g),k=(-J+(N-ce)/2+M.margin+I.left)/S,T=(-j+(z-Ee)/2+M.margin+I.top)/S,R="scale("+S+") translate3d("+k+"px, "+T+"px, 0)";w.zoomed.style.transform=R,w.zoomedHd&&(w.zoomedHd.style.transform=R)};return new r(function(ee){if(D&&m.indexOf(D)===-1){ee(O);return}var I=function xe(){L=!1,w.zoomed.removeEventListener("transitionend",xe),w.original.dispatchEvent(kn("medium-zoom:opened",{detail:{zoom:O}})),ee(O)};if(w.zoomed){ee(O);return}if(D)w.original=D;else if(m.length>0){var N=m;w.original=N[0]}else{ee(O);return}if(w.original.dispatchEvent(kn("medium-zoom:open",{detail:{zoom:O}})),W=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,L=!0,w.zoomed=H_(w.original),document.body.appendChild(U),M.template){var z=uo(M.template)?M.template:document.querySelector(M.template);w.template=document.createElement("div"),w.template.appendChild(z.content.cloneNode(!0)),document.body.appendChild(w.template)}if(w.original.parentElement&&w.original.parentElement.tagName==="PICTURE"&&w.original.currentSrc&&(w.zoomed.src=w.original.currentSrc),document.body.appendChild(w.zoomed),window.requestAnimationFrame(function(){document.body.classList.add("medium-zoom--opened")}),w.original.classList.add("medium-zoom-image--hidden"),w.zoomed.classList.add("medium-zoom-image--opened"),w.zoomed.addEventListener("click",_),w.zoomed.addEventListener("transitionend",I),w.original.getAttribute("data-zoom-src")){w.zoomedHd=w.zoomed.cloneNode(),w.zoomedHd.removeAttribute("srcset"),w.zoomedHd.removeAttribute("sizes"),w.zoomedHd.removeAttribute("loading"),w.zoomedHd.src=w.zoomed.getAttribute("data-zoom-src"),w.zoomedHd.onerror=function(){clearInterval(le),console.warn("Unable to reach the zoom image target "+w.zoomedHd.src),w.zoomedHd=null,Z()};var le=setInterval(function(){w.zoomedHd.complete&&(clearInterval(le),w.zoomedHd.classList.add("medium-zoom-image--opened"),w.zoomedHd.addEventListener("click",_),document.body.appendChild(w.zoomedHd),Z())},10)}else if(w.original.hasAttribute("srcset")){w.zoomedHd=w.zoomed.cloneNode(),w.zoomedHd.removeAttribute("sizes"),w.zoomedHd.removeAttribute("loading");var ye=w.zoomedHd.addEventListener("load",function(){w.zoomedHd.removeEventListener("load",ye),w.zoomedHd.classList.add("medium-zoom-image--opened"),w.zoomedHd.addEventListener("click",_),document.body.appendChild(w.zoomedHd),Z()})}else Z()})},_=function(){return new r(function(C){if(L||!w.original){C(O);return}var D=function Z(){w.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(w.zoomed),w.zoomedHd&&document.body.removeChild(w.zoomedHd),document.body.removeChild(U),w.zoomed.classList.remove("medium-zoom-image--opened"),w.template&&document.body.removeChild(w.template),L=!1,w.zoomed.removeEventListener("transitionend",Z),w.original.dispatchEvent(kn("medium-zoom:closed",{detail:{zoom:O}})),w.original=null,w.zoomed=null,w.zoomedHd=null,w.template=null,C(O)};L=!0,document.body.classList.remove("medium-zoom--opened"),w.zoomed.style.transform="",w.zoomedHd&&(w.zoomedHd.style.transform=""),w.template&&(w.template.style.transition="opacity 150ms",w.template.style.opacity=0),w.original.dispatchEvent(kn("medium-zoom:close",{detail:{zoom:O}})),w.zoomed.addEventListener("transitionend",D)})},v=function(){var C=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},D=C.target;return w.original?_():p({target:D})},b=function(){return M},E=function(){return m},A=function(){return w.original},m=[],y=[],L=!1,W=0,M=n,w={original:null,zoomed:null,zoomedHd:null,template:null};Object.prototype.toString.call(t)==="[object Object]"?M=t:(t||typeof t=="string")&&u(t),M=gn({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},M);var U=F_(M.background);document.addEventListener("click",o),document.addEventListener("keyup",i),document.addEventListener("scroll",s),window.addEventListener("resize",_);var O={open:p,close:_,toggle:v,update:a,clone:l,attach:u,detach:c,on:f,off:d,getOptions:b,getImages:E,getZoomedImage:A};return O};function $_(e,t){t===void 0&&(t={});var n=t.insertAt;if(!(typeof document>"u")){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",n==="top"&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var U_=".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}";$_(U_);const j_=Symbol("mediumZoom");var z_={};const K_="[vp-content] > img, [vp-content] :not(a) > img",W_=z_,q_=300,G_=un({enhance({app:e,router:t}){const n=B_(W_);n.refresh=(r=K_)=>{n.detach(),n.attach(r)},e.provide(j_,n),t.afterEach(()=>{ef(q_).then(()=>{n.refresh()})})}}),Y_=Object.freeze(Object.defineProperty({__proto__:null,default:G_},Symbol.toStringTag,{value:"Module"}));/** + * NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT + */const Xa=(e,t)=>{e.classList.add(t)},Za=(e,t)=>{e.classList.remove(t)},X_=e=>{var t;(t=e==null?void 0:e.parentNode)==null||t.removeChild(e)},fs=(e,t,n)=>en?n:e,Ja=e=>(-1+e)*100,Z_=(()=>{const e=[],t=()=>{const n=e.shift();n&&n(t)};return n=>{e.push(n),e.length===1&&t()}})(),J_=e=>e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(t,n)=>n.toUpperCase()),ro=(()=>{const e=["Webkit","O","Moz","ms"],t={},n=s=>{const{style:i}=document.body;if(s in i)return s;const a=s.charAt(0).toUpperCase()+s.slice(1);let l=e.length;for(;l--;){const u=`${e[l]}${a}`;if(u in i)return u}return s},r=s=>{const i=J_(s);return t[i]??(t[i]=n(i))},o=(s,i,a)=>{s.style[r(i)]=a};return(s,i)=>{for(const a in i){const l=i[a];Object.hasOwn(i,a)&&S_(l)&&o(s,a,l)}}})(),Dt={minimum:.08,easing:"ease",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,barSelector:'[role="bar"]',parent:"body",template:'
'},Pe={percent:null,isRendered:()=>!!document.getElementById("nprogress"),set:e=>{const{speed:t,easing:n}=Dt,r=Pe.isStarted(),o=fs(e,Dt.minimum,1);Pe.percent=o===1?null:o;const s=Pe.render(!r),i=s.querySelector(Dt.barSelector);return s.offsetWidth,Z_(a=>{ro(i,{transform:`translate3d(${Ja(o)}%,0,0)`,transition:`all ${t}ms ${n}`}),o===1?(ro(s,{transition:"none",opacity:"1"}),s.offsetWidth,setTimeout(()=>{ro(s,{transition:`all ${t}ms linear`,opacity:"0"}),setTimeout(()=>{Pe.remove(),a()},t)},t)):setTimeout(()=>{a()},t)}),Pe},isStarted:()=>typeof Pe.percent=="number",start:()=>{Pe.percent||Pe.set(0);const e=()=>{setTimeout(()=>{Pe.percent&&(Pe.trickle(),e())},Dt.trickleSpeed)};return e(),Pe},done:e=>!e&&!Pe.percent?Pe:Pe.increase(.3+.5*Math.random()).set(1),increase:e=>{let{percent:t}=Pe;return t?(t=fs(t+(typeof e=="number"?e:(1-t)*fs(Math.random()*t,.1,.95)),0,.994),Pe.set(t)):Pe.start()},trickle:()=>Pe.increase(Math.random()*Dt.trickleRate),render:e=>{if(Pe.isRendered())return document.getElementById("nprogress");Xa(document.documentElement,"nprogress-busy");const t=document.createElement("div");t.id="nprogress",t.innerHTML=Dt.template;const n=t.querySelector(Dt.barSelector),r=document.querySelector(Dt.parent),o=e?"-100":Ja(Pe.percent??0);return ro(n,{transition:"all 0 linear",transform:`translate3d(${o}%,0,0)`}),r&&(r!==document.body&&Xa(r,"nprogress-custom-parent"),r.appendChild(t)),t},remove:()=>{Za(document.documentElement,"nprogress-busy"),Za(document.querySelector(Dt.parent),"nprogress-custom-parent"),X_(document.getElementById("nprogress"))}},Q_=()=>{Je(()=>{const e=Tn(),t=new Set;t.add(e.currentRoute.value.path),e.beforeEach(n=>{t.has(n.path)||Pe.start()}),e.afterEach(n=>{t.add(n.path),Pe.done()})})},ev=un({setup(){Q_()}}),tv=Object.freeze(Object.defineProperty({__proto__:null,default:ev},Symbol.toStringTag,{value:"Module"})),nv=({selector:e='div[class*="language-"].has-collapsed-lines > .collapsed-lines'}={})=>{ft("click",t=>{const n=t.target;if(n.matches(e)){const r=n.parentElement;r!=null&&r.classList.toggle("collapsed")&&r.scrollIntoView({block:"center",behavior:"instant"})}})},rv={setup(){nv()}},ov=Object.freeze(Object.defineProperty({__proto__:null,default:rv},Symbol.toStringTag,{value:"Module"})),sv="VUEPRESS_CODE_TAB_STORE",oo=Ai(sv,{}),iv=he({name:"CodeTabs",props:{active:{type:Number,default:0},data:{type:Array,required:!0},id:{type:String,required:!0},tabId:{type:String,default:""}},slots:Object,setup(e,{slots:t}){const n=ve(e.active),r=bt([]),o=()=>{e.tabId&&(oo.value[e.tabId]=e.data[n.value].id)},s=(u=n.value)=>{n.value=u{n.value=u>0?u-1:r.value.length-1,r.value[n.value].focus()},a=(u,c)=>{u.key===" "||u.key==="Enter"?(u.preventDefault(),n.value=c):u.key==="ArrowRight"?(u.preventDefault(),s()):u.key==="ArrowLeft"&&(u.preventDefault(),i()),e.tabId&&(oo.value[e.tabId]=e.data[n.value].id)},l=()=>{if(e.tabId){const u=e.data.findIndex(({id:c})=>oo.value[e.tabId]===c);if(u!==-1)return u}return e.active};return Je(()=>{n.value=l(),Ue(()=>oo.value[e.tabId],(u,c)=>{if(e.tabId&&u!==c){const f=e.data.findIndex(({id:d})=>d===u);f!==-1&&(n.value=f)}})}),()=>e.data.length?_e("div",{class:"vp-code-tabs"},[_e("div",{class:"vp-code-tabs-nav",role:"tablist"},e.data.map(({id:u},c)=>{const f=c===n.value;return _e("button",{type:"button",ref:d=>{d&&(r.value[c]=d)},class:["vp-code-tab-nav",{active:f}],role:"tab","aria-controls":`codetab-${e.id}-${c}`,"aria-selected":f,onClick:()=>{n.value=c,o()},onKeydown:d=>{a(d,c)}},t[`title${c}`]({value:u,isActive:f}))})),e.data.map(({id:u},c)=>{const f=c===n.value;return _e("div",{class:["vp-code-tab",{active:f}],id:`codetab-${e.id}-${c}`,role:"tabpanel","aria-expanded":f},[_e("div",{class:"vp-code-tab-title"},t[`title${c}`]({value:u,isActive:f})),t[`tab${c}`]({value:u,isActive:f})])})]):null}}),av="VUEPRESS_TAB_STORE",ds=Ai(av,{}),lv=he({name:"Tabs",props:{active:{type:Number,default:0},data:{type:Array,required:!0},id:{type:String,required:!0},tabId:{type:String,default:""}},slots:Object,setup(e,{slots:t}){const n=ve(e.active),r=bt([]),o=()=>{e.tabId&&(ds.value[e.tabId]=e.data[n.value].id)},s=(u=n.value)=>{n.value=u{n.value=u>0?u-1:r.value.length-1,r.value[n.value].focus()},a=(u,c)=>{u.key===" "||u.key==="Enter"?(u.preventDefault(),n.value=c):u.key==="ArrowRight"?(u.preventDefault(),s()):u.key==="ArrowLeft"&&(u.preventDefault(),i()),o()},l=()=>{if(e.tabId){const u=e.data.findIndex(({id:c})=>ds.value[e.tabId]===c);if(u!==-1)return u}return e.active};return Je(()=>{n.value=l(),Ue(()=>ds.value[e.tabId],(u,c)=>{if(e.tabId&&u!==c){const f=e.data.findIndex(({id:d})=>d===u);f!==-1&&(n.value=f)}})}),()=>e.data.length?_e("div",{class:"vp-tabs"},[_e("div",{class:"vp-tabs-nav",role:"tablist"},e.data.map(({id:u},c)=>{const f=c===n.value;return _e("button",{type:"button",ref:d=>{d&&(r.value[c]=d)},class:["vp-tab-nav",{active:f}],role:"tab","aria-controls":`tab-${e.id}-${c}`,"aria-selected":f,onClick:()=>{n.value=c,o()},onKeydown:d=>{a(d,c)}},t[`title${c}`]({value:u,isActive:f}))})),e.data.map(({id:u},c)=>{const f=c===n.value;return _e("div",{class:["vp-tab",{active:f}],id:`tab-${e.id}-${c}`,role:"tabpanel","aria-expanded":f},[_e("div",{class:"vp-tab-title"},t[`title${c}`]({value:u,isActive:f})),t[`tab${c}`]({value:u,isActive:f})])})]):null}}),uv={enhance:({app:e})=>{e.component("CodeTabs",iv),e.component("Tabs",lv)}},cv=Object.freeze(Object.defineProperty({__proto__:null,default:uv},Symbol.toStringTag,{value:"Module"}));var fv=Object.create,of=Object.defineProperty,dv=Object.getOwnPropertyDescriptor,Ci=Object.getOwnPropertyNames,pv=Object.getPrototypeOf,hv=Object.prototype.hasOwnProperty,mv=(e,t)=>function(){return e&&(t=(0,e[Ci(e)[0]])(e=0)),t},gv=(e,t)=>function(){return t||(0,e[Ci(e)[0]])((t={exports:{}}).exports,t),t.exports},_v=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ci(t))!hv.call(e,o)&&o!==n&&of(e,o,{get:()=>t[o],enumerable:!(r=dv(t,o))||r.enumerable});return e},vv=(e,t,n)=>(n=e!=null?fv(pv(e)):{},_v(of(n,"default",{value:e,enumerable:!0}),e)),qr=mv({"../../node_modules/.pnpm/tsup@8.3.5_@microsoft+api-extractor@7.48.0_@types+node@22.10.1__@swc+core@1.5.29_jiti@2.0.0_p_swvvp2d4pgn6xuiiec4l4x2i7a/node_modules/tsup/assets/esm_shims.js"(){}}),yv=gv({"../../node_modules/.pnpm/rfdc@1.4.1/node_modules/rfdc/index.js"(e,t){qr(),t.exports=r;function n(s){return s instanceof Buffer?Buffer.from(s):new s.constructor(s.buffer.slice(),s.byteOffset,s.length)}function r(s){if(s=s||{},s.circles)return o(s);const i=new Map;if(i.set(Date,f=>new Date(f)),i.set(Map,(f,d)=>new Map(l(Array.from(f),d))),i.set(Set,(f,d)=>new Set(l(Array.from(f),d))),s.constructorHandlers)for(const f of s.constructorHandlers)i.set(f[0],f[1]);let a=null;return s.proto?c:u;function l(f,d){const p=Object.keys(f),_=new Array(p.length);for(let v=0;vnew Date(p)),l.set(Map,(p,_)=>new Map(c(Array.from(p),_))),l.set(Set,(p,_)=>new Set(c(Array.from(p),_))),s.constructorHandlers)for(const p of s.constructorHandlers)l.set(p[0],p[1]);let u=null;return s.proto?d:f;function c(p,_){const v=Object.keys(p),b=new Array(v.length);for(let E=0;E(i=Tv(e,u,c),i.finally(()=>{if(i=null,n.trailing&&a&&!o){const f=l(u,a);return a=null,f}}),i);return function(...u){return i?(n.trailing&&(a=u),i):new Promise(c=>{const f=!o&&n.leading;clearTimeout(o),o=setTimeout(()=>{o=null;const d=n.leading?r:l(this,u);for(const p of s)p(d);s=[]},t),f?(r=l(this,u),c(r)):s.push(c)})}}async function Tv(e,t,n){return await e.apply(t,n)}function Vs(e,t={},n){for(const r in e){const o=e[r],s=n?`${n}:${r}`:r;typeof o=="object"&&o!==null?Vs(o,t,s):typeof o=="function"&&(t[s]=o)}return t}const Ov={run:e=>e()},xv=()=>Ov,af=typeof console.createTask<"u"?console.createTask:xv;function kv(e,t){const n=t.shift(),r=af(n);return e.reduce((o,s)=>o.then(()=>r.run(()=>s(...t))),Promise.resolve())}function Pv(e,t){const n=t.shift(),r=af(n);return Promise.all(e.map(o=>r.run(()=>o(...t))))}function ps(e,t){for(const n of[...e])n(t)}class Iv{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(t,n,r={}){if(!t||typeof n!="function")return()=>{};const o=t;let s;for(;this._deprecatedHooks[t];)s=this._deprecatedHooks[t],t=s.to;if(s&&!r.allowDeprecated){let i=s.message;i||(i=`${o} hook has been deprecated`+(s.to?`, please use ${s.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(i)||(console.warn(i),this._deprecatedMessages.add(i))}if(!n.name)try{Object.defineProperty(n,"name",{get:()=>"_"+t.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[t]=this._hooks[t]||[],this._hooks[t].push(n),()=>{n&&(this.removeHook(t,n),n=void 0)}}hookOnce(t,n){let r,o=(...s)=>(typeof r=="function"&&r(),r=void 0,o=void 0,n(...s));return r=this.hook(t,o),r}removeHook(t,n){if(this._hooks[t]){const r=this._hooks[t].indexOf(n);r!==-1&&this._hooks[t].splice(r,1),this._hooks[t].length===0&&delete this._hooks[t]}}deprecateHook(t,n){this._deprecatedHooks[t]=typeof n=="string"?{to:n}:n;const r=this._hooks[t]||[];delete this._hooks[t];for(const o of r)this.hook(t,o)}deprecateHooks(t){Object.assign(this._deprecatedHooks,t);for(const n in t)this.deprecateHook(n,t[n])}addHooks(t){const n=Vs(t),r=Object.keys(n).map(o=>this.hook(o,n[o]));return()=>{for(const o of r.splice(0,r.length))o()}}removeHooks(t){const n=Vs(t);for(const r in n)this.removeHook(r,n[r])}removeAllHooks(){for(const t in this._hooks)delete this._hooks[t]}callHook(t,...n){return n.unshift(t),this.callHookWith(kv,t,...n)}callHookParallel(t,...n){return n.unshift(t),this.callHookWith(Pv,t,...n)}callHookWith(t,n,...r){const o=this._before||this._after?{name:n,args:r,context:{}}:void 0;this._before&&ps(this._before,o);const s=t(n in this._hooks?[...this._hooks[n]]:[],r);return s instanceof Promise?s.finally(()=>{this._after&&o&&ps(this._after,o)}):(this._after&&o&&ps(this._after,o),s)}beforeEach(t){return this._before=this._before||[],this._before.push(t),()=>{if(this._before!==void 0){const n=this._before.indexOf(t);n!==-1&&this._before.splice(n,1)}}}afterEach(t){return this._after=this._after||[],this._after.push(t),()=>{if(this._after!==void 0){const n=this._after.indexOf(t);n!==-1&&this._after.splice(n,1)}}}}function lf(){return new Iv}var Rv=Object.create,uf=Object.defineProperty,Lv=Object.getOwnPropertyDescriptor,wi=Object.getOwnPropertyNames,Dv=Object.getPrototypeOf,Nv=Object.prototype.hasOwnProperty,Vv=(e,t)=>function(){return e&&(t=(0,e[wi(e)[0]])(e=0)),t},cf=(e,t)=>function(){return t||(0,e[wi(e)[0]])((t={exports:{}}).exports,t),t.exports},Mv=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of wi(t))!Nv.call(e,o)&&o!==n&&uf(e,o,{get:()=>t[o],enumerable:!(r=Lv(t,o))||r.enumerable});return e},Fv=(e,t,n)=>(n=e!=null?Rv(Dv(e)):{},Mv(uf(n,"default",{value:e,enumerable:!0}),e)),P=Vv({"../../node_modules/.pnpm/tsup@8.3.5_@microsoft+api-extractor@7.48.0_@types+node@22.10.1__@swc+core@1.5.29_jiti@2.0.0_p_swvvp2d4pgn6xuiiec4l4x2i7a/node_modules/tsup/assets/esm_shims.js"(){}}),Hv=cf({"../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/lib/speakingurl.js"(e,t){P(),function(n){var r={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"Ae",Å:"A",Æ:"AE",Ç:"C",È:"E",É:"E",Ê:"E",Ë:"E",Ì:"I",Í:"I",Î:"I",Ï:"I",Ð:"D",Ñ:"N",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"Oe",Ő:"O",Ø:"O",Ù:"U",Ú:"U",Û:"U",Ü:"Ue",Ű:"U",Ý:"Y",Þ:"TH",ß:"ss",à:"a",á:"a",â:"a",ã:"a",ä:"ae",å:"a",æ:"ae",ç:"c",è:"e",é:"e",ê:"e",ë:"e",ì:"i",í:"i",î:"i",ï:"i",ð:"d",ñ:"n",ò:"o",ó:"o",ô:"o",õ:"o",ö:"oe",ő:"o",ø:"o",ù:"u",ú:"u",û:"u",ü:"ue",ű:"u",ý:"y",þ:"th",ÿ:"y","ẞ":"SS",ا:"a",أ:"a",إ:"i",آ:"aa",ؤ:"u",ئ:"e",ء:"a",ب:"b",ت:"t",ث:"th",ج:"j",ح:"h",خ:"kh",د:"d",ذ:"th",ر:"r",ز:"z",س:"s",ش:"sh",ص:"s",ض:"dh",ط:"t",ظ:"z",ع:"a",غ:"gh",ف:"f",ق:"q",ك:"k",ل:"l",م:"m",ن:"n",ه:"h",و:"w",ي:"y",ى:"a",ة:"h",ﻻ:"la",ﻷ:"laa",ﻹ:"lai",ﻵ:"laa",گ:"g",چ:"ch",پ:"p",ژ:"zh",ک:"k",ی:"y","َ":"a","ً":"an","ِ":"e","ٍ":"en","ُ":"u","ٌ":"on","ْ":"","٠":"0","١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","۰":"0","۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9",က:"k",ခ:"kh",ဂ:"g",ဃ:"ga",င:"ng",စ:"s",ဆ:"sa",ဇ:"z","စျ":"za",ည:"ny",ဋ:"t",ဌ:"ta",ဍ:"d",ဎ:"da",ဏ:"na",တ:"t",ထ:"ta",ဒ:"d",ဓ:"da",န:"n",ပ:"p",ဖ:"pa",ဗ:"b",ဘ:"ba",မ:"m",ယ:"y",ရ:"ya",လ:"l",ဝ:"w",သ:"th",ဟ:"h",ဠ:"la",အ:"a","ြ":"y","ျ":"ya","ွ":"w","ြွ":"yw","ျွ":"ywa","ှ":"h",ဧ:"e","၏":"-e",ဣ:"i",ဤ:"-i",ဉ:"u",ဦ:"-u",ဩ:"aw","သြော":"aw",ဪ:"aw","၀":"0","၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","္":"","့":"","း":"",č:"c",ď:"d",ě:"e",ň:"n",ř:"r",š:"s",ť:"t",ů:"u",ž:"z",Č:"C",Ď:"D",Ě:"E",Ň:"N",Ř:"R",Š:"S",Ť:"T",Ů:"U",Ž:"Z",ހ:"h",ށ:"sh",ނ:"n",ރ:"r",ބ:"b",ޅ:"lh",ކ:"k",އ:"a",ވ:"v",މ:"m",ފ:"f",ދ:"dh",ތ:"th",ލ:"l",ގ:"g",ޏ:"gn",ސ:"s",ޑ:"d",ޒ:"z",ޓ:"t",ޔ:"y",ޕ:"p",ޖ:"j",ޗ:"ch",ޘ:"tt",ޙ:"hh",ޚ:"kh",ޛ:"th",ޜ:"z",ޝ:"sh",ޞ:"s",ޟ:"d",ޠ:"t",ޡ:"z",ޢ:"a",ޣ:"gh",ޤ:"q",ޥ:"w","ަ":"a","ާ":"aa","ި":"i","ީ":"ee","ު":"u","ޫ":"oo","ެ":"e","ޭ":"ey","ޮ":"o","ޯ":"oa","ް":"",ა:"a",ბ:"b",გ:"g",დ:"d",ე:"e",ვ:"v",ზ:"z",თ:"t",ი:"i",კ:"k",ლ:"l",მ:"m",ნ:"n",ო:"o",პ:"p",ჟ:"zh",რ:"r",ს:"s",ტ:"t",უ:"u",ფ:"p",ქ:"k",ღ:"gh",ყ:"q",შ:"sh",ჩ:"ch",ც:"ts",ძ:"dz",წ:"ts",ჭ:"ch",ხ:"kh",ჯ:"j",ჰ:"h",α:"a",β:"v",γ:"g",δ:"d",ε:"e",ζ:"z",η:"i",θ:"th",ι:"i",κ:"k",λ:"l",μ:"m",ν:"n",ξ:"ks",ο:"o",π:"p",ρ:"r",σ:"s",τ:"t",υ:"y",φ:"f",χ:"x",ψ:"ps",ω:"o",ά:"a",έ:"e",ί:"i",ό:"o",ύ:"y",ή:"i",ώ:"o",ς:"s",ϊ:"i",ΰ:"y",ϋ:"y",ΐ:"i",Α:"A",Β:"B",Γ:"G",Δ:"D",Ε:"E",Ζ:"Z",Η:"I",Θ:"TH",Ι:"I",Κ:"K",Λ:"L",Μ:"M",Ν:"N",Ξ:"KS",Ο:"O",Π:"P",Ρ:"R",Σ:"S",Τ:"T",Υ:"Y",Φ:"F",Χ:"X",Ψ:"PS",Ω:"O",Ά:"A",Έ:"E",Ί:"I",Ό:"O",Ύ:"Y",Ή:"I",Ώ:"O",Ϊ:"I",Ϋ:"Y",ā:"a",ē:"e",ģ:"g",ī:"i",ķ:"k",ļ:"l",ņ:"n",ū:"u",Ā:"A",Ē:"E",Ģ:"G",Ī:"I",Ķ:"k",Ļ:"L",Ņ:"N",Ū:"U",Ќ:"Kj",ќ:"kj",Љ:"Lj",љ:"lj",Њ:"Nj",њ:"nj",Тс:"Ts",тс:"ts",ą:"a",ć:"c",ę:"e",ł:"l",ń:"n",ś:"s",ź:"z",ż:"z",Ą:"A",Ć:"C",Ę:"E",Ł:"L",Ń:"N",Ś:"S",Ź:"Z",Ż:"Z",Є:"Ye",І:"I",Ї:"Yi",Ґ:"G",є:"ye",і:"i",ї:"yi",ґ:"g",ă:"a",Ă:"A",ș:"s",Ș:"S",ț:"t",Ț:"T",ţ:"t",Ţ:"T",а:"a",б:"b",в:"v",г:"g",д:"d",е:"e",ё:"yo",ж:"zh",з:"z",и:"i",й:"i",к:"k",л:"l",м:"m",н:"n",о:"o",п:"p",р:"r",с:"s",т:"t",у:"u",ф:"f",х:"kh",ц:"c",ч:"ch",ш:"sh",щ:"sh",ъ:"",ы:"y",ь:"",э:"e",ю:"yu",я:"ya",А:"A",Б:"B",В:"V",Г:"G",Д:"D",Е:"E",Ё:"Yo",Ж:"Zh",З:"Z",И:"I",Й:"I",К:"K",Л:"L",М:"M",Н:"N",О:"O",П:"P",Р:"R",С:"S",Т:"T",У:"U",Ф:"F",Х:"Kh",Ц:"C",Ч:"Ch",Ш:"Sh",Щ:"Sh",Ъ:"",Ы:"Y",Ь:"",Э:"E",Ю:"Yu",Я:"Ya",ђ:"dj",ј:"j",ћ:"c",џ:"dz",Ђ:"Dj",Ј:"j",Ћ:"C",Џ:"Dz",ľ:"l",ĺ:"l",ŕ:"r",Ľ:"L",Ĺ:"L",Ŕ:"R",ş:"s",Ş:"S",ı:"i",İ:"I",ğ:"g",Ğ:"G",ả:"a",Ả:"A",ẳ:"a",Ẳ:"A",ẩ:"a",Ẩ:"A",đ:"d",Đ:"D",ẹ:"e",Ẹ:"E",ẽ:"e",Ẽ:"E",ẻ:"e",Ẻ:"E",ế:"e",Ế:"E",ề:"e",Ề:"E",ệ:"e",Ệ:"E",ễ:"e",Ễ:"E",ể:"e",Ể:"E",ỏ:"o",ọ:"o",Ọ:"o",ố:"o",Ố:"O",ồ:"o",Ồ:"O",ổ:"o",Ổ:"O",ộ:"o",Ộ:"O",ỗ:"o",Ỗ:"O",ơ:"o",Ơ:"O",ớ:"o",Ớ:"O",ờ:"o",Ờ:"O",ợ:"o",Ợ:"O",ỡ:"o",Ỡ:"O",Ở:"o",ở:"o",ị:"i",Ị:"I",ĩ:"i",Ĩ:"I",ỉ:"i",Ỉ:"i",ủ:"u",Ủ:"U",ụ:"u",Ụ:"U",ũ:"u",Ũ:"U",ư:"u",Ư:"U",ứ:"u",Ứ:"U",ừ:"u",Ừ:"U",ự:"u",Ự:"U",ữ:"u",Ữ:"U",ử:"u",Ử:"ư",ỷ:"y",Ỷ:"y",ỳ:"y",Ỳ:"Y",ỵ:"y",Ỵ:"Y",ỹ:"y",Ỹ:"Y",ạ:"a",Ạ:"A",ấ:"a",Ấ:"A",ầ:"a",Ầ:"A",ậ:"a",Ậ:"A",ẫ:"a",Ẫ:"A",ắ:"a",Ắ:"A",ằ:"a",Ằ:"A",ặ:"a",Ặ:"A",ẵ:"a",Ẵ:"A","⓪":"0","①":"1","②":"2","③":"3","④":"4","⑤":"5","⑥":"6","⑦":"7","⑧":"8","⑨":"9","⑩":"10","⑪":"11","⑫":"12","⑬":"13","⑭":"14","⑮":"15","⑯":"16","⑰":"17","⑱":"18","⑲":"18","⑳":"18","⓵":"1","⓶":"2","⓷":"3","⓸":"4","⓹":"5","⓺":"6","⓻":"7","⓼":"8","⓽":"9","⓾":"10","⓿":"0","⓫":"11","⓬":"12","⓭":"13","⓮":"14","⓯":"15","⓰":"16","⓱":"17","⓲":"18","⓳":"19","⓴":"20","Ⓐ":"A","Ⓑ":"B","Ⓒ":"C","Ⓓ":"D","Ⓔ":"E","Ⓕ":"F","Ⓖ":"G","Ⓗ":"H","Ⓘ":"I","Ⓙ":"J","Ⓚ":"K","Ⓛ":"L","Ⓜ":"M","Ⓝ":"N","Ⓞ":"O","Ⓟ":"P","Ⓠ":"Q","Ⓡ":"R","Ⓢ":"S","Ⓣ":"T","Ⓤ":"U","Ⓥ":"V","Ⓦ":"W","Ⓧ":"X","Ⓨ":"Y","Ⓩ":"Z","ⓐ":"a","ⓑ":"b","ⓒ":"c","ⓓ":"d","ⓔ":"e","ⓕ":"f","ⓖ":"g","ⓗ":"h","ⓘ":"i","ⓙ":"j","ⓚ":"k","ⓛ":"l","ⓜ":"m","ⓝ":"n","ⓞ":"o","ⓟ":"p","ⓠ":"q","ⓡ":"r","ⓢ":"s","ⓣ":"t","ⓤ":"u","ⓦ":"v","ⓥ":"w","ⓧ":"x","ⓨ":"y","ⓩ":"z","“":'"',"”":'"',"‘":"'","’":"'","∂":"d",ƒ:"f","™":"(TM)","©":"(C)",œ:"oe",Œ:"OE","®":"(R)","†":"+","℠":"(SM)","…":"...","˚":"o",º:"o",ª:"a","•":"*","၊":",","။":".",$:"USD","€":"EUR","₢":"BRN","₣":"FRF","£":"GBP","₤":"ITL","₦":"NGN","₧":"ESP","₩":"KRW","₪":"ILS","₫":"VND","₭":"LAK","₮":"MNT","₯":"GRD","₱":"ARS","₲":"PYG","₳":"ARA","₴":"UAH","₵":"GHS","¢":"cent","¥":"CNY",元:"CNY",円:"YEN","﷼":"IRR","₠":"EWE","฿":"THB","₨":"INR","₹":"INR","₰":"PF","₺":"TRY","؋":"AFN","₼":"AZN",лв:"BGN","៛":"KHR","₡":"CRC","₸":"KZT",ден:"MKD",zł:"PLN","₽":"RUB","₾":"GEL"},o=["်","ް"],s={"ာ":"a","ါ":"a","ေ":"e","ဲ":"e","ိ":"i","ီ":"i","ို":"o","ု":"u","ူ":"u","ေါင်":"aung","ော":"aw","ော်":"aw","ေါ":"aw","ေါ်":"aw","်":"်","က်":"et","ိုက်":"aik","ောက်":"auk","င်":"in","ိုင်":"aing","ောင်":"aung","စ်":"it","ည်":"i","တ်":"at","ိတ်":"eik","ုတ်":"ok","ွတ်":"ut","ေတ်":"it","ဒ်":"d","ိုဒ်":"ok","ုဒ်":"ait","န်":"an","ာန်":"an","ိန်":"ein","ုန်":"on","ွန်":"un","ပ်":"at","ိပ်":"eik","ုပ်":"ok","ွပ်":"ut","န်ုပ်":"nub","မ်":"an","ိမ်":"ein","ုမ်":"on","ွမ်":"un","ယ်":"e","ိုလ်":"ol","ဉ်":"in","ံ":"an","ိံ":"ein","ုံ":"on","ައް":"ah","ަށް":"ah"},i={en:{},az:{ç:"c",ə:"e",ğ:"g",ı:"i",ö:"o",ş:"s",ü:"u",Ç:"C",Ə:"E",Ğ:"G",İ:"I",Ö:"O",Ş:"S",Ü:"U"},cs:{č:"c",ď:"d",ě:"e",ň:"n",ř:"r",š:"s",ť:"t",ů:"u",ž:"z",Č:"C",Ď:"D",Ě:"E",Ň:"N",Ř:"R",Š:"S",Ť:"T",Ů:"U",Ž:"Z"},fi:{ä:"a",Ä:"A",ö:"o",Ö:"O"},hu:{ä:"a",Ä:"A",ö:"o",Ö:"O",ü:"u",Ü:"U",ű:"u",Ű:"U"},lt:{ą:"a",č:"c",ę:"e",ė:"e",į:"i",š:"s",ų:"u",ū:"u",ž:"z",Ą:"A",Č:"C",Ę:"E",Ė:"E",Į:"I",Š:"S",Ų:"U",Ū:"U"},lv:{ā:"a",č:"c",ē:"e",ģ:"g",ī:"i",ķ:"k",ļ:"l",ņ:"n",š:"s",ū:"u",ž:"z",Ā:"A",Č:"C",Ē:"E",Ģ:"G",Ī:"i",Ķ:"k",Ļ:"L",Ņ:"N",Š:"S",Ū:"u",Ž:"Z"},pl:{ą:"a",ć:"c",ę:"e",ł:"l",ń:"n",ó:"o",ś:"s",ź:"z",ż:"z",Ą:"A",Ć:"C",Ę:"e",Ł:"L",Ń:"N",Ó:"O",Ś:"S",Ź:"Z",Ż:"Z"},sv:{ä:"a",Ä:"A",ö:"o",Ö:"O"},sk:{ä:"a",Ä:"A"},sr:{љ:"lj",њ:"nj",Љ:"Lj",Њ:"Nj",đ:"dj",Đ:"Dj"},tr:{Ü:"U",Ö:"O",ü:"u",ö:"o"}},a={ar:{"∆":"delta","∞":"la-nihaya","♥":"hob","&":"wa","|":"aw","<":"aqal-men",">":"akbar-men","∑":"majmou","¤":"omla"},az:{},ca:{"∆":"delta","∞":"infinit","♥":"amor","&":"i","|":"o","<":"menys que",">":"mes que","∑":"suma dels","¤":"moneda"},cs:{"∆":"delta","∞":"nekonecno","♥":"laska","&":"a","|":"nebo","<":"mensi nez",">":"vetsi nez","∑":"soucet","¤":"mena"},de:{"∆":"delta","∞":"unendlich","♥":"Liebe","&":"und","|":"oder","<":"kleiner als",">":"groesser als","∑":"Summe von","¤":"Waehrung"},dv:{"∆":"delta","∞":"kolunulaa","♥":"loabi","&":"aai","|":"noonee","<":"ah vure kuda",">":"ah vure bodu","∑":"jumula","¤":"faisaa"},en:{"∆":"delta","∞":"infinity","♥":"love","&":"and","|":"or","<":"less than",">":"greater than","∑":"sum","¤":"currency"},es:{"∆":"delta","∞":"infinito","♥":"amor","&":"y","|":"u","<":"menos que",">":"mas que","∑":"suma de los","¤":"moneda"},fa:{"∆":"delta","∞":"bi-nahayat","♥":"eshgh","&":"va","|":"ya","<":"kamtar-az",">":"bishtar-az","∑":"majmooe","¤":"vahed"},fi:{"∆":"delta","∞":"aarettomyys","♥":"rakkaus","&":"ja","|":"tai","<":"pienempi kuin",">":"suurempi kuin","∑":"summa","¤":"valuutta"},fr:{"∆":"delta","∞":"infiniment","♥":"Amour","&":"et","|":"ou","<":"moins que",">":"superieure a","∑":"somme des","¤":"monnaie"},ge:{"∆":"delta","∞":"usasruloba","♥":"siqvaruli","&":"da","|":"an","<":"naklebi",">":"meti","∑":"jami","¤":"valuta"},gr:{},hu:{"∆":"delta","∞":"vegtelen","♥":"szerelem","&":"es","|":"vagy","<":"kisebb mint",">":"nagyobb mint","∑":"szumma","¤":"penznem"},it:{"∆":"delta","∞":"infinito","♥":"amore","&":"e","|":"o","<":"minore di",">":"maggiore di","∑":"somma","¤":"moneta"},lt:{"∆":"delta","∞":"begalybe","♥":"meile","&":"ir","|":"ar","<":"maziau nei",">":"daugiau nei","∑":"suma","¤":"valiuta"},lv:{"∆":"delta","∞":"bezgaliba","♥":"milestiba","&":"un","|":"vai","<":"mazak neka",">":"lielaks neka","∑":"summa","¤":"valuta"},my:{"∆":"kwahkhyaet","∞":"asaonasme","♥":"akhyait","&":"nhin","|":"tho","<":"ngethaw",">":"kyithaw","∑":"paungld","¤":"ngwekye"},mk:{},nl:{"∆":"delta","∞":"oneindig","♥":"liefde","&":"en","|":"of","<":"kleiner dan",">":"groter dan","∑":"som","¤":"valuta"},pl:{"∆":"delta","∞":"nieskonczonosc","♥":"milosc","&":"i","|":"lub","<":"mniejsze niz",">":"wieksze niz","∑":"suma","¤":"waluta"},pt:{"∆":"delta","∞":"infinito","♥":"amor","&":"e","|":"ou","<":"menor que",">":"maior que","∑":"soma","¤":"moeda"},ro:{"∆":"delta","∞":"infinit","♥":"dragoste","&":"si","|":"sau","<":"mai mic ca",">":"mai mare ca","∑":"suma","¤":"valuta"},ru:{"∆":"delta","∞":"beskonechno","♥":"lubov","&":"i","|":"ili","<":"menshe",">":"bolshe","∑":"summa","¤":"valjuta"},sk:{"∆":"delta","∞":"nekonecno","♥":"laska","&":"a","|":"alebo","<":"menej ako",">":"viac ako","∑":"sucet","¤":"mena"},sr:{},tr:{"∆":"delta","∞":"sonsuzluk","♥":"ask","&":"ve","|":"veya","<":"kucuktur",">":"buyuktur","∑":"toplam","¤":"para birimi"},uk:{"∆":"delta","∞":"bezkinechnist","♥":"lubov","&":"i","|":"abo","<":"menshe",">":"bilshe","∑":"suma","¤":"valjuta"},vn:{"∆":"delta","∞":"vo cuc","♥":"yeu","&":"va","|":"hoac","<":"nho hon",">":"lon hon","∑":"tong","¤":"tien te"}},l=[";","?",":","@","&","=","+","$",",","/"].join(""),u=[";","?",":","@","&","=","+","$",","].join(""),c=[".","!","~","*","'","(",")"].join(""),f=function(b,E){var A="-",m="",y="",L=!0,W={},M,w,U,O,B,C,D,Z,ee,I,N,z,le,ye,xe="";if(typeof b!="string")return"";if(typeof E=="string"&&(A=E),D=a.en,Z=i.en,typeof E=="object"){M=E.maintainCase||!1,W=E.custom&&typeof E.custom=="object"?E.custom:W,U=+E.truncate>1&&E.truncate||!1,O=E.uric||!1,B=E.uricNoSlash||!1,C=E.mark||!1,L=!(E.symbols===!1||E.lang===!1),A=E.separator||A,O&&(xe+=l),B&&(xe+=u),C&&(xe+=c),D=E.lang&&a[E.lang]&&L?a[E.lang]:L?a.en:{},Z=E.lang&&i[E.lang]?i[E.lang]:E.lang===!1||E.lang===!0?{}:i.en,E.titleCase&&typeof E.titleCase.length=="number"&&Array.prototype.toString.call(E.titleCase)?(E.titleCase.forEach(function(be){W[be+""]=be+""}),w=!0):w=!!E.titleCase,E.custom&&typeof E.custom.length=="number"&&Array.prototype.toString.call(E.custom)&&E.custom.forEach(function(be){W[be+""]=be+""}),Object.keys(W).forEach(function(be){var Qe;be.length>1?Qe=new RegExp("\\b"+p(be)+"\\b","gi"):Qe=new RegExp(p(be),"gi"),b=b.replace(Qe,W[be])});for(N in W)xe+=N}for(xe+=A,xe=p(xe),b=b.replace(/(^\s+|\s+$)/g,""),le=!1,ye=!1,I=0,z=b.length;I=0?(y+=N,N=""):ye===!0?(N=s[y]+r[N],y=""):N=le&&r[N].match(/[A-Za-z0-9]/)?" "+r[N]:r[N],le=!1,ye=!1):N in s?(y+=N,N="",I===z-1&&(N=s[y]),ye=!0):D[N]&&!(O&&l.indexOf(N)!==-1)&&!(B&&u.indexOf(N)!==-1)?(N=le||m.substr(-1).match(/[A-Za-z0-9]/)?A+D[N]:D[N],N+=b[I+1]!==void 0&&b[I+1].match(/[A-Za-z0-9]/)?A:"",le=!0):(ye===!0?(N=s[y]+N,y="",ye=!1):le&&(/[A-Za-z0-9]/.test(N)||m.substr(-1).match(/A-Za-z0-9]/))&&(N=" "+N),le=!1),m+=N.replace(new RegExp("[^\\w\\s"+xe+"_-]","g"),A);return w&&(m=m.replace(/(\w)(\S*)/g,function(be,Qe,gt){var et=Qe.toUpperCase()+(gt!==null?gt:"");return Object.keys(W).indexOf(et.toLowerCase())<0?et:et.toLowerCase()})),m=m.replace(/\s+/g,A).replace(new RegExp("\\"+A+"+","g"),A).replace(new RegExp("(^\\"+A+"+|\\"+A+"+$)","g"),""),U&&m.length>U&&(ee=m.charAt(U)===A,m=m.slice(0,U),ee||(m=m.slice(0,m.lastIndexOf(A)))),!M&&!w&&(m=m.toLowerCase()),m},d=function(b){return function(A){return f(A,b)}},p=function(b){return b.replace(/[-\\^$*+?.()|[\]{}\/]/g,"\\$&")},_=function(v,b){for(var E in b)if(b[E]===v)return!0};if(typeof t<"u"&&t.exports)t.exports=f,t.exports.createSlug=d;else if(typeof define<"u"&&define.amd)define([],function(){return f});else try{if(n.getSlug||n.createSlug)throw"speakingurl: globals exists /(getSlug|createSlug)/";n.getSlug=f,n.createSlug=d}catch{}}(e)}}),Bv=cf({"../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/index.js"(e,t){P(),t.exports=Hv()}});P();P();P();P();P();P();P();P();function $v(e){var t;const n=e.name||e._componentTag||e.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__||e.__name;return n==="index"&&((t=e.__file)!=null&&t.endsWith("index.vue"))?"":n}function Uv(e){const t=e.__file;if(t)return Av(Cv(t,".vue"))}function tl(e,t){return e.type.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__=t,t}function Uo(e){if(e.__VUE_DEVTOOLS_NEXT_APP_RECORD__)return e.__VUE_DEVTOOLS_NEXT_APP_RECORD__;if(e.root)return e.appContext.app.__VUE_DEVTOOLS_NEXT_APP_RECORD__}async function jv(e){const{app:t,uid:n,instance:r}=e;try{if(r.__VUE_DEVTOOLS_NEXT_UID__)return r.__VUE_DEVTOOLS_NEXT_UID__;const o=await Uo(t);if(!o)return null;const s=o.rootInstance===r;return`${o.id}:${s?"root":n}`}catch{}}function ff(e){var t,n;const r=(t=e.subTree)==null?void 0:t.type,o=Uo(e);return o?((n=o==null?void 0:o.types)==null?void 0:n.Fragment)===r:!1}function jo(e){var t,n,r;const o=$v((e==null?void 0:e.type)||{});if(o)return o;if((e==null?void 0:e.root)===e)return"Root";for(const i in(n=(t=e.parent)==null?void 0:t.type)==null?void 0:n.components)if(e.parent.type.components[i]===(e==null?void 0:e.type))return tl(e,i);for(const i in(r=e.appContext)==null?void 0:r.components)if(e.appContext.components[i]===(e==null?void 0:e.type))return tl(e,i);const s=Uv((e==null?void 0:e.type)||{});return s||"Anonymous Component"}function Ms(e,t){return t=t||`${e.id}:root`,e.instanceMap.get(t)||e.instanceMap.get(":root")}function zv(){const e={top:0,bottom:0,left:0,right:0,get width(){return e.right-e.left},get height(){return e.bottom-e.top}};return e}var so;function Kv(e){return so||(so=document.createRange()),so.selectNode(e),so.getBoundingClientRect()}function Wv(e){const t=zv();if(!e.children)return t;for(let n=0,r=e.children.length;ne.bottom)&&(e.bottom=t.bottom),(!e.left||t.lefte.right)&&(e.right=t.right),e}var nl={top:0,left:0,right:0,bottom:0,width:0,height:0};function wn(e){const t=e.subTree.el;return typeof window>"u"?nl:ff(e)?Wv(e.subTree):(t==null?void 0:t.nodeType)===1?t==null?void 0:t.getBoundingClientRect():e.subTree.component?wn(e.subTree.component):nl}P();function Ti(e){return ff(e)?Gv(e.subTree):e.subTree?[e.subTree.el]:[]}function Gv(e){if(!e.children)return[];const t=[];return e.children.forEach(n=>{n.component?t.push(...Ti(n.component)):n!=null&&n.el&&t.push(n.el)}),t}var df="__vue-devtools-component-inspector__",pf="__vue-devtools-component-inspector__card__",hf="__vue-devtools-component-inspector__name__",mf="__vue-devtools-component-inspector__indicator__",gf={display:"block",zIndex:2147483640,position:"fixed",backgroundColor:"#42b88325",border:"1px solid #42b88350",borderRadius:"5px",transition:"all 0.1s ease-in",pointerEvents:"none"},Yv={fontFamily:"Arial, Helvetica, sans-serif",padding:"5px 8px",borderRadius:"4px",textAlign:"left",position:"absolute",left:0,color:"#e9e9e9",fontSize:"14px",fontWeight:600,lineHeight:"24px",backgroundColor:"#42b883",boxShadow:"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)"},Xv={display:"inline-block",fontWeight:400,fontStyle:"normal",fontSize:"12px",opacity:.7};function nr(){return document.getElementById(df)}function Zv(){return document.getElementById(pf)}function Jv(){return document.getElementById(mf)}function Qv(){return document.getElementById(hf)}function Oi(e){return{left:`${Math.round(e.left*100)/100}px`,top:`${Math.round(e.top*100)/100}px`,width:`${Math.round(e.width*100)/100}px`,height:`${Math.round(e.height*100)/100}px`}}function xi(e){var t;const n=document.createElement("div");n.id=(t=e.elementId)!=null?t:df,Object.assign(n.style,{...gf,...Oi(e.bounds),...e.style});const r=document.createElement("span");r.id=pf,Object.assign(r.style,{...Yv,top:e.bounds.top<35?0:"-35px"});const o=document.createElement("span");o.id=hf,o.innerHTML=`<${e.name}>  `;const s=document.createElement("i");return s.id=mf,s.innerHTML=`${Math.round(e.bounds.width*100)/100} x ${Math.round(e.bounds.height*100)/100}`,Object.assign(s.style,Xv),r.appendChild(o),r.appendChild(s),n.appendChild(r),document.body.appendChild(n),n}function ki(e){const t=nr(),n=Zv(),r=Qv(),o=Jv();t&&(Object.assign(t.style,{...gf,...Oi(e.bounds)}),Object.assign(n.style,{top:e.bounds.top<35?0:"-35px"}),r.innerHTML=`<${e.name}>  `,o.innerHTML=`${Math.round(e.bounds.width*100)/100} x ${Math.round(e.bounds.height*100)/100}`)}function e0(e){const t=wn(e);if(!t.width&&!t.height)return;const n=jo(e);nr()?ki({bounds:t,name:n}):xi({bounds:t,name:n})}function _f(){const e=nr();e&&(e.style.display="none")}var Fs=null;function Hs(e){const t=e.target;if(t){const n=t.__vueParentComponent;if(n&&(Fs=n,n.vnode.el)){const o=wn(n),s=jo(n);nr()?ki({bounds:o,name:s}):xi({bounds:o,name:s})}}}function t0(e,t){var n;if(e.preventDefault(),e.stopPropagation(),Fs){const r=(n=qe.value)==null?void 0:n.app;jv({app:r,uid:r.uid,instance:Fs}).then(o=>{t(o)})}}var Co=null;function n0(){_f(),window.removeEventListener("mouseover",Hs),window.removeEventListener("click",Co,!0),Co=null}function r0(){return window.addEventListener("mouseover",Hs),new Promise(e=>{function t(n){n.preventDefault(),n.stopPropagation(),t0(n,r=>{window.removeEventListener("click",t,!0),Co=null,window.removeEventListener("mouseover",Hs);const o=nr();o&&(o.style.display="none"),e(JSON.stringify({id:r}))})}Co=t,window.addEventListener("click",t,!0)})}function o0(e){const t=Ms(qe.value,e.id);if(t){const[n]=Ti(t);if(typeof n.scrollIntoView=="function")n.scrollIntoView({behavior:"smooth"});else{const r=wn(t),o=document.createElement("div"),s={...Oi(r),position:"absolute"};Object.assign(o.style,s),document.body.appendChild(o),o.scrollIntoView({behavior:"smooth"}),setTimeout(()=>{document.body.removeChild(o)},2e3)}setTimeout(()=>{const r=wn(t);if(r.width||r.height){const o=jo(t),s=nr();s?ki({...e,name:o,bounds:r}):xi({...e,name:o,bounds:r}),setTimeout(()=>{s&&(s.style.display="none")},1500)}},1200)}}P();var rl,ol;(ol=(rl=X).__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__)!=null||(rl.__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__=!0);function s0(e){let t=0;const n=setInterval(()=>{X.__VUE_INSPECTOR__&&(clearInterval(n),t+=30,e()),t>=5e3&&clearInterval(n)},30)}function i0(){const e=X.__VUE_INSPECTOR__,t=e.openInEditor;e.openInEditor=async(...n)=>{e.disable(),t(...n)}}function a0(){return new Promise(e=>{function t(){i0(),e(X.__VUE_INSPECTOR__)}X.__VUE_INSPECTOR__?t():s0(()=>{t()})})}P();P();function l0(e){return!!(e&&e.__v_isReadonly)}function vf(e){return l0(e)?vf(e.__v_raw):!!(e&&e.__v_isReactive)}function hs(e){return!!(e&&e.__v_isRef===!0)}function hr(e){const t=e&&e.__v_raw;return t?hr(t):e}var u0=class{constructor(){this.refEditor=new c0}set(e,t,n,r){const o=Array.isArray(t)?t:t.split(".");for(;o.length>1;){const a=o.shift();e instanceof Map&&(e=e.get(a)),e instanceof Set?e=Array.from(e.values())[a]:e=e[a],this.refEditor.isRef(e)&&(e=this.refEditor.get(e))}const s=o[0],i=this.refEditor.get(e)[s];r?r(e,s,n):this.refEditor.isRef(i)?this.refEditor.set(i,n):e[s]=n}get(e,t){const n=Array.isArray(t)?t:t.split(".");for(let r=0;r"u")return!1;const r=Array.isArray(t)?t.slice():t.split("."),o=n?2:1;for(;e&&r.length>o;){const s=r.shift();e=e[s],this.refEditor.isRef(e)&&(e=this.refEditor.get(e))}return e!=null&&Object.prototype.hasOwnProperty.call(e,r[0])}createDefaultSetCallback(e){return(t,n,r)=>{if((e.remove||e.newKey)&&(Array.isArray(t)?t.splice(n,1):hr(t)instanceof Map?t.delete(n):hr(t)instanceof Set?t.delete(Array.from(t.values())[n]):Reflect.deleteProperty(t,n)),!e.remove){const o=t[e.newKey||n];this.refEditor.isRef(o)?this.refEditor.set(o,r):hr(t)instanceof Map?t.set(e.newKey||n,r):hr(t)instanceof Set?t.add(r):t[e.newKey||n]=r}}}},c0=class{set(e,t){if(hs(e))e.value=t;else{if(e instanceof Set&&Array.isArray(t)){e.clear(),t.forEach(o=>e.add(o));return}const n=Object.keys(t);if(e instanceof Map){const o=new Set(e.keys());n.forEach(s=>{e.set(s,Reflect.get(t,s)),o.delete(s)}),o.forEach(s=>e.delete(s));return}const r=new Set(Object.keys(e));n.forEach(o=>{Reflect.set(e,o,Reflect.get(t,o)),r.delete(o)}),r.forEach(o=>Reflect.deleteProperty(e,o))}}get(e){return hs(e)?e.value:e}isRef(e){return hs(e)||vf(e)}};P();P();P();var f0="__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS_STATE__";function d0(){if(!sf||typeof localStorage>"u"||localStorage===null)return{recordingState:!1,mouseEventEnabled:!1,keyboardEventEnabled:!1,componentEventEnabled:!1,performanceEventEnabled:!1,selected:""};const e=localStorage.getItem(f0);return e?JSON.parse(e):{recordingState:!1,mouseEventEnabled:!1,keyboardEventEnabled:!1,componentEventEnabled:!1,performanceEventEnabled:!1,selected:""}}P();P();P();var sl,il;(il=(sl=X).__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS)!=null||(sl.__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS=[]);var p0=new Proxy(X.__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS,{get(e,t,n){return Reflect.get(e,t,n)}});function h0(e,t){Me.timelineLayersState[t.id]=!1,p0.push({...e,descriptorId:t.id,appRecord:Uo(t.app)})}var al,ll;(ll=(al=X).__VUE_DEVTOOLS_KIT_INSPECTOR__)!=null||(al.__VUE_DEVTOOLS_KIT_INSPECTOR__=[]);var Pi=new Proxy(X.__VUE_DEVTOOLS_KIT_INSPECTOR__,{get(e,t,n){return Reflect.get(e,t,n)}}),yf=Kn(()=>{rr.hooks.callHook("sendInspectorToClient",bf())});function m0(e,t){var n,r;Pi.push({options:e,descriptor:t,treeFilterPlaceholder:(n=e.treeFilterPlaceholder)!=null?n:"Search tree...",stateFilterPlaceholder:(r=e.stateFilterPlaceholder)!=null?r:"Search state...",treeFilter:"",selectedNodeId:"",appRecord:Uo(t.app)}),yf()}function bf(){return Pi.filter(e=>e.descriptor.app===qe.value.app).filter(e=>e.descriptor.id!=="components").map(e=>{var t;const n=e.descriptor,r=e.options;return{id:r.id,label:r.label,logo:n.logo,icon:`custom-ic-baseline-${(t=r==null?void 0:r.icon)==null?void 0:t.replace(/_/g,"-")}`,packageName:n.packageName,homepage:n.homepage,pluginId:n.id}})}function co(e,t){return Pi.find(n=>n.options.id===e&&(t?n.descriptor.app===t:!0))}function g0(){const e=lf();e.hook("addInspector",({inspector:r,plugin:o})=>{m0(r,o.descriptor)});const t=Kn(async({inspectorId:r,plugin:o})=>{var s;if(!r||!((s=o==null?void 0:o.descriptor)!=null&&s.app)||Me.highPerfModeEnabled)return;const i=co(r,o.descriptor.app),a={app:o.descriptor.app,inspectorId:r,filter:(i==null?void 0:i.treeFilter)||"",rootNodes:[]};await new Promise(l=>{e.callHookWith(async u=>{await Promise.all(u.map(c=>c(a))),l()},"getInspectorTree")}),e.callHookWith(async l=>{await Promise.all(l.map(u=>u({inspectorId:r,rootNodes:a.rootNodes})))},"sendInspectorTreeToClient")},120);e.hook("sendInspectorTree",t);const n=Kn(async({inspectorId:r,plugin:o})=>{var s;if(!r||!((s=o==null?void 0:o.descriptor)!=null&&s.app)||Me.highPerfModeEnabled)return;const i=co(r,o.descriptor.app),a={app:o.descriptor.app,inspectorId:r,nodeId:(i==null?void 0:i.selectedNodeId)||"",state:null},l={currentTab:`custom-inspector:${r}`};a.nodeId&&await new Promise(u=>{e.callHookWith(async c=>{await Promise.all(c.map(f=>f(a,l))),u()},"getInspectorState")}),e.callHookWith(async u=>{await Promise.all(u.map(c=>c({inspectorId:r,nodeId:a.nodeId,state:a.state})))},"sendInspectorStateToClient")},120);return e.hook("sendInspectorState",n),e.hook("customInspectorSelectNode",({inspectorId:r,nodeId:o,plugin:s})=>{const i=co(r,s.descriptor.app);i&&(i.selectedNodeId=o)}),e.hook("timelineLayerAdded",({options:r,plugin:o})=>{h0(r,o.descriptor)}),e.hook("timelineEventAdded",({options:r,plugin:o})=>{var s;const i=["performance","component-event","keyboard","mouse"];Me.highPerfModeEnabled||!((s=Me.timelineLayersState)!=null&&s[o.descriptor.id])&&!i.includes(r.layerId)||e.callHookWith(async a=>{await Promise.all(a.map(l=>l(r)))},"sendTimelineEventToClient")}),e.hook("getComponentInstances",async({app:r})=>{const o=r.__VUE_DEVTOOLS_NEXT_APP_RECORD__;if(!o)return null;const s=o.id.toString();return[...o.instanceMap].filter(([a])=>a.split(":")[0]===s).map(([,a])=>a)}),e.hook("getComponentBounds",async({instance:r})=>wn(r)),e.hook("getComponentName",({instance:r})=>jo(r)),e.hook("componentHighlight",({uid:r})=>{const o=qe.value.instanceMap.get(r);o&&e0(o)}),e.hook("componentUnhighlight",()=>{_f()}),e}var ul,cl;(cl=(ul=X).__VUE_DEVTOOLS_KIT_APP_RECORDS__)!=null||(ul.__VUE_DEVTOOLS_KIT_APP_RECORDS__=[]);var fl,dl;(dl=(fl=X).__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__)!=null||(fl.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__={});var pl,hl;(hl=(pl=X).__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__)!=null||(pl.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__="");var ml,gl;(gl=(ml=X).__VUE_DEVTOOLS_KIT_CUSTOM_TABS__)!=null||(ml.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__=[]);var _l,vl;(vl=(_l=X).__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__)!=null||(_l.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__=[]);var bn="__VUE_DEVTOOLS_KIT_GLOBAL_STATE__";function _0(){return{connected:!1,clientConnected:!1,vitePluginDetected:!0,appRecords:[],activeAppRecordId:"",tabs:[],commands:[],highPerfModeEnabled:!0,devtoolsClientDetected:{},perfUniqueGroupId:0,timelineLayersState:d0()}}var yl,bl;(bl=(yl=X)[bn])!=null||(yl[bn]=_0());var v0=Kn(e=>{rr.hooks.callHook("devtoolsStateUpdated",{state:e})});Kn((e,t)=>{rr.hooks.callHook("devtoolsConnectedUpdated",{state:e,oldState:t})});var zo=new Proxy(X.__VUE_DEVTOOLS_KIT_APP_RECORDS__,{get(e,t,n){return t==="value"?X.__VUE_DEVTOOLS_KIT_APP_RECORDS__:X.__VUE_DEVTOOLS_KIT_APP_RECORDS__[t]}}),qe=new Proxy(X.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__,{get(e,t,n){return t==="value"?X.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__:t==="id"?X.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__:X.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__[t]}});function Ef(){v0({...X[bn],appRecords:zo.value,activeAppRecordId:qe.id,tabs:X.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__,commands:X.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__})}function y0(e){X.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__=e,Ef()}function b0(e){X.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__=e,Ef()}var Me=new Proxy(X[bn],{get(e,t){return t==="appRecords"?zo:t==="activeAppRecordId"?qe.id:t==="tabs"?X.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__:t==="commands"?X.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__:X[bn][t]},deleteProperty(e,t){return delete e[t],!0},set(e,t,n){return{...X[bn]},e[t]=n,X[bn][t]=n,!0}});function E0(e={}){var t,n,r;const{file:o,host:s,baseUrl:i=window.location.origin,line:a=0,column:l=0}=e;if(o){if(s==="chrome-extension"){const u=o.replace(/\\/g,"\\\\"),c=(n=(t=window.VUE_DEVTOOLS_CONFIG)==null?void 0:t.openInEditorHost)!=null?n:"/";fetch(`${c}__open-in-editor?file=${encodeURI(o)}`).then(f=>{if(!f.ok){const d=`Opening component ${u} failed`;console.log(`%c${d}`,"color:red")}})}else if(Me.vitePluginDetected){const u=(r=X.__VUE_DEVTOOLS_OPEN_IN_EDITOR_BASE_URL__)!=null?r:i;X.__VUE_INSPECTOR__.openInEditor(u,o,a,l)}}}P();P();P();P();P();var El,Sl;(Sl=(El=X).__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__)!=null||(El.__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__=[]);var Ii=new Proxy(X.__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__,{get(e,t,n){return Reflect.get(e,t,n)}});function Bs(e){const t={};return Object.keys(e).forEach(n=>{t[n]=e[n].defaultValue}),t}function Ri(e){return`__VUE_DEVTOOLS_NEXT_PLUGIN_SETTINGS__${e}__`}function S0(e){var t,n,r;const o=(n=(t=Ii.find(s=>{var i;return s[0].id===e&&!!((i=s[0])!=null&&i.settings)}))==null?void 0:t[0])!=null?n:null;return(r=o==null?void 0:o.settings)!=null?r:null}function Sf(e,t){var n,r,o;const s=Ri(e);if(s){const i=localStorage.getItem(s);if(i)return JSON.parse(i)}if(e){const i=(r=(n=Ii.find(a=>a[0].id===e))==null?void 0:n[0])!=null?r:null;return Bs((o=i==null?void 0:i.settings)!=null?o:{})}return Bs(t)}function A0(e,t){const n=Ri(e);localStorage.getItem(n)||localStorage.setItem(n,JSON.stringify(Bs(t)))}function C0(e,t,n){const r=Ri(e),o=localStorage.getItem(r),s=JSON.parse(o||"{}"),i={...s,[t]:n};localStorage.setItem(r,JSON.stringify(i)),rr.hooks.callHookWith(a=>{a.forEach(l=>l({pluginId:e,key:t,oldValue:s[t],newValue:n,settings:i}))},"setPluginSettings")}P();P();P();P();P();P();P();P();P();P();P();var Al,Cl,lt=(Cl=(Al=X).__VUE_DEVTOOLS_HOOK)!=null?Cl:Al.__VUE_DEVTOOLS_HOOK=lf(),w0={vueAppInit(e){lt.hook("app:init",e)},vueAppUnmount(e){lt.hook("app:unmount",e)},vueAppConnected(e){lt.hook("app:connected",e)},componentAdded(e){return lt.hook("component:added",e)},componentEmit(e){return lt.hook("component:emit",e)},componentUpdated(e){return lt.hook("component:updated",e)},componentRemoved(e){return lt.hook("component:removed",e)},setupDevtoolsPlugin(e){lt.hook("devtools-plugin:setup",e)},perfStart(e){return lt.hook("perf:start",e)},perfEnd(e){return lt.hook("perf:end",e)}},Af={on:w0,setupDevToolsPlugin(e,t){return lt.callHook("devtools-plugin:setup",e,t)}},T0=class{constructor({plugin:e,ctx:t}){this.hooks=t.hooks,this.plugin=e}get on(){return{visitComponentTree:e=>{this.hooks.hook("visitComponentTree",e)},inspectComponent:e=>{this.hooks.hook("inspectComponent",e)},editComponentState:e=>{this.hooks.hook("editComponentState",e)},getInspectorTree:e=>{this.hooks.hook("getInspectorTree",e)},getInspectorState:e=>{this.hooks.hook("getInspectorState",e)},editInspectorState:e=>{this.hooks.hook("editInspectorState",e)},inspectTimelineEvent:e=>{this.hooks.hook("inspectTimelineEvent",e)},timelineCleared:e=>{this.hooks.hook("timelineCleared",e)},setPluginSettings:e=>{this.hooks.hook("setPluginSettings",e)}}}notifyComponentUpdate(e){var t;if(Me.highPerfModeEnabled)return;const n=bf().find(r=>r.packageName===this.plugin.descriptor.packageName);if(n!=null&&n.id){if(e){const r=[e.appContext.app,e.uid,(t=e.parent)==null?void 0:t.uid,e];lt.callHook("component:updated",...r)}else lt.callHook("component:updated");this.hooks.callHook("sendInspectorState",{inspectorId:n.id,plugin:this.plugin})}}addInspector(e){this.hooks.callHook("addInspector",{inspector:e,plugin:this.plugin}),this.plugin.descriptor.settings&&A0(e.id,this.plugin.descriptor.settings)}sendInspectorTree(e){Me.highPerfModeEnabled||this.hooks.callHook("sendInspectorTree",{inspectorId:e,plugin:this.plugin})}sendInspectorState(e){Me.highPerfModeEnabled||this.hooks.callHook("sendInspectorState",{inspectorId:e,plugin:this.plugin})}selectInspectorNode(e,t){this.hooks.callHook("customInspectorSelectNode",{inspectorId:e,nodeId:t,plugin:this.plugin})}visitComponentTree(e){return this.hooks.callHook("visitComponentTree",e)}now(){return Me.highPerfModeEnabled?0:Date.now()}addTimelineLayer(e){this.hooks.callHook("timelineLayerAdded",{options:e,plugin:this.plugin})}addTimelineEvent(e){Me.highPerfModeEnabled||this.hooks.callHook("timelineEventAdded",{options:e,plugin:this.plugin})}getSettings(e){return Sf(e??this.plugin.descriptor.id,this.plugin.descriptor.settings)}getComponentInstances(e){return this.hooks.callHook("getComponentInstances",{app:e})}getComponentBounds(e){return this.hooks.callHook("getComponentBounds",{instance:e})}getComponentName(e){return this.hooks.callHook("getComponentName",{instance:e})}highlightElement(e){const t=e.__VUE_DEVTOOLS_NEXT_UID__;return this.hooks.callHook("componentHighlight",{uid:t})}unhighlightElement(){return this.hooks.callHook("componentUnhighlight")}},O0=T0;P();P();P();P();var x0="__vue_devtool_undefined__",k0="__vue_devtool_infinity__",P0="__vue_devtool_negative_infinity__",I0="__vue_devtool_nan__";P();P();var R0={[x0]:"undefined",[I0]:"NaN",[k0]:"Infinity",[P0]:"-Infinity"};Object.entries(R0).reduce((e,[t,n])=>(e[n]=t,e),{});P();P();P();P();P();var wl,Tl;(Tl=(wl=X).__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__)!=null||(wl.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__=new Set);function L0(e,t){return Af.setupDevToolsPlugin(e,t)}function D0(e,t){const[n,r]=e;if(n.app!==t)return;const o=new O0({plugin:{setupFn:r,descriptor:n},ctx:rr});n.packageName==="vuex"&&o.on.editInspectorState(s=>{o.sendInspectorState(s.inspectorId)}),r(o)}function Cf(e){X.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.has(e)||Me.highPerfModeEnabled||(X.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.add(e),Ii.forEach(t=>{D0(t,e)}))}P();P();var Dr="__VUE_DEVTOOLS_ROUTER__",Wn="__VUE_DEVTOOLS_ROUTER_INFO__",Ol,xl;(xl=(Ol=X)[Wn])!=null||(Ol[Wn]={currentRoute:null,routes:[]});var kl,Pl;(Pl=(kl=X)[Dr])!=null||(kl[Dr]={});new Proxy(X[Wn],{get(e,t){return X[Wn][t]}});new Proxy(X[Dr],{get(e,t){if(t==="value")return X[Dr]}});function N0(e){const t=new Map;return((e==null?void 0:e.getRoutes())||[]).filter(n=>!t.has(n.path)&&t.set(n.path,1))}function Li(e){return e.map(t=>{let{path:n,name:r,children:o,meta:s}=t;return o!=null&&o.length&&(o=Li(o)),{path:n,name:r,children:o,meta:s}})}function V0(e){if(e){const{fullPath:t,hash:n,href:r,path:o,name:s,matched:i,params:a,query:l}=e;return{fullPath:t,hash:n,href:r,path:o,name:s,params:a,query:l,matched:Li(i)}}return e}function M0(e,t){function n(){var r;const o=(r=e.app)==null?void 0:r.config.globalProperties.$router,s=V0(o==null?void 0:o.currentRoute.value),i=Li(N0(o)),a=console.warn;console.warn=()=>{},X[Wn]={currentRoute:s?el(s):{},routes:el(i)},X[Dr]=o,console.warn=a}n(),Af.on.componentUpdated(Kn(()=>{var r;((r=t.value)==null?void 0:r.app)===e.app&&(n(),!Me.highPerfModeEnabled&&rr.hooks.callHook("routerInfoUpdated",{state:X[Wn]}))},200))}function F0(e){return{async getInspectorTree(t){const n={...t,app:qe.value.app,rootNodes:[]};return await new Promise(r=>{e.callHookWith(async o=>{await Promise.all(o.map(s=>s(n))),r()},"getInspectorTree")}),n.rootNodes},async getInspectorState(t){const n={...t,app:qe.value.app,state:null},r={currentTab:`custom-inspector:${t.inspectorId}`};return await new Promise(o=>{e.callHookWith(async s=>{await Promise.all(s.map(i=>i(n,r))),o()},"getInspectorState")}),n.state},editInspectorState(t){const n=new u0,r={...t,app:qe.value.app,set:(o,s=t.path,i=t.state.value,a)=>{n.set(o,s,i,a||n.createDefaultSetCallback(t.state))}};e.callHookWith(o=>{o.forEach(s=>s(r))},"editInspectorState")},sendInspectorState(t){const n=co(t);e.callHook("sendInspectorState",{inspectorId:t,plugin:{descriptor:n.descriptor,setupFn:()=>({})}})},inspectComponentInspector(){return r0()},cancelInspectComponentInspector(){return n0()},getComponentRenderCode(t){const n=Ms(qe.value,t);if(n)return(n==null?void 0:n.type)instanceof Function?n.type.toString():n.render.toString()},scrollToComponent(t){return o0({id:t})},openInEditor:E0,getVueInspector:a0,toggleApp(t){const n=zo.value.find(r=>r.id===t);n&&(b0(t),y0(n),M0(n,qe),yf(),Cf(n.app))},inspectDOM(t){const n=Ms(qe.value,t);if(n){const[r]=Ti(n);r&&(X.__VUE_DEVTOOLS_INSPECT_DOM_TARGET__=r)}},updatePluginSettings(t,n,r){C0(t,n,r)},getPluginSettings(t){return{options:S0(t),values:Sf(t)}}}}P();var Il,Rl;(Rl=(Il=X).__VUE_DEVTOOLS_ENV__)!=null||(Il.__VUE_DEVTOOLS_ENV__={vitePluginDetected:!1});var Ll=g0(),Dl,Nl;(Nl=(Dl=X).__VUE_DEVTOOLS_KIT_CONTEXT__)!=null||(Dl.__VUE_DEVTOOLS_KIT_CONTEXT__={hooks:Ll,get state(){return{...Me,activeAppRecordId:qe.id,activeAppRecord:qe.value,appRecords:zo.value}},api:F0(Ll)});var rr=X.__VUE_DEVTOOLS_KIT_CONTEXT__;P();Fv(Bv());var Vl,Ml;(Ml=(Vl=X).__VUE_DEVTOOLS_NEXT_APP_RECORD_INFO__)!=null||(Vl.__VUE_DEVTOOLS_NEXT_APP_RECORD_INFO__={id:0,appIds:new Set});P();function H0(e){Me.highPerfModeEnabled=e??!Me.highPerfModeEnabled,!e&&qe.value&&Cf(qe.value.app)}P();P();P();function B0(e){Me.devtoolsClientDetected={...Me.devtoolsClientDetected,...e};const t=Object.values(Me.devtoolsClientDetected).some(Boolean);H0(!t)}var Fl,Hl;(Hl=(Fl=X).__VUE_DEVTOOLS_UPDATE_CLIENT_DETECTED__)!=null||(Fl.__VUE_DEVTOOLS_UPDATE_CLIENT_DETECTED__=B0);P();P();P();P();P();P();P();var $0=class{constructor(){this.keyToValue=new Map,this.valueToKey=new Map}set(e,t){this.keyToValue.set(e,t),this.valueToKey.set(t,e)}getByKey(e){return this.keyToValue.get(e)}getByValue(e){return this.valueToKey.get(e)}clear(){this.keyToValue.clear(),this.valueToKey.clear()}},wf=class{constructor(e){this.generateIdentifier=e,this.kv=new $0}register(e,t){this.kv.getByValue(e)||(t||(t=this.generateIdentifier(e)),this.kv.set(t,e))}clear(){this.kv.clear()}getIdentifier(e){return this.kv.getByValue(e)}getValue(e){return this.kv.getByKey(e)}},U0=class extends wf{constructor(){super(e=>e.name),this.classToAllowedProps=new Map}register(e,t){typeof t=="object"?(t.allowProps&&this.classToAllowedProps.set(e,t.allowProps),super.register(e,t.identifier)):super.register(e,t)}getAllowedProps(e){return this.classToAllowedProps.get(e)}};P();P();function j0(e){if("values"in Object)return Object.values(e);const t=[];for(const n in e)e.hasOwnProperty(n)&&t.push(e[n]);return t}function z0(e,t){const n=j0(e);if("find"in n)return n.find(t);const r=n;for(let o=0;ot(r,n))}function fo(e,t){return e.indexOf(t)!==-1}function Bl(e,t){for(let n=0;nt.isApplicable(e))}findByName(e){return this.transfomers[e]}};P();P();var W0=e=>Object.prototype.toString.call(e).slice(8,-1),Tf=e=>typeof e>"u",q0=e=>e===null,Nr=e=>typeof e!="object"||e===null||e===Object.prototype?!1:Object.getPrototypeOf(e)===null?!0:Object.getPrototypeOf(e)===Object.prototype,$s=e=>Nr(e)&&Object.keys(e).length===0,ln=e=>Array.isArray(e),G0=e=>typeof e=="string",Y0=e=>typeof e=="number"&&!isNaN(e),X0=e=>typeof e=="boolean",Z0=e=>e instanceof RegExp,Vr=e=>e instanceof Map,Mr=e=>e instanceof Set,Of=e=>W0(e)==="Symbol",J0=e=>e instanceof Date&&!isNaN(e.valueOf()),Q0=e=>e instanceof Error,$l=e=>typeof e=="number"&&isNaN(e),e1=e=>X0(e)||q0(e)||Tf(e)||Y0(e)||G0(e)||Of(e),t1=e=>typeof e=="bigint",n1=e=>e===1/0||e===-1/0,r1=e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),o1=e=>e instanceof URL;P();var xf=e=>e.replace(/\./g,"\\."),ms=e=>e.map(String).map(xf).join("."),Ar=e=>{const t=[];let n="";for(let o=0;onull,()=>{}),wt(t1,"bigint",e=>e.toString(),e=>typeof BigInt<"u"?BigInt(e):(console.error("Please add a BigInt polyfill."),e)),wt(J0,"Date",e=>e.toISOString(),e=>new Date(e)),wt(Q0,"Error",(e,t)=>{const n={name:e.name,message:e.message};return t.allowedErrorProps.forEach(r=>{n[r]=e[r]}),n},(e,t)=>{const n=new Error(e.message);return n.name=e.name,n.stack=e.stack,t.allowedErrorProps.forEach(r=>{n[r]=e[r]}),n}),wt(Z0,"regexp",e=>""+e,e=>{const t=e.slice(1,e.lastIndexOf("/")),n=e.slice(e.lastIndexOf("/")+1);return new RegExp(t,n)}),wt(Mr,"set",e=>[...e.values()],e=>new Set(e)),wt(Vr,"map",e=>[...e.entries()],e=>new Map(e)),wt(e=>$l(e)||n1(e),"number",e=>$l(e)?"NaN":e>0?"Infinity":"-Infinity",Number),wt(e=>e===0&&1/e===-1/0,"number",()=>"-0",Number),wt(o1,"URL",e=>e.toString(),e=>new URL(e))];function Ko(e,t,n,r){return{isApplicable:e,annotation:t,transform:n,untransform:r}}var Pf=Ko((e,t)=>Of(e)?!!t.symbolRegistry.getIdentifier(e):!1,(e,t)=>["symbol",t.symbolRegistry.getIdentifier(e)],e=>e.description,(e,t,n)=>{const r=n.symbolRegistry.getValue(t[1]);if(!r)throw new Error("Trying to deserialize unknown symbol");return r}),s1=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Uint8ClampedArray].reduce((e,t)=>(e[t.name]=t,e),{}),If=Ko(r1,e=>["typed-array",e.constructor.name],e=>[...e],(e,t)=>{const n=s1[t[1]];if(!n)throw new Error("Trying to deserialize unknown typed array");return new n(e)});function Rf(e,t){return e!=null&&e.constructor?!!t.classRegistry.getIdentifier(e.constructor):!1}var Lf=Ko(Rf,(e,t)=>["class",t.classRegistry.getIdentifier(e.constructor)],(e,t)=>{const n=t.classRegistry.getAllowedProps(e.constructor);if(!n)return{...e};const r={};return n.forEach(o=>{r[o]=e[o]}),r},(e,t,n)=>{const r=n.classRegistry.getValue(t[1]);if(!r)throw new Error("Trying to deserialize unknown class - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564");return Object.assign(Object.create(r.prototype),e)}),Df=Ko((e,t)=>!!t.customTransformerRegistry.findApplicable(e),(e,t)=>["custom",t.customTransformerRegistry.findApplicable(e).name],(e,t)=>t.customTransformerRegistry.findApplicable(e).serialize(e),(e,t,n)=>{const r=n.customTransformerRegistry.findByName(t[1]);if(!r)throw new Error("Trying to deserialize unknown custom value");return r.deserialize(e)}),i1=[Lf,Pf,Df,If],Ul=(e,t)=>{const n=Bl(i1,o=>o.isApplicable(e,t));if(n)return{value:n.transform(e,t),type:n.annotation(e,t)};const r=Bl(kf,o=>o.isApplicable(e,t));if(r)return{value:r.transform(e,t),type:r.annotation}},Nf={};kf.forEach(e=>{Nf[e.annotation]=e});var a1=(e,t,n)=>{if(ln(t))switch(t[0]){case"symbol":return Pf.untransform(e,t,n);case"class":return Lf.untransform(e,t,n);case"custom":return Df.untransform(e,t,n);case"typed-array":return If.untransform(e,t,n);default:throw new Error("Unknown transformation: "+t)}else{const r=Nf[t];if(!r)throw new Error("Unknown transformation: "+t);return r.untransform(e,n)}};P();var In=(e,t)=>{const n=e.keys();for(;t>0;)n.next(),t--;return n.next().value};function Vf(e){if(fo(e,"__proto__"))throw new Error("__proto__ is not allowed as a property");if(fo(e,"prototype"))throw new Error("prototype is not allowed as a property");if(fo(e,"constructor"))throw new Error("constructor is not allowed as a property")}var l1=(e,t)=>{Vf(t);for(let n=0;n{if(Vf(t),t.length===0)return n(e);let r=e;for(let s=0;sjs(s,t,[...n,...Ar(i)]));return}const[r,o]=e;o&&qn(o,(s,i)=>{js(s,t,[...n,...Ar(i)])}),t(r,n)}function u1(e,t,n){return js(t,(r,o)=>{e=Us(e,o,s=>a1(s,r,n))}),e}function c1(e,t){function n(r,o){const s=l1(e,Ar(o));r.map(Ar).forEach(i=>{e=Us(e,i,()=>s)})}if(ln(t)){const[r,o]=t;r.forEach(s=>{e=Us(e,Ar(s),()=>e)}),o&&qn(o,n)}else qn(t,n);return e}var f1=(e,t)=>Nr(e)||ln(e)||Vr(e)||Mr(e)||Rf(e,t);function d1(e,t,n){const r=n.get(e);r?r.push(t):n.set(e,[t])}function p1(e,t){const n={};let r;return e.forEach(o=>{if(o.length<=1)return;t||(o=o.map(a=>a.map(String)).sort((a,l)=>a.length-l.length));const[s,...i]=o;s.length===0?r=i.map(ms):n[ms(s)]=i.map(ms)}),r?$s(n)?[r]:[r,n]:$s(n)?void 0:n}var Mf=(e,t,n,r,o=[],s=[],i=new Map)=>{var a;const l=e1(e);if(!l){d1(e,o,t);const _=i.get(e);if(_)return r?{transformedValue:null}:_}if(!f1(e,n)){const _=Ul(e,n),v=_?{transformedValue:_.value,annotations:[_.type]}:{transformedValue:e};return l||i.set(e,v),v}if(fo(s,e))return{transformedValue:null};const u=Ul(e,n),c=(a=u==null?void 0:u.value)!=null?a:e,f=ln(c)?[]:{},d={};qn(c,(_,v)=>{if(v==="__proto__"||v==="constructor"||v==="prototype")throw new Error(`Detected property ${v}. This is a prototype pollution risk, please remove it from your object.`);const b=Mf(_,t,n,r,[...o,v],[...s,e],i);f[v]=b.transformedValue,ln(b.annotations)?d[v]=b.annotations:Nr(b.annotations)&&qn(b.annotations,(E,A)=>{d[xf(v)+"."+A]=E})});const p=$s(d)?{transformedValue:f,annotations:u?[u.type]:void 0}:{transformedValue:f,annotations:u?[u.type,d]:d};return l||i.set(e,p),p};P();P();function Ff(e){return Object.prototype.toString.call(e).slice(8,-1)}function jl(e){return Ff(e)==="Array"}function h1(e){if(Ff(e)!=="Object")return!1;const t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}function m1(e,t,n,r,o){const s={}.propertyIsEnumerable.call(r,t)?"enumerable":"nonenumerable";s==="enumerable"&&(e[t]=n),o&&s==="nonenumerable"&&Object.defineProperty(e,t,{value:n,enumerable:!1,writable:!0,configurable:!0})}function zs(e,t={}){if(jl(e))return e.map(o=>zs(o,t));if(!h1(e))return e;const n=Object.getOwnPropertyNames(e),r=Object.getOwnPropertySymbols(e);return[...n,...r].reduce((o,s)=>{if(jl(t.props)&&!t.props.includes(s))return o;const i=e[s],a=zs(i,t);return m1(o,s,a,e,t.nonenumerable),o},{})}var we=class{constructor({dedupe:e=!1}={}){this.classRegistry=new U0,this.symbolRegistry=new wf(t=>{var n;return(n=t.description)!=null?n:""}),this.customTransformerRegistry=new K0,this.allowedErrorProps=[],this.dedupe=e}serialize(e){const t=new Map,n=Mf(e,t,this,this.dedupe),r={json:n.transformedValue};n.annotations&&(r.meta={...r.meta,values:n.annotations});const o=p1(t,this.dedupe);return o&&(r.meta={...r.meta,referentialEqualities:o}),r}deserialize(e){const{json:t,meta:n}=e;let r=zs(t);return n!=null&&n.values&&(r=u1(r,n.values,this)),n!=null&&n.referentialEqualities&&(r=c1(r,n.referentialEqualities)),r}stringify(e){return JSON.stringify(this.serialize(e))}parse(e){return this.deserialize(JSON.parse(e))}registerClass(e,t){this.classRegistry.register(e,t)}registerSymbol(e,t){this.symbolRegistry.register(e,t)}registerCustom(e,t){this.customTransformerRegistry.register({name:t,...e})}allowErrorProps(...e){this.allowedErrorProps.push(...e)}};we.defaultInstance=new we;we.serialize=we.defaultInstance.serialize.bind(we.defaultInstance);we.deserialize=we.defaultInstance.deserialize.bind(we.defaultInstance);we.stringify=we.defaultInstance.stringify.bind(we.defaultInstance);we.parse=we.defaultInstance.parse.bind(we.defaultInstance);we.registerClass=we.defaultInstance.registerClass.bind(we.defaultInstance);we.registerSymbol=we.defaultInstance.registerSymbol.bind(we.defaultInstance);we.registerCustom=we.defaultInstance.registerCustom.bind(we.defaultInstance);we.allowErrorProps=we.defaultInstance.allowErrorProps.bind(we.defaultInstance);P();P();P();P();P();P();P();P();P();P();P();P();P();P();P();P();P();P();P();P();P();P();P();var zl,Kl;(Kl=(zl=X).__VUE_DEVTOOLS_KIT_MESSAGE_CHANNELS__)!=null||(zl.__VUE_DEVTOOLS_KIT_MESSAGE_CHANNELS__=[]);var Wl,ql;(ql=(Wl=X).__VUE_DEVTOOLS_KIT_RPC_CLIENT__)!=null||(Wl.__VUE_DEVTOOLS_KIT_RPC_CLIENT__=null);var Gl,Yl;(Yl=(Gl=X).__VUE_DEVTOOLS_KIT_RPC_SERVER__)!=null||(Gl.__VUE_DEVTOOLS_KIT_RPC_SERVER__=null);var Xl,Zl;(Zl=(Xl=X).__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__)!=null||(Xl.__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__=null);var Jl,Ql;(Ql=(Jl=X).__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__)!=null||(Jl.__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__=null);var eu,tu;(tu=(eu=X).__VUE_DEVTOOLS_KIT_BROADCAST_RPC_SERVER__)!=null||(eu.__VUE_DEVTOOLS_KIT_BROADCAST_RPC_SERVER__=null);P();P();P();P();P();P();P();const g1=JSON.parse(`{"logo":"logo_worldline.png","repo":"https://github.com/worldline/learning-ai","repoLabel":"⭐ Contribute!","sidebar":[{"text":"Home","link":"/"},"/overview/","/use/","/llm/","/offline/","/develop/","/servicesai/"],"locales":{"/":{"selectLanguageName":"English"}},"colorMode":"auto","colorModeSwitch":true,"navbar":[],"selectLanguageText":"Languages","selectLanguageAriaLabel":"Select language","sidebarDepth":2,"editLink":true,"editLinkText":"Edit this page","lastUpdated":true,"lastUpdatedText":"Last Updated","contributors":true,"contributorsText":"Contributors","notFound":["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."],"backToHome":"Take me home","openInNewWindow":"open in new window","toggleColorMode":"toggle color mode","toggleSidebar":"toggle sidebar"}`),_1=ve(g1),Hf=()=>_1,Bf=Symbol(""),v1=()=>{const e=Ze(Bf);if(!e)throw new Error("useThemeLocaleData() is called without provider.");return e},y1=(e,t)=>{const{locales:n,...r}=e;return{...r,...n==null?void 0:n[t]}},b1=un({enhance({app:e}){const t=Hf(),n=e._context.provides[mi],r=F(()=>y1(t.value,n.routeLocale.value));e.provide(Bf,r),Object.defineProperties(e.config.globalProperties,{$theme:{get(){return t.value}},$themeLocale:{get(){return r.value}}}),L0({app:e,id:"org.vuejs.vuepress.plugin-theme-data",label:"VuePress Theme Data Plugin",packageName:"@vuepress/plugin-theme-data",homepage:"https://v2.vuepress.vuejs.org",logo:"https://v2.vuepress.vuejs.org/images/hero.png",componentStateTypes:["VuePress"]},o=>{o.on.inspectComponent(s=>{s.instanceData.state.push({type:"VuePress",key:"themeData",editable:!1,value:t.value},{type:"VuePress",key:"themeLocaleData",editable:!1,value:r.value})})})}}),E1=Object.freeze(Object.defineProperty({__proto__:null,default:b1},Symbol.toStringTag,{value:"Module"})),S1=()=>Hf(),He=()=>v1(),$f=Symbol(""),A1=e=>{const t=(n=e.value)=>{const r=window.document.documentElement;r.dataset.theme=n?"dark":"light"};Je(()=>{Ue(e,t,{immediate:!0})}),Lo(()=>{t()})},Di=()=>{const e=Ze($f);if(!e)throw new Error("useDarkMode() is called without provider.");return e},C1=()=>{const e=He(),t=o_(),n=Ai("vuepress-color-scheme",e.value.colorMode),r=F({get(){return e.value.colorModeSwitch?n.value==="auto"?t.value:n.value==="dark":e.value.colorMode==="dark"},set(o){o===t.value?n.value="auto":n.value=o?"dark":"light"}});An($f,r),A1(r)};let gs=null,cr=null;const w1={wait:()=>gs,pending:()=>{gs=new Promise(e=>{cr=e})},resolve:()=>{cr==null||cr(),gs=null,cr=null}},Uf=()=>w1,Gn=(e,t)=>{const{notFound:n,meta:r,path:o}=Lr(e,t);return n?{text:o,link:o}:{text:r.title||o,link:o}},nu=e=>decodeURI(e).replace(/#.*$/,"").replace(/(index)?\.(md|html)$/,""),T1=(e,t)=>{if(t.hash===e)return!0;const n=nu(t.path),r=nu(e);return n===r},jf=(e,t)=>e.link&&T1(e.link,t)?!0:"children"in e?e.children.some(n=>jf(n,t)):!1,zf=e=>!em(e)&&!Kr(e),Kf=e=>!Vo(e)||e.includes("github.com")?"GitHub":e.includes("bitbucket.org")?"Bitbucket":e.includes("gitlab.com")?"GitLab":e.includes("gitee.com")?"Gitee":null,O1={GitHub:":repo/edit/:branch/:path",GitLab:":repo/-/edit/:branch/:path",Gitee:":repo/edit/:branch/:path",Bitbucket:":repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default"},x1=({docsRepo:e,editLinkPattern:t})=>{if(t)return t;const n=Kf(e);return n!==null?O1[n]:null},k1=({docsRepo:e,docsBranch:t,docsDir:n,filePathRelative:r,editLinkPattern:o})=>{if(!r)return null;const s=x1({docsRepo:e,editLinkPattern:o});return s?s.replace(/:repo/,Vo(e)?e:`https://github.com/${e}`).replace(/:branch/,t).replace(/:path/,wc(`${Cc(n)}/${r}`)):null},Bn=(e="",t="")=>rf(t)||Kr(t)?t:`${um(e)}${t}`,po=ve([]),P1=()=>{const e=Tn(),t=He(),n=At(),r=F(()=>n.value.sidebarDepth??t.value.sidebarDepth??2);e.beforeEach((s,i)=>{s.path!==i.path&&(po.value=[])});const o=()=>{if(r.value<=0){po.value=[];return}po.value=b_({levels:[2,r.value+1],ignore:[".vp-badge"]})};Ue(r,o),Je(o)},I1=()=>po,R1=e=>({text:e.title,link:e.link,children:Ni(e.children)}),Ni=e=>e?e.map(t=>R1(t)):[],Wf=(e,t)=>[{text:e.title,children:Ni(t)}],qf=(e,t,n,r="")=>{const o=(s,i)=>{var l;const a=yt(s)?Gn(Bn(i,s)):yt(s.link)?{...s,link:zf(s.link)?Gn(Bn(i,s.link)).link:s.link}:s;if("children"in a)return{...a,children:a.children.map(u=>o(u,Bn(i,a.prefix)))};if(a.link===n){const u=((l=t[0])==null?void 0:l.level)===1?t[0].children:t;return{...a,children:Ni(u)}}return a};return e.map(s=>o(s,r))},L1=(e,t,n,r)=>{const o=A_(e).sort((s,i)=>i.length-s.length);for(const s of o)if(nf(decodeURI(r),s)){const i=e[s];return i?i==="heading"?Wf(t,n):qf(i,n,r,s):[]}return console.warn(`${decodeURI(r)} is missing sidebar config.`),[]},Gf=Symbol("sidebarItems"),Vi=()=>{const e=Ze(Gf);if(!e)throw new Error("useSidebarItems() is called without provider.");return e},D1=(e,t,n,r,o)=>e===!1?[]:e==="heading"?Wf(t,o):Array.isArray(e)?qf(e,o,n,r):di(e)?L1(e,t,o,n):[],N1=()=>{const e=He(),t=At(),n=er(),r=Wt(),o=Wr(),s=I1(),i=F(()=>t.value.home?!1:t.value.sidebar??e.value.sidebar??"heading"),a=F(()=>D1(i.value,n.value,r.path,o.value,s.value));An(Gf,a)},V1=he({__name:"Badge",props:{type:{default:"tip"},text:{default:""},vertical:{default:void 0}},setup(e,{expose:t}){t();const n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),ke=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n};function M1(e,t,n,r,o,s){return Y(),ne("span",{class:nt(["vp-badge",n.type]),style:Xn({verticalAlign:n.vertical})},[Re(e.$slots,"default",{},()=>[on(Ie(n.text),1)])],6)}const F1=ke(V1,[["render",M1],["__file","Badge.vue"]]),H1=he({__name:"VPHomeFeatures",setup(e,{expose:t}){t();const n=At(),r=F(()=>n.value.features??[]),o={frontmatter:n,features:r};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}),B1={key:0,class:"vp-features"};function $1(e,t,n,r,o,s){return r.features.length?(Y(),ne("div",B1,[(Y(!0),ne(ge,null,nn(r.features,i=>(Y(),ne("div",{key:i.title,class:"vp-feature"},[ie("h2",null,Ie(i.title),1),ie("p",null,Ie(i.details),1)]))),128))])):Fe("",!0)}const U1=ke(H1,[["render",$1],["__file","VPHomeFeatures.vue"]]),j1=he({__name:"VPHomeFooter",setup(e,{expose:t}){t();const n=At(),r=F(()=>n.value.footer),o=F(()=>n.value.footerHtml),s={frontmatter:n,footer:r,footerHtml:o};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}}),z1=["innerHTML"],K1=["textContent"];function W1(e,t,n,r,o,s){return r.footer?(Y(),ne(ge,{key:0},[r.footerHtml?(Y(),ne("div",{key:0,class:"vp-footer","vp-footer":"",innerHTML:r.footer},null,8,z1)):(Y(),ne("div",{key:1,class:"vp-footer","vp-footer":"",textContent:Ie(r.footer)},null,8,K1))],64)):Fe("",!0)}const q1=ke(j1,[["render",W1],["__file","VPHomeFooter.vue"]]),G1=he({__name:"VPHomeHero",setup(e,{expose:t}){t();const n=At(),r=gi(),o=Di(),s=F(()=>n.value.heroText===null?null:n.value.heroText||r.value.title||"Hello"),i=F(()=>n.value.tagline===null?null:n.value.tagline||r.value.description||"Welcome to your VuePress site"),a=F(()=>o.value&&n.value.heroImageDark!==void 0?n.value.heroImageDark:n.value.heroImage),l=F(()=>n.value.heroAlt||s.value||"hero"),u=F(()=>n.value.heroHeight??280),c=F(()=>Array.isArray(n.value.actions)?n.value.actions.map(({text:p,link:_,type:v="primary"})=>({text:p,link:_,type:v})):[]),d={frontmatter:n,siteLocale:r,isDarkMode:o,heroText:s,tagline:i,heroImage:a,heroAlt:l,heroHeight:u,actions:c,HomeHeroImage:()=>{if(!a.value)return null;const p=_e("img",{class:"vp-hero-image",src:yi(a.value),alt:l.value,height:u.value});return n.value.heroImageDark===void 0?p:_e(_i,()=>p)},get AutoLink(){return tr}};return Object.defineProperty(d,"__isScriptSetup",{enumerable:!1,value:!0}),d}}),Y1={class:"vp-hero"},X1={key:0,id:"main-title"},Z1={key:1,class:"vp-hero-description"},J1={key:2,class:"vp-hero-actions"};function Q1(e,t,n,r,o,s){return Y(),ne("header",Y1,[ae(r.HomeHeroImage),r.heroText?(Y(),ne("h1",X1,Ie(r.heroText),1)):Fe("",!0),r.tagline?(Y(),ne("p",Z1,Ie(r.tagline),1)):Fe("",!0),r.actions.length?(Y(),ne("p",J1,[(Y(!0),ne(ge,null,nn(r.actions,i=>(Y(),Le(r.AutoLink,{key:i.text,class:nt(["vp-hero-action-button",[i.type]]),config:i},null,8,["class","config"]))),128))])):Fe("",!0)])}const ey=ke(G1,[["render",Q1],["__file","VPHomeHero.vue"]]),ty=he({__name:"VPHome",setup(e,{expose:t}){t();const n={VPHomeFeatures:U1,VPHomeFooter:q1,VPHomeHero:ey,get Content(){return vi}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),ny={class:"vp-home"},ry={class:"theme-default-content","vp-content":""};function oy(e,t,n,r,o,s){return Y(),ne("main",ny,[ae(r.VPHomeHero),ae(r.VPHomeFeatures),ie("div",ry,[ae(r.Content)]),ae(r.VPHomeFooter)])}const sy=ke(ty,[["render",oy],["__file","VPHome.vue"]]),iy=he({__name:"VPNavbarBrand",setup(e,{expose:t}){t();const n=Wr(),r=gi(),o=He(),s=Di(),i=F(()=>o.value.home||n.value),a=F(()=>r.value.title),l=F(()=>s.value&&o.value.logoDark!==void 0?o.value.logoDark:o.value.logo),u=F(()=>o.value.logoAlt??a.value),c=F(()=>a.value.toLocaleUpperCase().trim()===u.value.toLocaleUpperCase().trim()),d={routeLocale:n,siteLocale:r,themeLocale:o,isDarkMode:s,navbarBrandLink:i,navbarBrandTitle:a,navbarBrandLogo:l,navbarBrandLogoAlt:u,navBarLogoAltMatchesTitle:c,NavbarBrandLogo:()=>{if(!l.value)return null;const p=_e("img",{class:"vp-site-logo",src:yi(l.value),alt:u.value});return o.value.logoDark===void 0?p:_e(_i,()=>p)},get RouteLink(){return Ho}};return Object.defineProperty(d,"__isScriptSetup",{enumerable:!1,value:!0}),d}}),ay=["aria-hidden"];function ly(e,t,n,r,o,s){return Y(),Le(r.RouteLink,{to:r.navbarBrandLink},{default:Ve(()=>[ae(r.NavbarBrandLogo),r.navbarBrandTitle?(Y(),ne("span",{key:0,class:nt(["vp-site-name",{"vp-hide-mobile":r.navbarBrandLogo}]),"aria-hidden":r.navBarLogoAltMatchesTitle},Ie(r.navbarBrandTitle),11,ay)):Fe("",!0)]),_:1},8,["to"])}const uy=ke(iy,[["render",ly],["__file","VPNavbarBrand.vue"]]),cy=he({__name:"VPDropdownTransition",setup(e,{expose:t}){t();const o={setHeight:s=>{s.style.height=`${s.scrollHeight}px`},unsetHeight:s=>{s.style.height=""}};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}});function fy(e,t,n,r,o,s){return Y(),Le(fi,{name:"vp-dropdown",onEnter:r.setHeight,onAfterEnter:r.unsetHeight,onBeforeLeave:r.setHeight},{default:Ve(()=>[Re(e.$slots,"default")]),_:3})}const Yf=ke(cy,[["render",fy],["__file","VPDropdownTransition.vue"]]),dy=he({__name:"VPNavbarDropdown",props:{config:{}},setup(e,{expose:t}){t();const n=e,{config:r}=ku(n),o=Wt(),[s,i]=Zc(!1),a=F(()=>r.value.ariaLabel||r.value.text),l=(f,d)=>d[d.length-1]===f,u=f=>{f.detail===0?i():i(!1)};Ue(()=>o.path,()=>{i(!1)});const c={props:n,config:r,route:o,open:s,toggleOpen:i,dropdownAriaLabel:a,isLastItemOfArray:l,handleDropdown:u,VPDropdownTransition:Yf,get AutoLink(){return tr}};return Object.defineProperty(c,"__isScriptSetup",{enumerable:!1,value:!0}),c}}),py=["aria-label"],hy={class:"title"},my=["aria-label"],gy={class:"title"},_y={class:"vp-navbar-dropdown"},vy={class:"vp-navbar-dropdown-subtitle"},yy={key:1},by={class:"vp-navbar-dropdown-subitem-wrapper"};function Ey(e,t,n,r,o,s){return Y(),ne("div",{class:nt(["vp-navbar-dropdown-wrapper",{open:r.open}])},[ie("button",{class:"vp-navbar-dropdown-title",type:"button","aria-label":r.dropdownAriaLabel,onClick:r.handleDropdown},[ie("span",hy,Ie(r.config.text),1),t[1]||(t[1]=ie("span",{class:"arrow down"},null,-1))],8,py),ie("button",{class:"vp-navbar-dropdown-title-mobile",type:"button","aria-label":r.dropdownAriaLabel,onClick:t[0]||(t[0]=()=>r.toggleOpen())},[ie("span",gy,Ie(r.config.text),1),ie("span",{class:nt(["arrow",r.open?"down":"right"])},null,2)],8,my),ae(r.VPDropdownTransition,null,{default:Ve(()=>[yo(ie("ul",_y,[(Y(!0),ne(ge,null,nn(r.config.children,i=>(Y(),ne("li",{key:i.text,class:"vp-navbar-dropdown-item"},["children"in i?(Y(),ne(ge,{key:0},[ie("h4",vy,[i.link?(Y(),Le(r.AutoLink,{key:0,config:i,onFocusout:()=>{r.isLastItemOfArray(i,r.config.children)&&i.children.length===0&&(r.open=!1)}},null,8,["config","onFocusout"])):(Y(),ne("span",yy,Ie(i.text),1))]),ie("ul",by,[(Y(!0),ne(ge,null,nn(i.children,a=>(Y(),ne("li",{key:a.link,class:"vp-navbar-dropdown-subitem"},[ae(r.AutoLink,{config:a,onFocusout:()=>{r.isLastItemOfArray(a,i.children)&&r.isLastItemOfArray(i,r.config.children)&&r.toggleOpen(!1)}},null,8,["config","onFocusout"])]))),128))])],64)):(Y(),Le(r.AutoLink,{key:1,config:i,onFocusout:()=>{r.isLastItemOfArray(i,r.config.children)&&r.toggleOpen(!1)}},null,8,["config","onFocusout"]))]))),128))],512),[[Ao,r.open]])]),_:1})],2)}const Sy=ke(dy,[["render",Ey],["__file","VPNavbarDropdown.vue"]]),Xf=(e,t="")=>yt(e)?Gn(Bn(t,e)):"children"in e?{...e,children:e.children.map(n=>Xf(n,Bn(t,e.prefix)))}:{...e,link:zf(e.link)?Gn(Bn(t,e.link)).link:e.link},Ay=()=>{const e=He();return F(()=>(e.value.navbar||[]).map(t=>Xf(t)))},Cy=()=>{const e=He(),t=F(()=>e.value.repo),n=F(()=>t.value?Kf(t.value):null),r=F(()=>t.value&&!Vo(t.value)?`https://github.com/${t.value}`:t.value),o=F(()=>r.value?e.value.repoLabel?e.value.repoLabel:n.value===null?"Source":n.value:null);return F(()=>!r.value||!o.value?[]:[{text:o.value,link:r.value}])},wy=()=>{const e=Wt(),t=E_(),n=Wr(),r=qc(),o=gi(),s=S1(),i=He();return F(()=>{const a=Object.keys(r.value.locales);if(a.length<2)return[];const l=e.path,u=e.fullPath;return[{text:`${i.value.selectLanguageText}`,ariaLabel:`${i.value.selectLanguageAriaLabel??i.value.selectLanguageText}`,children:a.map(f=>{var E,A;const d=((E=r.value.locales)==null?void 0:E[f])??{},p=((A=s.value.locales)==null?void 0:A[f])??{},_=`${d.lang}`,v=p.selectLanguageName??_;if(_===o.value.lang)return{text:v,activeMatch:".",link:e.fullPath};const b=l.replace(n.value,f);return{text:v,link:t.value.some(m=>m===b)?u.replace(l,b):p.home??f}})}]})},Ty="719px",Oy={mobile:Ty};var Fr;(function(e){e.Mobile="mobile"})(Fr||(Fr={}));const xy={[Fr.Mobile]:Number.parseInt(Oy.mobile.replace("px",""),10)},Zf=(e,t)=>{const n=xy[e];Number.isInteger(n)&&(ft("orientationchange",()=>{t(n)},!1),ft("resize",()=>{t(n)},!1),Je(()=>{t(n)}))},ky=he({__name:"VPNavbarItems",setup(e,{expose:t}){t();const n=Ay(),r=wy(),o=Cy(),s=ve(!1),i=F(()=>He().value.navbarLabel??"site navigation"),a=F(()=>[...n.value,...r.value,...o.value]);Zf(Fr.Mobile,u=>{s.value=window.innerWidth(Y(),ne("div",{key:i.text,class:"vp-navbar-item"},["children"in i?(Y(),Le(r.VPNavbarDropdown,{key:0,class:nt({mobile:r.isMobile}),config:i},null,8,["class","config"])):(Y(),Le(r.AutoLink,{key:1,config:i},null,8,["config"]))]))),128))],8,Py)):Fe("",!0)}const Jf=ke(ky,[["render",Iy],["__file","VPNavbarItems.vue"]]),Ry={},Ly={class:"dark-icon",viewBox:"0 0 32 32"};function Dy(e,t){return Y(),ne("svg",Ly,t[0]||(t[0]=[ie("path",{d:"M13.502 5.414a15.075 15.075 0 0 0 11.594 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 3z",fill:"currentColor"},null,-1)]))}const Ny=ke(Ry,[["render",Dy],["__file","VPDarkIcon.vue"]]),Vy={},My={class:"light-icon",viewBox:"0 0 32 32"};function Fy(e,t){return Y(),ne("svg",My,t[0]||(t[0]=[ch('',9)]))}const Hy=ke(Vy,[["render",Fy],["__file","VPLightIcon.vue"]]),By=he({__name:"VPToggleColorModeButton",setup(e,{expose:t}){t();const n=He(),r=Di(),s={themeLocale:n,isDarkMode:r,toggleColorMode:()=>{r.value=!r.value},VPDarkIcon:Ny,VPLightIcon:Hy};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}}),$y=["title"];function Uy(e,t,n,r,o,s){return Y(),ne("button",{type:"button",class:"vp-toggle-color-mode-button",title:r.themeLocale.toggleColorMode,onClick:r.toggleColorMode},[yo(ae(r.VPLightIcon,null,null,512),[[Ao,!r.isDarkMode]]),yo(ae(r.VPDarkIcon,null,null,512),[[Ao,r.isDarkMode]])],8,$y)}const jy=ke(By,[["render",Uy],["__file","VPToggleColorModeButton.vue"]]),zy=he({__name:"VPToggleSidebarButton",emits:["toggle"],setup(e,{expose:t}){t();const r={themeLocale:He()};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),Ky=["title"];function Wy(e,t,n,r,o,s){return Y(),ne("div",{class:"vp-toggle-sidebar-button",title:r.themeLocale.toggleSidebar,"aria-expanded":"false",role:"button",tabindex:"0",onClick:t[0]||(t[0]=i=>e.$emit("toggle"))},t[1]||(t[1]=[ie("div",{class:"icon","aria-hidden":"true"},[ie("span"),ie("span"),ie("span")],-1)]),8,Ky)}const qy=ke(zy,[["render",Wy],["__file","VPToggleSidebarButton.vue"]]),Gy=he({__name:"VPNavbar",emits:["toggleSidebar"],setup(e,{expose:t}){t();const n=Qc("SearchBox")?ii("SearchBox"):()=>null,r=He(),o=Wi("navbar"),s=Wi("navbar-brand"),i=ve(0),a=F(()=>i.value?{maxWidth:`${i.value}px`}:{}),l=(c,f)=>{var _;const d=(_=c==null?void 0:c.ownerDocument.defaultView)==null?void 0:_.getComputedStyle(c,null)[f],p=Number.parseInt(d,10);return Number.isNaN(p)?0:p};Zf(Fr.Mobile,c=>{var d;const f=l(o.value,"paddingLeft")+l(o.value,"paddingRight");window.innerWidthe.$emit("toggleSidebar"))}),ie("span",Xy,[ae(r.VPNavbarBrand)],512),ie("div",{class:"vp-navbar-items-wrapper",style:Xn(r.linksWrapperStyle)},[Re(e.$slots,"before"),ae(r.VPNavbarItems,{class:"vp-hide-mobile"}),Re(e.$slots,"after"),r.themeLocale.colorModeSwitch?(Y(),Le(r.VPToggleColorModeButton,{key:0})):Fe("",!0),ae(r.SearchBox)],4)],512)}const Jy=ke(Gy,[["render",Zy],["__file","VPNavbar.vue"]]),Qy={},eb={class:"edit-icon",viewBox:"0 0 1024 1024"};function tb(e,t){return Y(),ne("svg",eb,t[0]||(t[0]=[ie("g",{fill:"currentColor"},[ie("path",{d:"M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"}),ie("path",{d:"M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"})],-1)]))}const nb=ke(Qy,[["render",tb],["__file","VPEditIcon.vue"]]),rb=()=>{const e=He(),t=er(),n=At();return F(()=>{var o;return n.value.contributors??e.value.contributors??!0?((o=t.value.git)==null?void 0:o.contributors)??null:null})},ob=()=>{const e=He(),t=er(),n=At();return F(()=>{if(!(n.value.editLink??e.value.editLink??!0))return null;const{repo:o,docsRepo:s=o,docsBranch:i="main",docsDir:a="",editLinkText:l}=e.value;if(!s)return null;const u=k1({docsRepo:s,docsBranch:i,docsDir:a,filePathRelative:t.value.filePathRelative,editLinkPattern:n.value.editLinkPattern??e.value.editLinkPattern});return u?{text:l??"Edit this page",link:u}:null})},sb=()=>{const e=He(),t=er(),n=At();return F(()=>{var s;return!(n.value.lastUpdated??e.value.lastUpdated??!0)||!((s=t.value.git)!=null&&s.updatedTime)?null:new Date(t.value.git.updatedTime).toLocaleString()})},ib=he({__name:"VPPageMeta",setup(e,{expose:t}){t();const n=He(),r=ob(),o=sb(),s=rb(),i={themeLocale:n,editLink:r,lastUpdated:o,contributors:s,VPEditIcon:nb,get AutoLink(){return tr}};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),ab={class:"vp-page-meta"},lb={key:0,class:"vp-meta-item edit-link"},ub={class:"vp-meta-item git-info"},cb={key:0,class:"vp-meta-item last-updated"},fb={class:"meta-item-label"},db={class:"meta-item-info"},pb={key:1,class:"vp-meta-item contributors"},hb={class:"meta-item-label"},mb={class:"meta-item-info"},gb=["title"];function _b(e,t,n,r,o,s){const i=ii("ClientOnly");return Y(),ne("footer",ab,[r.editLink?(Y(),ne("div",lb,[ae(r.AutoLink,{class:"label",config:r.editLink},{before:Ve(()=>[ae(r.VPEditIcon)]),_:1},8,["config"])])):Fe("",!0),ie("div",ub,[r.lastUpdated?(Y(),ne("div",cb,[ie("span",fb,Ie(r.themeLocale.lastUpdatedText)+": ",1),ae(i,null,{default:Ve(()=>[ie("span",db,Ie(r.lastUpdated),1)]),_:1})])):Fe("",!0),r.contributors&&r.contributors.length?(Y(),ne("div",pb,[ie("span",hb,Ie(r.themeLocale.contributorsText)+": ",1),ie("span",mb,[(Y(!0),ne(ge,null,nn(r.contributors,(a,l)=>(Y(),ne(ge,{key:l},[ie("span",{class:"contributor",title:`email: ${a.email}`},Ie(a.name),9,gb),l!==r.contributors.length-1?(Y(),ne(ge,{key:0},[on(", ")],64)):Fe("",!0)],64))),128))])])):Fe("",!0)])])}const vb=ke(ib,[["render",_b],["__file","VPPageMeta.vue"]]),yb=()=>{const e=Tn(),t=Wt();return n=>{n&&(rf(n)?t.path!==n&&e.push(n):Kr(n)?window.open(n):e.push(encodeURI(n)))}},ru=(e,t)=>e===!1?!1:yt(e)?Gn(e,t):di(e)?{...e,link:Gn(e.link,t).link}:null,Ks=(e,t,n)=>{const r=e.findIndex(s=>s.link===t);if(r!==-1){const s=e[r+n];return s?s.link?s:"prefix"in s&&!Lr(s.prefix).notFound?{...s,link:s.prefix}:null:null}for(const s of e)if("children"in s){const i=Ks(s.children,t,n);if(i)return i}const o=e.findIndex(s=>"prefix"in s&&s.prefix===t);if(o!==-1){const s=e[o+n];return s?s.link?s:"prefix"in s&&!Lr(s.prefix).notFound?{...s,link:s.prefix}:null:null}return null},bb=()=>{const e=At(),t=He(),n=Vi(),r=Wt(),o=F(()=>{const i=ru(e.value.prev,r.path);return i===!1?null:i??(t.value.prev===!1?null:Ks(n.value,r.path,-1))}),s=F(()=>{const i=ru(e.value.next,r.path);return i===!1?null:i??(t.value.next===!1?null:Ks(n.value,r.path,1))});return{prevLink:o,nextLink:s}},Eb=he({__name:"VPPageNav",setup(e,{expose:t}){t();const n=He(),r=yb(),{prevLink:o,nextLink:s}=bb(),i=F(()=>n.value.pageNavbarLabel??"page navigation");ft("keydown",l=>{l.altKey&&(l.key==="ArrowRight"?s.value&&(r(s.value.link),l.preventDefault()):l.key==="ArrowLeft"&&o.value&&(r(o.value.link),l.preventDefault()))});const a={themeLocale:n,navigate:r,prevLink:o,nextLink:s,navbarLabel:i,get AutoLink(){return tr}};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}}),Sb=["aria-label"],Ab={class:"hint"},Cb={class:"link"},wb={class:"hint"},Tb={class:"link"};function Ob(e,t,n,r,o,s){return r.prevLink||r.nextLink?(Y(),ne("nav",{key:0,class:"vp-page-nav","aria-label":r.navbarLabel},[r.prevLink?(Y(),Le(r.AutoLink,{key:0,class:"prev",config:r.prevLink},{default:Ve(()=>[ie("div",Ab,[t[0]||(t[0]=ie("span",{class:"arrow left"},null,-1)),on(" "+Ie(r.themeLocale.prev??"Prev"),1)]),ie("div",Cb,[ie("span",null,Ie(r.prevLink.text),1)])]),_:1},8,["config"])):Fe("",!0),r.nextLink?(Y(),Le(r.AutoLink,{key:1,class:"next",config:r.nextLink},{default:Ve(()=>[ie("div",wb,[on(Ie(r.themeLocale.next??"Next")+" ",1),t[1]||(t[1]=ie("span",{class:"arrow right"},null,-1))]),ie("div",Tb,[ie("span",null,Ie(r.nextLink.text),1)])]),_:1},8,["config"])):Fe("",!0)],8,Sb)):Fe("",!0)}const xb=ke(Eb,[["render",Ob],["__file","VPPageNav.vue"]]),kb=he({__name:"VPPage",setup(e,{expose:t}){t(),P1();const n={VPPageMeta:vb,VPPageNav:xb,get Content(){return vi}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),Pb={class:"vp-page"},Ib={class:"theme-default-content","vp-content":""};function Rb(e,t,n,r,o,s){return Y(),ne("main",Pb,[Re(e.$slots,"top"),ie("div",Ib,[Re(e.$slots,"content-top"),ae(r.Content),Re(e.$slots,"content-bottom")]),ae(r.VPPageMeta),ae(r.VPPageNav),Re(e.$slots,"bottom")])}const Lb=ke(kb,[["render",Rb],["__file","VPPage.vue"]]),Db=he({__name:"VPSidebarItem",props:{item:{},depth:{default:0}},setup(e,{expose:t}){t();const n=e,{item:r,depth:o}=ku(n),s=Wt(),i=Tn(),a=F(()=>"collapsible"in r.value&&r.value.collapsible),l=F(()=>jf(r.value,s)),u=F(()=>({"vp-sidebar-item":!0,"vp-sidebar-heading":o.value===0,active:l.value,collapsible:a.value})),c=F(()=>a.value?l.value:!0),[f,d]=Zc(c.value),p=b=>{a.value&&(b.preventDefault(),d())},_=i.afterEach(()=>{Jn(()=>{f.value=c.value})});si(()=>{_()});const v={props:n,item:r,depth:o,route:s,router:i,collapsible:a,isActive:l,itemClass:u,isOpenDefault:c,isOpen:f,toggleIsOpen:d,onClick:p,unregisterRouterHook:_,VPDropdownTransition:Yf,get AutoLink(){return tr}};return Object.defineProperty(v,"__isScriptSetup",{enumerable:!1,value:!0}),v}}),Nb={class:"vp-sidebar-children"};function Vb(e,t,n,r,o,s){const i=ii("VPSidebarItem",!0);return Y(),ne("li",null,[r.item.link?(Y(),Le(r.AutoLink,{key:0,class:nt(r.itemClass),config:r.item},null,8,["class","config"])):(Y(),ne("p",{key:1,tabindex:"0",class:nt(r.itemClass),onClick:r.onClick,onKeydown:qh(r.onClick,["enter"])},[on(Ie(r.item.text)+" ",1),r.collapsible?(Y(),ne("span",{key:0,class:nt(["arrow",r.isOpen?"down":"right"])},null,2)):Fe("",!0)],34)),"children"in r.item&&r.item.children.length?(Y(),Le(r.VPDropdownTransition,{key:2},{default:Ve(()=>[yo(ie("ul",Nb,[(Y(!0),ne(ge,null,nn(r.item.children,a=>(Y(),Le(i,{key:`${r.depth}${a.text}${a.link}`,item:a,depth:r.depth+1},null,8,["item","depth"]))),128))],512),[[Ao,r.isOpen]])]),_:1})):Fe("",!0)])}const Mb=ke(Db,[["render",Vb],["__file","VPSidebarItem.vue"]]),Fb=he({__name:"VPSidebarItems",setup(e,{expose:t}){t();const n=Wt(),r=Vi();Je(()=>{Ue(()=>n.hash,s=>{const i=document.querySelector(".vp-sidebar");if(!i)return;const a=document.querySelector(`.vp-sidebar a.vp-sidebar-item[href="${n.path}${s}"]`);if(!a)return;const{top:l,height:u}=i.getBoundingClientRect(),{top:c,height:f}=a.getBoundingClientRect();cl+u&&a.scrollIntoView(!1)})});const o={route:n,sidebarItems:r,VPSidebarItem:Mb};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}),Hb={key:0,class:"vp-sidebar-items"};function Bb(e,t,n,r,o,s){return r.sidebarItems.length?(Y(),ne("ul",Hb,[(Y(!0),ne(ge,null,nn(r.sidebarItems,i=>(Y(),Le(r.VPSidebarItem,{key:`${i.text}${i.link}`,item:i},null,8,["item"]))),128))])):Fe("",!0)}const $b=ke(Fb,[["render",Bb],["__file","VPSidebarItems.vue"]]),Ub=he({__name:"VPSidebar",setup(e,{expose:t}){t();const n={VPNavbarItems:Jf,VPSidebarItems:$b};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),jb={class:"vp-sidebar","vp-sidebar":""};function zb(e,t,n,r,o,s){return Y(),ne("aside",jb,[ae(r.VPNavbarItems),Re(e.$slots,"top"),ae(r.VPSidebarItems),Re(e.$slots,"bottom")])}const Kb=ke(Ub,[["render",zb],["__file","VPSidebar.vue"]]),Wb=he({__name:"Layout",setup(e,{expose:t}){t();const n=er(),r=At(),o=He(),s=F(()=>r.value.navbar!==!1&&o.value.navbar!==!1),i=Vi(),a=ve(!1),l=m=>{a.value=typeof m=="boolean"?m:!a.value},u={x:0,y:0},c=m=>{u.x=m.changedTouches[0].clientX,u.y=m.changedTouches[0].clientY},f=m=>{const y=m.changedTouches[0].clientX-u.x,L=m.changedTouches[0].clientY-u.y;Math.abs(y)>Math.abs(L)&&Math.abs(y)>40&&(y>0&&u.x<=80?l(!0):l(!1))},d=F(()=>r.value.externalLinkIcon??o.value.externalLinkIcon??!0),p=F(()=>[{"no-navbar":!s.value,"no-sidebar":!i.value.length,"sidebar-open":a.value,"external-link-icon":d.value},r.value.pageClass]);let _;Je(()=>{_=Tn().afterEach(()=>{l(!1)})}),Lo(()=>{_()});const v=Uf(),b=v.resolve,E=v.pending,A={page:n,frontmatter:r,themeLocale:o,shouldShowNavbar:s,sidebarItems:i,isSidebarOpen:a,toggleSidebar:l,touchStart:u,onTouchStart:c,onTouchEnd:f,enableExternalLinkIcon:d,containerClass:p,get unregisterRouterHook(){return _},set unregisterRouterHook(m){_=m},scrollPromise:v,onBeforeEnter:b,onBeforeLeave:E,VPHome:sy,VPNavbar:Jy,VPPage:Lb,VPSidebar:Kb};return Object.defineProperty(A,"__isScriptSetup",{enumerable:!1,value:!0}),A}});function qb(e,t,n,r,o,s){return Y(),ne("div",{class:nt(["vp-theme-container",r.containerClass]),"vp-container":"",onTouchstart:r.onTouchStart,onTouchend:r.onTouchEnd},[Re(e.$slots,"navbar",{},()=>[r.shouldShowNavbar?(Y(),Le(r.VPNavbar,{key:0,onToggleSidebar:r.toggleSidebar},{before:Ve(()=>[Re(e.$slots,"navbar-before")]),after:Ve(()=>[Re(e.$slots,"navbar-after")]),_:3})):Fe("",!0)]),ie("div",{class:"vp-sidebar-mask",onClick:t[0]||(t[0]=i=>r.toggleSidebar(!1))}),Re(e.$slots,"sidebar",{},()=>[ae(r.VPSidebar,null,{top:Ve(()=>[Re(e.$slots,"sidebar-top")]),bottom:Ve(()=>[Re(e.$slots,"sidebar-bottom")]),_:3})]),Re(e.$slots,"page",{},()=>[r.frontmatter.home?(Y(),Le(r.VPHome,{key:0})):(Y(),Le(fi,{key:1,name:"fade-slide-y",mode:"out-in",onBeforeEnter:r.onBeforeEnter,onBeforeLeave:r.onBeforeLeave},{default:Ve(()=>[(Y(),Le(r.VPPage,{key:r.page.path},{top:Ve(()=>[Re(e.$slots,"page-top")]),"content-top":Ve(()=>[Re(e.$slots,"page-content-top")]),"content-bottom":Ve(()=>[Re(e.$slots,"page-content-bottom")]),bottom:Ve(()=>[Re(e.$slots,"page-bottom")]),_:3}))]),_:3},8,["onBeforeEnter","onBeforeLeave"]))])],34)}const Gb=ke(Wb,[["render",qb],["__file","Layout.vue"]]),Yb=he({__name:"NotFound",setup(e,{expose:t}){t();const n=Wr(),r=He(),o=r.value.notFound??["Not Found"],s=()=>o[Math.floor(Math.random()*o.length)],i=r.value.home??n.value,a=r.value.backToHome??"Back to home",l={routeLocale:n,themeLocale:r,messages:o,getMsg:s,homeLink:i,homeText:a,get RouteLink(){return Ho}};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}),Xb={class:"vp-theme-container","vp-container":""},Zb={class:"page"},Jb={class:"theme-default-content","vp-content":""};function Qb(e,t,n,r,o,s){return Y(),ne("div",Xb,[ie("main",Zb,[ie("div",Jb,[t[0]||(t[0]=ie("h1",null,"404",-1)),ie("blockquote",null,Ie(r.getMsg()),1),ae(r.RouteLink,{to:r.homeLink},{default:Ve(()=>[on(Ie(r.homeText),1)]),_:1},8,["to"])])])])}const eE=ke(Yb,[["render",Qb],["__scopeId","data-v-67c08c1d"],["__file","NotFound.vue"]]),tE=un({enhance({app:e,router:t}){Qc("Badge")||e.component("Badge",F1);const n=t.options.scrollBehavior;t.options.scrollBehavior=async(...r)=>(await Uf().wait(),n(...r))},setup(){C1(),N1()},layouts:{Layout:Gb,NotFound:eE}}),nE=Object.freeze(Object.defineProperty({__proto__:null,default:tE},Symbol.toStringTag,{value:"Module"})),io=[__,O_,D_,V_,Y_,tv,ov,cv,E1,nE].map(e=>e.default).filter(Boolean),rE=JSON.parse('{"base":"/learning-ai/","lang":"en-US","title":"","description":"","head":[["link",{"rel":"icon","href":"/learning-ai/favicon.ico"}],["link",{"rel":"manifest","href":"/learning-ai/manifest.webmanifest"}],["meta",{"name":"theme-color","content":"#00A67E"}]],"locales":{}}');var mr=bt(rE),oE=Xm,sE=()=>{const e=Ig({history:oE(Cc("/learning-ai/")),routes:[{name:"vuepress-route",path:"/:catchAll(.*)",components:{}}],scrollBehavior:(t,n,r)=>r||(t.hash?{el:t.hash}:{top:0})});return e.beforeResolve(async(t,n)=>{if(t.path!==n.path||n===Vt){const r=Lr(t.fullPath);if(r.path!==t.fullPath)return r.path;const o=await r.loader();t.meta={...r.meta,_pageChunk:o}}else t.path===n.path&&(t.meta=n.meta)}),e},iE=e=>{e.component("ClientOnly",_i),e.component("Content",vi),e.component("RouteLink",Ho)},aE=(e,t,n)=>{const r=F(()=>t.currentRoute.value.path),o=zd((b,E)=>({get(){return b(),t.currentRoute.value.meta._pageChunk},set(A){t.currentRoute.value.meta._pageChunk=A,E()}})),s=F(()=>hn.resolveLayouts(n)),i=F(()=>hn.resolveRouteLocale(mr.value.locales,r.value)),a=F(()=>hn.resolveSiteLocaleData(mr.value,i.value)),l=F(()=>o.value.comp),u=F(()=>o.value.data),c=F(()=>u.value.frontmatter),f=F(()=>hn.resolvePageHeadTitle(u.value,a.value)),d=F(()=>hn.resolvePageHead(f.value,c.value,a.value)),p=F(()=>hn.resolvePageLang(u.value,a.value)),_=F(()=>hn.resolvePageLayout(u.value,s.value)),v={layouts:s,pageData:u,pageComponent:l,pageFrontmatter:c,pageHead:d,pageHeadTitle:f,pageLang:p,pageLayout:_,redirects:Ds,routeLocale:i,routePath:r,routes:Hn,siteData:mr,siteLocaleData:a};return e.provide(mi,v),Object.defineProperties(e.config.globalProperties,{$frontmatter:{get:()=>c.value},$head:{get:()=>d.value},$headTitle:{get:()=>f.value},$lang:{get:()=>p.value},$page:{get:()=>u.value},$routeLocale:{get:()=>i.value},$site:{get:()=>mr.value},$siteLocale:{get:()=>a.value},$withBase:{get:()=>yi}}),v},lE=([e,t,n=""])=>{const r=Object.entries(t).map(([a,l])=>yt(l)?`[${a}=${JSON.stringify(l)}]`:l?`[${a}]`:"").join(""),o=`head > ${e}${r}`;return Array.from(document.querySelectorAll(o)).find(a=>a.innerText===n)??null},uE=([e,t,n])=>{if(!yt(e))return null;const r=document.createElement(e);return di(t)&&Object.entries(t).forEach(([o,s])=>{yt(s)?r.setAttribute(o,s):s&&r.setAttribute(o,"")}),yt(n)&&r.appendChild(document.createTextNode(n)),r},cE=()=>{const e=Dg(),t=Ng();let n=[];const r=()=>{e.value.forEach(i=>{const a=lE(i);a&&n.push(a)})},o=()=>{const i=[];return e.value.forEach(a=>{const l=uE(a);l&&i.push(l)}),i},s=()=>{document.documentElement.lang=t.value;const i=o();n.forEach((a,l)=>{const u=i.findIndex(c=>a.isEqualNode(c));u===-1?(a.remove(),delete n[l]):i.splice(u,1)}),i.forEach(a=>document.head.appendChild(a)),n=[...n.filter(a=>!!a),...i]};An(Fg,s),Je(()=>{r(),Ue(e,s,{immediate:!1})})},fE=Xh,dE=async()=>{var r;const e=fE({name:"Vuepress",setup(){var i;cE();for(const a of io)(i=a.setup)==null||i.call(a);const o=io.flatMap(({rootComponents:a=[]})=>a.map(l=>_e(l))),s=Vg();return()=>[_e(s.value),o]}}),t=sE();iE(e);const n=aE(e,t,io);{const{setupDevtools:o}=await Nt(async()=>{const{setupDevtools:s}=await import("./setupDevtools-7MC2TMWH-BvTCuljQ.js");return{setupDevtools:s}},[]);o(e,n)}for(const o of io)await((r=o.enhance)==null?void 0:r.call(o,{app:e,router:t,siteData:mr}));return e.use(t),{app:e,router:t}};dE().then(({app:e,router:t})=>{t.isReady().then(()=>{e.mount("#app")})});export{ke as _,ch as a,ie as b,ne as c,dE as createVueApp,Y as o,L0 as s,Ue as w}; diff --git a/assets/assistant-BJUR0Mbm.png b/assets/assistant-BJUR0Mbm.png new file mode 100644 index 0000000..1dffcf3 Binary files /dev/null and b/assets/assistant-BJUR0Mbm.png differ diff --git a/assets/avatar-Bf9zzubu.png b/assets/avatar-Bf9zzubu.png new file mode 100644 index 0000000..9899730 Binary files /dev/null and b/assets/avatar-Bf9zzubu.png differ diff --git a/assets/codeSuggestion-Bvi0fVx8.png b/assets/codeSuggestion-Bvi0fVx8.png new file mode 100644 index 0000000..e8a3d86 Binary files /dev/null and b/assets/codeSuggestion-Bvi0fVx8.png differ diff --git a/assets/completeTest-QF26rGYC.png b/assets/completeTest-QF26rGYC.png new file mode 100644 index 0000000..e754c57 Binary files /dev/null and b/assets/completeTest-QF26rGYC.png differ diff --git a/assets/copilot_assistance-Cotk3f4O.gif b/assets/copilot_assistance-Cotk3f4O.gif new file mode 100644 index 0000000..22bdd91 Binary files /dev/null and b/assets/copilot_assistance-Cotk3f4O.gif differ diff --git a/assets/copilot_assistance2-BM88VuDX.gif b/assets/copilot_assistance2-BM88VuDX.gif new file mode 100644 index 0000000..56d2a35 Binary files /dev/null and b/assets/copilot_assistance2-BM88VuDX.gif differ diff --git a/assets/copilot_completion-CQ-GiHnM.gif b/assets/copilot_completion-CQ-GiHnM.gif new file mode 100644 index 0000000..cfbc2c0 Binary files /dev/null and b/assets/copilot_completion-CQ-GiHnM.gif differ diff --git a/assets/copilot_diagram-BlfyAUjS.png b/assets/copilot_diagram-BlfyAUjS.png new file mode 100644 index 0000000..46261db Binary files /dev/null and b/assets/copilot_diagram-BlfyAUjS.png differ diff --git a/assets/copilot_generation-B6N3Dysv.gif b/assets/copilot_generation-B6N3Dysv.gif new file mode 100644 index 0000000..d505fe0 Binary files /dev/null and b/assets/copilot_generation-B6N3Dysv.gif differ diff --git a/assets/copilot_test-CDuoz2Se.gif b/assets/copilot_test-CDuoz2Se.gif new file mode 100644 index 0000000..c6e2912 Binary files /dev/null and b/assets/copilot_test-CDuoz2Se.gif differ diff --git a/assets/copilot_testing-B1NBiis5.gif b/assets/copilot_testing-B1NBiis5.gif new file mode 100644 index 0000000..11f10fc Binary files /dev/null and b/assets/copilot_testing-B1NBiis5.gif differ diff --git a/assets/cot-CrIEIz7R.png b/assets/cot-CrIEIz7R.png new file mode 100644 index 0000000..b87f3c4 Binary files /dev/null and b/assets/cot-CrIEIz7R.png differ diff --git a/assets/demo_prompt-BpZVtafc.gif b/assets/demo_prompt-BpZVtafc.gif new file mode 100644 index 0000000..e240e35 Binary files /dev/null and b/assets/demo_prompt-BpZVtafc.gif differ diff --git a/assets/fixTest-kUljAh5E.png b/assets/fixTest-kUljAh5E.png new file mode 100644 index 0000000..8a94cff Binary files /dev/null and b/assets/fixTest-kUljAh5E.png differ diff --git a/assets/fixTest2-CyC7vvIQ.png b/assets/fixTest2-CyC7vvIQ.png new file mode 100644 index 0000000..baa9d06 Binary files /dev/null and b/assets/fixTest2-CyC7vvIQ.png differ diff --git a/assets/gasparov-DChlTPYb.jpg b/assets/gasparov-DChlTPYb.jpg new file mode 100644 index 0000000..05af862 Binary files /dev/null and b/assets/gasparov-DChlTPYb.jpg differ diff --git a/assets/index.html-BI6zCFdP.js b/assets/index.html-BI6zCFdP.js new file mode 100644 index 0000000..0316bf9 --- /dev/null +++ b/assets/index.html-BI6zCFdP.js @@ -0,0 +1,6 @@ +import{_ as a,c as t,a as i,o as n}from"./app-CpFOj0gG.js";const s="/learning-ai/assets/librechat_interface-CYKYbYEb.png",r="/learning-ai/assets/prompt-D9YI1LJh.png",o="/learning-ai/assets/demo_prompt-BpZVtafc.gif",l="/learning-ai/assets/assistant-BJUR0Mbm.png",p="/learning-ai/assets/multi_plugin-TCdQZhy0.png",c="/learning-ai/assets/result_prompt-C4XLLbdh.png",h={};function d(u,e){return n(),t("div",null,e[0]||(e[0]=[i('

Online with Librechat

librechat_interface

LibreChat is a free, open source AI chat platform. This Web UI offers vast customization, supporting numerous AI providers, services, and integrations. Serves all AI Conversations in one place with a familiar interface, innovative enhancements, for as many users as you need.

The full librechat documentation is available here

Let's discover how to use LibreChat to create efficient and effective conversations with AI for developers.

History

Prompts history allows users to save and load prompts for their conversations and easily access them later. Reusing prompts can save time and effort, especially when working with multiple conversations and keep track of the context and details of a conversation.

Favorites

The favorites feature allows users to save and load favorite prompts for their conversations and easily access them later.

Presets

The presets feature allows users to save and load predefined settings for initialise a conversations. Users can import and export these presets as JSON files, set a default preset, and share them with others.

Preformatted prompts

The prompts feature allows users to save and load predefined prompts to use it during their conversations. You can use a prompt with the /[prompt command]. A prompt can have parameters, which are replaced with values when the prompt is used.

Exemple of preformatted prompts : Explain the following code snippet in Java, Kotlin or Javascript

  • Click on the + button to add a new prompt.
  • name your prompt : explain
  • on Text tab, you can write your prompt :
Explain the following {{language:Java|Kotlin|Javascript}} snippet of code: 
+{{code}}
+

preformatted_prompts_config

  • Now you can use the /explain command to get the explanation of the code snippet.

preformatted_prompts_usage

AI providers

Azure OpenAI

Azure OpenAI Service provides REST API access to OpenAI's powerful language models, including the o1-preview, o1-mini, GPT-4o, GPT-4o mini, GPT-4 Turbo with Vision, GPT-4, GPT-3.5-Turbo, and Embeddings model series.

Google Gemini

Gemini is a large language model (LLM) developed by Google. It's designed to be a multimodal AI, meaning it can work with and understand different types of information, including text, code, audio, and images. Google positions Gemini as a highly capable model for a range of tasks, from answering questions and generating creative content to problem-solving and more complex reasoning. There are different versions of Gemini, optimized for different tasks and scales.

Anthropic Claude

Claude is an Artificial Intelligence, trained by Anthropic. Claude can process large amounts of information, brainstorm ideas, generate text and code, help you understand subjects, coach you through difficult situations, help simplify your busywork so you can focus on what matters most, and so much more.

Assistants

The Assistants API enables the creation of AI assistants, offering functionalities like code interpreter, knowledge retrieval of files, and function execution. The Assistants API allows you to build AI assistants within your own applications for specific needs. An Assistant has instructions and can leverage models, tools, and files to respond to user queries. The Assistants API currently supports three types of tools: Code Interpreter, File Search, and Function calling.

assistant

Plugins

The plugins endpoint opens the door to prompting LLMs in new ways other than traditional input/output prompting.

Warning

Every additional plugin selected will increase your token usage as there are detailed instructions the LLM needs for each one For best use, be selective with plugins per message and narrow your requests as much as possible

DALL-E 3

Dall-e 3 is a librechat Plugin for generating images from text. You can use it to generate images from text, such as product descriptions, product images, or even documentation images to illustrate your technical documentation.

Confluence

Ask confluence is a librechat Plugin for Confluence documents.

IT support

Ask for IT support enable you to get support from the IT team and create WLSD tickets from your chats.

WOLF

Wolf is a librechat Plugin for WL Managagement System documents. The sharepoint documention is available here

Ask to WorldLine management system Friend everything you are looking for in the WMS content. AskWOLF plugin is meant to help you navigate through the multitude of information provided by the WMS (Applicable Policies, Processes & Procedures, Transversal & Operations SP pages links, …). This Worldline LibreChat plugin relies on ChatGPT technologies.

​​​​​​​Worldline Management System (WMS) is the Group reference for all information pertaining to our operating model such as applicable policies, processes and governance structures. Key responsibilities are :

  • consistently address its customers’ and markets’ requirements across all its geographies
  • continuous improvement of customer satisfaction through effective application of WMS
  • correct interpretation of applicable ISO standards requirements

Example of prompts:

  • AskWOLF: What is the WMS?
  • AskWOLF: What are the policies?
  • AskWOLF: What are the processes?

Browse plugins

Retrieve data from internet and use it to generate a response.

Plugin mixing

You can mix plugins to create more complex prompts. For example, you can use the DALL-E 3 plugin to generate images from text and then use the IT support plugin to get support from the IT team.

Generate the favicon 16x16 pixels based on the content found in 
+https://worldline.github.io/learning-ai/overview/ with Browser plugin 
+and generate the favicon with DallE. I want no background and black and white image
+

promptFavicon

RAG

RAG is possible with LibreChat. You can use RAG to create a conversation with the AI. To can add files to the conversation, you go to the file tab and select the file you want to add. Then the file will be added to the file manager and you can use it in the prompt.

The file can be an png, a video, a text file, or a PDF file.

🧪 Exercises

1. Prompt creation

Select one prompt engineering technique and make a prompt in librechat that can be called with the /[prompt_name] command.

2. Plugins mixing

Use the Browse and Dall-E plugins to create a prompt that generates a a favicon based on the content of this learning-ai website.

3. Make your own assistant

Choose your favorite topic ( cooking, travel, sports, etc.) and create an assistant that can answer questions about it. You can share documents, files and instructions to configure your custom assistant and use it.

📖 Further readings

',63)]))}const g=a(h,[["render",d],["__file","index.html.vue"]]),f=JSON.parse('{"path":"/llm/","title":"Online with Librechat","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"History","slug":"history","link":"#history","children":[]},{"level":2,"title":"Favorites","slug":"favorites","link":"#favorites","children":[]},{"level":2,"title":"Presets","slug":"presets","link":"#presets","children":[]},{"level":2,"title":"Preformatted prompts","slug":"preformatted-prompts","link":"#preformatted-prompts","children":[]},{"level":2,"title":"AI providers","slug":"ai-providers","link":"#ai-providers","children":[{"level":3,"title":"Azure OpenAI","slug":"azure-openai","link":"#azure-openai","children":[]},{"level":3,"title":"Google Gemini","slug":"google-gemini","link":"#google-gemini","children":[]},{"level":3,"title":"Anthropic Claude","slug":"anthropic-claude","link":"#anthropic-claude","children":[]}]},{"level":2,"title":"Assistants","slug":"assistants","link":"#assistants","children":[]},{"level":2,"title":"Plugins","slug":"plugins","link":"#plugins","children":[{"level":3,"title":"DALL-E 3","slug":"dall-e-3","link":"#dall-e-3","children":[]},{"level":3,"title":"Confluence","slug":"confluence","link":"#confluence","children":[]},{"level":3,"title":"IT support","slug":"it-support","link":"#it-support","children":[]},{"level":3,"title":"WOLF","slug":"wolf","link":"#wolf","children":[]},{"level":3,"title":"Browse plugins","slug":"browse-plugins","link":"#browse-plugins","children":[]}]},{"level":2,"title":"Plugin mixing","slug":"plugin-mixing","link":"#plugin-mixing","children":[]},{"level":2,"title":"RAG","slug":"rag","link":"#rag","children":[]},{"level":2,"title":"🧪 Exercises","slug":"🧪-exercises","link":"#🧪-exercises","children":[]},{"level":2,"title":"📖 Further readings","slug":"📖-further-readings","link":"#📖-further-readings","children":[]}],"git":{"updatedTime":1732110036000,"contributors":[{"name":"Brah","username":"Brah","email":"brah.gharbi@gmail.com","commits":3,"url":"https://github.com/Brah"}]},"filePathRelative":"llm/README.md"}');export{g as comp,f as data}; diff --git a/assets/index.html-BKkRnedg.js b/assets/index.html-BKkRnedg.js new file mode 100644 index 0000000..6053fa2 --- /dev/null +++ b/assets/index.html-BKkRnedg.js @@ -0,0 +1,12 @@ +import{_ as n,c as s,a,o as t}from"./app-CpFOj0gG.js";const o="/learning-ai/assets/lmstudio-B6PjFtYg.png",i={};function l(p,e){return t(),s("div",null,e[0]||(e[0]=[a('

Offline with LM Studio

Disclamer

Be careful with offline prompting models downloaded from the internet. They can contain malicious code. And also the size of the model can be very large from few Gb to few Tb.

Definitions

If you don't want to use the online AI providers, you can use offline prompting. This technique involves using a local LLM to generate responses to prompts. It is useful for developers who want to use a local LLM for offline prompting or for those who want to experiment with different LLMs without relying on online providers.

LM Studio is a tool that allows developers to experiment with different LLMs without relying on online providers. It provides a user-friendly interface for selecting and configuring LLMs, as well as a chat interface for interacting with the LLMs. It also includes features for fine-tuning and deploying LLMs. This technique is useful for developers who want to experiment with different LLMs.

Installation

lmstudio_installation

For installation, you can follow the instructions here

Model configuration

You can configure the model you want to use in the settings tab. You can select the model you want to use and configure it according to your needs.

Context Length: The context length is the number of tokens that will be used as context for the model. This is important because it determines how much information the model can use to generate a response. A longer context length will allow the model to generate more detailed and relevant responses, but it may also increase the computational cost of the model.

GPU Offload: This option allows you to offload the model to a GPU if available. This can significantly speed up the generation process, especially for longer prompts or complex models.

CPU Threads: This option allows you to specify the number of CPU threads to use for the model. This can be useful for controlling the computational resources used by the model.

Evaluation batch size: This option allows you to specify the batch size for evaluation. This is important for evaluating the performance of the model and can affect the speed and accuracy of the generation process.

RoPE Frequency base: This option allows you to specify the frequency base for RoPE (Range-based Output Embedding). This is important for controlling the output length of the model and can affect the quality of the generated responses.

RoPE Frequency scale: This option allows you to specify the frequency scale for RoPE (Range-based Output Embedding). This is important for controlling the output length of the model and can affect the quality of the generated responses.

Keep model in memory: This option allows you to keep the model in memory after the generation process is complete. This can be useful for generating multiple responses or for using the model for offline prompting.

Try mmap() for faster loading: This option allows you to try using mmap() for faster loading of the model. This can be useful for loading large models or for generating responses quickly.

Seed: This option allows you to specify a seed for the model. This can be useful for controlling the randomness of the generated responses.

Flash Attention: This option allows you to enable flash attention for the model. This can be useful for generating more detailed and accurate responses, but it may also increase the computational cost of the model.

enable APIs

You can use the APIs to generate responses from the models. To enable the API server with LM Studio, you need to set the API Server option to ON in the settings tab. You can then use the API endpoints to generate responses from the models.

2024-11-15 18:45:22  [INFO] [LM STUDIO SERVER] Success! HTTP server listening on port 1234
+2024-11-15 18:45:22  [INFO]
+2024-11-15 18:45:22  [INFO] [LM STUDIO SERVER] Supported endpoints:
+2024-11-15 18:45:22  [INFO] [LM STUDIO SERVER] ->	GET  http://localhost:1234/v1/models
+2024-11-15 18:45:22  [INFO] [LM STUDIO SERVER] ->	POST http://localhost:1234/v1/chat/completions
+2024-11-15 18:45:22  [INFO] [LM STUDIO SERVER] ->	POST http://localhost:1234/v1/completions
+2024-11-15 18:45:22  [INFO] [LM STUDIO SERVER] ->	POST http://localhost:1234/v1/embeddings
+2024-11-15 18:45:22  [INFO]
+2024-11-15 18:45:22  [INFO] [LM STUDIO SERVER] Logs are saved into /Users/ibrahim/.cache/lm-studio/server-logs
+2024-11-15 18:45:22  [INFO] Server started.
+2024-11-15 18:45:22  [INFO] Just-in-time model loading active.
+

You can use the endpoints to generate responses from the models. The endpoints are as follows:

  • GET /v1/models: This endpoint returns a list of the available models.
  • POST /v1/chat/completions: This endpoint generates responses from the models using the chat format.Chat format is used for tasks such as chatbots, conversational AI, and language learning.
  • POST /v1/completions: This endpoint generates responses from the models using the completion format. Completion format is used for tasks such as question answering, summarization, and text generation.
  • POST /v1/embeddings: This endpoint generates embeddings from the models. Embeddings are used for tasks such as sentiment analysis, text classification, and language translation.

🧪 Exercises

📖 Further readings

`,27)]))}const c=n(i,[["render",l],["__file","index.html.vue"]]),u=JSON.parse('{"path":"/offline/","title":"Offline with LM Studio","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"Definitions","slug":"definitions","link":"#definitions","children":[]},{"level":2,"title":"Installation","slug":"installation","link":"#installation","children":[]},{"level":2,"title":"Model configuration","slug":"model-configuration","link":"#model-configuration","children":[]},{"level":2,"title":"enable APIs","slug":"enable-apis","link":"#enable-apis","children":[]},{"level":2,"title":"🧪 Exercises","slug":"🧪-exercises","link":"#🧪-exercises","children":[]},{"level":2,"title":"📖 Further readings","slug":"📖-further-readings","link":"#📖-further-readings","children":[]}],"git":{"updatedTime":1731692981000,"contributors":[{"name":"Brah","username":"Brah","email":"brah.gharbi@gmail.com","commits":1,"url":"https://github.com/Brah"}]},"filePathRelative":"offline/README.md"}');export{c as comp,u as data}; diff --git a/assets/index.html-BQRe6DYZ.js b/assets/index.html-BQRe6DYZ.js new file mode 100644 index 0000000..a3b3bd4 --- /dev/null +++ b/assets/index.html-BQRe6DYZ.js @@ -0,0 +1,168 @@ +import{_ as s,c as a,a as e,o as t}from"./app-CpFOj0gG.js";const i={};function l(o,n){return t(),a("div",null,n[0]||(n[0]=[e(`

AI for services

Definitions

Google Colab

You can use Google collab for a simple to use notebook environment for machine learning and data science. It will provide a container with all the necessary libraries and tools to run your code and live editing interface through a browser.

A notebook is a document that contains live code, equations, visualizations, and narrative text. You can use Colab to create, share, and collaborate on Jupyter notebooks with others.

User interraction with collab

You can store your API keysafely in the userdata of your colab environment. Also you can upload files to your colab environment as follows:


+from google.colab import files
+from google.colab import userdata  # For retrieving API keys
+
+# 1. Upload the file to your current colab environment ( a upload button will appear at the execution of the code)
+uploaded = files.upload()
+for fn in uploaded.keys():
+    print('User uploaded file "{name}" with length {length} bytes'.format(
+        name=fn, length=len(uploaded[fn])))
+
+# get the API key from colab userdata ( left panel of colla, picto with the key)
+api_key=userdata.get('API_KEY')
+
+

Langchain

Langchain is a framework for building applications powered by language models (LLMs) like OpenAI's GPT-3. It provides a set of tools and utilities for working with LLMs, including prompt engineering, chain of thought, and memory management. Langchain is designed to be modular and extensible, allowing developers to easily integrate with different LLMs and other AI services.

Use APIs (Mistral)

configuration

To set Up Your Environment

  • Install the necessary packages using pip:
    pip install requests langchain langchain_mistralai
    +

To obtain API Keys

  • Obtain an API key for the Mistral API here

Main enpoints

EndpointURLDescription
Models/v1/modelsList models that are available with your account.
Chat Completions/v1/chat/completionsCompletion means that the LLM will generate a response based on the prompt.
Embeddings/v1/embeddingsEmbeddings means that the LLM will generate a vector representation of the input text.
curl -H "Authorization: Bearer <your_api_key>" https://api.mistral.ai/v1/models
+

output :

[
+  {
+    "id": "text-davinci-003",
+    "object": "model",
+    "owned_by": "user-123456789",
+    "permission": [
+      {
+        "id": "user-123456789",
+        "object": "permission",
+        "allow_create_engine": true,
+        "allow_sampling": true,
+        "allow_logprobs": true,
+        "allow_search": true,
+        "allow_view": true,
+        "allow_fine_tuning": true,
+        "organization": "org-123456789",
+        "group": null,
+        "is_blocking": false
+      }
+    ]
+  }
+  ...
+]
+

Json Mode

Json mode is a feature that allows you to send structured data to the model through the API instead of a text prompt. To use Json mode, you need to select the right endpoint in the API explorer and specify the input format as JSON in the prompt.

For OpenAI API, you can use the following format :

{
+  "model": "text-davinci-003",
+  "prompt": "Translate the following text to French: 'Hello, how are you?'",
+  "max_tokens": 100
+}
+
curl -H "Authorization: Bearer <your_api_key>" -H "Content-Type: application/json" -d '{"model": "text-davinci-003", "prompt": "Translate the following text to French: 'Hello, how are you?'", "max_tokens": 100}' https://api.mistral.ai/v1/chat/completions
+
+{
+  "id": "chatcmpl-123456789",
+  "object": "chat.completion",
+  "created": 1679341456,
+  "model": "text-davinci-003",
+  "choices": [
+    {
+      "index": 0,
+      "message": {
+        "role": "assistant",
+        "content": "Bonjour, comment ça va?"
+      },
+      "finish_reason": "stop"
+    }
+  ],
+  "usage": {
+    "prompt_tokens": 5,
+    "completion_tokens": 7,
+    "total_tokens": 12
+  }
+}
+

Structured Outputs

Structured outputs are a feature that allows you to receive structured data from the model through the API. It is useful for working with models that require structured outputs, such as JSON.

To use structured outputs, you need to select the right endpoint in the API explorer and specify the output format in the prompt.

for OpenAI API, you can use the following format :

{
+  "model": "text-davinci-003",
+  "prompt": "Translate the following text to French: 'Hello, how are you?'",
+  "max_tokens": 100,
+  "output": "json"  
+}
+

the structured output can be as follow :

{
+  "model": "text-davinci-003",
+  "prompt": "Translate the following text to French: 'Hello, how are you?'",
+  "max_tokens": 100,
+  "output": {
+    "text": "Bonjour, comment ça va?"
+  }
+}
+
+

🧪 Exercises

Request an LLM with with basic REST request

Create a Python application that generates humorous motivational quotes for developers based on their name, favorite programming language, and a brief description of their current project or challenge.

Library for making API calls

You can use requests for making API calls in Python.

Expected Output

Enter your name: Ibrahim
+Enter your favorite programming language: kotlin
+Enter your current project description: conference app with KMP
+
+--- Motivational Quote ---
+Quote: "Code like you just ate a burrito... with passion, speed, and a little bit of mess!"
+Author: Unknown
+--------------------------
+
Solution

Google Collab notebook

Use Langchain (Mistral)

Support

Depending on the LLM, langchain provides different APIs. Have a look at the following table here to see which APIs are available for your LLM.

Model FeaturesTool CallingStructured OutputJSON ModeImage InputAudio InputVideo Input

To use langchain with mistral, you need to install the langchain_mistralai package and create a ChatMistralAI object.

from langchain_mistralai.chat_models import ChatMistralAI
+# Define your API key and model
+API_KEY = 'your_api_key'  # Replace with your actual Mistral API key
+MISTRAL_API_URL = 'https://api.mistral.ai/v1/chat/completions'
+llm = ChatMistralAI(api_key=API_KEY, model="open-mistral-7b")
+

Prompt templating

Prompt templating is a powerful feature that allows you to create dynamic prompts based on the input data. It enables you to generate prompts that are tailored to the specific requirements of your application.

from langchain.prompts import PromptTemplate
+
+prompt = PromptTemplate(
+    input_variables=["text", "language"],
+    template="translate the following text to {language}: {text}",
+)
+

Chain

Chain Chains refer to sequences of calls - whether to an LLM, a tool, or a data preprocessing step. It is a sequence of calls that are executed in order, with the output of one call being the input for the next call.It enables you to create complex workflows by combining the output of one LLM call with the input of another. This is useful for tasks that require multiple steps or interactions with external systems.

from langchain.chains import LLMChain
+
+input_data = {
+    "text": "Hello, how are you?",
+    "language": "French"
+}
+
+chain = prompt | llm_model
+response=chain.invoke(input_data)
+

Multiple prompt can be chained together to create complex workflows.

AIMessage

AIMessage is returned from a chat model as a response to a prompt. It contains the message type, content, and any additional parameters.

🧪 Exercise

Request an LLM in JSON mode with structured output in JSON format

Create a Python application that generates humorous motivational quotes for developers based on their name, favorite programming language, and a brief description of their current project or challenge.

Expected Output

Enter your name: Ibrahim
+Enter your favorite programming language: kotlin
+Enter your current project description: conference app with KMP
+
+--- Motivational Quote ---
+Quote: "Code like you just ate a burrito... with passion, speed, and a little bit of mess!"
+Author: Unknown
+--------------------------
+

Steps

Create a function get_developer_motivation(name, language, project_description) that:

  • Takes a developer's name, their favorite programming language, and a brief description of their current project or challenge as input.
  • Uses langchain to send a request to the LLM to generate a humorous motivational quote.
  • Returns a structured response containing the quote, the developer's name, the programming language, and the project description.
Solution

Google Collab notebook

Tool/Function calling

Function/Tool calling is a feature that allows the llm to call existing functions from your code. It is useful for working with functions, such as APIs, and for interacting with models that require function calls. Once a tool function is created, you can register it as a tool within LangChain for being used by the LLM.

🧪 Exercise

Request an LLM with Tool/Function calling

Build a command-line application that fetches weather data for a specified city using LangChain and a public weather API. The application will utilize implicit tool calling to allow the LLM to decide when to call the weather-fetching tool based on user input.

Output
Ask about the weather (e.g., 'Lille, France'): Paris
+
+------------------------------------------------------------------------------
+The current weather in Paris is: overcast clouds with a temperature of 6.63°C.
+------------------------------------------------------------------------------
+

Configuration

  • Sign up for an API key from a weather service provider (e.g., OpenWeatherMap).
    • You can generate your key here
    • You can call the API as following :
       curl https://api.openweathermap.org/data/2.5/weather?q=Lille&appid=<your_api_key>&units=metric
    +
Steps

Create the Weather Fetching Function

  • Define a function fetch_weather(city: str) -> dict that takes a city name as input and returns the weather data as a dictionary. Use the weather API to fetch the data.

Register the Weather Tool

  • Use the Tool class from LangChain to register the fetch_weather function as a tool.

Set Up the LangChain Components

  • Create a prompt template that asks about the weather in a specified city.
  • Instantiate the ChatMistralAI model with your Mistral API key.
  • Create a chain that combines the prompt template, the chat model, and the registered weather tool.

Handle User Input

  • Implement a function handle_user_input(city) that:
    • Takes user input for the city name.
    • Invokes the chain with the input data.
    • Checks if the response includes tool calls.
    • Extracts the function name and arguments from the tool call and invokes the weather tool if necessary.
    • Returns the weather information or the LLM's response.

Run the Application

  • Prompt the user to enter a city name.
  • Call the handle_user_input function with the provided city name and display the result.
Solution

Google Collab notebook

RAG for services (llama-index)

llama-index is a powerful tool for building and deploying RAG (Retrieval Augmented Generation) applications. It provides a simple and efficient way to integrate LLMs into your applications, allowing you to retrieve relevant information from a large knowledge base and use it to generate responses. RAG is a technique that leverages the power of LLMs to augment human-generated content.

RAG over Unstructured Documents

Unstructured documents are a common source of information for RAG applications. These documents can be in various formats, such as text, PDF, HTML, or images. LlamaIndex provides tools for indexing and querying unstructured documents, enabling you to build powerful RAG applications that can retrieve information from a large corpus of documents.

documents = SimpleDirectoryReader(input_files=[fn]).load_data()
+index = SummaryIndex.from_documents(documents, settings=settings)
+query_engine = index.as_query_engine(response_mode="tree_summarize", llm=llm)
+response = query_engine.query("<your_query_here>")
+

Question Answering (QA) over Structured Data

Structured Data is another common source of information for RAG applications. This data is typically stored in databases or spreadsheets and can be queried using SQL or other query languages. LlamaIndex provides tools for connecting LLMs to databases and querying structured data, allowing you to build RAG applications that can retrieve information from databases.

#The database library used in this example is SQLAlchemy
+sql_database = SQLDatabase(engine, include_tables=["books"])
+query_engine = NLSQLTableQueryEngine(
+    sql_database=sql_database,
+    tables=["books"],
+    llm=llm,
+    embed_model=embed_model,
+)
+
+query_engine.query("Who wrote 'To Kill a Mockingbird'?")
+

🧪 Exercises

Querying on Unstructured Documents

Create a Python application that provide a txt document containings a list of application comments and make sentiment analysis on it with llama-index.

Your customer review txt file :

Review 1: I was very disappointed with the product. It did not meet my expectations.
+Review 2: The service was excellent! I highly recommend this company.
+Review 3: I had a terrible experience. The product was faulty, and the customer support was unhelpful.
+Review 4: I am extremely satisfied with my purchase. The quality is outstanding.
+

Expected Shell Output:

Saving customer_reviews.txt to customer_reviews (4).txt
+User uploaded file "customer_reviews (4).txt" with length 338 bytes
+The customers' experiences with the company and its products vary. Some have had positive experiences, such as excellent service and high-quality products, while others have encountered issues with faulty products and unhelpful customer support.
+
Solution

Google Collab notebook

Querying SQL Databases with Natural Language

Create a Python application that initializes a list of languages and their creators with sqlalchemy and requests the LLM to retrieve the creators of a language. The LLM should be able to understand the context and retrieve the relevant information from the database.

Expected Shell Output:

[
+    {
+        "language_name": "Python",
+        "creator": "Guido van Rossum",
+        "year_created": 1991
+    },
+    {
+        "language_name": "JavaScript",
+        "creator": "Brendan Eich",
+        "year_created": 1995
+    },
+    {
+        "language_name": "Java",
+        "creator": "James Gosling",
+        "year_created": 1995
+    },
+    {
+        "language_name": "C++",
+        "creator": "Bjarne Stroustrup",
+        "year_created": 1985
+    }
+]
+Guido van Rossum created Python in 1991.
+

CloudAI with GCP

GCP is a suite of cloud computing services provided by Google. It includes a wide range of tools and services for building and consuming LLMs, such as Vertex AI, Google Colab, and ML Flow.

Large Consumer-Facing

  • Gemini: Google's large language model (LLM), positioned as a competitor to OpenAI's GPT models. Gemini's capabilities are integrated into various Google products and services, and are also accessible through APIs. Different versions of Gemini (e.g., Gemini Pro, Gemini Ultra) offer varying levels of capability and access. It powers several consumer-facing features across Google's ecosystem.
  • AI Studio: Cloud-based machine learning platform offered by several companies, most notably Google with its Google AI Studio (now Vertex AI Studio). It provides APIs for leading foundation models, and tools to rapidly prototype, easily tune models with your own data, and seamlessly deploy to applications.

Vertex AI

This is the central hub for most Google Cloud's AI/ML services. It integrates and supersedes many previous offerings.

  • Custom Training: Training machine learning models using various algorithms and frameworks (TensorFlow, PyTorch, scikit-learn, XGBoost, etc.). Provides access to managed compute instances (including TPUs).
  • Prediction: Deploying trained models for inference (making predictions). Offers different deployment options based on scale and latency requirements.
  • Pipelines: Creating and managing machine learning workflows, including data preprocessing, model training, evaluation, and deployment, as a series of connected steps.
  • Model Monitoring: Monitoring deployed models for performance degradation and potential issues (drift).
  • Feature Store: Centralized repository for storing, managing, and versioning features used in machine learning models, improving collaboration and reuse.
  • ...

Google Cloud APIs

Pre-trained Models and APIs: Google offers numerous pre-trained models and APIs for various tasks, making it easier to integrate AI into applications without building models from scratch. Examples include:

  • Natural Language: Processing and understanding text (sentiment analysis, entity recognition, etc.).
  • Vision: Analyzing images (object detection, image classification, optical character recognition, etc.).
  • Speech-to-Text: Converting audio to text.
  • Text-to-Speech: Converting text to audio.
  • Translation API: Translating text between languages.
  • ...

Specialized AI Products

Beyond the core platform and APIs, Google offers several specialized AI products:

  • TensorFlow: A popular open-source machine learning framework developed by Google. While not strictly a "Google Cloud" product, it's deeply integrated with their services.
  • Dialogflow: A conversational AI platform for building complex conversational experiences.
  • ...

🧪 Exercises

Collaborative (Hugging Face)

The platform where the machine learning community collaborates on models, datasets, and applications.

Hugging Face is a platform for researchers and developers to share, explore, and build AI models. It provides a centralized repository for models, datasets, and applications, making it easy to find, use, and contribute to the growing ecosystem of AI technologies.

  • Creating/deploy/customize a model
  • Pre-trained model, use behind the APIs, also a ML part, training model generation for use

🧪 Exercise

Manage models (ML Flow)

MLflow provides tools for managing experiments, tracking model versions, deploying models to various environments, and managing models in a central registry. It's designed to be platform-agnostic, meaning it can work with many different cloud providers and even on-premises infrastructure.

🧪 Exercise

  1. Create a model registry in GCP instance
  2. Create a model in the registry
  3. Deploy the model to GCP instance

📖 Further readings

`,127)]))}const r=s(i,[["render",l],["__file","index.html.vue"]]),c=JSON.parse('{"path":"/servicesai/","title":"AI for services","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"Definitions","slug":"definitions","link":"#definitions","children":[{"level":3,"title":"Google Colab","slug":"google-colab","link":"#google-colab","children":[]},{"level":3,"title":"Langchain","slug":"langchain","link":"#langchain","children":[]}]},{"level":2,"title":"Use APIs (Mistral)","slug":"use-apis-mistral","link":"#use-apis-mistral","children":[{"level":3,"title":"Main enpoints","slug":"main-enpoints","link":"#main-enpoints","children":[]},{"level":3,"title":"Json Mode","slug":"json-mode","link":"#json-mode","children":[]},{"level":3,"title":"Structured Outputs","slug":"structured-outputs","link":"#structured-outputs","children":[]},{"level":3,"title":"🧪 Exercises","slug":"🧪-exercises","link":"#🧪-exercises","children":[]}]},{"level":2,"title":"Use Langchain (Mistral)","slug":"use-langchain-mistral","link":"#use-langchain-mistral","children":[{"level":3,"title":"Support","slug":"support","link":"#support","children":[]},{"level":3,"title":"Prompt templating","slug":"prompt-templating","link":"#prompt-templating","children":[]},{"level":3,"title":"Chain","slug":"chain","link":"#chain","children":[]},{"level":3,"title":"🧪 Exercise","slug":"🧪-exercise","link":"#🧪-exercise","children":[]},{"level":3,"title":"Tool/Function calling","slug":"tool-function-calling","link":"#tool-function-calling","children":[]},{"level":3,"title":"🧪 Exercise","slug":"🧪-exercise-1","link":"#🧪-exercise-1","children":[]}]},{"level":2,"title":"RAG for services (llama-index)","slug":"rag-for-services-llama-index","link":"#rag-for-services-llama-index","children":[{"level":3,"title":"RAG over Unstructured Documents","slug":"rag-over-unstructured-documents","link":"#rag-over-unstructured-documents","children":[]},{"level":3,"title":"Question Answering (QA) over Structured Data","slug":"question-answering-qa-over-structured-data","link":"#question-answering-qa-over-structured-data","children":[]},{"level":3,"title":"🧪 Exercises","slug":"🧪-exercises-1","link":"#🧪-exercises-1","children":[]}]},{"level":2,"title":"CloudAI with GCP","slug":"cloudai-with-gcp","link":"#cloudai-with-gcp","children":[{"level":3,"title":"Large Consumer-Facing","slug":"large-consumer-facing","link":"#large-consumer-facing","children":[]},{"level":3,"title":"Vertex AI","slug":"vertex-ai","link":"#vertex-ai","children":[]},{"level":3,"title":"Google Cloud APIs","slug":"google-cloud-apis","link":"#google-cloud-apis","children":[]},{"level":3,"title":"Specialized AI Products","slug":"specialized-ai-products","link":"#specialized-ai-products","children":[]},{"level":3,"title":"🧪 Exercises","slug":"🧪-exercises-2","link":"#🧪-exercises-2","children":[]}]},{"level":2,"title":"Collaborative (Hugging Face)","slug":"collaborative-hugging-face","link":"#collaborative-hugging-face","children":[{"level":3,"title":"🧪 Exercise","slug":"🧪-exercise-2","link":"#🧪-exercise-2","children":[]}]},{"level":2,"title":"Manage models (ML Flow)","slug":"manage-models-ml-flow","link":"#manage-models-ml-flow","children":[]},{"level":2,"title":"🧪 Exercise","slug":"🧪-exercise-3","link":"#🧪-exercise-3","children":[]},{"level":2,"title":"📖 Further readings","slug":"📖-further-readings","link":"#📖-further-readings","children":[]}],"git":{"updatedTime":1734031812000,"contributors":[{"name":"Brah","username":"Brah","email":"brah.gharbi@gmail.com","commits":12,"url":"https://github.com/Brah"},{"name":"Ibrahim Gharbi","username":"Ibrahim Gharbi","email":"brah.gharbi@gmail.com","commits":4,"url":"https://github.com/Ibrahim Gharbi"}]},"filePathRelative":"servicesai/README.md"}');export{r as comp,c as data}; diff --git a/assets/index.html-CE996aio.js b/assets/index.html-CE996aio.js new file mode 100644 index 0000000..cc5264f --- /dev/null +++ b/assets/index.html-CE996aio.js @@ -0,0 +1 @@ +import{_ as t,c as r,a,o as i}from"./app-CpFOj0gG.js";const o="/learning-ai/assets/logo_worldline-t5KadDQv.png",n="/learning-ai/assets/avatar-Bf9zzubu.png",l={};function s(h,e){return i(),r("div",null,e[0]||(e[0]=[a('

Disclamer

LLMs and MMLLMs are constantly evolving, and new applications for developer training are emerging all the time.

AI for devs | Tech at Worldline

Who we are

avatar

We design payments technology that powers the growth of millions​ of businesses around the world. Engineering the next frontiers​ in payments technology​

  • Leader in payment and secured transactions. ​
  • Over 50bn transactions/year​
  • 7000+ engineers​ in over 40 countries​
  • A huge & diverse​ tech-stack

Follow trainers of this Hands-on Lab

avatar
Gharbi Ibrahim
🔗 @__brah​
🔗 cv.gharbi.org

Follow our Tech team

',10)]))}const d=t(l,[["render",s],["__file","index.html.vue"]]),p=JSON.parse(`{"path":"/","title":"AI for devs | Tech at Worldline","lang":"en-US","frontmatter":{"home":true,"heroImage":"./logo.png","heroText":"Hands-on Lab - AI for Devs","tagline":"Discover AI in practice.","actions":[{"text":"Start the Hands-on Lab →","link":"/overview/","type":"primary"}],"features":[{"title":"Let's start","details":"Prerequisites - Definitions - A bit of History - The market"},{"title":"Prompt with AI","details":"Prompt with AI, Prompt engineering, Definition, Chain of Thought, ReAct Prompting, promt for developers, code explanation..."},{"title":"Online with Librechat","details":"History, Favorites, Presets, Preformatted prompts, AI providers, Plugins & mixing, RAG..."},{"title":"Offline with LM Studio","details":"Installation, Model configuration, enable APIs..."},{"title":"Develop with AI","details":"Github Copilot"},{"title":"AI for services","details":"Cloud LLMs - Advanced RAG"}],"footer":"Worldline © 2024 | tech at Worldline"},"headers":[{"level":2,"title":"Who we are","slug":"who-we-are","link":"#who-we-are","children":[{"level":3,"title":"Follow trainers of this Hands-on Lab","slug":"follow-trainers-of-this-hands-on-lab","link":"#follow-trainers-of-this-hands-on-lab","children":[]},{"level":3,"title":"Follow our Tech team","slug":"follow-our-tech-team","link":"#follow-our-tech-team","children":[]}]}],"git":{"updatedTime":1733777350000,"contributors":[{"name":"Brah","username":"Brah","email":"brah.gharbi@gmail.com","commits":2,"url":"https://github.com/Brah"},{"name":"Ibrahim Gharbi","username":"Ibrahim Gharbi","email":"brah.gharbi@gmail.com","commits":2,"url":"https://github.com/Ibrahim Gharbi"}]},"filePathRelative":"index.md"}`);export{d as comp,p as data}; diff --git a/assets/index.html-DWyx6_xv.js b/assets/index.html-DWyx6_xv.js new file mode 100644 index 0000000..d81ca43 --- /dev/null +++ b/assets/index.html-DWyx6_xv.js @@ -0,0 +1 @@ +import{_ as n,c as t,a,b as l,o as i}from"./app-CpFOj0gG.js";const r="/learning-ai/assets/turing_test-DKoxXym2.png",o="/learning-ai/assets/gasparov-DChlTPYb.jpg",s="/learning-ai/assets/jeopardy-CySJ857r.jpg",c="/learning-ai/assets/alphago-D7ibr0g1.png",p="/learning-ai/assets/market-C_dAjFms.png",h="/learning-ai/assets/top50-Du4eFrfo.png",d={};function u(b,e){return i(),t("div",null,e[0]||(e[0]=[a('

Let's start

Warning

LLMs and MMLLMs are constantly evolving, and new applications for developer training are emerging all the time.

Prerequisites

Shell Command Line Skills:

The AI should include support for providing guidance on using shell commands, navigating file systems, and executing command-line operations across different operating systems.

Understanding of HTTP and API:

Proficiency in HTTP protocol, RESTful API concepts, and web service integration is crucial for the AI to provide support on API design, consumption, and troubleshooting common API-related issues.

Basic Cloud Knowledge:

Understanding of cloud computing principles, including basic concepts of cloud infrastructure, services, and deployment models, will enable the AI to offer guidance on cloud-based development, deployment, and best practices.

Warning

Additionnaly, Request Worldline librechat access: send a mail at Generative AI Taskforce email

There is a dedicated sharepoint for basic general assistant quick start at Worldline : LibreChat Worldline guides

Definitions

Large Language Model (LLM)

Large Language Model is a powerful type of AI model trained on massive datasets of text and code. LLMs can understand, generate, and manipulate language. Ex : ChatGPT, Bard, Codex

What are Large Language Models (LLMs)? by Google for developpers

',14),l("iframe",{width:"560",height:"315",src:"https://www.youtube.com/embed/iR2O2GPbB0E",title:"What are Large Language Models (LLMs)? by Google for developpers",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""},null,-1),a('

Multi-Modal LLM (MMLLM)

Multi-Modal Large Language Model is an advanced LLM that can process and generate both text and other data formats like images, audio, or video. Ex: DALL-E 2, Stable Diffusion (for image generation)

Machine Learning (ML)

Machine Learning is a subset of AI that focuses on training algorithms to learn from data and make predictions or decisions without explicit programming. ML powers many AI applications, including image recognition, natural language processing, and predictive analytics.

Deep Learning (DL)

Deep Learning is a type of ML that uses artificial neural networks with multiple layers to learn complex patterns from data.DL has revolutionized fields like computer vision, speech recognition, and machine translation.

Neural Network

A computational model inspired by the structure of the human brain, consisting of interconnected nodes (neurons) organized in layers.Neural networks are the core building blocks of deep learning models.

Natural Language Processing (NLP)

Natural Language Processing is a branch of Artificial Intelligence (AI) that focuses on enabling computers to understand, interpret, and generate human language. It implies :

  • Text Analysis
  • Language Understanding
  • Text Generation
  • Translation
  • Speech Recognition: Powers voice assistants and speech-to-text technologies

Prompt:

A specific set of instructions or questions given to an LLM to guide its response. Well-crafted prompts are crucial for getting accurate and relevant output from LLMs. Ex : "Write a Python function to check if a string is a palindrome."

Token:

The smallest unit of meaning processed by an LLM. Tokens can be words, parts of words, punctuation marks, or special characters. LLMs process text by analyzing sequences of tokens, making it important to understand how they are broken down. Ex : The sentence "I love programming" would be split into the following tokens: "I", "love", "programming".

Temperature:

A parameter in some LLMs that controls the randomness or creativity of the generated text. Adjust temperature based on the desired level of creativity or accuracy in the LLM's output.

  • A higher temperature generate more randomness and unpredictability in the output.
  • A lower temperature generate more predictable and coherent output.

RAG: Retrieval Augmented Generation

RAG (Retrieval Augmented Generation) is a powerful technique in the field of Natural Language Processing (NLP) that combines the best of both worlds: information retrieval and language generation.

  • The system first retrieves relevant information from a vast knowledge base (often a database or a set of documents) based on the user's query or prompt.
  • This retrieved information is then used to augment the language model's input, providing it with more context and specific facts.
  • Finally, the language model uses this augmented input to generate a more comprehensive and informative response, leveraging both its knowledge base and its language generation capabilities.

A bit of History

AI's history has been marked by periods of progress and setbacks. Computing power, data availability, and algorithmic advancements have played crucial roles in AI's evolution. AI is no longer limited to expert systems but encompasses a wide range of techniques and applications.

  • 1950: Alan Turing proposes the "Turing Test" to assess machine intelligence.

During the turing test, the human questioner asks a series of questions to both respondantes. After the specified time, the questionner tries to decide which terminal is operated bu the human respondant and which terminal is operated by the computer.

turing

  • 1956: Dartmouth Conference establishes the field of "Artificial Intelligence".

  • 1959: Arthur Samuel develops a checkers-playing program that learns and improves over time.

  • 1960s: Research focused on logic-based reasoning and early expert systems.

  • 1972: The first expert system, DENDRAL, is developed for identifying organic molecules.

  • 1980s-1990s: Development of new techniques like machine learning and neural networks.

  • 1997: Deep Blue, a chess-playing computer, defeats Garry Kasparov, the world chess champion. gasparov

  • 1990s-2000s: Advances in computing power, data availability, and algorithms as fuel for AI progress.

  • 2010s: Deep learning revolutionizes AI with breakthroughs in image recognition, speech recognition, and natural language processing.

  • 2011: Watson, an IBM supercomputer, wins Jeopardy! against human champions. jeopardy

  • 2016: AlphaGo, a program developed by Google DeepMind, defeats Go champion Lee Sedol. alphago

  • 2022: First release of ChatGPT : AI continues to evolve rapidly, with advancements in areas like autonomous vehicles, robotics, and personalized medicine.

The market

market

top50

🧪 Exercises

1. LLMs and MMLLMs are constantly evolving.


2. Multi-Modal LLMs can process and generate only text data.


3. Which of the following are examples of Machine Learning applications?




4. Deep Learning uses artificial neural networks with multiple layers.


5. Natural Language Processing (NLP) includes which of the following?




6. RAG stands for Retrieval Augmented Generation.


7. LLMs can only generate text and cannot understand it.


8. Which of the following is NOT a type of Machine Learning?




9. Deep Learning models require less data than traditional Machine Learning models.


10. Natural Language Processing can be used for sentiment analysis.


11. Which of the following are common applications of Deep Learning?




12. RAG can improve the accuracy of responses generated by LLMs.


13. Which of the following is a benefit of using Cloud Computing for AI?




14. The Turing Test is designed to evaluate a machine's ability to exhibit intelligent behavior.


15. Multi-Modal LLMs can only process text and images.


Solution

1. LLMs and MMLLMs are constantly evolving.


2. Multi-Modal LLMs can process and generate only text data.


3. Which of the following are examples of Machine Learning applications?




4. Deep Learning uses artificial neural networks with multiple layers.


5. Natural Language Processing (NLP) includes which of the following?




6. RAG stands for Retrieval Augmented Generation.


7. LLMs can only generate text and cannot understand it.


8. Which of the following is NOT a type of Machine Learning?




9. Deep Learning models require less data than traditional Machine Learning models.


10. Natural Language Processing can be used for sentiment analysis.


11. Which of the following are common applications of Deep Learning?




12. RAG can improve the accuracy of responses generated by LLMs.


13. Which of the following is a benefit of using Cloud Computing for AI?




14. The Turing Test is designed to evaluate a machine's ability to exhibit intelligent behavior.


15. Multi-Modal LLMs can only process text and images.


📖 Further readings

',35)]))}const m=n(d,[["render",u],["__file","index.html.vue"]]),f=JSON.parse(`{"path":"/overview/","title":"Let's start","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"Prerequisites","slug":"prerequisites","link":"#prerequisites","children":[]},{"level":2,"title":"Definitions","slug":"definitions","link":"#definitions","children":[{"level":3,"title":"Large Language Model (LLM)","slug":"large-language-model-llm","link":"#large-language-model-llm","children":[]},{"level":3,"title":"Multi-Modal LLM (MMLLM)","slug":"multi-modal-llm-mmllm","link":"#multi-modal-llm-mmllm","children":[]},{"level":3,"title":"Machine Learning (ML)","slug":"machine-learning-ml","link":"#machine-learning-ml","children":[]},{"level":3,"title":"Deep Learning (DL)","slug":"deep-learning-dl","link":"#deep-learning-dl","children":[]},{"level":3,"title":"Neural Network","slug":"neural-network","link":"#neural-network","children":[]}]},{"level":2,"title":"A bit of History","slug":"a-bit-of-history","link":"#a-bit-of-history","children":[]},{"level":2,"title":"The market","slug":"the-market","link":"#the-market","children":[]},{"level":2,"title":"🧪 Exercises","slug":"🧪-exercises","link":"#🧪-exercises","children":[]},{"level":2,"title":"📖 Further readings","slug":"📖-further-readings","link":"#📖-further-readings","children":[]}],"git":{"updatedTime":1732108523000,"contributors":[{"name":"Brah","username":"Brah","email":"brah.gharbi@gmail.com","commits":3,"url":"https://github.com/Brah"},{"name":"Ibrahim Gharbi","username":"Ibrahim Gharbi","email":"brah.gharbi@gmail.com","commits":4,"url":"https://github.com/Ibrahim Gharbi"}]},"filePathRelative":"overview/README.md"}`);export{m as comp,f as data}; diff --git a/assets/index.html-RxFH6ihY.js b/assets/index.html-RxFH6ihY.js new file mode 100644 index 0000000..efe01cd --- /dev/null +++ b/assets/index.html-RxFH6ihY.js @@ -0,0 +1,35 @@ +import{_ as a,c as t,a as n,o as s}from"./app-CpFOj0gG.js";const i="/learning-ai/assets/copilot_completion-CQ-GiHnM.gif",o="/learning-ai/assets/copilot_generation-B6N3Dysv.gif",r="/learning-ai/assets/copilot_assistance-Cotk3f4O.gif",l="/learning-ai/assets/copilot_assistance2-BM88VuDX.gif",p="/learning-ai/assets/copilot_testing-B1NBiis5.gif",c="/learning-ai/assets/copilot_test-CDuoz2Se.gif",d="/learning-ai/assets/copilot_diagram-BlfyAUjS.png",h="/learning-ai/assets/setupTestsCommand-DzBHVnH6.png",u="/learning-ai/assets/setupTests3-CFccRsxU.png",g="/learning-ai/assets/setupTests-BAGOiA2h.png",m="/learning-ai/assets/setupTests2-B4HTXFa5.png",b="/learning-ai/assets/fixTest-kUljAh5E.png",f="/learning-ai/assets/fixTest2-CyC7vvIQ.png",v="/learning-ai/assets/addFeature-aCwmUT5B.png",k="/learning-ai/assets/completeTest-QF26rGYC.png",C="/learning-ai/assets/refactor-BKrWyDxM.png",y="/learning-ai/assets/codeSuggestion-Bvi0fVx8.png",w="/learning-ai/assets/refactor2-CNVrrAH8.png",_="/learning-ai/assets/testSuggestion-C4I28c4d.png",x={};function A(I,e){return s(),t("div",null,e[0]||(e[0]=[n(`

Develop with AI

Github Copilot

Update

Copilot can now use other LLMs than OpenAI, including Google, and Anthropic to provide code suggestions

Github Copilot is a tool that uses the OpenAI language models to provide code suggestions and suggestions for improving code quality.

Alternative code assistance

There is also other producs indegrated to IDEs such as :

Copilot Chat

Copilot Chat is a chat interface that allows you to ask questions and get suggestions for code improvements.

it's available on :

It is a similar approach to chat GPT prompting optimised for the developper experience.

CLI

CLI helps you using you command line interpreter You can use it in the terminal with the following command:

gh auth login
+gh extension install github.copilot
+gh copilot explain "traceroute github.com"
+

Warning

Github CLI is not supported yet with our Worldline account, so you need to use the web version with the link here

IDEs integration (VSCode)

Completion

copilot-assistance

Generation & Refactoring

copilot-completion

Assistance

copilot-assistancecopilot-assistance2

Test generation

copilot-test

Sortcut usage of Copilot chat

You can also use the chat interface to ask questions with shortcuts :

  • /ask
  • /explain
  • /generate
  • /refactor
  • /test
  • /setupTest
  • ...

copilot-test-with-chat

Documentation

Architecture diagram

Mermaid diagrams is a great tool to create diagrams in markdown files online. With copilot you can generate a diagram based on the code you write or chat with copilot to generate the diagram.

Generate a mermaid architecture diagram for a simple retail app with product catalog, product details , buying tunnel , loyalty. Be detailed. I want to make this app with express node JS Rest API server, please provide the diagram for the server side. Suggest technical stack on the diagram , name the component variables. Parentheses are not supported by mermaid.
+

copilot-diagram

graph TD;
+    A[Client Application] -->|HTTP Requests| B[Express.js REST API Server]
+    B -->|Fetch Products| C[Product Controller - productController]
+    B -->|Fetch Product Details| D[Product Details Controller - productDetailsController]
+    B -->|Handle Cart Operations| E[Cart Controller - cartController]
+    B -->|Process Orders| F[Order Controller - orderController]
+    B -->|Manage User Accounts| G[User Controller - userController]
+    B -->|Handle Loyalty Program| H[Loyalty Controller - loyaltyController]
+    
+    subgraph Database
+        I[MongoDB - mongoose]
+    end
+    
+    subgraph Middleware
+        J[Authentication Middleware - passport]
+        K[Error Handling Middleware - errorHandler]
+        L[Logging Middleware - morgan]
+    end
+    
+    B -->|Connects to| I
+    B -->|Uses| J
+    B -->|Uses| K
+    B -->|Uses| L
+    
+    C -->|CRUD Operations| I
+    D -->|CRUD Operations| I
+    E -->|CRUD Operations| I
+    F -->|CRUD Operations| I
+    G -->|CRUD Operations| I
+    H -->|CRUD Operations| I
+

🧪 Exercise

Install Github Copilot on VSCode

  1. Install the Github Copilot extension on your VSCode
  2. Sign in with your Github account, if not already done
  3. Create a new file and start typing a function or a class, to see the suggestions provided by Copilot

Generating unit tests

We"re going to use Github Copilot to generate unit tests for a simple JavaScript project repository.

To run the project and unit tests, you will need NodeJs installed on your machine.

  1. Clone the following repository: github.com/worldline/learning-ai-workspace-js
  2. Open the project in your VSCode
  3. Open Github Copilot Chat by clicking on the Copilot icon in the bottom right corner of your VSCode
  4. Ask Copilot to generate unit tests for the index.js file . You can also try the /setupTests command
  5. Copilot may make several suggestions: choosing a testing framework, adding a test command to package.json, install new dependencies. Accept all its suggestions.
  6. Try to run the generated tests. In case of trouble, use Copilot Chat to ask for help.
Solution

Here we decided to go with supertest framework

Here is an example of how Copilot can help you fix a failing test:

Refactoring

Now we are going to use Copilot to refactor a piece of code in the same project.

  1. Open the index.js file in the project
  2. Ask Copilot to add a feature in the GET /movies endpoint that allows filtering movies by director, based on a director query parameter.
  3. Copilot will generate the code for you. Try to understand the changes it made and run the project to test the new feature.
  4. Ask Copilot to complete the unit test in index.test.js to test getting movies filtered by director. It should generate more unit tests that check against one of the directors in the example data.
  5. Now we're going to refactor the code to extract the filtering logic into a separate function. Select the parts of the code with the .find() and .filter() function calls and ask Copilot to extract them into a new function. Let Copilot suggest a name for these functions
  6. Under the previous generated function, type function filterMoviesByYear(. Wait for Copilot to suggest you the rest of the function signature and function body. Accept the suggestion using the Tab key.
  7. Ask Copilot again to allow filtering movies by a year query parameter. Copilot should use the filterMoviesByYear function you just created to implement this feature.
  8. Open index.test.js. In the GET /movies test block, add a new assertion block by typing it('should return movies filtered by year',. Wait for Copilot to suggest you the rest of the tests. Review code to make sure it uses the ?year query parameter and checks correctly a date from the example data.
  9. Run the tests to make sure everything is working as expected. Use Copilot to ask for help if needed.
Solution

Adding the new feature

Complete the test

Refactor the code to extract logic

Get code suggestion from a function name

Refactor with Copilot Chat the API logic

Get code suggestion from test description

Gihub Spark

GitHub Spark is an AI-powered tool for creating and sharing micro apps (“sparks”), which can be tailored to your exact needs and preferences, and are directly usable from your desktop and mobile devices. Without needing to write or deploy any code.

And it enables this through a combination of three tightly-integrated components:

  • An NL-based editor, which allows easily describing your ideas, and then refining them over time
  • A managed runtime environment, which hosts your sparks, and provides them access to data storage, theming, and LLMs
  • A PWA-enabled dashboard, which lets you manage and launch your sparks from anywhere

🧪 Exercise

📖 Further readings

',50)]))}const S=a(x,[["render",A],["__file","index.html.vue"]]),D=JSON.parse('{"path":"/develop/","title":"Develop with AI","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"Github Copilot","slug":"github-copilot","link":"#github-copilot","children":[{"level":3,"title":"Copilot Chat","slug":"copilot-chat","link":"#copilot-chat","children":[]},{"level":3,"title":"CLI","slug":"cli","link":"#cli","children":[]},{"level":3,"title":"IDEs integration (VSCode)","slug":"ides-integration-vscode","link":"#ides-integration-vscode","children":[]}]},{"level":2,"title":"🧪 Exercise","slug":"🧪-exercise","link":"#🧪-exercise","children":[{"level":3,"title":"Install Github Copilot on VSCode","slug":"install-github-copilot-on-vscode","link":"#install-github-copilot-on-vscode","children":[]},{"level":3,"title":"Generating unit tests","slug":"generating-unit-tests","link":"#generating-unit-tests","children":[]},{"level":3,"title":"Refactoring","slug":"refactoring","link":"#refactoring","children":[]}]},{"level":2,"title":"Gihub Spark","slug":"gihub-spark","link":"#gihub-spark","children":[]},{"level":2,"title":"🧪 Exercise","slug":"🧪-exercise-1","link":"#🧪-exercise-1","children":[]},{"level":2,"title":"📖 Further readings","slug":"📖-further-readings","link":"#📖-further-readings","children":[]}],"git":{"updatedTime":1734079658000,"contributors":[{"name":"Brah","username":"Brah","email":"brah.gharbi@gmail.com","commits":10,"url":"https://github.com/Brah"},{"name":"Sylvain Pollet-Villard","username":"Sylvain Pollet-Villard","email":"sylvain.pollet.villard@gmail.com","commits":1,"url":"https://github.com/Sylvain Pollet-Villard"},{"name":"Ibrahim Gharbi","username":"Ibrahim Gharbi","email":"brah.gharbi@gmail.com","commits":3,"url":"https://github.com/Ibrahim Gharbi"}]},"filePathRelative":"develop/README.md"}');export{S as comp,D as data}; diff --git a/assets/index.html-ePbs5NrP.js b/assets/index.html-ePbs5NrP.js new file mode 100644 index 0000000..01ce242 --- /dev/null +++ b/assets/index.html-ePbs5NrP.js @@ -0,0 +1,91 @@ +import{_ as s,c as a,a as e,o as t}from"./app-CpFOj0gG.js";const o="/learning-ai/assets/cot-CrIEIz7R.png",i="/learning-ai/assets/react-BB8mFVUF.png",p={};function l(r,n){return t(),a("div",null,n[0]||(n[0]=[e(`

Prompt with AI

Prompt engineering

Prompt engineering involves the design and creation of prompts that are used to elicit specific responses or actions from AI models or interactive systems. These prompts are carefully crafted to guide the behavior or generate particular outputs from the AI, such as generating natural language responses, providing recommendations, or completing specific tasks.

Definition

In the context of AI language models, prompt engineering is especially important for shaping the model's behavior and output. By designing prompts effectively, engineers can influence the model's responses and ensure that it generates coherent, relevant, and accurate content.

There are four main areas to consider when writing an effective prompt. You don’t need to use all four, but using a few will help!

  • Persona: Who is the user you're writing for? What are their skills and knowledge?
  • Task: What specific action do you want the user to perform?
  • Context: What information does the user need to know to complete the task?
  • Format: What is the desired output of the task?

Example Prompt:

  • [Persona] You are a Google Cloud program manager.
  • [Task] Draft an executive summary email
  • [Context] to [person description] based on [details about relevant program docs].
  • [Format] Limit to bullet points.

By using "act as," you are establishing a specific context for the language model and guiding it to understand the type of task or request you are making. This helps to set the right expectations and provides the language model with the necessary context to generate a response tailored to the defined role.

"Act as a creative writing assistant and generate a short story based 
+on a prompt about a futuristic world where robots have become sentient."
+

Framework : Chain of Thought

Chain of Thought

Introduced in Wei et al. (2022), chain-of-thought (CoT) prompting enables complex reasoning capabilities through intermediate reasoning steps. You can combine it with few-shot prompting to get better results on more complex tasks that require reasoning before responding. Prompting Guide with CoT

Framework : ReAct Prompting

react

Yao et al., 2022 introduced a framework named ReAct where LLMs are used to generate both reasoning traces and task-specific actions in an interleaved manner.

Generating reasoning traces allow the model to induce, track, and update action plans, and even handle exceptions. The action step allows to interface with and gather information from external sources such as knowledge bases or environments.

The ReAct framework can allow LLMs to interact with external tools to retrieve additional information that leads to more reliable and factual responses. Prompting Guide with CoT

Summarize

Summary is a prompt engineering technique that involves providing a summary of a given document or text. It can helps for summarizing changelogs, articles, or other technical documents.

Help me write an article of this document [Insert or copy paste document text]
+Generate 5 titles out of the following topic….
+Generate a subtitle to catch readers’ attention on the following 
+topic [describe the topic]
+

Write

Write is a prompt engineering technique that involves providing a step-by-step guide or instructions for a given task or process. Its useful for developers to create functional and technical documentations.

Create a template of an email response to customer inquiring about ….
+Create a guide that explains how to use ….
+Write step by step instructions
+

For Developers

Code explanation

Code explanation is a prompt engineering technique that involves providing a detailed explanation of a code snippet or function. This technique is useful for developers who want to understand the inner workings of a codebase or for those who want to document their code.

cf. Preformatted prompts for an example of code explanation

Generation

Act as a code generator. Generate a Python function that takes a list of 
+numbers as input and returns the sum of all the numbers.
+

🧪 Exercises

Basic Function Creation

  • Create a function that calculates the factorial of a number.
  • Handle both positive integers and zero, with error handling for negative inputs.

Expected Output (python)

def factorial(n):
+    if n < 0:
+        raise ValueError("Input must be a non-negative integer.")
+    if n == 0:
+        return 1
+    result = 1
+    for i in range(1, n + 1):
+        result *= i
+    return result
+
Solutions

Persona: Python Developer
Task: Create a function
Context: You need to calculate the factorial of a number.

As a Python Developer, create a function named factorial that takes a single integer input and returns its factorial. The function should handle both positive integers and zero. Include error handling for negative inputs.

API Request Handling

  • Write a function to fetch data from a given URL using the Fetch API.
  • Return the JSON response and handle any potential errors.

Expected Output (javascript)

async function fetchData(url) {
+    try {
+        const response = await fetch(url);
+        if (!response.ok) {
+            throw new Error(\`HTTP error! status: \${response.status}\`);
+        }
+        const data = await response.json();
+        return data;
+    } catch (error) {
+        console.error("Error fetching data:", error);
+    }
+}
+
Solutions

Persona: JavaScript Developer
Task: Write a function to handle API requests
Context: You need to fetch data from a given URL.

As a JavaScript Developer, write a function named fetchData that takes a URL as an argument and fetches data from that URL using the Fetch API. The function should return the JSON response and handle any errors that may occur during the fetch operation.

Class Definition

  • Define a class representing a book with properties for title, author, and publication year.
  • Include a method to display the book's details.

Expected Output (C#)

public class Book
+{
+    public string Title { get; set; }
+    public string Author { get; set; }
+    public int PublicationYear { get; set; }
+
+    public void DisplayDetails()
+    {
+        Console.WriteLine($"Title: {Title}, Author: {Author}, Year: {PublicationYear}");
+    }
+}
+
Solutions

Persona: C# Developer
Task: Define a class
Context: You are creating a representation of a book.

As a C# Developer, create a class named Book that has properties for Title, Author, and PublicationYear. Include a method named DisplayDetails that prints the book's details in a formatted string.

Simple Web Server

  • Set up a basic web server that listens on port 3000.
  • Respond with a simple message when accessed.

Expected Output (Javascript)

const http = require('http');
+
+const server = http.createServer((req, res) => {
+    res.statusCode = 200;
+    res.setHeader('Content-Type', 'text/plain');
+    res.end('Hello, World!\\n');
+});
+
+server.listen(3000, () => {
+    console.log('Server running at http://localhost:3000/');
+});
+
Solutions

Persona: JavaScript Developer
Task: Set up a web server
Context: You need to create a simple server that responds to requests.

As a JavaScript Developer, set up a simple web server using the http module that listens on port 3000 and responds with "Hello, World!" when accessed.

Data Validation

Details:

  • Write a method to validate if a given string is a valid email address.
  • Use a regular expression for the validation.

Expected Output (Ruby)

def valid_email?(email)
+    regex = /\\A[\\w+\\-.]+@[a-z\\d\\-.]+\\.[a-z]+\\z/i
+    !!(email =~ regex)
+end
+
Solutions

Persona: Ruby Developer
Task: Write a validation method
Context: You need to validate email addresses.

As a Ruby Developer, write a method named valid_email? that takes a string as input and returns true if it is a valid email address, and false otherwise. Use a regular expression for validation.

Completion

Code completion is a prompt engineering technique that involves providing a list of possible completions for a given code snippet or function. This technique is useful for developers who want to suggest possible code changes or improvements based on their existing code.

Conversion

Code conversion is a prompt engineering technique that involves providing a conversion of a code snippet or function from one programming language to another. This technique is useful for developers who want to migrate their code from one language to another or for those who want to use a different programming language for their projects.

Review

Code review is a prompt engineering technique that involves providing a code review of a given code snippet or function. This technique is useful for developers who want to review their code for potential issues,bugs, or for those who want to provide feedback on their code.

Fixing

Code fixing is a prompt engineering technique that involves providing a code fix for a given code snippet or function. This technique is useful for developers who want to fix bugs or issues in their code or for those who want to improve the quality of their code.

Help me find mistakes in my code [insert your code]
+Explain what this snippet of code does [insert code snippet]
+What it the correct syntax for a [statement or function] 
+in [programming language]
+How do I fix the following programming language code 
+[program language] code which explain the functioning [Insert code snippet]
+

Refactoring

Code refactor is a prompt engineering technique that involves providing a code refactoring of a given code snippet or function within a specific scope. This technique is useful for developers who want to refactor their code within a specific context or for those who want to improve the readability and maintainability of their code.

Data mocking

Mock data generation is a prompt engineering technique that involves providing a mock data set for a given code snippet or function. This technique is useful for developers who want to test their code with mock data or for those who want to generate test data for their projects. It avoid creating manually fake data for testing.

🧪 Exercises

Mock Data Generation

Create prompts that can generate mock user profiles. The language used is JavaScript.

The profile should include:

  • Name
  • Age
  • Email
  • Address (Street, City, State, Zip Code)
  • Phone Number
Solutions

Mock Data Generation

As a JavaScript Developer, write a function named generateUserProfile that generates a mock user profile with the following details: name, age, email, address, and phone number. The function should return an object containing the user profile details.

function generateUserProfile() {
+    const names = ["Alice", "Bob", "Charlie", "David", "Eva"];
+    const randomName = names[Math.floor(Math.random() * names.length)];
+    const randomAge = Math.floor(Math.random() * 50) + 18; // Age between 18 and 67
+    const randomEmail = \`\${randomName.toLowerCase()}@example.com\`;
+    const randomAddress = {
+        street: \`\${Math.floor(Math.random() * 1000)} Main St\`,
+        city: "Sample City",
+        state: "CA",
+        zip: "12345"
+    };
+    const randomPhone = \`(\${Math.floor(Math.random() * 900) + 100})-\${Math.floor(Math.random() * 900) + 100}-\${Math.floor(Math.random() * 9000) + 1000}\`;
+
+    return {
+        name: randomName,
+        age: randomAge,
+        email: randomEmail,
+        address: randomAddress,
+        phone: randomPhone
+    };
+}
+
+// Example usage
+console.log(generateUserProfile());
+

Go further

Testing

Testing is a prompt engineering technique that involves providing a test case for a given code snippet or function. This technique is useful for developers who want to test their code or for those who want to ensure the correctness of their code.

System design and architecture

System design and architecture is a prompt engineering technique that involves providing a system design or architecture for a given code snippet or function. This technique is useful for developers who want to design their code or for those who want to understand the overall architecture of their projects.

Documentation generation

Documentation generation is a prompt engineering technique that involves providing a documentation for a given code snippet or function. This technique is useful for developers who want to document their code or for those who want to provide documentation for their projects. It can be used to generate documentation in various formats such as Markdown, HTML, or PDF.

Commit Message Generation

Commit message generation is a prompt engineering technique that involves providing a commit message for a given code snippet or function. This technique is useful for developers who want to generate commit messages for their code or for those who want to ensure that their commit messages are clear and concise.

Vulnerability checking

Vulnerability checking is a prompt engineering technique that involves providing a vulnerability check for a given code snippet or function. This technique is useful for developers who want to check for vulnerabilities in their code or for those who want to ensure that their code is secure.

Warning

This prompt is not recommended for production use. It is intended for testing and debugging purposes only and is not a proof of security or safety of your app.

Shell/CLI commands manual

As a developer, you’re not limited to only writing code. LLMs can assist with CLI such as shell commands and version control using Git.

Regular expression explanation

You can understand complex regular expressions and generate ones that match specific patterns in text. This technique is useful for developers who want to write complex regular expressions or for those who want to understand the syntax of regular expressions.

Explain this regular expression in JavaScript: const regex = 
+/^[A-Za-z0–9._%+-]+@[A-Za-z0–9.-]+\\\\.[A-Za-z]{2,}$/;
+
`,94)]))}const u=s(p,[["render",l],["__file","index.html.vue"]]),d=JSON.parse('{"path":"/use/","title":"Prompt with AI","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"Prompt engineering","slug":"prompt-engineering","link":"#prompt-engineering","children":[{"level":3,"title":"Definition","slug":"definition","link":"#definition","children":[]},{"level":3,"title":"Framework : Chain of Thought","slug":"framework-chain-of-thought","link":"#framework-chain-of-thought","children":[]},{"level":3,"title":"Framework : ReAct Prompting","slug":"framework-react-prompting","link":"#framework-react-prompting","children":[]},{"level":3,"title":"Summarize","slug":"summarize","link":"#summarize","children":[]},{"level":3,"title":"Write","slug":"write","link":"#write","children":[]}]},{"level":2,"title":"For Developers","slug":"for-developers","link":"#for-developers","children":[{"level":3,"title":"Code explanation","slug":"code-explanation","link":"#code-explanation","children":[]},{"level":3,"title":"Generation","slug":"generation","link":"#generation","children":[]},{"level":3,"title":"🧪 Exercises","slug":"🧪-exercises","link":"#🧪-exercises","children":[]},{"level":3,"title":"Completion","slug":"completion","link":"#completion","children":[]},{"level":3,"title":"Conversion","slug":"conversion","link":"#conversion","children":[]},{"level":3,"title":"Review","slug":"review","link":"#review","children":[]},{"level":3,"title":"Fixing","slug":"fixing","link":"#fixing","children":[]},{"level":3,"title":"Refactoring","slug":"refactoring","link":"#refactoring","children":[]},{"level":3,"title":"Data mocking","slug":"data-mocking","link":"#data-mocking","children":[]}]},{"level":2,"title":"🧪 Exercises","slug":"🧪-exercises-1","link":"#🧪-exercises-1","children":[]},{"level":2,"title":"Go further","slug":"go-further","link":"#go-further","children":[{"level":3,"title":"Testing","slug":"testing","link":"#testing","children":[]},{"level":3,"title":"System design and architecture","slug":"system-design-and-architecture","link":"#system-design-and-architecture","children":[]},{"level":3,"title":"Documentation generation","slug":"documentation-generation","link":"#documentation-generation","children":[]},{"level":3,"title":"Commit Message Generation","slug":"commit-message-generation","link":"#commit-message-generation","children":[]},{"level":3,"title":"Vulnerability checking","slug":"vulnerability-checking","link":"#vulnerability-checking","children":[]},{"level":3,"title":"Shell/CLI commands manual","slug":"shell-cli-commands-manual","link":"#shell-cli-commands-manual","children":[]},{"level":3,"title":"Regular expression explanation","slug":"regular-expression-explanation","link":"#regular-expression-explanation","children":[]}]}],"git":{"updatedTime":1733779487000,"contributors":[{"name":"Brah","username":"Brah","email":"brah.gharbi@gmail.com","commits":10,"url":"https://github.com/Brah"},{"name":"Ibrahim Gharbi","username":"Ibrahim Gharbi","email":"brah.gharbi@gmail.com","commits":2,"url":"https://github.com/Ibrahim Gharbi"}]},"filePathRelative":"use/README.md"}');export{u as comp,d as data}; diff --git a/assets/jeopardy-CySJ857r.jpg b/assets/jeopardy-CySJ857r.jpg new file mode 100644 index 0000000..e490acb Binary files /dev/null and b/assets/jeopardy-CySJ857r.jpg differ diff --git a/assets/librechat_interface-CYKYbYEb.png b/assets/librechat_interface-CYKYbYEb.png new file mode 100644 index 0000000..21a139b Binary files /dev/null and b/assets/librechat_interface-CYKYbYEb.png differ diff --git a/assets/lmstudio-B6PjFtYg.png b/assets/lmstudio-B6PjFtYg.png new file mode 100644 index 0000000..956e83e Binary files /dev/null and b/assets/lmstudio-B6PjFtYg.png differ diff --git a/assets/logo_worldline-t5KadDQv.png b/assets/logo_worldline-t5KadDQv.png new file mode 100644 index 0000000..6981642 Binary files /dev/null and b/assets/logo_worldline-t5KadDQv.png differ diff --git a/assets/market-C_dAjFms.png b/assets/market-C_dAjFms.png new file mode 100644 index 0000000..3afffea Binary files /dev/null and b/assets/market-C_dAjFms.png differ diff --git a/assets/multi_plugin-TCdQZhy0.png b/assets/multi_plugin-TCdQZhy0.png new file mode 100644 index 0000000..ee1ea76 Binary files /dev/null and b/assets/multi_plugin-TCdQZhy0.png differ diff --git a/assets/prompt-D9YI1LJh.png b/assets/prompt-D9YI1LJh.png new file mode 100644 index 0000000..9ab8068 Binary files /dev/null and b/assets/prompt-D9YI1LJh.png differ diff --git a/assets/react-BB8mFVUF.png b/assets/react-BB8mFVUF.png new file mode 100644 index 0000000..779a411 Binary files /dev/null and b/assets/react-BB8mFVUF.png differ diff --git a/assets/refactor-BKrWyDxM.png b/assets/refactor-BKrWyDxM.png new file mode 100644 index 0000000..9d467e2 Binary files /dev/null and b/assets/refactor-BKrWyDxM.png differ diff --git a/assets/refactor2-CNVrrAH8.png b/assets/refactor2-CNVrrAH8.png new file mode 100644 index 0000000..09e975c Binary files /dev/null and b/assets/refactor2-CNVrrAH8.png differ diff --git a/assets/result_prompt-C4XLLbdh.png b/assets/result_prompt-C4XLLbdh.png new file mode 100644 index 0000000..fa8a390 Binary files /dev/null and b/assets/result_prompt-C4XLLbdh.png differ diff --git a/assets/setupDevtools-7MC2TMWH-BvTCuljQ.js b/assets/setupDevtools-7MC2TMWH-BvTCuljQ.js new file mode 100644 index 0000000..5b2a2cc --- /dev/null +++ b/assets/setupDevtools-7MC2TMWH-BvTCuljQ.js @@ -0,0 +1 @@ +import{s as T,w as E}from"./app-CpFOj0gG.js";var l="org.vuejs.vuepress",v="VuePress",I=v,r=l,N=v,i="client-data",a="Client Data",g=(p,n)=>{T({app:p,id:l,label:v,packageName:"@vuepress/client",homepage:"https://vuepress.vuejs.org",logo:"https://vuepress.vuejs.org/images/hero.png",componentStateTypes:[I]},t=>{const c=Object.entries(n),u=Object.keys(n),d=Object.values(n);t.on.inspectComponent(e=>{e.instanceData.state.push(...c.map(([s,o])=>({type:I,editable:!1,key:s,value:o.value})))}),t.addInspector({id:r,label:N,icon:"article"}),t.on.getInspectorTree(e=>{e.inspectorId===r&&(e.rootNodes=[{id:i,label:a,children:u.map(s=>({id:s,label:s}))}])}),t.on.getInspectorState(e=>{e.inspectorId===r&&(e.nodeId===i&&(e.state={[a]:c.map(([s,o])=>({key:s,value:o.value}))}),u.includes(e.nodeId)&&(e.state={[a]:[{key:e.nodeId,value:n[e.nodeId].value}]}))}),E(d,()=>{t.notifyComponentUpdate(),t.sendInspectorState(r)})})};export{g as setupDevtools}; diff --git a/assets/setupTests-BAGOiA2h.png b/assets/setupTests-BAGOiA2h.png new file mode 100644 index 0000000..a67ffff Binary files /dev/null and b/assets/setupTests-BAGOiA2h.png differ diff --git a/assets/setupTests2-B4HTXFa5.png b/assets/setupTests2-B4HTXFa5.png new file mode 100644 index 0000000..0cb5fe3 Binary files /dev/null and b/assets/setupTests2-B4HTXFa5.png differ diff --git a/assets/setupTests3-CFccRsxU.png b/assets/setupTests3-CFccRsxU.png new file mode 100644 index 0000000..d8bc85d Binary files /dev/null and b/assets/setupTests3-CFccRsxU.png differ diff --git a/assets/setupTestsCommand-DzBHVnH6.png b/assets/setupTestsCommand-DzBHVnH6.png new file mode 100644 index 0000000..b2f7147 Binary files /dev/null and b/assets/setupTestsCommand-DzBHVnH6.png differ diff --git a/assets/style-DxALa4jE.css b/assets/style-DxALa4jE.css new file mode 100644 index 0000000..fb48af8 --- /dev/null +++ b/assets/style-DxALa4jE.css @@ -0,0 +1 @@ +.vp-back-to-top-button{position:fixed!important;inset-inline-end:1rem;bottom:4rem;z-index:100;width:48px;height:48px;padding:12px;border-width:0;border-radius:50%;background:var(--back-to-top-c-bg);color:var(--back-to-top-c-accent-bg);box-shadow:2px 2px 10px 4px var(--back-to-top-c-shadow);cursor:pointer}@media (max-width: 959px){.vp-back-to-top-button{transform:scale(.8);transform-origin:100% 100%}}@media print{.vp-back-to-top-button{display:none}}.vp-back-to-top-button:hover{color:var(--back-to-top-c-accent-hover)}.vp-back-to-top-button .back-to-top-icon{overflow:hidden;width:24px;height:24px;margin:0 auto;background:var(--back-to-top-c-icon);-webkit-mask-image:var(--back-to-top-icon);mask-image:var(--back-to-top-icon);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:cover;mask-size:cover}.vp-scroll-progress{position:absolute;right:-2px;bottom:-2px;width:52px;height:52px}.vp-scroll-progress svg{width:100%;height:100%}.vp-scroll-progress circle{opacity:.9;transform:rotate(-90deg);transform-origin:50% 50%}.back-to-top-enter-active,.back-to-top-leave-active{transition:opacity .3s}.back-to-top-enter-from,.back-to-top-leave-to{opacity:0}:root{--back-to-top-z-index: 5;--back-to-top-icon: url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2048%2048'%3e%3cpath%20fill='none'%20stroke='currentColor'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='4'%20d='M24.008%2014.1V42M12%2026l12-12l12%2012M12%206h24'%20/%3e%3c/svg%3e");--back-to-top-c-bg: var(--vp-c-bg);--back-to-top-c-accent-bg: var(--vp-c-accent-bg);--back-to-top-c-accent-hover: var(--vp-c-accent-hover);--back-to-top-c-shadow: var(--vp-c-shadow);--back-to-top-c-icon: currentcolor}.vp-copy-code-button{position:absolute;top:.5em;right:.5em;z-index:5;width:2.5rem;height:2.5rem;padding:0;border-width:0;border-radius:.5rem;background:#0000;outline:none;opacity:0;cursor:pointer;transition:opacity .4s}@media print{.vp-copy-code-button{display:none}}.vp-copy-code-button:before{content:"";display:inline-block;width:1.25rem;height:1.25rem;padding:.625rem;background:currentcolor;color:var(--copy-code-c-text);font-size:1.25rem;-webkit-mask-image:var(--code-copy-icon);mask-image:var(--code-copy-icon);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.vp-copy-code-button:focus,.vp-copy-code-button.copied{opacity:1}.vp-copy-code-button:hover,.vp-copy-code-button.copied{background:var(--copy-code-c-hover)}.vp-copy-code-button.copied:before{-webkit-mask-image:var(--code-copied-icon);mask-image:var(--code-copied-icon)}.vp-copy-code-button.copied:after{content:attr(data-copied);position:absolute;top:0;right:calc(100% + .25rem);display:block;height:1.25rem;padding:.625rem;border-radius:.5rem;background:var(--copy-code-c-hover);color:var(--copy-code-c-text);font-weight:500;line-height:1.25rem;white-space:nowrap}.no-copy-code .vp-copy-code-button{display:none}body:not(.no-copy-code) div[class*=language-]:hover:before{display:none}body:not(.no-copy-code) div[class*=language-]:hover .vp-copy-code-button{opacity:1}:root{--code-copy-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23808080' stroke-width='2'%3e%3cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2' /%3e%3c/svg%3e");--code-copied-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23808080' stroke-width='2'%3e%3cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9 2 2 4-4' /%3e%3c/svg%3e");--copy-code-c-text: var(--code-c-line-number);--copy-code-c-hover: var(--code-c-highlight-bg)}.hint-container{position:relative;background:var(--hint-c-soft);transition:background var(--vp-t-color),color var(--vp-t-color)}@media print{.hint-container{page-break-inside:avoid}}.hint-container>.hint-container-title{color:var(--hint-c-title)}.hint-container :not(pre)>code{background:var(--hint-c-soft)}.hint-container .hint-container-title{position:relative;margin-block:.75em;font-weight:600;line-height:1.25}.hint-container.important,.hint-container.info,.hint-container.note,.hint-container.tip,.hint-container.warning,.hint-container.caution{margin-block:.75rem;padding:.25em 1em;border-radius:.5em;color:inherit;font-size:var(--hint-font-size)}@media print{.hint-container.important,.hint-container.info,.hint-container.note,.hint-container.tip,.hint-container.warning,.hint-container.caution{border-inline-start-width:.25em;border-inline-start-style:solid}}.hint-container.important .hint-container-title,.hint-container.info .hint-container-title,.hint-container.note .hint-container-title,.hint-container.tip .hint-container-title,.hint-container.warning .hint-container-title,.hint-container.caution .hint-container-title{padding-inline-start:1.75em}@media print{.hint-container.important .hint-container-title,.hint-container.info .hint-container-title,.hint-container.note .hint-container-title,.hint-container.tip .hint-container-title,.hint-container.warning .hint-container-title,.hint-container.caution .hint-container-title{padding-inline-start:0}}.hint-container.important .hint-container-title:before,.hint-container.info .hint-container-title:before,.hint-container.note .hint-container-title:before,.hint-container.tip .hint-container-title:before,.hint-container.warning .hint-container-title:before,.hint-container.caution .hint-container-title:before{content:" ";position:absolute;inset-inline-start:0;top:calc(50% - .6125em);width:1.25em;height:1.25em;font-size:1.25em}@media print{.hint-container.important .hint-container-title:before,.hint-container.info .hint-container-title:before,.hint-container.note .hint-container-title:before,.hint-container.tip .hint-container-title:before,.hint-container.warning .hint-container-title:before,.hint-container.caution .hint-container-title:before{display:none}}.hint-container.important p,.hint-container.info p,.hint-container.note p,.hint-container.tip p,.hint-container.warning p,.hint-container.caution p{line-height:1.5}.hint-container.important a,.hint-container.info a,.hint-container.note a,.hint-container.tip a,.hint-container.warning a,.hint-container.caution a{color:var(--vp-c-accent)}.hint-container.important{--hint-c-accent: var(--important-c-accent);--hint-c-title: var(--important-c-text);--hint-c-soft: var(--important-c-soft)}.hint-container.important>.hint-container-title:before{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M512 981.333a84.992 84.992 0 0 1-84.907-84.906h169.814A84.992 84.992 0 0 1 512 981.333zm384-128H128v-42.666l85.333-85.334v-256A298.325 298.325 0 0 1 448 177.92V128a64 64 0 0 1 128 0v49.92a298.325 298.325 0 0 1 234.667 291.413v256L896 810.667v42.666zm-426.667-256v85.334h85.334v-85.334h-85.334zm0-256V512h85.334V341.333h-85.334z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M512 981.333a84.992 84.992 0 0 1-84.907-84.906h169.814A84.992 84.992 0 0 1 512 981.333zm384-128H128v-42.666l85.333-85.334v-256A298.325 298.325 0 0 1 448 177.92V128a64 64 0 0 1 128 0v49.92a298.325 298.325 0 0 1 234.667 291.413v256L896 810.667v42.666zm-426.667-256v85.334h85.334v-85.334h-85.334zm0-256V512h85.334V341.333h-85.334z'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.hint-container.info{--hint-c-accent: var(--info-c-accent);--hint-c-title: var(--info-c-text);--hint-c-soft: var(--info-c-soft)}.hint-container.info>.hint-container-title:before{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.hint-container.note{--hint-c-accent: var(--note-c-accent);--hint-c-title: var(--note-c-text);--hint-c-soft: var(--note-c-soft)}.hint-container.note>.hint-container-title:before{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.hint-container.tip{--hint-c-accent: var(--tip-c-accent);--hint-c-title: var(--tip-c-text);--hint-c-soft: var(--tip-c-soft)}.hint-container.tip>.hint-container-title:before{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.941 18c-.297-1.273-1.637-2.314-2.187-3a8 8 0 1 1 12.49.002c-.55.685-1.888 1.726-2.185 2.998H7.94zM16 20v1a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-1h8zm-3-9.995V6l-4.5 6.005H11v4l4.5-6H13z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.941 18c-.297-1.273-1.637-2.314-2.187-3a8 8 0 1 1 12.49.002c-.55.685-1.888 1.726-2.185 2.998H7.94zM16 20v1a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-1h8zm-3-9.995V6l-4.5 6.005H11v4l4.5-6H13z'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.hint-container.warning{--hint-c-accent: var(--warning-c-accent);--hint-c-title: var(--warning-c-text);--hint-c-soft: var(--warning-c-soft)}.hint-container.warning>.hint-container-title:before{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M576.286 752.57v-95.425q0-7.031-4.771-11.802t-11.3-4.772h-96.43q-6.528 0-11.3 4.772t-4.77 11.802v95.424q0 7.031 4.77 11.803t11.3 4.77h96.43q6.528 0 11.3-4.77t4.77-11.803zm-1.005-187.836 9.04-230.524q0-6.027-5.022-9.543-6.529-5.524-12.053-5.524H456.754q-5.524 0-12.053 5.524-5.022 3.516-5.022 10.547l8.538 229.52q0 5.023 5.022 8.287t12.053 3.265h92.913q7.032 0 11.803-3.265t5.273-8.287zM568.25 95.65l385.714 707.142q17.578 31.641-1.004 63.282-8.538 14.564-23.354 23.102t-31.892 8.538H126.286q-17.076 0-31.892-8.538T71.04 866.074q-18.582-31.641-1.004-63.282L455.75 95.65q8.538-15.57 23.605-24.61T512 62t32.645 9.04 23.605 24.61z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M576.286 752.57v-95.425q0-7.031-4.771-11.802t-11.3-4.772h-96.43q-6.528 0-11.3 4.772t-4.77 11.802v95.424q0 7.031 4.77 11.803t11.3 4.77h96.43q6.528 0 11.3-4.77t4.77-11.803zm-1.005-187.836 9.04-230.524q0-6.027-5.022-9.543-6.529-5.524-12.053-5.524H456.754q-5.524 0-12.053 5.524-5.022 3.516-5.022 10.547l8.538 229.52q0 5.023 5.022 8.287t12.053 3.265h92.913q7.032 0 11.803-3.265t5.273-8.287zM568.25 95.65l385.714 707.142q17.578 31.641-1.004 63.282-8.538 14.564-23.354 23.102t-31.892 8.538H126.286q-17.076 0-31.892-8.538T71.04 866.074q-18.582-31.641-1.004-63.282L455.75 95.65q8.538-15.57 23.605-24.61T512 62t32.645 9.04 23.605 24.61z'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.hint-container.caution{--hint-c-accent: var(--caution-c-accent);--hint-c-title: var(--caution-c-text);--hint-c-soft: var(--caution-c-soft)}.hint-container.caution>.hint-container-title:before{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2c5.523 0 10 4.477 10 10v3.764a2 2 0 0 1-1.106 1.789L18 19v1a3 3 0 0 1-2.824 2.995L14.95 23a2.5 2.5 0 0 0 .044-.33L15 22.5V22a2 2 0 0 0-1.85-1.995L13 20h-2a2 2 0 0 0-1.995 1.85L9 22v.5c0 .171.017.339.05.5H9a3 3 0 0 1-3-3v-1l-2.894-1.447A2 2 0 0 1 2 15.763V12C2 6.477 6.477 2 12 2zm-4 9a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm8 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2c5.523 0 10 4.477 10 10v3.764a2 2 0 0 1-1.106 1.789L18 19v1a3 3 0 0 1-2.824 2.995L14.95 23a2.5 2.5 0 0 0 .044-.33L15 22.5V22a2 2 0 0 0-1.85-1.995L13 20h-2a2 2 0 0 0-1.995 1.85L9 22v.5c0 .171.017.339.05.5H9a3 3 0 0 1-3-3v-1l-2.894-1.447A2 2 0 0 1 2 15.763V12C2 6.477 6.477 2 12 2zm-4 9a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm8 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4z'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.hint-container.details{position:relative;display:block;margin-block:.75rem;padding:1.25rem 1rem;border-radius:.5rem;background:var(--detail-c-bg);transition:background var(--vp-t-transform),color var(--vp-t-transform)}.hint-container.details h4{margin-top:0}.hint-container.details figure:last-child,.hint-container.details p:last-child{margin-bottom:0;padding-bottom:0}.hint-container.details a{color:var(--vp-c-accent)}.hint-container.details :not(pre)>code{background:var(--detail-c-soft)}.hint-container.details summary{position:relative;margin:-1rem;padding-block:1em;padding-inline:3em 1.5em;list-style:none;font-size:var(--hint-font-size);cursor:pointer}.hint-container.details summary::-webkit-details-marker{display:none}.hint-container.details summary::marker{color:#0000;font-size:0}.hint-container.details summary:before{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;content:" ";position:absolute;inset-inline-start:.8em;top:calc(50% - .5em);width:1em;height:1em;font-size:1.25rem;line-height:normal;transition:color,var(--vp-t-color),transform var(--vp-t-transform);transform:rotate(90deg)}.hint-container.details[open]>summary{margin-bottom:.5em}.hint-container.details[open]>summary:before{transform:rotate(180deg)}:root{--hint-font-size: .92rem;--important-c-accent: var(--vp-c-purple-bg);--important-c-text: var(--vp-c-purple-text);--important-c-soft: var(--vp-c-purple-soft);--info-c-accent: var(--vp-c-blue-bg);--info-c-text: var(--vp-c-blue-text);--info-c-soft: var(--vp-c-blue-soft);--note-c-accent: var(--vp-c-grey-bg);--note-c-text: var(--vp-c-grey-text);--note-c-soft: var(--vp-c-grey-soft);--tip-c-accent: var(--vp-c-green-bg);--tip-c-text: var(--vp-c-green-text);--tip-c-soft: var(--vp-c-green-soft);--warning-c-accent: var(--vp-c-yellow-bg);--warning-c-text: var(--vp-c-yellow-text);--warning-c-soft: var(--vp-c-yellow-soft);--caution-c-accent: var(--vp-c-red-bg);--caution-c-text: var(--vp-c-red-text);--caution-c-soft: var(--vp-c-red-soft);--detail-c-bg: var(--vp-c-control);--detail-c-icon: var(--vp-c-border);--detail-c-soft: var(--vp-c-grey-soft)}:root{--medium-zoom-z-index: 100;--medium-zoom-c-bg: var(--vp-c-bg-elv, #fff);--medium-zoom-opacity: 1}.medium-zoom-overlay{z-index:var(--medium-zoom-z-index);background-color:var(--medium-zoom-c-bg)!important}.medium-zoom-overlay~img{z-index:calc(var(--medium-zoom-z-index) + 1)}.medium-zoom--opened .medium-zoom-overlay{opacity:var(--medium-zoom-opacity)}:root{--nprogress-c: var(--vp-c-accent);--nprogress-z-index: 1031}#nprogress{pointer-events:none}#nprogress .bar{position:fixed;top:0;left:0;z-index:var(--nprogress-z-index);width:100%;height:2px;background:var(--nprogress-c)}:root{--code-padding-x: 1.25rem;--code-padding-y: 1rem;--code-border-radius: 6px;--code-line-height: 1.6;--code-font-size: 14px;--code-font-family: consolas, monaco, "Andale Mono", "Ubuntu Mono", monospace}div[class*=language-]{position:relative;border-radius:var(--code-border-radius);background-color:var(--code-c-bg)}div[class*=language-]:before{content:attr(data-title);position:absolute;top:.8em;right:1em;z-index:3;color:var(--code-c-text);font-size:.75rem}div[class*=language-] pre{position:relative;z-index:1;overflow-x:auto;margin:0;border-radius:var(--code-border-radius);font-size:var(--code-font-size);font-family:var(--code-font-family);line-height:var(--code-line-height)}div[class*=language-] pre code{display:block;box-sizing:border-box;width:-moz-fit-content;width:fit-content;min-width:100%;padding:var(--code-padding-y) var(--code-padding-x);background-color:#0000!important;color:var(--code-c-text);overflow-wrap:unset;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}:root{--code-c-text: #f8f8f2;--code-c-bg: #2e3440;--code-c-highlight-bg: rgb(51.6454545455, 60.5484848485, 78.3545454545);--code-c-line-number: rgba(248, 248, 242, .67)}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#636f88}.token.punctuation{color:#81a1c1}.namespace{opacity:.7}.token.property,.token.tag,.token.constant,.token.symbol,.token.deleted{color:#81a1c1}.token.number{color:#b48ead}.token.boolean{color:#81a1c1}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:#a3be8c}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string,.token.variable{color:#81a1c1}.token.atrule,.token.attr-value,.token.function,.token.class-name{color:#88c0d0}.token.keyword{color:#81a1c1}.token.regex,.token.important{color:#ebcb8b}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}:root{--code-line-number-width: 3rem}div[class*=language-]:not(.line-numbers-mode) .line-numbers{display:none}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;top:0;left:0;width:var(--code-line-number-width);height:100%;border-right:1px solid var(--code-c-highlight-bg, var(--code-c-text));border-radius:var(--code-border-radius) 0 0 var(--code-border-radius);transition:border var(--vp-t-color)}div[class*=language-].line-numbers-mode pre{vertical-align:middle;margin-left:var(--code-line-number-width)}div[class*=language-].line-numbers-mode code{padding-left:1rem}div[class*=language-].line-numbers-mode .line-numbers{counter-reset:line-number;position:absolute;top:0;width:var(--code-line-number-width);padding-top:var(--code-padding-y);color:var(--code-c-line-number, var(--code-c-text));font-size:var(--code-font-size);line-height:var(--code-line-height);text-align:center}div[class*=language-].line-numbers-mode .line-number{position:relative;z-index:3;font-family:var(--code-font-family);-webkit-user-select:none;-moz-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-number:before{content:counter(line-number);counter-increment:line-number}div[class*=language-] .line.highlighted{display:inline-block;width:100%;margin:0 calc(-1*var(--code-padding-x));padding:0 var(--code-padding-x);background-color:var(--code-c-highlight-bg)}div[class*=language-].has-collapsed-lines.collapsed{overflow-y:hidden;height:calc(var(--vp-collapsed-lines)*var(--code-line-height)*var(--code-font-size) + var(--code-padding-y) + 28px)}div[class*=language-].has-collapsed-lines .collapsed-lines{--vp-collapsed-lines-bg: var(--code-c-bg);position:absolute;right:0;bottom:0;left:0;z-index:4;display:flex;align-items:center;justify-content:center;height:28px;background:linear-gradient(to bottom,transparent 0%,var(--vp-collapsed-lines-bg) 55%,var(--vp-collapsed-lines-bg) 100%);cursor:pointer;transition:--vp-collapsed-lines-bg var(--vp-t-color)}div[class*=language-].has-collapsed-lines .collapsed-lines:hover{--vp-collapsed-lines-bg: rgb(0 0 0 / 10%) !important}div[class*=language-].has-collapsed-lines[data-highlighter=shiki] .collapsed-lines{--vp-collapsed-lines-bg: var(--code-c-bg, var(--shiki-light-bg))}[data-theme=dark] div[class*=language-].has-collapsed-lines[data-highlighter=shiki] .collapsed-lines{--vp-collapsed-lines-bg: var(--code-c-bg, var(--shiki-dark-bg))}div[class*=language-].has-collapsed-lines .collapsed-lines:before{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' d='m18 12l-6 6l-6-6m12-6l-6 6l-6-6'/%3E%3C/svg%3E");--vp-collapsed-lines-rotate: 0deg;content:"";display:inline-block;width:24px;height:24px;background-color:var(--code-c-text);-webkit-mask-image:var(--icon);mask-image:var(--icon);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:20px;mask-size:20px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;pointer-events:none;animation:code-collapsed-lines 1.2s infinite alternate-reverse ease-in-out}div[class*=language-].has-collapsed-lines:not(.collapsed) code{padding-bottom:max(var(--code-padding-y),28px)}div[class*=language-].has-collapsed-lines:not(.collapsed) .collapsed-lines:hover{--vp-collapsed-lines-bg: transparent !important}div[class*=language-].has-collapsed-lines:not(.collapsed) .collapsed-lines:before{--vp-collapsed-lines-rotate: 180deg}@property --vp-collapsed-lines-bg{inherits:false;initial-value:#fff;syntax:""}@keyframes code-collapsed-lines{0%{opacity:.3;transform:translateY(-2px) rotate(var(--vp-collapsed-lines-rotate))}to{opacity:1;transform:translateY(2px) rotate(var(--vp-collapsed-lines-rotate))}}.vp-code-tabs-nav{overflow-x:auto;margin:.75rem 0 -.75rem;padding:0;border-radius:6px 6px 0 0;background:var(--code-tabs-c-bg);list-style:none;white-space:nowrap;transition:background var(--vp-t-color)}@media print{.vp-code-tabs-nav{display:none}}@media (max-width: 419px){.vp-code-tabs-nav{margin-inline:-1.5rem;border-radius:0}}.vp-code-tab-nav{position:relative;min-width:3rem;margin:0;padding:6px 12px;border-width:0;border-radius:6px 6px 0 0;background:#0000;color:var(--code-tabs-c-text);font-weight:600;font-size:.875em;line-height:1.4;cursor:pointer;transition:background var(--vp-t-color),color var(--vp-t-color)}.vp-code-tab-nav:hover{background:var(--code-tabs-c-hover)}.vp-code-tab-nav:before,.vp-code-tab-nav:after{content:" ";position:absolute;bottom:0;z-index:1;width:6px;height:6px}.vp-code-tab-nav:before{right:100%}.vp-code-tab-nav:after{left:100%}.vp-code-tab-nav.active{background:var(--code-c-bg, var(--vp-c-bg-alt))}.vp-code-tab-nav.active:before{background:radial-gradient(12px at left top,transparent 50%,var(--code-c-bg) 50%)}.vp-code-tab-nav.active:after{background:radial-gradient(12px at right top,transparent 50%,var(--code-c-bg) 50%)}.vp-code-tab-nav:first-child:before{display:none}[dir=rtl] .vp-code-tab-nav:first-child:before{display:block}[dir=rtl] .vp-code-tab-nav:first-child:after{display:none}.vp-code-tab{display:none}@media print{.vp-code-tab{display:block}}.vp-code-tab.active{display:block}.vp-code-tab div[class*=language-]{border-top-left-radius:0;border-top-right-radius:0}@media (max-width: 419px){.vp-code-tab div[class*=language-]{margin:.75rem -1.5rem;border-radius:0}}.vp-code-tab div[class*=language-].line-numbers-mode:after{border-top-left-radius:0}.vp-code-tab div[class*=language-] pre{border-top-left-radius:0;border-top-right-radius:0}@media (max-width: 419px){.vp-code-tab div[class*=language-] pre{border-radius:0}}@media print{.vp-code-tab div[class*=language-] code{white-space:pre-wrap}}.vp-code-tab-title{display:none;font-weight:500}@media print{.vp-code-tab-title{display:block}}.vp-tabs{margin:1.5rem 0;border:1px solid var(--vp-c-border);border-radius:8px}@media (max-width: 419px){[vp-content]>.vp-tabs{margin-inline:-1.5rem;border:none;border-bottom:1px solid var(--vp-c-border);border-radius:0}}.vp-tabs-nav{overflow-x:auto;margin:0;padding:0;border-radius:.5rem .5rem 0 0;background:var(--tab-c-bg-nav);list-style:none;white-space:nowrap;transition:background var(--vp-t-color)}@media print{.vp-tabs-nav{display:none}}@media (max-width: 419px){.vp-tabs-nav{border-radius:0}}.vp-tab-nav{position:relative;min-width:4rem;margin:0;padding:.5em 1em;border:none;border-radius:.5rem .5rem 0 0;background:#0000;color:var(--tab-c-nav);font-weight:600;font-size:.875em;line-height:1.75;cursor:pointer;transition:background var(--vp-t-color),color var(--vp-t-color)}.vp-tab-nav:hover{background:var(--tab-c-bg-nav-hover)}.vp-tab-nav:before,.vp-tab-nav:after{content:" ";position:absolute;bottom:0;z-index:1;width:8px;height:8px}.vp-tab-nav:before{right:100%}.vp-tab-nav:after{left:100%}.vp-tab-nav.active{background:var(--tab-c-bg)}.vp-tab-nav.active:before{background:radial-gradient(16px at left top,transparent 50%,var(--tab-c-bg) 50%)}.vp-tab-nav.active:after{background:radial-gradient(16px at right top,transparent 50%,var(--tab-c-bg) 50%)}.vp-tab-nav:first-child:before{display:none}.vp-tab{display:none;padding:1rem .75rem;border-radius:0 0 .5rem .5rem;background:var(--tab-c-bg);transition:background var(--vp-t-color)}@media print{.vp-tab{display:block;padding:.5rem}}.vp-tab.active{display:block}.vp-tab:nth-child(n+2) .vp-tab-title{border-top:none}.vp-tab-title{display:none;padding:.25rem 0;border-top:1px solid var(--vp-c-border);font-weight:500}@media print{.vp-tab-title{display:block}}:root{--code-tabs-c-text: var(--code-c-text);--code-tabs-c-bg: var(--code-c-highlight-bg);--code-tabs-c-hover: var(--code-c-bg, var(--vp-c-bg-alt));--tab-c-bg: var(--vp-c-bg);--tab-c-nav: var(--vp-c-text);--tab-c-bg-nav: var(--vp-c-grey-bg);--tab-c-bg-nav-hover: var(--vp-c-control-hover)}.vp-badge{display:inline-block;vertical-align:top;height:18px;padding:0 6px;border-radius:3px;background:var(--vp-c-accent-soft);color:var(--vp-c-accent);font-size:14px;line-height:18px;transition:background var(--vp-t-color),color var(--vp-t-color)}.vp-badge+.vp-badge{margin-inline-start:5px}.vp-badge.tip{background:var(--badge-c-tip-bg);color:var(--badge-c-tip-text)}.vp-badge.warning{background:var(--badge-c-warning-bg);color:var(--badge-c-warning-text)}.vp-badge.danger{background:var(--badge-c-danger-bg);color:var(--badge-c-danger-text)}.vp-badge.important{background:var(--badge-c-important-bg);color:var(--badge-c-important-text)}.vp-badge.info{background:var(--badge-c-info-bg);color:var(--badge-c-info-text)}.vp-badge.note{background:var(--badge-c-note-bg);color:var(--badge-c-note-text)}.vp-features{display:flex;flex-wrap:wrap;place-content:stretch space-between;align-items:flex-start;margin-top:2.5rem;padding:1.2rem 0;border-top:1px solid var(--vp-c-gutter);transition:border-color var(--vp-t-color)}@media (max-width: 719px){.vp-features{flex-direction:column}}.vp-feature{flex-grow:1;flex-basis:30%;max-width:30%}@media (max-width: 719px){.vp-feature{max-width:100%;padding:0 2.5rem}}.vp-feature h2{padding-bottom:0;border-bottom:none;font-weight:500;font-size:1.4rem}@media (max-width: 419px){.vp-feature h2{font-size:1.25rem}}.vp-feature p{color:var(--vp-c-text-mute)}.vp-footer{padding:2.5rem;border-top:1px solid var(--vp-c-border);color:var(--vp-c-text-mute);text-align:center;transition:border-color var(--vp-t-color)}.vp-hero{text-align:center}.vp-hero-image{display:block;max-width:100%;max-height:280px;margin:3rem auto 1.5rem}@media (max-width: 419px){.vp-hero-image{max-height:210px;margin:2rem auto 1.2rem}}#main-title{font-size:3rem}@media (max-width: 419px){#main-title{font-size:2rem}}#main-title,.vp-hero-description,.vp-hero-actions{margin:1.8rem auto}@media (max-width: 419px){#main-title,.vp-hero-description,.vp-hero-actions{margin:1.2rem auto}}.vp-hero-actions{display:flex;flex-wrap:wrap;gap:1rem;justify-content:center}.vp-hero-description{max-width:35rem;color:var(--vp-c-text-mute);font-size:1.6rem;line-height:1.3}@media (max-width: 419px){.vp-hero-description{font-size:1.2rem}}.vp-hero-action-button{display:inline-block;box-sizing:border-box;padding:.8rem 1.6rem;border:2px solid var(--vp-c-accent-bg);border-radius:4px;background-color:var(--vp-c-bg);color:var(--vp-c-accent);font-size:1.2rem;transition:background-color border-color color var(--vp-t-color)}@media (max-width: 419px){.vp-hero-action-button{padding:.6rem 1.2rem;font-size:1rem}}.vp-hero-action-button:hover{color:var(--vp-c-accent-text)}.vp-hero-action-button.primary{background-color:var(--vp-c-accent-bg);color:var(--vp-c-accent-text)}.vp-hero-action-button.primary:hover{border-color:var(--vp-c-accent-hover);background-color:var(--vp-c-accent-hover)}.vp-home{display:block;max-width:var(--homepage-width);margin:0 auto;padding:var(--navbar-height) 2rem 0}@media (max-width: 419px){.vp-home{padding-right:1.5rem;padding-left:1.5rem}}.vp-home .theme-default-content{margin:0;padding:0}.vp-site-logo{vertical-align:top;height:var(--navbar-line-height);margin-right:var(--navbar-padding-v)}.vp-site-name{position:relative;color:var(--vp-c-text);font-weight:600;font-size:1.3rem}@media screen and (max-width: 719px){.vp-site-name{display:block;overflow:hidden;width:calc(100vw - 11rem);text-overflow:ellipsis;white-space:nowrap}}.vp-dropdown-enter-from,.vp-dropdown-leave-to{height:0!important}.vp-navbar-dropdown-wrapper{cursor:pointer}.vp-navbar-dropdown-wrapper:not(.mobile){height:1.8rem}.vp-navbar-dropdown-wrapper:not(.mobile):hover .vp-navbar-dropdown,.vp-navbar-dropdown-wrapper:not(.mobile).open .vp-navbar-dropdown{display:block!important}.vp-navbar-dropdown-wrapper.mobile .vp-navbar-dropdown{overflow:hidden;transition:height .1s ease-out;padding-top:.5rem}.vp-navbar-dropdown-wrapper:not(.mobile) .vp-navbar-dropdown{position:absolute;top:100%;right:0;display:none;overflow-y:auto;box-sizing:border-box;height:auto!important;max-height:calc(100vh - 2.7rem);margin:0;padding:.6rem 0;border:1px solid var(--vp-c-gutter);border-radius:.5rem;background-color:var(--vp-c-bg-elv);text-align:left;white-space:nowrap}.vp-navbar-dropdown-title{display:block;padding:inherit;border:none;background:transparent;color:var(--vp-c-text);font-weight:500;font-size:.9rem;font-family:inherit;line-height:1.4rem;cursor:inherit}.vp-navbar-dropdown-wrapper.mobile .vp-navbar-dropdown-title{display:none}.vp-navbar-dropdown-title:hover{border-color:transparent}.vp-navbar-dropdown-title-mobile{display:none;padding:inherit;border:none;background:transparent;color:var(--vp-c-text);font-weight:600;font-size:inherit;font-family:inherit;line-height:1.4rem;cursor:inherit}.vp-navbar-dropdown-wrapper.mobile .vp-navbar-dropdown-title-mobile{display:block}.vp-navbar-dropdown-title-mobile:hover{color:var(--vp-c-accent)}.vp-navbar-dropdown-item{color:inherit;line-height:1.7rem}.vp-navbar-dropdown-item a{position:relative;display:block;margin-bottom:0;padding:0 1.5rem 0 1.25rem;border-bottom:none;font-weight:400;line-height:1.7rem}.vp-navbar-dropdown-item a:hover,.vp-navbar-dropdown-item a.route-link-active{color:var(--vp-c-accent)}.vp-navbar-dropdown-item a.route-link-active:after{content:"";position:absolute;top:calc(50% - 2px);left:9px;width:0;height:0;border-top:3px solid transparent;border-bottom:3px solid transparent;border-left:5px solid var(--vp-c-accent)}.vp-navbar-dropdown-wrapper.mobile .vp-navbar-dropdown-item>a{font-size:15px;line-height:2rem}.vp-navbar-dropdown-subtitle{margin:.45rem 0 0;padding:1rem 0 .45rem;border-top:1px solid var(--vp-c-gutter);font-size:.9rem}.vp-navbar-dropdown-wrapper.mobile .vp-navbar-dropdown-subtitle{margin-top:0;padding-top:0;padding-bottom:0;border-top:0;font-size:15px;line-height:2rem}.vp-navbar-dropdown-item:first-child .vp-navbar-dropdown-subtitle{margin-top:0;padding-top:0;border-top:0}.vp-navbar-dropdown-subtitle>span{padding:0 1.5rem 0 1.25rem}.vp-navbar-dropdown-subtitle>a{font-weight:inherit}.vp-navbar-dropdown-subtitle>a.route-link-active:after{display:none}.vp-navbar-dropdown-subitem-wrapper{padding:0;list-style:none}.vp-navbar-dropdown-subitem{font-size:.9em}.vp-navbar-dropdown-wrapper.mobile .vp-navbar-dropdown-subitem{padding-left:1rem;font-size:14px}.vp-navbar-items{display:inline-block}@media print{.vp-navbar-items{display:none}}.vp-navbar-items a{display:inline-block;color:inherit;line-height:1.4rem}.vp-navbar-items a:hover,.vp-navbar-items a.route-link-active{color:var(--vp-c-text)}.vp-navbar-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:var(--navbar-line-height)}@media (max-width: 719px){.vp-navbar-item{margin-left:0}}.vp-navbar-item:first-child{margin-left:0}.vp-navbar-item a:hover,.vp-navbar-item a.route-link-active{color:var(--vp-c-accent)}.vp-navbar-item>a:hover,.vp-navbar-item>a.route-link-active{margin-bottom:-2px;border-bottom:2px solid var(--vp-c-accent)}@media (max-width: 719px){.vp-navbar-item>a:hover,.vp-navbar-item>a.route-link-active{margin-bottom:0;border-bottom:none}}.vp-toggle-color-mode-button{display:flex;margin:auto;margin-left:1rem;border:0;background:none;color:var(--vp-c-text);opacity:.8;cursor:pointer}@media print{.vp-toggle-color-mode-button{display:none}}.vp-toggle-color-mode-button:hover{opacity:1}.vp-toggle-color-mode-button .light-icon,.vp-toggle-color-mode-button .dark-icon{width:1.25rem;height:1.25rem}.vp-toggle-sidebar-button{position:absolute;top:.6rem;left:1rem;display:none;padding:.6rem;cursor:pointer}@media screen and (max-width: 719px){.vp-toggle-sidebar-button{display:block}}.vp-toggle-sidebar-button .icon{display:flex;flex-direction:column;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;cursor:inherit}.vp-toggle-sidebar-button .icon span{display:inline-block;width:100%;height:2px;border-radius:2px;background-color:var(--vp-c-text);transition:transform var(--vp-t-transform)}.vp-toggle-sidebar-button .icon span:nth-child(2){margin:6px 0}.vp-theme-container.sidebar-open .vp-toggle-sidebar-button .icon span:nth-child(1){transform:rotate(45deg) translate3d(5.5px,5.5px,0)}.vp-theme-container.sidebar-open .vp-toggle-sidebar-button .icon span:nth-child(2){transform:scale3d(0,1,1)}.vp-theme-container.sidebar-open .vp-toggle-sidebar-button .icon span:nth-child(3){transform:rotate(-45deg) translate3d(6px,-6px,0)}.vp-theme-container.sidebar-open .vp-toggle-sidebar-button .icon span:nth-child(1),.vp-theme-container.sidebar-open .vp-toggle-sidebar-button .icon span:nth-child(3){transform-origin:center}.vp-navbar{--navbar-line-height: calc( var(--navbar-height) - 2 * var(--navbar-padding-v) );position:fixed;top:0;right:0;left:0;z-index:20;box-sizing:border-box;height:var(--navbar-height);padding:var(--navbar-padding-v) var(--navbar-padding-h);border-bottom:1px solid var(--vp-c-border);background-color:var(--vp-navbar-c-bg);line-height:var(--navbar-line-height);transition:background-color var(--vp-t-color),border-color var(--vp-t-color)}@media screen and (max-width: 719px){.vp-navbar{padding-left:4rem}}.vp-navbar-items-wrapper{position:absolute;top:var(--navbar-padding-v);right:var(--navbar-padding-h);display:flex;box-sizing:border-box;height:var(--navbar-line-height);padding-left:var(--navbar-padding-h);font-size:.9rem;white-space:nowrap}.vp-page-meta{max-width:var(--content-width);margin:0 auto;padding:2rem 2.5rem}@media (max-width: 959px){.vp-page-meta{padding:2rem}}@media (max-width: 419px){.vp-page-meta{padding:1.5rem}}.vp-page-meta{display:flex;flex-wrap:wrap;justify-content:space-between;overflow:auto;padding-top:.75rem;padding-bottom:.75rem}@media print{.vp-page-meta{margin:0!important;padding-right:0!important;padding-left:0!important}}@media (max-width: 719px){.vp-page-meta{display:block}}.vp-page-meta .vp-meta-item{flex-grow:1}.vp-page-meta .vp-meta-item .vp-meta-label{font-weight:500}.vp-page-meta .vp-meta-item .vp-meta-label:not(a){color:var(--vp-c-text-mute)}.vp-page-meta .vp-meta-item .vp-meta-info{color:var(--vp-c-text-mute);font-weight:400}.vp-page-meta .git-info{text-align:end}.vp-page-meta .edit-link{margin-top:.25rem;margin-right:.5rem;margin-bottom:.25rem;font-size:14px}@media print{.vp-page-meta .edit-link{display:none}}.vp-page-meta .edit-link .edit-icon{position:relative;bottom:-.125em;width:1em;height:1em;margin-right:.25em}.vp-page-meta .last-updated,.vp-page-meta .contributors{margin-top:.25rem;margin-bottom:.25rem;font-size:14px}@media (max-width: 719px){.vp-page-meta .last-updated,.vp-page-meta .contributors{font-size:13px;text-align:start}}.vp-page-nav{display:flex;flex-wrap:wrap;max-width:var(--content-width, 740px);min-height:2rem;margin-top:0;margin-right:auto;margin-left:auto;padding:1rem 2rem 0;border-top:1px solid var(--vp-c-gutter);transition:border-top var(--vp-t-color)}@media (max-width: 959px){.vp-page-nav{padding-right:1rem;padding-left:1rem}}@media print{.vp-page-nav{display:none}}.vp-page-nav .route-link{display:inline-block;flex-grow:1;margin:.25rem;padding:.25rem .5rem;border:1px solid var(--vp-c-gutter);border-radius:.25rem}.vp-page-nav .route-link:hover{background:var(--vp-c-control)}.vp-page-nav .route-link .hint{color:var(--vp-c-text-mute);font-size:.875rem;line-height:2}.vp-page-nav .prev{text-align:start}.vp-page-nav .next{text-align:end}.vp-page{display:block;padding-top:var(--navbar-height);padding-bottom:2rem;padding-left:var(--sidebar-width)}@media (max-width: 959px){.vp-page{padding-left:var(--sidebar-width-mobile)}}@media (max-width: 719px){.vp-page{padding-left:0}}.vp-page .theme-default-content{max-width:var(--content-width);margin:0 auto;padding:2rem 2.5rem}@media (max-width: 959px){.vp-page .theme-default-content{padding:2rem}}@media (max-width: 419px){.vp-page .theme-default-content{padding:1.5rem}}.vp-page .theme-default-content{padding-top:0}.vp-sidebar-item{border-left:.25rem solid transparent;color:var(--vp-c-text);cursor:default}.vp-sidebar-item:focus-visible{outline-width:1px;outline-offset:-1px}.vp-sidebar-item.vp-sidebar-heading{box-sizing:border-box;width:100%;margin:0;padding:.35rem 1.5rem .35rem 1.25rem;font-weight:700;font-size:1.1em;transition:color .15s ease}.vp-sidebar-item.vp-sidebar-heading+.vp-sidebar-children{overflow:hidden;transition:height .1s ease-out;margin-bottom:.75rem}.vp-sidebar-item.collapsible{cursor:pointer}.vp-sidebar-item:not(.vp-sidebar-heading){display:inline-block;box-sizing:border-box;width:100%;margin:0;padding:.35rem 1rem .35rem 2rem;font-weight:400;font-size:1em;line-height:1.4}.vp-sidebar-item:not(.vp-sidebar-heading)+.vp-sidebar-children{padding-left:1rem;font-size:.95em}.vp-sidebar-children .vp-sidebar-children .vp-sidebar-item:not(.vp-sidebar-heading){padding:.25rem 1rem .25rem 1.75rem}.vp-sidebar-children .vp-sidebar-children .vp-sidebar-item:not(.vp-sidebar-heading).active{border-left-color:transparent;font-weight:500}a.vp-sidebar-heading+.vp-sidebar-children .vp-sidebar-item:not(.vp-sidebar-heading).active{border-left-color:transparent}.vp-sidebar-item.active:not(p.vp-sidebar-heading){border-left-color:var(--vp-c-accent);color:var(--vp-c-accent);font-weight:600}a.vp-sidebar-item{cursor:pointer}a.vp-sidebar-item:hover{color:var(--vp-c-accent)}.vp-sidebar-items{margin:0;padding:1.5rem 0;list-style-type:none}@media (max-width: 719px){.vp-sidebar-items{padding:1rem 0}}.vp-sidebar-items ul{margin:0;padding:0;list-style-type:none}.vp-sidebar-items a{display:inline-block}.vp-sidebar{position:fixed;top:var(--navbar-height);bottom:0;left:0;z-index:10;overflow-y:auto;box-sizing:border-box;width:var(--sidebar-width);margin:0;border-right:1px solid var(--vp-c-border);background-color:var(--vp-sidebar-c-bg);font-size:16px;transition:transform var(--vp-t-transform),background-color var(--vp-t-color),border-color var(--vp-t-color);scrollbar-color:var(--vp-c-accent-bg) var(--vp-c-gutter);scrollbar-width:thin}@media (max-width: 959px){.vp-sidebar{width:var(--sidebar-width-mobile);font-size:15px}}@media (max-width: 719px){.vp-sidebar{top:0;padding-top:var(--navbar-height);transform:translate(-100%)}}.vp-sidebar::-webkit-scrollbar{width:7px}.vp-sidebar::-webkit-scrollbar-track{background-color:var(--vp-c-gutter)}.vp-sidebar::-webkit-scrollbar-thumb{background-color:var(--vp-c-accent-bg)}.vp-sidebar .vp-navbar-items{display:none;padding:.5rem 0 .75rem;border-bottom:1px solid var(--vp-c-gutter);transition:border-color var(--vp-t-color)}@media (max-width: 719px){.vp-sidebar .vp-navbar-items{display:block}.vp-sidebar .vp-navbar-items .vp-navbar-dropdown-item a.route-link-active:after{top:calc(1rem - 2px)}}.vp-sidebar .vp-navbar-items ul{margin:0;padding:0;list-style-type:none}.vp-sidebar .vp-navbar-items a{font-weight:600}.vp-sidebar .vp-navbar-item{display:block;padding:.5rem 0 .5rem 1.5rem;font-size:1.1em;line-height:1.25rem}.vp-sidebar-mask{position:fixed;top:0;left:0;z-index:9;display:none;width:100vw;height:100vh}.vp-theme-container.no-navbar .vp-sidebar{top:0}@media (max-width: 719px){.vp-theme-container.no-navbar .vp-sidebar{padding-top:0}}.vp-theme-container.no-navbar .vp-page{padding-top:0}.vp-theme-container.no-navbar .theme-default-content h1,.vp-theme-container.no-navbar .theme-default-content h2,.vp-theme-container.no-navbar .theme-default-content h3,.vp-theme-container.no-navbar .theme-default-content h4,.vp-theme-container.no-navbar .theme-default-content h5,.vp-theme-container.no-navbar .theme-default-content h6{margin-top:1.5rem;padding-top:0}.vp-theme-container.no-sidebar .vp-sidebar{display:none}@media (max-width: 719px){.vp-theme-container.no-sidebar .vp-sidebar{display:block}}.vp-theme-container.no-sidebar .vp-page{padding-left:0}@media (max-width: 719px){.vp-theme-container.sidebar-open .vp-sidebar{transform:translate(0)}.vp-theme-container.sidebar-open .vp-sidebar-mask{display:block}}.fade-slide-y-enter-active{transition:all .2s ease}.fade-slide-y-leave-active{transition:all .2s cubic-bezier(1,.5,.8,1)}.fade-slide-y-enter-from,.fade-slide-y-leave-to{opacity:0;transform:translateY(10px)}.vp-theme-container[data-v-67c08c1d]{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width: 959px){.vp-theme-container[data-v-67c08c1d]{padding:2rem}}:root{--vp-c-white: #fff;--vp-c-black: #000;--vp-c-grey-text: #656869;--vp-c-grey-hover: #e4e4e9;--vp-c-grey-bg: #ebebef;--vp-c-grey-soft: rgb(142 150 170 / 14%);--vp-c-indigo-text: #3451b2;--vp-c-indigo-hover: #3a5ccc;--vp-c-indigo-bg: #5672cd;--vp-c-indigo-soft: rgb(100 108 255 / 14%);--vp-c-purple-text: #6f42c1;--vp-c-purple-hover: #7e4cc9;--vp-c-purple-bg: #8e5cd9;--vp-c-purple-soft: rgb(159 122 234 / 14%);--vp-c-blue-text: #2888a7;--vp-c-blue-hover: #2d98ba;--vp-c-blue-bg: #2fa1c5;--vp-c-blue-soft: rgb(27 178 229 / 14%);--vp-c-green-text: #18794e;--vp-c-green-hover: #299764;--vp-c-green-bg: #30a46c;--vp-c-green-soft: rgb(16 185 129 / 14%);--vp-c-yellow-text: #915930;--vp-c-yellow-hover: #946300;--vp-c-yellow-bg: #c28100;--vp-c-yellow-soft: rgb(234 179 8 / 14%);--vp-c-red-text: #b8272c;--vp-c-red-hover: #d5393e;--vp-c-red-bg: #e0575b;--vp-c-red-soft: rgb(244 63 94 / 14%)}[data-theme=dark]{--vp-c-white: #000;--vp-c-black: #fff;--vp-c-grey-text: #939499;--vp-c-grey-hover: #414853;--vp-c-grey-bg: #32363f;--vp-c-grey-soft: rgb(101 117 133 / 16%);--vp-c-indigo-text: #a8b1ff;--vp-c-indigo-hover: #5c73e7;--vp-c-indigo-bg: #3e63dd;--vp-c-indigo-soft: rgb(100 108 255 / 16%);--vp-c-blue-text: #c9e8f2;--vp-c-blue-hover: #a6d9ea;--vp-c-blue-bg: #2785a3;--vp-c-blue-soft: rgb(27 178 229 / 16%);--vp-c-purple-text: #c8abfa;--vp-c-purple-hover: #a879e6;--vp-c-purple-bg: #8e5cd9;--vp-c-purple-soft: rgb(159 122 234 / 16%);--vp-c-green-text: #3dd68c;--vp-c-green-hover: #30a46c;--vp-c-green-bg: #298459;--vp-c-green-soft: rgb(16 185 129 / 16%);--vp-c-yellow-text: #f9b44e;--vp-c-yellow-hover: #da8b17;--vp-c-yellow-bg: #a46a0a;--vp-c-yellow-soft: rgb(234 179 8 / 16%);--vp-c-red-text: #f66f81;--vp-c-red-hover: #f14158;--vp-c-red-bg: #b62a3c;--vp-c-red-soft: rgb(244 63 94 / 16%)}:root{color-scheme:light}[data-theme=dark]{color-scheme:dark}html,body{background:var(--vp-c-bg, #fff);accent-color:var(--vp-c-accent, #299764);transition:background-color var(--vp-t-color)}html{font-size:16px;font-display:optional;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none}@media print{html{font-size:12pt}}html[data-theme=dark]{color-scheme:dark}body{min-height:100vh;margin:0;padding:0;color:var(--vp-c-text, rgb(60, 60, 67));font-size:1rem;font-synthesis:style}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25;overflow-wrap:break-word}h1:focus-visible,h2:focus-visible,h3:focus-visible,h4:focus-visible,h5:focus-visible,h6:focus-visible{outline:none}h1{font-size:2rem}h2{padding-bottom:.3rem;border-bottom:1px solid var(--vp-c-gutter, #e2e2e3);font-size:1.65rem;transition:border-color var(--vp-t-color)}h3{font-size:1.35rem}h4{font-size:1.15rem}h5{font-size:1.05rem}h6{font-size:1rem}p,ul,ol{line-height:1.6;overflow-wrap:break-word}@media print{p,ul,ol{line-height:1.5}}ul,ol{padding-inline-start:1.2em}a{color:var(--vp-c-accent, #299764);font-weight:500;text-decoration:none;overflow-wrap:break-word}a.header-anchor{position:relative;color:inherit;text-decoration:none}a.header-anchor:before{content:"¶";position:absolute;top:.4167em;left:-.75em;display:none;color:var(--vp-c-accent, #299764);font-size:.75em}[dir=rtl] a.header-anchor:before{right:-.75em}a.header-anchor:hover:before{display:block}a.header-anchor:focus-visible{outline:none}a.header-anchor:focus-visible:before{display:block;outline:auto}strong{font-weight:600}blockquote{margin:1rem 0;padding:.25rem 0 .25rem 1rem;border-inline-start:.2rem solid var(--vp-c-border-hard, #b8b8ba);color:var(--vp-c-text-mute, rgba(60, 60, 67, .78));font-size:1rem;overflow-wrap:break-word;transition:border-color var(--vp-t-color),color var(--vp-t-color)}blockquote>p{margin:0}hr{border:0;border-bottom:1px solid var(--vp-c-gutter, #e2e2e3);transition:border-color var(--vp-t-color)}:not(pre)>code{margin:0;padding:3px 6px;border-radius:4px;background:var(--vp-c-grey-soft, rgba(142, 150, 170, .14));font-size:.875em;overflow-wrap:break-word;transition:background-color var(--vp-t-color),color var(--vp-t-color)}p a code{color:var(--vp-c-accent, #299764);font-weight:400}table code{padding:.1rem .4rem}kbd{display:inline-block;min-width:1em;margin-inline:.125rem;padding:.25em;border:1px solid var(--vp-c-border, #c2c2c4);border-radius:.25em;box-shadow:1px 1px 4px 0 var(--vp-c-shadow, rgba(0, 0, 0, .15));line-height:1;letter-spacing:-.1em;text-align:center}table{display:block;overflow-x:auto;margin:1rem 0;border-collapse:collapse}tbody tr:nth-child(odd){background:var(--vp-c-bg-alt, #f6f8fa);transition:background-color var(--vp-t-color)}th,td{padding:.6em 1em;border:1px solid var(--vp-c-border-hard, #d1d4d7);transition:border-color var(--vp-t-color)}pre{text-align:left;direction:ltr;white-space:pre;word-spacing:normal;word-wrap:normal;word-break:normal;overflow-wrap:unset;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}@media print{pre{white-space:pre-wrap}}pre code{padding:0;border-radius:0}@page{margin:2cm;font-size:12pt;size:a4}@media print{*,:after,:before{box-shadow:none!important;text-shadow:none!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}a{color:inherit;font-weight:inherit!important;font-size:inherit!important;text-decoration:underline}a.header-anchor{text-decoration:none}abbr[title]:after{content:" (" attr(title) ")"}pre{border:1px solid #eee;white-space:pre-wrap!important}pre>code{white-space:pre-wrap!important}blockquote{border-inline-start:.2rem solid #ddd;color:inherit}blockquote,pre{orphans:5;widows:5}img,tr,canvas{page-break-inside:avoid}}@media (prefers-reduced-motion: reduce){*,:before,:after{background-attachment:initial!important;scroll-behavior:auto!important;transition-delay:0s!important;transition-duration:0s!important;animation-duration:1ms!important;animation-delay:-1ms!important;animation-iteration-count:1!important}}:root{--vp-c-accent: #299764;--vp-c-accent-bg: #3eaf7c;--vp-c-accent-hover: #4abf8a;--vp-c-accent-text: var(--vp-c-white);--vp-c-accent-soft: rgb(16 185 129 / 14%);--vp-c-bg: #fff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #fff;--vp-c-text: rgb(60 60 67);--vp-c-text-mute: rgb(60 60 67 / 78%);--vp-c-text-subtle: rgb(60 60 67 / 56%);--vp-c-gutter: #e2e2e3;--vp-c-border: #c2c2c4;--vp-c-border-hard: #b8b8ba;--vp-c-shadow: rgb(0 0 0 / 15%);--vp-c-control: rgb(142 150 170 / 10%);--vp-c-control-hover: rgb(142 150 170 / 16%);--vp-c-control-disabled: #eaeaea;--vp-navbar-c-bg: var(--vp-c-bg);--vp-sidebar-c-bg: var(--vp-c-bg);--vp-c-code-tab-title: var(--code-c-text, rgb(255 255 255 / 90%));--vp-c-code-tab-bg: var(--code-bg-color, var(--code-c-bg));--vp-c-code-tab-active: var(--vp-c-accent);--badge-c-tip-text: var(--vp-c-green-text);--badge-c-tip-bg: var(--vp-c-green-soft);--badge-c-warning-text: var(--vp-c-yellow-text);--badge-c-warning-bg: var(--vp-c-yellow-soft);--badge-c-danger-text: var(--vp-c-red-text);--badge-c-danger-bg: var(--vp-c-red-soft);--badge-c-important-text: var(--vp-c-purple-text);--badge-c-important-bg: var(--vp-c-purple-soft);--badge-c-info-text: var(--vp-c-indigo-text);--badge-c-info-bg: var(--vp-c-indigo-soft);--badge-c-note-text: var(--vp-c-grey-text);--badge-c-note-bg: var(--vp-c-grey-soft);--font-family: -apple-system, "BlinkMacSystemFont", "Segoe UI", roboto, oxygen, ubuntu, cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--navbar-height: 3.6rem;--navbar-padding-v: .7rem;--navbar-padding-h: 1.5rem;--sidebar-width: 20rem;--sidebar-width-mobile: calc(var(--sidebar-width) * .82);--content-width: 740px;--homepage-width: 960px;--header-offset: var(--navbar-height);--vp-t-color: .3s ease;--vp-t-transform: .3s ease;--external-link-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M0 0h24v24H0V0z' fill='none'/%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z'/%3E%3C/svg%3E");--external-link-c-icon: var(--vp-c-text-mute)}[data-theme=dark]{--vp-c-accent: #3dd68c;--vp-c-accent-bg: #3aa675;--vp-c-accent-hover: #349469;--vp-c-accent-soft: rgb(16 185 129 / 16%);--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-text: rgb(235 235 245 / 86%);--vp-c-text-mute: rgb(235 235 245 / 60%);--vp-c-text-subtle: rgb(235 235 245 / 38%);--vp-c-gutter: #000;--vp-c-border: #3c3f44;--vp-c-border-hard: #45484e;--vp-c-shadow: rgb(0 0 0 / 30%);--vp-c-control: rgb(101 117 133 / 12%);--vp-c-control-hover: rgb(101 117 133 / 18%);--vp-c-control-disabled: #363636}body{font-family:var(--font-family)}code{font-family:var(--code-font-family)}.theme-default-content h1,.theme-default-content h2,.theme-default-content h3,.theme-default-content h4,.theme-default-content h5,.theme-default-content h6{margin-top:calc(.5rem - var(--header-offset));margin-bottom:0;padding-top:calc(1rem + var(--header-offset))}.theme-default-content h1:first-child,.theme-default-content h2:first-child,.theme-default-content h3:first-child,.theme-default-content h4:first-child,.theme-default-content h5:first-child,.theme-default-content h6:first-child{margin-bottom:1rem}.theme-default-content h1:first-child+p,.theme-default-content h1:first-child+pre,.theme-default-content h1:first-child+.custom-container,.theme-default-content h2:first-child+p,.theme-default-content h2:first-child+pre,.theme-default-content h2:first-child+.custom-container,.theme-default-content h3:first-child+p,.theme-default-content h3:first-child+pre,.theme-default-content h3:first-child+.custom-container,.theme-default-content h4:first-child+p,.theme-default-content h4:first-child+pre,.theme-default-content h4:first-child+.custom-container,.theme-default-content h5:first-child+p,.theme-default-content h5:first-child+pre,.theme-default-content h5:first-child+.custom-container,.theme-default-content h6:first-child+p,.theme-default-content h6:first-child+pre,.theme-default-content h6:first-child+.custom-container{margin-top:2rem}@media (max-width: 419px){.theme-default-content h1{font-size:1.9rem}}.theme-default-content a:not(.header-anchor){text-decoration:underline}.theme-default-content img{max-width:100%}div[class*=language-]{margin:.75rem 0;transition:background-color var(--vp-t-color),color var(--vp-t-color)}@media (max-width: 419px){div[class*=language-]{--code-border-radius: 0;margin:.75rem -1.5rem}}div[class*=language-] .line.diff,div[class*=language-] .line.highlighted{transition:background-color var(--vp-t-color)}.table-of-contents .vp-badge{vertical-align:middle}.arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat;line-height:normal;transition:all .3s}[data-theme=dark] .arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.arrow.down{transform:rotate(180deg)}.arrow.right{transform:rotate(90deg)}.arrow.left{transform:rotate(-90deg)}.vp-external-link-icon:after{content:"";display:inline-block;flex-shrink:0;width:11px;height:11px;margin-top:-1px;margin-left:4px;background:var(--external-link-c-icon);-webkit-mask-image:var(--external-link-icon);mask-image:var(--external-link-icon)}.external-link-icon .external-link:after{content:"";display:inline-block;flex-shrink:0;width:11px;height:11px;margin-top:-1px;margin-left:4px;background:var(--external-link-c-icon);-webkit-mask-image:var(--external-link-icon);mask-image:var(--external-link-icon)}.external-link-icon .theme-default-content a[href*="://"]:not(.no-external-link-icon):after,.external-link-icon .theme-default-content a[target=_blank]:not(.no-external-link-icon):after{content:"";display:inline-block;flex-shrink:0;width:11px;height:11px;margin-top:-1px;margin-left:4px;background:var(--external-link-c-icon);-webkit-mask-image:var(--external-link-icon);mask-image:var(--external-link-icon)}@media screen and (max-width: 719px){.vp-hide-mobile{display:none}}.vp-comment{max-width:var(--content-width);margin:0 auto;padding:2rem 2.5rem}@media (max-width: 959px){.vp-comment{padding:2rem}}@media (max-width: 419px){.vp-comment{padding:1.5rem}}.vp-navbar .DocSearch{transition:background-color var(--vp-t-color)}.vp-navbar .search-box{vertical-align:top;flex:0 0 auto}@media screen and (max-width: 719px){.hint-container{margin-inline:-.75rem}}:root{--vp-c-accent: #356cae;--vp-c-accent-bg: #356cae;--vp-c-accent-hover: #164177;--vp-c-accent-text: var(--vp-c-white);--vp-c-accent-soft: rgba(55, 65, 183, .14)}html.dark{--vp-c-accent: #356cae;--vp-c-accent-bg: #356cae;--vp-c-accent-hover: #164177;--vp-c-accent-text: var(--vp-c-white);--vp-c-accent-soft: rgba(55, 65, 183, .14)}iframe{width:100%}.home .hero img{max-width:150px;width:auto;height:auto} diff --git a/assets/testSuggestion-C4I28c4d.png b/assets/testSuggestion-C4I28c4d.png new file mode 100644 index 0000000..2b97edb Binary files /dev/null and b/assets/testSuggestion-C4I28c4d.png differ diff --git a/assets/top50-Du4eFrfo.png b/assets/top50-Du4eFrfo.png new file mode 100644 index 0000000..7873ca7 Binary files /dev/null and b/assets/top50-Du4eFrfo.png differ diff --git a/assets/turing_test-DKoxXym2.png b/assets/turing_test-DKoxXym2.png new file mode 100644 index 0000000..0aac0e4 Binary files /dev/null and b/assets/turing_test-DKoxXym2.png differ diff --git a/develop/index.html b/develop/index.html new file mode 100644 index 0000000..b8def8e --- /dev/null +++ b/develop/index.html @@ -0,0 +1,77 @@ + + + + + + + + + Develop with AI + + + + + +
+ + + diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..cd391c5 Binary files /dev/null and b/favicon.ico differ diff --git a/icon-192x192.png b/icon-192x192.png new file mode 100644 index 0000000..be6a183 Binary files /dev/null and b/icon-192x192.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..cc6b097 --- /dev/null +++ b/index.html @@ -0,0 +1,43 @@ + + + + + + + + + AI for devs | Tech at Worldline + + + + + +
+ + + diff --git a/llm/index.html b/llm/index.html new file mode 100644 index 0000000..18227b6 --- /dev/null +++ b/llm/index.html @@ -0,0 +1,48 @@ + + + + + + + + + Online with Librechat + + + + + +
+ + + diff --git a/logo.png b/logo.png new file mode 100644 index 0000000..7ad11b2 Binary files /dev/null and b/logo.png differ diff --git a/logo_worldline.png b/logo_worldline.png new file mode 100644 index 0000000..6981642 Binary files /dev/null and b/logo_worldline.png differ diff --git a/manifest.webmanifest b/manifest.webmanifest new file mode 100644 index 0000000..87f5bd4 --- /dev/null +++ b/manifest.webmanifest @@ -0,0 +1,31 @@ +{ + "theme_color": "#00A67E", + "background_color": "#e8d4f2", + "display": "standalone", + "scope": "/learning-ai/", + "start_url": "/learning-ai/index.html", + "name": "AI training", + "short_name": "AI training", + "icons": [ + { + "src": "icon-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icon-256x256.png", + "sizes": "256x256", + "type": "image/png" + }, + { + "src": "icon-384x384.png", + "sizes": "384x384", + "type": "image/png" + }, + { + "src": "icon-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ] +} diff --git a/offline/index.html b/offline/index.html new file mode 100644 index 0000000..372bd34 --- /dev/null +++ b/offline/index.html @@ -0,0 +1,54 @@ + + + + + + + + + Offline with LM Studio + + + + + +
+ + + diff --git a/overview/index.html b/overview/index.html new file mode 100644 index 0000000..ad82624 --- /dev/null +++ b/overview/index.html @@ -0,0 +1,43 @@ + + + + + + + + + Let's start + + + + + +
+ + + diff --git a/servicesai/index.html b/servicesai/index.html new file mode 100644 index 0000000..e7e711b --- /dev/null +++ b/servicesai/index.html @@ -0,0 +1,210 @@ + + + + + + + + + AI for services + + + + + +
+ + + diff --git a/use/index.html b/use/index.html new file mode 100644 index 0000000..5cced15 --- /dev/null +++ b/use/index.html @@ -0,0 +1,133 @@ + + + + + + + + + Prompt with AI + + + + + +
+ + +