diff --git a/docs/case/case1.md b/docs/case/case1.md
new file mode 100644
index 0000000000..ba94f2a770
--- /dev/null
+++ b/docs/case/case1.md
@@ -0,0 +1,3 @@
+https://github.com/spiritLHLS/one-click-installation-script
+
+# 说明与用例稍后补充
\ No newline at end of file
diff --git a/docs/case/case2.md b/docs/case/case2.md
new file mode 100644
index 0000000000..bf319801dc
--- /dev/null
+++ b/docs/case/case2.md
@@ -0,0 +1,3 @@
+https://github.com/spiritLHLS/ecs
+
+# 说明与用例稍后补充
\ No newline at end of file
diff --git a/docs/case/case3.md b/docs/case/case3.md
new file mode 100644
index 0000000000..6b8586f111
--- /dev/null
+++ b/docs/case/case3.md
@@ -0,0 +1,3 @@
+https://github.com/spiritLHLS/ecsspeed
+
+# 说明与用例稍后补充
\ No newline at end of file
diff --git a/docs/case/case4.md b/docs/case/case4.md
new file mode 100644
index 0000000000..49f05c5d63
--- /dev/null
+++ b/docs/case/case4.md
@@ -0,0 +1,3 @@
+https://github.com/spiritLHLS/Oracle-server-keep-alive-script
+
+# 说明与用例稍后补充
\ No newline at end of file
diff --git a/docs/case/case5.md b/docs/case/case5.md
new file mode 100644
index 0000000000..e9d2bc0efa
--- /dev/null
+++ b/docs/case/case5.md
@@ -0,0 +1,3 @@
+https://github.com/spiritLHLS/convoypanel-scripts
+
+# 说明与用例稍后补充
\ No newline at end of file
diff --git a/docs/case/index.md b/docs/case/index.md
new file mode 100644
index 0000000000..2e67890c34
--- /dev/null
+++ b/docs/case/index.md
@@ -0,0 +1,12 @@
+---
+home: true
+heroImage: https://raw.githubusercontent.com/spiritlhls/pages/main/logo.jpg
+heroText: Linux相关项目
+tagline: 与Linux相关的一些项目
+actionText: 查看项目 →
+actionLink: /case/case1
+features:
+- title: 注意事项
+ details: 注意每个项目说明,部分项目有可能对系统造成不可修复的错误,需要重装系统,请仔细查看说明
+---
+
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
diff --git a/docs/components/ComponentInHeader.vue b/docs/components/ComponentInHeader.vue
new file mode 100644
index 0000000000..bbccc8ef2e
--- /dev/null
+++ b/docs/components/ComponentInHeader.vue
@@ -0,0 +1,3 @@
+
+ ⚡
+
diff --git a/docs/developer/index.md b/docs/developer/index.md
new file mode 100644
index 0000000000..2088b59359
--- /dev/null
+++ b/docs/developer/index.md
@@ -0,0 +1,10 @@
+---
+home: true
+heroImage: https://raw.githubusercontent.com/spiritlhls/pages/main/logo.jpg
+heroText: 开发手册
+tagline: 欢迎使用一键虚拟化项目开发手册,欢迎你提出高质量的Pull Request,帮助一键虚拟化项目变得更好!
+actionText: 开始使用 →
+actionLink: /developer/l10n
+footer: Copyright © 2023-present oneclickvirt
+---
+
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
\ No newline at end of file
diff --git a/docs/developer/l10n.md b/docs/developer/l10n.md
new file mode 100644
index 0000000000..ceaca394a2
--- /dev/null
+++ b/docs/developer/l10n.md
@@ -0,0 +1,10 @@
+**你可以在开发新功能时遵循以下步骤来支持本地化**
+
+## 介绍
+1. 你可以直接使用 `/resource/l10n/zh-CN.toml` 中已有的文本配置来替换新功能中的文本
+2. 如果新功能中有新增文本,请参考 `zh-CN.toml` 的配置文本,将新文本拉取到 `zh-CN.toml` 等其他语言的配置文件中,并添加翻译
+
+## 新本地化文本的添加
+1. 在 `/resource/l10n/` 中添加新的语言文本配置
+2. 在新的语言文本配置中拉取其他语言已有的文本配置
+3. 为新的语言文本配置添加翻译
\ No newline at end of file
diff --git a/docs/en_US/developer/index.md b/docs/en_US/developer/index.md
new file mode 100644
index 0000000000..6b7e5c6810
--- /dev/null
+++ b/docs/en_US/developer/index.md
@@ -0,0 +1,10 @@
+---
+home: true
+heroImage: https://raw.githubusercontent.com/spiritlhls/pages/main/logo.jpg
+heroText: Development Manual
+tagline: Welcome to the Nezha Monitoring Development Manual.
+actionText: Start Now →
+actionLink: /en_US/developer/l10n
+footer: Copyright © 2023-present oneclickvirt
+---
+
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
diff --git a/docs/en_US/developer/l10n.md b/docs/en_US/developer/l10n.md
new file mode 100644
index 0000000000..4de5103ad7
--- /dev/null
+++ b/docs/en_US/developer/l10n.md
@@ -0,0 +1,10 @@
+**You can follow these steps to support localization when developing new features**
+
+## Introduction
+1. You can directly use the text configuration already available in `/resource/l10n/en-US.toml` to replace the text in the new feature.
+2. If there is new text in the new feature, please refer to the configuration text in `en-US.toml`, pull the new text into the configuration files of other languages such as `en-US.toml`, and add translations.
+
+## Adding a new localized text file
+1. Add a new language text configuration in `/resource/l10n/`.
+2. Pull existing text configurations from other languages in the new language text configuration.
+3. Add translations for the new language text configuration.
\ No newline at end of file
diff --git a/docs/en_US/guide/dashboard.md b/docs/en_US/guide/dashboard.md
new file mode 100644
index 0000000000..93f8113d5f
--- /dev/null
+++ b/docs/en_US/guide/dashboard.md
@@ -0,0 +1,35 @@
+## 准备工作
+
+需要虚拟化出服务器,你需要:
+1. 一台可以连接公网的服务器( VPS 或 Dedicated Server),最好能完美访问 Github 的 RAW 页面,部分项目部分组件可能未使用 CDN 加速
+::: tip
+如果您位于中国大陆,访问 Github 有困难,请注意配套脚本和项目是否有说明已使用 CDN 加速
+:::
+2. 本地可以稳定连接SSH,如果不能稳定连接,请使用```screen```命令创建窗口后,在窗口内执行命令
+::: tip
+不会用screen命令的,自行查找相关教程学习
+:::
+3. 确保服务器的系统和硬件满足对应项目的要求,详见对应项目说明
+
+**本文档将以VPS作为范例,且该VPS纯净,无原生环境问题,如有必要请重装系统保证初始环境的纯净**
+:::warning
+PVE项目可能造成宿主机出现问题,如果你不会看Bug和修复系统,那么不建议你在生产环境中使用,使用PVE相关脚本请确保宿主机随时可重装系统
+:::
+
+
+
+## 项目仓库
+
+欢迎Star和Fork
+
+### PVE相关的各种一键脚本
+
+[https://github.com/spiritLHLS/pve](https://github.com/spiritLHLS/pve)
+
+### 通过LXD/LXC命令批量或单独开设NAT服务器以及维护
+
+[https://github.com/spiritLHLS/lxc](https://github.com/spiritLHLS/lxc)
+
+### 通过docker批量或单独开设NAT服务器
+
+[https://github.com/spiritLHLS/docker](https://github.com/spiritLHLS/docker)
\ No newline at end of file
diff --git a/docs/en_US/guide/dashboardq.md b/docs/en_US/guide/dashboardq.md
new file mode 100644
index 0000000000..cbde71ff3d
--- /dev/null
+++ b/docs/en_US/guide/dashboardq.md
@@ -0,0 +1,10 @@
+
+Give me a cup of coffee.
+
+https://ko-fi.com/spiritlhl
+
+USDT-TRC20
+
+```bash
+TZ7nf8XAL9zQUo63xokazaBdCPeCgPfcwd
+```
\ No newline at end of file
diff --git a/docs/en_US/guide/docker_build.md b/docs/en_US/guide/docker_build.md
new file mode 100644
index 0000000000..2a9e06ea03
--- /dev/null
+++ b/docs/en_US/guide/docker_build.md
@@ -0,0 +1,106 @@
+## 单独开设
+
+下载脚本
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/docker/main/scripts/onedocker.sh -o onedocker.sh && chmod +x onedocker.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/docker/main/scripts/onedocker.sh -o onedocker.sh && chmod +x onedocker.sh
+```
+
+运行
+
+```
+./onedocker.sh name cpu memory password sshport startport endport system
+```
+
+目前system仅支持选择alpine或debian,默认是debian
+
+### 示例
+
+* 以下为开设的示例容器的信息:
+`容器名字` - test
+`SSH登录的用户名` - root
+`SSH登录的密码` - 123456
+`CPU核数` - 1
+`内存大小` - 512MB
+`SSH端口` - 25000
+`内外网映射端口一致的区间` - 34975到35000
+`系统` - debian
+
+```shell
+./onedocker.sh test 1 512 123456 25000 34975 35000 debian
+```
+
+删除示例
+
+```shell
+docker rm -f test
+rm -rf test
+ls
+```
+
+进入示例
+
+```shell
+docker exec -it test /bin/bash
+```
+
+要退出容器就执行```exit```退出。
+
+### 查询信息
+
+```shell
+cat 容器名字
+```
+
+输出格式
+
+```
+容器名字 SSH端口 登陆的root密码 核数 内存 外网端口起 外网端口止
+```
+
+## 批量开设
+
+- 批量多次运行继承配置生成
+- 生成多个时为避免SSH连接中断建议在screen中执行
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/docker/main/scripts/dockers.sh -o dockers.sh && chmod +x dockers.sh && bash dockers.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/docker/main/scripts/onedocker.sh -o onedocker.sh && chmod +x onedocker.sh
+```
+
+## 查询批量开设的信息
+
+```shell
+cat dclog
+```
+
+输出格式
+
+```
+容器名字 SSH端口 登陆的root密码 核数 内存 外网端口起 外网端口止
+```
+
+一行一个容器对应的信息
+
+## 卸载所有docker容器和镜像
+
+```shell
+docker rm -f $(docker ps -aq); docker rmi $(docker images -aq)
+rm -rf dclog
+ls
+```
\ No newline at end of file
diff --git a/docs/en_US/guide/docker_install.md b/docs/en_US/guide/docker_install.md
new file mode 100644
index 0000000000..561787d620
--- /dev/null
+++ b/docs/en_US/guide/docker_install.md
@@ -0,0 +1,17 @@
+## 环境预设
+
+- 检测环境
+- 安装docker
+- 下载预制脚本
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/docker/main/scripts/pre_build.sh -o pre_build.sh && chmod +x pre_build.sh && bash pre_build.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/docker/main/scripts/pre_build.sh -o pre_build.sh && chmod +x pre_build.sh && bash pre_build.sh
+```
\ No newline at end of file
diff --git a/docs/en_US/guide/docker_precheck.md b/docs/en_US/guide/docker_precheck.md
new file mode 100644
index 0000000000..826ead1c05
--- /dev/null
+++ b/docs/en_US/guide/docker_precheck.md
@@ -0,0 +1,21 @@
+## 项目特点
+
+通过docker批量或单独开设NAT服务器(Bulk or individual NAT server provisioning via docker)
+
+默认使用debian系统,每个容器自带1个外网ssh端口,25个内外网一致端口
+
+默认创建的是非特权容器,且不挂载与宿主机的docker的守护进程之间的通信,所以**宿主机创建的docker虚拟化的NAT服务器内无法再嵌套虚拟化docker**
+
+由于只是在宿主机进行了CPU和内存的限制未在容器内使用cgroup驱动,所以在容器内使用服务器测试脚本检测容器的可用资源是无效的,显示的会是宿主机的资源
+
+由于大部分云服务器xfs文件系统不启用pquota选项,所以**默认共享宿主机硬盘,无法限制每个容器的磁盘大小**
+
+## 配置要求
+
+系统可安装docker即可用,网络能连接Github的raw界面就能用,硬件配置只要不拉跨就行,空闲硬盘有3G就行
+
+推荐在开设NAT服务器前先增加部分SWAP虚拟内存,避免突发的内存占用导致母鸡卡死 [跳转](https://github.com/spiritLHLS/addswap)
+
+PS: 如果硬件资源只是好了一点,需要限制更多东西并需要配置IPV6独立地址和限制硬盘大小,可使用LXD批量开LXC虚拟化的容器 [跳转](https://github.com/spiritLHLS/lxc)
+
+PS: 如果硬件非常好资源很多,可使用PVE批量开KVM虚拟化的虚拟机 [跳转](https://github.com/spiritLHLS/pve)
\ No newline at end of file
diff --git a/docs/en_US/guide/docker_qa.md b/docs/en_US/guide/docker_qa.md
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/docs/en_US/guide/docker_thanks.md b/docs/en_US/guide/docker_thanks.md
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/docs/en_US/guide/lxd_extra_config.md b/docs/en_US/guide/lxd_extra_config.md
new file mode 100644
index 0000000000..01bb4296b4
--- /dev/null
+++ b/docs/en_US/guide/lxd_extra_config.md
@@ -0,0 +1,124 @@
+::tip
+以下的配置安装会加重母鸡的负担,非必要不要安装
+如果是个人使用,可忽略防滥用部分脚本的安装
+::
+
+## 自动配置IPV6地址
+
+- (***非必须***,不使用的也没问题)
+- **该脚本仅适用于母鸡有给```IPV6```子网且是```/64```的,且母鸡绑定了子网的```第一个IP```做```母鸡的IPV6地址或IPV6的gateway```**
+- 自动为LXD创建的LXC容器配置```IPV6```地址
+- 已集成到```buildone.sh```中可使用变量控制且无需事先下载,该脚本可不手动使用,在使用```buildone.sh```时配置Y开启即可
+
+下载脚本
+
+国际
+
+```bash
+curl -L https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/build_ipv6_network.sh -o build_ipv6_network.sh && chmod +x build_ipv6_network.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/build_ipv6_network.sh -o build_ipv6_network.sh && chmod +x build_ipv6_network.sh
+```
+
+自动为容器配置IPV6映射地址
+
+```bash
+bash build_ipv6_network.sh 容器名称
+```
+
+映射完毕会打印信息
+
+示例(给test容器自动配置IPV6地址,配置完成会写入一个test_v6的文件信息)
+
+```bash
+bash build_ipv6_network.sh test
+```
+
+删除所有IPV6已映射的规则
+
+```bash
+ip6tables -t nat -F PREROUTING
+ip6tables-legacy -t nat -F PREROUTING
+ip6tables-save > /etc/iptables/rules.v6
+netfilter-persistent save
+netfilter-persistent reload
+service netfilter-persistent restart
+```
+
+卸载IPV6地址绑定的守护进程和对应的文件
+
+```shell
+systemctl stop add-ipv6.service
+systemctl disable add-ipv6.service
+rm /etc/systemd/system/add-ipv6.service
+systemctl daemon-reload
+rm /usr/local/bin/add-ipv6.sh
+```
+
+## 屏蔽容易被滥用的端口的出入流量以屏蔽端口和屏蔽滥用工具包
+
+- (***非必须***,该脚本仅仅是为了防止容器滥用方便,不装的也没问题)
+- 事前预防
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/rules.sh -o rules.sh && chmod +x rules.sh && bash rules.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/rules.sh -o rules.sh && chmod +x rules.sh && bash rules.sh
+```
+
+##### 使用screen配置监控屏蔽某些进程的执行遇到某些进程的出现直接关闭容器
+
+- 如需停止监控可使用```screen```命令停止```lxc_moniter```这个名字的窗口并删除
+- (***非必须***,该脚本仅仅是为了防止容器滥用方便,不装的也没问题)
+- 事后停机
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/build_monitor.sh -o build_monitor.sh && chmod +x build_monitor.sh && bash build_monitor.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/build_monitor.sh -o build_monitor.sh && chmod +x build_monitor.sh && bash build_monitor.sh
+```
+
+##### 一键安装开lxd母鸡所需要的带vnstat环境的常用预配置环境
+
+- (***非必须***,该脚本仅仅是为了站点对接监控方便,不装的也没问题)
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/backend.sh -o backend.sh && chmod +x backend.sh && bash backend.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/backend.sh -o backend.sh && chmod +x backend.sh && bash backend.sh
+```
+
+##### 一键安装母鸡可视化操作的面板
+
+- (***非必须***,该面板只是为了方便可视化操作,没有也没问题)
+- 原作者仓库:[跳转](https://github.com/turtle0x1/LxdMosaic)
+
+```shell
+lxc config set core.https_address [::]
+lxc config set core.trust_password some-secret-string
+snap install lxdmosaic
+```
+
+安装完毕后打开母鸡IP地址,按照提示设置admin的密码,其他一路默认就能使用面板了
diff --git a/docs/en_US/guide/lxd_install.md b/docs/en_US/guide/lxd_install.md
new file mode 100644
index 0000000000..3dcf856365
--- /dev/null
+++ b/docs/en_US/guide/lxd_install.md
@@ -0,0 +1,104 @@
+## 手动安装
+
+新手推荐,避免有bug不知道怎么修,当然如果只是图方便又是老手懂排查BUG,用后面的一键安装也行
+
+### 关闭防火墙
+
+```bash
+apt update
+apt install curl wget sudo dos2unix ufw jq -y
+ufw disable
+```
+
+### 开设虚拟内存SWAP
+
+内存看你开多少小鸡,这里如果要开8个,换算需要2G内存,实际内存如果是512MB内存,还需要开1.5G,保守点开2G虚拟内存即可
+
+执行下面命令,输入1,再输入2048,代表开2G虚拟内存
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/swap.sh -o swap.sh && chmod +x swap.sh && bash swap.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/swap.sh -o swap.sh && chmod +x swap.sh && bash swap.sh
+```
+
+### 安装LXD
+
+实际swap开的虚拟内存应该是实际内存的2倍,也就是开1G是合理的,上面我描述的情况属于超开了
+
+```
+apt install snapd -y
+snap install lxd
+/snap/bin/lxd init
+```
+
+如果上面的命令中出现下面的错误
+
+(snap "lxd" assumes unsupported features: snapd2.39 (try to update snapd and refresh the core snap))
+
+使用命令修补后再进行lxd的安装
+
+```
+snap install core
+```
+
+如果无异常,上面三行命令执行结果如下
+
+
+
+一般的选项回车默认即可
+
+选择配置物理盘大小(提示默认最小1GB那个选项),一般我填空闲磁盘大小减去内存大小后乘以0.95并向下取整,这里我填了10GB
+
+提示带auto的更新image的选项记得选no,避免更新占用系统
+
+测试lxc有没有软连接上
+
+```
+lxc -h
+```
+
+如果报错则执行以下命令软连接lxc命令
+
+```bash
+! lxc -h >/dev/null 2>&1 && echo 'alias lxc="/snap/bin/lxc"' >> /root/.bashrc && source /root/.bashrc
+export PATH=$PATH:/snap/bin
+```
+
+连接后再测试lxc命令是否有报错找不到
+
+## 一键安装
+
+::tip
+如果是全新的服务器,务必保证apt update和apt install curl都无问题再执行本脚本
+且自开机起最好等待5分钟后再执行以下命令,避免系统默认设置中就执行了本脚本导致apt源卡死
+::
+- 环境要求:Ubuntu 18+(推荐),Debian 8+(仅限x86_64架构)
+
+**如果是Debian系的宿主机,务必在screen中执行本脚本,避免长期运行时SSH中断导致ZFS编译安装失败**
+
+这里的虚拟内存是说要开的SWAP大小,存储池则是你所有要开的小鸡占的盘的大小的总和
+
+环境安装过程中可能需要重启服务器再次执行以加载含zfs的内核,一切以运行后命令行的提示为准
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/lxdinstall.sh -o lxdinstall.sh && chmod +x lxdinstall.sh && bash lxdinstall.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/lxdinstall.sh -o lxdinstall.sh && chmod +x lxdinstall.sh && bash lxdinstall.sh
+```
+
+例子:
+
+如果系统盘除去已占用空间还有18G硬盘空余,想开2G虚拟内存(2048MB的SWAP),15G的存储池,按照命令行的提示则依次输入```2048```和```15```
\ No newline at end of file
diff --git a/docs/en_US/guide/lxd_lxc.md b/docs/en_US/guide/lxd_lxc.md
new file mode 100644
index 0000000000..29ff0806c1
--- /dev/null
+++ b/docs/en_US/guide/lxd_lxc.md
@@ -0,0 +1,218 @@
+## 普通的批量版本
+
+开出的小鸡配置:
+
+- 1核256MB内存1GB硬盘限速250Mbps带宽
+- 带1个SSH端口,25个外网端口
+- 默认内存和硬盘大小
+
+::tip
+lxc若命令无问题,执行初始化开小鸡,这一步最好放```screen```中后台挂起执行,开小鸡时长与你开几个和母鸡配置相关
+::
+
+执行下面命令加载开机脚本
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/init.sh -o init.sh && chmod +x init.sh && dos2unix init.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/init.sh -o init.sh && chmod +x init.sh && dos2unix init.sh
+```
+
+下面命令为开小鸡名字前缀为**tj**的**10**个小鸡
+
+```shell
+./init.sh tj 10
+```
+
+有时候init.sh的运行路径有问题,此时建议前面加上sudo强制根目录执行
+
+### 只有一个SSH端口的版本
+
+开出的小鸡配置:
+
+- 1核128MB内存300MB硬盘限速200Mbps带宽
+- 只有一个SSH端口
+- 无法挂载warp
+
+::tip
+lxc若命令无问题,执行初始化开小鸡,这一步最好放```screen```中后台挂起执行,开小鸡时长与你开几个和母鸡配置相关
+::
+
+加载开机脚本
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/least.sh -o least.sh && chmod +x least.sh && dos2unix least.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/least.sh -o least.sh && chmod +x least.sh && dos2unix least.sh
+```
+
+下列命令最后一行为开小鸡名字前缀为**tj**的**10**个小鸡
+
+```shell
+./least.sh tj 10
+```
+
+有时候least.sh的运行路径有问题,此时建议前面加上sudo强制根目录执行
+
+## 查看已批量开设的信息
+
+开完小鸡后,具体信息会生成在当前目录下的log文件中,格式如下
+
+```shell
+1号服务器名称 密码 ssh端口 外网端口起始 外网端口终止
+2号服务器名称 密码 ssh端口 外网端口起始 外网端口终止
+```
+
+如果想要查看,只需在当前目录执行以下命令打印log文件即可
+
+```shell
+cat log
+```
+
+::warning
+不要拿该脚本开出的小鸡当生产环境,LXC虚拟化不支持换内核,dd,开启bbr等操作
+::
+
+## 部分常用LXD命令
+
+查看所有
+
+```bash
+lxc list
+```
+
+查看个例
+
+```bash
+lxc info 服务器名字
+```
+
+启动个例
+
+```bash
+lxc start 服务器名字
+```
+
+停止个例
+
+```bash
+lxc stop 服务器名字
+```
+
+删除个例
+
+```bash
+lxc delete -f 服务器名字
+```
+
+进入内部
+
+```bash
+lxc exec 服务器名字 /bin/bash
+```
+
+退出则输入```exit```回车即可
+
+删除所有LXC容器
+
+```bash
+lxc list | awk '{print $2}' | grep -v "^$" | xargs -I {} lxc delete -f {}
+```
+
+在容器内执行删除无用日志
+
+```bash
+sudo apt-get autoremove
+sudo apt-get clean
+sudo find /var/log -type f -delete
+sudo find /var/tmp -type f -delete
+sudo find /tmp -type f -delete
+sudo find /var/cache/apt/archives -type f -delete
+```
+
+## 一键脚本老手推荐方便快捷
+
+- 只生成一个NAT服务器,可自定义限制所有内容
+
+### 只开一个NAT服务器
+
+#### 下载开机脚本
+
+- (***非必须***,如果你使用过一键安装LXD的命令,自动已下载对应的开机脚本,不用下载该脚本)
+
+国际
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/buildone.sh -o buildone.sh && chmod +x buildone.sh && dos2unix buildone.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/buildone.sh -o buildone.sh && chmod +x buildone.sh && dos2unix buildone.sh
+```
+
+##### 开NAT服务器
+
+内存大小以MB计算,硬盘大小以GB计算,下载速度上传速度以Mbit计算,是否启用IPV6不一定要填Y或者N,没有这个参数也行
+
+如果```外网起端口```和```外网止端口```都设置为0则不做区间外网端口映射了,只映射基础的SSH端口,注意```不能为空```,不进行映射需要设置为0
+
+支持自定义小鸡的系统,注意传入参数为系统名字+版本号,如:debian11、ubuntu20,centos8,注意都是小写字母+数字的组合
+
+```
+./buildone.sh 小鸡名称 内存大小 硬盘大小 SSH端口 外网起端口 外网止端口 下载速度 上传速度 是否启用IPV6(Y or N) 系统(留空则为debian11)
+```
+
+示例
+
+```
+./buildone.sh test 256 2 20001 20002 20025 300 300 N
+```
+
+* 以下为开设的示例小鸡的信息:
+`小鸡名字` - test
+`SSH登录的用户名` - root
+`SSH登录的密码` - 随机生成
+`CPU核数` - 1
+`内存大小` - 256MB
+`磁盘大小` - 2G
+`内外网映射端口一致的区间` - 20002到20025
+`上传带宽` - 300Mbit
+`下载带宽` - 300Mbit
+`自动设置外网IPV6地址` - N
+`系统` - debian11
+
+需要查看信息则执行
+
+```shell
+cat 小鸡名字
+```
+
+比如查询示例的信息就是
+
+```shell
+cat test
+```
+
+如果已通过以上方法生成过小鸡,还需要批量生成小鸡,可使用手动安装部分的脚本,但注意先删除测试小鸡再进行批量生成小鸡
+
+删除测试小鸡
+
+```shell
+lxc delete -f test
+rm -rf test
+ls
+```
\ No newline at end of file
diff --git a/docs/en_US/guide/lxd_precheck.md b/docs/en_US/guide/lxd_precheck.md
new file mode 100644
index 0000000000..a27fb914bf
--- /dev/null
+++ b/docs/en_US/guide/lxd_precheck.md
@@ -0,0 +1,40 @@
+## 配置要求
+
+硬件要求:
+- 系统:Debian 8+, Ubuntu 18+(推荐),系统越新越好
+- 虚拟化:推荐KVM、VMWARE虚拟化
+- 内存:内存至少512MB
+- 硬盘:硬盘(系统盘)至少10G
+- 网络:独立的IPV4地址,IPV6可有可无,带宽能下载脚本就行,网络能连接Github的raw页面就行
+
+PS: 如果硬件非常好资源很多,可使用PVE批量开KVM虚拟化的虚拟机 [跳转](https://github.com/spiritLHLS/pve)
+
+PS: 如果硬件资源更烂,虚拟化不支持,可使用docker版本的,适配面更广 [跳转](https://github.com/spiritLHLS/docker)
+
+## 项目特点
+
+- 本套脚本开发使用的Ubuntu20,Ubuntu别的长期维护版本应该也没问题,Debian无法使用zfs时自动切换别的存储类型
+
+- 已设置同时进行TCP和UDP转发,除了SSH端口其他的映射内网外网端口一致
+
+- 已设置支持开出的LXC容器进行docker嵌套虚拟,默认普通版本和纯探针版本使用debian11系统
+
+- 已屏蔽容器内可能用于滥用的工具包和IPV4网络的TCP/UDP协议的端口( 3389 8888 54321 65432 ),以防止容器被用于扫描和爆破,且可外置进程检查有问题自动停机
+
+- 已支持一键为LXC容器配置IPV6地址(前提是母鸡有IPV6子网,无IPV6地址则不配置)
+
+- 一定要在 ```/root``` 的路径下运行本仓库脚本,且使用```一键脚本```的**不要删除**路径下的```ssh.sh```和```config.sh```文件
+
+- 保证你要开的盘为默认的系统盘(sda或者sda1)而不是挂载的盘(sdb之类的),不确定的使用```fdisk -l```和```df```查看
+
+- 挂载其他盘的详看 [其他说明](https://github.com/spiritLHLS/lxc/blob/main/README_other.md)
+
+- 一键脚本支持自定义限制所有内容,普通版本支持多次运行批量生成不覆盖先前生成的配置
+
+## 检测环境
+
+**使用后续脚本的务必执行本命令检测母鸡是否符合要求**
+
+```
+bash <(wget -qO- --no-check-certificate https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/pre_check.sh)
+```
\ No newline at end of file
diff --git a/docs/en_US/guide/lxd_qa.md b/docs/en_US/guide/lxd_qa.md
new file mode 100644
index 0000000000..45bf1dca9f
--- /dev/null
+++ b/docs/en_US/guide/lxd_qa.md
@@ -0,0 +1,7 @@
+## 目前已验证可开带独立IPV6地址容器的VPS商家
+
+[kuroit](https://my.kuroit.com/aff.php?aff=5) 中的 美国凤凰城 regular
+
+[datalix](https://t.me/vps_reviews/338) 中的 德国AMD 促销款
+
+[luxvps](https://billing.luxvps.xyz/aff.php?aff=36) 中的 德国AMD 促销款
\ No newline at end of file
diff --git a/docs/en_US/guide/lxd_thanks.md b/docs/en_US/guide/lxd_thanks.md
new file mode 100644
index 0000000000..e843350bff
--- /dev/null
+++ b/docs/en_US/guide/lxd_thanks.md
@@ -0,0 +1,19 @@
+## 致谢
+
+https://github.com/lxc/lxd
+
+https://lxdware.com/
+
+https://discuss.linuxcontainers.org/
+
+https://discuss.linuxcontainers.org/t/how-to-run-docker-inside-lxc-container/13017/4
+
+https://discuss.linuxcontainers.org/t/error-seccomp-notify-not-supported-on-container-start/15038/3
+
+https://discuss.linuxcontainers.org/t/how-do-i-assign-a-public-ipv6-address-to-a-lxc-container/6028
+
+https://github.com/turtle0x1/LxdMosaic
+
+https://openzfs.github.io/openzfs-docs/Getting%20Started/Debian/index.html
+
+感谢 [@Ella-Alinda](https://github.com/Ella-Alinda) [@fscarmen](https://github.com/fscarmen) 提供的指导
\ No newline at end of file
diff --git a/docs/en_US/guide/pve_install.md b/docs/en_US/guide/pve_install.md
new file mode 100644
index 0000000000..d23fce15d7
--- /dev/null
+++ b/docs/en_US/guide/pve_install.md
@@ -0,0 +1,74 @@
+## 一键安装PVE
+
+- 安装的是当下apt源最新的PVE
+- 比如debian10则是pve6.4,debian11则是pve7.x,debian12则是pve8.x
+::tip
+建议debian11而不是debian12,因为后者是beta版本,debian11安装的才是稳定版
+::
+- /etc/hosts文件修改(修正商家hostname设置错误以及新增PVE所需的内容)
+- 已设置```/etc/hosts```为只读模式,避免重启后文件被覆写,如需修改请使用```chattr -i /etc/hosts```取消只读锁定,修改完毕请执行```chattr +i /etc/hosts```只读锁定
+- 检测```/etc/cloud/cloud.cfg```如果发现```preserve_hostname```是```false```,则改为```true```,同上,也用chattr命令进行了文件锁定避免重启覆盖设置
+- 检测是否为中国IP,如果为中国IP使用清华镜像源,否则使用官方源
+- 安装PVE开虚拟机需要的必备工具包
+- 替换apt源中的企业订阅为社区源
+- 打印查询Linux系统内核和PVE内核是否已安装
+- 检测```/etc/resolv.conf```是否为空,为空则设置检测```8.8.8.8```的开机自启添加DNS的systemd服务
+- 新增PVE的APT源链接后,下载PVE并打印输出登陆信息
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/install_pve.sh -o install_pve.sh && chmod +x install_pve.sh && bash install_pve.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/install_pve.sh -o install_pve.sh && chmod +x install_pve.sh && bash install_pve.sh
+```
+
+## 预配置环境
+
+- 创建资源池mypool
+- 移除订阅弹窗
+- 尝试开启硬件直通
+- 检测AppArmor模块并试图安装
+- 重启系统前推荐挂上[nezha探针](https://github.com/naiba/nezha)方便在后台不通过SSH使用命令行,避免SSH可能因为商家奇葩的预设导致重启后root密码丢失
+- **执行完毕建议等待几分钟后再重启服务器**,执行```reboot```前需要等待后台任务执行完毕,一些宿主机的系统apt命令执行很慢,得等一会才能执行完毕
+
+国际
+
+```shell
+bash <(wget -qO- --no-check-certificate https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/build_backend.sh)
+```
+
+国内
+
+```shell
+bash <(wget -qO- --no-check-certificate https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/build_backend.sh)
+```
+
+### 自动配置宿主机的网关
+
+::warning
+使用前请保证重启过服务器且此时PVE能正常使用WEB端再执行,重启机器后不要立即执行此命令,待WEB端启动成功后至少等5分钟再执行本命令
+这一步是最容易造成SSH断开的,原因是未等待PVE内核启动就修改网络会造成设置冲突,所以至少等几分钟待内核启动也就是WEB端启动成功后再执行
+::
+- 创建vmbr0,母鸡允许addr和gateway为内网IP或外网IP,已自动识别
+- vmbr0创建支持纯IPV4或双栈服务器,自动识别IPV4地址和IPV6地址,自动识别对应的IP区间
+- 创建vmbr1(NAT网关)
+- 开NAT虚拟机时网关(IPV4)使用```172.16.1.1```,IPV4/CIDR使用```172.16.1.x/24```,这里的x不能是1,当然如果后续使用本套脚本无需关注这点细枝末节的东西
+- 想查看完整设置可以执行```cat /etc/network/interfaces```查看
+- 加载iptables并设置回源且允许NAT端口转发
+
+国际
+
+```shell
+bash <(wget -qO- --no-check-certificate https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/build_nat_network.sh)
+```
+
+国内
+
+```shell
+bash <(wget -qO- --no-check-certificate https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/build_nat_network.sh)
+```
\ No newline at end of file
diff --git a/docs/en_US/guide/pve_kvm.md b/docs/en_US/guide/pve_kvm.md
new file mode 100644
index 0000000000..a039b91604
--- /dev/null
+++ b/docs/en_US/guide/pve_kvm.md
@@ -0,0 +1,196 @@
+## 部分注意事项
+
+**执行本项目的第一个检测环境的命令**,展示如下
+
+
+
+
+
+查询如上的只需使用下面的一键脚本自动创建虚拟机即可,无需手动再修改WEB端设置
+
+
+
+
+
+查询如上的在使用后续脚本创建了虚拟机后,**可能**需要手动修改WEB端设置,需要关闭对应每个虚拟机的硬件嵌套虚拟化,如下图
+
+
+
+
+
+先停止虚拟机再修改,修改完后再开机才能使用NOVNC,不关闭**可能**导致这个虚拟机有BUG无法使用
+
+如果强行安装PVE开KVM,启动不了的也可以关闭这个选项试试能不能启动虚拟机
+
+### 单独开设KVM虚拟化的VM
+
+- 自动开设NAT服务器,默认使用Debian10镜像,因为该镜像占用最小
+- 可在命令中自定义需要使用的镜像,这里有给出配置好的镜像,镜像自带空间设置是2~10G硬盘,日常使用**至少10G以上**即可,除非某些镜像开不起来再增加硬盘大小
+- 可在命令中指定存储盘位置,默认不指定时为local盘即系统盘,可指定为PVE中显示的挂载盘
+- 自定义内存大小推荐512MB内存
+::tip
+需要注意的是宿主机内存记得开点swap免得机器炸了[开SWAP点我跳转](https://github.com/spiritLHLS/addswap)
+::
+- 自动进行内外网端口映射,含22,80,443端口以及其他25个内外网端口号一样的端口
+- 生成后需要等待一段时间虚拟机内部的cloud-init配置好网络以及登陆信息,大概需要5分钟
+- 虚拟机的相关信息将会存储到WEB端对应VM的NOTES中,可在WEB端查看
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/buildvm.sh -o buildvm.sh && chmod +x buildvm.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/buildvm.sh -o buildvm.sh && chmod +x buildvm.sh
+```
+
+#### 使用方法
+
+- 系统支持:详见 [跳转](https://github.com/spiritLHLS/Images/releases/tag/v1.0) 中列出的系统,使用时只需写文件名字,不需要.qcow2尾缀
+::tip
+注意这里的用户名不能是纯数字,会造成cloudinit出问题,最好是纯英文或英文开头
+::
+
+```shell
+./buildvm.sh VMID 用户名 密码 CPU核数 内存 硬盘 SSH端口 80端口 443端口 外网端口起 外网端口止 系统 存储盘
+```
+
+#### 测试示例
+
+* 以下为开设的示例VM的信息:
+`VMID` - 102
+`SSH登录的用户名` - test1
+`SSH登录的密码` - 1234567
+`CPU核数` - 1
+`内存大小` - 512MB
+`磁盘大小` - 10G
+`SSH端口` - 40001
+`80端口` - 40002
+`443端口` - 40003
+`内外网映射端口一致的区间` - 50000到50025
+`系统` - ubuntu20
+`宿主机的存储盘` - local
+
+```shell
+./buildvm.sh 102 test1 1234567 1 512 10 40001 40002 40003 50000 50025 ubuntu20 local
+```
+
+开设完毕可执行```cat vm102```查看信息,或到WEB端对应VM的NOTES中查看
+
+#### 删除示例
+
+- 停止VM
+- 删除VM
+- 删除端口映射
+- 重启网络
+- 删除log文件
+
+```shell
+qm stop 102
+qm destroy 102
+iptables -t nat -F
+iptables -t filter -F
+service networking restart
+systemctl restart networking.service
+rm -rf vm102
+```
+
+#### 相关qcow2镜像
+
+- 已预安装开启cloudinit,开启SSH登陆,预设值SSH监听V4和V6的22端口,开启允许密码验证登陆,开启允许ROOT登陆
+
+目前使用的镜像列表为
+
+[https://github.com/spiritLHLS/Images/releases/tag/v1.0](https://github.com/spiritLHLS/Images/releases/tag/v1.0)
+
+### 批量开设NAT的KVM虚拟化的VM
+
+::warning
+初次使用前需要保证当前PVE纯净且宿主机未进行过任何端口映射,否则设置冲突可能出现BUG
+开设前请使用screen挂起执行,避免批量开设时间过长,SSH不稳定导致中间执行中断
+::
+- 可多次运行批量生成VM
+- 自动开设NAT服务器,选项留空默认使用debian11镜像,可自定义使用镜像名字,支持的系统名字详见上文支持的镜像列表
+- 自动进行内外网端口映射,含22,80,443端口以及其他25个内外网端口号一样的端口
+- 生成后需要等待一段时间虚拟机内部的cloudinit配置好网络以及登陆信息,大概需要5分钟,每个虚拟机创建之间有间隔等待60秒避免突发性能不足
+- 默认批量开设的虚拟机网络配置为:22,80,443端口及一个25个端口区间的内外网映射
+- 可自定义批量开设的核心数,内存大小,硬盘大小,使用宿主机哪个存储盘,记得自己计算好空闲资源开设
+- 虚拟机的相关信息将会存储到WEB端对应VM的NOTES中,可在WEB端查看
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/create_vm.sh -o create_vm.sh && chmod +x create_vm.sh && bash create_vm.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/create_vm.sh -o create_vm.sh && chmod +x create_vm.sh && bash create_vm.sh
+```
+
+开设完毕可执行```cat vmlog```查看信息,或到WEB端对应VM的NOTES中查看
+
+#### 删除所有VM
+
+- 删除所有VM
+- 删除所有nat的端口映射
+- 重启网络
+- 删除log文件
+
+```shell
+for vmid in $(qm list | awk '{if(NR>1) print $1}'); do qm stop $vmid; qm destroy $vmid; rm -rf /var/lib/vz/images/$vmid*; done
+iptables -t nat -F
+iptables -t filter -F
+service networking restart
+systemctl restart networking.service
+rm -rf vmlog
+```
+
+::tip
+PVE修改VM配置前都得停机先,再修改配置,修改完再启动,免得出现配置重载错误
+::
+
+### 开设独立IPV4地址的VM
+
+::warning
+使用前需要保证当前宿主机的IP段带了至少2个IP,且有空余的IP未配置,该空余的IP未绑定宿主机
+开设前请使用screen挂起执行,避免开设时间过长,SSH不稳定导致中间执行中断
+::
+- 自动检测可用的IP区间,通过ping检测空余可使用的IP,选取其中之一绑定到虚拟机上
+- 系统的相关信息将会存储到对应的虚拟机的NOTE中,可在WEB端查看
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/buildvm_extraip.sh -o buildvm_extraip.sh && chmod +x buildvm_extraip.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/buildvm_extraip.sh -o buildvm_extraip.sh && chmod +x buildvm_extraip.sh
+```
+
+#### 创建示例
+
+```shell
+./buildvm_extraip.sh VMID 用户名 密码 CPU核数 内存大小以MB计算 硬盘大小以GB计算 系统 存储盘
+```
+
+```shell
+./buildvm_extraip.sh 152 test1 1234567 1 1024 10 ubuntu20 local
+```
+
+上述命令意义为开设一个带独立IPV4地址的虚拟机,VMID是152,用户名是test1,密码是1234567,CPU是1核,内存是1024MB,硬盘是10G,系统是Ubuntu20,存储盘是local盘也就是系统盘
+
+### 删除示例
+
+```shell
+qm stop 152
+qm destroy 152
+rm -rf vm152
+```
diff --git a/docs/en_US/guide/pve_lxc.md b/docs/en_US/guide/pve_lxc.md
new file mode 100644
index 0000000000..955a56b81d
--- /dev/null
+++ b/docs/en_US/guide/pve_lxc.md
@@ -0,0 +1,120 @@
+## 单独开设LXC虚拟化的CT
+
+::warning
+初次使用前需要保证当前PVE纯净且宿主机未进行过任何端口映射,否则设置冲突可能出现BUG
+开设前请使用screen挂起执行,避免批量开设时间过长,SSH不稳定导致中间执行中断
+::
+- 自动开设NAT服务器,默认使用Debian11镜像,也可自定义系统
+- 自动进行内外网端口映射,含22,80,443端口以及其他25个内外网端口号一样的端口
+- 生成后需要等待一段时间虚拟机内部配置好网络以及登陆信息,大概需要3分钟
+- 默认开设的网络配置为:22,80,443端口及一个25个端口区间的内外网映射
+- 可自定义开设的核心数,内存大小,硬盘大小,使用宿主机哪个存储盘,记得自己计算好空闲资源开设
+- 可在命令中指定存储盘位置,默认不指定时为local盘即系统盘,可指定为PVE中显示的挂载盘
+- 开设的CT默认已启用SSH且允许root登陆,且已设置支持使用docker的嵌套虚拟化
+- 容器的相关信息将会存储到对应的容器的NOTE中,可在WEB端查看
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/buildct.sh -o buildct.sh && chmod +x buildct.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/buildct.sh -o buildct.sh && chmod +x buildct.sh
+```
+
+#### 使用方法
+
+- 系统支持:debian10,debian11,ubuntu18,ubuntu20,ubuntu22,centos8,almalinux9等
+- 系统参数一律是小写的系统名字拼接版本号,具体可执行```pveam available --section system```查看可用的系统名字和版本号(注意脚本使用的参数只有小写的英文系统名字拼接版本号)
+- 其他系统可能支持可能不支持,自行测试
+- 默认用户名是root
+
+```shell
+./buildct.sh CTID 密码 CPU核数 内存 硬盘 SSH端口 80端口 443端口 外网端口起 外网端口止 系统 存储盘
+```
+
+#### 测试示例
+
+* 以下为开设的示例CT的信息:
+`VMID` - 102
+`SSH登录的用户名` - root
+`SSH登录的密码` - 1234567
+`CPU核数` - 1
+`内存大小` - 512MB
+`磁盘大小` - 5G
+`SSH端口` - 20001
+`80端口` - 20002
+`443端口` - 20003
+`内外网映射端口一致的区间` - 30000到30025
+`系统` - debian11
+`宿主机的存储盘` - local
+
+```shell
+./buildct.sh 102 1234567 1 512 5 20001 20002 20003 30000 30025 debian11 local
+```
+
+开设完毕可执行```cat ct102```查看信息,或在web端的NOTES查看
+
+#### 删除示例
+
+- 停止CT
+- 删除CT
+- 删除端口映射
+- 重启网络
+- 删除log文件
+
+```shell
+pct stop 102
+pct destroy 102
+rm -rf ct102
+iptables -t nat -F
+iptables -t filter -F
+service networking restart
+systemctl restart networking.service
+```
+
+## 批量开设NAT的LXC虚拟化的CT
+
+::warning
+初次使用前需要保证当前PVE纯净且宿主机未进行过任何端口映射,否则设置冲突可能出现BUG
+开设前请使用screen挂起执行,避免批量开设时间过长,SSH不稳定导致中间执行中断
+::
+- 可多次运行批量生成CT容器,但需要注意的是母鸡内存记得开点swap免得机器炸了[开SWAP点我跳转](https://github.com/spiritLHLS/addswap)
+- 每个容器创建之间有间隔等待60秒避免突发性能不足
+- 可自定义批量开设的核心数,内存大小,硬盘大小,使用宿主机哪个存储盘,记得自己计算好空闲资源开设
+- 开设的CT默认已启用SSH且允许root登陆,且已设置支持使用docker的嵌套虚拟化
+- 容器的相关信息将会存储到对应的容器的NOTE中,可在WEB端查看
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/create_ct.sh -o create_ct.sh && chmod +x create_ct.sh && bash create_ct.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/create_ct.sh -o create_ct.sh && chmod +x create_ct.sh && bash create_ct.sh
+```
+
+开设完毕可执行```cat ctlog```查看信息,或在web端的NOTES查看
+
+
+#### 删除所有CT
+
+- 删除所有CT
+- 删除所有nat的端口映射
+- 重启网络
+- 删除log文件
+
+```shell
+pct list | awk 'NR>1{print $1}' | xargs -I {} sh -c 'pct stop {}; pct destroy {}'
+rm -rf ct*
+iptables -t nat -F
+iptables -t filter -F
+service networking restart
+systemctl restart networking.service
+```
diff --git a/docs/en_US/guide/pve_precheck.md b/docs/en_US/guide/pve_precheck.md
new file mode 100644
index 0000000000..36d7abeb39
--- /dev/null
+++ b/docs/en_US/guide/pve_precheck.md
@@ -0,0 +1,42 @@
+# 系统要求与配置
+
+## 各种要求
+
+建议debian在使用前尽量使用最新的稳定版本的系统
+
+非debian11可使用 [debian一键升级](https://github.com/spiritLHLS/one-click-installation-script#%E4%B8%80%E9%94%AE%E5%8D%87%E7%BA%A7%E4%BD%8E%E7%89%88%E6%9C%ACdebian%E4%B8%BAdebian11) 来升级系统
+
+本项目只适配Debian系统(非Debian无法通过APT源安装,官方只给了Debian的镜像,其他系统只能使用ISO安装)
+
+- 系统要求:Debian 8+
+::tip
+建议debian11而不是debian12,因为后者是beta版本,debian11安装的才是稳定版
+::
+- 硬件要求:2核2G内存x86_64架构服务器硬盘至少20G
+::warning
+内存开点swap免得机器炸了[开SWAP点我跳转](https://github.com/spiritLHLS/addswap)
+::
+- 可开KVM的硬件要求:VM-X或AMD-V支持 (部分VPS和全部独服支持)
+- 如果硬件或系统需求不满足,可使用LXD批量开LXC容器[跳转](https://github.com/spiritLHLS/lxc)
+
+**遇到选项不会选的可无脑回车安装,本项目所有脚本内置国内外IP自动判断,使用的是不同的安装源与配置文件,有使用CDN加速镜像下载**
+
+## 检测环境
+
+- 本项目相关脚本执行前务必执行本脚本检测环境,如果不符合安装PVE的要求则无法使用后续的脚本
+- 检测硬件配置是否满足最低要求
+- 检测硬件环境是否可嵌套虚拟化KVM类型的服务器
+- 检测系统环境是否可嵌套虚拟化KVM类型的服务器
+- 不可嵌套虚拟化KVM类型的服务器也可以开LXC虚拟化的服务器,但不推荐安装PVE,不如使用[LXD](https://github.com/spiritLHLS/lxc)
+
+国际
+
+```
+bash <(wget -qO- --no-check-certificate https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/check_kernal.sh)
+```
+
+国内
+
+```
+bash <(wget -qO- --no-check-certificate https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/check_kernal.sh)
+```
\ No newline at end of file
diff --git a/docs/en_US/guide/pve_qa.md b/docs/en_US/guide/pve_qa.md
new file mode 100644
index 0000000000..8aa50f56b2
--- /dev/null
+++ b/docs/en_US/guide/pve_qa.md
@@ -0,0 +1,23 @@
+## 目前已验证的VPS商家
+
+### 可开设KVM虚拟化的NAT的商家
+
+[nocix](https://www.nocix.net/) 中的特价最低配15美元独服 (IPV6不自带,需要找客服要)
+
+[amhost](http://amhost.net/vps/?cid=29317) 中的测试款
+
+[digitalocean](https://m.do.co/c/e9712622ee89) 中的 Perminu Intel 和 Regular 4核款
+
+[skrime](https://hosting.skrime.eu/a/server) 中的 AMD Ryzen KVM Server 最低配款
+
+[webdock](https://webdock.io/en?maff=wdaff--150) 中的 AMD KVM Server
+
+[4vps](https://clck.ru/33VQmc) 中的 俄罗斯和希腊 测试款
+
+[hostaris](https://deploy.hostaris.com/) 中的 德国款 (商家的系统模板有问题,IPV6已失效和Github的连通稳定性很差)
+
+### 只可开设LXC虚拟化的NAT的商家
+
+[腾讯云](https://curl.qcloud.com/tPrMnfZm) 中的无忧款和特惠款(学生机)
+
+[spectraip](https://my.spectraip.net/aff.php?aff=35) 中的KVM服务器
\ No newline at end of file
diff --git a/docs/en_US/guide/pve_thanks.md b/docs/en_US/guide/pve_thanks.md
new file mode 100644
index 0000000000..853ad35c48
--- /dev/null
+++ b/docs/en_US/guide/pve_thanks.md
@@ -0,0 +1,17 @@
+## 致谢
+
+https://blog.ilolicon.com/archives/615
+
+https://github.com/Ella-Alinda/somescripts/blob/main/nat.sh
+
+https://pve.proxmox.com/pve-docs/qm.1.html
+
+https://down.idc.wiki/Image/realServer-Template/
+
+https://mirrors.tuna.tsinghua.edu.cn/proxmox/
+
+https://github.com/roacn/pve/blob/main/pve.sh
+
+https://github.com/spiritLHLS/lxc
+
+感谢 [@Ella-Alinda](https://github.com/Ella-Alinda) 提供的PVE指导
\ No newline at end of file
diff --git a/docs/en_US/index.md b/docs/en_US/index.md
new file mode 100644
index 0000000000..9ab4280726
--- /dev/null
+++ b/docs/en_US/index.md
@@ -0,0 +1,22 @@
+---
+home: true
+heroImage: https://raw.githubusercontent.com/spiritlhls/pages/main/logo.jpg
+heroText: One Click Virtualization Project
+tagline: Open source, easy to use server virtualization project
+actionText: Learn More →
+actionLink: /en_US/guide/dashboard
+features:
+- title: One-Click Installation
+ details: Support one-click script installation, easy to use; based on Debian, Ubuntu long-term maintenance version development, try to ensure that the host system and development environment consistent
+- title: Comes with internal and external port forwarding
+ details: Support automatic intranet port forwarding, including TCP and UDP protocols
+- title: Batch Virtualization
+ details: Support for KVM, LXC, Docker virtualization batch opening of virtual machines (containers)
+- title: Self-limiting abuse
+ details: Partially virtualized containers/VMs have been masked and loaded with restrictions to avoid being used for abuse
+footer: Copyright © 2022-present Nezhahq
+---
+
+Documentation has not been translated yet, waiting for translation.
+
+
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
\ No newline at end of file
diff --git a/docs/guide/dashboard.md b/docs/guide/dashboard.md
new file mode 100644
index 0000000000..93f8113d5f
--- /dev/null
+++ b/docs/guide/dashboard.md
@@ -0,0 +1,35 @@
+## 准备工作
+
+需要虚拟化出服务器,你需要:
+1. 一台可以连接公网的服务器( VPS 或 Dedicated Server),最好能完美访问 Github 的 RAW 页面,部分项目部分组件可能未使用 CDN 加速
+::: tip
+如果您位于中国大陆,访问 Github 有困难,请注意配套脚本和项目是否有说明已使用 CDN 加速
+:::
+2. 本地可以稳定连接SSH,如果不能稳定连接,请使用```screen```命令创建窗口后,在窗口内执行命令
+::: tip
+不会用screen命令的,自行查找相关教程学习
+:::
+3. 确保服务器的系统和硬件满足对应项目的要求,详见对应项目说明
+
+**本文档将以VPS作为范例,且该VPS纯净,无原生环境问题,如有必要请重装系统保证初始环境的纯净**
+:::warning
+PVE项目可能造成宿主机出现问题,如果你不会看Bug和修复系统,那么不建议你在生产环境中使用,使用PVE相关脚本请确保宿主机随时可重装系统
+:::
+
+
+
+## 项目仓库
+
+欢迎Star和Fork
+
+### PVE相关的各种一键脚本
+
+[https://github.com/spiritLHLS/pve](https://github.com/spiritLHLS/pve)
+
+### 通过LXD/LXC命令批量或单独开设NAT服务器以及维护
+
+[https://github.com/spiritLHLS/lxc](https://github.com/spiritLHLS/lxc)
+
+### 通过docker批量或单独开设NAT服务器
+
+[https://github.com/spiritLHLS/docker](https://github.com/spiritLHLS/docker)
\ No newline at end of file
diff --git a/docs/guide/dashboardq.md b/docs/guide/dashboardq.md
new file mode 100644
index 0000000000..cbde71ff3d
--- /dev/null
+++ b/docs/guide/dashboardq.md
@@ -0,0 +1,10 @@
+
+Give me a cup of coffee.
+
+https://ko-fi.com/spiritlhl
+
+USDT-TRC20
+
+```bash
+TZ7nf8XAL9zQUo63xokazaBdCPeCgPfcwd
+```
\ No newline at end of file
diff --git a/docs/guide/docker_build.md b/docs/guide/docker_build.md
new file mode 100644
index 0000000000..2a9e06ea03
--- /dev/null
+++ b/docs/guide/docker_build.md
@@ -0,0 +1,106 @@
+## 单独开设
+
+下载脚本
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/docker/main/scripts/onedocker.sh -o onedocker.sh && chmod +x onedocker.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/docker/main/scripts/onedocker.sh -o onedocker.sh && chmod +x onedocker.sh
+```
+
+运行
+
+```
+./onedocker.sh name cpu memory password sshport startport endport system
+```
+
+目前system仅支持选择alpine或debian,默认是debian
+
+### 示例
+
+* 以下为开设的示例容器的信息:
+`容器名字` - test
+`SSH登录的用户名` - root
+`SSH登录的密码` - 123456
+`CPU核数` - 1
+`内存大小` - 512MB
+`SSH端口` - 25000
+`内外网映射端口一致的区间` - 34975到35000
+`系统` - debian
+
+```shell
+./onedocker.sh test 1 512 123456 25000 34975 35000 debian
+```
+
+删除示例
+
+```shell
+docker rm -f test
+rm -rf test
+ls
+```
+
+进入示例
+
+```shell
+docker exec -it test /bin/bash
+```
+
+要退出容器就执行```exit```退出。
+
+### 查询信息
+
+```shell
+cat 容器名字
+```
+
+输出格式
+
+```
+容器名字 SSH端口 登陆的root密码 核数 内存 外网端口起 外网端口止
+```
+
+## 批量开设
+
+- 批量多次运行继承配置生成
+- 生成多个时为避免SSH连接中断建议在screen中执行
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/docker/main/scripts/dockers.sh -o dockers.sh && chmod +x dockers.sh && bash dockers.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/docker/main/scripts/onedocker.sh -o onedocker.sh && chmod +x onedocker.sh
+```
+
+## 查询批量开设的信息
+
+```shell
+cat dclog
+```
+
+输出格式
+
+```
+容器名字 SSH端口 登陆的root密码 核数 内存 外网端口起 外网端口止
+```
+
+一行一个容器对应的信息
+
+## 卸载所有docker容器和镜像
+
+```shell
+docker rm -f $(docker ps -aq); docker rmi $(docker images -aq)
+rm -rf dclog
+ls
+```
\ No newline at end of file
diff --git a/docs/guide/docker_install.md b/docs/guide/docker_install.md
new file mode 100644
index 0000000000..561787d620
--- /dev/null
+++ b/docs/guide/docker_install.md
@@ -0,0 +1,17 @@
+## 环境预设
+
+- 检测环境
+- 安装docker
+- 下载预制脚本
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/docker/main/scripts/pre_build.sh -o pre_build.sh && chmod +x pre_build.sh && bash pre_build.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/docker/main/scripts/pre_build.sh -o pre_build.sh && chmod +x pre_build.sh && bash pre_build.sh
+```
\ No newline at end of file
diff --git a/docs/guide/docker_precheck.md b/docs/guide/docker_precheck.md
new file mode 100644
index 0000000000..826ead1c05
--- /dev/null
+++ b/docs/guide/docker_precheck.md
@@ -0,0 +1,21 @@
+## 项目特点
+
+通过docker批量或单独开设NAT服务器(Bulk or individual NAT server provisioning via docker)
+
+默认使用debian系统,每个容器自带1个外网ssh端口,25个内外网一致端口
+
+默认创建的是非特权容器,且不挂载与宿主机的docker的守护进程之间的通信,所以**宿主机创建的docker虚拟化的NAT服务器内无法再嵌套虚拟化docker**
+
+由于只是在宿主机进行了CPU和内存的限制未在容器内使用cgroup驱动,所以在容器内使用服务器测试脚本检测容器的可用资源是无效的,显示的会是宿主机的资源
+
+由于大部分云服务器xfs文件系统不启用pquota选项,所以**默认共享宿主机硬盘,无法限制每个容器的磁盘大小**
+
+## 配置要求
+
+系统可安装docker即可用,网络能连接Github的raw界面就能用,硬件配置只要不拉跨就行,空闲硬盘有3G就行
+
+推荐在开设NAT服务器前先增加部分SWAP虚拟内存,避免突发的内存占用导致母鸡卡死 [跳转](https://github.com/spiritLHLS/addswap)
+
+PS: 如果硬件资源只是好了一点,需要限制更多东西并需要配置IPV6独立地址和限制硬盘大小,可使用LXD批量开LXC虚拟化的容器 [跳转](https://github.com/spiritLHLS/lxc)
+
+PS: 如果硬件非常好资源很多,可使用PVE批量开KVM虚拟化的虚拟机 [跳转](https://github.com/spiritLHLS/pve)
\ No newline at end of file
diff --git a/docs/guide/docker_qa.md b/docs/guide/docker_qa.md
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/docs/guide/docker_thanks.md b/docs/guide/docker_thanks.md
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/docs/guide/lxd_extra_config.md b/docs/guide/lxd_extra_config.md
new file mode 100644
index 0000000000..01bb4296b4
--- /dev/null
+++ b/docs/guide/lxd_extra_config.md
@@ -0,0 +1,124 @@
+::tip
+以下的配置安装会加重母鸡的负担,非必要不要安装
+如果是个人使用,可忽略防滥用部分脚本的安装
+::
+
+## 自动配置IPV6地址
+
+- (***非必须***,不使用的也没问题)
+- **该脚本仅适用于母鸡有给```IPV6```子网且是```/64```的,且母鸡绑定了子网的```第一个IP```做```母鸡的IPV6地址或IPV6的gateway```**
+- 自动为LXD创建的LXC容器配置```IPV6```地址
+- 已集成到```buildone.sh```中可使用变量控制且无需事先下载,该脚本可不手动使用,在使用```buildone.sh```时配置Y开启即可
+
+下载脚本
+
+国际
+
+```bash
+curl -L https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/build_ipv6_network.sh -o build_ipv6_network.sh && chmod +x build_ipv6_network.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/build_ipv6_network.sh -o build_ipv6_network.sh && chmod +x build_ipv6_network.sh
+```
+
+自动为容器配置IPV6映射地址
+
+```bash
+bash build_ipv6_network.sh 容器名称
+```
+
+映射完毕会打印信息
+
+示例(给test容器自动配置IPV6地址,配置完成会写入一个test_v6的文件信息)
+
+```bash
+bash build_ipv6_network.sh test
+```
+
+删除所有IPV6已映射的规则
+
+```bash
+ip6tables -t nat -F PREROUTING
+ip6tables-legacy -t nat -F PREROUTING
+ip6tables-save > /etc/iptables/rules.v6
+netfilter-persistent save
+netfilter-persistent reload
+service netfilter-persistent restart
+```
+
+卸载IPV6地址绑定的守护进程和对应的文件
+
+```shell
+systemctl stop add-ipv6.service
+systemctl disable add-ipv6.service
+rm /etc/systemd/system/add-ipv6.service
+systemctl daemon-reload
+rm /usr/local/bin/add-ipv6.sh
+```
+
+## 屏蔽容易被滥用的端口的出入流量以屏蔽端口和屏蔽滥用工具包
+
+- (***非必须***,该脚本仅仅是为了防止容器滥用方便,不装的也没问题)
+- 事前预防
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/rules.sh -o rules.sh && chmod +x rules.sh && bash rules.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/rules.sh -o rules.sh && chmod +x rules.sh && bash rules.sh
+```
+
+##### 使用screen配置监控屏蔽某些进程的执行遇到某些进程的出现直接关闭容器
+
+- 如需停止监控可使用```screen```命令停止```lxc_moniter```这个名字的窗口并删除
+- (***非必须***,该脚本仅仅是为了防止容器滥用方便,不装的也没问题)
+- 事后停机
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/build_monitor.sh -o build_monitor.sh && chmod +x build_monitor.sh && bash build_monitor.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/build_monitor.sh -o build_monitor.sh && chmod +x build_monitor.sh && bash build_monitor.sh
+```
+
+##### 一键安装开lxd母鸡所需要的带vnstat环境的常用预配置环境
+
+- (***非必须***,该脚本仅仅是为了站点对接监控方便,不装的也没问题)
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/backend.sh -o backend.sh && chmod +x backend.sh && bash backend.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/backend.sh -o backend.sh && chmod +x backend.sh && bash backend.sh
+```
+
+##### 一键安装母鸡可视化操作的面板
+
+- (***非必须***,该面板只是为了方便可视化操作,没有也没问题)
+- 原作者仓库:[跳转](https://github.com/turtle0x1/LxdMosaic)
+
+```shell
+lxc config set core.https_address [::]
+lxc config set core.trust_password some-secret-string
+snap install lxdmosaic
+```
+
+安装完毕后打开母鸡IP地址,按照提示设置admin的密码,其他一路默认就能使用面板了
diff --git a/docs/guide/lxd_install.md b/docs/guide/lxd_install.md
new file mode 100644
index 0000000000..3dcf856365
--- /dev/null
+++ b/docs/guide/lxd_install.md
@@ -0,0 +1,104 @@
+## 手动安装
+
+新手推荐,避免有bug不知道怎么修,当然如果只是图方便又是老手懂排查BUG,用后面的一键安装也行
+
+### 关闭防火墙
+
+```bash
+apt update
+apt install curl wget sudo dos2unix ufw jq -y
+ufw disable
+```
+
+### 开设虚拟内存SWAP
+
+内存看你开多少小鸡,这里如果要开8个,换算需要2G内存,实际内存如果是512MB内存,还需要开1.5G,保守点开2G虚拟内存即可
+
+执行下面命令,输入1,再输入2048,代表开2G虚拟内存
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/swap.sh -o swap.sh && chmod +x swap.sh && bash swap.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/swap.sh -o swap.sh && chmod +x swap.sh && bash swap.sh
+```
+
+### 安装LXD
+
+实际swap开的虚拟内存应该是实际内存的2倍,也就是开1G是合理的,上面我描述的情况属于超开了
+
+```
+apt install snapd -y
+snap install lxd
+/snap/bin/lxd init
+```
+
+如果上面的命令中出现下面的错误
+
+(snap "lxd" assumes unsupported features: snapd2.39 (try to update snapd and refresh the core snap))
+
+使用命令修补后再进行lxd的安装
+
+```
+snap install core
+```
+
+如果无异常,上面三行命令执行结果如下
+
+
+
+一般的选项回车默认即可
+
+选择配置物理盘大小(提示默认最小1GB那个选项),一般我填空闲磁盘大小减去内存大小后乘以0.95并向下取整,这里我填了10GB
+
+提示带auto的更新image的选项记得选no,避免更新占用系统
+
+测试lxc有没有软连接上
+
+```
+lxc -h
+```
+
+如果报错则执行以下命令软连接lxc命令
+
+```bash
+! lxc -h >/dev/null 2>&1 && echo 'alias lxc="/snap/bin/lxc"' >> /root/.bashrc && source /root/.bashrc
+export PATH=$PATH:/snap/bin
+```
+
+连接后再测试lxc命令是否有报错找不到
+
+## 一键安装
+
+::tip
+如果是全新的服务器,务必保证apt update和apt install curl都无问题再执行本脚本
+且自开机起最好等待5分钟后再执行以下命令,避免系统默认设置中就执行了本脚本导致apt源卡死
+::
+- 环境要求:Ubuntu 18+(推荐),Debian 8+(仅限x86_64架构)
+
+**如果是Debian系的宿主机,务必在screen中执行本脚本,避免长期运行时SSH中断导致ZFS编译安装失败**
+
+这里的虚拟内存是说要开的SWAP大小,存储池则是你所有要开的小鸡占的盘的大小的总和
+
+环境安装过程中可能需要重启服务器再次执行以加载含zfs的内核,一切以运行后命令行的提示为准
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/lxdinstall.sh -o lxdinstall.sh && chmod +x lxdinstall.sh && bash lxdinstall.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/lxdinstall.sh -o lxdinstall.sh && chmod +x lxdinstall.sh && bash lxdinstall.sh
+```
+
+例子:
+
+如果系统盘除去已占用空间还有18G硬盘空余,想开2G虚拟内存(2048MB的SWAP),15G的存储池,按照命令行的提示则依次输入```2048```和```15```
\ No newline at end of file
diff --git a/docs/guide/lxd_lxc.md b/docs/guide/lxd_lxc.md
new file mode 100644
index 0000000000..29ff0806c1
--- /dev/null
+++ b/docs/guide/lxd_lxc.md
@@ -0,0 +1,218 @@
+## 普通的批量版本
+
+开出的小鸡配置:
+
+- 1核256MB内存1GB硬盘限速250Mbps带宽
+- 带1个SSH端口,25个外网端口
+- 默认内存和硬盘大小
+
+::tip
+lxc若命令无问题,执行初始化开小鸡,这一步最好放```screen```中后台挂起执行,开小鸡时长与你开几个和母鸡配置相关
+::
+
+执行下面命令加载开机脚本
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/init.sh -o init.sh && chmod +x init.sh && dos2unix init.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/init.sh -o init.sh && chmod +x init.sh && dos2unix init.sh
+```
+
+下面命令为开小鸡名字前缀为**tj**的**10**个小鸡
+
+```shell
+./init.sh tj 10
+```
+
+有时候init.sh的运行路径有问题,此时建议前面加上sudo强制根目录执行
+
+### 只有一个SSH端口的版本
+
+开出的小鸡配置:
+
+- 1核128MB内存300MB硬盘限速200Mbps带宽
+- 只有一个SSH端口
+- 无法挂载warp
+
+::tip
+lxc若命令无问题,执行初始化开小鸡,这一步最好放```screen```中后台挂起执行,开小鸡时长与你开几个和母鸡配置相关
+::
+
+加载开机脚本
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/least.sh -o least.sh && chmod +x least.sh && dos2unix least.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/least.sh -o least.sh && chmod +x least.sh && dos2unix least.sh
+```
+
+下列命令最后一行为开小鸡名字前缀为**tj**的**10**个小鸡
+
+```shell
+./least.sh tj 10
+```
+
+有时候least.sh的运行路径有问题,此时建议前面加上sudo强制根目录执行
+
+## 查看已批量开设的信息
+
+开完小鸡后,具体信息会生成在当前目录下的log文件中,格式如下
+
+```shell
+1号服务器名称 密码 ssh端口 外网端口起始 外网端口终止
+2号服务器名称 密码 ssh端口 外网端口起始 外网端口终止
+```
+
+如果想要查看,只需在当前目录执行以下命令打印log文件即可
+
+```shell
+cat log
+```
+
+::warning
+不要拿该脚本开出的小鸡当生产环境,LXC虚拟化不支持换内核,dd,开启bbr等操作
+::
+
+## 部分常用LXD命令
+
+查看所有
+
+```bash
+lxc list
+```
+
+查看个例
+
+```bash
+lxc info 服务器名字
+```
+
+启动个例
+
+```bash
+lxc start 服务器名字
+```
+
+停止个例
+
+```bash
+lxc stop 服务器名字
+```
+
+删除个例
+
+```bash
+lxc delete -f 服务器名字
+```
+
+进入内部
+
+```bash
+lxc exec 服务器名字 /bin/bash
+```
+
+退出则输入```exit```回车即可
+
+删除所有LXC容器
+
+```bash
+lxc list | awk '{print $2}' | grep -v "^$" | xargs -I {} lxc delete -f {}
+```
+
+在容器内执行删除无用日志
+
+```bash
+sudo apt-get autoremove
+sudo apt-get clean
+sudo find /var/log -type f -delete
+sudo find /var/tmp -type f -delete
+sudo find /tmp -type f -delete
+sudo find /var/cache/apt/archives -type f -delete
+```
+
+## 一键脚本老手推荐方便快捷
+
+- 只生成一个NAT服务器,可自定义限制所有内容
+
+### 只开一个NAT服务器
+
+#### 下载开机脚本
+
+- (***非必须***,如果你使用过一键安装LXD的命令,自动已下载对应的开机脚本,不用下载该脚本)
+
+国际
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/buildone.sh -o buildone.sh && chmod +x buildone.sh && dos2unix buildone.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/buildone.sh -o buildone.sh && chmod +x buildone.sh && dos2unix buildone.sh
+```
+
+##### 开NAT服务器
+
+内存大小以MB计算,硬盘大小以GB计算,下载速度上传速度以Mbit计算,是否启用IPV6不一定要填Y或者N,没有这个参数也行
+
+如果```外网起端口```和```外网止端口```都设置为0则不做区间外网端口映射了,只映射基础的SSH端口,注意```不能为空```,不进行映射需要设置为0
+
+支持自定义小鸡的系统,注意传入参数为系统名字+版本号,如:debian11、ubuntu20,centos8,注意都是小写字母+数字的组合
+
+```
+./buildone.sh 小鸡名称 内存大小 硬盘大小 SSH端口 外网起端口 外网止端口 下载速度 上传速度 是否启用IPV6(Y or N) 系统(留空则为debian11)
+```
+
+示例
+
+```
+./buildone.sh test 256 2 20001 20002 20025 300 300 N
+```
+
+* 以下为开设的示例小鸡的信息:
+`小鸡名字` - test
+`SSH登录的用户名` - root
+`SSH登录的密码` - 随机生成
+`CPU核数` - 1
+`内存大小` - 256MB
+`磁盘大小` - 2G
+`内外网映射端口一致的区间` - 20002到20025
+`上传带宽` - 300Mbit
+`下载带宽` - 300Mbit
+`自动设置外网IPV6地址` - N
+`系统` - debian11
+
+需要查看信息则执行
+
+```shell
+cat 小鸡名字
+```
+
+比如查询示例的信息就是
+
+```shell
+cat test
+```
+
+如果已通过以上方法生成过小鸡,还需要批量生成小鸡,可使用手动安装部分的脚本,但注意先删除测试小鸡再进行批量生成小鸡
+
+删除测试小鸡
+
+```shell
+lxc delete -f test
+rm -rf test
+ls
+```
\ No newline at end of file
diff --git a/docs/guide/lxd_precheck.md b/docs/guide/lxd_precheck.md
new file mode 100644
index 0000000000..a27fb914bf
--- /dev/null
+++ b/docs/guide/lxd_precheck.md
@@ -0,0 +1,40 @@
+## 配置要求
+
+硬件要求:
+- 系统:Debian 8+, Ubuntu 18+(推荐),系统越新越好
+- 虚拟化:推荐KVM、VMWARE虚拟化
+- 内存:内存至少512MB
+- 硬盘:硬盘(系统盘)至少10G
+- 网络:独立的IPV4地址,IPV6可有可无,带宽能下载脚本就行,网络能连接Github的raw页面就行
+
+PS: 如果硬件非常好资源很多,可使用PVE批量开KVM虚拟化的虚拟机 [跳转](https://github.com/spiritLHLS/pve)
+
+PS: 如果硬件资源更烂,虚拟化不支持,可使用docker版本的,适配面更广 [跳转](https://github.com/spiritLHLS/docker)
+
+## 项目特点
+
+- 本套脚本开发使用的Ubuntu20,Ubuntu别的长期维护版本应该也没问题,Debian无法使用zfs时自动切换别的存储类型
+
+- 已设置同时进行TCP和UDP转发,除了SSH端口其他的映射内网外网端口一致
+
+- 已设置支持开出的LXC容器进行docker嵌套虚拟,默认普通版本和纯探针版本使用debian11系统
+
+- 已屏蔽容器内可能用于滥用的工具包和IPV4网络的TCP/UDP协议的端口( 3389 8888 54321 65432 ),以防止容器被用于扫描和爆破,且可外置进程检查有问题自动停机
+
+- 已支持一键为LXC容器配置IPV6地址(前提是母鸡有IPV6子网,无IPV6地址则不配置)
+
+- 一定要在 ```/root``` 的路径下运行本仓库脚本,且使用```一键脚本```的**不要删除**路径下的```ssh.sh```和```config.sh```文件
+
+- 保证你要开的盘为默认的系统盘(sda或者sda1)而不是挂载的盘(sdb之类的),不确定的使用```fdisk -l```和```df```查看
+
+- 挂载其他盘的详看 [其他说明](https://github.com/spiritLHLS/lxc/blob/main/README_other.md)
+
+- 一键脚本支持自定义限制所有内容,普通版本支持多次运行批量生成不覆盖先前生成的配置
+
+## 检测环境
+
+**使用后续脚本的务必执行本命令检测母鸡是否符合要求**
+
+```
+bash <(wget -qO- --no-check-certificate https://raw.githubusercontent.com/spiritLHLS/lxc/main/scripts/pre_check.sh)
+```
\ No newline at end of file
diff --git a/docs/guide/lxd_qa.md b/docs/guide/lxd_qa.md
new file mode 100644
index 0000000000..45bf1dca9f
--- /dev/null
+++ b/docs/guide/lxd_qa.md
@@ -0,0 +1,7 @@
+## 目前已验证可开带独立IPV6地址容器的VPS商家
+
+[kuroit](https://my.kuroit.com/aff.php?aff=5) 中的 美国凤凰城 regular
+
+[datalix](https://t.me/vps_reviews/338) 中的 德国AMD 促销款
+
+[luxvps](https://billing.luxvps.xyz/aff.php?aff=36) 中的 德国AMD 促销款
\ No newline at end of file
diff --git a/docs/guide/lxd_thanks.md b/docs/guide/lxd_thanks.md
new file mode 100644
index 0000000000..e843350bff
--- /dev/null
+++ b/docs/guide/lxd_thanks.md
@@ -0,0 +1,19 @@
+## 致谢
+
+https://github.com/lxc/lxd
+
+https://lxdware.com/
+
+https://discuss.linuxcontainers.org/
+
+https://discuss.linuxcontainers.org/t/how-to-run-docker-inside-lxc-container/13017/4
+
+https://discuss.linuxcontainers.org/t/error-seccomp-notify-not-supported-on-container-start/15038/3
+
+https://discuss.linuxcontainers.org/t/how-do-i-assign-a-public-ipv6-address-to-a-lxc-container/6028
+
+https://github.com/turtle0x1/LxdMosaic
+
+https://openzfs.github.io/openzfs-docs/Getting%20Started/Debian/index.html
+
+感谢 [@Ella-Alinda](https://github.com/Ella-Alinda) [@fscarmen](https://github.com/fscarmen) 提供的指导
\ No newline at end of file
diff --git a/docs/guide/pve_install.md b/docs/guide/pve_install.md
new file mode 100644
index 0000000000..d23fce15d7
--- /dev/null
+++ b/docs/guide/pve_install.md
@@ -0,0 +1,74 @@
+## 一键安装PVE
+
+- 安装的是当下apt源最新的PVE
+- 比如debian10则是pve6.4,debian11则是pve7.x,debian12则是pve8.x
+::tip
+建议debian11而不是debian12,因为后者是beta版本,debian11安装的才是稳定版
+::
+- /etc/hosts文件修改(修正商家hostname设置错误以及新增PVE所需的内容)
+- 已设置```/etc/hosts```为只读模式,避免重启后文件被覆写,如需修改请使用```chattr -i /etc/hosts```取消只读锁定,修改完毕请执行```chattr +i /etc/hosts```只读锁定
+- 检测```/etc/cloud/cloud.cfg```如果发现```preserve_hostname```是```false```,则改为```true```,同上,也用chattr命令进行了文件锁定避免重启覆盖设置
+- 检测是否为中国IP,如果为中国IP使用清华镜像源,否则使用官方源
+- 安装PVE开虚拟机需要的必备工具包
+- 替换apt源中的企业订阅为社区源
+- 打印查询Linux系统内核和PVE内核是否已安装
+- 检测```/etc/resolv.conf```是否为空,为空则设置检测```8.8.8.8```的开机自启添加DNS的systemd服务
+- 新增PVE的APT源链接后,下载PVE并打印输出登陆信息
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/install_pve.sh -o install_pve.sh && chmod +x install_pve.sh && bash install_pve.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/install_pve.sh -o install_pve.sh && chmod +x install_pve.sh && bash install_pve.sh
+```
+
+## 预配置环境
+
+- 创建资源池mypool
+- 移除订阅弹窗
+- 尝试开启硬件直通
+- 检测AppArmor模块并试图安装
+- 重启系统前推荐挂上[nezha探针](https://github.com/naiba/nezha)方便在后台不通过SSH使用命令行,避免SSH可能因为商家奇葩的预设导致重启后root密码丢失
+- **执行完毕建议等待几分钟后再重启服务器**,执行```reboot```前需要等待后台任务执行完毕,一些宿主机的系统apt命令执行很慢,得等一会才能执行完毕
+
+国际
+
+```shell
+bash <(wget -qO- --no-check-certificate https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/build_backend.sh)
+```
+
+国内
+
+```shell
+bash <(wget -qO- --no-check-certificate https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/build_backend.sh)
+```
+
+### 自动配置宿主机的网关
+
+::warning
+使用前请保证重启过服务器且此时PVE能正常使用WEB端再执行,重启机器后不要立即执行此命令,待WEB端启动成功后至少等5分钟再执行本命令
+这一步是最容易造成SSH断开的,原因是未等待PVE内核启动就修改网络会造成设置冲突,所以至少等几分钟待内核启动也就是WEB端启动成功后再执行
+::
+- 创建vmbr0,母鸡允许addr和gateway为内网IP或外网IP,已自动识别
+- vmbr0创建支持纯IPV4或双栈服务器,自动识别IPV4地址和IPV6地址,自动识别对应的IP区间
+- 创建vmbr1(NAT网关)
+- 开NAT虚拟机时网关(IPV4)使用```172.16.1.1```,IPV4/CIDR使用```172.16.1.x/24```,这里的x不能是1,当然如果后续使用本套脚本无需关注这点细枝末节的东西
+- 想查看完整设置可以执行```cat /etc/network/interfaces```查看
+- 加载iptables并设置回源且允许NAT端口转发
+
+国际
+
+```shell
+bash <(wget -qO- --no-check-certificate https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/build_nat_network.sh)
+```
+
+国内
+
+```shell
+bash <(wget -qO- --no-check-certificate https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/build_nat_network.sh)
+```
\ No newline at end of file
diff --git a/docs/guide/pve_kvm.md b/docs/guide/pve_kvm.md
new file mode 100644
index 0000000000..a039b91604
--- /dev/null
+++ b/docs/guide/pve_kvm.md
@@ -0,0 +1,196 @@
+## 部分注意事项
+
+**执行本项目的第一个检测环境的命令**,展示如下
+
+
+
+
+
+查询如上的只需使用下面的一键脚本自动创建虚拟机即可,无需手动再修改WEB端设置
+
+
+
+
+
+查询如上的在使用后续脚本创建了虚拟机后,**可能**需要手动修改WEB端设置,需要关闭对应每个虚拟机的硬件嵌套虚拟化,如下图
+
+
+
+
+
+先停止虚拟机再修改,修改完后再开机才能使用NOVNC,不关闭**可能**导致这个虚拟机有BUG无法使用
+
+如果强行安装PVE开KVM,启动不了的也可以关闭这个选项试试能不能启动虚拟机
+
+### 单独开设KVM虚拟化的VM
+
+- 自动开设NAT服务器,默认使用Debian10镜像,因为该镜像占用最小
+- 可在命令中自定义需要使用的镜像,这里有给出配置好的镜像,镜像自带空间设置是2~10G硬盘,日常使用**至少10G以上**即可,除非某些镜像开不起来再增加硬盘大小
+- 可在命令中指定存储盘位置,默认不指定时为local盘即系统盘,可指定为PVE中显示的挂载盘
+- 自定义内存大小推荐512MB内存
+::tip
+需要注意的是宿主机内存记得开点swap免得机器炸了[开SWAP点我跳转](https://github.com/spiritLHLS/addswap)
+::
+- 自动进行内外网端口映射,含22,80,443端口以及其他25个内外网端口号一样的端口
+- 生成后需要等待一段时间虚拟机内部的cloud-init配置好网络以及登陆信息,大概需要5分钟
+- 虚拟机的相关信息将会存储到WEB端对应VM的NOTES中,可在WEB端查看
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/buildvm.sh -o buildvm.sh && chmod +x buildvm.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/buildvm.sh -o buildvm.sh && chmod +x buildvm.sh
+```
+
+#### 使用方法
+
+- 系统支持:详见 [跳转](https://github.com/spiritLHLS/Images/releases/tag/v1.0) 中列出的系统,使用时只需写文件名字,不需要.qcow2尾缀
+::tip
+注意这里的用户名不能是纯数字,会造成cloudinit出问题,最好是纯英文或英文开头
+::
+
+```shell
+./buildvm.sh VMID 用户名 密码 CPU核数 内存 硬盘 SSH端口 80端口 443端口 外网端口起 外网端口止 系统 存储盘
+```
+
+#### 测试示例
+
+* 以下为开设的示例VM的信息:
+`VMID` - 102
+`SSH登录的用户名` - test1
+`SSH登录的密码` - 1234567
+`CPU核数` - 1
+`内存大小` - 512MB
+`磁盘大小` - 10G
+`SSH端口` - 40001
+`80端口` - 40002
+`443端口` - 40003
+`内外网映射端口一致的区间` - 50000到50025
+`系统` - ubuntu20
+`宿主机的存储盘` - local
+
+```shell
+./buildvm.sh 102 test1 1234567 1 512 10 40001 40002 40003 50000 50025 ubuntu20 local
+```
+
+开设完毕可执行```cat vm102```查看信息,或到WEB端对应VM的NOTES中查看
+
+#### 删除示例
+
+- 停止VM
+- 删除VM
+- 删除端口映射
+- 重启网络
+- 删除log文件
+
+```shell
+qm stop 102
+qm destroy 102
+iptables -t nat -F
+iptables -t filter -F
+service networking restart
+systemctl restart networking.service
+rm -rf vm102
+```
+
+#### 相关qcow2镜像
+
+- 已预安装开启cloudinit,开启SSH登陆,预设值SSH监听V4和V6的22端口,开启允许密码验证登陆,开启允许ROOT登陆
+
+目前使用的镜像列表为
+
+[https://github.com/spiritLHLS/Images/releases/tag/v1.0](https://github.com/spiritLHLS/Images/releases/tag/v1.0)
+
+### 批量开设NAT的KVM虚拟化的VM
+
+::warning
+初次使用前需要保证当前PVE纯净且宿主机未进行过任何端口映射,否则设置冲突可能出现BUG
+开设前请使用screen挂起执行,避免批量开设时间过长,SSH不稳定导致中间执行中断
+::
+- 可多次运行批量生成VM
+- 自动开设NAT服务器,选项留空默认使用debian11镜像,可自定义使用镜像名字,支持的系统名字详见上文支持的镜像列表
+- 自动进行内外网端口映射,含22,80,443端口以及其他25个内外网端口号一样的端口
+- 生成后需要等待一段时间虚拟机内部的cloudinit配置好网络以及登陆信息,大概需要5分钟,每个虚拟机创建之间有间隔等待60秒避免突发性能不足
+- 默认批量开设的虚拟机网络配置为:22,80,443端口及一个25个端口区间的内外网映射
+- 可自定义批量开设的核心数,内存大小,硬盘大小,使用宿主机哪个存储盘,记得自己计算好空闲资源开设
+- 虚拟机的相关信息将会存储到WEB端对应VM的NOTES中,可在WEB端查看
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/create_vm.sh -o create_vm.sh && chmod +x create_vm.sh && bash create_vm.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/create_vm.sh -o create_vm.sh && chmod +x create_vm.sh && bash create_vm.sh
+```
+
+开设完毕可执行```cat vmlog```查看信息,或到WEB端对应VM的NOTES中查看
+
+#### 删除所有VM
+
+- 删除所有VM
+- 删除所有nat的端口映射
+- 重启网络
+- 删除log文件
+
+```shell
+for vmid in $(qm list | awk '{if(NR>1) print $1}'); do qm stop $vmid; qm destroy $vmid; rm -rf /var/lib/vz/images/$vmid*; done
+iptables -t nat -F
+iptables -t filter -F
+service networking restart
+systemctl restart networking.service
+rm -rf vmlog
+```
+
+::tip
+PVE修改VM配置前都得停机先,再修改配置,修改完再启动,免得出现配置重载错误
+::
+
+### 开设独立IPV4地址的VM
+
+::warning
+使用前需要保证当前宿主机的IP段带了至少2个IP,且有空余的IP未配置,该空余的IP未绑定宿主机
+开设前请使用screen挂起执行,避免开设时间过长,SSH不稳定导致中间执行中断
+::
+- 自动检测可用的IP区间,通过ping检测空余可使用的IP,选取其中之一绑定到虚拟机上
+- 系统的相关信息将会存储到对应的虚拟机的NOTE中,可在WEB端查看
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/buildvm_extraip.sh -o buildvm_extraip.sh && chmod +x buildvm_extraip.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/buildvm_extraip.sh -o buildvm_extraip.sh && chmod +x buildvm_extraip.sh
+```
+
+#### 创建示例
+
+```shell
+./buildvm_extraip.sh VMID 用户名 密码 CPU核数 内存大小以MB计算 硬盘大小以GB计算 系统 存储盘
+```
+
+```shell
+./buildvm_extraip.sh 152 test1 1234567 1 1024 10 ubuntu20 local
+```
+
+上述命令意义为开设一个带独立IPV4地址的虚拟机,VMID是152,用户名是test1,密码是1234567,CPU是1核,内存是1024MB,硬盘是10G,系统是Ubuntu20,存储盘是local盘也就是系统盘
+
+### 删除示例
+
+```shell
+qm stop 152
+qm destroy 152
+rm -rf vm152
+```
diff --git a/docs/guide/pve_lxc.md b/docs/guide/pve_lxc.md
new file mode 100644
index 0000000000..955a56b81d
--- /dev/null
+++ b/docs/guide/pve_lxc.md
@@ -0,0 +1,120 @@
+## 单独开设LXC虚拟化的CT
+
+::warning
+初次使用前需要保证当前PVE纯净且宿主机未进行过任何端口映射,否则设置冲突可能出现BUG
+开设前请使用screen挂起执行,避免批量开设时间过长,SSH不稳定导致中间执行中断
+::
+- 自动开设NAT服务器,默认使用Debian11镜像,也可自定义系统
+- 自动进行内外网端口映射,含22,80,443端口以及其他25个内外网端口号一样的端口
+- 生成后需要等待一段时间虚拟机内部配置好网络以及登陆信息,大概需要3分钟
+- 默认开设的网络配置为:22,80,443端口及一个25个端口区间的内外网映射
+- 可自定义开设的核心数,内存大小,硬盘大小,使用宿主机哪个存储盘,记得自己计算好空闲资源开设
+- 可在命令中指定存储盘位置,默认不指定时为local盘即系统盘,可指定为PVE中显示的挂载盘
+- 开设的CT默认已启用SSH且允许root登陆,且已设置支持使用docker的嵌套虚拟化
+- 容器的相关信息将会存储到对应的容器的NOTE中,可在WEB端查看
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/buildct.sh -o buildct.sh && chmod +x buildct.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/buildct.sh -o buildct.sh && chmod +x buildct.sh
+```
+
+#### 使用方法
+
+- 系统支持:debian10,debian11,ubuntu18,ubuntu20,ubuntu22,centos8,almalinux9等
+- 系统参数一律是小写的系统名字拼接版本号,具体可执行```pveam available --section system```查看可用的系统名字和版本号(注意脚本使用的参数只有小写的英文系统名字拼接版本号)
+- 其他系统可能支持可能不支持,自行测试
+- 默认用户名是root
+
+```shell
+./buildct.sh CTID 密码 CPU核数 内存 硬盘 SSH端口 80端口 443端口 外网端口起 外网端口止 系统 存储盘
+```
+
+#### 测试示例
+
+* 以下为开设的示例CT的信息:
+`VMID` - 102
+`SSH登录的用户名` - root
+`SSH登录的密码` - 1234567
+`CPU核数` - 1
+`内存大小` - 512MB
+`磁盘大小` - 5G
+`SSH端口` - 20001
+`80端口` - 20002
+`443端口` - 20003
+`内外网映射端口一致的区间` - 30000到30025
+`系统` - debian11
+`宿主机的存储盘` - local
+
+```shell
+./buildct.sh 102 1234567 1 512 5 20001 20002 20003 30000 30025 debian11 local
+```
+
+开设完毕可执行```cat ct102```查看信息,或在web端的NOTES查看
+
+#### 删除示例
+
+- 停止CT
+- 删除CT
+- 删除端口映射
+- 重启网络
+- 删除log文件
+
+```shell
+pct stop 102
+pct destroy 102
+rm -rf ct102
+iptables -t nat -F
+iptables -t filter -F
+service networking restart
+systemctl restart networking.service
+```
+
+## 批量开设NAT的LXC虚拟化的CT
+
+::warning
+初次使用前需要保证当前PVE纯净且宿主机未进行过任何端口映射,否则设置冲突可能出现BUG
+开设前请使用screen挂起执行,避免批量开设时间过长,SSH不稳定导致中间执行中断
+::
+- 可多次运行批量生成CT容器,但需要注意的是母鸡内存记得开点swap免得机器炸了[开SWAP点我跳转](https://github.com/spiritLHLS/addswap)
+- 每个容器创建之间有间隔等待60秒避免突发性能不足
+- 可自定义批量开设的核心数,内存大小,硬盘大小,使用宿主机哪个存储盘,记得自己计算好空闲资源开设
+- 开设的CT默认已启用SSH且允许root登陆,且已设置支持使用docker的嵌套虚拟化
+- 容器的相关信息将会存储到对应的容器的NOTE中,可在WEB端查看
+
+国际
+
+```shell
+curl -L https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/create_ct.sh -o create_ct.sh && chmod +x create_ct.sh && bash create_ct.sh
+```
+
+国内
+
+```shell
+curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/create_ct.sh -o create_ct.sh && chmod +x create_ct.sh && bash create_ct.sh
+```
+
+开设完毕可执行```cat ctlog```查看信息,或在web端的NOTES查看
+
+
+#### 删除所有CT
+
+- 删除所有CT
+- 删除所有nat的端口映射
+- 重启网络
+- 删除log文件
+
+```shell
+pct list | awk 'NR>1{print $1}' | xargs -I {} sh -c 'pct stop {}; pct destroy {}'
+rm -rf ct*
+iptables -t nat -F
+iptables -t filter -F
+service networking restart
+systemctl restart networking.service
+```
diff --git a/docs/guide/pve_precheck.md b/docs/guide/pve_precheck.md
new file mode 100644
index 0000000000..36d7abeb39
--- /dev/null
+++ b/docs/guide/pve_precheck.md
@@ -0,0 +1,42 @@
+# 系统要求与配置
+
+## 各种要求
+
+建议debian在使用前尽量使用最新的稳定版本的系统
+
+非debian11可使用 [debian一键升级](https://github.com/spiritLHLS/one-click-installation-script#%E4%B8%80%E9%94%AE%E5%8D%87%E7%BA%A7%E4%BD%8E%E7%89%88%E6%9C%ACdebian%E4%B8%BAdebian11) 来升级系统
+
+本项目只适配Debian系统(非Debian无法通过APT源安装,官方只给了Debian的镜像,其他系统只能使用ISO安装)
+
+- 系统要求:Debian 8+
+::tip
+建议debian11而不是debian12,因为后者是beta版本,debian11安装的才是稳定版
+::
+- 硬件要求:2核2G内存x86_64架构服务器硬盘至少20G
+::warning
+内存开点swap免得机器炸了[开SWAP点我跳转](https://github.com/spiritLHLS/addswap)
+::
+- 可开KVM的硬件要求:VM-X或AMD-V支持 (部分VPS和全部独服支持)
+- 如果硬件或系统需求不满足,可使用LXD批量开LXC容器[跳转](https://github.com/spiritLHLS/lxc)
+
+**遇到选项不会选的可无脑回车安装,本项目所有脚本内置国内外IP自动判断,使用的是不同的安装源与配置文件,有使用CDN加速镜像下载**
+
+## 检测环境
+
+- 本项目相关脚本执行前务必执行本脚本检测环境,如果不符合安装PVE的要求则无法使用后续的脚本
+- 检测硬件配置是否满足最低要求
+- 检测硬件环境是否可嵌套虚拟化KVM类型的服务器
+- 检测系统环境是否可嵌套虚拟化KVM类型的服务器
+- 不可嵌套虚拟化KVM类型的服务器也可以开LXC虚拟化的服务器,但不推荐安装PVE,不如使用[LXD](https://github.com/spiritLHLS/lxc)
+
+国际
+
+```
+bash <(wget -qO- --no-check-certificate https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/check_kernal.sh)
+```
+
+国内
+
+```
+bash <(wget -qO- --no-check-certificate https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/check_kernal.sh)
+```
\ No newline at end of file
diff --git a/docs/guide/pve_qa.md b/docs/guide/pve_qa.md
new file mode 100644
index 0000000000..8aa50f56b2
--- /dev/null
+++ b/docs/guide/pve_qa.md
@@ -0,0 +1,23 @@
+## 目前已验证的VPS商家
+
+### 可开设KVM虚拟化的NAT的商家
+
+[nocix](https://www.nocix.net/) 中的特价最低配15美元独服 (IPV6不自带,需要找客服要)
+
+[amhost](http://amhost.net/vps/?cid=29317) 中的测试款
+
+[digitalocean](https://m.do.co/c/e9712622ee89) 中的 Perminu Intel 和 Regular 4核款
+
+[skrime](https://hosting.skrime.eu/a/server) 中的 AMD Ryzen KVM Server 最低配款
+
+[webdock](https://webdock.io/en?maff=wdaff--150) 中的 AMD KVM Server
+
+[4vps](https://clck.ru/33VQmc) 中的 俄罗斯和希腊 测试款
+
+[hostaris](https://deploy.hostaris.com/) 中的 德国款 (商家的系统模板有问题,IPV6已失效和Github的连通稳定性很差)
+
+### 只可开设LXC虚拟化的NAT的商家
+
+[腾讯云](https://curl.qcloud.com/tPrMnfZm) 中的无忧款和特惠款(学生机)
+
+[spectraip](https://my.spectraip.net/aff.php?aff=35) 中的KVM服务器
\ No newline at end of file
diff --git a/docs/guide/pve_thanks.md b/docs/guide/pve_thanks.md
new file mode 100644
index 0000000000..853ad35c48
--- /dev/null
+++ b/docs/guide/pve_thanks.md
@@ -0,0 +1,17 @@
+## 致谢
+
+https://blog.ilolicon.com/archives/615
+
+https://github.com/Ella-Alinda/somescripts/blob/main/nat.sh
+
+https://pve.proxmox.com/pve-docs/qm.1.html
+
+https://down.idc.wiki/Image/realServer-Template/
+
+https://mirrors.tuna.tsinghua.edu.cn/proxmox/
+
+https://github.com/roacn/pve/blob/main/pve.sh
+
+https://github.com/spiritLHLS/lxc
+
+感谢 [@Ella-Alinda](https://github.com/Ella-Alinda) 提供的PVE指导
\ No newline at end of file
diff --git a/docs/images/pve_kvm/pve_kvm_1.png b/docs/images/pve_kvm/pve_kvm_1.png
new file mode 100644
index 0000000000..d610889dd6
Binary files /dev/null and b/docs/images/pve_kvm/pve_kvm_1.png differ
diff --git a/docs/images/pve_kvm/pve_kvm_2.png b/docs/images/pve_kvm/pve_kvm_2.png
new file mode 100644
index 0000000000..410c1bd544
Binary files /dev/null and b/docs/images/pve_kvm/pve_kvm_2.png differ
diff --git a/docs/images/pve_kvm/pve_kvm_3.png b/docs/images/pve_kvm/pve_kvm_3.png
new file mode 100644
index 0000000000..64cf2925e3
Binary files /dev/null and b/docs/images/pve_kvm/pve_kvm_3.png differ
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 0000000000..f75de8bb57
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,19 @@
+---
+home: true
+heroImage: https://raw.githubusercontent.com/spiritlhls/pages/main/logo.jpg
+heroText: 一键虚拟化项目
+tagline: 开源、易于使用的服务器虚拟化项目
+actionText: 开始使用 →
+actionLink: /guide/dashboard
+features:
+- title: 一键安装
+ details: 支持一键脚本安装,轻松使用;基于 Debian、Ubuntu 的长期维护版本开发,尽量保证宿主机系统与开发环境一致
+- title: 自带内外网端口转发
+ details: 支持自动的内网端口转发,含TCP、UDP协议
+- title: 批量虚拟化
+ details: 支持 KVM、LXC、Docker 虚拟化批量开设虚拟机(容器)
+- title: 自限制滥用
+ details: 部分虚拟化开设的容器/虚拟机已屏蔽和装载限制,避免被用于滥用
+footer: Copyright © 2023-present oneclickvirt
+---
+
本项目采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
\ No newline at end of file
diff --git a/docs/package.json b/docs/package.json
new file mode 100644
index 0000000000..6c27c876a0
--- /dev/null
+++ b/docs/package.json
@@ -0,0 +1,4 @@
+{
+ "private": true,
+ "name": "vitepress-docs"
+}
diff --git a/docs/public/_headers b/docs/public/_headers
new file mode 100644
index 0000000000..f7fa3afc62
--- /dev/null
+++ b/docs/public/_headers
@@ -0,0 +1,3 @@
+/assets/*
+ cache-control: max-age=31536000
+ cache-control: immutable
\ No newline at end of file
diff --git a/docs/snippets/snippet-with-region.js b/docs/snippets/snippet-with-region.js
new file mode 100644
index 0000000000..9c7faaebca
--- /dev/null
+++ b/docs/snippets/snippet-with-region.js
@@ -0,0 +1,7 @@
+// #region snippet
+function foo() {
+ // ..
+}
+// #endregion snippet
+
+export default foo
diff --git a/docs/snippets/snippet.js b/docs/snippets/snippet.js
new file mode 100644
index 0000000000..575039d1ec
--- /dev/null
+++ b/docs/snippets/snippet.js
@@ -0,0 +1,3 @@
+export default function () {
+ // ..
+}
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000000..50c0e4dd8b
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,1858 @@
+{
+ "name": "oneclickvirt.github.io",
+ "version": "1.0.0",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "oneclickvirt.github.io",
+ "version": "1.0.0",
+ "license": "ISC",
+ "devDependencies": {
+ "vitepress": "^0.22.4"
+ }
+ },
+ "node_modules/@algolia/autocomplete-core": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.5.2.tgz",
+ "integrity": "sha512-DY0bhyczFSS1b/CqJlTE/nQRtnTAHl6IemIkBy0nEWnhDzRDdtdx4p5Uuk3vwAFxwEEgi1WqKwgSSMx6DpNL4A==",
+ "dev": true,
+ "dependencies": {
+ "@algolia/autocomplete-shared": "1.5.2"
+ }
+ },
+ "node_modules/@algolia/autocomplete-preset-algolia": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.5.2.tgz",
+ "integrity": "sha512-3MRYnYQFJyovANzSX2CToS6/5cfVjbLLqFsZTKcvF3abhQzxbqwwaMBlJtt620uBUOeMzhdfasKhCc40+RHiZw==",
+ "dev": true,
+ "dependencies": {
+ "@algolia/autocomplete-shared": "1.5.2"
+ },
+ "peerDependencies": {
+ "@algolia/client-search": "^4.9.1",
+ "algoliasearch": "^4.9.1"
+ }
+ },
+ "node_modules/@algolia/autocomplete-shared": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.5.2.tgz",
+ "integrity": "sha512-ylQAYv5H0YKMfHgVWX0j0NmL8XBcAeeeVQUmppnnMtzDbDnca6CzhKj3Q8eF9cHCgcdTDdb5K+3aKyGWA0obug==",
+ "dev": true
+ },
+ "node_modules/@algolia/cache-browser-local-storage": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.13.0.tgz",
+ "integrity": "sha512-nj1vHRZauTqP/bluwkRIgEADEimqojJgoTRCel5f6q8WCa9Y8QeI4bpDQP28FoeKnDRYa3J5CauDlN466jqRhg==",
+ "dev": true,
+ "dependencies": {
+ "@algolia/cache-common": "4.13.0"
+ }
+ },
+ "node_modules/@algolia/cache-common": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.13.0.tgz",
+ "integrity": "sha512-f9mdZjskCui/dA/fA/5a+6hZ7xnHaaZI5tM/Rw9X8rRB39SUlF/+o3P47onZ33n/AwkpSbi5QOyhs16wHd55kA==",
+ "dev": true
+ },
+ "node_modules/@algolia/cache-in-memory": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.13.0.tgz",
+ "integrity": "sha512-hHdc+ahPiMM92CQMljmObE75laYzNFYLrNOu0Q3/eyvubZZRtY2SUsEEgyUEyzXruNdzrkcDxFYa7YpWBJYHAg==",
+ "dev": true,
+ "dependencies": {
+ "@algolia/cache-common": "4.13.0"
+ }
+ },
+ "node_modules/@algolia/client-account": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.13.0.tgz",
+ "integrity": "sha512-FzFqFt9b0g/LKszBDoEsW+dVBuUe1K3scp2Yf7q6pgHWM1WqyqUlARwVpLxqyc+LoyJkTxQftOKjyFUqddnPKA==",
+ "dev": true,
+ "dependencies": {
+ "@algolia/client-common": "4.13.0",
+ "@algolia/client-search": "4.13.0",
+ "@algolia/transporter": "4.13.0"
+ }
+ },
+ "node_modules/@algolia/client-analytics": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.13.0.tgz",
+ "integrity": "sha512-klmnoq2FIiiMHImkzOm+cGxqRLLu9CMHqFhbgSy9wtXZrqb8BBUIUE2VyBe7azzv1wKcxZV2RUyNOMpFqmnRZA==",
+ "dev": true,
+ "dependencies": {
+ "@algolia/client-common": "4.13.0",
+ "@algolia/client-search": "4.13.0",
+ "@algolia/requester-common": "4.13.0",
+ "@algolia/transporter": "4.13.0"
+ }
+ },
+ "node_modules/@algolia/client-common": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.13.0.tgz",
+ "integrity": "sha512-GoXfTp0kVcbgfSXOjfrxx+slSipMqGO9WnNWgeMmru5Ra09MDjrcdunsiiuzF0wua6INbIpBQFTC2Mi5lUNqGA==",
+ "dev": true,
+ "dependencies": {
+ "@algolia/requester-common": "4.13.0",
+ "@algolia/transporter": "4.13.0"
+ }
+ },
+ "node_modules/@algolia/client-personalization": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.13.0.tgz",
+ "integrity": "sha512-KneLz2WaehJmNfdr5yt2HQETpLaCYagRdWwIwkTqRVFCv4DxRQ2ChPVW9jeTj4YfAAhfzE6F8hn7wkQ/Jfj6ZA==",
+ "dev": true,
+ "dependencies": {
+ "@algolia/client-common": "4.13.0",
+ "@algolia/requester-common": "4.13.0",
+ "@algolia/transporter": "4.13.0"
+ }
+ },
+ "node_modules/@algolia/client-search": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.13.0.tgz",
+ "integrity": "sha512-blgCKYbZh1NgJWzeGf+caKE32mo3j54NprOf0LZVCubQb3Kx37tk1Hc8SDs9bCAE8hUvf3cazMPIg7wscSxspA==",
+ "dev": true,
+ "dependencies": {
+ "@algolia/client-common": "4.13.0",
+ "@algolia/requester-common": "4.13.0",
+ "@algolia/transporter": "4.13.0"
+ }
+ },
+ "node_modules/@algolia/logger-common": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.13.0.tgz",
+ "integrity": "sha512-8yqXk7rMtmQJ9wZiHOt/6d4/JDEg5VCk83gJ39I+X/pwUPzIsbKy9QiK4uJ3aJELKyoIiDT1hpYVt+5ia+94IA==",
+ "dev": true
+ },
+ "node_modules/@algolia/logger-console": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.13.0.tgz",
+ "integrity": "sha512-YepRg7w2/87L0vSXRfMND6VJ5d6699sFJBRWzZPOlek2p5fLxxK7O0VncYuc/IbVHEgeApvgXx0WgCEa38GVuQ==",
+ "dev": true,
+ "dependencies": {
+ "@algolia/logger-common": "4.13.0"
+ }
+ },
+ "node_modules/@algolia/requester-browser-xhr": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.13.0.tgz",
+ "integrity": "sha512-Dj+bnoWR5MotrnjblzGKZ2kCdQi2cK/VzPURPnE616NU/il7Ypy6U6DLGZ/ZYz+tnwPa0yypNf21uqt84fOgrg==",
+ "dev": true,
+ "dependencies": {
+ "@algolia/requester-common": "4.13.0"
+ }
+ },
+ "node_modules/@algolia/requester-common": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.13.0.tgz",
+ "integrity": "sha512-BRTDj53ecK+gn7ugukDWOOcBRul59C4NblCHqj4Zm5msd5UnHFjd/sGX+RLOEoFMhetILAnmg6wMrRrQVac9vw==",
+ "dev": true
+ },
+ "node_modules/@algolia/requester-node-http": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.13.0.tgz",
+ "integrity": "sha512-9b+3O4QFU4azLhGMrZAr/uZPydvzOR4aEZfSL8ZrpLZ7fbbqTO0S/5EVko+QIgglRAtVwxvf8UJ1wzTD2jvKxQ==",
+ "dev": true,
+ "dependencies": {
+ "@algolia/requester-common": "4.13.0"
+ }
+ },
+ "node_modules/@algolia/transporter": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.13.0.tgz",
+ "integrity": "sha512-8tSQYE+ykQENAdeZdofvtkOr5uJ9VcQSWgRhQ9h01AehtBIPAczk/b2CLrMsw5yQZziLs5cZ3pJ3478yI+urhA==",
+ "dev": true,
+ "dependencies": {
+ "@algolia/cache-common": "4.13.0",
+ "@algolia/logger-common": "4.13.0",
+ "@algolia/requester-common": "4.13.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.12.tgz",
+ "integrity": "sha512-FLzHmN9V3AJIrWfOpvRlZCeVg/WLdicSnTMsLur6uDj9TT8ymUlG9XxURdW/XvuygK+2CW0poOJABdA4m/YKxA==",
+ "dev": true,
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@docsearch/css": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.0.0.tgz",
+ "integrity": "sha512-1kkV7tkAsiuEd0shunYRByKJe3xQDG2q7wYg24SOw1nV9/2lwEd4WrUYRJC/ukGTl2/kHeFxsaUvtiOy0y6fFA==",
+ "dev": true
+ },
+ "node_modules/@docsearch/js": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.0.0.tgz",
+ "integrity": "sha512-j3tUJWlgW3slYqzGB8fm7y05kh2qqrIK1dZOXHeMUm/5gdKE85fiz/ltfCPMDFb/MXF+bLZChJXSMzqY0Ck30Q==",
+ "dev": true,
+ "dependencies": {
+ "@docsearch/react": "3.0.0",
+ "preact": "^10.0.0"
+ }
+ },
+ "node_modules/@docsearch/react": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.0.0.tgz",
+ "integrity": "sha512-yhMacqS6TVQYoBh/o603zszIb5Bl8MIXuOc6Vy617I74pirisDzzcNh0NEaYQt50fVVR3khUbeEhUEWEWipESg==",
+ "dev": true,
+ "dependencies": {
+ "@algolia/autocomplete-core": "1.5.2",
+ "@algolia/autocomplete-preset-algolia": "1.5.2",
+ "@docsearch/css": "3.0.0",
+ "algoliasearch": "^4.0.0"
+ },
+ "peerDependencies": {
+ "@types/react": ">= 16.8.0 < 18.0.0",
+ "react": ">= 16.8.0 < 18.0.0",
+ "react-dom": ">= 16.8.0 < 18.0.0"
+ }
+ },
+ "node_modules/@types/prop-types": {
+ "version": "15.7.5",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@types/react": {
+ "version": "17.0.45",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.45.tgz",
+ "integrity": "sha512-YfhQ22Lah2e3CHPsb93tRwIGNiSwkuz1/blk4e6QrWS0jQzCSNbGLtOEYhPg02W0yGTTmpajp7dCTbBAMN3qsg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/scheduler": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@vitejs/plugin-vue": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.3.3.tgz",
+ "integrity": "sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^2.5.10",
+ "vue": "^3.2.25"
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.2.33",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.33.tgz",
+ "integrity": "sha512-AAmr52ji3Zhk7IKIuigX2osWWsb2nQE5xsdFYjdnmtQ4gymmqXbjLvkSE174+fF3A3kstYrTgGkqgOEbsdLDpw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/shared": "3.2.33",
+ "estree-walker": "^2.0.2",
+ "source-map": "^0.6.1"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.2.33",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.33.tgz",
+ "integrity": "sha512-GhiG1C8X98Xz9QUX/RlA6/kgPBWJkjq0Rq6//5XTAGSYrTMBgcLpP9+CnlUg1TFxnnCVughAG+KZl28XJqw8uQ==",
+ "dev": true,
+ "dependencies": {
+ "@vue/compiler-core": "3.2.33",
+ "@vue/shared": "3.2.33"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.2.33",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.33.tgz",
+ "integrity": "sha512-H8D0WqagCr295pQjUYyO8P3IejM3vEzeCO1apzByAEaAR/WimhMYczHfZVvlCE/9yBaEu/eu9RdiWr0kF8b71Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.33",
+ "@vue/compiler-dom": "3.2.33",
+ "@vue/compiler-ssr": "3.2.33",
+ "@vue/reactivity-transform": "3.2.33",
+ "@vue/shared": "3.2.33",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7",
+ "postcss": "^8.1.10",
+ "source-map": "^0.6.1"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.2.33",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.33.tgz",
+ "integrity": "sha512-XQh1Xdk3VquDpXsnoCd7JnMoWec9CfAzQDQsaMcSU79OrrO2PNR0ErlIjm/mGq3GmBfkQjzZACV+7GhfRB8xMQ==",
+ "dev": true,
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.33",
+ "@vue/shared": "3.2.33"
+ }
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.2.33",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.33.tgz",
+ "integrity": "sha512-62Sq0mp9/0bLmDuxuLD5CIaMG2susFAGARLuZ/5jkU1FCf9EDbwUuF+BO8Ub3Rbodx0ziIecM/NsmyjardBxfQ==",
+ "dev": true,
+ "dependencies": {
+ "@vue/shared": "3.2.33"
+ }
+ },
+ "node_modules/@vue/reactivity-transform": {
+ "version": "3.2.33",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.33.tgz",
+ "integrity": "sha512-4UL5KOIvSQb254aqenW4q34qMXbfZcmEsV/yVidLUgvwYQQ/D21bGX3DlgPUGI3c4C+iOnNmDCkIxkILoX/Pyw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.33",
+ "@vue/shared": "3.2.33",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7"
+ }
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.2.33",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.33.tgz",
+ "integrity": "sha512-N2D2vfaXsBPhzCV3JsXQa2NECjxP3eXgZlFqKh4tgakp3iX6LCGv76DLlc+IfFZq+TW10Y8QUfeihXOupJ1dGw==",
+ "dev": true,
+ "dependencies": {
+ "@vue/reactivity": "3.2.33",
+ "@vue/shared": "3.2.33"
+ }
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.2.33",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.33.tgz",
+ "integrity": "sha512-LSrJ6W7CZTSUygX5s8aFkraDWlO6K4geOwA3quFF2O+hC3QuAMZt/0Xb7JKE3C4JD4pFwCSO7oCrZmZ0BIJUnw==",
+ "dev": true,
+ "dependencies": {
+ "@vue/runtime-core": "3.2.33",
+ "@vue/shared": "3.2.33",
+ "csstype": "^2.6.8"
+ }
+ },
+ "node_modules/@vue/runtime-dom/node_modules/csstype": {
+ "version": "2.6.20",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz",
+ "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==",
+ "dev": true
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.2.33",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.33.tgz",
+ "integrity": "sha512-4jpJHRD4ORv8PlbYi+/MfP8ec1okz6rybe36MdpkDrGIdEItHEUyaHSKvz+ptNEyQpALmmVfRteHkU9F8vxOew==",
+ "dev": true,
+ "dependencies": {
+ "@vue/compiler-ssr": "3.2.33",
+ "@vue/shared": "3.2.33"
+ },
+ "peerDependencies": {
+ "vue": "3.2.33"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.2.33",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.33.tgz",
+ "integrity": "sha512-UBc1Pg1T3yZ97vsA2ueER0F6GbJebLHYlEi4ou1H5YL4KWvMOOWwpYo9/QpWq93wxKG6Wo13IY74Hcn/f7c7Bg==",
+ "dev": true
+ },
+ "node_modules/algoliasearch": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.13.0.tgz",
+ "integrity": "sha512-oHv4faI1Vl2s+YC0YquwkK/TsaJs79g2JFg5FDm2rKN12VItPTAeQ7hyJMHarOPPYuCnNC5kixbtcqvb21wchw==",
+ "dev": true,
+ "dependencies": {
+ "@algolia/cache-browser-local-storage": "4.13.0",
+ "@algolia/cache-common": "4.13.0",
+ "@algolia/cache-in-memory": "4.13.0",
+ "@algolia/client-account": "4.13.0",
+ "@algolia/client-analytics": "4.13.0",
+ "@algolia/client-common": "4.13.0",
+ "@algolia/client-personalization": "4.13.0",
+ "@algolia/client-search": "4.13.0",
+ "@algolia/logger-common": "4.13.0",
+ "@algolia/logger-console": "4.13.0",
+ "@algolia/requester-browser-xhr": "4.13.0",
+ "@algolia/requester-common": "4.13.0",
+ "@algolia/requester-node-http": "4.13.0",
+ "@algolia/transporter": "4.13.0"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz",
+ "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/esbuild": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.39.tgz",
+ "integrity": "sha512-2kKujuzvRWYtwvNjYDY444LQIA3TyJhJIX3Yo4+qkFlDDtGlSicWgeHVJqMUP/2sSfH10PGwfsj+O2ro1m10xQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "esbuild-android-64": "0.14.39",
+ "esbuild-android-arm64": "0.14.39",
+ "esbuild-darwin-64": "0.14.39",
+ "esbuild-darwin-arm64": "0.14.39",
+ "esbuild-freebsd-64": "0.14.39",
+ "esbuild-freebsd-arm64": "0.14.39",
+ "esbuild-linux-32": "0.14.39",
+ "esbuild-linux-64": "0.14.39",
+ "esbuild-linux-arm": "0.14.39",
+ "esbuild-linux-arm64": "0.14.39",
+ "esbuild-linux-mips64le": "0.14.39",
+ "esbuild-linux-ppc64le": "0.14.39",
+ "esbuild-linux-riscv64": "0.14.39",
+ "esbuild-linux-s390x": "0.14.39",
+ "esbuild-netbsd-64": "0.14.39",
+ "esbuild-openbsd-64": "0.14.39",
+ "esbuild-sunos-64": "0.14.39",
+ "esbuild-windows-32": "0.14.39",
+ "esbuild-windows-64": "0.14.39",
+ "esbuild-windows-arm64": "0.14.39"
+ }
+ },
+ "node_modules/esbuild-android-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.39.tgz",
+ "integrity": "sha512-EJOu04p9WgZk0UoKTqLId9VnIsotmI/Z98EXrKURGb3LPNunkeffqQIkjS2cAvidh+OK5uVrXaIP229zK6GvhQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-android-arm64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.39.tgz",
+ "integrity": "sha512-+twajJqO7n3MrCz9e+2lVOnFplRsaGRwsq1KL/uOy7xK7QdRSprRQcObGDeDZUZsacD5gUkk6OiHiYp6RzU3CA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-darwin-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.39.tgz",
+ "integrity": "sha512-ImT6eUw3kcGcHoUxEcdBpi6LfTRWaV6+qf32iYYAfwOeV+XaQ/Xp5XQIBiijLeo+LpGci9M0FVec09nUw41a5g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-darwin-arm64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.39.tgz",
+ "integrity": "sha512-/fcQ5UhE05OiT+bW5v7/up1bDsnvaRZPJxXwzXsMRrr7rZqPa85vayrD723oWMT64dhrgWeA3FIneF8yER0XTw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-freebsd-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.39.tgz",
+ "integrity": "sha512-oMNH8lJI4wtgN5oxuFP7BQ22vgB/e3Tl5Woehcd6i2r6F3TszpCnNl8wo2d/KvyQ4zvLvCWAlRciumhQg88+kQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-freebsd-arm64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.39.tgz",
+ "integrity": "sha512-1GHK7kwk57ukY2yI4ILWKJXaxfr+8HcM/r/JKCGCPziIVlL+Wi7RbJ2OzMcTKZ1HpvEqCTBT/J6cO4ZEwW4Ypg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-32": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.39.tgz",
+ "integrity": "sha512-g97Sbb6g4zfRLIxHgW2pc393DjnkTRMeq3N1rmjDUABxpx8SjocK4jLen+/mq55G46eE2TA0MkJ4R3SpKMu7dg==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.39.tgz",
+ "integrity": "sha512-4tcgFDYWdI+UbNMGlua9u1Zhu0N5R6u9tl5WOM8aVnNX143JZoBZLpCuUr5lCKhnD0SCO+5gUyMfupGrHtfggQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-arm": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.39.tgz",
+ "integrity": "sha512-t0Hn1kWVx5UpCzAJkKRfHeYOLyFnXwYynIkK54/h3tbMweGI7dj400D1k0Vvtj2u1P+JTRT9tx3AjtLEMmfVBQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-arm64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.39.tgz",
+ "integrity": "sha512-23pc8MlD2D6Px1mV8GMglZlKgwgNKAO8gsgsLLcXWSs9lQsCYkIlMo/2Ycfo5JrDIbLdwgP8D2vpfH2KcBqrDQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-mips64le": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.39.tgz",
+ "integrity": "sha512-epwlYgVdbmkuRr5n4es3B+yDI0I2e/nxhKejT9H0OLxFAlMkeQZxSpxATpDc9m8NqRci6Kwyb/SfmD1koG2Zuw==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-ppc64le": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.39.tgz",
+ "integrity": "sha512-W/5ezaq+rQiQBThIjLMNjsuhPHg+ApVAdTz2LvcuesZFMsJoQAW2hutoyg47XxpWi7aEjJGrkS26qCJKhRn3QQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-riscv64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.39.tgz",
+ "integrity": "sha512-IS48xeokcCTKeQIOke2O0t9t14HPvwnZcy+5baG13Z1wxs9ZrC5ig5ypEQQh4QMKxURD5TpCLHw2W42CLuVZaA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-s390x": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.39.tgz",
+ "integrity": "sha512-zEfunpqR8sMomqXhNTFEKDs+ik7HC01m3M60MsEjZOqaywHu5e5682fMsqOlZbesEAAaO9aAtRBsU7CHnSZWyA==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-netbsd-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.39.tgz",
+ "integrity": "sha512-Uo2suJBSIlrZCe4E0k75VDIFJWfZy+bOV6ih3T4MVMRJh1lHJ2UyGoaX4bOxomYN3t+IakHPyEoln1+qJ1qYaA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-openbsd-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.39.tgz",
+ "integrity": "sha512-secQU+EpgUPpYjJe3OecoeGKVvRMLeKUxSMGHnK+aK5uQM3n1FPXNJzyz1LHFOo0WOyw+uoCxBYdM4O10oaCAA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-sunos-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.39.tgz",
+ "integrity": "sha512-qHq0t5gePEDm2nqZLb+35p/qkaXVS7oIe32R0ECh2HOdiXXkj/1uQI9IRogGqKkK+QjDG+DhwiUw7QoHur/Rwg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-windows-32": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.39.tgz",
+ "integrity": "sha512-XPjwp2OgtEX0JnOlTgT6E5txbRp6Uw54Isorm3CwOtloJazeIWXuiwK0ONJBVb/CGbiCpS7iP2UahGgd2p1x+Q==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-windows-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.39.tgz",
+ "integrity": "sha512-E2wm+5FwCcLpKsBHRw28bSYQw0Ikxb7zIMxw3OPAkiaQhLVr3dnVO8DofmbWhhf6b97bWzg37iSZ45ZDpLw7Ow==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-windows-arm64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.39.tgz",
+ "integrity": "sha512-sBZQz5D+Gd0EQ09tZRnz/PpVdLwvp/ufMtJ1iDFYddDaPpZXKqPyaxfYBLs3ueiaksQ26GGa7sci0OqFzNs7KA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "dev": true
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
+ "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
+ "dev": true,
+ "dependencies": {
+ "has": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "dev": true,
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+ "dev": true,
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "dev": true
+ },
+ "node_modules/postcss": {
+ "version": "8.4.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.13.tgz",
+ "integrity": "sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.3",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/preact": {
+ "version": "10.7.2",
+ "resolved": "https://registry.npmjs.org/preact/-/preact-10.7.2.tgz",
+ "integrity": "sha512-GLjn0I3r6ka+NvxJUppsVFqb4V0qDTEHT/QxHlidPuClGaxF/4AI2Qti4a0cv3XMh5n1+D3hLScW10LRIm5msQ==",
+ "dev": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/preact"
+ }
+ },
+ "node_modules/prismjs": {
+ "version": "1.28.0",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.28.0.tgz",
+ "integrity": "sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/react": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
+ "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
+ "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1",
+ "scheduler": "^0.20.2"
+ },
+ "peerDependencies": {
+ "react": "17.0.2"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
+ "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.8.1",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "2.73.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.73.0.tgz",
+ "integrity": "sha512-h/UngC3S4Zt28mB3g0+2YCMegT5yoftnQplwzPqGZcKvlld5e+kT/QRmJiL+qxGyZKOYpgirWGdLyEO1b0dpLQ==",
+ "dev": true,
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/scheduler": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
+ "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+ "dev": true
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/vite": {
+ "version": "2.9.9",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.9.tgz",
+ "integrity": "sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew==",
+ "dev": true,
+ "dependencies": {
+ "esbuild": "^0.14.27",
+ "postcss": "^8.4.13",
+ "resolve": "^1.22.0",
+ "rollup": "^2.59.0"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": ">=12.2.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ },
+ "peerDependencies": {
+ "less": "*",
+ "sass": "*",
+ "stylus": "*"
+ },
+ "peerDependenciesMeta": {
+ "less": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vitepress": {
+ "version": "0.22.4",
+ "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-0.22.4.tgz",
+ "integrity": "sha512-oZUnLO/SpYdThaBKefDeOiVlr0Rie4Ppx3FzMnMyLtJnI5GlBMNjqYqMy/4+umm/iC+ZDJfI+IlDKxv5fZnYzA==",
+ "dev": true,
+ "dependencies": {
+ "@docsearch/css": "^3.0.0",
+ "@docsearch/js": "^3.0.0",
+ "@vitejs/plugin-vue": "^2.3.2",
+ "prismjs": "^1.25.0",
+ "vite": "^2.9.7",
+ "vue": "^3.2.33"
+ },
+ "bin": {
+ "vitepress": "bin/vitepress.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/vue": {
+ "version": "3.2.33",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.33.tgz",
+ "integrity": "sha512-si1ExAlDUrLSIg/V7D/GgA4twJwfsfgG+t9w10z38HhL/HA07132pUQ2KuwAo8qbCyMJ9e6OqrmWrOCr+jW7ZQ==",
+ "dev": true,
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.33",
+ "@vue/compiler-sfc": "3.2.33",
+ "@vue/runtime-dom": "3.2.33",
+ "@vue/server-renderer": "3.2.33",
+ "@vue/shared": "3.2.33"
+ }
+ }
+ },
+ "dependencies": {
+ "@algolia/autocomplete-core": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.5.2.tgz",
+ "integrity": "sha512-DY0bhyczFSS1b/CqJlTE/nQRtnTAHl6IemIkBy0nEWnhDzRDdtdx4p5Uuk3vwAFxwEEgi1WqKwgSSMx6DpNL4A==",
+ "dev": true,
+ "requires": {
+ "@algolia/autocomplete-shared": "1.5.2"
+ }
+ },
+ "@algolia/autocomplete-preset-algolia": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.5.2.tgz",
+ "integrity": "sha512-3MRYnYQFJyovANzSX2CToS6/5cfVjbLLqFsZTKcvF3abhQzxbqwwaMBlJtt620uBUOeMzhdfasKhCc40+RHiZw==",
+ "dev": true,
+ "requires": {
+ "@algolia/autocomplete-shared": "1.5.2"
+ }
+ },
+ "@algolia/autocomplete-shared": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.5.2.tgz",
+ "integrity": "sha512-ylQAYv5H0YKMfHgVWX0j0NmL8XBcAeeeVQUmppnnMtzDbDnca6CzhKj3Q8eF9cHCgcdTDdb5K+3aKyGWA0obug==",
+ "dev": true
+ },
+ "@algolia/cache-browser-local-storage": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.13.0.tgz",
+ "integrity": "sha512-nj1vHRZauTqP/bluwkRIgEADEimqojJgoTRCel5f6q8WCa9Y8QeI4bpDQP28FoeKnDRYa3J5CauDlN466jqRhg==",
+ "dev": true,
+ "requires": {
+ "@algolia/cache-common": "4.13.0"
+ }
+ },
+ "@algolia/cache-common": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.13.0.tgz",
+ "integrity": "sha512-f9mdZjskCui/dA/fA/5a+6hZ7xnHaaZI5tM/Rw9X8rRB39SUlF/+o3P47onZ33n/AwkpSbi5QOyhs16wHd55kA==",
+ "dev": true
+ },
+ "@algolia/cache-in-memory": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.13.0.tgz",
+ "integrity": "sha512-hHdc+ahPiMM92CQMljmObE75laYzNFYLrNOu0Q3/eyvubZZRtY2SUsEEgyUEyzXruNdzrkcDxFYa7YpWBJYHAg==",
+ "dev": true,
+ "requires": {
+ "@algolia/cache-common": "4.13.0"
+ }
+ },
+ "@algolia/client-account": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.13.0.tgz",
+ "integrity": "sha512-FzFqFt9b0g/LKszBDoEsW+dVBuUe1K3scp2Yf7q6pgHWM1WqyqUlARwVpLxqyc+LoyJkTxQftOKjyFUqddnPKA==",
+ "dev": true,
+ "requires": {
+ "@algolia/client-common": "4.13.0",
+ "@algolia/client-search": "4.13.0",
+ "@algolia/transporter": "4.13.0"
+ }
+ },
+ "@algolia/client-analytics": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.13.0.tgz",
+ "integrity": "sha512-klmnoq2FIiiMHImkzOm+cGxqRLLu9CMHqFhbgSy9wtXZrqb8BBUIUE2VyBe7azzv1wKcxZV2RUyNOMpFqmnRZA==",
+ "dev": true,
+ "requires": {
+ "@algolia/client-common": "4.13.0",
+ "@algolia/client-search": "4.13.0",
+ "@algolia/requester-common": "4.13.0",
+ "@algolia/transporter": "4.13.0"
+ }
+ },
+ "@algolia/client-common": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.13.0.tgz",
+ "integrity": "sha512-GoXfTp0kVcbgfSXOjfrxx+slSipMqGO9WnNWgeMmru5Ra09MDjrcdunsiiuzF0wua6INbIpBQFTC2Mi5lUNqGA==",
+ "dev": true,
+ "requires": {
+ "@algolia/requester-common": "4.13.0",
+ "@algolia/transporter": "4.13.0"
+ }
+ },
+ "@algolia/client-personalization": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.13.0.tgz",
+ "integrity": "sha512-KneLz2WaehJmNfdr5yt2HQETpLaCYagRdWwIwkTqRVFCv4DxRQ2ChPVW9jeTj4YfAAhfzE6F8hn7wkQ/Jfj6ZA==",
+ "dev": true,
+ "requires": {
+ "@algolia/client-common": "4.13.0",
+ "@algolia/requester-common": "4.13.0",
+ "@algolia/transporter": "4.13.0"
+ }
+ },
+ "@algolia/client-search": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.13.0.tgz",
+ "integrity": "sha512-blgCKYbZh1NgJWzeGf+caKE32mo3j54NprOf0LZVCubQb3Kx37tk1Hc8SDs9bCAE8hUvf3cazMPIg7wscSxspA==",
+ "dev": true,
+ "requires": {
+ "@algolia/client-common": "4.13.0",
+ "@algolia/requester-common": "4.13.0",
+ "@algolia/transporter": "4.13.0"
+ }
+ },
+ "@algolia/logger-common": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.13.0.tgz",
+ "integrity": "sha512-8yqXk7rMtmQJ9wZiHOt/6d4/JDEg5VCk83gJ39I+X/pwUPzIsbKy9QiK4uJ3aJELKyoIiDT1hpYVt+5ia+94IA==",
+ "dev": true
+ },
+ "@algolia/logger-console": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.13.0.tgz",
+ "integrity": "sha512-YepRg7w2/87L0vSXRfMND6VJ5d6699sFJBRWzZPOlek2p5fLxxK7O0VncYuc/IbVHEgeApvgXx0WgCEa38GVuQ==",
+ "dev": true,
+ "requires": {
+ "@algolia/logger-common": "4.13.0"
+ }
+ },
+ "@algolia/requester-browser-xhr": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.13.0.tgz",
+ "integrity": "sha512-Dj+bnoWR5MotrnjblzGKZ2kCdQi2cK/VzPURPnE616NU/il7Ypy6U6DLGZ/ZYz+tnwPa0yypNf21uqt84fOgrg==",
+ "dev": true,
+ "requires": {
+ "@algolia/requester-common": "4.13.0"
+ }
+ },
+ "@algolia/requester-common": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.13.0.tgz",
+ "integrity": "sha512-BRTDj53ecK+gn7ugukDWOOcBRul59C4NblCHqj4Zm5msd5UnHFjd/sGX+RLOEoFMhetILAnmg6wMrRrQVac9vw==",
+ "dev": true
+ },
+ "@algolia/requester-node-http": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.13.0.tgz",
+ "integrity": "sha512-9b+3O4QFU4azLhGMrZAr/uZPydvzOR4aEZfSL8ZrpLZ7fbbqTO0S/5EVko+QIgglRAtVwxvf8UJ1wzTD2jvKxQ==",
+ "dev": true,
+ "requires": {
+ "@algolia/requester-common": "4.13.0"
+ }
+ },
+ "@algolia/transporter": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.13.0.tgz",
+ "integrity": "sha512-8tSQYE+ykQENAdeZdofvtkOr5uJ9VcQSWgRhQ9h01AehtBIPAczk/b2CLrMsw5yQZziLs5cZ3pJ3478yI+urhA==",
+ "dev": true,
+ "requires": {
+ "@algolia/cache-common": "4.13.0",
+ "@algolia/logger-common": "4.13.0",
+ "@algolia/requester-common": "4.13.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.12.tgz",
+ "integrity": "sha512-FLzHmN9V3AJIrWfOpvRlZCeVg/WLdicSnTMsLur6uDj9TT8ymUlG9XxURdW/XvuygK+2CW0poOJABdA4m/YKxA==",
+ "dev": true
+ },
+ "@docsearch/css": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.0.0.tgz",
+ "integrity": "sha512-1kkV7tkAsiuEd0shunYRByKJe3xQDG2q7wYg24SOw1nV9/2lwEd4WrUYRJC/ukGTl2/kHeFxsaUvtiOy0y6fFA==",
+ "dev": true
+ },
+ "@docsearch/js": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.0.0.tgz",
+ "integrity": "sha512-j3tUJWlgW3slYqzGB8fm7y05kh2qqrIK1dZOXHeMUm/5gdKE85fiz/ltfCPMDFb/MXF+bLZChJXSMzqY0Ck30Q==",
+ "dev": true,
+ "requires": {
+ "@docsearch/react": "3.0.0",
+ "preact": "^10.0.0"
+ }
+ },
+ "@docsearch/react": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.0.0.tgz",
+ "integrity": "sha512-yhMacqS6TVQYoBh/o603zszIb5Bl8MIXuOc6Vy617I74pirisDzzcNh0NEaYQt50fVVR3khUbeEhUEWEWipESg==",
+ "dev": true,
+ "requires": {
+ "@algolia/autocomplete-core": "1.5.2",
+ "@algolia/autocomplete-preset-algolia": "1.5.2",
+ "@docsearch/css": "3.0.0",
+ "algoliasearch": "^4.0.0"
+ }
+ },
+ "@types/prop-types": {
+ "version": "15.7.5",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
+ "dev": true,
+ "peer": true
+ },
+ "@types/react": {
+ "version": "17.0.45",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.45.tgz",
+ "integrity": "sha512-YfhQ22Lah2e3CHPsb93tRwIGNiSwkuz1/blk4e6QrWS0jQzCSNbGLtOEYhPg02W0yGTTmpajp7dCTbBAMN3qsg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "@types/scheduler": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
+ "dev": true,
+ "peer": true
+ },
+ "@vitejs/plugin-vue": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.3.3.tgz",
+ "integrity": "sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==",
+ "dev": true,
+ "requires": {}
+ },
+ "@vue/compiler-core": {
+ "version": "3.2.33",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.33.tgz",
+ "integrity": "sha512-AAmr52ji3Zhk7IKIuigX2osWWsb2nQE5xsdFYjdnmtQ4gymmqXbjLvkSE174+fF3A3kstYrTgGkqgOEbsdLDpw==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@vue/shared": "3.2.33",
+ "estree-walker": "^2.0.2",
+ "source-map": "^0.6.1"
+ }
+ },
+ "@vue/compiler-dom": {
+ "version": "3.2.33",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.33.tgz",
+ "integrity": "sha512-GhiG1C8X98Xz9QUX/RlA6/kgPBWJkjq0Rq6//5XTAGSYrTMBgcLpP9+CnlUg1TFxnnCVughAG+KZl28XJqw8uQ==",
+ "dev": true,
+ "requires": {
+ "@vue/compiler-core": "3.2.33",
+ "@vue/shared": "3.2.33"
+ }
+ },
+ "@vue/compiler-sfc": {
+ "version": "3.2.33",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.33.tgz",
+ "integrity": "sha512-H8D0WqagCr295pQjUYyO8P3IejM3vEzeCO1apzByAEaAR/WimhMYczHfZVvlCE/9yBaEu/eu9RdiWr0kF8b71Q==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.33",
+ "@vue/compiler-dom": "3.2.33",
+ "@vue/compiler-ssr": "3.2.33",
+ "@vue/reactivity-transform": "3.2.33",
+ "@vue/shared": "3.2.33",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7",
+ "postcss": "^8.1.10",
+ "source-map": "^0.6.1"
+ }
+ },
+ "@vue/compiler-ssr": {
+ "version": "3.2.33",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.33.tgz",
+ "integrity": "sha512-XQh1Xdk3VquDpXsnoCd7JnMoWec9CfAzQDQsaMcSU79OrrO2PNR0ErlIjm/mGq3GmBfkQjzZACV+7GhfRB8xMQ==",
+ "dev": true,
+ "requires": {
+ "@vue/compiler-dom": "3.2.33",
+ "@vue/shared": "3.2.33"
+ }
+ },
+ "@vue/reactivity": {
+ "version": "3.2.33",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.33.tgz",
+ "integrity": "sha512-62Sq0mp9/0bLmDuxuLD5CIaMG2susFAGARLuZ/5jkU1FCf9EDbwUuF+BO8Ub3Rbodx0ziIecM/NsmyjardBxfQ==",
+ "dev": true,
+ "requires": {
+ "@vue/shared": "3.2.33"
+ }
+ },
+ "@vue/reactivity-transform": {
+ "version": "3.2.33",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.33.tgz",
+ "integrity": "sha512-4UL5KOIvSQb254aqenW4q34qMXbfZcmEsV/yVidLUgvwYQQ/D21bGX3DlgPUGI3c4C+iOnNmDCkIxkILoX/Pyw==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.33",
+ "@vue/shared": "3.2.33",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7"
+ }
+ },
+ "@vue/runtime-core": {
+ "version": "3.2.33",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.33.tgz",
+ "integrity": "sha512-N2D2vfaXsBPhzCV3JsXQa2NECjxP3eXgZlFqKh4tgakp3iX6LCGv76DLlc+IfFZq+TW10Y8QUfeihXOupJ1dGw==",
+ "dev": true,
+ "requires": {
+ "@vue/reactivity": "3.2.33",
+ "@vue/shared": "3.2.33"
+ }
+ },
+ "@vue/runtime-dom": {
+ "version": "3.2.33",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.33.tgz",
+ "integrity": "sha512-LSrJ6W7CZTSUygX5s8aFkraDWlO6K4geOwA3quFF2O+hC3QuAMZt/0Xb7JKE3C4JD4pFwCSO7oCrZmZ0BIJUnw==",
+ "dev": true,
+ "requires": {
+ "@vue/runtime-core": "3.2.33",
+ "@vue/shared": "3.2.33",
+ "csstype": "^2.6.8"
+ },
+ "dependencies": {
+ "csstype": {
+ "version": "2.6.20",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz",
+ "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==",
+ "dev": true
+ }
+ }
+ },
+ "@vue/server-renderer": {
+ "version": "3.2.33",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.33.tgz",
+ "integrity": "sha512-4jpJHRD4ORv8PlbYi+/MfP8ec1okz6rybe36MdpkDrGIdEItHEUyaHSKvz+ptNEyQpALmmVfRteHkU9F8vxOew==",
+ "dev": true,
+ "requires": {
+ "@vue/compiler-ssr": "3.2.33",
+ "@vue/shared": "3.2.33"
+ }
+ },
+ "@vue/shared": {
+ "version": "3.2.33",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.33.tgz",
+ "integrity": "sha512-UBc1Pg1T3yZ97vsA2ueER0F6GbJebLHYlEi4ou1H5YL4KWvMOOWwpYo9/QpWq93wxKG6Wo13IY74Hcn/f7c7Bg==",
+ "dev": true
+ },
+ "algoliasearch": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.13.0.tgz",
+ "integrity": "sha512-oHv4faI1Vl2s+YC0YquwkK/TsaJs79g2JFg5FDm2rKN12VItPTAeQ7hyJMHarOPPYuCnNC5kixbtcqvb21wchw==",
+ "dev": true,
+ "requires": {
+ "@algolia/cache-browser-local-storage": "4.13.0",
+ "@algolia/cache-common": "4.13.0",
+ "@algolia/cache-in-memory": "4.13.0",
+ "@algolia/client-account": "4.13.0",
+ "@algolia/client-analytics": "4.13.0",
+ "@algolia/client-common": "4.13.0",
+ "@algolia/client-personalization": "4.13.0",
+ "@algolia/client-search": "4.13.0",
+ "@algolia/logger-common": "4.13.0",
+ "@algolia/logger-console": "4.13.0",
+ "@algolia/requester-browser-xhr": "4.13.0",
+ "@algolia/requester-common": "4.13.0",
+ "@algolia/requester-node-http": "4.13.0",
+ "@algolia/transporter": "4.13.0"
+ }
+ },
+ "csstype": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz",
+ "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==",
+ "dev": true,
+ "peer": true
+ },
+ "esbuild": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.39.tgz",
+ "integrity": "sha512-2kKujuzvRWYtwvNjYDY444LQIA3TyJhJIX3Yo4+qkFlDDtGlSicWgeHVJqMUP/2sSfH10PGwfsj+O2ro1m10xQ==",
+ "dev": true,
+ "requires": {
+ "esbuild-android-64": "0.14.39",
+ "esbuild-android-arm64": "0.14.39",
+ "esbuild-darwin-64": "0.14.39",
+ "esbuild-darwin-arm64": "0.14.39",
+ "esbuild-freebsd-64": "0.14.39",
+ "esbuild-freebsd-arm64": "0.14.39",
+ "esbuild-linux-32": "0.14.39",
+ "esbuild-linux-64": "0.14.39",
+ "esbuild-linux-arm": "0.14.39",
+ "esbuild-linux-arm64": "0.14.39",
+ "esbuild-linux-mips64le": "0.14.39",
+ "esbuild-linux-ppc64le": "0.14.39",
+ "esbuild-linux-riscv64": "0.14.39",
+ "esbuild-linux-s390x": "0.14.39",
+ "esbuild-netbsd-64": "0.14.39",
+ "esbuild-openbsd-64": "0.14.39",
+ "esbuild-sunos-64": "0.14.39",
+ "esbuild-windows-32": "0.14.39",
+ "esbuild-windows-64": "0.14.39",
+ "esbuild-windows-arm64": "0.14.39"
+ }
+ },
+ "esbuild-android-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.39.tgz",
+ "integrity": "sha512-EJOu04p9WgZk0UoKTqLId9VnIsotmI/Z98EXrKURGb3LPNunkeffqQIkjS2cAvidh+OK5uVrXaIP229zK6GvhQ==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-android-arm64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.39.tgz",
+ "integrity": "sha512-+twajJqO7n3MrCz9e+2lVOnFplRsaGRwsq1KL/uOy7xK7QdRSprRQcObGDeDZUZsacD5gUkk6OiHiYp6RzU3CA==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-darwin-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.39.tgz",
+ "integrity": "sha512-ImT6eUw3kcGcHoUxEcdBpi6LfTRWaV6+qf32iYYAfwOeV+XaQ/Xp5XQIBiijLeo+LpGci9M0FVec09nUw41a5g==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-darwin-arm64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.39.tgz",
+ "integrity": "sha512-/fcQ5UhE05OiT+bW5v7/up1bDsnvaRZPJxXwzXsMRrr7rZqPa85vayrD723oWMT64dhrgWeA3FIneF8yER0XTw==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-freebsd-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.39.tgz",
+ "integrity": "sha512-oMNH8lJI4wtgN5oxuFP7BQ22vgB/e3Tl5Woehcd6i2r6F3TszpCnNl8wo2d/KvyQ4zvLvCWAlRciumhQg88+kQ==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-freebsd-arm64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.39.tgz",
+ "integrity": "sha512-1GHK7kwk57ukY2yI4ILWKJXaxfr+8HcM/r/JKCGCPziIVlL+Wi7RbJ2OzMcTKZ1HpvEqCTBT/J6cO4ZEwW4Ypg==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-32": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.39.tgz",
+ "integrity": "sha512-g97Sbb6g4zfRLIxHgW2pc393DjnkTRMeq3N1rmjDUABxpx8SjocK4jLen+/mq55G46eE2TA0MkJ4R3SpKMu7dg==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.39.tgz",
+ "integrity": "sha512-4tcgFDYWdI+UbNMGlua9u1Zhu0N5R6u9tl5WOM8aVnNX143JZoBZLpCuUr5lCKhnD0SCO+5gUyMfupGrHtfggQ==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-arm": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.39.tgz",
+ "integrity": "sha512-t0Hn1kWVx5UpCzAJkKRfHeYOLyFnXwYynIkK54/h3tbMweGI7dj400D1k0Vvtj2u1P+JTRT9tx3AjtLEMmfVBQ==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-arm64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.39.tgz",
+ "integrity": "sha512-23pc8MlD2D6Px1mV8GMglZlKgwgNKAO8gsgsLLcXWSs9lQsCYkIlMo/2Ycfo5JrDIbLdwgP8D2vpfH2KcBqrDQ==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-mips64le": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.39.tgz",
+ "integrity": "sha512-epwlYgVdbmkuRr5n4es3B+yDI0I2e/nxhKejT9H0OLxFAlMkeQZxSpxATpDc9m8NqRci6Kwyb/SfmD1koG2Zuw==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-ppc64le": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.39.tgz",
+ "integrity": "sha512-W/5ezaq+rQiQBThIjLMNjsuhPHg+ApVAdTz2LvcuesZFMsJoQAW2hutoyg47XxpWi7aEjJGrkS26qCJKhRn3QQ==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-riscv64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.39.tgz",
+ "integrity": "sha512-IS48xeokcCTKeQIOke2O0t9t14HPvwnZcy+5baG13Z1wxs9ZrC5ig5ypEQQh4QMKxURD5TpCLHw2W42CLuVZaA==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-linux-s390x": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.39.tgz",
+ "integrity": "sha512-zEfunpqR8sMomqXhNTFEKDs+ik7HC01m3M60MsEjZOqaywHu5e5682fMsqOlZbesEAAaO9aAtRBsU7CHnSZWyA==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-netbsd-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.39.tgz",
+ "integrity": "sha512-Uo2suJBSIlrZCe4E0k75VDIFJWfZy+bOV6ih3T4MVMRJh1lHJ2UyGoaX4bOxomYN3t+IakHPyEoln1+qJ1qYaA==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-openbsd-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.39.tgz",
+ "integrity": "sha512-secQU+EpgUPpYjJe3OecoeGKVvRMLeKUxSMGHnK+aK5uQM3n1FPXNJzyz1LHFOo0WOyw+uoCxBYdM4O10oaCAA==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-sunos-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.39.tgz",
+ "integrity": "sha512-qHq0t5gePEDm2nqZLb+35p/qkaXVS7oIe32R0ECh2HOdiXXkj/1uQI9IRogGqKkK+QjDG+DhwiUw7QoHur/Rwg==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-windows-32": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.39.tgz",
+ "integrity": "sha512-XPjwp2OgtEX0JnOlTgT6E5txbRp6Uw54Isorm3CwOtloJazeIWXuiwK0ONJBVb/CGbiCpS7iP2UahGgd2p1x+Q==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-windows-64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.39.tgz",
+ "integrity": "sha512-E2wm+5FwCcLpKsBHRw28bSYQw0Ikxb7zIMxw3OPAkiaQhLVr3dnVO8DofmbWhhf6b97bWzg37iSZ45ZDpLw7Ow==",
+ "dev": true,
+ "optional": true
+ },
+ "esbuild-windows-arm64": {
+ "version": "0.14.39",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.39.tgz",
+ "integrity": "sha512-sBZQz5D+Gd0EQ09tZRnz/PpVdLwvp/ufMtJ1iDFYddDaPpZXKqPyaxfYBLs3ueiaksQ26GGa7sci0OqFzNs7KA==",
+ "dev": true,
+ "optional": true
+ },
+ "estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "dev": true
+ },
+ "fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "optional": true
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "is-core-module": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
+ "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true,
+ "peer": true
+ },
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
+ },
+ "magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "dev": true,
+ "requires": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "nanoid": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true,
+ "peer": true
+ },
+ "path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "8.4.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.13.tgz",
+ "integrity": "sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA==",
+ "dev": true,
+ "requires": {
+ "nanoid": "^3.3.3",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "preact": {
+ "version": "10.7.2",
+ "resolved": "https://registry.npmjs.org/preact/-/preact-10.7.2.tgz",
+ "integrity": "sha512-GLjn0I3r6ka+NvxJUppsVFqb4V0qDTEHT/QxHlidPuClGaxF/4AI2Qti4a0cv3XMh5n1+D3hLScW10LRIm5msQ==",
+ "dev": true
+ },
+ "prismjs": {
+ "version": "1.28.0",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.28.0.tgz",
+ "integrity": "sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==",
+ "dev": true
+ },
+ "react": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
+ "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1"
+ }
+ },
+ "react-dom": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
+ "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1",
+ "scheduler": "^0.20.2"
+ }
+ },
+ "resolve": {
+ "version": "1.22.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
+ "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
+ "dev": true,
+ "requires": {
+ "is-core-module": "^2.8.1",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ }
+ },
+ "rollup": {
+ "version": "2.73.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.73.0.tgz",
+ "integrity": "sha512-h/UngC3S4Zt28mB3g0+2YCMegT5yoftnQplwzPqGZcKvlld5e+kT/QRmJiL+qxGyZKOYpgirWGdLyEO1b0dpLQ==",
+ "dev": true,
+ "requires": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "scheduler": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
+ "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "dev": true
+ },
+ "sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+ "dev": true
+ },
+ "supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true
+ },
+ "vite": {
+ "version": "2.9.9",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.9.tgz",
+ "integrity": "sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew==",
+ "dev": true,
+ "requires": {
+ "esbuild": "^0.14.27",
+ "fsevents": "~2.3.2",
+ "postcss": "^8.4.13",
+ "resolve": "^1.22.0",
+ "rollup": "^2.59.0"
+ }
+ },
+ "vitepress": {
+ "version": "0.22.4",
+ "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-0.22.4.tgz",
+ "integrity": "sha512-oZUnLO/SpYdThaBKefDeOiVlr0Rie4Ppx3FzMnMyLtJnI5GlBMNjqYqMy/4+umm/iC+ZDJfI+IlDKxv5fZnYzA==",
+ "dev": true,
+ "requires": {
+ "@docsearch/css": "^3.0.0",
+ "@docsearch/js": "^3.0.0",
+ "@vitejs/plugin-vue": "^2.3.2",
+ "prismjs": "^1.25.0",
+ "vite": "^2.9.7",
+ "vue": "^3.2.33"
+ }
+ },
+ "vue": {
+ "version": "3.2.33",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.33.tgz",
+ "integrity": "sha512-si1ExAlDUrLSIg/V7D/GgA4twJwfsfgG+t9w10z38HhL/HA07132pUQ2KuwAo8qbCyMJ9e6OqrmWrOCr+jW7ZQ==",
+ "dev": true,
+ "requires": {
+ "@vue/compiler-dom": "3.2.33",
+ "@vue/compiler-sfc": "3.2.33",
+ "@vue/runtime-dom": "3.2.33",
+ "@vue/server-renderer": "3.2.33",
+ "@vue/shared": "3.2.33"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000000..f9be06a622
--- /dev/null
+++ b/package.json
@@ -0,0 +1,26 @@
+{
+ "name": "nezhahq.github.io",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "directories": {
+ "doc": "docs"
+ },
+ "scripts": {
+ "dev": "vitepress dev docs",
+ "build": "vitepress build docs"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/oneclickvirt/oneclickvirt.github.io.git"
+ },
+ "author": "",
+ "license": "ISC",
+ "bugs": {
+ "url": "https://github.com/oneclickvirt/oneclickvirt.github.io/issues"
+ },
+ "homepage": "https://github.com/oneclickvirt/oneclickvirt.github.io#readme",
+ "devDependencies": {
+ "vitepress": "^0.22.4"
+ }
+}
\ No newline at end of file