+ Software Architecture
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/08-serverless/_redirects b/08-serverless/_redirects
new file mode 100644
index 0000000..e056129
--- /dev/null
+++ b/08-serverless/_redirects
@@ -0,0 +1 @@
+/sa2024/08-serverless/* /sa2024/08-serverless/index.html 200
diff --git a/08-serverless/assets/08-java-function-CubzN7oN.png b/08-serverless/assets/08-java-function-CubzN7oN.png
new file mode 100644
index 0000000..999cd32
Binary files /dev/null and b/08-serverless/assets/08-java-function-CubzN7oN.png differ
diff --git a/08-serverless/assets/08-jpetstore-Bnw8dRej.png b/08-serverless/assets/08-jpetstore-Bnw8dRej.png
new file mode 100644
index 0000000..8894a4b
Binary files /dev/null and b/08-serverless/assets/08-jpetstore-Bnw8dRej.png differ
diff --git a/08-serverless/assets/08-jpetstore-architecture-HG4fFQqC.png b/08-serverless/assets/08-jpetstore-architecture-HG4fFQqC.png
new file mode 100644
index 0000000..70b92cf
Binary files /dev/null and b/08-serverless/assets/08-jpetstore-architecture-HG4fFQqC.png differ
diff --git a/08-serverless/assets/08-jpetstore-serverless-JrIda51g.png b/08-serverless/assets/08-jpetstore-serverless-JrIda51g.png
new file mode 100644
index 0000000..744222e
Binary files /dev/null and b/08-serverless/assets/08-jpetstore-serverless-JrIda51g.png differ
diff --git a/08-serverless/assets/08-openfaas-architecture-BZCmBh6o.png b/08-serverless/assets/08-openfaas-architecture-BZCmBh6o.png
new file mode 100644
index 0000000..a9d6de5
Binary files /dev/null and b/08-serverless/assets/08-openfaas-architecture-BZCmBh6o.png differ
diff --git a/08-serverless/assets/08-openfaas-lifecycle-DyfvFZRv.png b/08-serverless/assets/08-openfaas-lifecycle-DyfvFZRv.png
new file mode 100644
index 0000000..7f1d826
Binary files /dev/null and b/08-serverless/assets/08-openfaas-lifecycle-DyfvFZRv.png differ
diff --git a/08-serverless/assets/08-pojo-function-DtNn0OPv.png b/08-serverless/assets/08-pojo-function-DtNn0OPv.png
new file mode 100644
index 0000000..bd1b902
Binary files /dev/null and b/08-serverless/assets/08-pojo-function-DtNn0OPv.png differ
diff --git a/08-serverless/assets/08-serverless-BY953g_1.png b/08-serverless/assets/08-serverless-BY953g_1.png
new file mode 100644
index 0000000..1371293
Binary files /dev/null and b/08-serverless/assets/08-serverless-BY953g_1.png differ
diff --git a/08-serverless/assets/08-serverless-com-DbtN285w.png b/08-serverless/assets/08-serverless-com-DbtN285w.png
new file mode 100644
index 0000000..3d5f695
Binary files /dev/null and b/08-serverless/assets/08-serverless-com-DbtN285w.png differ
diff --git a/08-serverless/assets/08-serverless-opensource-D5hzc45S.png b/08-serverless/assets/08-serverless-opensource-D5hzc45S.png
new file mode 100644
index 0000000..434736d
Binary files /dev/null and b/08-serverless/assets/08-serverless-opensource-D5hzc45S.png differ
diff --git a/08-serverless/assets/08-spring-cloud-function-CemyKeiE.png b/08-serverless/assets/08-spring-cloud-function-CemyKeiE.png
new file mode 100644
index 0000000..6ac16b6
Binary files /dev/null and b/08-serverless/assets/08-spring-cloud-function-CemyKeiE.png differ
diff --git a/08-serverless/assets/08-spring-cloud-stream-RhtBMWFj.png b/08-serverless/assets/08-spring-cloud-stream-RhtBMWFj.png
new file mode 100644
index 0000000..3bf25e8
Binary files /dev/null and b/08-serverless/assets/08-spring-cloud-stream-RhtBMWFj.png differ
diff --git a/08-serverless/assets/08-spring-cloudfunction-BAoz-Ykv.png b/08-serverless/assets/08-spring-cloudfunction-BAoz-Ykv.png
new file mode 100644
index 0000000..87949bd
Binary files /dev/null and b/08-serverless/assets/08-spring-cloudfunction-BAoz-Ykv.png differ
diff --git a/08-serverless/assets/08-target-platform-L5RiUps8.png b/08-serverless/assets/08-target-platform-L5RiUps8.png
new file mode 100644
index 0000000..1a55c61
Binary files /dev/null and b/08-serverless/assets/08-target-platform-L5RiUps8.png differ
diff --git a/08-serverless/assets/10-C9C4uFWn.js b/08-serverless/assets/10-C9C4uFWn.js
new file mode 100644
index 0000000..c5c5fbc
--- /dev/null
+++ b/08-serverless/assets/10-C9C4uFWn.js
@@ -0,0 +1 @@
+import{o,c as r,k as a,q as n,s as _,A as e,e as s}from"./modules/vue-uEYNCD1x.js";import{I as c}from"./slidev/default-Dop53dUY.js";import{_ as l,af as t}from"./index-CIyRdoXZ.js";import{p as m,u as i,f as p}from"./slidev/context-vkhxtxO6.js";import"./modules/shiki-BzAJ3tB6.js";const f="/sa2024/08-serverless/assets/08-serverless-com-DbtN285w.png",u=s("h1",null,"serverless.com",-1),d=s("br",null,null,-1),h=s("img",{src:f,class:"h-80"},null,-1),v={__name:"10",setup(x){return m(t),i(),(g,k)=>(o(),r(c,n(_(e(p)(e(t),9))),{default:a(()=>[u,d,h]),_:1},16))}},I=l(v,[["__file","/@slidev/slides/10.md"]]);export{I as default};
diff --git a/08-serverless/assets/11-B1uzG7PY.js b/08-serverless/assets/11-B1uzG7PY.js
new file mode 100644
index 0000000..7bb7f6c
--- /dev/null
+++ b/08-serverless/assets/11-B1uzG7PY.js
@@ -0,0 +1 @@
+import{o as e,c as a,k as o,q as n,s as i,A as t,e as s}from"./modules/vue-uEYNCD1x.js";import{I as l}from"./slidev/two-cols-EVC56B1i.js";import{_ as c,ag as r}from"./index-CIyRdoXZ.js";import{p,u,f as _}from"./slidev/context-vkhxtxO6.js";import"./modules/shiki-BzAJ3tB6.js";const m="/sa2024/08-serverless/assets/08-spring-cloud-function-CemyKeiE.png",d=s("h1",null,"Spring Cloud Function",-1),f=s("ul",null,[s("li",null,"Spring Cloud Function 是来自 Pivotal 的 Spring 团队的新项目,它致力于促进函数作为主要的开发单元"),s("li",null,"该项目提供了一个通用的模型,用于在各种平台上部署基于函数的软件,包括像 Amazon AWS Lambda 这样的 FaaS(函数即服务,function as a service)平台")],-1),g=s("p",null,[s("br"),s("br"),s("br"),s("img",{src:m,class:"h-50"})],-1),h={__name:"11",setup(v){return p(r),u(),(S,x)=>(e(),a(l,n(i(t(_)(t(r),10))),{right:o(C=>[g]),default:o(()=>[d,f]),_:1},16))}},B=c(h,[["__file","/@slidev/slides/11.md"]]);export{B as default};
diff --git a/08-serverless/assets/12-Gvc4Vxum.js b/08-serverless/assets/12-Gvc4Vxum.js
new file mode 100644
index 0000000..09992cd
--- /dev/null
+++ b/08-serverless/assets/12-Gvc4Vxum.js
@@ -0,0 +1 @@
+import{o as r,c as a,k as t,q as n,s as i,A as o,e as s,a6 as l}from"./modules/vue-uEYNCD1x.js";import{I as c}from"./slidev/two-cols-EVC56B1i.js";import{_,ah as e}from"./index-CIyRdoXZ.js";import{p,u,f as d}from"./slidev/context-vkhxtxO6.js";import"./modules/shiki-BzAJ3tB6.js";const m="/sa2024/08-serverless/assets/08-spring-cloudfunction-BAoz-Ykv.png",f="/sa2024/08-serverless/assets/08-java-function-CubzN7oN.png",h=s("h1",null,"函数式编程",-1),g=s("br",null,null,-1),v=s("img",{src:m,class:"h-70"},null,-1),b=s("p",null,[s("a",{href:"https://www.bilibili.com/video/BV13K411p7Mf?p=2",target:"_blank",rel:"noopener"},"https://www.bilibili.com/video/BV13K411p7Mf?p=2"),l(" 2:15")],-1),w=s("div",{style:{"text-align":"right"}},"sa-spring/spring-cloudfunction",-1),x=s("br",null,null,-1),B=s("img",{src:f,class:"m-10 h-70"},null,-1),k={__name:"12",setup(N){return p(e),u(),(P,V)=>(r(),a(c,n(i(o(d)(o(e),11))),{right:t(z=>[x,B]),default:t(()=>[h,g,v,b,w]),_:1},16))}},K=_(k,[["__file","/@slidev/slides/12.md"]]);export{K as default};
diff --git a/08-serverless/assets/14-CIYqAYX7.js b/08-serverless/assets/14-CIYqAYX7.js
new file mode 100644
index 0000000..ac8189e
--- /dev/null
+++ b/08-serverless/assets/14-CIYqAYX7.js
@@ -0,0 +1,7 @@
+import{_ as e}from"./slidev/CodeBlockWrapper-CRM5ienr.js";import{o as k,c as n,k as t,l as r,m as p,q as o,s as d,A as a,e as s,a6 as i}from"./modules/vue-uEYNCD1x.js";import{I as g}from"./slidev/two-cols-EVC56B1i.js";import{_ as c,aj as l}from"./index-CIyRdoXZ.js";import{p as y,u as B,f as _}from"./slidev/context-vkhxtxO6.js";import"./modules/unplugin-icons-BJo5e7Wi.js";import"./modules/shiki-BzAJ3tB6.js";const A="/sa2024/08-serverless/assets/08-pojo-function-DtNn0OPv.png",m=s("h1",null,"Pojo Function",-1),u=s("br",null,null,-1),C=s("pre",{class:"shiki shiki-themes vitesse-dark vitesse-light slidev-code",style:{"--shiki-dark":"#dbd7caee","--shiki-light":"#393a34","--shiki-dark-bg":"#121212","--shiki-light-bg":"#ffffff"}},[s("code",{class:"language-java"},[s("span",{class:"line"},[s("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}},"public"),s("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}}," class"),s("span",{style:{"--shiki-dark":"#5DA994","--shiki-light":"#2E8F82"}}," Greeter"),s("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}}," implements"),s("span",{style:{"--shiki-dark":"#80A665","--shiki-light":"#59873A"}}," Function"),s("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"<"),s("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}},"String"),s("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},","),s("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}}," String"),s("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},">"),s("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}}," {")]),i(`
+`),s("span",{class:"line"},[s("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}}," ")]),i(`
+`),s("span",{class:"line"},[s("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}}," @"),s("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}},"Override")]),i(`
+`),s("span",{class:"line"},[s("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}}," public"),s("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}}," String "),s("span",{style:{"--shiki-dark":"#80A665","--shiki-light":"#59873A"}},"apply"),s("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"("),s("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}},"String "),s("span",{style:{"--shiki-dark":"#BD976A","--shiki-light":"#B07D48"}},"s"),s("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},")"),s("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}}," {")]),i(`
+`),s("span",{class:"line"},[s("span",{style:{"--shiki-dark":"#4D9375","--shiki-light":"#1E754F"}}," return"),s("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},' "'),s("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}},"Hello "),s("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},'"'),s("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}}," +"),s("span",{style:{"--shiki-dark":"#DBD7CAEE","--shiki-light":"#393A34"}}," s "),s("span",{style:{"--shiki-dark":"#CB7676","--shiki-light":"#AB5959"}},"+"),s("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},' "'),s("span",{style:{"--shiki-dark":"#C98A7D","--shiki-light":"#B56959"}},", and welcome to Spring Cloud Function!!!"),s("span",{style:{"--shiki-dark":"#C98A7D99","--shiki-light":"#B5695999"}},'"'),s("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},";")]),i(`
+`),s("span",{class:"line"},[s("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}}," }")]),i(`
+`),s("span",{class:"line"},[s("span",{style:{"--shiki-dark":"#666666","--shiki-light":"#999999"}},"}")])])],-1),f=s("img",{src:A,class:"h-60"},null,-1),D={__name:"14",setup(v){return y(l),B(),(E,P)=>{const h=e;return k(),n(g,o(d(a(_)(a(l),13))),{right:t(b=>[f]),default:t(()=>[m,u,r(h,p({},{ranges:[]}),{default:t(()=>[C]),_:1},16)]),_:1},16)}}},I=c(D,[["__file","/@slidev/slides/14.md"]]);export{I as default};
diff --git a/08-serverless/assets/15-CQJ7VVlj.js b/08-serverless/assets/15-CQJ7VVlj.js
new file mode 100644
index 0000000..21400b9
--- /dev/null
+++ b/08-serverless/assets/15-CQJ7VVlj.js
@@ -0,0 +1 @@
+import{o,c as r,k as a,q as n,s as _,A as s,e as t}from"./modules/vue-uEYNCD1x.js";import{I as c}from"./slidev/default-Dop53dUY.js";import{_ as i,an as e}from"./index-CIyRdoXZ.js";import{p as m,u as p,f as l}from"./slidev/context-vkhxtxO6.js";import"./modules/shiki-BzAJ3tB6.js";const d="/sa2024/08-serverless/assets/08-spring-cloud-stream-RhtBMWFj.png",f=t("h1",null,"Invoke via Message",-1),u=t("img",{src:d,class:"m-10 h-60"},null,-1),h={__name:"15",setup(v){return m(e),p(),(g,x)=>(o(),r(c,n(_(s(l)(s(e),14))),{default:a(()=>[f,u]),_:1},16))}},C=i(h,[["__file","/@slidev/slides/15.md"]]);export{C as default};
diff --git a/08-serverless/assets/17-BUDTVRgJ.js b/08-serverless/assets/17-BUDTVRgJ.js
new file mode 100644
index 0000000..1bf3845
--- /dev/null
+++ b/08-serverless/assets/17-BUDTVRgJ.js
@@ -0,0 +1 @@
+import{o,c as r,k as a,q as n,s as i,A as e,e as s}from"./modules/vue-uEYNCD1x.js";import{I as p}from"./slidev/default-Dop53dUY.js";import{_ as c,ap as t}from"./index-CIyRdoXZ.js";import{p as l,u as f,f as _}from"./slidev/context-vkhxtxO6.js";import"./modules/shiki-BzAJ3tB6.js";const d="/sa2024/08-serverless/assets/08-target-platform-L5RiUps8.png",u=s("h1",null,"Target Platforms",-1),m=s("p",null,'Adapters for AWS Lambda, Microsoft Azure, Apache OpenWhisk and possibly other "serverless" service providers.',-1),h=s("img",{src:d,class:"h-40"},null,-1),g=s("div",{style:{"text-align":"right","font-size":"16px"}},"riff is an Open Source platform for building and running Functions, Applications, and Containers on Kubernetes. To get started running your own functions on riff, see our Docs. This project is sponsored by VMware",-1),v={__name:"17",setup(x){return l(t),f(),(A,b)=>(o(),r(p,n(i(e(_)(e(t),16))),{default:a(()=>[u,m,h,g]),_:1},16))}},z=c(v,[["__file","/@slidev/slides/17.md"]]);export{z as default};
diff --git a/08-serverless/assets/3-C8_toCXe.js b/08-serverless/assets/3-C8_toCXe.js
new file mode 100644
index 0000000..cd0c845
--- /dev/null
+++ b/08-serverless/assets/3-C8_toCXe.js
@@ -0,0 +1 @@
+import{o as r,c as a,k as t,a6 as n,q as i,s as _,A as e,e as s}from"./modules/vue-uEYNCD1x.js";import{I as c}from"./slidev/two-cols-EVC56B1i.js";import{_ as l,a8 as o}from"./index-CIyRdoXZ.js";import{p,u as m,f as d}from"./slidev/context-vkhxtxO6.js";import"./modules/shiki-BzAJ3tB6.js";const u="/sa2024/08-serverless/assets/08-jpetstore-architecture-HG4fFQqC.png",f="/sa2024/08-serverless/assets/08-jpetstore-Bnw8dRej.png",h=s("h1",null,"JPetStore",-1),g=s("br",null,null,-1),x=s("img",{src:u,class:"m-10 h-30"},null,-1),v=s("div",{style:{"text-align":"right","font-size":"24px"}},"mybatis/jpetstore-6",-1),j=s("p",null,[s("br"),s("br"),s("img",{src:f,class:"m-10 h-60"})],-1),P={__name:"3",setup(b){return p(o),m(),(B,k)=>(r(),a(c,i(_(e(d)(e(o),2))),{right:t(y=>[j]),default:t(()=>[h,g,n(" 传统上,架构里会包含一个部署了应用程序和前端的单体服务器。上述架构采用的是瘦客户端方式,所有的业务逻辑(如认证、会话管理、宠物管理等)都部署在服务器端。哪怕你将这个单体服务拆开成若干个微服务,也并没有改变这一点。 "),x,v]),_:1},16))}},I=l(P,[["__file","/@slidev/slides/3.md"]]);export{I as default};
diff --git a/08-serverless/assets/4-DGOVnNTn.js b/08-serverless/assets/4-DGOVnNTn.js
new file mode 100644
index 0000000..80a07aa
--- /dev/null
+++ b/08-serverless/assets/4-DGOVnNTn.js
@@ -0,0 +1 @@
+import{o as r,c as l,k as e,q as a,s as i,A as t,e as s}from"./modules/vue-uEYNCD1x.js";import{I as n}from"./slidev/two-cols-EVC56B1i.js";import{_,a9 as o}from"./index-CIyRdoXZ.js";import{p,u as c,f as u}from"./slidev/context-vkhxtxO6.js";import"./modules/shiki-BzAJ3tB6.js";const m="/sa2024/08-serverless/assets/08-jpetstore-serverless-JrIda51g.png",d=s("h1",null,"Serverless",-1),f=s("ul",null,[s("li",null,"删除原用户认证代码,使用第三方认证服务 (例如Auth0.)"),s("li",null,"使用第三方数据服务(例如Google Firebase)管理产品数据"),s("li",null,"Client端基于 Single Page Application技术直接实现认证和数据访问展现"),s("li",null,"将“查询”业务功能实现为一个“函数”,每次用户查询时启动函数运行"),s("li",null,"将“购买”业务功能实现为另一个函数")],-1),h=s("img",{src:m,class:"m-10 h-80"},null,-1),g={__name:"4",setup(v){return p(o),c(),(x,P)=>(r(),l(n,a(i(t(u)(t(o),3))),{right:e(k=>[h]),default:e(()=>[d,f]),_:1},16))}},j=_(g,[["__file","/@slidev/slides/4.md"]]);export{j as default};
diff --git a/08-serverless/assets/6-C2gB4W6U.js b/08-serverless/assets/6-C2gB4W6U.js
new file mode 100644
index 0000000..6229753
--- /dev/null
+++ b/08-serverless/assets/6-C2gB4W6U.js
@@ -0,0 +1 @@
+import{o as r,c as l,k as e,q as a,s as n,A as t,e as s}from"./modules/vue-uEYNCD1x.js";import{I as i}from"./slidev/two-cols-EVC56B1i.js";import{_,ab as o}from"./index-CIyRdoXZ.js";import{p as c,u as m,f as p}from"./slidev/context-vkhxtxO6.js";import"./modules/shiki-BzAJ3tB6.js";const u="/sa2024/08-serverless/assets/08-serverless-BY953g_1.png",d=s("h1",null,"优点",-1),f=s("ul",null,[s("li",null,"不需要管理服务器"),s("li",null,"自动伸缩(Scale to Zero)"),s("li",null,"没有运营成本"),s("li",null,"成本由事件驱动"),s("li",null,"具有较高的安全性")],-1),h=s("img",{src:u,class:"m-10 h-80"},null,-1),g={__name:"6",setup(v){return c(o),m(),(x,B)=>(r(),l(i,a(n(t(p)(t(o),5))),{right:e(P=>[h]),default:e(()=>[d,f]),_:1},16))}},j=_(g,[["__file","/@slidev/slides/6.md"]]);export{j as default};
diff --git a/08-serverless/assets/8-DrXbamla.js b/08-serverless/assets/8-DrXbamla.js
new file mode 100644
index 0000000..e0545dd
--- /dev/null
+++ b/08-serverless/assets/8-DrXbamla.js
@@ -0,0 +1 @@
+import{o as t,c as o,k as a,q as n,s as c,A as e,e as s}from"./modules/vue-uEYNCD1x.js";import{I as _}from"./slidev/default-Dop53dUY.js";import{_ as l,ad as r}from"./index-CIyRdoXZ.js";import{p,u as i,f as m}from"./slidev/context-vkhxtxO6.js";import"./modules/shiki-BzAJ3tB6.js";const u="/sa2024/08-serverless/assets/08-serverless-opensource-D5hzc45S.png",d=s("h1",null,"Open Source Serverless Platforms",-1),f=s("br",null,null,-1),h=s("img",{src:u,class:"h-80"},null,-1),v={__name:"8",setup(x){return p(r),i(),(P,S)=>(t(),o(_,n(c(e(m)(e(r),7))),{default:a(()=>[d,f,h]),_:1},16))}},I=l(v,[["__file","/@slidev/slides/8.md"]]);export{I as default};
diff --git a/08-serverless/assets/9-oSLJinUO.js b/08-serverless/assets/9-oSLJinUO.js
new file mode 100644
index 0000000..e582551
--- /dev/null
+++ b/08-serverless/assets/9-oSLJinUO.js
@@ -0,0 +1 @@
+import{o as r,c as a,k as e,q as n,s as c,A as t,e as s}from"./modules/vue-uEYNCD1x.js";import{I as _}from"./slidev/two-cols-EVC56B1i.js";import{_ as l,ae as o}from"./index-CIyRdoXZ.js";import{p as i,u as p,f as m}from"./slidev/context-vkhxtxO6.js";import"./modules/shiki-BzAJ3tB6.js";const f="/sa2024/08-serverless/assets/08-openfaas-lifecycle-DyfvFZRv.png",u="/sa2024/08-serverless/assets/08-openfaas-architecture-BZCmBh6o.png",d=s("h1",null,"OpenFaaS",-1),h=s("br",null,null,-1),v=s("img",{src:f,class:"h-60"},null,-1),g=s("p",null,"响应时间——FaaS 需要一些初始化时间。如果负载很小(比如一个小时只有一个事件),每个请求都会经历冷启动,导致整体响应变慢。",-1),x=s("p",null,[s("br"),s("br"),s("img",{src:u,class:"h-40"})],-1),B={__name:"9",setup(F){return i(o),p(),(P,b)=>(r(),a(_,n(c(t(m)(t(o),8))),{right:e(k=>[x]),default:e(()=>[d,h,v,g]),_:1},16))}},Z=l(B,[["__file","/@slidev/slides/9.md"]]);export{Z as default};
diff --git a/08-serverless/assets/ClicksSlider-qq1Ub2AL.css b/08-serverless/assets/ClicksSlider-qq1Ub2AL.css
new file mode 100644
index 0000000..ded5c92
--- /dev/null
+++ b/08-serverless/assets/ClicksSlider-qq1Ub2AL.css
@@ -0,0 +1 @@
+.range[data-v-e916140b]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent}.range[data-v-e916140b]::-webkit-slider-thumb{-webkit-appearance:none;height:100%;width:var(--thumb-width, .5rem)}.range[data-v-e916140b]::-moz-range-thumb{height:100%;width:var(--thumb-width, .5rem)}
diff --git a/08-serverless/assets/ContextMenu-DSnskk1a.css b/08-serverless/assets/ContextMenu-DSnskk1a.css
new file mode 100644
index 0000000..b193adb
--- /dev/null
+++ b/08-serverless/assets/ContextMenu-DSnskk1a.css
@@ -0,0 +1 @@
+.select-list[data-v-9e4a80e3]{padding-top:.5rem;padding-bottom:.5rem}.item[data-v-9e4a80e3]{display:flex;cursor:default;white-space:nowrap;border-radius:.25rem;padding:.25rem 1rem}.item svg[data-v-9e4a80e3]{margin-top:auto;margin-bottom:auto;margin-right:.25rem;margin-left:-.5rem}.item[data-v-9e4a80e3]:hover{--un-bg-opacity:1;background-color:rgb(156 163 175 / var(--un-bg-opacity));--un-bg-opacity:.1}.title[data-v-9e4a80e3]{padding:.25rem 1.75rem;font-size:.75rem;line-height:1rem;letter-spacing:.1em;text-transform:uppercase;opacity:.5}.autocomplete-list[data-v-a9c46306]{margin-top:.25rem;--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity));overflow:auto;max-height:calc(100vh - 100px)}.dark .autocomplete-list[data-v-a9c46306]{--un-bg-opacity:1;background-color:rgb(18 18 18 / var(--un-bg-opacity))}.autocomplete[data-v-a9c46306]{cursor:pointer}#slideshow[data-v-63954aac]{height:100%}
diff --git a/08-serverless/assets/DrawingControls-C5T1oZL5.css b/08-serverless/assets/DrawingControls-C5T1oZL5.css
new file mode 100644
index 0000000..bf95bff
--- /dev/null
+++ b/08-serverless/assets/DrawingControls-C5T1oZL5.css
@@ -0,0 +1 @@
+.v-popper--theme-menu .v-popper__arrow-inner{border-color:#9ca3af33}
diff --git a/08-serverless/assets/DrawingPreview-DJ7dOR_1.css b/08-serverless/assets/DrawingPreview-DJ7dOR_1.css
new file mode 100644
index 0000000..d8ce4e2
--- /dev/null
+++ b/08-serverless/assets/DrawingPreview-DJ7dOR_1.css
@@ -0,0 +1 @@
+#slide-container{position:relative;break-after:page;overflow:hidden}#slide-content{position:relative;position:absolute;left:50%;top:50%;overflow:hidden;--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity))}.dark #slide-content{--un-bg-opacity:1;background-color:rgb(18 18 18 / var(--un-bg-opacity))}.disable-view-transition[data-v-1e2c950d] *{view-transition-name:none!important}.slidev-page[data-v-1e2c950d]{position:absolute;width:100%;height:100%}
diff --git a/08-serverless/assets/NoteDisplay-C6AkVv8T.css b/08-serverless/assets/NoteDisplay-C6AkVv8T.css
new file mode 100644
index 0000000..74ddf96
--- /dev/null
+++ b/08-serverless/assets/NoteDisplay-C6AkVv8T.css
@@ -0,0 +1 @@
+.slidev-note :first-child{margin-top:0}
diff --git a/08-serverless/assets/index-CIyRdoXZ.js b/08-serverless/assets/index-CIyRdoXZ.js
new file mode 100644
index 0000000..39c991c
--- /dev/null
+++ b/08-serverless/assets/index-CIyRdoXZ.js
@@ -0,0 +1,51 @@
+const __vite__fileDeps=["assets/slidev/1-D6LYmwHL.js","assets/modules/vue-uEYNCD1x.js","assets/slidev/context-vkhxtxO6.js","assets/modules/shiki-BzAJ3tB6.js","assets/modules/shiki-BSchMNmt.css","assets/slidev/2-CGU85rFs.js","assets/slidev/default-Dop53dUY.js","assets/3-C8_toCXe.js","assets/slidev/two-cols-EVC56B1i.js","assets/4-DGOVnNTn.js","assets/slidev/5-DIP-cCTf.js","assets/6-C2gB4W6U.js","assets/slidev/7-7AEC8k9T.js","assets/8-DrXbamla.js","assets/9-oSLJinUO.js","assets/10-C9C4uFWn.js","assets/11-B1uzG7PY.js","assets/12-Gvc4Vxum.js","assets/slidev/13-COUVeqtS.js","assets/slidev/CodeBlockWrapper-CRM5ienr.js","assets/modules/unplugin-icons-BJo5e7Wi.js","assets/14-CIYqAYX7.js","assets/15-CQJ7VVlj.js","assets/slidev/16-CmF05eFz.js","assets/17-BUDTVRgJ.js","assets/slidev/entry-BSGNSnqr.js","assets/slidev/overview-BmHD3l9W.js","assets/slidev/DrawingPreview-D-nmpiaa.js","assets/DrawingPreview-DJ7dOR_1.css","assets/slidev/IconButton-DG3DFBDA.js","assets/slidev/NoteDisplay-71KkeV1T.js","assets/NoteDisplay-C6AkVv8T.css","assets/slidev/ClicksSlider-Cv12e-ig.js","assets/ClicksSlider-qq1Ub2AL.css","assets/slidev/notes-DiZeFWxo.js","assets/slidev/presenter-tvcw40w7.js","assets/slidev/ContextMenu-BKeGdUF8.js","assets/ContextMenu-DSnskk1a.css","assets/slidev/DrawingControls-bYIp4Izf.js","assets/DrawingControls-C5T1oZL5.css","assets/presenter-D5oC5Gjj.css","assets/slidev/play-CFoaEEOz.js","assets/play-CoA43pdi.css"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]);
+import{t as T,y as m,n as _t,z as Fn,A as us,B as Zs,C as xe,D as Q,E as xn,G as Vn,H as Bn,I as Ys,J as M,K as Wn,L as zn,o as Xs,b as Un,M as fs,N as At,O as qn,P as Kn,Q as te,R as en,S as Lt,T as tn,U as Jn,d as Gn,r as Qn,c as Zn,V as Yn,W as Xn,X as eo,Y as to,Z as so,_ as no,$ as oo,a0 as io,a1 as ro,a2 as ao,a3 as lo,a4 as co,a5 as uo,u as fo}from"./modules/vue-uEYNCD1x.js";import{T as ho}from"./modules/shiki-BzAJ3tB6.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))n(o);new MutationObserver(o=>{for(const i of o)if(i.type==="childList")for(const r of i.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&n(r)}).observe(document,{childList:!0,subtree:!0});function t(o){const i={};return o.integrity&&(i.integrity=o.integrity),o.referrerPolicy&&(i.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?i.credentials="include":o.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(o){if(o.ep)return;o.ep=!0;const i=t(o);fetch(o.href,i)}})();function et(s,e,t){return Math.min(t,Math.max(e,s))}function po(...s){return mo(s).reduce((e,t)=>e+t,0)}function go(s){return s=s??[],Array.isArray(s)?s:[s]}function mo(s){return go(s).flat(1)}function ja(...s){let e,t,n;s.length===1?(e=0,n=1,[t]=s):[e,t,n=1]=s;const o=[];let i=e;for(;ie(t,n)).filter(yo))}const D={theme:"default",title:"Software Architecture",titleTemplate:"%s - Slidev",addons:[],remoteAssets:!1,monaco:!0,monacoTypesSource:"local",monacoTypesAdditionalPackages:[],monacoRunAdditionalDeps:[],download:!1,export:{},info:!1,highlighter:"shiki",twoslash:!0,lineNumbers:!1,colorSchema:"auto",routerMode:"history",aspectRatio:1.7777777777777777,canvasWidth:980,exportFilename:"",selectable:!1,themeConfig:{},fonts:{sans:['"Avenir Next"','"Nunito Sans"',"ui-sans-serif","system-ui","-apple-system","BlinkMacSystemFont",'"Segoe UI"',"Roboto",'"Helvetica Neue"',"Arial",'"Noto Sans"',"sans-serif",'"Apple Color Emoji"','"Segoe UI Emoji"','"Segoe UI Symbol"','"Noto Color Emoji"'],serif:["ui-serif","Georgia","Cambria",'"Times New Roman"',"Times","serif"],mono:['"Fira Code"',"ui-monospace","SFMono-Regular","Menlo","Monaco","Consolas",'"Liberation Mono"','"Courier New"',"monospace"],webfonts:["Avenir Next","Nunito Sans","Fira Code"],provider:"google",local:["Avenir Next"],italic:!1,weights:["200","400","600"]},favicon:"https://cdn.jsdelivr.net/gh/slidevjs/slidev/assets/favicon.png",drawings:{enabled:!0,persist:!1,presenterOnly:!1,syncAll:!0},plantUmlServer:"https://www.plantuml.com/plantuml",codeCopy:!0,record:"dev",css:"unocss",presenter:!0,htmlAttrs:{},editor:!0,layout:"cover"},Da="build",sn=T(D.aspectRatio??16/9),_o=T(D.canvasWidth??980),Na=m(()=>Math.ceil(_o.value/sn.value)),bo=m(()=>vo(D.themeConfig||{},(s,e)=>[`--slidev-theme-${s}`,e]));function Gt(s,e={},t){for(const n in s){const o=s[n],i=t?`${t}:${n}`:n;typeof o=="object"&&o!==null?Gt(o,e,i):typeof o=="function"&&(e[i]=o)}return e}const wo={run:s=>s()},ko=()=>wo,nn=typeof console.createTask<"u"?console.createTask:ko;function So(s,e){const t=e.shift(),n=nn(t);return s.reduce((o,i)=>o.then(()=>n.run(()=>i(...e))),Promise.resolve())}function Mo(s,e){const t=e.shift(),n=nn(t);return Promise.all(s.map(o=>n.run(()=>o(...e))))}function Rt(s,e){for(const t of[...s])t(e)}class Oo{constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(e,t,n={}){if(!e||typeof t!="function")return()=>{};const o=e;let i;for(;this._deprecatedHooks[e];)i=this._deprecatedHooks[e],e=i.to;if(i&&!n.allowDeprecated){let r=i.message;r||(r=`${o} hook has been deprecated`+(i.to?`, please use ${i.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(r)||(console.warn(r),this._deprecatedMessages.add(r))}if(!t.name)try{Object.defineProperty(t,"name",{get:()=>"_"+e.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[e]=this._hooks[e]||[],this._hooks[e].push(t),()=>{t&&(this.removeHook(e,t),t=void 0)}}hookOnce(e,t){let n,o=(...i)=>(typeof n=="function"&&n(),n=void 0,o=void 0,t(...i));return n=this.hook(e,o),n}removeHook(e,t){if(this._hooks[e]){const n=this._hooks[e].indexOf(t);n!==-1&&this._hooks[e].splice(n,1),this._hooks[e].length===0&&delete this._hooks[e]}}deprecateHook(e,t){this._deprecatedHooks[e]=typeof t=="string"?{to:t}:t;const n=this._hooks[e]||[];delete this._hooks[e];for(const o of n)this.hook(e,o)}deprecateHooks(e){Object.assign(this._deprecatedHooks,e);for(const t in e)this.deprecateHook(t,e[t])}addHooks(e){const t=Gt(e),n=Object.keys(t).map(o=>this.hook(o,t[o]));return()=>{for(const o of n.splice(0,n.length))o()}}removeHooks(e){const t=Gt(e);for(const n in t)this.removeHook(n,t[n])}removeAllHooks(){for(const e in this._hooks)delete this._hooks[e]}callHook(e,...t){return t.unshift(e),this.callHookWith(So,e,...t)}callHookParallel(e,...t){return t.unshift(e),this.callHookWith(Mo,e,...t)}callHookWith(e,t,...n){const o=this._before||this._after?{name:t,args:n,context:{}}:void 0;this._before&&Rt(this._before,o);const i=e(t in this._hooks?[...this._hooks[t]]:[],n);return i instanceof Promise?i.finally(()=>{this._after&&o&&Rt(this._after,o)}):(this._after&&o&&Rt(this._after,o),i)}beforeEach(e){return this._before=this._before||[],this._before.push(e),()=>{if(this._before!==void 0){const t=this._before.indexOf(e);t!==-1&&this._before.splice(t,1)}}}afterEach(e){return this._after=this._after||[],this._after.push(e),()=>{if(this._after!==void 0){const t=this._after.indexOf(e);t!==-1&&this._after.splice(t,1)}}}}function Po(){return new Oo}function To(s){return Array.isArray(s)?s:[s]}const Eo=["title","titleTemplate","script","style","noscript"],ft=["base","meta","link","style","script","noscript"],$o=["title","titleTemplate","templateParams","base","htmlAttrs","bodyAttrs","meta","link","style","script","noscript"],Ao=["base","title","titleTemplate","bodyAttrs","htmlAttrs","templateParams"],on=["tagPosition","tagPriority","tagDuplicateStrategy","children","innerHTML","textContent","processTemplateParams"],Lo=typeof window<"u";function hs(s){let e=9;for(let t=0;t>>9)+65536).toString(16).substring(1,8).toLowerCase()}function Ts(s){return s._h||hs(s._d?s._d:`${s.tag}:${s.textContent||s.innerHTML||""}:${Object.entries(s.props).map(([e,t])=>`${e}:${String(t)}`).join(",")}`)}function rn(s,e){const{props:t,tag:n}=s;if(Ao.includes(n))return n;if(n==="link"&&t.rel==="canonical")return"canonical";if(t.charset)return"charset";const o=["id"];n==="meta"&&o.push("name","property","http-equiv");for(const i of o)if(typeof t[i]<"u"){const r=String(t[i]);return e&&!e(r)?!1:`${n}:${i}:${r}`}return!1}function Es(s,e){return s==null?e||null:typeof s=="function"?s(e):s}async function Co(s,e,t){const n={tag:s,props:await an(typeof e=="object"&&typeof e!="function"&&!(e instanceof Promise)?{...e}:{[["script","noscript","style"].includes(s)?"innerHTML":"textContent"]:e},["templateParams","titleTemplate"].includes(s))};return on.forEach(o=>{const i=typeof n.props[o]<"u"?n.props[o]:t[o];typeof i<"u"&&((!["innerHTML","textContent","children"].includes(o)||Eo.includes(n.tag))&&(n[o==="children"?"innerHTML":o]=i),delete n.props[o])}),n.props.body&&(n.tagPosition="bodyClose",delete n.props.body),n.tag==="script"&&typeof n.innerHTML=="object"&&(n.innerHTML=JSON.stringify(n.innerHTML),n.props.type=n.props.type||"application/json"),Array.isArray(n.props.content)?n.props.content.map(o=>({...n,props:{...n.props,content:o}})):n}function Io(s,e){var n;const t=s==="class"?" ":";";return typeof e=="object"&&!Array.isArray(e)&&(e=Object.entries(e).filter(([,o])=>o).map(([o,i])=>s==="style"?`${o}:${i}`:o)),(n=Array.isArray(e)?e.join(t):e)==null?void 0:n.split(t).filter(o=>o.trim()).filter(Boolean).join(t)}async function an(s,e){for(const t of Object.keys(s)){if(["class","style"].includes(t)){s[t]=Io(t,s[t]);continue}if(s[t]instanceof Promise&&(s[t]=await s[t]),!e&&!on.includes(t)){const n=String(s[t]),o=t.startsWith("data-");n==="true"||n===""?s[t]=o?"true":!0:s[t]||(o&&n==="false"?s[t]="false":delete s[t])}}return s}const jo=10;async function Do(s){const e=[];return Object.entries(s.resolvedInput).filter(([t,n])=>typeof n<"u"&&$o.includes(t)).forEach(([t,n])=>{const o=To(n);e.push(...o.map(i=>Co(t,i,s)).flat())}),(await Promise.all(e)).flat().filter(Boolean).map((t,n)=>(t._e=s._i,s.mode&&(t._m=s.mode),t._p=(s._i<l&&l[c]||void 0,e):a=e[r],typeof a<"u"?(a||"").replace(/"/g,'\\"'):!1}let o=s;try{o=decodeURI(s)}catch{}return(o.match(/%(\w+\.+\w+)|%(\w+)/g)||[]).sort().reverse().forEach(r=>{const a=n(r.slice(1));typeof a=="string"&&(s=s.replace(new RegExp(`\\${r}(\\W|$)`,"g"),(l,c)=>`${a}${c}`).trim())}),s.includes(ae)&&(s.endsWith(ae)&&(s=s.slice(0,-ae.length).trim()),s.startsWith(ae)&&(s=s.slice(ae.length).trim()),s=s.replace(new RegExp(`\\${ae}\\s*\\${ae}`,"g"),ae),s=ht(s,{separator:t},t)),s}async function Ho(s,e={}){var u;const t=e.document||s.resolvedOptions.document;if(!t||!s.dirty)return;const n={shouldRender:!0,tags:[]};if(await s.hooks.callHook("dom:beforeRender",n),!n.shouldRender)return;const o=(await s.resolveTags()).map(f=>({tag:f,id:ft.includes(f.tag)?Ts(f):f.tag,shouldRender:!0}));let i=s._dom;if(!i){i={elMap:{htmlAttrs:t.documentElement,bodyAttrs:t.body}};for(const f of["body","head"]){const h=(u=t[f])==null?void 0:u.children,d=[];for(const p of[...h].filter(g=>ft.includes(g.tagName.toLowerCase()))){const g={tag:p.tagName.toLowerCase(),props:await an(p.getAttributeNames().reduce((_,b)=>({..._,[b]:p.getAttribute(b)}),{})),innerHTML:p.innerHTML};let y=1,v=rn(g);for(;v&&d.find(_=>_._d===v);)v=`${v}:${y++}`;g._d=v||void 0,d.push(g),i.elMap[p.getAttribute("data-hid")||Ts(g)]=p}}}i.pendingSideEffects={...i.sideEffects||{}},i.sideEffects={};function r(f,h,d){const p=`${f}:${h}`;i.sideEffects[p]=d,delete i.pendingSideEffects[p]}function a({id:f,$el:h,tag:d}){const p=d.tag.endsWith("Attrs");i.elMap[f]=h,p||(["textContent","innerHTML"].forEach(g=>{d[g]&&d[g]!==h[g]&&(h[g]=d[g])}),r(f,"el",()=>{var g;(g=i.elMap[f])==null||g.remove(),delete i.elMap[f]}));for(const[g,y]of Object.entries(d._eventHandlers||{}))h.getAttribute(`data-${g}`)!==""&&((d.tag==="bodyAttrs"?t.defaultView:h).addEventListener(g.replace("on",""),y.bind(h)),h.setAttribute(`data-${g}`,""));Object.entries(d.props).forEach(([g,y])=>{const v=`attr:${g}`;if(g==="class")for(const _ of(y||"").split(" ").filter(Boolean))p&&r(f,`${v}:${_}`,()=>h.classList.remove(_)),!h.classList.contains(_)&&h.classList.add(_);else if(g==="style")for(const _ of(y||"").split(";").filter(Boolean)){const[b,...w]=_.split(":").map(O=>O.trim());r(f,`${v}:${_}:${b}`,()=>{h.style.removeProperty(b)}),h.style.setProperty(b,w.join(":"))}else h.getAttribute(g)!==y&&h.setAttribute(g,y===!0?"":String(y)),p&&r(f,v,()=>h.removeAttribute(g))})}const l=[],c={bodyClose:void 0,bodyOpen:void 0,head:void 0};for(const f of o){const{tag:h,shouldRender:d,id:p}=f;if(d){if(h.tag==="title"){t.title=h.textContent;continue}f.$el=f.$el||i.elMap[p],f.$el?a(f):ft.includes(h.tag)&&l.push(f)}}for(const f of l){const h=f.tag.tagPosition||"head";f.$el=t.createElement(f.tag.tag),a(f),c[h]=c[h]||t.createDocumentFragment(),c[h].appendChild(f.$el)}for(const f of o)await s.hooks.callHook("dom:renderTag",f,t,r);c.head&&t.head.appendChild(c.head),c.bodyOpen&&t.body.insertBefore(c.bodyOpen,t.body.firstChild),c.bodyClose&&t.body.appendChild(c.bodyClose),Object.values(i.pendingSideEffects).forEach(f=>f()),s._dom=i,s.dirty=!1,await s.hooks.callHook("dom:rendered",{renders:o})}async function Ro(s,e={}){const t=e.delayFn||(n=>setTimeout(n,10));return s._domUpdatePromise=s._domUpdatePromise||new Promise(n=>t(async()=>{await Ho(s,e),delete s._domUpdatePromise,n()}))}function Fo(s){return e=>{var n,o;const t=((o=(n=e.resolvedOptions.document)==null?void 0:n.head.querySelector('script[id="unhead:payload"]'))==null?void 0:o.innerHTML)||!1;return t&&e.push(JSON.parse(t)),{mode:"client",hooks:{"entries:updated":function(i){Ro(i,s)}}}}}const xo=["templateParams","htmlAttrs","bodyAttrs"],Vo={hooks:{"tag:normalise":function({tag:s}){["hid","vmid","key"].forEach(n=>{s.props[n]&&(s.key=s.props[n],delete s.props[n])});const t=rn(s)||(s.key?`${s.tag}:${s.key}`:!1);t&&(s._d=t)},"tags:resolve":function(s){const e={};s.tags.forEach(n=>{const o=(n.key?`${n.tag}:${n.key}`:n._d)||n._p,i=e[o];if(i){let a=n==null?void 0:n.tagDuplicateStrategy;if(!a&&xo.includes(n.tag)&&(a="merge"),a==="merge"){const l=i.props;["class","style"].forEach(c=>{l[c]&&(n.props[c]?(c==="style"&&!l[c].endsWith(";")&&(l[c]+=";"),n.props[c]=`${l[c]} ${n.props[c]}`):n.props[c]=l[c])}),e[o].props={...l,...n.props};return}else if(n._e===i._e){i._duped=i._duped||[],n._d=`${i._d}:${i._duped.length+1}`,i._duped.push(n);return}else if(bt(n)>bt(i))return}const r=Object.keys(n.props).length+(n.innerHTML?1:0)+(n.textContent?1:0);if(ft.includes(n.tag)&&r===0){delete e[o];return}e[o]=n});const t=[];Object.values(e).forEach(n=>{const o=n._duped;delete n._duped,t.push(n),o&&t.push(...o)}),s.tags=t,s.tags=s.tags.filter(n=>!(n.tag==="meta"&&(n.props.name||n.props.property)&&!n.props.content))}}},Bo={mode:"server",hooks:{"tags:resolve":function(s){const e={};s.tags.filter(t=>["titleTemplate","templateParams","title"].includes(t.tag)&&t._m==="server").forEach(t=>{e[t.tag]=t.tag.startsWith("title")?t.textContent:t.props}),Object.keys(e).length&&s.tags.push({tag:"script",innerHTML:JSON.stringify(e),props:{id:"unhead:payload",type:"application/json"}})}}},Wo=["script","link","bodyAttrs"],zo=s=>({hooks:{"tags:resolve":function(e){for(const t of e.tags.filter(n=>Wo.includes(n.tag)))Object.entries(t.props).forEach(([n,o])=>{n.startsWith("on")&&typeof o=="function"&&(s.ssr&&Ls.includes(n)?t.props[n]=`this.dataset.${n}fired = true`:delete t.props[n],t._eventHandlers=t._eventHandlers||{},t._eventHandlers[n]=o)}),s.ssr&&t._eventHandlers&&(t.props.src||t.props.href)&&(t.key=t.key||hs(t.props.src||t.props.href))},"dom:renderTag":function({$el:e,tag:t}){var n,o;for(const i of Object.keys((e==null?void 0:e.dataset)||{}).filter(r=>Ls.some(a=>`${a}fired`===r))){const r=i.replace("fired","");(o=(n=t._eventHandlers)==null?void 0:n[r])==null||o.call(e,new Event(r.replace("on","")))}}}}),Uo=["link","style","script","noscript"],qo={hooks:{"tag:normalise":({tag:s})=>{s.key&&Uo.includes(s.tag)&&(s.props["data-hid"]=s._h=hs(s.key))}}},Ko={hooks:{"tags:resolve":s=>{const e=t=>{var n;return(n=s.tags.find(o=>o._d===t))==null?void 0:n._p};for(const{prefix:t,offset:n}of No)for(const o of s.tags.filter(i=>typeof i.tagPriority=="string"&&i.tagPriority.startsWith(t))){const i=e(o.tagPriority.replace(t,""));typeof i<"u"&&(o._p=i+n)}s.tags.sort((t,n)=>t._p-n._p).sort((t,n)=>bt(t)-bt(n))}}},Jo={meta:"content",link:"href",htmlAttrs:"lang"},Go=s=>({hooks:{"tags:resolve":e=>{var a;const{tags:t}=e,n=(a=t.find(l=>l.tag==="title"))==null?void 0:a.textContent,o=t.findIndex(l=>l.tag==="templateParams"),i=o!==-1?t[o].props:{},r=i.separator||"|";delete i.separator,i.pageTitle=ht(i.pageTitle||n||"",i,r);for(const l of t.filter(c=>c.processTemplateParams!==!1)){const c=Jo[l.tag];c&&typeof l.props[c]=="string"?l.props[c]=ht(l.props[c],i,r):(l.processTemplateParams===!0||["titleTemplate","title"].includes(l.tag))&&["innerHTML","textContent"].forEach(u=>{typeof l[u]=="string"&&(l[u]=ht(l[u],i,r))})}s._templateParams=i,s._separator=r,e.tags=t.filter(l=>l.tag!=="templateParams")}}}),Qo={hooks:{"tags:resolve":s=>{const{tags:e}=s;let t=e.findIndex(o=>o.tag==="titleTemplate");const n=e.findIndex(o=>o.tag==="title");if(n!==-1&&t!==-1){const o=Es(e[t].textContent,e[n].textContent);o!==null?e[n].textContent=o||e[n].textContent:delete e[n]}else if(t!==-1){const o=Es(e[t].textContent);o!==null&&(e[t].textContent=o,e[t].tag="title",t=-1)}t!==-1&&delete e[t],s.tags=e.filter(Boolean)}}},Zo={hooks:{"tags:afterResolve":function(s){for(const e of s.tags)typeof e.innerHTML=="string"&&(e.innerHTML&&["application/ld+json","application/json"].includes(e.props.type)?e.innerHTML=e.innerHTML.replace(/{a.dirty=!0,e.callHook("entries:updated",a)};let o=0,i=[];const r=[],a={plugins:r,dirty:!1,resolvedOptions:s,hooks:e,headEntries(){return i},use(l){const c=typeof l=="function"?l(a):l;(!c.key||!r.some(u=>u.key===c.key))&&(r.push(c),Cs(c.mode,t)&&e.addHooks(c.hooks||{}))},push(l,c){c==null||delete c.head;const u={_i:o++,input:l,...c};return Cs(u.mode,t)&&(i.push(u),n()),{dispose(){i=i.filter(f=>f._i!==u._i),e.callHook("entries:updated",a),n()},patch(f){i=i.map(h=>(h._i===u._i&&(h.input=u.input=f),h)),n()}}},async resolveTags(){const l={tags:[],entries:[...i]};await e.callHook("entries:resolve",l);for(const c of l.entries){const u=c.resolvedInput||c.input;if(c.resolvedInput=await(c.transform?c.transform(u):u),c.resolvedInput)for(const f of await Do(c)){const h={tag:f,entry:c,resolvedOptions:a.resolvedOptions};await e.callHook("tag:normalise",h),l.tags.push(h.tag)}}return await e.callHook("tags:beforeResolve",l),await e.callHook("tags:resolve",l),await e.callHook("tags:afterResolve",l),l.tags},ssr:t};return[Vo,Bo,zo,qo,Ko,Go,Qo,Zo,...(s==null?void 0:s.plugins)||[]].forEach(l=>a.use(l)),a.hooks.callHook("init",a),a}function ei(){return ln}const ti=Fn.startsWith("3");function si(s){return typeof s=="function"?s():us(s)}function wt(s,e=""){if(s instanceof Promise)return s;const t=si(s);return!s||!t?t:Array.isArray(t)?t.map(n=>wt(n,e)):typeof t=="object"?Object.fromEntries(Object.entries(t).map(([n,o])=>n==="titleTemplate"||n.startsWith("on")?[n,us(o)]:[n,wt(o,n)])):t}const ni={hooks:{"entries:resolve":function(s){for(const e of s.entries)e.resolvedInput=wt(e.input)}}},cn="usehead";function oi(s){return{install(t){ti&&(t.config.globalProperties.$unhead=s,t.config.globalProperties.$head=s,t.provide(cn,s))}}.install}function ii(s={}){s.domDelayFn=s.domDelayFn||(t=>_t(()=>setTimeout(()=>t(),0)));const e=Yo(s);return e.use(ni),e.install=oi(e),e}const Is=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},js="__unhead_injection_handler__";function ri(){if(js in Is)return Is[js]();const s=Zs(cn);return s||console.warn("Unhead is missing Vue context, falling back to shared context. This may have unexpected results."),s||ei()}function ai(s,e={}){const t=e.head||ri();if(t)return t.ssr?t.push(s,e):li(t,s,e)}function li(s,e,t={}){const n=T(!1),o=T({});xe(()=>{o.value=n.value?{}:wt(e)});const i=s.push(o.value,t);return Q(o,a=>{i.patch(a)}),Ys()&&(xn(()=>{i.dispose()}),Vn(()=>{n.value=!0}),Bn(()=>{n.value=!1})),i}function un(){return Math.random().toString(36).replace(/[^a-z]+/g,"").substr(2,10)}function Z(s,e,t){Object.defineProperty(s,e,{value:t,writable:!0,enumerable:!1})}const Le=M({page:0,clicks:0});let ci=[],ui=[];Z(Le,"$syncUp",!0);Z(Le,"$syncDown",!0);Z(Le,"$paused",!1);Z(Le,"$onSet",s=>ci.push(s));Z(Le,"$onPatch",s=>ui.push(s));un();Z(Le,"$patch",async()=>!1);function fn(s,e,t=!1){const n=[];let o=!1,i=!1,r,a;const l=M(e);function c(d){n.push(d)}function u(d,p){l[d]!==p&&(clearTimeout(r),o=!0,l[d]=p,r=setTimeout(()=>o=!1,0))}function f(d){o||(clearTimeout(a),i=!0,Object.entries(d).forEach(([p,g])=>{l[p]=g}),a=setTimeout(()=>i=!1,0))}function h(d){let p;t?t&&window.addEventListener("storage",y=>{y&&y.key===d&&y.newValue&&f(JSON.parse(y.newValue))}):(p=new BroadcastChannel(d),p.addEventListener("message",y=>f(y.data)));function g(){!t&&p&&!i?p.postMessage(Wn(l)):t&&!i&&window.localStorage.setItem(d,JSON.stringify(l)),o||n.forEach(y=>y(l))}if(Q(l,g,{deep:!0,flush:"sync"}),t){const y=window.localStorage.getItem(d);y&&f(JSON.parse(y))}}return{init:h,onPatch:c,patch:u,state:l}}const{init:fi,onPatch:hi,patch:Ue,state:Ha}=fn(Le,{page:1,clicks:0,viewerPage:1,viewerClicks:0}),Ce=M({});let di=[],pi=[];Z(Ce,"$syncUp",!0);Z(Ce,"$syncDown",!0);Z(Ce,"$paused",!1);Z(Ce,"$onSet",s=>di.push(s));Z(Ce,"$onPatch",s=>pi.push(s));un();Z(Ce,"$patch",async()=>!1);const{init:gi,onPatch:Ra,patch:Fa,state:xa}=fn(Ce,{},!1),Ct="$$slidev-clicks-context",ds="$$slidev-page",hn="$$slidev-slide-element",mi="$$slidev-slide-scale",yi="$$slidev-context",Va="$$slidev-route",ps="$$slidev-render-context",Ba="$$slidev-active",vi="$$slidev-fontmatter",_i="$$slidev-slide-zoom",dt="slidev-vclick-target",qe="slidev-vclick-hidden",Ke="slidev-vclick-fade",Ft="slidev-vclick-hidden-explicitly",xt="slidev-vclick-current",Vt="slidev-vclick-prior",Qt=999999,bi=["localhost","127.0.0.1"],wi=["clicks","clicksStart","disabled","hide","hideInToc","layout","level","preload","routeAlias","src","title","transition","zoom","dragPos"],Wa=[...wi,"theme","titleTemplate","info","author","keywords","presenter","download","exportFilename","export","highlighter","lineNumbers","monaco","monacoTypesSource","monacoTypesAdditionalPackages","monacoRunAdditionalDeps","remoteAssets","selectable","record","colorSchema","routerMode","aspectRatio","canvasWidth","themeConfig","favicon","plantUmlServer","fonts","defaults","drawings","htmlAttrs","mdc","contextMenu"],dn=T(!1),gs=Symbol.for("yaml.alias"),ki=Symbol.for("yaml.document"),Ae=Symbol.for("yaml.map"),pn=Symbol.for("yaml.pair"),ms=Symbol.for("yaml.scalar"),ot=Symbol.for("yaml.seq"),ie=Symbol.for("yaml.node.type"),Be=s=>!!s&&typeof s=="object"&&s[ie]===gs,It=s=>!!s&&typeof s=="object"&&s[ie]===ki,gn=s=>!!s&&typeof s=="object"&&s[ie]===Ae,B=s=>!!s&&typeof s=="object"&&s[ie]===pn,F=s=>!!s&&typeof s=="object"&&s[ie]===ms,ys=s=>!!s&&typeof s=="object"&&s[ie]===ot;function J(s){if(s&&typeof s=="object")switch(s[ie]){case Ae:case ot:return!0}return!1}function q(s){if(s&&typeof s=="object")switch(s[ie]){case gs:case Ae:case ms:case ot:return!0}return!1}const Si=s=>(F(s)||J(s))&&!!s.anchor,Te=Symbol("break visit"),Mi=Symbol("skip children"),Ze=Symbol("remove node");function tt(s,e){const t=Oi(e);It(s)?Ne(null,s.contents,t,Object.freeze([s]))===Ze&&(s.contents=null):Ne(null,s,t,Object.freeze([]))}tt.BREAK=Te;tt.SKIP=Mi;tt.REMOVE=Ze;function Ne(s,e,t,n){const o=Pi(s,e,t,n);if(q(o)||B(o))return Ti(s,n,o),Ne(s,o,t,n);if(typeof o!="symbol"){if(J(e)){n=Object.freeze(n.concat(e));for(let i=0;iee(n,String(o),t));if(s&&typeof s.toJSON=="function"){if(!t||!Si(s))return s.toJSON(e,t);const n={aliasCount:0,count:1,res:void 0};t.anchors.set(s,n),t.onCreate=i=>{n.res=i,delete t.onCreate};const o=s.toJSON(e,t);return t.onCreate&&t.onCreate(o),o}return typeof s=="bigint"&&!(t!=null&&t.keep)?Number(s):s}class vs{constructor(e){Object.defineProperty(this,ie,{value:e})}clone(){const e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:t,maxAliasCount:n,onAnchor:o,reviver:i}={}){if(!It(e))throw new TypeError("A document argument is required");const r={anchors:new Map,doc:e,keep:!0,mapAsMap:t===!0,mapKeyWarned:!1,maxAliasCount:typeof n=="number"?n:100},a=ee(this,"",r);if(typeof o=="function")for(const{count:l,res:c}of r.anchors.values())o(c,l);return typeof i=="function"?Qe(i,{"":a},"",a):a}}class Ei extends vs{constructor(e){super(gs),this.source=e,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(e){let t;return tt(e,{Node:(n,o)=>{if(o===this)return tt.BREAK;o.anchor===this.source&&(t=o)}}),t}toJSON(e,t){if(!t)return{source:this.source};const{anchors:n,doc:o,maxAliasCount:i}=t,r=this.resolve(o);if(!r){const l=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(l)}let a=n.get(r);if(a||(ee(r,null,t),a=n.get(r)),!a||a.res===void 0){const l="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(l)}if(i>=0&&(a.count+=1,a.aliasCount===0&&(a.aliasCount=pt(o,r,n)),a.count*a.aliasCount>i)){const l="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(l)}return a.res}toString(e,t,n){const o=`*${this.source}`;if(e){if(mn(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){const i=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(i)}if(e.implicitKey)return`${o} `}return o}}function pt(s,e,t){if(Be(e)){const n=e.resolve(s),o=t&&n&&t.get(n);return o?o.count*o.aliasCount:0}else if(J(e)){let n=0;for(const o of e.items){const i=pt(s,o,t);i>n&&(n=i)}return n}else if(B(e)){const n=pt(s,e.key,t),o=pt(s,e.value,t);return Math.max(n,o)}return 1}const yn=s=>!s||typeof s!="function"&&typeof s!="object";class H extends vs{constructor(e){super(ms),this.value=e}toJSON(e,t){return t!=null&&t.keep?this.value:ee(this.value,e,t)}toString(){return String(this.value)}}H.BLOCK_FOLDED="BLOCK_FOLDED";H.BLOCK_LITERAL="BLOCK_LITERAL";H.PLAIN="PLAIN";H.QUOTE_DOUBLE="QUOTE_DOUBLE";H.QUOTE_SINGLE="QUOTE_SINGLE";const $i="tag:yaml.org,2002:";function Ai(s,e,t){if(e){const n=t.filter(i=>i.tag===e),o=n.find(i=>!i.format)??n[0];if(!o)throw new Error(`Tag ${e} not found`);return o}return t.find(n=>{var o;return((o=n.identify)==null?void 0:o.call(n,s))&&!n.format})}function kt(s,e,t){var f,h,d;if(It(s)&&(s=s.contents),q(s))return s;if(B(s)){const p=(h=(f=t.schema[Ae]).createNode)==null?void 0:h.call(f,t.schema,null,t);return p.items.push(s),p}(s instanceof String||s instanceof Number||s instanceof Boolean||typeof BigInt<"u"&&s instanceof BigInt)&&(s=s.valueOf());const{aliasDuplicateObjects:n,onAnchor:o,onTagObj:i,schema:r,sourceObjects:a}=t;let l;if(n&&s&&typeof s=="object"){if(l=a.get(s),l)return l.anchor||(l.anchor=o(s)),new Ei(l.anchor);l={anchor:null,node:null},a.set(s,l)}e!=null&&e.startsWith("!!")&&(e=$i+e.slice(2));let c=Ai(s,e,r.tags);if(!c){if(s&&typeof s.toJSON=="function"&&(s=s.toJSON()),!s||typeof s!="object"){const p=new H(s);return l&&(l.node=p),p}c=s instanceof Map?r[Ae]:Symbol.iterator in Object(s)?r[ot]:r[Ae]}i&&(i(c),delete t.onTagObj);const u=c!=null&&c.createNode?c.createNode(t.schema,s,t):typeof((d=c==null?void 0:c.nodeClass)==null?void 0:d.from)=="function"?c.nodeClass.from(t.schema,s,t):new H(s);return e?u.tag=e:c.default||(u.tag=c.tag),l&&(l.node=u),u}function Ds(s,e,t){let n=t;for(let o=e.length-1;o>=0;--o){const i=e[o];if(typeof i=="number"&&Number.isInteger(i)&&i>=0){const r=[];r[i]=n,n=r}else n=new Map([[i,n]])}return kt(n,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:s,sourceObjects:new Map})}const Li=s=>s==null||typeof s=="object"&&!!s[Symbol.iterator]().next().done;class _s extends vs{constructor(e,t){super(e),Object.defineProperty(this,"schema",{value:t,configurable:!0,enumerable:!1,writable:!0})}clone(e){const t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(t.schema=e),t.items=t.items.map(n=>q(n)||B(n)?n.clone(e):n),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(Li(e))this.add(t);else{const[n,...o]=e,i=this.get(n,!0);if(J(i))i.addIn(o,t);else if(i===void 0&&this.schema)this.set(n,Ds(this.schema,o,t));else throw new Error(`Expected YAML collection at ${n}. Remaining path: ${o}`)}}deleteIn(e){const[t,...n]=e;if(n.length===0)return this.delete(t);const o=this.get(t,!0);if(J(o))return o.deleteIn(n);throw new Error(`Expected YAML collection at ${t}. Remaining path: ${n}`)}getIn(e,t){const[n,...o]=e,i=this.get(n,!0);return o.length===0?!t&&F(i)?i.value:i:J(i)?i.getIn(o,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!B(t))return!1;const n=t.value;return n==null||e&&F(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(e){const[t,...n]=e;if(n.length===0)return this.has(t);const o=this.get(t,!0);return J(o)?o.hasIn(n):!1}setIn(e,t){const[n,...o]=e;if(o.length===0)this.set(n,t);else{const i=this.get(n,!0);if(J(i))i.setIn(o,t);else if(i===void 0&&this.schema)this.set(n,Ds(this.schema,o,t));else throw new Error(`Expected YAML collection at ${n}. Remaining path: ${o}`)}}}_s.maxFlowStringSingleLineLength=60;const Ci=s=>s.replace(/^(?!$)(?: $)?/gm,"#");function st(s,e){return/^\n+$/.test(s)?s.substring(1):e?s.replace(/^(?! *$)/gm,e):s}const He=(s,e,t)=>s.endsWith(`
+`)?st(t,e):t.includes(`
+`)?`
+`+st(t,e):(s.endsWith(" ")?"":" ")+t,vn="flow",Zt="block",gt="quoted";function jt(s,e,t="flow",{indentAtStart:n,lineWidth:o=80,minContentWidth:i=20,onFold:r,onOverflow:a}={}){if(!o||o<0)return s;const l=Math.max(1+i,1+o-e.length);if(s.length<=l)return s;const c=[],u={};let f=o-e.length;typeof n=="number"&&(n>o-Math.max(2,i)?c.push(0):f=o-n);let h,d,p=!1,g=-1,y=-1,v=-1;t===Zt&&(g=Ns(s,g,e.length),g!==-1&&(f=g+l));for(let b;b=s[g+=1];){if(t===gt&&b==="\\"){switch(y=g,s[g+1]){case"x":g+=3;break;case"u":g+=5;break;case"U":g+=9;break;default:g+=1}v=g}if(b===`
+`)t===Zt&&(g=Ns(s,g,e.length)),f=g+e.length+l,h=void 0;else{if(b===" "&&d&&d!==" "&&d!==`
+`&&d!==" "){const w=s[g+1];w&&w!==" "&&w!==`
+`&&w!==" "&&(h=g)}if(g>=f)if(h)c.push(h),f=h+l,h=void 0;else if(t===gt){for(;d===" "||d===" ";)d=b,b=s[g+=1],p=!0;const w=g>v+1?g-2:y-1;if(u[w])return s;c.push(w),u[w]=!0,f=w+l,h=void 0}else p=!0}d=b}if(p&&a&&a(),c.length===0)return s;r&&r();let _=s.slice(0,c[0]);for(let b=0;b({indentAtStart:e?s.indent.length:s.indentAtStart,lineWidth:s.options.lineWidth,minContentWidth:s.options.minContentWidth}),Nt=s=>/^(%|---|\.\.\.)/m.test(s);function Ii(s,e,t){if(!e||e<0)return!1;const n=e-t,o=s.length;if(o<=n)return!1;for(let i=0,r=0;in)return!0;if(r=i+1,o-r<=n)return!1}return!0}function Ye(s,e){const t=JSON.stringify(s);if(e.options.doubleQuotedAsJSON)return t;const{implicitKey:n}=e,o=e.options.doubleQuotedMinMultiLineLength,i=e.indent||(Nt(s)?" ":"");let r="",a=0;for(let l=0,c=t[l];c;c=t[++l])if(c===" "&&t[l+1]==="\\"&&t[l+2]==="n"&&(r+=t.slice(a,l)+"\\ ",l+=1,a=l,c="\\"),c==="\\")switch(t[l+1]){case"u":{r+=t.slice(a,l);const u=t.substr(l+2,4);switch(u){case"0000":r+="\\0";break;case"0007":r+="\\a";break;case"000b":r+="\\v";break;case"001b":r+="\\e";break;case"0085":r+="\\N";break;case"00a0":r+="\\_";break;case"2028":r+="\\L";break;case"2029":r+="\\P";break;default:u.substr(0,2)==="00"?r+="\\x"+u.substr(2):r+=t.substr(l,6)}l+=5,a=l+1}break;case"n":if(n||t[l+2]==='"'||t.length
+`;let f,h;for(h=t.length;h>0;--h){const S=t[h-1];if(S!==`
+`&&S!==" "&&S!==" ")break}let d=t.substring(h);const p=d.indexOf(`
+`);p===-1?f="-":t===d||p!==d.length-1?(f="+",i&&i()):f="",d&&(t=t.slice(0,-d.length),d[d.length-1]===`
+`&&(d=d.slice(0,-1)),d=d.replace(Xt,`$&${c}`));let g=!1,y,v=-1;for(y=0;y")+(g?c?"2":"1":"")+f;if(s&&(w+=" "+a(s.replace(/ ?[\r\n]+/g," ")),o&&o()),u)return t=t.replace(/\n+/g,`$&${c}`),`${w}
+${c}${_}${t}${d}`;t=t.replace(/\n+/g,`
+$&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${c}`);const O=jt(`${_}${t}${d}`,c,Zt,Dt(n,!0));return`${w}
+${c}${O}`}function ji(s,e,t,n){const{type:o,value:i}=s,{actualString:r,implicitKey:a,indent:l,indentStep:c,inFlow:u}=e;if(a&&i.includes(`
+`)||u&&/[[\]{},]/.test(i))return Re(i,e);if(!i||/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(i))return a||u||!i.includes(`
+`)?Re(i,e):mt(s,e,t,n);if(!a&&!u&&o!==H.PLAIN&&i.includes(`
+`))return mt(s,e,t,n);if(Nt(i)){if(l==="")return e.forceBlockIndent=!0,mt(s,e,t,n);if(a&&l===c)return Re(i,e)}const f=i.replace(/\n+/g,`$&
+${l}`);if(r){const h=g=>{var y;return g.default&&g.tag!=="tag:yaml.org,2002:str"&&((y=g.test)==null?void 0:y.test(f))},{compat:d,tags:p}=e.doc.schema;if(p.some(h)||d!=null&&d.some(h))return Re(i,e)}return a?f:jt(f,l,vn,Dt(e,!1))}function Di(s,e,t,n){const{implicitKey:o,inFlow:i}=e,r=typeof s.value=="string"?s:Object.assign({},s,{value:String(s.value)});let{type:a}=s;a!==H.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(r.value)&&(a=H.QUOTE_DOUBLE);const l=u=>{switch(u){case H.BLOCK_FOLDED:case H.BLOCK_LITERAL:return o||i?Re(r.value,e):mt(r,e,t,n);case H.QUOTE_DOUBLE:return Ye(r.value,e);case H.QUOTE_SINGLE:return Yt(r.value,e);case H.PLAIN:return ji(r,e,t,n);default:return null}};let c=l(a);if(c===null){const{defaultKeyType:u,defaultStringType:f}=e.options,h=o&&u||f;if(c=l(h),c===null)throw new Error(`Unsupported default string type ${h}`)}return c}function Ni(s,e){const t=Object.assign({blockQuote:!0,commentString:Ci,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trueStr:"true",verifyAliasOrder:!0},s.schema.toStringOptions,e);let n;switch(t.collectionStyle){case"block":n=!1;break;case"flow":n=!0;break;default:n=null}return{anchors:new Set,doc:s,flowCollectionPadding:t.flowCollectionPadding?" ":"",indent:"",indentStep:typeof t.indent=="number"?" ".repeat(t.indent):" ",inFlow:n,options:t}}function Hi(s,e){var o;if(e.tag){const i=s.filter(r=>r.tag===e.tag);if(i.length>0)return i.find(r=>r.format===e.format)??i[0]}let t,n;if(F(e)){n=e.value;const i=s.filter(r=>{var a;return(a=r.identify)==null?void 0:a.call(r,n)});t=i.find(r=>r.format===e.format)??i.find(r=>!r.format)}else n=e,t=s.find(i=>i.nodeClass&&n instanceof i.nodeClass);if(!t){const i=((o=n==null?void 0:n.constructor)==null?void 0:o.name)??typeof n;throw new Error(`Tag not resolved for ${i} value`)}return t}function Ri(s,e,{anchors:t,doc:n}){if(!n.directives)return"";const o=[],i=(F(s)||J(s))&&s.anchor;i&&mn(i)&&(t.add(i),o.push(`&${i}`));const r=s.tag?s.tag:e.default?null:e.tag;return r&&o.push(n.directives.tagString(r)),o.join(" ")}function St(s,e,t,n){var l;if(B(s))return s.toString(e,t,n);if(Be(s)){if(e.doc.directives)return s.toString(e);if((l=e.resolvedAliases)!=null&&l.has(s))throw new TypeError("Cannot stringify circular structure without alias nodes");e.resolvedAliases?e.resolvedAliases.add(s):e.resolvedAliases=new Set([s]),s=s.resolve(e.doc)}let o;const i=q(s)?s:e.doc.createNode(s,{onTagObj:c=>o=c});o||(o=Hi(e.doc.schema.tags,i));const r=Ri(i,o,e);r.length>0&&(e.indentAtStart=(e.indentAtStart??0)+r.length+1);const a=typeof o.stringify=="function"?o.stringify(i,e,t,n):F(i)?Di(i,e,t,n):i.toString(e,t,n);return r?F(i)||a[0]==="{"||a[0]==="["?`${r} ${a}`:`${r}
+${e.indent}${a}`:a}function Fi({key:s,value:e},t,n,o){const{allNullValues:i,doc:r,indent:a,indentStep:l,options:{commentString:c,indentSeq:u,simpleKeys:f}}=t;let h=q(s)&&s.comment||null;if(f){if(h)throw new Error("With simple keys, key nodes cannot have comments");if(J(s)){const E="With simple keys, collection cannot be used as a key value";throw new Error(E)}}let d=!f&&(!s||h&&e==null&&!t.inFlow||J(s)||(F(s)?s.type===H.BLOCK_FOLDED||s.type===H.BLOCK_LITERAL:typeof s=="object"));t=Object.assign({},t,{allNullValues:!1,implicitKey:!d&&(f||!i),indent:a+l});let p=!1,g=!1,y=St(s,t,()=>p=!0,()=>g=!0);if(!d&&!t.inFlow&&y.length>1024){if(f)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");d=!0}if(t.inFlow){if(i||e==null)return p&&n&&n(),y===""?"?":d?`? ${y}`:y}else if(i&&!f||e==null&&d)return y=`? ${y}`,h&&!p?y+=He(y,t.indent,c(h)):g&&o&&o(),y;p&&(h=null),d?(h&&(y+=He(y,t.indent,c(h))),y=`? ${y}
+${a}:`):(y=`${y}:`,h&&(y+=He(y,t.indent,c(h))));let v,_,b;q(e)?(v=!!e.spaceBefore,_=e.commentBefore,b=e.comment):(v=!1,_=null,b=null,e&&typeof e=="object"&&(e=r.createNode(e))),t.implicitKey=!1,!d&&!h&&F(e)&&(t.indentAtStart=y.length+1),g=!1,!u&&l.length>=2&&!t.inFlow&&!d&&ys(e)&&!e.flow&&!e.tag&&!e.anchor&&(t.indent=t.indent.substring(2));let w=!1;const O=St(e,t,()=>w=!0,()=>g=!0);let S=" ";if(h||v||_){if(S=v?`
+`:"",_){const E=c(_);S+=`
+${st(E,t.indent)}`}O===""&&!t.inFlow?S===`
+`&&(S=`
+
+`):S+=`
+${t.indent}`}else if(!d&&J(e)){const E=O[0],$=O.indexOf(`
+`),I=$!==-1,x=t.inFlow??e.flow??e.items.length===0;if(I||!x){let se=!1;if(I&&(E==="&"||E==="!")){let P=O.indexOf(" ");E==="&"&&P!==-1&&P<$&&O[P+1]==="!"&&(P=O.indexOf(" ",P+1)),(P===-1||$